Ë
    3êñi,Å ã                  ó6  — U d dl m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m	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dl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c m Z  d dl!m"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. d dl/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ d dl[m\Z\m]Z]m^Z^m_Z_ d dl`maZa d dlbmcZcmdZdmeZemfZfmgZgmhZhmiZi d dljmkZkmlZl erd dlmmnZnmoZo  ed«      Zp G d„ del«      Zq e	dddg«      Zri asdetd<   i audetd<   	 	 	 	 	 	 	 	 d^d„Zv	 	 	 d_	 	 	 	 	 	 	 	 	 	 	 d`d!„Zwdadbd"„Zxejò                  dcd#„«       Zz	 ddd dd$œ	 	 	 	 	 	 	 	 	 	 	 ded%„Z{dfd&„Z|dgd'„Z}dhd(„Z~	 	 	 	 	 	 did)„Z	 	 	 	 	 	 djd*„Z€dkd+„Z�	 	 	 	 	 	 dld,„Z‚	 	 	 	 	 	 	 	 dmd-„Zƒ	 	 	 	 	 	 	 	 dnd.„Z„	 	 	 	 	 	 	 	 dnd/„Z… ed0¬1«       G d2„ d3«      «       Z† ed0¬1«       G d4„ d5«      «       Z‡ ed0¬1«       G d6„ d7«      «       Zˆ ed0¬1«       G d8„ d9«      «       Z‰ ed0¬1«       G d:„ d;«      «       ZŠe2dod<„«       Z‹dpd=„ZŒdqd>„Z� ed0¬1«       G d?„ d@«      «       ZŽdrdA„Z�dsdB„Z�dtdC„Z‘dudD„Z’	 	 	 	 dvdE„Z“	 	 	 	 	 	 	 	 	 	 	 	 dwdF„Z”	 	 	 	 	 	 	 	 	 	 	 	 dxdG„Z•e2dydH„«       Z–dzdI„Z—e3	 	 	 	 	 	 d{dJ„«       Z˜	 	 	 	 	 	 d|dK„Z™	 	 	 	 d}dL„Zš	 	 	 	 d~dM„Z›e"�j8                  dNœ	 	 	 	 	 	 	 ddO„Z�	 	 	 	 d€dP„Zže"�j8                  dNœ	 	 	 	 	 	 	 d�dQ„ZŸ	 	 	 	 	 	 d‚dR„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dƒdS„Z¡	 	 	 	 	 	 	 	 	 	 	 	 	 	 d„dT„Z¢	 	 	 	 	 	 d…dU„Z£	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d†dV„Z¤	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‡dW„Z¥	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆdX„Z¦	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‰dY„Z§	 	 	 	 	 	 dŠdZ„Z¨d‹d[„Z©dŒd\„Zªe«d]k(  r eª«        yy)�é    )ÚannotationsN)ÚdefaultdictÚ
namedtupleÚOrderedDict)Ú	dataclassÚfield)ÚPath)ÚAnyÚLiteralÚTYPE_CHECKINGÚTypeVar)Úassert_never)Úcpp)Ú	translate)ÚBindingÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚ
NamedCTypeÚNativeSignatureÚSpecialArgName)Úmethod_with_native_functionÚnative_function_managerÚwith_native_functionÚ with_native_function_and_indices)Úgen_aoti_c_shim_filesÚ*gen_static_dispatch_backend_call_signature)Ú gen_functionalization_definitionÚ"gen_functionalization_registrationÚ.gen_functionalization_view_inverse_declarationÚ,gen_functionalization_view_meta_classes_declÚ,gen_functionalization_view_meta_classes_implÚGenCompositeViewCopyKernel©Úgen_all_vmap_plumbing)ÚArgumentÚBackendIndexÚBackendMetadataÚBaseOperatorNameÚDEFAULT_KERNEL_NAMESPACEÚdispatch_device_mapÚDispatchKeyÚFRAGMENT_NAMESPACESÚFunctionSchemaÚis_cuda_dispatch_keyÚis_generic_dispatch_keyÚis_ufunc_dispatch_keyÚis_xpu_dispatch_keyÚLocationÚNativeFunctionÚNativeFunctionsGroupÚNativeFunctionsViewGroupÚOperatorNameÚOptionalTypeÚ
SchemaKindÚSelfArgumentÚSTRUCTURED_DISPATCH_KEYSÚTensorOptionsArgumentsÚTypeÚVariantÚViewSchemaKind)Úadd_generated_native_functionsÚgen_composite_functional_kernelÚgen_composite_out_kernelÚpre_group_native_functions)ÚSelectiveBuilder)Ú	concatMapÚcontextÚFileManagerÚmake_file_managerÚmapMaybeÚNamespaceHelperÚTarget)Ú
YamlDumperÚ
YamlLoader)ÚCallableÚSequenceÚTc                  ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú
LineLoaderc                ób   •— t         ‰| �  ||¬«      }|j                  j                  dz   |d<   |S )N)Údeepé   Ú__line__)ÚsuperÚconstruct_mappingÚ
start_markÚline)ÚselfÚnoderT   ÚmappingÚ	__class__s       €úN/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torchgen/gen.pyrX   zLineLoader.construct_mappingˆ   s5   ø€ Ü‘'Ñ+¨D°tÐ+Ó<ˆà"Ÿo™o×2Ñ2°QÑ6ˆ�
ÑØˆó    )F)Ú__name__Ú
__module__Ú__qualname__rX   Ú__classcell__)r^   s   @r_   rR   rR   ‡   s   ø„ ÷ñ r`   rR   Ú
ParsedYamlÚnative_functionsÚbackend_indiceszdict[str, ParsedYaml]Ú_GLOBAL_PARSE_NATIVE_YAML_CACHEzdict[str, set[str]]Ú_GLOBAL_PARSE_TAGS_YAML_CACHEc                óv   ‡ — |j                  t        ˆ fd„t        j                  «       D «       d«      |«      }|S )Nc              3  ó8   •K  — | ]  \  }} |‰«      r|–— Œ y ­w©N© )Ú.0ÚcheckÚdeviceÚdispatch_keys      €r_   ú	<genexpr>z1file_manager_from_dispatch_key.<locals>.<genexpr>ž   s%   øè ø€ ò á!�E˜6Ù˜Ô&ô ñùs   ƒÚ )ÚgetÚnextr+   Úitems)rq   Ú
device_fmsÚ
default_fmÚfms   `   r_   Úfile_manager_from_dispatch_keyrz   —   sB   ø€ ð
 
�‰Üóä%8×%>Ñ%>Ó%@ôð
 ó	
ð 	ó

€Bð €Ir`   Fc           	     ó,  ‡‡— t        | t        «      st        dt        | «      › �«      ‚g }t	        t
        «      }| D ]×  }t        |t
        «      st        d|› �«      ‚t        |j                  d«      t        «      st        d|› �«      ‚t        ||d   «      Š|j                  d«      Š‰€t        d|› �«      ‚t        ˆˆfd„«      5  t        j                  |‰||«      \  }}	|j                  |«       t        j                  ||	«       d d d «       ŒÙ t        |«       t	        d„ «      }
|st!        ||«       |j#                  «       D ].  \  }}t        |d	d
t%        |«      xs t'        |«      |¬«      |
|<   Œ0 t)        ||
«      S # 1 sw Y   �ŒVxY w)Nú$Expected 'es' to be a list, but got zExpected to be dict: rV   úExpected '__line__' to be int: ÚfunczMissed 'func' in c                 ó   •— d‰› d‰ › �S ©Nzin z:
  rm   )ÚfuncsÚlocs   €€r_   ú<lambda>z*parse_native_yaml_struct.<locals>.<lambda>¾   s   ø€ ˜s 3 % u¨U¨GÐ4€ r`   c                 ó>   — t        t        j                  dddi ¬«      S )NTF©rq   Úuse_out_as_primaryÚexternalÚdevice_guardÚindex)r'   r,   Ú	Undefinedrm   r`   r_   rƒ   z*parse_native_yaml_struct.<locals>.<lambda>Å   s"   € ”Ü$×.Ñ.Ø#ØØð ô
€ r`   TFr…   )Ú
isinstanceÚlistÚAssertionErrorÚtyper   Údictrt   Úintr3   rF   r4   Ú	from_yamlÚappendr'   Ú
grow_indexÚerror_check_native_functionsr@   rv   r/   r2   re   )ÚesÚ
valid_tagsÚignore_keysÚpathÚskip_native_fns_genÚrsÚbsÚer~   ÚmÚindicesÚkÚvr�   r‚   s                @@r_   Úparse_native_yaml_structr¡   ª   s‘  ù€ ô �bœ$ÔÜÐCÄDÈÃHÀ:ÐNÓOÐOØ!€BÜALÌTÓAR€BØò +ˆÜ˜!œTÔ"Ü Ð#8¸¸Ð!<Ó=Ð=Ü˜!Ÿ%™% 
Ó+¬SÔ1Ü Ð#BÀ1À#Ð!FÓGÐGÜ�t˜Q˜z™]Ó+ˆØ—‘�f“ˆØˆ=Ü Ð#4°Q°CÐ!8Ó9Ð9ÜÔ4Ó5ñ 	+Ü$×.Ñ.¨q°#°zÀ;ÓO‰GˆD�!Ø�I‰I�dŒOÜ×#Ñ# B¨Ô*÷	+ð 	+ð+ô ! Ô$ä/:ñ	
ó
0€Gñ Ü& r¨2Ô.Ø—‘“
ò 	
‰ˆˆ1ä!ØØ#Øä-¨aÓ0ÒJÔ4GÈÓ4JØô
ˆ�Š
ð	
ô �b˜'Ó"Ð"÷;	+ñ 	+ús   Ã
AF	Æ	F	c                ó  ‡‡— t        | t        «      st        dt        | «      › �«      ‚t	        «       }| D ]¿  }t        |j                  d«      t        «      st        d|› �«      ‚t        ||d   «      Š|j                  d«      Št        ˆˆfd„«      5  |j                  «       }|j                  d«      }|j                  dd«      }|dk(  rt        d|› d	�«      ‚|j                  |«       d d d «       ŒÁ |S # 1 sw Y   ŒÍxY w)
Nr|   rV   r}   Útagc                 ó   •— d‰ › d‰› �S r€   rm   )r‚   Útagss   €€r_   rƒ   z(parse_tags_yaml_struct.<locals>.<lambda>ç   s   ø€ ˜s 3 % u¨T¨FÐ3€ r`   Údescrs   zTag 'z#' must have a non-empty description)r‹   rŒ   r�   rŽ   Úsetrt   r�   r3   rF   ÚcopyÚpopÚadd)	r•   r˜   rš   rœ   Úe_iÚnamer¦   r‚   r¥   s	          @@r_   Úparse_tags_yaml_structr­   Þ   sö   ù€ Ü�bœ$ÔÜÐCÄDÈÃHÀ:ÐNÓOÐOÜ“5€BØò ˆÜ˜!Ÿ%™% 
Ó+¬SÔ1Ü Ð#BÀ1À#Ð!FÓGÐGÜ�t˜Q˜z™]Ó+ˆØ�u‰u�U‹|ˆÜÔ3Ó4ñ 	Ø—&‘&“(ˆCØ—7‘7˜5“>ˆDØ—7‘7˜6 2Ó&ˆDà�rŠzÜ$ u¨T¨FÐ2UÐ%VÓWÐWØ�F‰F�4ŒL÷	ð 	ðð €I÷	ð 	ús   ÂAC:Ã:D	c                óä   — | t         vrLt        | «      5 }t        j                  |t        ¬«      }t        || ¬«      t         | <   d d d «       t         |    S t         |    S # 1 sw Y   t         |    S xY w)N©ÚLoader)r˜   )ri   ÚopenÚyamlÚloadrR   r­   )r˜   Úfr•   s      r_   Úparse_tags_yamlrµ   ò   sq   € ð Ô0Ñ0Ü�$‹Zð 	X˜1Ü—‘˜1¤ZÔ0ˆBÜ2HÈÐRVÔ2WÔ)¨$Ñ/÷	Xô )¨Ñ.Ð.Ô(¨Ñ.Ð.÷		Xô )¨Ñ.Ð.ús   ”0AÁA/)r™   Úloaded_yamlc               óè   — | t         vrVt        |«      }|€0t        | «      5 }t        j                  |t
        ¬«      }d d d «       n|}t        ||| |¬«      t         | <   t         |    S # 1 sw Y   Œ)xY w)Nr¯   )r˜   r™   )rh   rµ   r±   r²   r³   rR   r¡   )r˜   Útags_yaml_pathr—   r™   r¶   r–   r´   r•   s           r_   Úparse_native_yamlr¹   ý   s…   € ð Ô2Ñ2Ü$ ^Ó4ˆ
ð ÐÜ�d“ð 5˜qÜ—Y‘Y˜q¬Ô4�÷5ð 5ð ˆBä0HØØØØØ 3ô1
Ô'¨Ñ-ô +¨4Ñ0Ð0÷5ð 5ús   ¡A(Á(A1c           	     óè  — i }t        t        «      }| D ]M  }|||j                  j                  <   ||j                  j                  j                     j	                  |«       ŒO | D �]‰  }|j
                  �¡|j                  |j
                  «      }|€<t        |j                  j                  › d|j
                  › d|j
                  › d�«      ‚|j                  s<t        |j                  j                  › d|j
                  › d|j
                  › d�«      ‚t        t        j                  «      }h d£}|j                  j                  j                  D ]n  }|j                  |v sŒt        |j                  j                  «      |j                  f|vsŒ@t        d|j                  › d|j                  j                  › d�«      ‚ d	|j                  v s�Œot        |j                  j                  «      d
k7  s�Œ“t        |j                  j                  «      dk7  s�Œ·t        |j                  j                  j                  «      dk7  s�Œå|j                  j                  j                  }|j                   s"t        |j                  j                  › d�«      ‚t#        |j$                  d|j&                  «      }	t)        ||	   «      dk(  s�Œgt        |j                  j                  › d|› d�«      ‚ y )Nz0 is marked as a structured_delegate pointing to z, but z is missing.zY is not marked as structured. Consider adding 'structured=True' to the delegated operator>   ©zrandom_.fromÚfrom©Úuniform_r¼   ©Ú!_has_compatible_shallow_copy_typer¼   zArgument name 'z' in function 'z' is a reserved Python keyword.Úinplace_viewÚresize_Ú
resize_as_Úset_z¡ is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore.Fr   zw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z.' and matching schema, but it didn't find one.)r   rŒ   r~   r¬   r’   Ústructured_delegatert   r�   Ú
structuredr§   ÚkeywordÚkwlistÚ	argumentsÚflat_allÚstrr¥   Úinplacer)   ÚbaseÚdunder_methodÚlen)
r�   Úfunc_mapÚbase_func_mapr´   Údelegate_funcÚPYTHON_RESERVED_KEYWORDSÚEXCLUSION_LISTÚargÚ	base_nameÚout_of_place_base_names
             r_   r”   r”     sœ  € Ø35€HÜBMÌdÓBS€MØò 2ˆØ !ˆ�—‘—‘ÑØ�a—f‘f—k‘k×&Ñ&Ñ'×.Ñ.¨qÕ1ð2ð ó 7ˆØ× Ñ Ð,Ø$ŸL™L¨×)>Ñ)>Ó?ˆMØÐ$Ü$Ø—v‘v—{‘{�mÐ#SØ×,Ñ,Ð-¨V°A×4IÑ4IÐ3JÈ,ðXóð ð !×+Ò+Ü$Ø—v‘v—{‘{�mÐ#SØ×,Ñ,Ð-¨V°A×4IÑ4IÐ3Jð KRðSóð ô $'¤w§~¡~Ó#6Ð ò
ˆð —6‘6×#Ñ#×,Ñ,ò 	ˆCØ�x‰xÐ3Ò3Ü˜Ÿ™Ÿ™Ó$ c§h¡hÐ/°~ÒEÜ(Ø)¨#¯(©(¨°?À1Ç6Á6Ç;Á;À-ÐOnÐoóð ð	ð ˜aŸf™fÓ$Ü�A—F‘F—K‘KÓ  IÔ-Ü�A—F‘F—K‘KÓ  LÔ0Ü�A—F‘F—K‘K×$Ñ$Ó%¨Ô/àŸ™Ÿ™×(Ñ(ˆIØ×$Ò$Ü$Ø—v‘v—{‘{�mð $tð tóð ô &6Ø—‘  y×'>Ñ'>ó&Ð"ô �=Ð!7Ñ8Ó9¸QÔ>Ü$Ø—v‘v—{‘{�mð $;Ø;D¸+ÐEsðuóð ñi7r`   c                ó.  — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } d| › d�S )z1Convert a python string into a c++ string literalú\z\\ú"z\"úz\aúz\búz\fú
z\núz\vú	z\t)Úreplace©Úss    r_   Ú
cpp_stringrä   ]  s�   € à	�	‰	�$˜Ó€AØ	�	‰	�#�uÓ€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØˆqˆc�ˆ8€Or`   c                óÞ   — t        | «      dk(  rg S | D �cg c]  }|j                  ‘Œ c}t        j                  t        j                  t        j
                  t        j                  gz   S c c}w )Nr   )rÏ   rq   r,   ÚCompositeImplicitAutogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctional)ÚbackendsÚbackends     r_   Ústatic_dispatch_keysrì   w  s^   € Ü
ˆ8ƒ}˜ÒØˆ	à4<Ö=¨�×$Ó$Ò=Ü×1Ñ1Ü×=Ñ=Ü×1Ñ1Ü×>Ñ>ð	A
ñ 
ð 	
ùÒ=s   •A*c                ó6  — | j                   €|j                  | «      r|j                  S | j                  rt        j
                  S | j                  rt        j                  S | j                  rt        j                  S | j                  rt        j                  S y rl   )rÅ   Ú
has_kernelrq   Ú&has_composite_explicit_autograd_kernelr,   rè   Ú5has_composite_explicit_autograd_non_functional_kernelré   Ú&has_composite_implicit_autograd_kernelræ   Ú4has_composite_implicit_autograd_nested_tensor_kernelrç   )r´   Úbackend_indexs     r_   Úget_static_dispatch_backendrô   ƒ  s‚   € ð 	×ÑÐ(¨M×,DÑ,DÀQÔ,Gð
 ×)Ñ)Ð)Ø	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	@Ò	@Ü×AÑAÐAØ	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	?Ò	?Ü×@Ñ@Ð@Ør`   c                óÒ   — |�| j                   ry g }|D ]A  }t        | |«      }|€Œ|j                  d| j                  › d|j	                  «       › d�«       ŒC dj                  |«      S )Nú#include <ATen/ops/Ú_ú_dispatch.h>rÞ   )Úmanual_kernel_registrationrô   r’   Ú	root_nameÚlowerÚjoin)r´   ró   Úoutputr‰   rq   s        r_   Ústatic_dispatch_ops_headerrþ   —  sx   € ð Ð × <Ò <Øà€FØò ˆÜ2°1°eÓ<ˆØÑ#Ø�M‰MØ% a§k¡k ]°!°L×4FÑ4FÓ4HÐ3IÈÐVõðð �9‰9�VÓÐr`   c                óF   — t        | «      D �cg c]  }d|› d�‘Œ
 c}S c c}w )Nú#include <ATen/úFunctions.h>)rì   )rê   rq   s     r_   Ústatic_dispatch_extra_headersr  §  s2   € ô 1°Ó:öàð ˜,˜ |Ò4òð ùò s   Žc                ó&  — dd„}t        | j                  «       «      }t        |j                  «       «      }|D ]3  }|j                  j                  t        j
                  k(  sŒ+ ||«      } n t        ||«      }dj                  d„ |D «       «      S )Nc                ó.  — g }| D ]�  }|j                   dk(  rkt        t        t        j                  |j
                  j                  «      |j                   |j                  |j                  ¬«      }|j                  |«       Œ}|j                  |«       Œ� |S )NÚmemory_format)Únctyper¬   ÚdefaultÚargument)
r¬   r   r   r   Ú possibly_redundant_memory_formatr  rŽ   r  r  r’   )Úinput_bindingsÚoutput_bindingsÚbindingÚspl_mem_format_bindings       r_   Úadd_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding¶  s‹   € Ø)+ˆØ%ò 	0ˆGØ�|‰|˜Ò.Ü)0Ü%Ü&×GÑGØŸ™×+Ñ+óð !Ÿ™Ø#ŸO™OØ$×-Ñ-ô*Ð&ð  ×&Ñ&Ð'=Õ>à×&Ñ& wÕ/ð	0ð Ðr`   ú, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrl   ©Úexpr©rn   Úas     r_   rr   z!translate_args.<locals>.<genexpr>Ñ  s   è ø€ Ò+ �Q—V•VÑ+ùó   ‚)r
  úlist[Binding]Úreturnr  )rŒ   rÉ   r  r¬   r   r	  r   rü   )ÚsigÚcpp_sigr  Úsrc_bindingsÚgoal_bindingsrÕ   Úexprss          r_   Útranslate_argsr  ±  sƒ   € ó
ô$ ˜Ÿ™›Ó(€LÜ˜×*Ñ*Ó,Ó-€Mð ò ˆØ�:‰:�?‰?œn×MÑMÓMÙ8¸ÓFˆLÙðô �l MÓ2€EØ�9‰9Ñ+ UÔ+Ó+Ð+r`   c           	     ó&  — t        | |«      }|j                  «       }t        | |«      }|j                  |«      }|r|j                  r|j                  nt
        }|j                  dd«      }d|› d|j                  j                  «       › d|› d|› d�	S )Nú::nativers   úreturn ú::ú(ú);)	r   r¬   r  Ú
get_kernelÚcpp_namespacer*   rá   rq   rû   )	r  r´   ró   r  r¬   r  Úbackend_metadataÚ	kernel_nsÚnss	            r_   Ú%generate_static_dispatch_backend_callr)  Ô  sž   € ô
 9¸¸aÓ@€GØ�<‰<‹>€DÜ˜3 Ó(€EØ$×/Ñ/°Ó2Ðñ Ð 0× >Ò >ð 	×&Ò&ä%ð ð
 
×	Ñ	˜: rÓ	*€BØ�R�D˜˜=×5Ñ5×;Ñ;Ó=Ð>¸bÀÀÀaÈÀwÈbÐQÐQr`   c                ób  — t        j                  |dd¬«      }| j                  r'|j                  j	                  «       r|j
                  }n|j                  }|€t        d«      ‚|j                  «       }t        | |«      }t        j                  dd«      }|j                  r+d|› dt        j                  j                  «       › d|› d|› d	�	S |j                   r+d|› dt        j"                  j                  «       › d|› d|› d	�	S |j$                  r+d|› dt        j&                  j                  «       › d|› d|› d	�	S |j(                  r+d|› dt        j*                  j                  «       › d|› d|› d	�	S d
|› ddj-                  |D �cg c]  }t/        |j0                  «      ‘Œ c}«      › d�S c c}w )NF©ÚmethodÚfallback_bindingzExpected cpp_sig to be non-Noner  rs   r   r!  r"  r#  z5TORCH_CHECK(false, "Static dispatch does not support z forr  z ");)r   Úfrom_native_functionÚsymintr~   Ú
has_symintÚsymint_signatureÚ	signaturer�   r¬   r  r*   rá   rï   r,   rè   rû   rð   ré   rñ   ræ   rò   rç   rü   rË   rq   )	r  r´   rg   Úcpp_sigsr  r¬   r  r(  r‰   s	            r_   Ú&generate_static_dispatch_fallback_callr4  æ  sÆ  € ô
 !×5Ñ5Ø	�%¨%ô€Hð ‡z‚z�a—f‘f×'Ñ'Ô)Ø×+Ñ+‰à×$Ñ$ˆØ€ÜÐ>Ó?Ð?Ø�<‰<‹>€DÜ˜3 Ó(€EÜ	!×	)Ñ	)¨*°bÓ	9€BØ×/Ò/Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	@Ò	@Ø˜˜˜Bœ{×QÑQ×WÑWÓYÐZÐZ\Ð]aÐ\bÐbcÐdiÐcjÐjlÐmÐmØ	
×	1Ò	1Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	?Ò	?Ø˜˜˜Bœ{×PÑP×VÑVÓXÐYÐY[Ð\`Ð[aÐabÐchÐbiÐikÐlÐlàHÈÈð OØ‡�°ÖA¨ŒC�×"Ñ"Õ#ÒAÓBÐ CÀ4ðKð 	KùÚAs   ÆF,c           	     óh  — t        |«      dk(  s|j                  ry|D �cg c]3  }|j                  |«      s|j                  �|j                  t
        v r|‘Œ5 }}t        |«      dk(  rt        | ||d   «      S t        |«      dk(  rt        | ||«      S | j                  «       D �cg c]f  }t        |j                  t        «      s>t        |j                  t        «      r0|j                  j                  j                  «       r|j                  ‘Œh }}dj!                  |«      }|j"                  j                  j$                  }g }	g }
|�|
j'                  d«       |dk7  r|
j'                  d|› d�«       |	j'                  dd	j!                  |
«      › d
�«       |	j'                  d«       g }|D ]A  }|j'                  d|j                  › d�«       |j'                  dt        | ||«      › d
�«       ŒC t        | ||«      }d}d|j!                  |	«      › d|j!                  |«      › d|› d�S c c}w c c}w )a  
    For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one
    backends exist, fallback to static dispatch by determining dispatch key from inputs.
    Arguments:
        sig: A CppSignature or DispatcherSignature for this native function we want to use.
        f: NativeFunction to generate static dispatch.
        backend_indices: All available backends.
    Return:
        C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);"
    r   rs   rU   r  z>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set(ú)zDispatchKeySet _dk_set = z | ú;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey::ú:rà   z
		ú
    z
    switch (_dk) {
        z
        default:
            z
    }
    )rÏ   rù   rî   rÅ   rq   r;   r)  r4  rÉ   r‹   r  r:   r&   rŽ   Úis_tensor_liker¬   rü   r~   Útensor_optionsr’   )r  r´   rg   ÚbÚkeysr  Únative_tensor_argsÚtensor_argsÚtensor_optsÚstmtsÚsubexprsÚdispatch_coder‰   ÚfallbackÚ	connectors                  r_   Ústatic_dispatchrF    s>  € ô ˆ?Ó˜qÒ  A×$@Ò$@Øð !öàØ�<‰<˜Œ?à×!Ñ!Ð-Ø—‘Ô":Ñ:ò 	
ð€Dð ô ˆ4ƒy�A‚~Ü4°S¸!¸TÀ!¹WÓEÐEÜ	ˆT‹�aŠÜ5°c¸1¸oÓNÐNð —‘“öàÜ�a—j‘j¤,Ô/Ü�a—j‘j¤(Ô+Ø�J‰J�O‰O×*Ñ*Ô,ð	 	
�‹ðÐð ð —)‘)Ð.Ó/€KØ—&‘&×"Ñ"×1Ñ1€Kà€EØ€HØÐØ�‰ØLô	
ð �bÒØ�‰Ð>¸{¸mÈ1ÐMÔNØ	‡L�LÐ.¨u¯z©z¸(Ó/CÐ.DÀAÐHÔIØ	‡L�LÐPÔQà€MØò 
ˆØ×ÑÐ!3°E×4FÑ4FÐ3GÀqÐKÔLØ×ÑØÔ8¸¸aÀÓGÐHÈÐLõ	
ð
ô 6°c¸1¸oÓN€HØ€IðØ‡^�^�EÓÐð 	à	�‰˜Ó	&Ð'ð (àˆJð ðð ùò[ùòs    8H*Â%A+H/T)Úfrozenc                  óF   — e Zd ZU ded<    ee¬«      Zded<   edd„«       Zy)	ÚRegisterSchemarD   Úselector)Údefault_factoryzdict[str, int]Ú
known_tagsc                óÌ  — | j                   j                  |«      sy ddj                  d„ t        |j                  «      D «       «      z   dz   }|dk(  r"dt        t        |j                  «      «      › d�S d}|| j                  vr-t        | j                  «      }|| j                  |<   d	|› d
|› d�}|› dt        t        |j                  «      «      › d| j                  |   › d�S )Nú{r  c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z	at::Tag::Nrm   )rn   r£   s     r_   rr   z*RegisterSchema.__call__.<locals>.<genexpr>Y  s   è ø€ ÒK°S ¨3¨%Ô0ÑKùs   ‚ú}z{}zm.def(z, {});
rs   z const std::vector<at::Tag> tags_z = ú;
z, tags_z);
)
rJ  Úis_native_function_selectedrü   Úsortedr¥   rä   rË   r~   rL  rÏ   )r[   r´   r¥   Ú
maybe_tagsÚidxs        r_   Ú__call__zRegisterSchema.__call__U  sÕ   € à�}‰}×8Ñ8¸Ô;ØØ�T—Y‘YÑK¼FÀ1Ç6Á6»NÔKÓKÑKÈcÑQˆØ�4Š<ØœJ¤s¨1¯6©6£{Ó3Ð4°JÐ?Ð?Øˆ
Ø�t—‘Ñ&Ü�d—o‘oÓ&ˆCØ$'ˆD�O‰O˜DÑ!Ø;¸C¸5ÀÀDÀ6ÈÐMˆJØ�˜V¤J¬s°1·6±6«{Ó$;Ð#<¸GÀDÇOÁOÐTXÑDYÐCZÐZ^Ð_Ð_r`   N©r´   r4   r  ú
str | None)	ra   rb   rc   Ú__annotations__r   r�   rL  r   rV  rm   r`   r_   rI  rI  P  s+   … àÓÙ!&°tÔ!<€J�Ó<à ò`ó !ñ`r`   rI  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeOperatorsú.Literal[Target.DECLARATION, Target.DEFINITION]Útargetúlist[BackendIndex]Ústatic_dispatch_backend_indicesc                óž  — t        j                  |j                  «      }|j                  j                  j	                  «       }| j
                  t        j                  u r d|› d|j                  «       › d|j                  j                  j                  › d|j                  j                  j                  › dt        t        |j                  «      «      › d|j                  dd¬	«      › d|j                  d
d¬	«      › d�S | j
                  t        j                  u �rd|j                  › d|› d|› d|› d|› d|› d�}dD ]ì  }|r>dj                  dg|j                  «       D �cg c]  }|j                  ‘Œ c}z   «      }d
}n9dj                  |j                  «       D �cg c]  }|j                  ‘Œ c}«      }d}|}	|› d|› �}
d|› d|	› d|› d�}|s0t!        | j"                  «      dkD  rt%        ||| j"                  ¬«      }|d|j                  › d|j                  |
|¬	«      › d|› d �z  }Œî |S t'        | j
                  «       y c c}w c c}w )!Nz
struct TORCH_API z {
  using schema = z�;
  using ptr_schema = schema*;
  // See Note [static constexpr char* members for windows NVCC]
  static constexpr const char* name = "aten::z3";
  static constexpr const char* overload_name = "z/";
  static constexpr const char* schema_str = z;
  static ÚcallF)r¬   Úis_redispatching_fnÚ
redispatchTz;
};ú

// aten::z.
static C10_NOINLINE c10::TypedOperatorHandle<z::schema> create_zQ_typed_handle() {
  return c10::Dispatcher::singleton()
      .findSchemaOrThrow(z::name, z::overload_name)
      .typed<z::schema>();
}
)FTr  ÚdispatchKeySetr!  z
    static auto op = create_z_typed_handle();
    return op.r"  r#  r   )rg   rÞ   ú {
    z
}
)r   Úfrom_schemar~   r¬   Úunambiguous_namer]  rK   ÚDECLARATIONrŽ   Úoverload_namerä   rË   ÚdefnÚ
DEFINITIONrü   rÉ   rÏ   r_  rF  r   )r[   r´   r  r¬   Údefnsrb  r  Údispatcher_exprs_strÚmethod_baseÚdispatcher_callÚmethod_nameÚfn_bodys               r_   rV  zComputeOperators.__call__n  sˆ  € ä!×-Ñ-¨a¯f©fÓ5ˆØ�v‰v�{‰{×+Ñ+Ó-ˆà�;‰;œ&×,Ñ,Ñ,ð0Ø�ð Ø—(‘(“*�ð .ð /0¯f©f¯k©k×.>Ñ.>Ð-?ð @1Ø12·±·±×1JÑ1JÐ0Kð L-Ü-7¼¸A¿F¹F»Ó-DÐ,Eð F
Ø
�(‰(˜°Eˆ(Ó
:Ð	;ð <
Ø
�(‰(˜¸$ˆ(Ó
?Ð	@ð Að
ð 
ð �[‰[œF×-Ñ-Ò-ð
Ø
�&‰&ˆð .Ø.2¨VÐ3DÀTÀFð Kà˜˜x¨ vð .ØˆVð ðˆEð (5ò Ð#Ù&Ø+/¯9©9Ø)Ð*¸c¿m¹m»oÖ-N¸¨a¯f«fÒ-NÑNó,Ð(ð #/‘Kà+/¯9©9ÀcÇmÁmÃoÖ5VÀ°a·f³fÒ5VÓ+WÐ(Ø"(�Kà"-�Ø!%  b¨¨Ð6�ðØ!˜Fð #ØÐ˜qÐ!5Ð 6°bð<�ñ
 ,Ü˜D×@Ñ@ÓAÀAÒEô .Ø˜Q°×0TÑ0Tô�Gð ð 
Ø
�&‰&ˆð Ø‡�ˆ{Ð0C€ÓDÐ Eð FØ€Ið ðñ ‘ð3ð> ˆLä˜Ÿ™Õ%ùò= .Oùò 6Ws   Å"IÆI

N©r´   r4   r  rË   ©ra   rb   rc   rY  r   rV  rm   r`   r_   r[  r[  i  s"   … à:Ó:Ø%7Ó7à òR&ó !ñR&r`   r[  c                  ó   — e Zd Zedd„«       Zy)ÚComputeFunctionc                ó  — t        j                  |d|j                  ¬«      }|j                  j	                  «       }d}|j                  «       D �]3  }t        j                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  |D �cg c]  }|j                  ‘Œ c}«      }	|j                  rd}
nd}
t        j                  |j                  v rL|d|j                  › d|j!                  «       › d	|j                  j"                  j%                  «       › d
|	› d�	z  }|sŒð|d|
› d|j!                  d¬«      › d	|j                  j"                  j%                  «       › d
|	› d�	z  }�Œ6 |S c c}w )NFr+  rs   r  zc10::SymIntÚint64_trd  ú
inline ú {
    return at::_ops::ú::call(z);
}zZ
namespace symint {
  template <typename T, typename = std::enable_if_t<std::is_same_v<T, z>>>
  T)Úsuppress_symint_suffixz	);
  }
}
)r   r.  Úmanual_cpp_bindingr~   r0  Ú
signaturesr   rg  r   rÉ   rü   r  r/  r>   ÚfunctionÚvariantsÚdeclr¬   rh  )r[   r´   Ú	sig_groupr0  Úresultr  Ú
target_sigr  rœ   Ú	exprs_strÚ	intlike_ts              r_   rV  zComputeFunction.__call__È  s  € ä%×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð —V‘V×&Ñ&Ó(ˆ
àˆØ×'Ñ'Ó)ó  	ˆCä,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIà�zŠzØ)‘	à%�	ä×Ñ 1§:¡:Ñ-Øð 
Ø
�&‰&ˆð Ø�‰‹
€|ð Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ �ò Øð GàGPÀkð RØ‡8�8 4€8Ó(Ð)ð *Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hð	ñ ’ð3 	ðB ˆùò; #:s   Â)F
NrW  ©ra   rb   rc   r   rV  rm   r`   r_   rv  rv  Æ  s   „ à ò(ó !ñ(r`   rv  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeTensorMethodr\  r]  r^  r_  c                ó  — t         j                  |j                  vry |j                  j	                  «       rt        d|j                  › �«      ‚|j                  j                  j                  €t        d|j                  › �«      ‚t        j                  |d|j                  ¬«      }| j                  t        j                  u r/d}|j                  «       D ]  }||j                  «       › d�z  }Œ |S | j                  t        j                   urt#        | j                  «       d}|j                  «       D ]Â  }t%        j&                  |j                  «      }t)        |j                  «       |j                  «       d¬«      }dj+                  |D �cg c]  }|j,                  ‘Œ c}«      }|d	|j                  › d
|j/                  d¬«      › d|j                  j0                  j3                  «       › d|› d�	z  }ŒÄ |S c c}w )Nz*Method variant cannot be an out function: z#Method variant must have self_arg: Tr+  rs   z const;
)r,  r  rd  ry  zTensor::)Úprefixz const {
    return at::_ops::r{  ú);
}
)r>   r,  r€  r~   Ú	is_out_fnr�   rÉ   Úself_argr   r.  r}  r]  rK   ri  r~  r�  rl  r   r   rg  r   rü   r  rk  r¬   rh  )	r[   r´   r‚  rƒ  r  r„  r  rœ   r…  s	            r_   rV  zComputeTensorMethod.__call__û  sÃ  € ä�>‰> §¡Ñ+Øà�6‰6×ÑÔÜ Ð#MÈaÏfÉfÈXÐ!VÓWÐWØ�6‰6×Ñ×$Ñ$Ð,Ü Ð#FÀqÇvÁvÀhÐ!OÓPÐPä%×:Ñ:Ø�d¨Q×-AÑ-Aô
ˆ	ð �;‰;œ&×,Ñ,Ñ,ØˆFØ ×+Ñ+Ó-ò 3�Ø˜SŸX™X›Z˜L¨	Ð2Ñ2‘ð3àˆMà�;‰;œf×/Ñ/Ñ/Ü˜Ÿ™Ô%àˆà×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÈdÔSˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIàð 
Ø
�&‰&ˆð Ø�‰˜
ˆÓ#Ð$ð %Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ ‰Fð
	ð ˆùò #:s   ÆG?
NrW  rt  rm   r`   r_   r‰  r‰  ö  s    … à:Ó:Ø%7Ó7à ò$ó !ñ$r`   r‰  c                  ó   — e Zd Zedd„«       Zy)ÚComputeRedispatchFunctionc                ó  — t        j                  |d|j                  ¬«      }d}|j                  «       D ]Ä  }t	        j
                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  dg|D �cg c]  }|j                  ‘Œ c}z   «      }|d|j                  › d|j                  d¬	«      › d
|j                  j                  j                  «       › d|› d�	z  }ŒÆ |S c c}w )NFr+  rs   r  re  rd  ry  T)rb  rz  z::redispatch(rŒ  )r   r.  r}  r~  r   rg  r~   r   rÉ   rü   r  r�  r¬   rh  )	r[   r´   r‚  rƒ  r  r„  r  r  r…  s	            r_   rV  z"ComputeRedispatchFunction.__call__(  sý   € ô &×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð ˆØ×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	Ð#3Ð"4ÈÖ7NÀ1¸¿»Ò7NÑ"NÓOˆIàð 
Ø
�&‰&ˆð Ø�‰ TˆÓ*Ð+ð ,Ø—f‘f—k‘k×2Ñ2Ó4Ð5°]À9À+ð Nðñ ‰Fð
	ð ˆùò 8Os   ÂC>NrW  r‡  rm   r`   r_   r�  r�  &  s   „ à òó !ñr`   r�  c                óŒ   — d| j                   j                  j                  › d| j                   j                  j                  › d�S )Nz{"aten::z", "z"},)r~   r¬   rj  ©r´   s    r_   Úcompute_aten_opr”  E  s5   € à�q—v‘v—{‘{×'Ñ'Ð(¨¨Q¯V©V¯[©[×-FÑ-FÐ,GÀtÐLÐLr`   c                ób  — | j                   sy t        | j                  «      5  t        j                  | «      }t        j
                  | «      }dj                  d„ |D «       «      }| j                  j                  }|€d}d}| j                   r| j                  j                  nd }|�rJg |j                  j                  «       ¢|j                  ‘}|D ��	cg c]  }|D ]  }	|	‘Œ Œ }
}}	|
D �	cg c]  }	|	j                  j                  «       ‘Œ }}	dj                  d„ |D «       «      }d|› d�}|
D �	cg c]#  }	t        j                  |	|	j                  ¬«      ‘Œ% }}	d	j                  d
„ |D «       «      }g }t        |
«      D �]*  \  }}	dj                  |d | dgz   ||dz   d  z   «      }d|› d�}||   j                  d¬«      }|› d|	j                  › d|› d�}d|	j                  › d�}d||   › d|› d�}g }|j!                  |› d�«       t        |
«      D ]V  \  }}	||k(  r |j!                  d|	j                  › d�«       Œ+|j!                  d|	j                  › d|	j                  › d�«       ŒX |j!                  d«       dj                  |«      }|j!                  d|› d |› d!|› d"�«       �Œ- dj                  |«      }dj                  dgt#        |«      z  «      }d#|› d$�}d%}d&|› d'|› d|› d(�}nd)}d)}d*|› d+|› d,|› d-|› d-|› d.|› d/�cd d d «       S c c}	}w c c}	w c c}	w # 1 sw Y   y xY w)0Nr  c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrl   )r�  r  s     r_   rr   z4compute_meta_function_declaration.<locals>.<genexpr>Q  s   è ø€ Ò4¨!˜QŸV™VŸXÑ4ùs   ‚zat::impl::MetaBaseÚvoidc              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)zbool z = falseNrm   )rn   Úparams     r_   rr   z4compute_meta_function_declaration.<locals>.<genexpr>c  s   è ø€ ò 8Ø,1�%˜�w˜hÔ'ñ8ùs   ‚z
template <ú>)ÚbindsrQ  c              3  ó^   K  — | ]%  }|j                  d ¬«      › d|j                  › �–— Œ' y­w)T©Ú	strip_refú N)Úcpp_typer¬   )rn   Úelems     r_   rr   z4compute_meta_function_declaration.<locals>.<genexpr>n  s3   è ø€ ò 3àð —=‘=¨4�=Ó0Ð1°°4·9±9°+Ô>ñ3ùs   ‚+-ÚtruerU   zprecompute_out<Tr�  z set_r"  z value)rÚ   z already set"zstatic_assert(z == false, r#  z ret;zret.z	 = value;z	 = this->r7  zreturn ret;rÞ   z
                    z {
                        z
                        z'
                    }
                z'using meta_return_ty = precompute_out <z>;Úmeta_return_tyz
                zG
                struct TORCH_API precompute_out {
                    z;
            };rs   zstruct TORCH_API structured_z
 : public rf  r9  z meta(z);
};
)rÆ   r   ÚoutÚmetar¬   Úmeta_argumentsrü   Ústructured_inheritsÚprecomputedrá   Úvaluesrª   ÚupperÚargument_typeÚ	enumerater   r’   rÏ   )Úgr¬   ÚargsÚargs_strÚparent_classÚmeta_returnr¨  Úprecomputed_valuesÚreplace_listr¡  Úprecomputed_elementsÚprecomputed_template_parametersÚprecomputed_template_params_strÚprecompute_template_declÚ#precomputed_elements_with_cpp_typesÚprecomputed_elements_declÚsetter_methodsÚiÚreturn_ty_templatesÚ	return_tyÚelem_cpp_tyr2  Ú
assert_msgÚassert_stmtÚconstruction_stmtsÚjÚconstruction_blockÚsetter_methods_declÚmeta_return_template_paramsÚmeta_return_typedefÚprecomputed_decls                                  r_   Ú!compute_meta_function_declarationrÈ  K  s(  € Ø�<Š<ØÜ	  §¡Ó	'ñ vÜ�y‰y˜‹|ˆÜ×(Ñ(¨Ó+ˆØ—9‘9Ñ4¨tÔ4Ó4ˆØ—u‘u×0Ñ0ˆØÐØ/ˆLØˆØ+,¯<ª<�a—e‘e×'Ò'¸Tˆâð "R ;×#6Ñ#6×#=Ñ#=Ó#?Ð!QÀÇÁÐ!QÐà);÷$Ø%Èò$Ø@D’ð$Øð$Ð ñ $ð /Cö/Ø&*�—	‘	—‘Õ!ð/Ð+ð /ð /3¯i©iñ 8Ø5Tô8ó /Ð+ð *4Ð4SÐ3TÐTUÐ'VÐ$ð
 1ö3àô ×(Ñ(¨°T·Y±YÖ?ð3Ð/ð 3ð
 ).¯
©
ñ 3à?ô3ó )Ð%ð  ˆNÜ$Ð%9Ó:ó 2‘��4ð '+§i¡iØ3°B°QÐ7Ø�hñà5°a¸!±e°gÐ>ñ?ó'Ð#ð
 .Ð.AÐ-BÀ!ÐD�	ØAÀ!ÑD×MÑMØ"ð Nó �ð  )˜k¨¨t¯y©y¨k¸¸;¸-ÀwÐO�	ð  ! §¡ ¨=Ð9�
Ø .Ð/NÈqÑ/QÐ.RÐR]Ð^hÐ]iÐikÐl�ð &(Ð"Ø"×)Ñ)¨Y¨K°uÐ*=Ô>ä(Ð)=Ó>ò ‘G�A�tØ˜A’vØ*×1Ñ1°D¸¿¹¸À9Ð2MÕNà*×1Ñ1Ø" 4§9¡9 +¨Y°t·y±y°kÀÐCõð	ð #×)Ñ)¨-Ô8Ø%)§Y¡YÐ/AÓ%BÐ"à×%Ñ%ðØ�Kð  Ø$˜ð &Ø+Ð,ð -ðöðW2ðf #'§)¡)¨NÓ";Ðð +/¯)©)Ø�œ3Ð>Ó?Ñ?ó+Ð'ð
 %LÐLgÐKhÐhjÐ"kÐØ*ˆKð$Ø)Ð*ð +à(Ð)ð *Ø.Ð/ð 0ð	 Ñð #%ÐØ!ÐðØ!˜F *¨\¨Nð ;ØÐð ØÐð Ø€M�˜�zð "ð	÷avñ vùó$ùò/ùò3÷7vð vús7   £B3L%ÃLÃ&L%Ã-!LÄ$L%Ä2(L ÅF1L%ÌL%Ì%L.c                óþ   — t        | j                  j                  j                  «      }|j                  d«      s|j	                  d«      ry| j                  j
                  j                  €y|j                  | «      S )NÚ_likeÚnew_F)rË   r~   r¬   ÚendswithÚ
startswithrÉ   r;  rR  )r´   rJ  r¬   s      r_   Úneeds_backend_selectrÎ  Ç  s^   € Üˆq�v‰v�{‰{×ÑÓ €DØ‡}�}�WÔ §¡°Ô!8ØØ‡v�v×Ñ×&Ñ&Ð.ØØ×/Ñ/°Ó2Ð2r`   c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]r]  rD   rJ  c                ó¤  — t        || j                  «      sy t        j                  |j                  «      }t        |j                  d¬«      }|j                  «       D �cg c]B  }t        |j                  t        «      r&|j                  j                  j                  «       r|‘ŒD }}t        j                  |j                  «      }|}|j                  «       }d}	| j                  t         j"                  u �r|r^|j                  j                  j%                  «       st'        d|j                  › �«      ‚dj)                  d„ |D «       «      }
d|	› d|
› d	�}nB|j                  j                  j%                  «       rt'        d
|j                  › �«      ‚d|	› d�}d|j                  › d|j+                  |«      › d|› d|j                  j                  j-                  «       › ddj)                  d„ |D «       «      › d�S | j                  t         j.                  u rd|j                  j                  › d|› d�S t1        | j                  «       y c c}w )NT©r/  z.c10::computeDispatchKey(dtype, layout, device)z'Expected function to have tensor args: r  c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrl   ©r¬   r  s     r_   rr   z0ComputeBackendSelect.__call__.<locals>.<genexpr>û  s   è ø€ Ò'K°1¨¯­Ñ'Kùr  z-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z³);
DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect);
DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z+Expected function to not have tensor args: z)DispatchKeySet _dk = c10::DispatchKeySet(r#  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrl   r  r  s     r_   rr   z0ComputeBackendSelect.__call__.<locals>.<genexpr>  s   è ø€ Ò7 �a—f•fÑ7ùr  rŒ  zm.impl("aten::z", TORCH_FN(z));)rÎ  rJ  Únativer¬   r~   r   rÉ   r‹   r  r&   rŽ   r:  r   rg  r  r]  rK   rl  Úhas_tensor_argr�   rü   rk  rh  ÚREGISTRATIONr   )r[   r´   r¬   Ú
native_sigr  r>  Údispatcher_sigr  Údispatcher_exprsrq   r?  Ú
compute_dks               r_   rV  zComputeBackendSelect.__call__Û  s,  € ä# A t§}¡}Ô5Øä�{‰{˜1Ÿ6™6Ó"ˆä$ Q§V¡V°DÔ9ˆ
ð  ×)Ñ)Ó+ö
àÜ˜!Ÿ*™*¤hÔ/°A·J±J·O±O×4RÑ4RÔ4Tò ð
Ðð 
ô -×8Ñ8¸¿¹Ó@ˆð ˆØ)×/Ñ/Ó1ÐØGˆà�;‰;œ&×+Ñ+Ò+ñ
 "Ø—v‘v×'Ñ'×6Ñ6Ô8Ü(ØAÀ!Ç&Á&ÀÐJóð ð #Ÿi™iÑ'KÐ8JÔ'KÓK�ð".Ø.:¨^Ð;cÐdoÐcpð qJðM‘
ð
 —6‘6×#Ñ#×2Ñ2Ô4Ü(ØEÀaÇfÁfÀXÐNóð ð @À¸~ÈRÐPð ð
Ø
�&‰&ˆð à‡�ˆ$ƒÐ ð Ø€,ð Ø—F‘F—K‘K×0Ñ0Ó2Ð3ð 4Ø�I‰IÑ7Ð&6Ô7Ó7Ð8ð 9ðð ð �[‰[œF×/Ñ/Ñ/Ø% a§f¡f§k¡k ]°,¸t¸fÀCÐJÐJä˜Ÿ™Õ%ùòa
s   Á AINrW  rt  rm   r`   r_   rÐ  rÐ  Ó  s"   … à;Ó;ð Óà ò8&ó !ñ8&r`   rÐ  c                ó�   — d„ t         _        dd„}t        j                  t        |«       t	        j
                  | dt         d¬«      S )Nc                 ó   — y)NTrm   )r[   Údatas     r_   rƒ   zformat_yaml.<locals>.<lambda>   s   � r`   c                ó@   — | j                  |j                  «       «      S rl   )Úrepresent_dictrv   )Údumperrß  s     r_   Údict_representerz%format_yaml.<locals>.dict_representer#  s   € Ø×$Ñ$ T§Z¡Z£\Ó2Ð2r`   Fg    eÍÍA)Údefault_flow_styleÚDumperÚwidth)râ  r
   rß  r
   r  r
   )rL   Úignore_aliasesÚadd_representerr   r²   Údump)rß  rã  s     r_   Úformat_yamlrê    s9   € á 7„JÔó3ô ×Ñœ{Ð,<Ô=ô �9‰9�T¨e¼JÈcÔRÐRr`   c                óŽ   — | dk(  ry| dk(  ry	 t        | «      S # t        $ r" 	 t        | «      cY S # t        $ r | cY cY S w xY ww xY w)Nr¢  TÚfalseF)r�   Ú
ValueErrorÚfloatrâ   s    r_   Úpythonify_defaultrï  1  sU   € ØˆF‚{ØØ	
ˆgŠØðÜ�1‹vˆøÜò ð	Ü˜“8ŠOøÜò 	ØŒHð	úðús'   Ž
 ™	A£
0­A°A »A¿A Á Ac                ó¸   — t        | t        «      rt        | j                  «      S t	        | «      dk(  ryt        j                  | ddd¬«      j                  «       S )NÚTensorz
at::TensorFÚ__placeholder__)Úmutabler›  r/  )r‹   r8   Údynamic_typer¡  rË   r   Úargumenttype_typer   )Úts    r_   rô  rô  I  sP   € Ü�!”\Ô"Ü˜AŸF™FÓ#Ð#ô ˆ1ƒv�ÒØä× Ñ Ø	�5Ð 1¸%ôç�hƒjðr`   c                ó˜   — dg}t         j                  | v r|j                  d«       t         j                  | v r|j                  d«       |S )Nr=   rñ  Ú	namespace)r>   r,  r’   r  )r€  Ú	method_ofs     r_   Úcompute_method_of_yamlrú  V  sG   € ð �€IÜ‡~�~˜Ñ!Ø×Ñ˜Ô"Ü×Ñ˜8Ñ#Ø×Ñ˜Ô%ØÐr`   c                ó  — i }t        j                  | «      }g }t        t        | j                  j
                  |«      «      D ]Ä  \  }\  }}t        |j                  «      |t        j                  |d¬«      j                  «       dœ}|j                  rc|j                  |d<   | j                  j                  «       r:|j                  || j                  j                  j                  |   j                  <   |j                  |«       ŒÆ ||fS )NFrÒ  )rô  r¬   rŽ   Ú
field_name)r   Úreturn_namesr¬  Úzipr~   Úreturnsrô  rŽ   Úreturn_typer   r¬   r�  rÉ   r¤  r’   )r´   Úname_to_field_nameÚnamesrÿ  r»  Úrr¬   Úrets           r_   Úcompute_returns_yamlr  a  så   € ðT *,Ðô ×Ñ˜QÓ€EØ€GÜ!¤# a§f¡f§n¡n°eÓ"<Ó=ò ‰ˆ‰9ˆAˆtä(¨¯©Ó0Øä—O‘O A¨eÔ4×=Ñ=Ó?ñ	
ˆð �6Š6à !§¡ˆC�ÑØ�v‰v×ÑÔ!ØCDÇ6Á6Ð" 1§6¡6×#3Ñ#3×#7Ñ#7¸Ñ#:×#?Ñ#?Ñ@à�‰�sÕðð  Ð&Ð&Ð&r`   c               óT  — t        | j                  t        «      r:d dd| j                  | j                  ddœ}| j
                  �| j
                  |d<   |S t        | j                  t        «      rt        ‚t        | j                  t        «      rt        | j                  ||||¬«      S y )Nzat::TensorOptionsFT)Ú
annotationrô  Úis_nullabler¬   rŽ   Ú
kwarg_onlyr  ©Úschema_orderÚkwarg_only_setÚout_arg_setr  )
r‹   r  r<   r¬   rŽ   r  r:   r�   r&   Úcompute_argument_yaml)Úcpp_ar  r  r  r  rÕ   s         r_   Úcompute_cpp_argument_yamlr  ¤  s™   € ô �%—.‘.Ô"8Ô9àØ/Ø Ø—J‘JØ—J‘JØñ"
ˆð �=‰=Ð$Ø"Ÿ]™]ˆC�	‰NØˆ
Ü	�E—N‘N¤LÔ	1ÜÐÜ	�E—N‘N¤HÔ	-Ü$Ø�N‰NØ%Ø)Ø#Ø1ô
ð 	
ð 
.r`   c          	     óÆ  — | j                   rt        | j                   «      nd t        | j                  «      | j                  j	                  «       | j
                  t        j                  | dd¬«      j                  «       dœ}| j                  �8t        t        j                  | j                  | j                  d¬«      «      |d<   | j
                  |v rd|d<   | j
                  |v r*d|d	<   d|d
<   | j
                  |v r|| j
                     |d<   | j                  j                  «       }|�3|j                  �'t        |j                  «      dk7  r|j                  |d<   |S )Nrò  F)r›  r/  )r  rô  r  r¬   rŽ   rÒ  r  Tr	  rý   Úallocaterü  ÚboolÚsize)r  rË   rô  rŽ   r  r¬   r   r«  r   r  rï  Údefault_exprÚis_list_liker  r¡  )r  r  r  r  r  rÕ   Úls          r_   r  r  Ä  s+  € ð ,-¯<ª<”c˜!Ÿ,™,Ô'¸TÜ$ Q§V¡VÓ,Ø—v‘v×)Ñ)Ó+Ø—‘ä×!Ñ! !Ð+<ÀUÔK×TÑTÓVñ€Cð 	‡y�yÐÜ*Ü×Ñ˜QŸY™Y¨¯©°uÔ=ó
ˆˆI‰ð 	‡v�v�ÑØ ˆˆLÑØ‡v�v�ÑØˆˆH‰ØˆˆJ‰à�6‰6Ð'Ñ'Ø 2°1·6±6Ñ :ˆC�Ñð 	
�‰×ÑÓ€AØ€}˜Ÿ™Ð+´°A·F±F³¸vÒ0EØ—f‘fˆˆF‰Ø€Jr`   c                ój  — t        | «      \  }}| j                  j                  j                  D �ch c]  }|j                  ’Œ }}| j                  j                  j
                  D �ch c]  }|j                  ’Œ }}t        j                  | dd¬«      }|j                  j                  «       }|D �cg c]  }t        |d|||¬«      ‘Œ }	}t        | j                  j                  «       «      }
|
D �cg c]  }t        |d|||¬«      ‘Œ }}|
D ��cg c]6  }t        j                  |dt        «       ddd¬«      D ]  }|j                   ‘Œ Œ8 }}}t        j"                  | j                  j$                  d¬«      j'                  «       }|› ddj)                  |«      › d	�}t+        d
„ |D «       «      xr t,        j.                  | j0                  v}t3        dt        j                  | j                  «      fdt5        | j                  j                  j                  «      fdt5        | j                  j                  j6                  «      fd| j8                  fd| j:                  �| j:                  ndfdd| j                  › �fd|	fd|fd|fdt=        | j0                  «      fdd| j>                  €dn| j>                  fd|fd| j                  j                  j                  j@                  fd|fd| jB                  fd| jD                  fddd | jF                  fg«      S c c}w c c}w c c}w c c}w c c}}w )!NFr+  r
  T)r,  Úcpp_no_default_argsÚfaithfulr/  Úhas_tensor_optionsrÒ  z (r  r6  c              3  óP   K  — | ]  }t        |j                  t        «      –— Œ  y ­wrl   )r‹   r  r<   r  s     r_   rr   z+compute_declaration_yaml.<locals>.<genexpr>   s   è ø€ ÒM¸qŒJ�q—z‘zÔ#9×:ÑMùs   ‚$&r¬   Úoperator_namerj  rù   Úcategory_overriders   Úschema_stringúaten::rÉ   Úschema_order_cpp_signatureÚschema_order_argumentsrù  )ÚmoderÖ  Úpython_modulerÿ  rÌ   Úis_factory_methodÚabstractrˆ   )Úwith_gilF)Ú
deprecatedFÚhas_math_kernel)$r  r~   rÉ   Úflat_kwarg_onlyr¬   r¤  r   r.  r2  r  rŒ   r"  r  r   r  r§   rŽ   Úreturns_typerÿ  r   rü   Úanyr>   r,  r€  r   rË   rj  rù   r  rú  r$  rÌ   Úis_abstractrˆ   rñ   )r´   rÿ  r  r  r  r  r‚  Úcpp_argsr  rÉ   Úschema_order_jit_argumentsr"  r  Úcpp_schema_order_typesÚcpp_returnsr!  r%  s                    r_   Úcompute_declaration_yamlr2  è  s2  € ä"6°qÓ"9Ñ€GÐð '(§f¡f×&6Ñ&6×&FÑ&FÖG �a—f“fÐG€NÐGØ#$§6¡6×#3Ñ#3×#7Ñ#7Ö8˜a�1—6“6Ð8€KÐ8ä!×6Ñ6Ø	�%¨%ô€Ið ×"Ñ"×,Ñ,Ó.€Hð ö	ð ô 	"ØØØ)Ø#Ø1ö	
ð	€Ið 	ô "& a§f¡f×&CÑ&CÓ&EÓ!FÐð ,ö	ð ô 	ØØØ)Ø#Ø1ö	
ð	Ðð 	ð ,÷ð Ü—‘ØØÜ #£ØØØ$ô
ò	ð ð 	
�‹ðàðÐñ ô ×"Ñ" 1§6¡6§>¡>¸%Ô@×IÑIÓK€KØ$/ =°°4·9±9Ð=SÓ3TÐ2UÐUVÐ!WÐô 	ÑMÀHÔMÓMò 	-Ü�N‰N !§*¡*Ð,ð ô
 à”S—X‘X˜aŸf™fÓ%Ð&Øœc !§&¡&§+¡+×"2Ñ"2Ó3Ð4Øœc !§&¡&§+¡+×";Ñ";Ó<Ð=Ø)¨1×+GÑ+GÐHà#Ø'(×':Ñ':Ð'F�×#Ò#ÈBðð   q§v¡v hÐ/Ð0Ø˜)Ð$Ø)Ð+EÐFØ%Ð'=Ð>ØÔ0°·±Ó<Ð=ØØ A§O¡OÐ$;™bÀÇÁÐQØ˜Ð Ø˜Ÿ™Ÿ™×(Ñ(×0Ñ0Ð1Ø Ð"3Ð4Ø˜Ÿ™Ð'Ø˜QŸ^™^Ð,ØØ!Ø × HÑ HÐIð/	
óð ùòm HùÚ8ùò	ùò	ùós   ±LÁ(L Â3L%Ã3L*Ä;L/c                óî   — | j                   xs | j                  d uxrX | j                  j                  «       t        j
                  k(  xs+ | j                  j                  «       t        j                  k(  S rl   )rÆ   rÅ   r~   Úkindr9   Ú
functionalrÌ   r“  s    r_   Ú"has_autogenerated_composite_kernelr6  B  sU   € Ø�L‰LÒ=˜A×1Ñ1¸Ð=ò Ø	�‰�‰‹œ×.Ñ.Ñ.ÒU°!·&±&·+±+³-Ä:×CUÑCUÑ2Uðr`   c           
     ó(  — t        j                  | j                  «      }t        j                  | j                  j                  «      j                  «       }t        j                  | j                  «      }dj                  d„ |D «       «      }d| j                  › �t        |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  hk7  xrV |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  t        j                  hk7  «      t        | j                  xs t        | «      «      dœ}|› d|› d|› dt!        j"                  |«      › d�S c c}}w c c}}w )	Nr  c              3  óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrl   )Ú
no_defaultr�  r  s     r_   rr   z4compute_registration_declarations.<locals>.<genexpr>O  s   è ø€ Ò=°1˜Ÿ™›×,Ñ,×.Ñ=ùs   ‚(*r   )ÚschemaÚdispatchr  rŸ  r"  z); // rÞ   )Ú
dispatcherr¬   r~   r+  rÿ  r   rÉ   rü   rË   rv   rî   r,   ræ   rç   Úhas_composite_kernelr6  ÚjsonÚdumps)	r´   rg   r¬   r+  r®  r¯  rŸ   r    Úcomment_datas	            r_   Ú!compute_registration_declarationsrA  H  sP  € ô �?‰?˜1Ÿ6™6Ó"€DÜ×*Ñ*¨1¯6©6¯>©>Ó:×CÑCÓE€LÜ×Ñ §¡Ó'€DØ�y‰yÑ=¸Ô=Ó=€Hà˜1Ÿ6™6˜(Ð#äØ*×0Ñ0Ó2×F‘4�1�a°a·l±lÀ1µoŠQÓFÜ×5Ñ5Ð6ñ7ò à.×4Ñ4Ó6×J‘t�q˜!¸!¿,¹,Àq½/’ÓJä×5Ñ5Ü×AÑAðñó
ô �q×-Ñ-ÒVÔ1SÐTUÓ1VÓWñ$€Lð ˆ~˜Q˜t˜f A h Z¨v´d·j±jÀÓ6NÐ5Oð Pð ð ùó GùãJs   Â4FÃFÃ=FÄFc                óÒ   — | �|�t        d«      ‚d }| �t        | «      }|�t        j                  |dd«      }|S |�t        j                  |«      }|S t        j
                  «       }|S )NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)r�   r§   rD   Ú&from_legacy_op_registration_allow_listÚfrom_yaml_pathÚget_nop_selector)Ú"provided_op_registration_allowlistÚop_selection_yaml_pathÚop_registration_allowlistrJ  s       r_   Úget_custom_build_selectorrI  i  s—   € ð
 	+Ð6Ø"Ð.äð4ó
ð 	
ð
 26ÐØ)Ð5Ü$'Ð(JÓ$KÐ!à Ð,Ü#×JÑJØ%ØØó
ˆð €Oð 
 Ð	+Ü#×2Ñ2Ð3IÓJˆð €Oô $×4Ñ4Ó6ˆà€Or`   c                óî  — 	 	 	 	 dd„}t        t        «      }| D ]·  }|j                  j                  «       }|j                  }|t
        j                  k(  rL|j                  j                  «       }|||   v r"t        d|› d||   j                  «       › �«      ‚|||   |<   Œˆ|||   v r!t        |› d||   j                  «       › �«      ‚|||   |<   Œ¹ t        t        ||j                  «       «      «      S )Nc                ód  — g }t         j                  | v r|| j                  t         j                  «      }| j                  t         j                  d «      }| j                  t        j
                  d «      }|j                  t        |||¬«      «       |j                  | j                  «       «       |S )N)ÚviewÚ	view_copyÚview_inplace)
r?   Úaliasingr©   Úaliasing_inplacer9   r5  r’   r6   Úextendr©  )Údr�   rL  rN  rM  s        r_   Úmaybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_group‹  s�   € ð BDˆÜ×"Ñ" aÑ'Ø—5‘5œ×0Ñ0Ó1ˆDØŸ5™5¤×!@Ñ!@À$ÓGˆLØŸ™œj×3Ñ3°TÓ:ˆIà�L‰LÜ(ØØ'Ø!-ôôð 	�‰�Q—X‘X“ZÔ Øˆr`   zDuplicate schema kind z in z already in )rR  z1dict[ViewSchemaKind | SchemaKind, NativeFunction]r  z/list[NativeFunction | NativeFunctionsViewGroup])r   r�   r~   Úview_signatureÚview_schema_kindr?   Únon_aliasingr4  r�   r=  rŒ   rE   r©  )rf   rS  Úgrouped_by_viewsr´   r:  Ú	view_kindr4  s          r_   Ú$get_grouped_by_view_native_functionsrY  ˆ  s*  € ðØ<ðà	8óô. 	”DÓð ð ò 4ˆØ—‘×&Ñ&Ó(ˆØ$%×$6Ñ$6ˆ	ð
 œ×3Ñ3Ò3Ø—6‘6—;‘;“=ˆDØÐ'¨Ñ/Ñ/Ü$Ø,¨T¨F°$Ð7GÈÑ7O×7TÑ7TÓ7VÐ6WÐXóð ð ./Ð˜VÑ$ TÒ*àÐ,¨VÑ4Ñ4Ü$Ø �k Ð.>¸vÑ.F×.KÑ.KÓ.MÐ-NÐOóð ð 34Ð˜VÑ$ YÒ/ð'4ô* ”	Ð1Ð3C×3JÑ3JÓ3LÓMÓNÐNr`   c           	     ó€   — 	 	 	 	 dd„}t        | «      }t        t        |t        |j                  «       «      «      «      S )Nc                óò   — t        j                  | «      }|€^t        d„ | j                  «       D «       «      r%t	        dt        | j                  «       «      › �«      ‚t        | j                  «       «      S |gS )Nc              3  ó8   K  — | ]  }d |j                   v –— Œ y­w)Ú	generatedN)r¥   ©rn   r´   s     r_   rr   zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>Å  s   è ø€ Ò=¨Q�; !§&¡&Ô(Ñ=ùs   ‚zVGenerated NativeFunctions should have been grouped into NativeFunctionsGroup objects: )r5   Ú	from_dictr,  r©  r�   rŒ   )rR  r  s     r_   Úflatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group¾  sr   € ô !×*Ñ*¨1Ó-ˆØˆ9ô Ñ=°!·(±(³*Ô=Ô=Ü$ð5Ü59¸!¿(¹(»*Ó5EÐ4FðHóð ô ˜Ÿ™›
Ó#Ð#à�3ˆJr`   )rR  z dict[SchemaKind, NativeFunction]r  ú/Sequence[NativeFunction | NativeFunctionsGroup])rC   rŒ   rE   r©  )rf   r`  Úpre_grouped_native_functionss      r_   Úget_grouped_native_functionsrc  »  sL   € ðØ+ðà	8óô" $>Ð>NÓ#OÐ ÜÜÐ#¤TÐ*F×*MÑ*MÓ*OÓ%PÓQóð r`   )Únative_function_decl_genc                óŽ  — t        t        «      }| D ]°  }t        «       }t        «       }|j                  «       D ]‡  \  }}|j	                  |«      }	|	r/|	j
                  }
|j                  |«       |j                  |
«       nt        }
t        |«      dkD  rt        d|› d|› �«      ‚||
   j                   |||«      «       Œ‰ Œ² |S )NrU   z6Codegen only supports one namespace per operator, got z from )r   rŒ   r§   rv   r$  r%  rª   r*   rÏ   r�   rQ  )Úgrouped_native_functionsrg   rd  Úns_grouped_kernelsr´   Únative_function_namespacesÚdispatch_keysrq   Úbackend_idxr&  rø  s              r_   Úget_ns_grouped_kernelsrk  Õ  sã   € ô 0;¼4Ó/@ÐØ%ò ˆÜ%(£UÐ"Ü›ˆØ)8×)>Ñ)>Ó)@ò 	Ñ%ˆL˜+Ø*×5Ñ5°aÓ8ÐÙØ,×:Ñ:�	Ø×!Ñ! ,Ô/Ø*×.Ñ.¨yÕ9ä4�	ÜÐ-Ó.°Ò2Ü$ðØ5Ð6°f¸]¸OðMóð ð ˜yÑ)×0Ñ0Ù(¨¨KÓ8õñ	ðð& Ðr`   c           
     ó0  — g }d}| j                  «       D ]~  \  }}t        |dd¬«      }t        t        j                  |«      «      }|j                  d|j                  › d|j                  |«      › d|j                  › d�j                  |«      «       Œ€ |S )NrÞ   rs   é   ©Únamespace_strÚentity_nameÚ	max_levelú	
        )
rv   rJ   rŒ   r   ÚfromkeysrQ  Úprologuerü   ÚepilogueÚsplit)rg  ÚdeclarationsÚnewlinerø  ÚkernelsÚ	ns_helperÚordered_kernelss          r_   Ú8get_native_function_declarations_from_ns_grouped_kernelsr|  ô  s¶   € ð !€LØ€GØ0×6Ñ6Ó8ò 
Ñˆ	�7Ü#Ø#ØØô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð  Ðr`   c                ó6   — t        | ||¬«      }t        |¬«      S )a¾  
    Generate kernel declarations, in `NativeFunction(s).h`.
    :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`.
    :param backend_indices: kernel collections grouped by dispatch key.
    :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`.
    :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline.
    ©rf  rg   rd  )rg  )rk  r|  )rf  rg   rd  rg  s       r_   Ú get_native_function_declarationsr    s+   € ô  0Ø!9Ø'Ø!9ôÐô
 DØ-ôð r`   c           	     óJ  — |j                  | «      }|r}d|j                  vrot        | t        «      r| j                  j
                  n| j                  j                  j
                  }t        d|› d|j                  › d|j                  › d�«      ‚|r|j                  S t        S )Nr  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)
r$  r%  r‹   r4   r~   r¬   r5  r�   rq   r*   )r´   rj  r&  Ú	func_names       r_   Úget_kernel_namespacer‚  (  s­   € ð #×-Ñ-¨aÓ0ÐÙ˜JÐ.>×.LÑ.LÑLä% a¬Ô8ˆA�F‰F�KŠK¸a¿l¹l×>OÑ>O×>TÑ>Tð 	ô Ø& y kð 2!Ø!,×!9Ñ!9Ð :ð ;Ø/×=Ñ=Ð>Ð>cðeó
ð 	
ñ +;Ð×&Ñ&ðÜ@Xðr`   c        	        ó   ‡‡‡‡‡‡‡— g }	t        t        «      Št        t        «      Št        t        «      }
d}t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }|D ]»  }t        ||¬«      j                  dd«      Š‰‰   j                   ||«      «       ‰‰   j                   ||«      «       t        |t        «      r|j                  n|j                  j                  }||
‰   vrt        t        «      |
‰<   |
‰   |   j                   ||«      «       Œ½ ‰D ]’  Št!        ‰‰   «      dk(  rŒt#        ‰¬«      ŠdŠ|
‰   D ]/  }|
‰   |   sŒ‰d|› d	‰› d
|j%                  |
‰   |   «      › d�z  ŠŒ1 |	j                  | j'                  dˆˆˆˆˆˆˆfd„«      j)                  |«      «       Œ” |	S )NrÞ   ©Úrocmr/  Úclass_method_nameÚskip_dispatcher_op_registration©r´   rj  r  rs   r   )ro  z
TORCH_LIBRARY_IMPL(r  z, m) {
    z
}zRegisterDispatchDefinitions.inic                 óp   •— ‰j                   ‰j                  ‰ ‰   ‰rdn‰d‰j                  «       ‰‰   dœS )Nrs   )Úns_prologueÚns_epilogueÚdispatch_anonymous_definitionsÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_namespaceÚdispatch_namespaced_definitions)rt  ru  rû   )Úanonymous_definitionsrq   Úkernel_namespaceÚns_definitionsrz  Úregistration_bodyr‡  s   €€€€€€€r_   rƒ   z1get_native_function_definitions.<locals>.<lambda>‹  sL   ø€ Ø#,×#5Ñ#5Ø#,×#5Ñ#5Ø6KØ(ñ7ñ 7ñ ;=à*Ø79Ø*6×*<Ñ*<Ó*>Ø7EÐFVÑ7Wñ€ r`   )r   rŒ   r�   ÚdestÚRegisterDispatchKeyrK   ÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONrØ  r‚  rá   rQ  r‹   r4   rø  r5  rÏ   rJ   rü   Úsubstitute_with_templaterv  )ry   rf  rq   rj  rJ  r…  r/  r‡  Úgen_dispatch_helpersÚdefinitionsÚregistrationsrx  Úns_genÚanonymous_genÚreg_genr´   rø  r‘  r’  r“  rz  r”  s     `    `         @@@@@r_   Úget_native_function_definitionsr   <  s`  þ€ ð  €KÜ+6´tÓ+<€NÜ2=¼dÓ2CÐÜ5@ÄÓ5F€MØ€GÜ×%Ñ%ØÜ×$Ñ$ØØØØØ(Gô€Fô ×,Ñ,ØÜ×#Ñ#ØØØØØ(Gô€Mô ×&Ñ&ØÜ×ÑØØØØØ(Gô€Gð &ò 
ˆÜ/°!ÀÔM×UÑUØ˜ó
Ðð 	Ð'Ñ(×/Ñ/Ù�1‹Iô	
ð 	Ð.Ñ/×6Ñ6Ù˜!Óô	
ô & a¬Ô8ˆA�KŠK¸a¿l¹l×>TÑ>Tð 	ð ˜MÐ*:Ñ;Ñ;Ü.9¼$Ó.?ˆMÐ*Ñ+ØÐ&Ñ'¨	Ñ2×9Ñ9Ù�A‹Jõ	
ð!
ð( +ò 
ÐÜˆ~Ð.Ñ/Ó0°AÒ5ØÜ#Ð2BÔCˆ	ØÐØ&Ð'7Ñ8ò 	ˆIØ Ð!1Ñ2°9Ò=ØØð &Ø�;˜b  ð /Ø‡\�\�-Ð 0Ñ1°)Ñ<Ó=Ð>ð ?ð"ñ Ñð	ð 	×ÑØ×'Ñ'Ø1÷ñ ó÷ ‰e�G‹nõ!	
ð
ð> Ðr`   c           
     óX  — g }t        t        «      }d}t        j                  |t        j
                  ||d d|¬«      }	| D ]G  }
t        |
|¬«      j                  d|j                  «       «      }||   j                   |	|
«      «       ŒI |j                  «       D ]�  \  }}t        |«      dk(  rŒt        |dd¬	«      }t        t        j                  |«      «      }|j                  d|j                  › d|j!                  |«      › d|j"                  › d
�j%                  |«      «       Œ� |S )NrÞ   F)r…  r†  r‡  r/  rˆ  rÖ  r   rs   é   rn  rr  )r   rŒ   r•  r–  rK   ÚNAMESPACED_DECLARATIONr‚  rá   rû   rQ  rv   rÏ   rJ   r   rs  rt  rü   ru  rv  )rf  rq   rj  rJ  r…  r/  rw  rg  rx  r~   r´   rø  ry  rz  r{  s                  r_   Úget_namespaced_declarationr¤     sM  € ð !€LÜ/:¼4Ó/@ÐØ€GÜ×#Ñ#ØÜ×%Ñ%ØØØØ(-Øô€Dð &ò 
ˆÜ(¨1¸+ÔF×NÑNØ�l×(Ñ(Ó*ó
ˆ	ð 	˜9Ñ%×,Ñ,Ù�‹Gõ	
ð
ð 1×6Ñ6Ó8ò 
Ñˆ	�7Üˆw‹<˜1ÒØÜ#Ø#°¸qô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð Ðr`   c           
     óV  — t        t        «      }| D ]   }||j                     j                  |«       Œ" d}g }d }|j	                  «       D ]Y  \  }}t        t        t        |«      |«      «      }	|dk(  r|	}Œ,|}d}
|t        v rdnd}|d|› d|› d|
j                  |	«      › d	�z  }Œ[ ||fS )
Nrs   Úatenrà   ÚTORCH_LIBRARY_FRAGMENTÚTORCH_LIBRARYrÞ   r"  z	, m) {
  z
};)	r   rŒ   rø  r’   rv   rI   rI  r-   rü   )rf   Úschema_selectorÚns_native_functionsÚnative_functionÚschema_registrationsÚaten_schema_registrationsÚcustom_namespacerø  r�   Úschema_registrations_bodyÚtabÚtorch_library_macros               r_   Ú(get_native_function_schema_registrationsr²  Ð  s  € ô
 <GÄtÓ;LÐØ+ò OˆØ˜O×5Ñ5Ñ6×=Ñ=¸oÕNðOàÐØ "ÐØÐØ/×5Ñ5Ó7ò Ñˆ	�5Ü$(Ü”^ OÓ4°eÓ<ó%
Ð!ð
 ˜ÒØ(AÑ%à(ÐØˆCð
 Ô 3Ñ3ñ )à$ð  ð
 !ð )ØÐ �QÐ'Ð(ð )Ø‡8�8Ð%Ó&Ð'ð (ð%ñ Ñ ð%ð, &Ð';Ð<Ð<r`   c           
     óR  ‡ ‡‡‡‡‡‡
‡‡‡‡‡— |j                  dˆfd„«       ‰ D �cg c]!  }t        j                  |j                  v sŒ |‘Œ# c}Š‰ D �cg c]	  }|‰vsŒ|‘Œ c}Š|j                  dˆˆfd„«       |j                  dˆˆfd„«       |j                  dˆ ˆfd„«       t	        ‰‰¬	«      Š|j                  d
ˆfd„«       |	D ]Q  Št        ‰||«      }‰|v r=d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆˆ
ˆfd„«       ~ŒS y c c}w c c}w )NzNativeMetaFunctions.hc                 ó<   •— g t        t        t        ‰ «      «      dœS )N)ÚNativeMetaFunctions_includesÚ NativeMetaFunctions_declarations©rŒ   rI   rÈ  )Ústructured_native_functionss   €r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>  s!   ø€ Ø,.Ü04ÜÔ:Ð<WÓXó1ñ
€ r`   úMethodOperators.hc            	     óf   •— g t        t        t        t        j                  ‰¬«      ‰ «      «      dœS )N©r_  ©ÚMethodOperators_includesÚMethodOperators_declarations©rŒ   rI   r[  rK   ri  )Úmethod_native_functionsÚstatic_dispatch_idxs   €€r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>  s6   ø€ Ø(*Ü,0ÜÜ$Ü×*Ñ*Ø8Kôð ,óó-ñ
€ r`   zOperators.hc            	     óh   •— dgt        t        t        t        j                  ‰¬«      ‰ «      «      dœS )Nz!#include <ATen/MethodOperators.h>r»  )ÚOperators_includesÚOperators_declarationsr¿  )Únon_method_native_functionsrÁ  s   €€r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>$  s9   ø€ Ø#FÐ"GÜ&*ÜÜ$Ü×*Ñ*Ø8Kôð 0óó'ñ
€ r`   úFunctions.hc                 óZ   •— t        ‰«      dgt        t        t        «       ‰ «      «      dœS )Nz#include <ATen/Operators.h>)r  ÚFunctions_includesÚFunctions_declarations)r  rŒ   rI   rv  ©rf   rÁ  s   €€r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>3  s7   ø€ Ü-JØ#ó.ð $AÐ"AÜ&*ÜÜ#Ó%Ø$óó'ñ
€ r`   )rf  rg   zNativeFunctions.hc                 ó   •— dg‰ dœS )Nz%#include <ATen/NativeMetaFunctions.h>)ÚNativeFunctions_includesÚNativeFunctions_declarationsrm   )rw  s   €r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>F  s   ø€ Ø)PÐ(QØ,8ñ
€ r`   r   úFunctions_inl.h>úDispatchKeyFunctions.hc                 ó    •— t        ‰ «      ‰dœS ©N)rq   Úinline_headers©rË   ©rq   Úinl_headerss   €€r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>T  s   ø€ Ü$'¨Ó$5Ø&1ñ€ r`   úFunctions_inl.húDispatchKeyFunctions_inl.hc            
     óP   •— g ‰j                  «       t        ‰‰‰ ‰   ‰‰d¬«      dœS )NT)rf  rq   rj  rJ  r…  r/  )Ú!DispatchKeyFunctions_inl_includesr�  Ú dispatch_namespaced_declarations)rû   r¤  )rg   rq   rf  r…  rJ  s   €€€€€r_   rƒ   z(gen_aggregated_headers.<locals>.<lambda>\  s8   ø€ Ø9;Ø*6×*<Ñ*<Ó*>Ü8RØ1IØ%1Ø$3°LÑ$AØ!)Ø!Ø#ô9ñ€ r`   )Úwriter>   r,  r€  r  rz   Úwrite_with_template)rf   rf  r¸  rÁ  rJ  rg   Úcpu_fmrw   Úfunctions_keysri  r…  Úfnry   rw  rq   rÕ  rÀ  rÅ  s   ``````    `  @@@@@r_   Úgen_aggregated_headersrà  ô  sS  ÿû€ ð  ‡L�LØó	
ôð &öØ¬¯©¸2¿;¹;Ò)FŠòÐð &ö#Ø¨Ð3JÒ)JŠò#Ðð ‡L�LØô	
ôð ‡L�LØô	
ôð ‡L�LØô	
ôô 4Ø!9Ø'ô€Lð ‡L�LØó	
ôð &ò ˆÜ+¨L¸*ÀfÓMˆØ˜>Ñ)Ø+¨L¨>Ð9IÐJˆKà×"Ñ"Ø�. Ð,Ø(ôôð ×"Ñ"Ø�. Ð0Ø,÷ôñ" ñ=ùòùò#s   ¦!DÁDÁ	D$ÁD$c                ób  ‡‡‡‡‡‡‡‡‡‡‡‡‡— t        t        «      Š| D ]   }‰|j                     j                  |«       Œ" t        t        «      }|D ]"  }|j                  Š|‰   j                  |«       Œ$ ‰j	                  «       D ]Ø  \  ŠŠ|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆfd„«       |j                  ‰g «      }|D �cg c]   }t        |t        «      r|j                  r|‘Œ" c}Št        ‰«      dkD  Š‰r|j                  ‰› d�d	ˆfd
„«       t        ||t        j                  ¬«      Š|j                  ‰› d�dˆˆˆfd„«       ŒÚ dD ]  \  ŠŠ|j                  ‰› d�ˆˆˆfd„«       Œ! |	D �]	  Š‰|vrŒ	‰j                  «       Šg Š‰j	                  «       D ]”  \  ŠŠ|j                  ‰g «      }t        t!        t        j"                  |‰   t$        j&                  ||
dd d¬«      |«      «      Št        ‰«      dk(  rŒg‰j                  ‰«       |j                  ‰› d‰› d�dˆˆfd„«       Œ– t)        ‰||«      }d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆfd„«       ~�Œ |j                  d ˆfd!„«       y c c}w )"Nz_ops.hz
Operator.hc            	     ód   •— dt        t        t        t        j                  ‰¬«      ‰ «      «      iS )Nrw  r»  r¿  )Ú	functionsrÁ  s   €€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>Œ  s5   ø€ Ø¤ÜÜ(Ü"×.Ñ.Ø<Oôð "óó!ð
€ r`   z.hz
Function.hc                 óz   •— t        t        ˆfd„‰ «      «      d‰› d�t        t        t        «       ‰ «      «      dœS )Nc                ó   •— t        | ‰¬«      S )N)ró   )rþ   ©rß  rÁ  s    €r_   rƒ   z<gen_per_operator_headers.<locals>.<lambda>.<locals>.<lambda>Ÿ  s   ø€ Ô#=ØÐ.Aô$€ r`   rö   ú_ops.h>)Ústatic_dispatch_ops_headersÚoperator_includesÚfunction_definitions)rŒ   rI   rv  )rã  r¬   rÁ  s   €€€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>œ  sK   ø€ Ü/3Üóð "ó	ó0ð (;¸4¸&ÀÐ%HÜ(,ÜÜ'Ó)Ø!óó)ñ€ r`   r   z_meta.hzNativeMetaFunction.hc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚmeta_function_declarationsr·  )Ústructured_functionss   €r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>»  s"   ø€ Ø0´$Ü Ü=Ð?Sóó3ð€ r`   r~  z	_native.hzNativeFunction.hc                 ó$   •— ‰r	d‰› d�‰ dœS g ‰ dœS )Nrö   z_meta.h>)Úextra_includesÚnative_function_declarationsrm   )rw  Úis_structuredr¬   s   €€€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>Ë  s)   ø€ á<IÐ)¨$¨¨xÐ8à0<ñ	€ àOQà0<ñ	€ r`   ))Ú	Functionsrs   )Ú	OperatorsÚ_ops)ÚNativeMetaFunctionsÚ_meta)ÚNativeFunctionsÚ_nativec                 ó|   •— ‰› d�t        ‰j                  «       «      D � cg c]
  } d| › ‰› d�‘Œ c} ‰› d�g iS c c} w )NÚ	_includesrö   ú.h>Ú_declarations)rS  r=  )r¬   ÚcategoryÚfunctions_by_root_nameÚsuffixs    €€€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>Û  sY   ø€ Ø�*˜IÐ&ä &Ð'=×'BÑ'BÓ'DÓ Eö)àð *¨$¨°¨x°sÒ;ò)ð �*˜MÐ*¨Bð€ ùò)s   ¡9TFr„  r÷   z_dispatch.hzDispatchKeyFunction.hc                 ó   •— ‰‰ dœS )N)r�  rÚ  rm   )rw  r�  s   €€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>  s   ø€ Ø*<Ø8Dñ€ r`   r   rÎ  rÆ  rÏ  c                 ó    •— t        ‰ «      ‰dœS rÑ  rÓ  rÔ  s   €€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>  s   ø€ Ü # LÓ 1Ø"-ñ€ r`   rÖ  r×  c            	     óV   •— ‰t        ‰«      D � cg c]  } d| › d‰› d�‘Œ c} g dœS c c} w )Nrö   r÷   rø   )r�  rÙ  rÚ  )rS  )r¬   Údispatch_namesr�  s    €€r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>  sE   ø€ Ø&8ô !' ~Ó 6ö6àð *¨$¨¨qÐ1CÐ0DÀLÒQò6ð 57ñ€ ùò6s   �&r¹  c                 óJ   •— t        d„ ‰ j                  «       D «       «      g dœS )Nc              3  óR   K  — | ]  \  }}t        d „ |D «       «      rd|› d�–— Œ! y­w)c              3  óT   K  — | ]   }t         j                  |j                  v –— Œ" y ­wrl   )r>   r,  r€  )rn   rß  s     r_   rr   zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>(  s   è ø€ ÒI¸”w—~‘~¨¯©Ô4ÑIùs   ‚&(rö   rç  N)r,  )rn   r¬   rã  s      r_   rr   z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>%  s3   è ø€ ò /á#�D˜)ÜÑI¸yÔIÔIð & d V¨7Ô3ñ/ùs   ‚%'r¼  )rS  rv   )rþ  s   €r_   rƒ   z*gen_per_operator_headers.<locals>.<lambda>$  s-   ø€ Ü(.ñ /à'=×'CÑ'CÓ'Eô/ó )ð
 -/ñ
€ r`   )r   rŒ   rú   r’   rv   rÜ  rt   r‹   r5   rÆ   rÏ   r  r•  Ú#compute_native_function_declarationrÛ  rû   rE   r–  rK   r£  rz   )rf   rf  rÁ  rJ  rg   rÝ  rw   Úops_fmrÞ  ri  r…  rß  Úgrouped_functions_by_root_nameÚgroupÚgrouped_functionsry   rý  rw  rq   r  r�  rã  rþ  rÕ  rñ  r¬   rí  rÿ  s     `             @@@@@@@@@@@@r_   Úgen_per_operator_headersr  m  s+  ÿü€ ô  ?JÌ$Ó>OÐØò 8ˆØ˜rŸ|™|Ñ,×3Ñ3°BÕ7ð8ô
 	”DÓð #ð *ò ;ˆØ�‰ˆØ& tÑ,×3Ñ3°EÕ:ð;ð 2×7Ñ7Ó9ò I
‰ˆˆiØ×"Ñ"Øˆf�FˆOØô
ô	
ð  	×"Ñ"Øˆf�BˆKØõô	
ð, ;×>Ñ>¸tÀRÓHÐð (ö 
àÜ˜"Ô2Ô3¸¿ºò ò 
Ðô
 Ð0Ó1°AÑ5ˆáØ×&Ñ&Ø�&˜Ð Ø&óô
ô 8Ø%6Ø+Ü%)×%MÑ%Mô
ˆð
 	×"Ñ"Øˆf�IÐØõõ		
ðAI
ðVò 
Ñˆ�&ð 	�‰Øˆj˜ˆOõõ		
ð
ð" &ó <ˆØ˜~Ñ-Øà)×/Ñ/Ó1ÐØˆà5×;Ñ;Ó=ò 	‰OˆD�)Ø >× BÑ BÀ4ÈÓ LÐÜÜÜ×,Ñ,Ø'¨Ñ5Ü×5Ñ5Ø Ø!Ø#Ø*.Ø8=ôð &óóˆLô �<Ó  AÒ%Øà×!Ñ! $Ô'Ø×&Ñ&Ø�&˜Ð,Ð-¨[Ð9Ø'ôõð+	ô< ,¨L¸*ÀfÓMˆØ'¨ ~Ð5EÐFˆà
×ÑØˆn˜KÐ(Ø$ôô	
ð 	×ÑØˆn˜OÐ,Ø(ôô	
ò ðy<ð| ‡L�LØó	
õ
ùòe 
s   Ã%J,c                óv  ‡ ‡‡‡— |rt        ‰ |‰|‰||	|
|||¬«       nt        ‰ ||‰|‰||	|||¬«       |j                  dˆ ˆfd„«       |j                  dˆ fd„«       |j                  dˆˆ fd„«       |j                  d	ˆ fd
„«       dˆ fd„}|j                  d|«       dˆfd„}|j                  d|«       y )N)rf   rf  rÁ  rJ  rg   rÝ  rw   r  ri  rÞ  r…  )rf   rf  r¸  rÁ  rJ  rg   rÝ  rw   ri  rÞ  r…  zTensorBody.hc            	     ó¾   •— t        t        t        t        j                  ‰¬«      ‰ «      «      t        t        t        t        j
                  ‰¬«      ‰ «      «      dœS )N)r]  r_  )Útensor_method_declarationsÚtensor_method_definitions)rŒ   rI   r‰  rK   ri  rl  rÊ  s   €€r_   rƒ   zgen_headers.<locals>.<lambda>`  s^   ø€ Ü*.ÜÜ'Ü%×1Ñ1Ø8Kôð %óó+ô *.ÜÜ'Ü%×0Ñ0Ø8Kôð %óó*ñ
€ r`   zRedispatchFunctions.hc                 óB   •— dt        t        t        «       ‰ «      «      iS )NÚfunction_redispatch_definitions)rŒ   rI   r�  ©rf   s   €r_   rƒ   zgen_headers.<locals>.<lambda>x  s#   ø€ Ø-¬tÜÔ2Ó4Ð6FÓGó0ð
€ r`   zRegistrationDeclarations.hc                 óF   •— d‰D � cg c]  } t        | ‰«      ‘Œ c} iS c c} w )NÚregistration_declarations)rA  )r´   rg   rf   s    €€r_   rƒ   zgen_headers.<locals>.<lambda>�  s/   ø€ Ø'à)ö*àô 2°!°_ÕEò*ð
€ ùò*s   ‡zVmapGeneratedPlumbing.hc                 ó   •— t        ‰ «      S rl   r$   r  s   €r_   rƒ   zgen_headers.<locals>.<lambda>Š  s   ø€ Ô+@ÐAQÓ+R€ r`   c            	     óP  •— t        «       } t        «       }‰D ]£  }|j                  t        |j                  j                  j                  «      «       |j                  |j                  j                  j                  j
                  «       | j                  d„ |j                  j                  «       D «       «       Œ¥ |h d£z  }dj                  t        |«      D �cg c]  }d|› d�‘Œ
 c}«      dj                  t        | «      D �cg c]  }d|› d�‘Œ
 c}«      dœS c c}w c c}w )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrl   rÔ  )rn   rÕ   s     r_   rr   zAgen_headers.<locals>.gen_aten_interned_strings.<locals>.<genexpr>–  s   è ø€ ÒP c˜Ÿ�ÑPùr  >   ÚorÚandÚnotÚxorÚbitorÚcomplÚor_eqÚand_eqÚbitandÚnot_eqÚxor_eqz \
z_(aten, r6  z_(attr, )Úaten_symbolsÚattr_symbols)
r§   rª   rË   r~   r¬   rÍ   Úupdater"  rü   rS  )Úattrsr  r~   r¬   rf   s       €r_   Úgen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_strings�  s÷   ø€ Ü›%ˆÜ“ˆØ$ò 	QˆDØ�I‰I”c˜$Ÿ)™)Ÿ.™.×-Ñ-Ó.Ô/ð �I‰I�d—i‘i—n‘n×)Ñ)×.Ñ.Ô/à�L‰LÑP¨T¯Y©Y×-MÑ-MÓ-OÔPÕPð	Qð 	ò 
ñ 	
ˆð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óñ	
ð 	
ùâ>ùò ?s   ÃDÄD#
zaten_interned_strings.hc                 ó<   •— ddj                  t        ‰ «      «      iS )NÚenum_of_valid_tagsz,
)rü   rS  )r–   s   €r_   Úgen_tags_enumz"gen_headers.<locals>.gen_tags_enum³  s   ø€ Ø$ u§z¡z´&¸Ó2DÓ'EÐGÐGr`   z
enum_tag.h)r  údict[str, str])r  rà  rÛ  )rf   r–   rf  r¸  rÁ  rJ  rg   Úcore_fmrÝ  rw   r  ri  rÞ  r…  Úper_operator_headersr(  r+  s   ``  ` `          r_   Úgen_headersr/  /  sà   û€ ñ$ Ü Ø-Ø%=Ø 3ØØ+ØØ!ØØ'Ø)Øö	
ô 	Ø-Ø%=Ø(CØ 3ØØ+ØØ!Ø'Ø)Øõ	
ð ‡M�MØô	
ôð0 ‡L�LØó	
ôð ‡L�LØ$ô	
ôð ‡L�LØ!Ó#Rôõ"
ðH ‡M�MÐ+Ð-FÔGõHð ‡M�M�, Õ.r`   c                ó¢  ‡ ‡‡‡‡‡‡‡‡‡‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-‡.— d}‰rd}|D �]-  Š%t        ‰%||
«      Š'|rd@ˆ#ˆ%ˆ&ˆˆfd„}nd@ˆ%ˆfd„}‰‰%   Š#t        t        «      }‰D ]H  }t        |t        «      r|j
                  n|j                  j
                  }||   j                  |«       ŒJ t        ‰%«      j                  «       Š&‰%t        j                  k7  Š)t        ‰%«      r|nddt        j                  ‰#|‰«       |«       ‰)rt        j                  ‰#«      ng dœ}	 	 	 	 dAˆ#ˆ%ˆ'ˆ)ˆˆˆfd„}‰'j!                  d‰%› d	�d
‰d„ |‰%t        j"                  k(  rdnd|dh¬«       ‰D ]ì  Š(‰(j$                  j&                  rt)        ‰%«      sŒ%‰(j                  j*                  j,                  j,                  Š+‰%t        j"                  u rG‰'|
urt/        d«      ‚‰'j1                  d‰+› d	�dˆˆ%ˆ(fd„«       |	j1                  d‰+› d	�dˆ(ˆ+fd„«       Œ¨‰%t        j2                  u r%dŠ$‰rdŠ$‰'j1                  d‰+› d�dˆˆ$ˆ%ˆ(ˆ+fd„«       Œßt/        d‰%› d�«      ‚ ‹'�Œ0 t5        ||‰ ‰‰|||¬«       dBˆ ˆfd „}|
j7                  d!|«       ‰}|rt9        j:                  «       }t=        ‰ |¬"«      \  Š"Š,|
j7                  d#ˆ"ˆ,ˆfd$„«       	 	 	 	 dCd%„}|
j?                  d&‰ |ˆfd'„d(tA        ‰«      id)h d*£¬+«       |
j7                  d,tB        «       |j7                  d-tB        «       |j7                  d.ˆ fd/„«       	 	 	 	 dDd0„Š*	 	 	 	 dEˆˆ*ˆfd1„}t        ‰«      t        ‰«      z   } tE        d2„ ‰«      D �!ci c]  }!|!j*                  j,                  |!“Œ c}!Š-tE        d3„ ‰«      D �!ci c]  }!|!j*                  j,                  |!“Œ c}!Š.| jG                  ˆ-ˆ.fd4„‰ D «       «       |
j?                  d5| ||dh d6£¬7«       |
j7                  d8ˆˆfd9„«       |
j7                  d:ˆˆfd;„«       |
j7                  d<ˆ*ˆˆfd=„«       |
j7                  d>ˆˆˆfd?„«       y c c}!w c c}!w )FNz‹#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/ATenCUDAGeneral.h>
#include <ATen/cuda/CUDADevice.h>
#include <ATen/cuda/CUDAContext.h>zƒ#include <c10/hip/HIPGuard.h>
#include <ATen/hip/ATenHIPGeneral.h>
#include <ATen/hip/HIPDevice.h>
#include <ATen/hip/HIPContext.h>c                 ó*  •— g } ‰D ]ø  }d}‰j                  |«      rd}net        |t        «      r%t        ˆfd„|j	                  «       D «       «      rd}n0|j
                  r$‰t        j                  t        j                  fv rd}|sŒ�| j                  d|j                  › d�«       ‰t        j                  k(  r| j                  d|j                  › d�«       ‰‰v sŒ×| j                  d|j                  › d‰› d�«       Œú t        t        | «      «      S )	NFTc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrl   )rî   )rn   rß  ró   s     €r_   rr   z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>í  s#   øè ø€ ò EØ9;˜×0Ñ0°×4ñEùs   ƒrö   ú
_native.h>rû  r÷   rø   )rî   r‹   r5   r,  rã  rÆ   r,   ÚMetaré   r’   rú   rS  r§   )Úheadersr­  Úis_registeredró   rq   r�  rÞ  rf  s      €€€€€r_   Úoperator_headersz*gen_source_files.<locals>.operator_headersá  s  ø€ Ø�Ø1ò "�AØ$)�MØ$×/Ñ/°Ô2Ø(,™ô $ AÔ';Ô<Äó EØ?@¿{¹{»}ôEô Bð )-™ð Ÿš¨,Ü#×(Ñ(Ü#×JÑJð;ñ +ð )-˜Ù(Ø à—N‘NÐ%8¸¿¹¸ÀZÐ#PÔQà$Ü&×MÑMòNð  Ÿ™Ð)<¸Q¿[¹[¸MÈÐ'MÔNØ# ~Ò5ØŸ™Ø1°!·+±+°¸aÐ@RÐ?SÐS_Ð`õðA"ôH œc '›lÓ+Ð+r`   c                 óˆ   •— dg} ‰t         j                  k(  r| j                  d«       ‰‰v r| j                  d‰›d�«       | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>r   r  )r,   ré   r’   )r5  rq   rÞ  s    €€r_   r7  z*gen_source_files.<locals>.operator_headers	  sI   ø€ Ø>Ð?�Ø¤;×#UÑ#UÒUØ—N‘NÐ#@ÔAØ >Ñ1Ø—N‘N _°\Ð4DÀLÐ#QÔRØ�r`   rs   )Úextra_cuda_headersÚexternal_backend_headersÚdispatch_headersÚops_headersÚdispatch_helpersc                ó2   •— dt        ‰| g‰‰‰‰d‰‰¬«	      iS )NÚdispatch_definitionsT)	ry   rf  rq   rj  rJ  r…  r/  r‡  rš  )r   )Úgnfró   rq   ry   rš  r…  rJ  r‡  s    €€€€€€€r_   Ú"register_dispatch_key_env_callablez<gen_source_files.<locals>.register_dispatch_key_env_callable6	  s7   ø€ ð 'Ô(GØØ.1¨UØ!-Ø -Ø%ØØØ4SØ)=ô
)ðð r`   ÚRegisterz.cppzRegisterDispatchKey.cppc                ó   — | j                   S rl   ©rú   )Úxs    r_   rƒ   z"gen_source_files.<locals>.<lambda>K	  s
   € ˜QŸ[™[€ r`   rm  rU   r?  )Úkey_fnÚenv_callableÚ
num_shardsÚbase_envÚsharded_keysz,Expected fm to be cpu_fm for DispatchKey.CPUÚ	UfuncCPU_zUfuncCPU.cppc                 óv   •— t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)Úmeta_declarationÚnative_declarationÚnative_definitions)rÈ  r•  r  Úcompute_ufunc_cpu)rg   rq   r­  s   €€€r_   rƒ   z"gen_source_files.<locals>.<lambda>\	  s:   ø€ Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.DÑ.DÀQÓ.Gñ€ r`   ÚUfuncCPUKernel_zUfuncCPUKernel.cppc                 ó4   •— ‰t        j                  ‰ «      dœS )N)r¬   rO  )r•  Úcompute_ufunc_cpu_kernel)r­  r¬   s   €€r_   rƒ   z"gen_source_files.<locals>.<lambda>g	  s   ø€ Ø $Ü.2×.KÑ.KÈAÓ.Nñ€ r`   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>Ú
UfuncCUDA_z.cuzUfuncCUDA.cuc                 óz   •— ‰‰t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)r¬   Úcuda_headersrM  rN  rO  )rÈ  r•  r  Úcompute_ufunc_cuda)rg   rV  rq   r­  r¬   s   €€€€€r_   rƒ   z"gen_source_files.<locals>.<lambda>s	  s@   ø€ Ø $Ø(4Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.EÑ.EÀaÓ.Hñ€ r`   zunrecognized z
 for ufunc)Úaoti_fmÚaoti_backendsrf   rg   r¸  r9  Úupdate_aoti_c_shimÚextend_aoti_c_shimc            
     ó@  •— ‰D � cg c]  } t        | ‰«      sŒ| ‘Œ }} |D � cg c]  } d| j                  › d�‘Œ c} t        t        t	        t
        j                  ‰«      |«      «      t        t        t	        t
        j                  ‰«      |«      «      dœS c c} w c c} w )Nrö   rç  )r<  Ú!backend_select_method_definitionsÚ%backend_select_function_registrations)rÎ  rú   rŒ   rI   rÐ  rK   rl  rØ  )rß  Úrelevant_fnsrf   rJ  s     €€r_   Úgen_backend_selectz,gen_source_files.<locals>.gen_backend_selectŽ	  s¨   ø€ à)ö
ØÔ-AÀ"ÀhÕ-OŠBð
ˆð 
ð
 GSöØ@BÐ% b§l¡l ^°7Ò;òô 26ÜÜ(¬×):Ñ):¸HÓEÀ|óó2ô
 6:ÜÜ(¬×)<Ñ)<¸hÓGÈóó6ñ
ð 	
ùò
ùòs   †B˜B¢BzRegisterBackendSelect.cpp)rf   r©  zRegisterSchema.cppc                 ó"   •— ‰rg n‰ ‰rg dœS ‰dœS )N)r­  r¬  rm   )r­  r¬  r‡  s   €€€r_   rƒ   z"gen_source_files.<locals>.<lambda>°	  s)   ø€ á.ñ *,à*á.ð %'ñ	
€ ð &ñ
€ r`   c                ó   — | j                   S rl   rD  )rß  s    r_   Úkey_funcz"gen_source_files.<locals>.key_funcº	  s   € ð �|‰|Ðr`   zOperators.cppc                ól   •— d| j                   › d�g t        t        j                  ‰¬«      | «      gdœS )Nrö   rû  r»  )r7  r›  )rú   r[  rK   rl  ræ  s    €r_   rƒ   z"gen_source_files.<locals>.<lambda>Ã	  sE   ø€ Ø#6°r·|±|°nÀCÐ!HÐ IðÔ Ü×%Ñ%Ø4Gôð óðñ!
€ r`   r  é   >   r›  r7  r  )rF  rG  rI  rH  rJ  zFunctions.cppzTensorMethods.cppzATenOpList.cppc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚaten_ops)rŒ   rI   r”  r  s   €r_   rƒ   z"gen_source_files.<locals>.<lambda>ß	  s   ø€ ØœœX¤oÐ7GÓHÓIð
€ r`   c                óP  — t        | t        «      ryd| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S t        | t
        «      rîd| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S d| j                  › d�d| j                  › d�gS )Nrö   r3  rç  )
r‹   r6   rL  rú   rM  r5   r5  r¤  rÌ   ró  )r­  r5  s     r_   Úgen_op_headersz(gen_source_files.<locals>.gen_op_headersä	  sÅ  € ô �aÔ1Ô2ð & a§f¡f×&6Ñ&6Ð%7°zÐBØ% a§f¡f×&6Ñ&6Ð%7°wÐ?ðˆGð �{‰{Ð&ØØ)¨!¯+©+×*?Ñ*?Ð)@À
ÐKØ)¨!¯+©+×*?Ñ*?Ð)@ÀÐHðñ �ð ˆNÜ˜Ô/Ô0à% a§l¡l×&<Ñ&<Ð%=¸ZÐHØ% a§l¡l×&<Ñ&<Ð%=¸WÐEØ% a§e¡e§o¡oÐ%6°jÐAØ% a§e¡e§o¡oÐ%6°gÐ>ð	ˆGð �y‰yÐ$ØØ)¨!¯)©)×*=Ñ*=Ð)>¸jÐIØ)¨!¯)©)×*=Ñ*=Ð)>¸gÐFðñ �ð �y‰yÐ$ØØ)¨!¯)©)×*=Ñ*=Ð)>¸jÐIØ)¨!¯)©)×*=Ñ*=Ð)>¸gÐFðñ �ð ˆNð & a§k¡k ]°*Ð=Ø% a§k¡k ]°'Ð:ðð r`   c                óh   •—  ‰| «      t        ‰| «      t        ‰| ‰t        j                     «      dœS )N)r<  Úfunc_definitionsÚfunc_registrations)r   r   r,   ræ   )r­  rg   ri  rJ  s    €€€r_   Úfunctionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable
  sD   ø€ ñ *¨!Ó,Ü @ØØó!ô #EØØØ¤× EÑ EÑFó#ñ
ð 	
r`   c                ó4   — t        | j                  «       «      S rl   ©rŒ   rã  ©r­  s    r_   rƒ   z"gen_source_files.<locals>.<lambda>'
  s   € ¤T¨!¯+©+«-Ó%8€ r`   c                ó4   — t        | j                  «       «      S rl   ro  rp  s    r_   rƒ   z"gen_source_files.<locals>.<lambda>*
  s   € ´D¸¿¹»Ó4G€ r`   c              3  ó‚   •K  — | ]6  }|j                   j                  ‰vr|j                   j                  ‰vr|–— Œ8 y ­wrl   )r~   r¬   )rn   r´   Ústructured_mapÚview_maps     €€r_   rr   z#gen_source_files.<locals>.<genexpr>,
  s8   øè ø€ ò àØ�6‰6�;‰;˜nÑ,°·±·±ÀHÑ1Lô 	
ñùs   ƒ<?zRegisterFunctionalization.cpp>   r<  rk  rl  Úfunc_add_back_views_definitionsÚ!func_add_back_views_registrations)rF  rG  rH  rJ  zFunctionalInverses.hc                 ó8   •— dt        t        ˆ fd„‰«      «      iS )NÚview_inverse_declarationsc                ó   •— t        ‰| «      S rl   )r    ©r­  rJ  s    €r_   rƒ   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>F
  s   ø€ ÔLØ  !ó€ r`   )rŒ   rI   ©rJ  Úview_groupss   €€r_   rƒ   z"gen_source_files.<locals>.<lambda>C
  s&   ø€ Ø'¬Üóð  ó	ó*ð	
€ r`   zViewMetaClasses.hc                 ó8   •— dt        t        ˆ fd„‰«      «      iS )NÚview_meta_declarationsc                ó   •— t        ‰| «      S rl   )r!   rz  s    €r_   rƒ   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>T
  ó   ø€ ÔJÈ8ÐUVÓW€ r`   ©rŒ   rE   r{  s   €€r_   rƒ   z"gen_source_files.<locals>.<lambda>Q
  s"   ø€ Ø$¤dÜÛWØóó'ð
€ r`   zViewMetaClasses.cppc                 ó`   •— t        t        ˆfd„‰«      «      t        t        ‰ ‰«      «      dœS )Nc                ó   •— t        ‰| «      S rl   )r"   rz  s    €r_   rƒ   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>`
  r€  r`   )Úview_meta_implementationsÚ
op_headersr�  )ri  rJ  r|  s   €€€r_   rƒ   z"gen_source_files.<locals>.<lambda>]
  s1   ø€ Ü)-ÜÛWØóó*ô œy¨¸ÓEÓFñ
€ r`   zCompositeViewCopyKernels.cppc            
     ó  •— ‰D � cg c]I  } dj                  d„ | j                  €| j                  gn| j                  | j                  gD «       «      ‘ŒK c} ‰D � cg c];  } dj                  d„ | j                  | j                  | j
                  fD «       «      ‘Œ= c} z   t        t        t        ‰t        j                     «      ‰«      «      t        t        t        ‰«      «      t        t        t        ‰«      «      dœS c c} w c c} w )NrÞ   c              3  óV   K  — | ]!  }d |j                   › d|j                   › d�–— Œ# y­w)rö   ú_ops.h>
#include <ATen/ops/r3  NrD  r^  s     r_   rr   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr>|
  s:   è ø€ ò 	ð ð *¨!¯+©+¨ð 7*ð +,¯+©+¨°jô	Bñ	ùs   ‚')c              3  óv   K  — | ]1  }|�-d|j                   vrd|j                  › d|j                  › d�–— Œ3 y ­w)Nr]  rö   rˆ  r3  )r¥   rú   r^  s     r_   rr   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr>‰
  sH   è ø€ ò ð Ø�}¨¸A¿F¹FÑ)Bð	 *¨!¯+©+¨ð 7*à*+¯+©+¨°jôBñùs   ‚79)r<  Ú#CompositeViewCopyKernel_DefinitionsÚ(GeneratedCompositeFunctional_DefinitionsÚ!GeneratedCompositeOut_Definitions)rü   rM  rL  rÌ   ró  r5  rŒ   rI   r#   r,   ré   rA   rB   )r­  rg   r¸  r|  s    €€€r_   rƒ   z"gen_source_files.<locals>.<lambda>z
  s  ø€ ð %öð ð —	‘	ñ 	ð %&§K¡KÐ$7˜Ÿ™™¸a¿f¹fÀaÇkÁkÐ=Rô	õ 	òð* 5ö	ð ð —	‘	ñ ð  Ÿi™i¨¯©°A·L±LÐAô	õ ò	ñô. 48ÜÜ.Ø'Ü'×NÑNñóð
  óó	4ô 9=ÜÜ3Ø/óó9ô 26ÜÜ,Ø/óó2ñQ.
€ ùòùò	s   †AC?ÁA D)r  ú	list[str])r@  ú%NativeFunction | NativeFunctionsGroupr  údict[str, list[str]])r  r�  )rß  ú@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroupr  rË   )r­  r�  r  r�  )r­  r�  r  r�  )$rz   r   rŒ   r‹   r4   rø  r5  r’   rË   rû   r,   rç   r/   r•  Úgen_registration_headersÚgen_registration_helpersÚwrite_sharded_with_templateÚCPUr¤  Úufunc_inner_loopr1   r~   r¬   r�   rÜ  ÚCUDAr   rÛ  rD   rE  r²  Úwrite_shardedr  r�   rE   rQ  )/rf   rf  r¸  r|  rJ  rÁ  rg   rX  r-  Ú
cpu_vec_fmrÝ  rw   ri  rÞ  r…  Úforce_schema_registrationr.  r‡  rZ  rY  r[  r9  r7  Úns_grouped_native_functionsÚgrouped_native_functionrø  Úregister_dispatch_key_base_envrA  r`  r©  rc  rm  Ú
all_groupsr´   r­  ró   rV  rq   r�  ry   r­  rš  ri  r¬   r¬  rs  rt  s/   ```````      ``  `                @@@@@@@@@@@@@r_   Úgen_source_filesrž  ¹  s÷  ÿÿþ€ ð0&Ðñ
 ð$Ðð &ó cˆÜ+¨L¸*ÀfÓMˆÙ÷&,ò &,öTð (¨Ñ5ˆÜ&1´$Ó&7Ð#Ø'?ò 	SÐ#ô Ð5´~ÔFð (×1Ò1à,×7Ñ7×AÑAð ð
 (¨	Ñ2×9Ñ9Ð:QÕRð	Sô ! Ó.×4Ñ4Ó6Ðð
 œK×MÑMÑMð 	ô $ LÔ1ñ #5àØ(*Ü $× =Ñ =ØÐ3°Tó!ñ ,Ó-ñ (ô ×-Ñ-¨mÔ<àñ*
Ð&ð"	Ø6ð	à!÷	ó 	ð" 	×&Ñ&Ø�|�n DÐ)Ø%Ø$Ù(Ø;Ø(¬K¯O©OÒ;‘qÀØ3Ø0Ð1ð 	'ô 		
ð -ò ,	OˆAØ—5‘5×)Ò)Ô1FÀ|Ô1TØØ—<‘<×$Ñ$×)Ñ)×.Ñ.ˆDØœ{Ÿ™Ñ.Ø˜VÑ#Ü(Ð)WÓXÐXØ×&Ñ&Ø ˜v TÐ*Ø"õô
ð ×.Ñ.Ø% d V¨4Ð0Ø(ôõð ¤×!1Ñ!1Ñ1ØF�ÙØ#I�LØ×&Ñ&Ø    cÐ*Ø"÷õô % }°\°NÀ*Ð%MÓNÐNðY,	Oò\ ðGcôJ ØØ#Ø)Ø'Ø$?Ø-Ø-Ø-õ	ö
ð( ‡L�LÐ,Ð.@ÔAà€OÙ Ü*×;Ñ;Ó=ˆô
 	1Ø)¸?ô	ñØ!Øð ‡L�LØõ	
ô
ðØLðà	óð
 ×ÑØØØó
ð ,Ô-JØ#ó.ð
ð
 ò
ð' ô ð4 ‡L�L�¤$Ô'à‡M�MÐ%¤tÔ,à‡M�MØó	
ôð%ØKð%à	ó%ðN
ØKð
à	÷
ô$ 	Ð(Ó)¬DØó-ñ 	ð ô Ñ8Ð:UÓVö:àð 	
�‰�‰�Q‰ò:€Nô
 !*Ñ*GÈÓ Uö4Øˆ�‰�‰�Q‰ò4€Hð ×Ñô à!ôô ð ×ÑØ'ØØØ3Øò
ð ô ð ‡L�LØô		
ôð ‡L�LØô	
ô
ð ‡L�LØõ	
ôð: ‡L�LØ&õ.	
õ1ùòg:ùò4s   Í'QÎQc                ó0   ‡— | j                  dˆfd„«       y )NzDeclarations.yamlc                 óR   •— t        ‰D � cg c]  } t        | «      ‘Œ c} «      S c c} w rl   )rê  r2  )r´   rf   s    €r_   rƒ   z'gen_declarations_yaml.<locals>.<lambda>±
  s!   ø€ ”ÐBRÖS¸QÔ5°aÕ8ÒSÓT€ ùÒSs   ‹$)rÛ  )rÝ  rf   s    `r_   Úgen_declarations_yamlr¡  ¬
  s   ø€ ð ‡L�LØÛTõr`   c                 óP   — t        t        «      j                  j                  «       S )z
    If you're depending on torchgen out-of-tree, you can use the root to figure
    out the path to native_functions.yaml
    )r	   Ú__file__ÚparentÚresolverm   r`   r_   Úget_torchgen_rootr¦  µ
  s   € ô
 ”‹>× Ñ ×(Ñ(Ó*Ð*r`   c                 óÀ  — t        j                  d¬«      } | j                  dddd¬«       | j                  dd	d
¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddddd¬«       | j                  dddd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd ¬«       | j                  d!dd"¬«       | j                  d#d$d%d&¬'«       | j                  d(d)d*¬«       | j                  d+d,d%d-¬'«       | j                  d.d/d%d0¬'«       | j                  d1d2dd3¬«       | j                  d4d5dd6¬«       | j                  d7t        d%g d8¢g d8¢d9¬:«       | j                  d;dd<¬«       | j                  d=dd>¬«       | j	                  «       }t        |j                  |j                  «      }t        j                  j                  |j                  d?«      }t        j                  j                  |j                  d@«      }dAdBlm} t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  h}t        j                  t        j                   d h}t/        «       }t        j0                  t        j2                  t        j4                  h}	|j6                  s|j8                  r1|j;                  |	«       |j=                  t        j0                  «       n)|j;                  |	«       |D �
cg c]	  }
|
|	vsŒ|
‘Œ c}
|d d  |j>                  s|j8                  r?|j=                  t        j@                  «       |j=                  t        j@                  «       nQ|j=                  t        j@                  «       t        j@                  |v r ||jC                  t        j@                  «      = |jD                  sQ|j=                  t        j,                  «       t        j,                  |v r ||jC                  t        j,                  «      = |jF                  r1|D �
cg c]&  }
tI        |
«      st        |
«      |jF                  v r|
‘Œ( }}
tK        |||«      }tL        |   }|jN                  |jP                  }}tS        |«      }|D �cg c]  }tU        |tV        «      sŒ|‘Œ }}tY        |«      }|D �cg c]  }tU        |tZ        «      r|‘Œ }}|j\                  › dC�}t_        |«      ja                  dDdD¬E«       |j\                  › dF�}t_        |«      ja                  dDdD¬E«       |jb                  › }t_        |«      ja                  dDdD¬E«       te        ||¬G«      }te        |¬H«      }te        |¬H«      }te        |¬H«      }te        ||¬G«      }te        ||¬G«      }dI|i}|j>                  rte        |¬H«      |dJ<   g }|jf                  rk|jf                  D �cg c]  }|t        jh                  |«         ‘Œ }}|jf                  D ]-  }t        jh                  |«      } | |vsŒ|j=                  | «       Œ/ dK|jj                  v r„tm        dji dL|“dM|“dN|“dO|“dP|“dQ|“dR|“dS|“dT|“dU|“dV|“dW|“dX|“dY|“dZ|jn                  “d[|jp                  “d\|jr                  “d]|jt                  “d^|j8                  “d_|“d`|jv                  “Ž da|jj                  v r.ty        ||||||||||||||jn                  |jr                  ¬b«       dc|jj                  v rt{        ||¬d«       |j|                  r­t_        |j|                  «      j                  «       }!|!j€                  }"|!j‚                  }#|def|dff|dgf|dhfg|j…                  «       D �$�%cg c]  \  }$}%|%|$› di�f‘Œ c}%}$z   D ]7  \  }&}'|'|#z   }(|!j†                  |'|"z   z  })|&j‰                  |(t        |)«      «       Œ9 y y c c}
w c c}
w c c}w c c}w c c}w c c}%}$w )kNzGenerate ATen source files)Údescriptionz-sz--source-pathz!path to source directory for ATenzaten/src/ATen)Úhelpr  z-oz--output-dependenciesz:output a list of dependencies into the given file and exit)r©  z	--dry-runÚ
store_truez5run without writing any files (still updates outputs))Úactionr©  z--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz--install-dirz--install_dirzoutput directoryzbuild/aten/src/ATenz--aoti-install-dirz--aoti_install_dirz%output directory for AOTInductor shimz(torch/csrc/inductor/aoti_torch/generatedz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--xpuz'Generate XPU registration code when setz--mtiaz(Generate MTIA registration code when setz--op-registration-whitelistz--op_registration_whitelistÚ*z–filter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)Únargsr©  z--op-selection-yaml-pathz--op_selection_yaml_pathaD  Provide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz
--generate)r5  ÚsourcesÚdeclarations_yamlzGenerate only a subset of files)rŽ   r­  Úchoicesr  r©  z--update-aoti-c-shimz­Update AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. WARNING: Do not use this unless you are sure what you are doing!!!z--extend-aoti-c-shima…  This Flag indicates the generation of c shims for out-of-tree ATen ops,which is an extension to the In-tree ATen op c shims. This flag needs to be combined with---source-path=<out-of-tree native_functions.yaml>--aoti-install-dir=<in-tree aoti_install_dir>/extend   default is torch/csrc/inductor/aoti_torch/generated/extendWARNING: Do not use this unless you are sure what you are doing!!!znative/native_functions.yamlznative/tags.yamlr   )ri  z/coreT)ÚparentsÚexist_okz/ops)ÚoptionsÚinstall_dir)r³  ÚcudaÚxpur®  rf   rf  r¸  r|  rJ  rÁ  rg   rX  r-  r˜  rÝ  rw   ri  rÞ  r…  r™  r.  r‡  rZ  rY  r[  r5  )rf   r–   rf  r¸  rÁ  rJ  rg   r-  rÝ  rw   r  ri  rÞ  r…  r.  r¯  )rf   rÝ  rs   Úcpu_vec_Úcore_Úops_r÷   rm   )EÚargparseÚArgumentParserÚadd_argumentrË   Ú
parse_argsrI  Úop_registration_whitelistrG  Úosr˜   rü   Úsource_pathÚtorchgen.modelri  r,   r”  r–  ræ   rç   rè   ré   r4  ÚMTIAr§   ÚMPSÚ	SparseMPSÚSparseCsrMPSÚmpsrZ  r&  rª   r¶  ÚXPUr‰   ÚmtiaÚbackend_whitelistr0   r¹   ri   rf   rg   rc  r‹   r5   rY  r6   r´  r	   ÚmkdirÚaoti_install_dirrH   Ústatic_dispatch_backendÚparseÚgeneraterž  r…  r™  r.  r‡  r[  r/  r¡  Úoutput_dependenciesr¥  r¬   Ústemrv   r¤  Úwrite_outputs)*Úparserr³  rJ  Únative_yaml_pathr¸   ri  rÞ  rY  r—   ÚMPS_KEYSrŸ   Úparsed_yamlr–   rf   rg   rf  r­  r¸  Ú!native_functions_with_view_groupsr|  Úcore_install_dirÚops_install_dirrË  r-  rÝ  r˜  Úcuda_fmr  rX  rw   rÁ  ÚkeyÚdp_keyÚdepfile_pathÚdepfile_nameÚdepfile_stemrp   Ú	device_fmry   r‹  Úvarnamer˜   s*                                             r_   Úmainrá  ½
  s5	  € Ü×$Ñ$Ð1MÔN€FØ
×ÑØØØ0Øð	 ô ð ×ÑØØØIð ô ð
 ×ÑØØØDð ô ð
 ×ÑØ ØØAð ô ð
 ×ÑØØØØØ%ð ô ð ×ÑØØØ4Ø:ð	 ô ð ×ÑØØØLð ô ð
 ×ÑØØØ6ð ô ð
 ×ÑØØØ6ð ô ð
 ×ÑØØØ7ð ô ð ×ÑØ%Ø%Øð-ð	 ô ð ×ÑØ"Ø"ðMð ô ð ×ÑØØØð*ð	 ô ð ×ÑØ#Ø#ØØNð	 ô ð ×ÑØ+Ø+ØØ?ð	 ô ð ×ÑØ%Ø%ØðCð	 ô ð ×ÑØÜØÚ;Ú;Ø.ð ô ð ×ÑØØðMð ô ð ×ÑØØðMð ô 	ð ×ÑÓ!€Gä(Ø×)Ñ)Ø×&Ñ&ó€Hô
 —w‘w—|‘| G×$7Ñ$7Ð9WÓXÐÜ—W‘W—\‘\ '×"5Ñ"5Ð7IÓJ€Nå,ô
 	�‰Ü×ÑÜ×-Ñ-Ü×9Ñ9Ü×-Ñ-Ü×:Ñ:Ü×ÑÜ×Ñð	€Nô 	�‰Ü×Ñð 	ð€Mô “%€Kä—‘¤×!6Ñ!6¼×8PÑ8PÐQ€HØ‡{‚{�g×0Ò0Ø×Ñ˜hÔ'Ø×Ñœ+Ÿ/™/Õ*à×Ñ˜8Ô$Ø'4ÖJ !¸ÀÒ8IšAÒJˆ‘aÐà‡{‚{�g×0Ò0Ø×Ñœ;Ÿ?™?Ô+Ø×Ñœ+Ÿ/™/Õ*à�‰œŸ™Ô(ä�?‰?˜mÑ+Ø˜m×1Ñ1´+·/±/ÓBÐCà�<Š<Ø�‰œ×(Ñ(Ô)ä×Ñ˜}Ñ,Ø˜m×1Ñ1´+×2BÑ2BÓCÐDà× Ò ð #ö
àÜ& qÔ)¬S°«V°w×7PÑ7PÑ-Pò ð
ˆð 
ô $Ð$4°nÀkÓR€KÜ.¨~Ñ>€Jà×$Ñ$Ø×#Ñ#ð &Ðô
  <Ð<LÓMÐð ,ö#Ø¬z¸!Ô=QÕ/RŠð#Ðð #ô )MØó)Ð%ð
 3öàÜ�aÔ1Ô2ò 	
ð€Kð ð  "×-Ñ-Ð.¨eÐ4ÐÜÐ	Ó× Ñ ¨¸Ð Ô=Ø ×,Ñ,Ð-¨TÐ2€OÜˆÓ×Ñ¨°tÐÔ<à!×2Ñ2Ð3ÐÜÐ	Ó× Ñ ¨¸Ð Ô=ä¨Ð=MÔN€GÜ wÔ/€FÜ"¨7Ô3€JÜ¨Ô0€GÜ w¸OÔL€FÜ¨Ð=MÔN€GØ˜'Ð"€JØ‡{‚{Ü-°gÔ>ˆ
�5Ñà.0ÐØ×&Ò&ð ×6Ñ6ö
àð œK×-Ñ-¨cÓ2Ó3ð
Ðð 
ð ×2Ñ2ò 	+ˆCÜ ×&Ñ& sÓ+ˆFØ˜^Ò+Ø×"Ñ" 6Õ*ð	+ð
 �G×$Ñ$Ñ$Üò 	
Ù-ð	
á%=ð	
ñ )Dð	
ñ $ð		
ñ
 ð	
ñ !4ð	
ñ ,ð	
ñ ð	
ñ ð	
ñ "ð	
ñ ð	
ñ "ð	
ñ (ð	
ñ *ð	
ð —’ð	
ð  '.×&GÒ&Gð!	
ð" ")×!=Ò!=ð#	
ð$ -4×,SÒ,Sð%	
ð&  '×9Ò9ð'	
ñ( (ð)	
ð*  '×9Ò9ñ+	
ð0 �G×$Ñ$Ñ$ÜØ-Ø!Ø%=Ø(CØ 3ØØ+ØØØ!ØØ'Ø)Ø—‘Ø!(×!=Ñ!=õ	
ð$ ˜g×.Ñ.Ñ.ÜÐ/?ÈÕOà×"Ò"Ü˜G×7Ñ7Ó8×@Ñ@ÓBˆØ#×(Ñ(ˆØ#×(Ñ(ˆð �RˆLØ˜Ð$Ø�gÐØ�VÐð	
ð
 AK×@PÑ@PÓ@R×SÑ+<¨6°9ˆi˜F˜8 1˜Ò&ÓSñTò 	1‰JˆB�ð ˜|Ñ+ˆGØ×&Ñ&¨&°<Ñ*?Ñ@ˆDØ×Ñ˜W¤c¨$£iÕ0ñ	1ð #ùòG Kùò$
ùò#ùòùòH
ùóD Ts0   Í#	aÍ-aÒ+aÓ6aÔaÔ!aÙaß.aÚ__main__)rq   r,   rw   údict[str, FileManager]rx   rG   r  rG   )Nú<stdin>F)r•   Úobjectr–   úset[str]r—   úset[DispatchKey] | Noner˜   rË   r™   r  r  re   )rä  )r•   rå  r˜   rË   r  ræ  )r˜   rË   r  ræ  rl   )r˜   rË   r¸   rË   r—   rç  r™   r  r¶   zobject | Noner  re   )r�   úSequence[NativeFunction]r  ÚNone)rã   rË   r  rË   )rê   r^  r  zlist[DispatchKey])r´   r4   ró   r'   r  zDispatchKey | None)r´   r4   ró   r^  r  rX  )rê   r^  r  r�  )r  ú"CppSignature | DispatcherSignaturer  r   r  rË   )r  rê  r´   r4   ró   r'   r  rË   )r  rê  r´   r4   rg   r^  r  rË   rs  )r­  r5   r  rX  )r´   r4   rJ  rD   r  r  )rß  rå  r  rË   )rã   rË   r  rå  )rö  r=   r  rË   )r€  zset[Variant]r  r�  )r´   r4   r  z+tuple[list[dict[str, str]], dict[str, str]])r  r   r  r  r  ræ  r  ræ  r  r,  r  rå  )r  r&   r  r  r  ræ  r  ræ  r  r,  r  rå  )r´   r4   r  rå  )r´   r4   r  r  )r´   r4   rg   údict[DispatchKey, BackendIndex]r  rË   )rF  zlist[str] | NonerG  rX  r  rD   )rf   rè  r  z3Sequence[NativeFunction | NativeFunctionsViewGroup])rf   rè  r  ra  )rf  ra  rg   rë  rd  úJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]r  r�  )rg  r�  r  r�  )rf  ra  rg   rë  rd  rì  r  r�  )r´   rŽ  rj  r'   r  rË   )ry   rG   rf  ra  rq   r,   rj  r'   rJ  rD   r…  r  r/  r  r‡  r  rš  r  r  r�  )rf  ra  rq   r,   rj  r'   rJ  rD   r…  r  r/  r  r  r�  )rf   rè  r©  rD   r  ztuple[list[str], str])rf   rè  rf  ra  r¸  úSequence[NativeFunctionsGroup]rÁ  r^  rJ  rD   rg   rë  rÝ  rG   rw   rã  rÞ  úset[DispatchKey]ri  úSequence[DispatchKey]r…  r  r  ré  )rf   rè  rf  ra  rÁ  r^  rJ  rD   rg   rë  rÝ  rG   rw   rã  r  rG   rÞ  rî  ri  rï  r…  r  r  ré  ) rf   rè  r–   ræ  rf  ra  r¸  rí  rÁ  r^  rJ  rD   rg   rë  r-  rG   rÝ  rG   rw   rã  r  rG   ri  rï  rÞ  rî  r…  r  r.  r  r  ré  ),rf   rè  rf  ra  r¸  rí  r|  z"Sequence[NativeFunctionsViewGroup]rJ  rD   rÁ  r^  rg   rë  rX  rG   r-  rG   r˜  rG   rÝ  rG   rw   rã  ri  rï  rÞ  rî  r…  r  r™  r  r.  r  r‡  r  rZ  r  rY  zset[DispatchKey | None]r[  r  r  ré  )rÝ  rG   rf   rè  r  ré  )r  r	   )r  ré  )¬Ú
__future__r   rº  Ú	functoolsr>  rÇ   r¿  Úcollectionsr   r   r   Údataclassesr   r   Úpathlibr	   Útypingr
   r   r   r   Útyping_extensionsr   r²   Útorchgen.api.dispatcherÚapir<  Útorchgen.api.metar¥  Útorchgen.api.nativerÖ  Útorchgen.api.structuredrÆ   Útorchgen.destr•  Útorchgen.apir   Útorchgen.api.translater   Útorchgen.api.typesr   r   r   r   r   r   r   Útorchgen.contextr   r   r   r   Útorchgen.gen_aoti_c_shimr   r   Ú#torchgen.gen_functionalization_typer   r   r    r!   r"   r#   Útorchgen.gen_vmap_plumbingr%   rÁ  r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   Ú#torchgen.native_function_generationr@   rA   rB   rC   Ú!torchgen.selective_build.selectorrD   Útorchgen.utilsrE   rF   rG   rH   rI   rJ   rK   Útorchgen.yaml_utilsrL   rM   Úcollections.abcrN   rO   rP   rR   re   rh   rY  ri   rz   r¡   r­   Úcacherµ   r¹   r”   rä   rì   rô   rþ   r  r  r)  r4  rF  rI  r[  rv  r‰  r�  r”  rÈ  rÎ  rÐ  rê  rï  rô  rú  r  r  r  r2  r6  rA  rI  rY  rc  r  rk  r|  r  r‚  r   r¤  r²  rà  r  r/  rž  r¡  r¦  rá  ra   rm   r`   r_   ú<module>r
     s“	  ðÞ "ã Û Û Û Û 	ß <Ñ <ß (Ý ß 7Ó 7Ý *ã ç ,Ð ,ß  Ð  ß $Ð $ß ,Ð ,Ý Ý Ý ,÷÷ ñ ÷ó ÷÷÷ õ =÷÷ ÷ ÷ ÷ ÷ ÷ ÷8ó õ ?÷÷ ñ ÷ 7ñ ß2ñ ˆCƒL€ôB�ô ñ ˜Ð'9Ð;LÐ&MÓN€
ð :<Ð Ð!6Ó ;Ø57Ð Ð2Ó 7ðØðà&ðð ðð ó	ð, ,0ØØ %ð1#Øð1#àð1#ð )ð1#ð ð	1#ð
 ð1#ð ó1#ôhð( ‡�ò/ó ð/ð ,0ð1ð
 !&Ø!%ñ1Ø
ð1àð1ð )ð1ð
 ð1ð ð1ð ó1ó@=ó@
ó4	
ðØðØ&2ðàóð(ØðØ&8ðàóó ð ,Ø	+ð ,àð ,ð 	ó ,ðFRØ	+ðRàðRð  ðRð 	ó	Rð$KØ	+ðKàðKð (ðKð 	ó	Kð<FØ	+ðFàðFð (ðFð 	ó	FñX �$Ô÷`ð `ó ð`ñ0 �$Ô÷W&ð W&ó ðW&ñx �$Ô÷*ð *ó ð*ñ^ �$Ô÷)ð )ó ð)ñ^ �$Ô÷ð ó ðð< òMó ðMó
yóx3ñ �$Ô÷@&ð @&ó ð@&óTSó&ó0
óð?'Øð?'à0ó?'ðF
Øð
ð ð
ð ð	
ð
 ð
ð 'ð
ð ó
ð@!Øð!ð ð!ð ð	!ð
 ð!ð 'ð!ð ó!ðH òUó ðUórð "ðØðØ(Gðàòó "ðð@Ø(8ðà&ðð óð>0OØ.ð0Oà8ó0OðfØ.ðà4óð@ 	×0Ò0ñàMðð 5ððð	ð óð>à,ðð óð@ 	×0Ò0ñàMðð 5ððð	ð óð4Ø
/ðØ>Jðàóð(_àð_ð Nð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð &*ð_ð ð_ð ó_ðH,àMð,ð ð,ð ð	,ð
 ð,ð ð,ð ð,ð ó,ð`!=à.ð!=ð &ð!=ð ó	!=ðHvà.ðvð Nðvð "@ð	vð
 ,ðvð ðvð 5ðvð ðvð 'ðvð %ðvð )ðvð ðvð 
óvðrà.ðð Nðð ,ð	ð
 ðð 5ðð ðð 'ðð ðð %ðð )ðð ðð 
óðDG/à.ðG/ð ðG/ð Nð	G/ð
 "@ðG/ð ,ðG/ð ðG/ð 5ðG/ð ðG/ð ðG/ð 'ðG/ð ðG/ð )ðG/ð %ðG/ð ðG/ð  ð!G/ð" 
ó#G/ðTpà.ðpð Nðpð "@ð	pð
 4ðpð ðpð ,ðpð 5ðpð ðpð ðpð ðpð ðpð 'ðpð )ðpð %ðpð  ð!pð"  $ð#pð$ ð%pð& &*ð'pð( ð)pð* +ð+pð, ð-pð. 
ó/pðfØðØ+Cðà	óó+óz1ðz	 ˆzÒÙ…Fð r`   