§
    �Štj•È ã                  óB  — 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Äd3„ZwdÅdÆd4„Zxejy        dÇd5„¦   «         Zz	 dÈd(dd6œdÉd:„Z{dÊd>„Z|dËd@„Z}dÌdD„Z~dÍdJ„ZdÎdL„Z€dÏdN„Z�dÐdS„Z‚dÑdT„ZƒdÒdU„Z„dÒdV„Z… edW¬X¦  «         G dY„ dZ¦  «        ¦   «         Z† edW¬X¦  «         G d[„ d\¦  «        ¦   «         Z‡ edW¬X¦  «         G d]„ d^¦  «        ¦   «         Zˆ edW¬X¦  «         G d_„ d`¦  «        ¦   «         Z‰ edW¬X¦  «         G da„ db¦  «        ¦   «         ZŠe2dÓdc„¦   «         Z‹dÔdf„ZŒdÕdi„Z� edW¬X¦  «         G dj„ dk¦  «        ¦   «         ZŽdÖdm„Z�d×dn„Z�dØdq„Z‘dÙdt„Z’dÚdv„Z“dÛd~„Z”dÜd�„Z•e2dÝd‚„¦   «         Z–dÞdƒ„Z—e3dßd…„¦   «         Z˜dàd‰„Z™dád‹„Zšdâd�„Z›e"jœ        dŽœdãd“„Z�däd•„Zže"jœ        dŽœdåd–„ZŸdæd™„Z dçdŸ„Z¡dèd „Z¢déd£„Z£dêd¬„Z¤dëd®„Z¥dìd²„Z¦díd¼„Z§dîd½„Z¨dïd¿„Z©dðdÀ„Zªe«dÁk    r eª¦   «          dS dS )ñé    )Ú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 )Ú
LineLoaderFc                ór   •— t          ¦   «                              ||¬¦  «        }|j        j        dz   |d<   |S )N)Údeepé   Ú__line__)ÚsuperÚconstruct_mappingÚ
start_markÚline)ÚselfÚnoderT   ÚmappingÚ	__class__s       €úJ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/gen.pyrX   zLineLoader.construct_mappingˆ   s8   ø€ Ý‘'”'×+Ò+¨D°tÐ+Ñ<Ô<ˆà"œoÔ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_CACHEÚdispatch_keyr,   Ú
device_fmsúdict[str, FileManager]Ú
default_fmrG   Úreturnc                óŠ   ‡ — |                      t          ˆ fd„t          j        ¦   «         D ¦   «         d¦  «        |¦  «        }|S )Nc              3  ó8   •K  — | ]\  }} |‰¦  «        ¯|V — Œd S ©N© )Ú.0ÚcheckÚdevicerj   s      €r_   ú	<genexpr>z1file_manager_from_dispatch_key.<locals>.<genexpr>ž   sK   øè è € ð ð á!�E˜6Ø�5˜Ñ&Ô&ðØðð ð ð ð ð r`   Ú )ÚgetÚnextr+   Úitems)rj   rk   rm   Úfms   `   r_   Úfile_manager_from_dispatch_keyr|   —   se   ø€ ð
 
�ŠÝðð ð ð å%8Ô%>Ñ%@Ô%@ðñ ô ð
 ñ	
ô 	
ð 	ñ

ô 

€Bð €Ir`   ú<stdin>FÚesÚobjectÚ
valid_tagsúset[str]Úignore_keysúset[DispatchKey] | NoneÚpathÚstrÚskip_native_fns_genÚboolc           	     óâ  ‡‡— t          | t          ¦  «        st          dt          | ¦  «        › �¦  «        ‚g }t	          t
          ¦  «        }| D �]}t          |t
          ¦  «        st          d|› �¦  «        ‚t          |                     d¦  «        t          ¦  «        st          d|› �¦  «        ‚t          ||d         ¦  «        Š|                     d¦  «        Š‰€t          d|› �¦  «        ‚t          ˆˆfd„¦  «        5  t          j        |‰||¦  «        \  }}	|                     |¦  «         t          j        ||	¦  «         d d d ¦  «         n# 1 swxY w Y   �Œt          |¦  «         t	          d„ ¦  «        }
|st!          ||¦  «         |                     ¦   «         D ]8\  }}t          |d	d
t%          |¦  «        pt'          |¦  «        |¬¦  «        |
|<   Œ9t)          ||
¦  «        S )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:
  rr   )ÚfuncsÚlocs   €€r_   ú<lambda>z*parse_native_yaml_struct.<locals>.<lambda>¾   s   ø€ Ð4 3Ð4Ð4¨UÐ4Ð4€ r`   c                 ó>   — t          t          j        dddi ¬¦  «        S )NTF©rj   Úuse_out_as_primaryÚexternalÚdevice_guardÚindex)r'   r,   Ú	Undefinedrr   r`   r_   r�   z*parse_native_yaml_struct.<locals>.<lambda>Å   s)   € •Ý$Ô.Ø#ØØð ð
ñ 
ô 
€ r`   TFr’   )Ú
isinstanceÚlistÚAssertionErrorÚtyper   Údictrx   Úintr3   rF   r4   Ú	from_yamlÚappendr'   Ú
grow_indexÚerror_check_native_functionsr@   rz   r/   r2   re   )r~   r€   r‚   r„   r†   ÚrsÚbsÚer‹   ÚmÚindicesÚkÚvrŽ   r�   s                @@r_   Úparse_native_yaml_structr©   ª   sP  øø€ õ �b�$ÑÔð PÝÐNÅDÈÁHÄHÐNÐNÑOÔOÐOØ!€BÝALÍTÑARÔAR€BØð +ñ +ˆÝ˜!�TÑ"Ô"ð 	>Ý Ð!<¸Ð!<Ð!<Ñ=Ô=Ð=Ý˜!Ÿ%š% 
Ñ+Ô+­SÑ1Ô1ð 	HÝ Ð!FÀ1Ð!FÐ!FÑGÔGÐGÝ�t˜Q˜zœ]Ñ+Ô+ˆØ—’�f‘”ˆØˆ=Ý Ð!8°QÐ!8Ð!8Ñ9Ô9Ð9ÝÐ4Ð4Ð4Ð4Ð4Ñ5Ô5ð 	+ð 	+Ý$Ô.¨q°#°zÀ;ÑOÔO‰GˆD�!Ø�IŠI�d‰OŒOˆOÝÔ# B¨Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ùõ ! Ñ$Ô$Ð$å/:ð	
ð 	
ñ
0ô 
0€Gð ð /Ý& r¨2Ñ.Ô.Ð.Ø—’‘
”
ð 	
ð 	
‰ˆˆ1å!ØØ#Øå-¨aÑ0Ô0ÐJÕ4GÈÑ4JÔ4JØð
ñ 
ô 
ˆ�‰
ˆ
õ �b˜'Ñ"Ô"Ð"s   ÄAEÅE	ÅE	c                ó–  ‡‡— t          | t          ¦  «        st          dt          | ¦  «        › �¦  «        ‚t	          ¦   «         }| D �] }t          |                     d¦  «        t          ¦  «        st          d|› �¦  «        ‚t          ||d         ¦  «        Š|                     d¦  «        Št          ˆˆfd„¦  «        5  | 	                    ¦   «         }| 
                    d¦  «        }| 
                    dd¦  «        }|dk    rt          d|› d	�¦  «        ‚|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   �Œ|S )
Nr‰   rV   rŠ   Útagc                 ó   •— d‰ › d‰› �S r�   rr   )r�   Útagss   €€r_   r�   z(parse_tags_yaml_struct.<locals>.<lambda>ç   s   ø€ Ð3 3Ð3Ð3¨TÐ3Ð3€ r`   Údescrw   zTag 'z#' must have a non-empty description)r˜   r™   rš   r›   Úsetrx   r�   r3   rF   ÚcopyÚpopÚadd)	r~   r„   r¢   r¤   Úe_iÚnamer®   r�   r­   s	          @@r_   Úparse_tags_yaml_structrµ   Þ   s}  øø€ Ý�b�$ÑÔð PÝÐNÅDÈÁHÄHÐNÐNÑOÔOÐOÝ‘5”5€BØð ñ ˆÝ˜!Ÿ%š% 
Ñ+Ô+­SÑ1Ô1ð 	HÝ Ð!FÀ1Ð!FÐ!FÑGÔGÐGÝ�t˜Q˜zœ]Ñ+Ô+ˆØ�uŠu�U‰|Œ|ˆÝÐ3Ð3Ð3Ð3Ð3Ñ4Ô4ð 	ð 	Ø—&’&‘(”(ˆCØ—7’7˜5‘>”>ˆDØ—7’7˜6 2Ñ&Ô&ˆDà�rŠzˆzÝ$Ð%V¨TÐ%VÐ%VÐ%VÑWÔWÐWØ�FŠF�4‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ùð €Is   ÃA.D<Ä<E 	ÅE 	c                óä   — | t           vr[t          | ¦  «        5 }t          j        |t          ¬¦  «        }t          || ¬¦  «        t           | <   d d d ¦  «         n# 1 swxY w Y   t           |          S )N©ÚLoader)r„   )ri   ÚopenÚyamlÚloadrR   rµ   )r„   Úfr~   s      r_   Úparse_tags_yamlr½   ò   s¸   € ð Õ0Ð0Ð0Ý�$‰ZŒZð 	X˜1Ý”˜1¥ZÐ0Ñ0Ô0ˆBÝ2HÈÐRVÐ2WÑ2WÔ2WÕ)¨$Ñ/ð	Xð 	Xð 	Xñ 	Xô 	Xð 	Xð 	Xð 	Xð 	Xð 	Xð 	Xøøøð 	Xð 	Xð 	Xð 	Xõ )¨Ô.Ð.s   ™5AÁAÁ!A)r†   Úloaded_yamlÚtags_yaml_pathr¾   úobject | Nonec               ó  — | t           vrrt          |¦  «        }|€Ct          | ¦  «        5 }t          j        |t
          ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   n|}t          |||| |¬¦  «        t           | <   t           |          S )Nr·   )r„   r†   )rh   r½   r¹   rº   r»   rR   r©   )r„   r¿   r‚   r†   r¾   r€   r¼   r~   s           r_   Úparse_native_yamlrÂ   ý   sÕ   € ð Õ2Ð2Ð2Ý$ ^Ñ4Ô4ˆ
ð ÐÝ�d‘”ð 5˜qÝ”Y˜q­Ð4Ñ4Ô4�ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øð ˆBå0HØØØØØ 3ð1
ñ 1
ô 1
Õ'¨Ñ-õ +¨4Ô0Ð0s   ªAÁAÁArŽ   úSequence[NativeFunction]ÚNonec           	     óš  — i }t          t          ¦  «        }| D ];}|||j        j        <   ||j        j        j                                      |¦  «         Œ<| D �]ò}|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 ]R}|j        |v rGt          |j        j        ¦  «        |j        f|vr%t          d|j        › d|j        j        › d�¦  «        ‚ŒSd	|j        v rãt          |j        j        ¦  «        d
k    rÆt          |j        j        ¦  «        dk    r©t          |j        j        j        ¦  «        dk    r‡|j        j        j        }|j        st          |j        j        › d�¦  «        ‚t#          |j        d|j        ¦  «        }	t)          ||	         ¦  «        dk    rt          |j        j        › d|› d�¦  «        ‚�Œôd S )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_delegaterx   rš   Ú
structuredr¯   ÚkeywordÚkwlistÚ	argumentsÚflat_allr…   r­   Ú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ÔBS€MØð 2ð 2ˆØ !ˆ�””ÑØ�a”f”kÔ&Ô'×.Ò.¨qÑ1Ô1Ð1Ð1Øð 7ñ 7ˆØÔ Ð,Ø$ŸLšL¨Ô)>Ñ?Ô?ˆMØÐ$Ý$Ø”v”{ð Xð XØÔ,ðXð XØ45Ô4IðXð Xð Xñô ð ð !Ô+ð Ý$Ø”v”{ð Sð SØÔ,ðSð SØ45Ô4IðSð Sð Sñô ð õ $'¥w¤~Ñ#6Ô#6Ð ð
ð 
ð 
ˆð ”6Ô#Ô,ð 	ð 	ˆCØŒxÐ3Ð3Ð3Ý˜œœÑ$Ô$ c¤hÐ/°~ÐEÐEÝ(Øo¨#¬(ÐoÐoÀ1Ä6Ä;ÐoÐoÐoñô ð øð ˜aœfÐ$Ð$Ý�A”F”KÑ Ô  IÒ-Ð-Ý�A”F”KÑ Ô  LÒ0Ð0Ý�A”F”KÔ$Ñ%Ô%¨Ò/Ð/àœœÔ(ˆIØÔ$ð Ý$Ø”v”{ð tð tð tñô ð õ &6Ø”  yÔ'>ñ&ô &Ð"õ �=Ð!7Ô8Ñ9Ô9¸QÒ>Ð>Ý$Ø”v”{ð uð uØ;Dðuð uð uñô ð ùði7ð 7r`   Úsc                ón  — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       d	d
¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       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©râ   s    r_   Ú
cpp_stringrî   ]  s§   € à	�	Š	�$˜ÑÔ€AØ	�	Š	�#�uÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØ	�	Š	�$˜ÑÔ€AØˆqˆ8ˆ8ˆ8€Or`   Úbackendsúlist[BackendIndex]úlist[DispatchKey]c                ó¢   — t          | ¦  «        dk    rg S d„ | D ¦   «         t          j        t          j        t          j        t          j        gz   S )Nr   c                ó   — g | ]	}|j         ‘Œ
S rr   )rj   )rs   Úbackends     r_   ú
<listcomp>z(static_dispatch_keys.<locals>.<listcomp>{  s   € Ð=Ð=Ð=¨�Ô$Ð=Ð=Ð=r`   )rÙ   r,   ÚCompositeImplicitAutogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctional©rï   s    r_   Ústatic_dispatch_keysrû   w  sQ   € Ý
ˆ8�}„}˜ÒÐØˆ	à=Ð=°HÐ=Ñ=Ô=ÝÔ1ÝÔ=ÝÔ1ÝÔ>ð	A
ñ 
ð 	
r`   r¼   r4   Úbackend_indexr'   úDispatchKey | Nonec                óä   — | j         €|                     | ¦  «        r|j        S | j        rt          j        S | j        rt          j        S | j        rt          j	        S | j
        rt          j        S d S rq   )rÐ   Ú
has_kernelrj   Ú&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¼   rü   s     r_   Úget_static_dispatch_backendr  ƒ  s„   € ð 	ÔÐ(¨M×,DÒ,DÀQÑ,GÔ,GÐ(ð
 Ô)Ð)Ø	
Ô	1ð AÝÔ4Ð4Ø	
Ô	@ð AÝÔAÐAØ	
Ô	1ð AÝÔ4Ð4Ø	
Ô	?ð AÝÔ@Ð@Øˆ4r`   ú
str | Nonec                óÚ   — |�| j         rd S g }|D ]G}t          | |¦  «        }|�3|                     d| j        › d|                     ¦   «         › d�¦  «         ŒHd                     |¦  «        S )Nú#include <ATen/ops/Ú_ú_dispatch.h>ré   )Úmanual_kernel_registrationr  rŸ   Ú	root_nameÚlowerÚjoin)r¼   rü   Úoutputr–   rj   s        r_   Ústatic_dispatch_ops_headerr  —  s�   € ð Ð Ô <ÐØˆtà€FØð ð ˆÝ2°1°eÑ<Ô<ˆØÐ#Ø�MŠMØV a¤kÐVÐV°L×4FÒ4FÑ4HÔ4HÐVÐVÐVñô ð øð �9Š9�VÑÔÐr`   ú	list[str]c                ó4   — d„ t          | ¦  «        D ¦   «         S )Nc                ó   — g | ]}d |› d�‘Œ	S )ú#include <ATen/úFunctions.h>rr   )rs   rj   s     r_   rõ   z1static_dispatch_extra_headers.<locals>.<listcomp>¨  s3   € ð ð ð àð 	5˜,Ð4Ð4Ð4ðð ð r`   )rû   rú   s    r_   Ústatic_dispatch_extra_headersr  §  s+   € ðð å0°Ñ:Ô:ðñ ô ð r`   Úsigú"CppSignature | DispatcherSignatureÚcpp_sigr   c                óD  — dd„}t          |                      ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }|D ])}|j        j        t          j        k    r ||¦  «        } nŒ*t          ||¦  «        }d                     d„ |D ¦   «         ¦  «        S )NÚinput_bindingsúlist[Binding]rn   c                ó  — g }| D ]|}|j         dk    rZt          t          t          j        |j        j        ¦  «        |j         |j        |j        ¬¦  «        }| 	                    |¦  «         Œg| 	                    |¦  «         Œ}|S )NÚmemory_format)Únctyper´   ÚdefaultÚargument)
r´   r   r   r   Ú possibly_redundant_memory_formatr  r›   r  r   rŸ   )r  Úoutput_bindingsÚbindingÚspl_mem_format_bindings       r_   Úadd_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding¶  sœ   € Ø)+ˆØ%ð 	0ð 	0ˆGØŒ|˜Ò.Ð.Ý)0Ý%Ý&ÔGØœÔ+ñô ð !œØ#œOØ$Ô-ð*ñ *ô *Ð&ð  ×&Ò&Ð'=Ñ>Ô>Ð>Ð>à×&Ò& wÑ/Ô/Ð/Ð/ØÐr`   ú, c              3  ó$   K  — | ]}|j         V — Œd S rq   ©Úexpr©rs   Úas     r_   rv   z!translate_args.<locals>.<genexpr>Ñ  s$   è è € Ð+Ð+ �Q”VÐ+Ð+Ð+Ð+Ð+Ð+r`   )r  r  rn   r  )r™   rÔ   r  r´   r   r!  r   r  )r  r  r%  Úsrc_bindingsÚgoal_bindingsrß   Úexprss          r_   Útranslate_argsr/  ±  s¶   € ð
ð ð ð õ$ ˜Ÿš™œÑ(Ô(€LÝ˜×*Ò*Ñ,Ô,Ñ-Ô-€Mð ð ð ˆØŒ:Œ?�nÔMÒMÐMØ8Ð8¸ÑFÔFˆLØˆEð Nõ �l MÑ2Ô2€EØ�9Š9Ð+Ð+ UÐ+Ñ+Ô+Ñ+Ô+Ð+r`   c           	     ó8  — t          |¦  «        }|                     ¦   «         }t          | |¦  «        }|                     |¦  «        }|r|j        r|j        nt
          }|                     dd¦  «        }d|› d|j                             ¦   «         › d|› d|› d�	S )Nú::nativerw   úreturn ú::ú(ú);)	r   r´   r/  Ú
get_kernelÚcpp_namespacer*   rì   rj   r  )	r  r¼   rü   r  r´   r.  Úbackend_metadataÚ	kernel_nsÚnss	            r_   Ú%generate_static_dispatch_backend_callr;  Ô  s¶   € õ
 9¸Ñ;Ô;€GØ�<Š<‰>Œ>€DÝ˜3 Ñ(Ô(€EØ$×/Ò/°Ñ2Ô2Ðð ð	&Ø 0Ô >ð	&ÐÔ&Ð&å%ð ð
 
×	Ò	˜: rÑ	*Ô	*€BØQ�RÐQÐQ˜=Ô5×;Ò;Ñ=Ô=ÐQÐQÀÐQÐQÈÐQÐQÐQÐQr`   c           	     óþ  — t          j        |dd¬¦  «        }| j        r!|j                             ¦   «         r|j        }n|j        }|€t          d¦  «        ‚|                     ¦   «         }t          | |¦  «        }t          j        dd¦  «        }|j        r+d|› dt          j                             ¦   «         › d|› d|› d	�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d	�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d	�	S |j        r+d|› dt          j                             ¦   «         › d|› d|› d	�	S d
|› dd                     d„ |D ¦   «         ¦  «        › d�S )NF©ÚmethodÚfallback_bindingzExpected cpp_sig to be non-Noner1  rw   r2  r3  r4  r5  z5TORCH_CHECK(false, "Static dispatch does not support z forr&  c                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rr   )r…   rj   )rs   r–   s     r_   rõ   z:generate_static_dispatch_fallback_call.<locals>.<listcomp>  s#   € ÐAÐAÐA¨�C�Ô"Ñ#Ô#ÐAÐAÐAr`   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  r¼   rg   Úcpp_sigsr  r´   r.  r:  s           r_   Ú&generate_static_dispatch_fallback_callrG  æ  sù  € õ
 !Ô5Ø	�%¨%ðñ ô €Hð „zð %�a”f×'Ò'Ñ)Ô)ð %ØÔ+ˆˆàÔ$ˆØ€ÝÐ>Ñ?Ô?Ð?Ø�<Š<‰>Œ>€DÝ˜3 Ñ(Ô(€EÝ	!Ô	)¨*°bÑ	9Ô	9€BØÔ/ð 
KØ`˜Ð`Ð`�{ÔD×JÒJÑLÔLÐ`Ð`ÐPTÐ`Ð`ÐW\Ð`Ð`Ð`Ð`Ø	
Ô	@ð KØm˜ÐmÐm�{ÔQ×WÒWÑYÔYÐmÐmÐ]aÐmÐmÐdiÐmÐmÐmÐmØ	
Ô	1ð KØ`˜Ð`Ð`�{ÔD×JÒJÑLÔLÐ`Ð`ÐPTÐ`Ð`ÐW\Ð`Ð`Ð`Ð`Ø	
Ô	?ð KØl˜ÐlÐl�{ÔP×VÒVÑXÔXÐlÐlÐ\`ÐlÐlÐchÐlÐlÐlÐlðKÈð Kð KØ‡‚ÐAÐA°ÐAÑAÔAÑBÔBðKð Kð Kð 	Kr`   c           	     ó–  ‡— t          |¦  «        dk    s‰j        rdS ˆfd„|D ¦   «         }t          |¦  «        dk    rt          | ‰|d         ¦  «        S t          |¦  «        dk    rt          | ‰|¦  «        S d„ |                      ¦   «         D ¦   «         }d                     |¦  «        }‰j        j        j        }g }g }|�|                     d¦  «         |dk    r|                     d	|› d
�¦  «         |                     dd                     |¦  «        › d�¦  «         |                     d¦  «         g }	|D ]H}
|	                     d|
j	        › d�¦  «         |	                     dt          | ‰|
¦  «        › d�¦  «         ŒIt          | ‰|¦  «        }d}d|                     |¦  «        › d|                     |	¦  «        › d|› d�S )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   rw   c                óh   •— g | ].}|                      ‰¦  «        s‰j        �|j        t          v ¯,|‘Œ/S rq   )rÿ   rÐ   rj   r;   )rs   Úbr¼   s     €r_   rõ   z#static_dispatch.<locals>.<listcomp>  sP   ø€ ð ð ð àØ�<Š<˜‰?Œ?ðð
 Ô!Ð-Ø”Õ":Ð:Ð:ð 	
ð
 ;Ð:Ð:r`   rU   c                óÀ   — g | ][}t          |j        t          ¦  «        s8t          |j        t          ¦  «        ¯6|j        j                             ¦   «         ¯T|j        ‘Œ\S rr   )r˜   r   r:   r&   r›   Úis_tensor_liker´   r*  s     r_   rõ   z#static_dispatch.<locals>.<listcomp>$  sl   € ð ð ð àÝ�a”j¥,Ñ/Ô/ðõ �a”j¥(Ñ+Ô+ð	ð
 ŒJŒO×*Ò*Ñ,Ô,ðØ	Œðð ð r`   r&  Nz>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;  rG  rÔ   r  r‹   Útensor_optionsrŸ   rj   )r  r¼   rg   ÚkeysÚnative_tensor_argsÚtensor_argsÚtensor_optsÚstmtsÚsubexprsÚdispatch_coder–   ÚfallbackÚ	connectors    `           r_   Ústatic_dispatchr[    sG  ø€ õ ˆ?ÑÔ˜qÒ Ð  AÔ$@Ð Øˆrðð ð ð à ðñ ô €Dõ ˆ4�y„y�A‚~€~Ý4°S¸!¸TÀ!¼WÑEÔEÐEÝ	ˆT‰Œ�aŠˆÝ5°c¸1¸oÑNÔNÐNðð à—’‘”ðñ ô Ðð —)’)Ð.Ñ/Ô/€KØ”&Ô"Ô1€Kà€EØ€HØÐØ�ŠØLñ	
ô 	
ð 	
ð �bÒÐØ�ŠÐM¸{ÐMÐMÐMÑNÔNÐNØ	‡L‚LÐH¨u¯zªz¸(Ñ/CÔ/CÐHÐHÐHÑIÔIÐIØ	‡L‚LÐPÑQÔQÐQà€MØð 
ð 
ˆØ×ÒÐK°EÔ4FÐKÐKÐKÑLÔLÐLØ×ÒØLÕ8¸¸aÀÑGÔGÐLÐLÐLñ	
ô 	
ð 	
ð 	
õ 6°c¸1¸oÑNÔN€HØ€IðØ‡^‚^�EÑÔðð ð 
�Š˜Ñ	&Ô	&ðð ð
 ðð ð ð r`   T)Úfrozenc                  óT   — e Zd ZU ded<    ee¬¦  «        Zded<   edd
„¦   «         ZdS )ÚRegisterSchemarD   Úselector)Údefault_factoryzdict[str, int]Ú
known_tagsr¼   r4   rn   r  c                óÌ  — | j                              |¦  «        sd S dd                     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 |› �V — Œ
dS )z	at::Tag::Nrr   )rs   r«   s     r_   rv   z*RegisterSchema.__call__.<locals>.<genexpr>Y  s+   è è € ÐKÐK°SÐ0¨3Ð0Ð0ÐKÐKÐKÐKÐKÐKr`   Ú}z{}zm.def(z, {});
rw   z const std::vector<at::Tag> tags_z = ú;
z, tags_z);
)
r_  Úis_native_function_selectedr  Úsortedr­   rî   r…   r‹   ra  rÙ   )r[   r¼   r­   Ú
maybe_tagsÚidxs        r_   Ú__call__zRegisterSchema.__call__U  s÷   € àŒ}×8Ò8¸Ñ;Ô;ð 	Ø�4Ø�T—Y’YÐKÐK½FÀ1Ä6¹N¼NÐKÑKÔKÑKÔKÑKÈcÑQˆØ�4Š<ˆ<Ø?�J¥s¨1¬6¡{¤{Ñ3Ô3Ð?Ð?Ð?Ð?Øˆ
Ø�t”Ð&Ð&Ý�d”oÑ&Ô&ˆCØ$'ˆDŒO˜DÑ!ØM¸CÐMÐMÀDÐMÐMÐMˆJØÐ_Ð_¥J­s°1´6©{¬{Ñ$;Ô$;Ð_Ð_ÀDÄOÐTXÔDYÐ_Ð_Ð_Ð_r`   N©r¼   r4   rn   r  )	ra   rb   rc   Ú__annotations__r   rœ   ra  r   rk  rr   r`   r_   r^  r^  P  se   € € € € € € àÐÐÑØ!& °tÐ!<Ñ!<Ô!<€JÐ<Ð<Ð<Ñ<à ð`ð `ð `ñ !Ô ð`ð `ð `r`   r^  c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeOperatorsú.Literal[Target.DECLARATION, Target.DEFINITION]Útargetrð   Ústatic_dispatch_backend_indicesr¼   r4   rn   r…   c                ó  — t          j        |j        ¦  «        }|j        j                             ¦   «         }| j        t          j        u r‘d|› d|                     ¦   «         › d|j        j        j        › d|j        j        j	        › dt          t          |j        ¦  «        ¦  «        › d|                     dd¬	¦  «        › d|                     d
d¬	¦  «        › d�S | j        t          j        u rýd|j        › d|› d|› d|› d|› d|› d�}dD ]Þ}|r8d                     dgd„ |                     ¦   «         D ¦   «         z   ¦  «        }d
}n3d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d}|}|› d|› �}	d|› d|› d|› d�}
|s/t!          | j        ¦  «        dk    rt%          ||| j        ¬¦  «        }
|d|j        › d |                     |	|¬	¦  «        › d!|
› d"�z  }Œß|S t'          | j        ¦  «         d S )#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&  ÚdispatchKeySetc                ó   — g | ]	}|j         ‘Œ
S rr   ©r´   r*  s     r_   rõ   z-ComputeOperators.__call__.<locals>.<listcomp>£  s   € Ð-NÐ-NÐ-N¸¨a¬fÐ-NÐ-NÐ-Nr`   c                ó   — g | ]	}|j         ‘Œ
S rr   rz  r*  s     r_   rõ   z-ComputeOperators.__call__.<locals>.<listcomp>§  s   € Ð5VÐ5VÐ5VÀ°a´fÐ5VÐ5VÐ5Vr`   r3  z
    static auto op = create_z_typed_handle();
    return op.r4  r5  r   )rg   ré   ú {
    z
}
)r   Úfrom_schemar‹   r´   Úunambiguous_namerq  rK   ÚDECLARATIONr›   Úoverload_namerî   r…   ÚdefnÚ
DEFINITIONr  rÔ   rÙ   rr  r[  r   )r[   r¼   r  r´   Údefnsru  Údispatcher_exprs_strÚmethod_baseÚdispatcher_callÚmethod_nameÚfn_bodys              r_   rk  zComputeOperators.__call__n  sê  € å!Ô-¨a¬fÑ5Ô5ˆØŒvŒ{×+Ò+Ñ-Ô-ˆàŒ;�&Ô,Ð,Ð,ð0
Øð
ð 
à—(’(‘*”*ð
ð 
ð
 /0¬f¬kÔ.>ð
ð 
ð 23´´Ô1Jð
ð 
õ .8½¸A¼F¹¼Ñ-DÔ-Dð
ð 
ð �(Š(˜°Eˆ(Ñ
:Ô
:ð
ð 
ð �(Š(˜¸$ˆ(Ñ
?Ô
?ð
ð 
ð 
ð 
ð Œ[�FÔ-Ð-Ð-ðØ
Œ&ðð à.2ðð àEIðð ð ð	ð ð )-ð	ð ð
 ðð ð ˆEð (5ð ð Ð#Ø&ð )Ø+/¯9ª9Ø)Ð*Ð-NÐ-N¸c¿mºm¹o¼oÐ-NÑ-NÔ-NÑNñ,ô ,Ð(ð #/�K�Kà+/¯9ª9Ð5VÐ5VÀcÇmÂmÁoÄoÐ5VÑ5VÔ5VÑ+WÔ+WÐ(Ø"(�Kà"-�Ø!%Ð6Ð6¨Ð6Ð6�ð<Ø!ð<ð <àð<ð <à!5ð<ð <ð <�ð
 ,ðå˜DÔ@ÑAÔAÀAÒEÐEõ .Ø˜Q°Ô0Tðñ ô �Gð ð Ø
Œ&ðð à‡‚ˆ{Ð0C€ÑDÔDðð ð ðð ð ñ ��ð ˆLå˜œÑ%Ô%Ð%Ð%Ð%r`   N©r¼   r4   rn   r…   ©ra   rb   rc   rm  r   rk  rr   r`   r_   ro  ro  i  sS   € € € € € € à:Ð:Ð:Ñ:Ø7Ð7Ð7Ñ7à ðR&ð R&ð R&ñ !Ô ðR&ð R&ð R&r`   ro  c                  ó&   — e Zd Zedd„¦   «         ZdS )ÚComputeFunctionr¼   r4   rn   r  c                óÎ  — t          j        |d|j        ¬¦  «        }|j                             ¦   «         }d}|                     ¦   «         D �]}t          j        |j        ¦  «        }t          | 	                    ¦   «         | 	                    ¦   «         ¦  «        }d 
                    d„ |D ¦   «         ¦  «        }|j        rd}	nd}	t          j        |j        v rE|d|j        › d	|                     ¦   «         › d
|j        j                             ¦   «         › d|› d�	z  }|rB|d|	› d|                     d¬¦  «        › d
|j        j                             ¦   «         › d|› d�	z  }�Œ|S )NFr=  rw   r&  c                ó   — g | ]	}|j         ‘Œ
S rr   r(  ©rs   r¤   s     r_   rõ   z,ComputeFunction.__call__.<locals>.<listcomp>Ô  ó   € Ð"9Ð"9Ð"9¨a 1¤6Ð"9Ð"9Ð"9r`   zc10::SymIntÚint64_trw  ú
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   rA  Úmanual_cpp_bindingr‹   rC  Ú
signaturesr   r}  r   rÔ   r  rB  r>   ÚfunctionÚvariantsÚdeclr´   r~  )
r[   r¼   Ú	sig_grouprC  Úresultr  Ú
target_sigr.  Ú	exprs_strÚ	intlike_ts
             r_   rk  zComputeFunction.__call__È  s¹  € å%Ô:Ø�e¨aÔ.Bð
ñ 
ô 
ˆ	ð ”V×&Ò&Ñ(Ô(ˆ
àˆØ×'Ò'Ñ)Ô)ð  	ñ  	ˆCå,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÑFÔFˆEØŸ	š	Ð"9Ð"9°5Ð"9Ñ"9Ô"9Ñ:Ô:ˆIàŒzð &Ø)�	�	à%�	åÔ 1¤:Ð-Ð-Øð Ø
Œ&ðð à�Š‰
Œ
ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð >Gðð ð ñ �ð ð Øð àGPðð ð ‡8‚8 4€8Ñ(Ô(ðð ð ”f”k×2Ò2Ñ4Ô4ð	ð ð >Gð	ð ð ñ �ùð ˆr`   Nrl  ©ra   rb   rc   r   rk  rr   r`   r_   rŒ  rŒ  Æ  s3   € € € € € à ð(ð (ð (ñ !Ô ð(ð (ð (r`   rŒ  c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeTensorMethodrp  rq  rð   rr  r¼   r4   rn   r  c                ó’  — t           j        |j        vrd S |j                             ¦   «         rt          d|j        › �¦  «        ‚|j        j        j        €t          d|j        › �¦  «        ‚t          j	        |d|j
        ¬¦  «        }| j        t          j        u r5d}|                     ¦   «         D ]}||                     ¦   «         › d�z  }Œ|S | j        t          j        urt#          | j        ¦  «         d}|                     ¦   «         D ]·}t%          j        |j        ¦  «        }t)          |                     ¦   «         |                     ¦   «         d¬¦  «        }d                     d	„ |D ¦   «         ¦  «        }|d
|j        › d|                     d¬¦  «        › d|j        j                             ¦   «         › d|› d�	z  }Œ¸|S )Nz*Method variant cannot be an out function: z#Method variant must have self_arg: Tr=  rw   z const;
)r>  r&  c                ó   — g | ]	}|j         ‘Œ
S rr   r(  r�  s     r_   rõ   z0ComputeTensorMethod.__call__.<locals>.<listcomp>  r�  r`   rw  r’  zTensor::)Úprefixz const {
    return at::_ops::r”  ú);
}
)r>   r>  r™  r‹   Ú	is_out_fnrš   rÔ   Úself_argr   rA  r–  rq  rK   r  r—  rš  r‚  r   r   r}  r   r  r�  r´   r~  ©r[   r¼   r›  rœ  r  r�  r.  rž  s           r_   rk  zComputeTensorMethod.__call__û  sò  € åŒ> ¤Ð+Ð+Ø�4àŒ6×ÒÑÔð 	XÝ Ð!VÈaÌfÐ!VÐ!VÑWÔWÐWØŒ6ÔÔ$Ð,Ý Ð!OÀqÄvÐ!OÐ!OÑPÔPÐPå%Ô:Ø�d¨QÔ-Að
ñ 
ô 
ˆ	ð Œ;�&Ô,Ð,Ð,ØˆFØ ×+Ò+Ñ-Ô-ð 3ð 3�Ø˜SŸXšX™ZœZÐ2Ð2Ð2Ñ2��ØˆMàŒ;�fÔ/Ð/Ð/Ý˜œÑ%Ô%Ð%àˆà×'Ò'Ñ)Ô)ð 
	ð 
	ˆCÝ,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÈdÐSÑSÔSˆEØŸ	š	Ð"9Ð"9°5Ð"9Ñ"9Ô"9Ñ:Ô:ˆIàð Ø
Œ&ðð à�Š˜
ˆÑ#Ô#ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð >Gðð ð ñ ˆFˆFð ˆr`   Nrl  rŠ  rr   r`   r_   r¢  r¢  ö  sM   € € € € € € à:Ð:Ð:Ñ:Ø7Ð7Ð7Ñ7à ð$ð $ð $ñ !Ô ð$ð $ð $r`   r¢  c                  ó&   — e Zd Zedd„¦   «         ZdS )ÚComputeRedispatchFunctionr¼   r4   rn   r  c                óÞ  — t          j        |d|j        ¬¦  «        }d}|                     ¦   «         D ]¹}t	          j        |j        ¦  «        }t          |                     ¦   «         |                     ¦   «         ¦  «        }d 	                    dgd„ |D ¦   «         z   ¦  «        }|d|j        › d| 
                    d	¬
¦  «        › d|j        j                             ¦   «         › d|› d�	z  }Œº|S )NFr=  rw   r&  rx  c                ó   — g | ]	}|j         ‘Œ
S rr   r(  r*  s     r_   rõ   z6ComputeRedispatchFunction.__call__.<locals>.<listcomp>4  s   € Ð7NÐ7NÐ7NÀ1¸¼Ð7NÐ7NÐ7Nr`   rw  r’  T)ru  r“  z::redispatch(r¦  )r   rA  r–  r—  r   r}  r‹   r   rÔ   r  rš  r´   r~  r©  s           r_   rk  z"ComputeRedispatchFunction.__call__(  s  € õ &Ô:Ø�e¨aÔ.Bð
ñ 
ô 
ˆ	ð ˆØ×'Ò'Ñ)Ô)ð 
	ð 
	ˆCÝ,Ô8¸¼Ñ@Ô@ˆJÝ˜cŸmšm™oœo¨z×/CÒ/CÑ/EÔ/EÑFÔFˆEØŸ	š	Ð#3Ð"4Ð7NÐ7NÈÐ7NÑ7NÔ7NÑ"NÑOÔOˆIàð Ø
Œ&ðð à�Š TˆÑ*Ô*ðð ð ”f”k×2Ò2Ñ4Ô4ðð ð DMðð ð ñ ˆFˆFð ˆr`   Nrl  r   rr   r`   r_   r«  r«  &  s3   € € € € € à ðð ð ñ !Ô ðð ð r`   r«  c                óP   — d| j         j        j        › d| j         j        j        › d�S )Nz{"aten::z", "z"},)r‹   r´   r€  ©r¼   s    r_   Úcompute_aten_opr°  E  s)   € àL�q”v”{Ô'ÐLÐL¨Q¬V¬[Ô-FÐLÐLÐLÐLr`   Úgr5   c                óæ  — | j         sd S t          | j        ¦  «        5  t          j        | ¦  «        }t          j        | ¦  «        }d                     d„ |D ¦   «         ¦  «        }| j        j        }|€d}d}| j         r| j        j        nd }|�r1g |j	         
                    ¦   «         ¢|j        ‘}d„ |D ¦   «         }d„ |D ¦   «         }	d                     d„ |	D ¦   «         ¦  «        }
d|
› d	�}d
„ |D ¦   «         }d                     d„ |D ¦   «         ¦  «        }g }t          |¦  «        D �]D\  }}d                     |	d |…         dgz   |	|dz   d …         z   ¦  «        }d|› d	�}||                              d¬¦  «        }|› d|j        › d|› d�}d|j        › d�}d|	|         › d|› d�}g }|                     |› d�¦  «         t          |¦  «        D ]P\  }}||k    r|                     d|j        › d�¦  «         Œ*|                     d|j        › d|j        › d�¦  «         ŒQ|                     d¦  «         d                      |¦  «        }|                     d!|› d"|› d#|› d$�¦  «         �ŒFd                      |¦  «        }d                     dgt          |	¦  «        z  ¦  «        }d%|› d&�}d'}d(|› d)|› d!|› d*�}nd+}d+}d,|› d-|› d.|› d/|› d/|› d0|› d1�cd d d ¦  «         S # 1 swxY w Y   d S )2Nr&  c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rq   )rš  r*  s     r_   rv   z4compute_meta_function_declaration.<locals>.<genexpr>Q  s*   è è € Ð4Ð4¨!˜QŸVšV™XœXÐ4Ð4Ð4Ð4Ð4Ð4r`   zat::impl::MetaBaseÚvoidc                ó   — g | ]	}|D ]}|‘ŒŒ
S rr   rr   )rs   Úreplace_listÚelems      r_   rõ   z5compute_meta_function_declaration.<locals>.<listcomp>]  s9   € ð $ð $ð $Ø%Èð$ð $Ø@D�ð$ð $ð $ð $r`   c                ó@   — g | ]}|j                              ¦   «         ‘ŒS rr   )r´   Úupper©rs   r·  s     r_   rõ   z5compute_meta_function_declaration.<locals>.<listcomp>`  s1   € ð /ð /ð /Ø&*�”	—’Ñ!Ô!ð/ð /ð /r`   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )zbool z = falseNrr   )rs   Úparams     r_   rv   z4compute_meta_function_declaration.<locals>.<genexpr>c  s?   è è € ð 8ð 8Ø,1Ð'˜Ð'Ð'Ð'ð8ð 8ð 8ð 8ð 8ð 8r`   z
template <ú>c                óD   — g | ]}t          j        ||j        ¬ ¦  «        ‘ŒS ))Úbinds)rÑ   Úargument_typer´   rº  s     r_   rõ   z5compute_meta_function_declaration.<locals>.<listcomp>i  s:   € ð 3ð 3ð 3àõ Ô(¨°T´YÐ?Ñ?Ô?ð3ð 3ð 3r`   rf  c              3  óV   K  — | ]$}|                      d ¬¦  «        › d|j        › �V — Œ%dS )T©Ú	strip_refú N)Úcpp_typer´   rº  s     r_   rv   z4compute_meta_function_declaration.<locals>.<genexpr>n  sT   è è € ð 3ð 3àð —=’=¨4�=Ñ0Ô0Ð>Ð>°4´9Ð>Ð>ð3ð 3ð 3ð 3ð 3ð 3r`   ÚtruerU   zprecompute_out<TrÂ  z set_r4  z value)rå   z already set"zstatic_assert(z == false, r5  z ret;zret.z	 = value;z	 = this->rN  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;
            };rw   zstruct TORCH_API structured_z
 : public r|  rP  z meta(z);
};
)rÑ   r   ÚoutÚmetar´   Úmeta_argumentsr  Ústructured_inheritsÚprecomputedrì   Úvaluesr²   Ú	enumeraterÅ  rŸ   rÙ   )r±  r´   ÚargsÚargs_strÚparent_classÚmeta_returnrÌ  Úprecomputed_valuesÚprecomputed_elementsÚprecomputed_template_parametersÚprecomputed_template_params_strÚprecompute_template_declÚ#precomputed_elements_with_cpp_typesÚprecomputed_elements_declÚsetter_methodsÚir·  Úreturn_ty_templatesÚ	return_tyÚelem_cpp_tyrE  Ú
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  € ØŒ<ð ØˆtÝ	  ¤Ñ	'Ô	'ð vð vÝŒy˜‰|Œ|ˆÝÔ(¨Ñ+Ô+ˆØ—9’9Ð4Ð4¨tÐ4Ñ4Ô4Ñ4Ô4ˆØ”uÔ0ˆØÐØ/ˆLØˆØ+,¬<ÐA�a”eÔ'Ð'¸Tˆàñ d	"ð "R ;Ô#6×#=Ò#=Ñ#?Ô#?Ð!QÀÄÐ!QÐð$ð $Ø);ð$ñ $ô $Ð ð/ð /Ø.Bð/ñ /ô /Ð+ð /3¯iªið 8ð 8Ø5Tð8ñ 8ô 8ñ /ô /Ð+ð (WÐ4SÐ'VÐ'VÐ'VÐ$ð3ð 3à0ð3ñ 3ô 3Ð/ð
 ).¯
ª
ð 3ð 3à?ð3ñ 3ô 3ñ )ô )Ð%ð  ˆNÝ$Ð%9Ñ:Ô:ð 2ñ 2‘��4ð '+§i¢iØ3°B°Q°BÔ7Ø�hñà5°a¸!±e°g°gÔ>ñ?ñ'ô 'Ð#ð
 EÐ.AÐDÐDÐD�	ØAÀ!ÔD×MÒMØ"ð Nñ ô �ð  )ÐOÐO¨t¬yÐOÐO¸;ÐOÐOÐO�	ð : ¤Ð9Ð9Ð9�
ØlÐ/NÈqÔ/QÐlÐlÐ^hÐlÐlÐl�ð &(Ð"Ø"×)Ò)¨YÐ*=Ð*=Ð*=Ñ>Ô>Ð>å(Ð)=Ñ>Ô>ð ð ‘G�A�tØ˜A’v�vØ*×1Ò1Ð2M¸¼Ð2MÐ2MÐ2MÑNÔNÐNÐNà*×1Ò1ØC 4¤9ÐCÐC°t´yÐCÐCÐCñô ð ð ð #×)Ò)¨-Ñ8Ô8Ð8Ø%)§Y¢YÐ/AÑ%BÔ%BÐ"à×%Ò%ðØðð à$ðð ð ,ðð ð ñô ð ñ ð #'§)¢)¨NÑ";Ô";Ðð +/¯)ª)Ø��3Ð>Ñ?Ô?Ñ?ñ+ô +Ð'ð
 #lÐLgÐ"kÐ"kÐ"kÐØ*ˆKð Ø)ð ð  ð )ð ð  ð /ð	 ð  ð  ÐÐð #%ÐØ!ÐðØ!ðð Ø-9ðð àðð ð ðð ð ð	ð ð !ð	ð ð ðavð vð vð vñ vô vð vð vð vð vð vð vøøøð vð vð vð vð vð vs   žJ;K&Ë&K*Ë-K*r_  rD   c                óæ   — t          | j        j        j        ¦  «        }|                     d¦  «        s|                     d¦  «        rdS | j        j        j        €dS |                     | ¦  «        S )NÚ_likeÚnew_F)r…   r‹   r´   ÚendswithÚ
startswithrÔ   rQ  rg  )r¼   r_  r´   s      r_   Úneeds_backend_selectrî  Ç  si   € ÝˆqŒvŒ{ÔÑ Ô €DØ‡}‚}�WÑÔð  §¢°Ñ!8Ô!8ð ØˆuØ„vÔÔ&Ð.ØˆuØ×/Ò/°Ñ2Ô2Ð2r`   c                  ó<   — e Zd ZU ded<   ded<   edd	„¦   «         Zd
S )ÚComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]rq  rD   r_  r¼   r4   rn   r  c                óÆ  — t          || j        ¦  «        sd S t          j        |j        ¦  «        }t          |j        d¬¦  «        }d„ |                     ¦   «         D ¦   «         }t          j        |j        ¦  «        }|}| 	                    ¦   «         }d}| j
        t          j        u rþ|r^|j        j                             ¦   «         st          d|j        › �¦  «        ‚d                     d„ |D ¦   «         ¦  «        }	d|› d	|	› d
�}
n;|j        j                             ¦   «         rt          d|j        › �¦  «        ‚d|› d�}
d|j        › d|                     |¦  «        › d|
› d|j        j                             ¦   «         › dd                     d„ |D ¦   «         ¦  «        › d�S | j
        t          j        u rd|j        j        › d|› d�S t'          | j
        ¦  «         d S )NT©rB  c                ó‚   — g | ]<}t          |j        t          ¦  «        ¯|j        j                             ¦   «         ¯:|‘Œ=S rr   )r˜   r   r&   r›   rL  r*  s     r_   rõ   z1ComputeBackendSelect.__call__.<locals>.<listcomp>ä  sT   € ð 
ð 
ð 
àÝ˜!œ*¥hÑ/Ô/ð
ð 56´J´O×4RÒ4RÑ4TÔ4Tð
Øð
ð 
ð 
r`   z.c10::computeDispatchKey(dtype, layout, device)z'Expected function to have tensor args: r&  c              3  ó$   K  — | ]}|j         V — Œd S rq   rz  r*  s     r_   rv   z0ComputeBackendSelect.__call__.<locals>.<genexpr>û  s$   è è € Ð'KÐ'K°1¨¬Ð'KÐ'KÐ'KÐ'KÐ'KÐ'Kr`   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(r5  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3  ó$   K  — | ]}|j         V — Œd S rq   r(  r*  s     r_   rv   z0ComputeBackendSelect.__call__.<locals>.<genexpr>  s$   è è € Ð7Ð7 �a”fÐ7Ð7Ð7Ð7Ð7Ð7r`   r¦  zm.impl("aten::z", TORCH_FN(z));)rî  r_  Únativer´   r‹   r   rÔ   r   r}  r.  rq  rK   r‚  Úhas_tensor_argrš   r  r�  r~  ÚREGISTRATIONr   )r[   r¼   r´   Ú
native_sigrS  Údispatcher_sigr  Údispatcher_exprsrj   rT  Ú
compute_dks              r_   rk  zComputeBackendSelect.__call__Û  se  € å# A t¤}Ñ5Ô5ð 	Ø�4åŒ{˜1œ6Ñ"Ô"ˆå$ Q¤V°DÐ9Ñ9Ô9ˆ
ð
ð 
à×)Ò)Ñ+Ô+ð
ñ 
ô 
Ðõ -Ô8¸¼Ñ@Ô@ˆð ˆØ)×/Ò/Ñ1Ô1ÐØGˆàŒ;�&Ô+Ð+Ð+ð
 "ð Ø”vÔ'×6Ò6Ñ8Ô8ð Ý(ØJÀ!Ä&ÐJÐJñô ð ð #ŸišiÐ'KÐ'KÐ8JÐ'KÑ'KÔ'KÑKÔK�ðMØ.:ðMð MØdoðMð Mð M�
�
ð
 ”6Ô#×2Ò2Ñ4Ô4ð Ý(ØNÀaÄfÐNÐNñô ð ð QÀÐPÐPÐPð ðØ
Œ&ðð ð ‡‚ˆ$�„ðð ð ð	ð ð
 ”F”K×0Ò0Ñ2Ô2ðð ð �IŠIÐ7Ð7Ð&6Ð7Ñ7Ô7Ñ7Ô7ðð ð ð ð Œ[�FÔ/Ð/Ð/ØJ a¤f¤kÐJÐJ¸tÐJÐJÐJÐJå˜œÑ%Ô%Ð%Ð%Ð%r`   Nrl  rŠ  rr   r`   r_   rð  rð  Ó  sO   € € € € € € à;Ð;Ð;Ñ;ð ÐÐÑà ð8&ð 8&ð 8&ñ !Ô ð8&ð 8&ð 8&r`   rð  Údatac                ó’   — d„ t           _        d
d„}t          j        t          |¦  «         t	          j        | dt           d¬	¦  «        S )Nc                ó   — dS )NTrr   )r[   rý  s     r_   r�   zformat_yaml.<locals>.<lambda>   s   € °4€ r`   Údumperr
   rý  rn   c                óP   — |                       |                     ¦   «         ¦  «        S rq   )Úrepresent_dictrz   )r   rý  s     r_   Údict_representerz%format_yaml.<locals>.dict_representer#  s   € Ø×$Ò$ T§Z¢Z¡\¤\Ñ2Ô2Ð2r`   Fg    eÍÍA)Údefault_flow_styleÚDumperÚwidth)r   r
   rý  r
   rn   r
   )rL   Úignore_aliasesÚadd_representerr   rº   Údump)rý  r  s     r_   Úformat_yamlr
    sR   € à 7Ð 7…JÔð3ð 3ð 3ð 3õ Ô�{Ð,<Ñ=Ô=Ð=õ Œ9�T¨e½JÈcÐRÑRÔRÐRr`   c                óª   — | dk    rdS | dk    rdS 	 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  s…   € ØˆF‚{€{ØˆtØ	
ˆgŠˆØˆuðÝ�1‰vŒvˆøÝð ð ð ð	Ý˜‘8”8ˆOˆOˆOøÝð 	ð 	ð 	ØˆHˆHˆHˆHˆHð	øøøðøøøs)   ’! ¡
A¬=ºA½AÁ	AÁAÁAÚtr=   c                óÒ   — t          | t          ¦  «        rt          | j        ¦  «        S t	          | ¦  «        dk    rdS t          j        | ddd¬¦  «                             ¦   «         S )NÚTensorz
at::TensorFÚ__placeholder__)Úmutabler¿  rB  )r˜   r8   Údynamic_typer·  r…   r   Úargumenttype_typerÅ  )r  s    r_   r  r  I  si   € Ý�!•\Ñ"Ô"ð $Ý˜AœFÑ#Ô#Ð#õ ˆ1�v„v�ÒÐØˆ|åÔ Ø	�5Ð 1¸%ðñ ô ç‚h�j„jðr`   r™  úset[Variant]c                ó˜   — dg}t           j        | v r|                     d¦  «         t           j        | v r|                     d¦  «         |S )Nr=   r  Ú	namespace)r>   r>  rŸ   r˜  )r™  Ú	method_ofs     r_   Úcompute_method_of_yamlr  V  sT   € ð �€IÝ„~˜Ð!Ð!Ø×Ò˜Ñ"Ô"Ð"ÝÔ˜8Ð#Ð#Ø×Ò˜Ñ%Ô%Ð%ØÐr`   ú+tuple[list[dict[str, str]], dict[str, str]]c                óÜ  — i }t          j        | ¦  «        }g }t          t          | j        j        |¦  «        ¦  «        D ]©\  }\  }}t          |j        ¦  «        |t          j        |d¬¦  «         	                    ¦   «         dœ}|j
        rG|j
        |d<   | j                             ¦   «         r$|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¤n°eÑ"<Ô"<Ñ=Ô=ð ð ‰ˆ‰9ˆAˆtå(¨¬Ñ0Ô0Øå”O A¨eÐ4Ñ4Ô4×=Ò=Ñ?Ô?ð	
ð 
ˆð Œ6ð 	Jà !¤ˆC�ÑØŒv×ÒÑ!Ô!ð JØCDÄ6Ð" 1¤6Ô#3Ô#7¸Ô#:Ô#?Ñ@à�Š�sÑÔÐÐàÐ&Ð&Ð&r`   Úcpp_ar   Úschema_orderÚkwarg_only_setÚout_arg_setr#  údict[str, str]c               ó.  — 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 d S )Nzat::TensorOptionsFT)Ú
annotationr  Úis_nullabler´   r›   Ú
kwarg_onlyr  ©r)  r*  r+  r#  )
r˜   r   r<   r´   r›   r  r:   rš   r&   Úcompute_argument_yaml)r(  r)  r*  r+  r#  rß   s         r_   Úcompute_cpp_argument_yamlr3  ¤  sµ   € õ �%”.Õ"8Ñ9Ô9ð 
àØ/Ø Ø”JØ”JØð"
ð "
ˆð Œ=Ð$Ø"œ]ˆC�	‰NØˆ
Ý	�E”N¥LÑ	1Ô	1ð 	
ÝÐÝ	�E”N¥HÑ	-Ô	-ð 
Ý$ØŒNØ%Ø)Ø#Ø1ð
ñ 
ô 
ð 	
ð
ð 
r`   r+  r&   c          	     ób  — | j         rt          | j         ¦  «        nd t          | j        ¦  «        | j                             ¦   «         | j        t          j        | dd¬¦  «                             ¦   «         dœ}| j	        �1t          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        �"t          |j        ¦  «        dk    r
|j        |d<   |S )Nr  F)r¿  rB  )r.  r  r/  r´   r›   rò  r  Tr0  r  Úallocater  r‡   Úsize)r.  r…   r  r›   r/  r´   r   rÀ  rÅ  r  r  Údefault_exprÚis_list_liker6  r·  )r+  r)  r*  r+  r#  rß   Úls          r_   r2  r2  Ä  s>  € ð ,-¬<ÐA•c˜!œ,Ñ'Ô'Ð'¸TÝ$ Q¤VÑ,Ô,Ø”v×)Ò)Ñ+Ô+Ø”åÔ! !Ð+<ÀUÐKÑKÔK×TÒTÑVÔVðð €Cð 	„yÐÝ*ÝÔ˜QœY¨¬°uÐ=Ñ=Ô=ñ
ô 
ˆˆI‰ð 	„v�ÐÐØ ˆˆLÑØ„v�ÐÐØˆˆH‰ØˆˆJ‰àŒ6Ð'Ð'Ð'Ø 2°1´6Ô :ˆC�Ñð 	
Œ×ÒÑÔ€AØ€}˜œÐ+µ°A´F±´¸vÒ0EÐ0EØ”fˆˆF‰Ø€Jr`   c                ór  ‡‡‡— t          | ¦  «        \  }Šd„ | j        j        j        D ¦   «         Šd„ | j        j        j        D ¦   «         Št          j        | dd¬¦  «        }|j                             ¦   «         }ˆˆˆfd„|D ¦   «         }t          | j         	                    ¦   «         ¦  «        }ˆˆˆfd„|D ¦   «         }d„ |D ¦   «         }t          j        | j        j        d¬¦  «                             ¦   «         }|› d	d
                     |¦  «        › d�}	t          d„ |D ¦   «         ¦  «        ot           j        | j        v}
t'          dt          j        | j        ¦  «        fdt+          | j        j        j        ¦  «        fdt+          | j        j        j        ¦  «        fd| j        fd| j        �| j        ndfdd| j        › �fd|fd|	fd|fdt3          | j        ¦  «        fdd| j        €dn| j        fd|fd| j        j        j        j        fd|
fd| j        fd| j        fd d!d"| j        fg¦  «        S )#Nc                ó   — h | ]	}|j         ’Œ
S rr   rz  r*  s     r_   ú	<setcomp>z+compute_declaration_yaml.<locals>.<setcomp>î  s   € ÐGÐGÐG �a”fÐGÐGÐGr`   c                ó   — h | ]	}|j         ’Œ
S rr   rz  r*  s     r_   r<  z+compute_declaration_yaml.<locals>.<setcomp>ï  s   € Ð8Ð8Ð8˜a�1”6Ð8Ð8Ð8r`   Fr=  c           	     ó8   •— g | ]}t          |d ‰‰‰¬¦  «        ‘ŒS )Fr1  )r3  )rs   r(  r*  r#  r+  s     €€€r_   rõ   z,compute_declaration_yaml.<locals>.<listcomp>õ  sI   ø€ ð 	ð 	ð 	ð õ 	"ØØØ)Ø#Ø1ð	
ñ 	
ô 	
ð	ð 	ð 	r`   c           	     ó8   •— g | ]}t          |d ‰‰‰¬¦  «        ‘ŒS )Tr1  )r2  )rs   r+  r*  r#  r+  s     €€€r_   rõ   z,compute_declaration_yaml.<locals>.<listcomp>  sI   ø€ ð 	ð 	ð 	ð õ 	ØØØ)Ø#Ø1ð	
ñ 	
ô 	
ð	ð 	ð 	r`   c           
     ón   — g | ]2}t          j        |d t          ¦   «         d d d ¬¦  «        D ]	}|j        ‘Œ
Œ3S )F)r>  Úcpp_no_default_argsÚfaithfulrB  Úhas_tensor_options)r   r   r¯   r›   )rs   r+  r%  s      r_   rõ   z,compute_declaration_yaml.<locals>.<listcomp>  sj   € ð ð ð ð Ý”ØØÝ #¡¤ØØØ$ð
ñ 
ô 
ð	ð ð ð 	
Œðð ð ð r`   rò  z (r&  rM  c              3  óJ   K  — | ]}t          |j        t          ¦  «        V — Œd S rq   )r˜   r   r<   r*  s     r_   rv   z+compute_declaration_yaml.<locals>.<genexpr>   s/   è è € ÐMÐM¸q�J�q”zÕ#9Ñ:Ô:ÐMÐMÐMÐMÐMÐMr`   r´   Úoperator_namer€  r
  Úcategory_overriderw   Ú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   rA  rE  r™   rJ  r   Úreturns_typer!  rÅ  r  Úanyr>   r>  r™  r   r´   r…   r€  r
  rF  r  rL  rÖ   Úis_abstractr•   r  )r¼   r!  r›  Úcpp_argsrÔ   Úschema_order_jit_argumentsrJ  Úcpp_schema_order_typesÚcpp_returnsrI  rM  r*  r#  r+  s              @@@r_   Úcompute_declaration_yamlrZ  è  sÍ  øøø€ å"6°qÑ"9Ô"9Ñ€GÐð HÐG a¤fÔ&6Ô&FÐGÑGÔG€NØ8Ð8 1¤6Ô#3Ô#7Ð8Ñ8Ô8€Kå!Ô6Ø	�%¨%ðñ ô €Ið Ô"×,Ò,Ñ.Ô.€Hð	ð 	ð 	ð 	ð 	ð 	ð ð	ñ 	ô 	€Iõ "& a¤f×&CÒ&CÑ&EÔ&EÑ!FÔ!FÐð	ð 	ð 	ð 	ð 	ð 	ð ,ð	ñ 	ô 	Ððð ð ,ðñ ô Ðõ Ô" 1¤6¤>¸%Ð@Ñ@Ô@×IÒIÑKÔK€KØ$/Ð!WÐ!W°4·9²9Ð=SÑ3TÔ3TÐ!WÐ!WÐ!WÐõ 	ÐMÐMÀHÐMÑMÔMÑMÔMð 	-ÝŒN !¤*Ð,ð õ
 à•S”X˜aœfÑ%Ô%Ð&Ø�c !¤&¤+Ô"2Ñ3Ô3Ð4Ø�c !¤&¤+Ô";Ñ<Ô<Ð=Ø)¨1Ô+GÐHà#Ø'(Ô':Ð'F�Ô#Ð#ÈBðð Ð/ q¤vÐ/Ð/Ð0Ø˜)Ð$Ø)Ð+EÐFØ%Ð'=Ð>ØÕ0°´Ñ<Ô<Ð=ØØ A¤OÐ$;˜b˜bÀÄÐQØ˜Ð Ø˜œœÔ(Ô0Ð1Ø Ð"3Ð4Ø˜œÐ'Ø˜Qœ^Ð,ØØ!Ø Ô HÐIð/	
ñô ð r`   c                ó¾   — | j         s	| j        d uoM| j                             ¦   «         t          j        k    p&| j                             ¦   «         t          j        k    S rq   )rÑ   rÐ   r‹   Úkindr9   Ú
functionalrÖ   r¯  s    r_   Ú"has_autogenerated_composite_kernelr^  B  sJ   € ØŒLÐ=˜AÔ1¸Ð=ð Ø	Œ�Š‰Œ�Ô.Ò.ÐU°!´&·+²+±-´-Å:ÔCUÒ2Uðr`   údict[DispatchKey, BackendIndex]c           	     óŒ  ‡ — t          j        ‰ j        ¦  «        }t          j        ‰ j        j        ¦  «                             ¦   «         }t          j        ‰ j        ¦  «        }d                     d„ |D ¦   «         ¦  «        }d‰ j        › �t          ˆ fd„| 	                    ¦   «         D ¦   «         t          j        hk    o9ˆ fd„| 	                    ¦   «         D ¦   «         t          j        t          j        hk    ¦  «        t          ‰ j        pt          ‰ ¦  «        ¦  «        dœ}|› d|› d|› d	t          j        |¦  «        › d
�S )Nr&  c              3  ób   K  — | ]*}|                      ¦   «                              ¦   «         V — Œ+d S rq   )Ú
no_defaultrš  r*  s     r_   rv   z4compute_registration_declarations.<locals>.<genexpr>O  s6   è è € Ð=Ð=°1˜Ÿš™œ×,Ò,Ñ.Ô.Ð=Ð=Ð=Ð=Ð=Ð=r`   rH  c                óD   •— h | ]\  }}|                      ‰¦  «        ¯|’ŒS rr   ©rÿ   ©rs   r§   r¨   r¼   s      €r_   r<  z4compute_registration_declarations.<locals>.<setcomp>T  s,   ø€ ÐFÐFÐF‘4�1�a°a·l²lÀ1±o´oÐFˆQÐFÐFÐFr`   c                óD   •— h | ]\  }}|                      ‰¦  «        ¯|’ŒS rr   rd  re  s      €r_   r<  z4compute_registration_declarations.<locals>.<setcomp>V  s,   ø€ ÐJÐJÐJ‘t�q˜!¸!¿,º,Àq¹/¼/ÐJ�ÐJÐJÐJr`   )ÚschemaÚdispatchr  rÄ  r4  z); // ré   )Ú
dispatcherr´   r‹   rS  r!  rÅ  rÔ   r  r…   rz   r,   rö   r÷   Úhas_composite_kernelr^  ÚjsonÚdumps)r¼   rg   r´   rS  rÏ  rÐ  Úcomment_datas   `      r_   Ú!compute_registration_declarationsrn  H  sc  ø€ õ Œ?˜1œ6Ñ"Ô"€DÝÔ*¨1¬6¬>Ñ:Ô:×CÒCÑEÔE€LÝÔ ¤Ñ'Ô'€DØ�yŠyÐ=Ð=¸Ð=Ñ=Ô=Ñ=Ô=€Hà#˜1œ6Ð#Ð#åØFÐFÐFÐF˜?×0Ò0Ñ2Ô2ÐFÑFÔFÝÔ5Ð6ò7ð àJÐJÐJÐJ˜×4Ò4Ñ6Ô6ÐJÑJÔJåÔ5ÝÔAðòñ
ô 
õ �qÔ-ÐVÕ1SÐTUÑ1VÔ1VÑWÔWð$ð $€Lð ð ð ˜tð ð  hð ð µd´jÀÑ6NÔ6Nð ð ð ð r`   Ú"provided_op_registration_allowlistúlist[str] | NoneÚop_selection_yaml_pathc                óØ   — | �|�t          d¦  «        ‚d }| �t          | ¦  «        }|�t          j        |dd¦  «        }n*|�t          j        |¦  «        }n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)ro  rq  Úop_registration_allowlistr_  s       r_   Úget_custom_build_selectorrw  i  s•   € ð
 	+Ð6Ø"Ð.åð4ñ
ô 
ð 	
ð
 26ÐØ)Ð5Ý$'Ð(JÑ$KÔ$KÐ!à Ð,Ý#ÔJØ%ØØñ
ô 
ˆˆð
 
 Ð	+Ý#Ô2Ð3IÑJÔJˆˆå#Ô4Ñ6Ô6ˆà€Or`   ú3Sequence[NativeFunction | NativeFunctionsViewGroup]c                ó4  — d	d„}t          t          ¦  «        }| D ]Ï}|j                             ¦   «         }|j        }|t
          j        k    r\|j                             ¦   «         }|||         v r-t          d|› d||          	                    ¦   «         › �¦  «        ‚|||         |<   ŒŽ|||         v r,t          |› d||          	                    ¦   «         › �¦  «        ‚|||         |<   ŒÐt          t          ||                     ¦   «         ¦  «        ¦  «        S )
NÚdú1dict[ViewSchemaKind | SchemaKind, NativeFunction]rn   ú/list[NativeFunction | NativeFunctionsViewGroup]c                ó|  — g }t           j        | v r„|                      t           j        ¦  «        }|                      t           j        d ¦  «        }|                      t          j        d ¦  «        }|                     t          |||¬¦  «        ¦  «         |                     |  	                    ¦   «         ¦  «         |S )N)ÚviewÚ	view_copyÚview_inplace)
r?   Úaliasingr±   Úaliasing_inplacer9   r]  rŸ   r6   ÚextendrÍ  )rz  rŽ   r~  r€  r  s        r_   Úmaybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_group‹  s«   € ð BDˆÝÔ" aÐ'Ð'Ø—5’5�Ô0Ñ1Ô1ˆDØŸ5š5¥Ô!@À$ÑGÔGˆLØŸš�jÔ3°TÑ:Ô:ˆIà�LŠLÝ(ØØ'Ø!-ðñ ô ñô ð ð 	�Š�Q—X’X‘Z”ZÑ Ô Ð Øˆr`   zDuplicate schema kind z in z already in )rz  r{  rn   r|  )r   rœ   r‹   Úview_signatureÚview_schema_kindr?   Únon_aliasingr\  rš   rR  r™   rE   rÍ  )rf   r„  Úgrouped_by_viewsr¼   rg  Ú	view_kindr\  s          r_   Ú$get_grouped_by_view_native_functionsrŠ  ˆ  sQ  € ðð ð ð õ. 	•DÑÔð ð ð 4ð 4ˆØ”×&Ò&Ñ(Ô(ˆØ$%Ô$6ˆ	ð
 �Ô3Ò3Ð3Ø”6—;’;‘=”=ˆDØÐ'¨Ô/Ð/Ð/Ý$ØX¨TÐXÐXÐ7GÈÔ7O×7TÒ7TÑ7VÔ7VÐXÐXñô ð ð ./Ð˜VÔ$ TÑ*Ð*àÐ,¨VÔ4Ð4Ð4Ý$Ø ÐOÐOÐ.>¸vÔ.F×.KÒ.KÑ.MÔ.MÐOÐOñô ð ð 34Ð˜VÔ$ YÑ/Ð/å•	Ð1Ð3C×3JÒ3JÑ3LÔ3LÑMÔMÑNÔNÐNr`   ú/Sequence[NativeFunction | NativeFunctionsGroup]c           	     ó    — dd„}t          | ¦  «        }t          t          |t          |                     ¦   «         ¦  «        ¦  «        ¦  «        S )Nrz  ú dict[SchemaKind, NativeFunction]rn   r‹  c                ó.  — t          j        | ¦  «        }|€}t          d„ |                      ¦   «         D ¦   «         ¦  «        r1t	          dt          |                      ¦   «         ¦  «        › �¦  «        ‚t          |                      ¦   «         ¦  «        S |gS )Nc              3  ó(   K  — | ]}d |j         v V — ŒdS )Ú	generatedN)r­   ©rs   r¼   s     r_   rv   zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>Å  s)   è è € Ð=Ð=¨Q�; !¤&Ð(Ð=Ð=Ð=Ð=Ð=Ð=r`   zVGenerated NativeFunctions should have been grouped into NativeFunctionsGroup objects: )r5   Ú	from_dictrT  rÍ  rš   r™   )rz  r%  s     r_   Úflatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group¾  s˜   € õ !Ô*¨1Ñ-Ô-ˆØˆ9õ Ð=Ð=°!·(²(±*´*Ð=Ñ=Ô=Ñ=Ô=ð Ý$ðHÝ59¸!¿(º(¹*¼*Ñ5EÔ5EðHð Hñô ð õ ˜Ÿš™
œ
Ñ#Ô#Ð#à�3ˆJr`   )rz  r�  rn   r‹  )rC   r™   rE   rÍ  )rf   r“  Úpre_grouped_native_functionss      r_   Úget_grouped_native_functionsr•  »  s\   € ðð ð ð õ" $>Ð>NÑ#OÔ#OÐ ÝÝÐ#¥TÐ*F×*MÒ*MÑ*OÔ*OÑ%PÔ%PÑQÔQñô ð r`   )Únative_function_decl_genÚgrouped_native_functionsr–  úJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]údict[str, list[str]]c                óÞ  — t          t          ¦  «        }| D ]Õ}t          ¦   «         }t          ¦   «         }|                     ¦   «         D ]¢\  }}|                     |¦  «        }	|	r2|	j        }
|                     |¦  «         |                     |
¦  «         nt          }
t          |¦  «        dk    rt          d|› d|› �¦  «        ‚||
          
                     |||¦  «        ¦  «         Œ£ŒÖ|S )NrU   z6Codegen only supports one namespace per operator, got z from )r   r™   r¯   rz   r6  r7  r²   r*   rÙ   rš   rƒ  )r—  rg   r–  Úns_grouped_kernelsr¼   Únative_function_namespacesÚdispatch_keysrj   Úbackend_idxr8  r  s              r_   Úget_ns_grouped_kernelsrŸ  Õ  s3  € õ 0;½4Ñ/@Ô/@ÐØ%ð ð ˆÝ%(¡U¤UÐ"Ý™œˆØ)8×)>Ò)>Ñ)@Ô)@ð 	ð 	Ñ%ˆL˜+Ø*×5Ò5°aÑ8Ô8ÐØð 5Ø,Ô:�	Ø×!Ò! ,Ñ/Ô/Ð/Ø*×.Ò.¨yÑ9Ô9Ð9Ð9å4�	ÝÐ-Ñ.Ô.°Ò2Ð2Ý$ðMØ5ðMð MØ=JðMð Mñô ð ð ˜yÔ)×0Ò0Ø(Ð(¨¨KÑ8Ô8ñô ð ð ð	ð  Ðr`   r›  c           
     óF  — g }d}|                       ¦   «         D ]‡\  }}t          |dd¬¦  «        }t          t          j        |¦  «        ¦  «        }|                     d|j        › d|                     |¦  «        › d|j        › d� 	                    |¦  «        ¦  «         Œˆ|S )Nré   rw   é   ©Únamespace_strÚentity_nameÚ	max_levelú	
        )
rz   rJ   r™   r   Úfromkeysrƒ  Úprologuer  ÚepilogueÚsplit)r›  ÚdeclarationsÚnewliner  ÚkernelsÚ	ns_helperÚordered_kernelss          r_   Ú8get_native_function_declarations_from_ns_grouped_kernelsr°  ô  sÜ   € ð !€LØ€GØ0×6Ò6Ñ8Ô8ð 
ð 
Ñˆ	�7Ý#Ø#ØØð
ñ 
ô 
ˆ	õ �{Ô3°GÑ<Ô<Ñ=Ô=ˆØ×ÒðØ
Ôðð à‡‚ˆoÑÔðð ð Ôðð ð ÷ ŠE�'‰NŒNñ	
ô 	
ð 	
ð 	
ð Ðr`   c                óF   — 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.
    ©r—  rg   r–  )r›  )rŸ  r°  )r—  rg   r–  r›  s       r_   Ú get_native_function_declarationsr³    s?   € õ  0Ø!9Ø'Ø!9ðñ ô Ðõ
 DØ-ðñ ô ð r`   ú%NativeFunction | NativeFunctionsGrouprž  c           	     ó  — |                      | ¦  «        }|r^d|j        vrUt          | t          ¦  «        r| j        j        n| j        j        j        }t          d|› d|j        › d|j        › d�¦  «        ‚|r|j        nt          S )Nr1  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)
r6  r7  r˜   r4   r‹   r´   r]  rš   rj   r*   )r¼   rž  r8  Ú	func_names       r_   Úget_kernel_namespacer·  (  sÀ   € ð #×-Ò-¨aÑ0Ô0ÐØð 
˜JÐ.>Ô.LÐLÐLå% a­Ñ8Ô8ÐTˆAŒFŒKˆK¸a¼lÔ>OÔ>Tð 	õ ðe yð eð eØ!,Ô!9ðeð eà/Ô=ðeð eð eñ
ô 
ð 	
ð +;ÐXÐÔ&Ð&Õ@Xðr`   r{   ÚrocmrB  Úskip_dispatcher_op_registrationÚgen_dispatch_helpersc        	        ó¸  ‡‡‡‡‡‡‡— 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          ||¬¦  «         
                    dd¦  «        Š‰‰                               ||¦  «        ¦  «         ‰‰                               ||¦  «        ¦  «         t          |t          ¦  «        r|j        n|j        j        }||
‰         vrt          t          ¦  «        |
‰<   |
‰         |                               ||¦  «        ¦  «         Œã‰D ]»Št!          ‰‰         ¦  «        dk    rŒt#          ‰¬¦  «        ŠdŠ|
‰         D ]?}|
‰         |         sŒ‰d|› d	‰› d
|                     |
‰         |         ¦  «        › d�z  ŠŒ@|	                     |                      dˆˆˆˆˆˆˆfd„¦  «                             |¦  «        ¦  «         Œ¼|	S )Nré   ©r¸  rB  Úclass_method_namer¹  ©r¼   rž  r1  rw   r   )r£  z
TORCH_LIBRARY_IMPL(r&  z, m) {
    z
}zRegisterDispatchDefinitions.inic                 óp   •— ‰j         ‰j        ‰ ‰         ‰rdn‰d‰                     ¦   «         ‰‰         dœS )Nrw   )Úns_prologueÚns_epilogueÚdispatch_anonymous_definitionsÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_namespaceÚdispatch_namespaced_definitions)r¨  r©  r  )Úanonymous_definitionsrj   Úkernel_namespaceÚns_definitionsr®  Úregistration_bodyr¹  s   €€€€€€€r_   r�   z1get_native_function_definitions.<locals>.<lambda>‹  sR   ø€ Ø#,Ô#5Ø#,Ô#5Ø6KØ(ô7ð 7ð;+¸"¸"à*Ø79Ø*6×*<Ò*<Ñ*>Ô*>Ø7EÐFVÔ7Wðð € r`   )r   r™   rœ   ÚdestÚRegisterDispatchKeyrK   ÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONrø  r·  rì   rƒ  r˜   r4   r  r]  rÙ   rJ   r  Úsubstitute_with_templaterª  )r{   r—  rj   rž  r_  r¸  rB  r¹  rº  ÚdefinitionsÚregistrationsr¬  Úns_genÚanonymous_genÚreg_genr¼   r  rÇ  rÈ  rÉ  r®  rÊ  s     `    `         @@@@@r_   Úget_native_function_definitionsrÕ  <  s  øøøøøøø€ ð  €KÝ+6µtÑ+<Ô+<€NÝ2=½dÑ2CÔ2CÐÝ5@ÅÑ5FÔ5F€MØ€GÝÔ%ØÝÔ$ØØØØØ(Gðñ ô €Fõ Ô,ØÝÔ#ØØØØØ(Gðñ ô €Mõ Ô&ØÝÔØØØØØ(Gðñ ô €Gð &ð 
ð 
ˆÝ/°!ÀÐMÑMÔM×UÒUØ˜ñ
ô 
Ðð 	Ð'Ô(×/Ò/ØˆF�1‰IŒIñ	
ô 	
ð 	
ð 	Ð.Ô/×6Ò6ØˆM˜!ÑÔñ	
ô 	
ð 	
õ & a­Ñ8Ô8ÐTˆAŒKˆK¸a¼lÔ>Tð 	ð ˜MÐ*:Ô;Ð;Ð;Ý.9½$Ñ.?Ô.?ˆMÐ*Ñ+ØÐ&Ô'¨	Ô2×9Ò9ØˆG�A‰JŒJñ	
ô 	
ð 	
ð 	
ð +ð 
ð 
ÐÝˆ~Ð.Ô/Ñ0Ô0°AÒ5Ð5ØÝ#Ð2BÐCÑCÔCˆ	ØÐØ&Ð'7Ô8ð 	ð 	ˆIØ Ð!1Ô2°9Ô=ð ØØð "Øð"ð "Ø!-ð"ð "à‡\‚\�-Ð 0Ô1°)Ô<Ñ=Ô=ð"ð "ð "ñ ÐÐð 	×ÒØ×'Ò'Ø1ðð ð ð ð ð ð ð ð ð ñô ÷ Še�G‰nŒnñ!	
ô 	
ð 	
ð 	
ð& Ðr`   c           
     ó   — g }t          t          ¦  «        }d}t          j        |t          j        ||d d|¬¦  «        }	| D ]]}
t          |
|¬¦  «                             d|                     ¦   «         ¦  «        }||          	                     |	|
¦  «        ¦  «         Œ^| 
                    ¦   «         D ]›\  }}t          |¦  «        dk    rŒt          |dd¬	¦  «        }t          t          j        |¦  «        ¦  «        }| 	                    d|j        › d|                     |¦  «        › d|j        › d
�                     |¦  «        ¦  «         Œœ|S )Nré   F)r¸  r½  r¹  rB  r¾  rö  r   rw   é   r¢  r¦  )r   r™   rË  rÌ  rK   ÚNAMESPACED_DECLARATIONr·  rì   r  rƒ  rz   rÙ   rJ   r   r§  r¨  r  r©  rª  )r—  rj   rž  r_  r¸  rB  r«  r›  r¬  r‹   r¼   r  r­  r®  r¯  s                  r_   Úget_namespaced_declarationrÙ     s   € ð !€LÝ/:½4Ñ/@Ô/@ÐØ€GÝÔ#ØÝÔ%ØØØØ(-Øðñ ô €Dð &ð 
ð 
ˆÝ(¨1¸+ÐFÑFÔF×NÒNØ�l×(Ò(Ñ*Ô*ñ
ô 
ˆ	ð 	˜9Ô%×,Ò,ØˆD�‰GŒGñ	
ô 	
ð 	
ð 	
ð 1×6Ò6Ñ8Ô8ð 
ð 
Ñˆ	�7Ýˆw‰<Œ<˜1ÒÐØÝ#Ø#°¸qð
ñ 
ô 
ˆ	õ �{Ô3°GÑ<Ô<Ñ=Ô=ˆØ×ÒðØ
Ôðð à‡‚ˆoÑÔðð ð Ôðð ð ÷ ŠE�'‰NŒNñ	
ô 	
ð 	
ð 	
ð Ðr`   Úschema_selectorútuple[list[str], str]c           
     óˆ  — t          t          ¦  «        }| D ]"}||j                                      |¦  «         Œ#d}g }d }|                     ¦   «         D ]k\  }}t          t          t          |¦  «        |¦  «        ¦  «        }	|dk    r|	}Œ8|}d}
|t          v rdnd}|d|› d|› d|
                     |	¦  «        › d	�z  }Œl||fS )
Nrw   Úatenrë   ÚTORCH_LIBRARY_FRAGMENTÚTORCH_LIBRARYré   r4  z	, m) {
  z
};)	r   r™   r  rŸ   rz   rI   r^  r-   r  )rf   rÚ  Ú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è  Ð  s5  € õ
 <GÅtÑ;LÔ;LÐØ+ð Oð OˆØ˜OÔ5Ô6×=Ò=¸oÑNÔNÐNÐNØÐØ "ÐØÐØ/×5Ò5Ñ7Ô7ð ð Ñˆ	�5Ý$(Ý•^ OÑ4Ô4°eÑ<Ô<ñ%
ô %
Ð!ð
 ˜ÒÐØ(AÐ%Ð%à(ÐØˆCð
 Õ 3Ð3Ð3ð )Ð(à$ð  ð
 !ð %Øð%ð %Ø'ð%ð %à‡8‚8Ð%Ñ&Ô&ð%ð %ð %ñ Ð Ð ð &Ð';Ð<Ð<r`   Ústructured_native_functionsúSequence[NativeFunctionsGroup]Ústatic_dispatch_idxÚcpu_fmÚfunctions_keysúset[DispatchKey]r�  úSequence[DispatchKey]c           
     ó4  ‡ ‡‡‡‡‡‡
‡‡‡‡‡— |                      dˆfd„¦  «         d„ ‰ D ¦   «         Šˆfd„‰ D ¦   «         Š|                      dˆˆfd„¦  «         |                      dˆˆfd„¦  «         |                      d	ˆ ˆfd
„¦  «         t          ‰‰¬¦  «        Š|                      dˆfd„¦  «         |	D ]]Št          ‰||¦  «        }‰|v rEd‰› d�Š|                     ‰› d	�dˆˆfd„¦  «         |                     ‰› d�dˆˆˆˆ
ˆfd„¦  «         ~Œ^d S )NzNativeMetaFunctions.hc                 óN   •— g t          t          t          ‰ ¦  «        ¦  «        dœS )N)ÚNativeMetaFunctions_includesÚ NativeMetaFunctions_declarations©r™   rI   rè  )ré  s   €r_   r�   z(gen_aggregated_headers.<locals>.<lambda>  s.   ø€ Ø,.Ý04ÝÕ:Ð<WÑXÔXñ1ô 1ð
ð 
€ r`   c                ó8   — g | ]}t           j        |j        v ¯|‘ŒS rr   ©r>   r>  r™  ©rs   Úfns     r_   rõ   z*gen_aggregated_headers.<locals>.<listcomp>  s-   € ð ð ð Ø­¬¸2¼;Ð)FÐ)FˆÐ)FÐ)FÐ)Fr`   c                ó   •— g | ]}|‰v¯|‘Œ	S rr   rr   )rs   rø  Úmethod_native_functionss     €r_   rõ   z*gen_aggregated_headers.<locals>.<listcomp>  s+   ø€ ð #ð #ð #Ø¨Ð3JÐ)JÐ)JˆÐ)JÐ)JÐ)Jr`   úMethodOperators.hc            	     óv   •— g t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        dœS )N©rr  ©ÚMethodOperators_includesÚMethodOperators_declarations©r™   rI   ro  rK   r  )rú  rë  s   €€r_   r�   z(gen_aggregated_headers.<locals>.<lambda>  sL   ø€ Ø(*Ý,0ÝÝ$ÝÔ*Ø8Kðñ ô ð ,ñô ñ-ô -ð
ð 
€ r`   zOperators.hc            	     óx   •— 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>$  sO   ø€ Ø#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   rŒ  ©rf   rë  s   €€r_   r�   z(gen_aggregated_headers.<locals>.<lambda>3  sN   ø€ Ý-JØ#ñ.ô .ð $AÐ"AÝ&*ÝÝ#Ñ%Ô%Ø$ñô ñ'ô 'ð
ð 
€ r`   )r—  rg   zNativeFunctions.hc                 ó   •— dg‰ dœS )Nz%#include <ATen/NativeMetaFunctions.h>)ÚNativeFunctions_includesÚNativeFunctions_declarationsrr   )r«  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)rj   Úinline_headers©r…   ©rj   Úinl_headerss   €€r_   r�   z(gen_aggregated_headers.<locals>.<lambda>T  s   ø€ Ý$'¨Ñ$5Ô$5Ø&1ðð € r`   úFunctions_inl.húDispatchKeyFunctions_inl.hc            
     óf   •— g ‰                      ¦   «         t          ‰‰‰ ‰         ‰‰d¬¦  «        dœS )NT)r—  rj   rž  r_  r¸  rB  )Ú!DispatchKeyFunctions_inl_includesrÅ  Ú dispatch_namespaced_declarations)r  rÙ  )rg   rj   r—  r¸  r_  s   €€€€€r_   r�   z(gen_aggregated_headers.<locals>.<lambda>\  sJ   ø€ Ø9;Ø*6×*<Ò*<Ñ*>Ô*>Ý8RØ1IØ%1Ø$3°LÔ$AØ!)Ø!Ø#ð9ñ 9ô 9ðð € r`   )Úwriter³  r|   Úwrite_with_template)rf   r—  ré  rë  r_  rg   rì  rk   rí  r�  r¸  r{   r«  rj   r  rú  r  s   ``````    ` @@@@@r_   Úgen_aggregated_headersr  ô  sK  øøøøøøøøøøøø€ ð  ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ðð Ø%ðñ ô Ðð#ð #ð #ð #Ø%ð#ñ #ô #Ðð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 4Ø!9Ø'ðñ ô €Lð ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ð &ð ð ˆÝ+¨L¸*ÀfÑMÔMˆØ˜>Ð)Ð)ØJ¨LÐJÐJÐJˆKà×"Ò"ØÐ,Ð,Ð,Ø(ðð ð ð ð ñô ð ð ×"Ò"ØÐ0Ð0Ð0Ø,ðð ð ð ð ð ð ð ñô ð ð" ˆBð=ð r`   Úops_fmc                ó¾  ‡‡‡‡‡‡‡‡‡‡‡‡‡— t          t          ¦  «        Š| D ]"}‰|j                                      |¦  «         Œ#t          t          ¦  «        }|D ]$}|j        Š|‰                              |¦  «         Œ%‰                     ¦   «         D ]Ñ\  ŠŠ|                     ‰› d�dˆˆfd„¦  «         |                     ‰› d�dˆˆˆfd„¦  «         |                     ‰g ¦  «        }d„ |D ¦   «         Št          ‰¦  «        dk    Š‰r|                     ‰› d	�d
ˆfd„¦  «         t          ||t          j
        ¬¦  «        Š|                     ‰› d�dˆˆˆfd„¦  «         ŒÒdD ]#\  ŠŠ|                     ‰› d�ˆˆˆfd„¦  «         Œ$|	D �]2Š‰|vrŒ‰                     ¦   «         Šg Š‰                     ¦   «         D ]«\  ŠŠ|                     ‰g ¦  «        }t          t          t          j        |‰         t          j        ||
dd d¬¦  «        |¦  «        ¦  «        Št          ‰¦  «        dk    rŒu‰                     ‰¦  «         |                     ‰› d‰› d�dˆˆfd„¦  «         Œ¬t#          ‰||¦  «        }d‰› d�Š|                     ‰› d�dˆˆfd„¦  «         |                     ‰› d�dˆˆfd „¦  «         ~�Œ4|                     d!ˆfd"„¦  «         d S )#Nz_ops.hz
Operator.hc            	     ót   •— dt          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        iS )Nr«  rý  r  )Ú	functionsrë  s   €€r_   r�   z*gen_per_operator_headers.<locals>.<lambda>Œ  sF   ø€ Ø¥ÝÝ(Ý"Ô.Ø<Oðñ ô ð "ñô ñ!ô !ð
€ r`   z.hz
Function.hc                 ó¢   •— 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   rŒ  )r!  r´   rë  s   €€€r_   r�   z*gen_per_operator_headers.<locals>.<lambda>œ  sy   ø€ Ý/3Ýðð ð ð ð "ñ	ô ñ0ô 0ð &I¸4Ð%HÐ%HÐ%HÝ(,ÝÝ'Ñ)Ô)Ø!ñô ñ)ô )ðð € r`   c                óJ   — g | ] }t          |t          ¦  «        ¯|j        ¯|‘Œ!S rr   )r˜   r5   rÑ   r÷  s     r_   rõ   z,gen_per_operator_headers.<locals>.<listcomp>°  sE   € ð  
ð  
ð  
àÝ˜"Õ2Ñ3Ô3ð 
ð 9;¼ð 
Øð 
ð  
ð  
r`   r   z_meta.hzNativeMetaFunction.hc                 óL   •— 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ô 3ð€ r`   r²  z	_native.hzNativeFunction.hc                 ó   •— ‰rd‰› d�ng ‰ dœS )Nr  z_meta.h>)Úextra_includesÚnative_function_declarationsrr   )r«  Úis_structuredr´   s   €€€r_   r�   z*gen_per_operator_headers.<locals>.<lambda>Ë  s+   ø€ à<IÐQÐ8¨$Ð8Ð8Ð8Ð8Èrà0<ð	ð € r`   ))Ú	Functionsrw   )Ú	OperatorsÚ_ops)ÚNativeMetaFunctionsÚ_meta)ÚNativeFunctionsÚ_nativec                 ór   •— ‰ › d�ˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         ‰ › d�g iS )NÚ	_includesc                ó    •— g | ]
}d |› ‰› d�‘ŒS )r  ú.h>rr   )rs   r´   Úsuffixs     €r_   rõ   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>Ü  s9   ø€ ð )ð )ð )àð <¨$Ð;°Ð;Ð;Ð;ð)ð )ð )r`   Ú_declarations)rh  rR  )ÚcategoryÚfunctions_by_root_namer<  s   €€€r_   r�   z*gen_per_operator_headers.<locals>.<lambda>Û  sa   ø€ ØÐ&Ð&Ð&ð )ð )ð )ð )å &Ð'=×'BÒ'BÑ'DÔ'DÑ EÔ Eð)ñ )ô )ð Ð*Ð*Ð*¨Bð€ r`   TFr¼  r  z_dispatch.hzDispatchKeyFunction.hc                 ó   •— ‰‰ dœS )N)rÅ  r  rr   )r«  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Ô 1Ø"-ðð € r`   r  r  c                 óB   •— ‰ˆfd„t          ‰ ¦  «        D ¦   «         g dœS )Nc                ó"   •— g | ]}d |› d‰› d�‘ŒS )r  r  r	  rr   )rs   r´   rÅ  s     €r_   rõ   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>  s>   ø€ ð 6ð 6ð 6àð R¨$ÐQÐQÐ1CÐQÐQÐQð6ð 6ð 6r`   )rÅ  r  r  )rh  )Údispatch_namesrÅ  s   €€r_   r�   z*gen_per_operator_headers.<locals>.<lambda>  sE   ø€ Ø&8ð6ð 6ð 6ð 6å & ~Ñ 6Ô 6ð6ñ 6ô 6ð 57ðð € r`   rû  c                 ó`   •— t          d„ ‰                      ¦   «         D ¦   «         ¦  «        g dœS )Nc              3  óZ   K  — | ]&\  }}t          d „ |D ¦   «         ¦  «        ¯d|› d�V — Œ'dS )c              3  ó<   K  — | ]}t           j        |j        v V — Œd S rq   rö  r÷  s     r_   rv   zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>(  s+   è è € ÐIÐI¸•w”~¨¬Ð4ÐIÐIÐIÐIÐIÐIr`   r  r%  N)rT  )rs   r´   r!  s      r_   rv   z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>%  sb   è è € ð /ð /á#�D˜)ÝÐIÐI¸yÐIÑIÔIÑIÔIð/Ø3 dÐ3Ð3Ð3ð/ð /ð /ð /ð /ð /r`   rþ  )rh  rz   )r?  s   €r_   r�   z*gen_per_operator_headers.<locals>.<lambda>$  sI   ø€ Ý(.ð /ð /à'=×'CÒ'CÑ'EÔ'Eð/ñ /ô /ñ )ô )ð
 -/ð
ð 
€ r`   )r   r™   r  rŸ   rz   r  rx   rÙ   r³  rË  Ú#compute_native_function_declarationr  r  rE   rÌ  rK   rØ  r|   )rf   r—  rë  r_  rg   rì  rk   r  rí  r�  r¸  rø  Úgrouped_functions_by_root_nameÚgroupÚgrouped_functionsr{   r>  r«  rj   rD  rÅ  r!  r?  r  r0  r´   r,  r<  s     `             @@@@@@@@@@@@r_   Úgen_per_operator_headersrL  m  s§  øøøøøøøøøøøøø€ õ  ?JÍ$Ñ>OÔ>OÐØð 8ð 8ˆØ˜rœ|Ô,×3Ò3°BÑ7Ô7Ð7Ð7õ 	•DÑÔð #ð *ð ;ð ;ˆØŒˆØ& tÔ,×3Ò3°EÑ:Ô:Ð:Ð:à1×7Ò7Ñ9Ô9ð I
ð I
‰ˆˆiØ×"Ò"ØˆOˆOˆOØð
ð 
ð 
ð 
ð 
ñ	
ô 	
ð 	
ð  	×"Ò"ØˆKˆKˆKØðð ð ð ð ð ñ	
ô 	
ð 	
ð, ;×>Ò>¸tÀRÑHÔHÐð 
ð  
à'ð 
ñ  
ô  
Ðõ
 Ð0Ñ1Ô1°AÒ5ˆàð 	Ø×&Ò&ØÐ Ð Ð Ø&ðð ð ð ñ
ô 
ð 
õ 8Ø%6Ø+Ý%)Ô%Mð
ñ 
ô 
ˆð
 	×"Ò"ØÐÐÐØðð ð ð ð ð ñ		
ô 		
ð 		
ð 		
ðð 
ð 
Ñˆ�&ð 	�ŠØˆOˆOˆOðð ð ð ð ð ñ		
ô 		
ð 		
ð 		
ð &ð <ñ <ˆØ˜~Ð-Ð-Øà)×/Ò/Ñ1Ô1ÐØˆà5×;Ò;Ñ=Ô=ð 	ð 	‰OˆD�)Ø >× BÒ BÀ4ÈÑ LÔ LÐÝÝÝÔ,Ø'¨Ô5ÝÔ5Ø Ø!Ø#Ø*.Ø8=ðñ ô ð &ñô ñô ˆLõ �<Ñ Ô  AÒ%Ð%Øà×!Ò! $Ñ'Ô'Ð'Ø×&Ò&ØÐ9Ð9Ð,Ð9Ð9Ð9Ø'ðð ð ð ð ñô ð ð õ ,¨L¸*ÀfÑMÔMˆØF¨ÐFÐFÐFˆà
×ÒØÐ(Ð(Ð(Ø$ðð ð ð ð ñ	
ô 	
ð 	
ð 	×ÒØÐ,Ð,Ð,Ø(ðð ð ð ð ñ	
ô 	
ð 	
ð ‰Bà
‡L‚LØð	
ð 	
ð 	
ð 	
ñ
ô 
ð 
ð 
ð 
r`   Úheaderonly_fmÚcore_fmÚper_operator_headersc                ó¸  ‡ ‡‡‡— |rt          ‰ |‰|‰|	|
||||¬¦  «         nt          ‰ ||‰|‰|	|
|||¬¦  «         |                     dˆ ˆfd„¦  «         |	                     dˆ fd„¦  «         |	                     dˆˆ fd„¦  «         |	                     d	ˆ fd
„¦  «         dˆ fd„}|                     d|¦  «         dˆfd„}|                     d|¦  «         d S )N)rf   r—  rë  r_  rg   rì  rk   r  r�  rí  r¸  )rf   r—  ré  rë  r_  rg   rì  rk   r�  rí  r¸  zTensorBody.hc            	     óÞ   •— t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        t          t          t          t          j        ‰¬¦  «        ‰ ¦  «        ¦  «        dœS )N)rq  rr  )Útensor_method_declarationsÚtensor_method_definitions)r™   rI   r¢  rK   r  r‚  r
  s   €€r_   r�   zgen_headers.<locals>.<lambda>a  s…   ø€ Ý*.ÝÝ'Ý%Ô1Ø8Kðñ ô ð %ñô ñ+ô +õ *.ÝÝ'Ý%Ô0Ø8Kðñ ô ð %ñô ñ*ô *ð
ð 
€ r`   zRedispatchFunctions.hc                 óZ   •— dt          t          t          ¦   «         ‰ ¦  «        ¦  «        iS )NÚfunction_redispatch_definitions)r™   rI   r«  ©rf   s   €r_   r�   zgen_headers.<locals>.<lambda>y  s.   ø€ Ø-­tÝÕ2Ñ4Ô4Ð6FÑGÔGñ0ô 0ð
€ r`   zRegistrationDeclarations.hc                 ó$   •— dˆ fd„‰D ¦   «         iS )NÚregistration_declarationsc                ó0   •— g | ]}t          |‰¦  «        ‘ŒS rr   )rn  )rs   r¼   rg   s     €r_   rõ   z1gen_headers.<locals>.<lambda>.<locals>.<listcomp>ƒ  s3   ø€ ð *ð *ð *àõ 2°!°_ÑEÔEð*ð *ð *r`   rr   )rg   rf   s   €€r_   r�   zgen_headers.<locals>.<lambda>‚  s3   ø€ Ø'ð *ð *ð *ð *à)ð*ñ *ô *ð
€ r`   zVmapGeneratedPlumbing.hc                 ó"   •— t          ‰ ¦  «        S rq   r$   rV  s   €r_   r�   zgen_headers.<locals>.<lambda>‹  s   ø€ Õ+@ÐAQÑ+RÔ+R€ r`   rn   r,  c                 ó&  •— t          ¦   «         } t          ¦   «         }‰D ]’}|                     t          |j        j        j        ¦  «        ¦  «         |                     |j        j        j        j        ¦  «         |                      d„ |j                             ¦   «         D ¦   «         ¦  «         Œ“|h d£z  }d                     d„ t          |¦  «        D ¦   «         ¦  «        d                     d„ t          | ¦  «        D ¦   «         ¦  «        dœS )Nc              3  ó$   K  — | ]}|j         V — Œd S rq   rz  )rs   rß   s     r_   rv   zAgen_headers.<locals>.gen_aten_interned_strings.<locals>.<genexpr>—  s$   è è € ÐPÐP c˜œÐPÐPÐPÐPÐPÐPr`   >   ÚorÚandÚnotÚxorÚbitorÚcomplÚor_eqÚand_eqÚbitandÚnot_eqÚxor_eqz \
c                ó   — g | ]}d |› d�‘Œ	S )z_(aten, rM  rr   ©rs   r´   s     r_   rõ   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>«  ó$   € Ð>Ð>Ð>¨Ð#˜DÐ#Ð#Ð#Ð>Ð>Ð>r`   c                ó   — g | ]}d |› d�‘Œ	S )z_(attr, rM  rr   ri  s     r_   rõ   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>®  rj  r`   )Úaten_symbolsÚattr_symbols)
r¯   r²   r…   r‹   r´   r×   ÚupdaterJ  r  rh  )Úattrsr$  r‹   rf   s      €r_   Úgen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_stringsŽ  s  ø€ Ý™%œ%ˆÝ‘”ˆØ$ð 	Qð 	QˆDØ�IŠI•c˜$œ)œ.Ô-Ñ.Ô.Ñ/Ô/Ð/ð �IŠI�d”i”nÔ)Ô.Ñ/Ô/Ð/à�LŠLÐPÐP¨T¬Y×-MÒ-MÑ-OÔ-OÐPÑPÔPÑPÔPÐPÐPð 	ð 
ð 
ð 
ñ 	
ˆð $ŸLšLØ>Ð>µ°u±´Ð>Ñ>Ô>ñô ð $ŸLšLØ>Ð>µ°u±´Ð>Ñ>Ô>ñô ð	
ð 
ð 	
r`   zaten_interned_strings.hc                 óL   •— dd                      t          ‰ ¦  «        ¦  «        iS )NÚenum_of_valid_tagsz,
)r  rh  )r€   s   €r_   Úgen_tags_enumz"gen_headers.<locals>.gen_tags_enum´  s"   ø€ Ø$ u§z¢zµ&¸Ñ2DÔ2DÑ'EÔ'EÐGÐGr`   z
enum_tag.h)rn   r,  )rL  r  r  )rf   r€   r—  ré  rë  r_  rg   rM  rN  rì  rk   r  r�  rí  r¸  rO  rp  rs  s   ``  ` `           r_   Úgen_headersrt  /  s¾  øøøø€ ð& ð 
Ý Ø-Ø%=Ø 3ØØ+ØØ!ØØ'Ø)Øð	
ñ 	
ô 	
ð 	
ð 	
õ 	Ø-Ø%=Ø(CØ 3ØØ+ØØ!Ø'Ø)Øð	
ñ 	
ô 	
ð 	
ð ‡M‚MØð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð0 ‡L‚LØð	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØ$ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡L‚LØ!Ð#RÐ#RÐ#RÐ#Rñô ð ð"
ð "
ð "
ð "
ð "
ð "
ðH ‡M‚MÐ+Ð-FÑGÔGÐGðHð Hð Hð Hð Hð Hð ×Ò˜ mÑ4Ô4Ð4Ð4Ð4r`   Úview_groupsú"Sequence[NativeFunctionsViewGroup]Úaoti_fmÚ
cpu_vec_fmÚforce_schema_registrationÚupdate_aoti_c_shimÚaoti_backendsúset[DispatchKey | None]Úextend_aoti_c_shimc                ó¬  ‡ ‡‡‡‡‡‡‡‡‡‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-— d}‰rd}|D �]+Š$t          ‰$||
¦  «        Š&|rdKˆ"ˆ$ˆ%ˆˆfd„}ndKˆ$ˆfd„}‰‰$         Š"t          t          ¦  «        }‰D ]E}t          |t          ¦  «        r|j        n|j        j        }||                              |¦  «         ŒFt          ‰$¦  «         	                    ¦   «         Š%‰$t          j        k    Š(t          ‰$¦  «        r|nddt          j        ‰"|‰¦  «         |¦   «         ‰(rt          j        ‰"¦  «        ng dœ}dLˆ"ˆ$ˆ&ˆ(ˆˆˆfd„}‰&                     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 rS‰&|
urt/          d¦  «        ‚‰&                     d‰*› d�dˆˆ$ˆ'fd„¦  «         |	                     d‰*› d�dˆ'ˆ*fd„¦  «         Œ•‰$t          j        u r)dŠ#‰rdŠ#‰&                     d‰*› d�d ˆˆ#ˆ$ˆ'ˆ*fd!„¦  «         ŒÌt/          d"‰$› d#�¦  «        ‚‹&�Œ-t5          ||‰ ‰‰|||¬$¦  «         dMˆ ˆfd%„}|
                     d&|¦  «         ‰}|rt9          j        ¦   «         }t=          ‰ |¬'¦  «        \  Š!Š+|
                     d(ˆ!ˆ+ˆfd)„¦  «         dNd-„}|
                     d.‰ |ˆfd/„d0tA          ‰¦  «        id1h d2£¬3¦  «         |
                     d4tB          ¦  «         |                     d5tB          ¦  «         |                     d6ˆ fd7„¦  «         dOd9„Š)dPˆˆ)ˆfd:„}t          ‰¦  «        t          ‰¦  «        z   } d;„ tE          d<„ ‰¦  «        D ¦   «         Š,d=„ tE          d>„ ‰¦  «        D ¦   «         Š-|  #                    ˆ,ˆ-fd?„‰ D ¦   «         ¦  «         |
                     d@| ||dh dA£¬B¦  «         |
                     dCˆˆfdD„¦  «         |
                     dEˆˆfdF„¦  «         |
                     dGˆ)ˆˆfdH„¦  «         |
                     dIˆˆˆfdJ„¦  «         d S )QNz‹#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>rn   r  c                 ó6  •— g } ‰D ]ø}d}‰                      |¦  «        rd}nht          |t          ¦  «        r0t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        rd}n#|j        r‰t          j        t          j        fv rd}|sŒ‡|  	                    d|j
        › d�¦  «         ‰t          j        k    r|  	                    d|j
        › d�¦  «         ‰‰v r!|  	                    d|j
        › d‰› d�¦  «         Œùt          t          | ¦  «        ¦  «        S )	NFTc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rq   rd  )rs   rø  rü   s     €r_   rv   z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>î  sJ   øè è € ð Eð EØ9;˜×0Ò0°Ñ4Ô4ðEð Eð Eð Eð Eð Er`   r  ú
_native.h>r;  r  r	  )rÿ   r˜   r5   rT  r!  rÑ   r,   ÚMetarù   rŸ   r  rh  r¯   )Úheadersr±  Úis_registeredrü   rj   rÅ  rí  r—  s      €€€€€r_   Úoperator_headersz*gen_source_files.<locals>.operator_headersâ  s‚  ø€ Ø�Ø1ð "ð "�AØ$)�MØ$×/Ò/°Ñ2Ô2ð -Ø(,˜˜õ $ AÕ';Ñ<Ô<ð -Åð Eð Eð Eð EØ?@¿{º{¹}¼}ðEñ Eô Eñ Bô Bð -ð )-˜˜ð œð -¨,Ý#Ô(Ý#ÔJð;ð +ð +ð )-˜Ø(ð !Ø à—N’NÐ#P¸¼Ð#PÐ#PÐ#PÑQÔQÐQà$Ý&ÔMòNð Nð  ŸšÐ'M¸Q¼[Ð'MÐ'MÐ'MÑNÔNÐNØ# ~Ð5Ð5ØŸšØ`°!´+Ð`Ð`Ð@RÐ`Ð`Ð`ñô ð øõ �c '™lœlÑ+Ô+Ð+r`   c                 ó’   •— dg} ‰t           j        k    r|                      d¦  «         ‰‰v r|                      d‰›d�¦  «         | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>r  r  )r,   rù   rŸ   )rƒ  rj   rí  s    €€r_   r…  z*gen_source_files.<locals>.operator_headers	  sZ   ø€ Ø>Ð?�Ø¥;Ô#UÒUÐUØ—N’NÐ#@ÑAÔAÐAØ >Ð1Ð1Ø—N’NÐ#Q°\Ð#QÐ#QÐ#QÑRÔRÐRØ�r`   rw   )Úextra_cuda_headersÚexternal_backend_headersÚdispatch_headersÚops_headersÚdispatch_helpersÚgnfr´  r™  c                ó:   •— dt          ‰| g‰‰‰‰d‰‰¬¦	  «	        iS )NÚdispatch_definitionsT)	r{   r—  rj   rž  r_  r¸  rB  r¹  rº  )rÕ  )rŒ  rü   rj   r{   rº  r¸  r_  r¹  s    €€€€€€€r_   Ú"register_dispatch_key_env_callablez<gen_source_files.<locals>.register_dispatch_key_env_callable7	  sA   ø€ ð 'Õ(GØØ.1¨UØ!-Ø -Ø%ØØØ4SØ)=ð
)ñ 
)ô 
)ðð r`   ÚRegisterz.cppzRegisterDispatchKey.cppc                ó   — | j         S rq   ©r  )Úxs    r_   r�   z"gen_source_files.<locals>.<lambda>L	  s   € ˜Qœ[€ r`   r¡  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                 ó€   •— t          ‰¦  «        t          j        ‰‰ ‰         ¦  «        t          j        ‰¦  «        dœS )N)Úmeta_declarationÚnative_declarationÚnative_definitions)rè  rË  rH  Úcompute_ufunc_cpu)rg   rj   r±  s   €€€r_   r�   z"gen_source_files.<locals>.<lambda>]	  sD   ø€ Ý,MÈaÑ,PÔ,PÝ.2Ô.VØ˜¨|Ô<ñ/ô /õ /3Ô.DÀQÑ.GÔ.Gðð € r`   ÚUfuncCPUKernel_zUfuncCPUKernel.cppc                 ó2   •— ‰t          j        ‰ ¦  «        dœS )N)r´   r�  )rË  Úcompute_ufunc_cpu_kernel)r±  r´   s   €€r_   r�   z"gen_source_files.<locals>.<lambda>h	  s    ø€ Ø $Ý.2Ô.KÈAÑ.NÔ.Nðð € r`   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>Ú
UfuncCUDA_z.cuzUfuncCUDA.cuc                 ó„   •— ‰‰t          ‰¦  «        t          j        ‰‰ ‰         ¦  «        t          j        ‰¦  «        dœS )N)r´   Úcuda_headersr›  rœ  r�  )rè  rË  rH  Úcompute_ufunc_cuda)rg   r¤  rj   r±  r´   s   €€€€€r_   r�   z"gen_source_files.<locals>.<lambda>t	  sJ   ø€ Ø $Ø(4Ý,MÈaÑ,PÔ,PÝ.2Ô.VØ˜¨|Ô<ñ/ô /õ /3Ô.EÀaÑ.HÔ.Hðð € r`   zunrecognized z
 for ufunc)rw  r{  rf   rg   ré  r‡  rz  r}  c            
     ó  •— ˆfd„‰D ¦   «         } d„ | D ¦   «         t          t          t          t          j        ‰¦  «        | ¦  «        ¦  «        t          t          t          t          j        ‰¦  «        | ¦  «        ¦  «        dœS )Nc                ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS rr   )rî  )rs   rø  r_  s     €r_   rõ   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>�	  s9   ø€ ð 
ð 
ð 
ØÕ-AÀ"ÀhÑ-OÔ-Oð
Øð
ð 
ð 
r`   c                ó$   — g | ]}d |j         › d�‘ŒS )r  r%  r’  r÷  s     r_   rõ   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>”	  s3   € ð ð ð Ø@BÐ; b¤lÐ;Ð;Ð;ðð ð r`   )rŠ  Ú!backend_select_method_definitionsÚ%backend_select_function_registrations)r™   rI   rð  rK   r‚  rø  )Úrelevant_fnsrf   r_  s    €€r_   Úgen_backend_selectz,gen_source_files.<locals>.gen_backend_select�	  s²   ø€ ð
ð 
ð 
ð 
Ø)ð
ñ 
ô 
ˆðð ØFRðñ ô õ 26ÝÝ(­Ô):¸HÑEÔEÀ|ñô ñ2ô 2õ
 6:ÝÝ(­Ô)<¸hÑGÔGÈñô ñ6ô 6ð
ð 
ð 	
r`   zRegisterBackendSelect.cpp)rf   rÚ  zRegisterSchema.cppc                 ó   •— ‰rg n‰ ‰rg n‰dœS )N)rã  râ  rr   )rã  râ  r¹  s   €€€r_   r�   z"gen_source_files.<locals>.<lambda>±	  s-   ø€ à.ð*+¨¨à*à.ð%& B Bà%ð
ð 
€ r`   rø  ú@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroupr…   c                ó   — | j         S rq   r’  )rø  s    r_   Úkey_funcz"gen_source_files.<locals>.key_func»	  s   € ð Œ|Ðr`   zOperators.cppc                óh   •— d| j         › d�g t          t          j        ‰¬¦  «        | ¦  «        gdœS )Nr  r;  rý  )r…  rÐ  )r  ro  rK   r‚  r$  s    €r_   r�   z"gen_source_files.<locals>.<lambda>Ä	  sV   ø€ Ø!H°r´|Ð!HÐ!HÐ!HÐ IðÕ ÝÔ%Ø4Gðñ ô ð ñô ðð!
ð !
€ r`   r  é   >   rÐ  r…  r  )r”  r•  r—  r–  r˜  zFunctions.cppzTensorMethods.cppzATenOpList.cppc                 óL   •— dt          t          t          ‰ ¦  «        ¦  «        iS )NÚaten_ops)r™   rI   r°  rV  s   €r_   r�   z"gen_source_files.<locals>.<lambda>à	  s"   ø€ Ø��X¥oÐ7GÑHÔHÑIÔIð
€ r`   r±  c                óB  — t          | t          ¦  «        rLd| j        j        › d�d| j        j        › d�g}| j        �#|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        �#|d| j        j        › d�d| j        j        › d�gz  }| j	        �#|d| j	        j        › d�d| j	        j        › d�gz  }|S d| j        › d�d| j        › d�gS )Nr  r�  r%  )
r˜   r6   r~  r  r  r5   r]  rÈ  rÖ   r  )r±  rƒ  s     r_   Úgen_op_headersz(gen_source_files.<locals>.gen_op_headerså	  s¢  € õ �aÕ1Ñ2Ô2ð "	ð C a¤fÔ&6ÐBÐBÐBØ? a¤fÔ&6Ð?Ð?Ð?ðˆGð Œ{Ð&ØØK¨!¬+Ô*?ÐKÐKÐKØH¨!¬+Ô*?ÐHÐHÐHðñ �ð ˆNÝ˜Õ/Ñ0Ô0ð 	àH a¤lÔ&<ÐHÐHÐHØE a¤lÔ&<ÐEÐEÐEØA a¤e¤oÐAÐAÐAØ> a¤e¤oÐ>Ð>Ð>ð	ˆGð ŒyÐ$ØØI¨!¬)Ô*=ÐIÐIÐIØF¨!¬)Ô*=ÐFÐFÐFðñ �ð ŒyÐ$ØØI¨!¬)Ô*=ÐIÐIÐIØF¨!¬)Ô*=ÐFÐFÐFðñ �ð ˆNð > a¤kÐ=Ð=Ð=Ø: a¤kÐ:Ð:Ð:ðð r`   c                ó|   •—  ‰| ¦  «        t          ‰| ¦  «        t          ‰| ‰t          j                 ¦  «        dœS )N)rŠ  Úfunc_definitionsÚfunc_registrations)r   r   r,   rö   )r±  rg   r¶  r_  s    €€€r_   Úfunctionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable
  sU   ø€ ð *˜>¨!Ñ,Ô,Ý @ØØñ!ô !õ #EØØØ¥Ô EÔFñ#ô #ð
ð 
ð 	
r`   c                ó(   — i | ]}|j         j        |“ŒS rr   ©r‹   r´   r‘  s     r_   ú
<dictcomp>z$gen_source_files.<locals>.<dictcomp>&
  s.   € ð :ð :ð :àð 	
ŒŒ�Qð:ð :ð :r`   c                óD   — t          |                      ¦   «         ¦  «        S rq   ©r™   r!  ©r±  s    r_   r�   z"gen_source_files.<locals>.<lambda>(
  s   € ¥T¨!¯+ª+©-¬-Ñ%8Ô%8€ r`   c                ó(   — i | ]}|j         j        |“ŒS rr   r¼  r‘  s     r_   r½  z$gen_source_files.<locals>.<dictcomp>*
  s+   € ð 4ð 4ð 4ØˆŒŒ�Qð4ð 4ð 4r`   c                óD   — t          |                      ¦   «         ¦  «        S rq   r¿  rÀ  s    r_   r�   z"gen_source_files.<locals>.<lambda>+
  s   € µD¸¿º¹¼Ñ4GÔ4G€ r`   c              3  óT   •K  — | ]"}|j         j        ‰v¯|j         j        ‰v¯|V — Œ#d S rq   r¼  )rs   r¼   Ústructured_mapÚview_maps     €€r_   rv   z#gen_source_files.<locals>.<genexpr>-
  sL   øè è € ð ð àØŒ6Œ;˜nÐ,Ð,°´´ÀHÐ1LÐ1Lð 	
à1LÐ1LÐ1LÐ1Lðð r`   zRegisterFunctionalization.cpp>   rŠ  r¸  r¹  Úfunc_add_back_views_definitionsÚ!func_add_back_views_registrations)r”  r•  r–  r˜  zFunctionalInverses.hc                 óH   •— dt          t          ˆ fd„‰¦  «        ¦  «        iS )NÚview_inverse_declarationsc                ó$   •— t          ‰| ¦  «        S rq   )r    ©r±  r_  s    €r_   r�   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>G
  s   ø€ ÕLØ  !ñô € r`   )r™   rI   ©r_  ru  s   €€r_   r�   z"gen_source_files.<locals>.<lambda>D
  s?   ø€ Ø'­Ýðð ð ð ð  ñ	ô ñ*ô *ð	
€ r`   zViewMetaClasses.hc                 óH   •— dt          t          ˆ fd„‰¦  «        ¦  «        iS )NÚview_meta_declarationsc                ó$   •— t          ‰| ¦  «        S rq   )r!   rË  s    €r_   r�   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>U
  ó   ø€ ÕJÈ8ÐUVÑWÔW€ r`   ©r™   rE   rÌ  s   €€r_   r�   z"gen_source_files.<locals>.<lambda>R
  s5   ø€ Ø$¥dÝØWÐWÐWÐWØñô ñ'ô 'ð
€ r`   zViewMetaClasses.cppc                 ó€   •— t          t          ˆfd„‰¦  «        ¦  «        t          t          ‰ ‰¦  «        ¦  «        dœS )Nc                ó$   •— t          ‰| ¦  «        S rq   )r"   rË  s    €r_   r�   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>a
  rÐ  r`   )Úview_meta_implementationsÚ
op_headersrÑ  )r¶  r_  ru  s   €€€r_   r�   z"gen_source_files.<locals>.<lambda>^
  sO   ø€ Ý)-ÝØWÐWÐWÐWØñô ñ*ô *õ �y¨¸ÑEÔEÑFÔFð
ð 
€ r`   zCompositeViewCopyKernels.cppc            	     ó0  •— d„ ‰D ¦   «         d„ ‰D ¦   «         z   t          t          t          ‰ t          j                 ¦  «        ‰¦  «        ¦  «        t          t          t
          ‰¦  «        ¦  «        t          t          t          ‰¦  «        ¦  «        dœS )Nc                ó‚   — g | ]<}d                       d„ |j        €|j        gn|j        |j        gD ¦   «         ¦  «        ‘Œ=S )ré   c              3  ó<   K  — | ]}d |j         › d|j         › d�V — ŒdS )r  ú_ops.h>
#include <ATen/ops/r�  Nr’  r‘  s     r_   rv   z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>}
  sb   è è € ð 	ð 	ð ðB¨!¬+ð Bð Bð +,¬+ð	Bð Bð Bð	ð 	ð 	ð 	ð 	ð 	r`   )r  r  r~  ©rs   r±  s     r_   rõ   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>|
  sn   € ð ð ð ð ð —	’	ð 	ð 	ð %&¤KÐ$7˜œ˜˜¸a¼fÀaÄkÐ=Rð	ñ 	ô 	ñ 	ô 	ðð ð r`   c                óp   — g | ]3}d                       d„ |j        |j        |j        fD ¦   «         ¦  «        ‘Œ4S )ré   c              3  óR   K  — | ]"}|®d|j         v¯d|j        › d|j        › d�V — Œ#d S )Nr�  r  rÙ  r�  )r­   r  r‘  s     r_   rv   z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>Š
  sl   è è € ð ð ð Ø�}¨¸A¼FÐ)BÐ)Bð	B¨!¬+ð Bð Bà*+¬+ðBð Bð Bð *CÐ)BÐ)BÐ)Bðð r`   )r  rÖ   r  r]  rÚ  s     r_   rõ   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>‰
  sc   € ð 	ð 	ð 	ð ð —	’	ð ð ð  œi¨¬°A´LÐAð	ñ ô ñ ô ð	ð 	ð 	r`   )rŠ  Ú#CompositeViewCopyKernel_DefinitionsÚ(GeneratedCompositeFunctional_DefinitionsÚ!GeneratedCompositeOut_Definitions)r™   rI   r#   r,   rù   rA   rB   )rg   ré  ru  s   €€€r_   r�   z"gen_source_files.<locals>.<lambda>{
  sÑ   ø€ ðð ð %ðñ ô ð	ð 	ð 5ð	ñ 	ô 	ñõ. 48ÝÝ.Ø'Ý'ÔNôñô ð
  ñô ñ	4ô 	4õ 9=ÝÝ3Ø/ñô ñ9ô 9õ 26ÝÝ,Ø/ñô ñ2ô 2ðQ.
ð .
€ r`   )rn   r  )rŒ  r´  rn   r™  )rn   r™  )rø  r®  rn   r…   )r±  r®  rn   r  )r±  r®  rn   r™  )$r|   r   r™   r˜   r4   r  r]  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   ru  rè  Úwrite_shardedr  rœ   rE   rƒ  ).rf   r—  ré  ru  r_  rë  rg   rw  rN  rx  rì  rk   r�  rí  r¸  ry  rO  r¹  rz  r{  r}  r‡  r…  Úns_grouped_native_functionsÚgrouped_native_functionr  Úregister_dispatch_key_base_envr�  r¬  rÚ  r°  rº  Ú
all_groupsrã  rü   r¤  rj   rÅ  r{   r±  rº  r¶  r´   râ  rÄ  rÅ  s.   ```````      ``  `               @@@@@@@@@@@@@r_   Úgen_source_filesrë  º  sÏ  øøøøøøøøøøøøøøøøøøøøøøø€ ð0&Ðð
 ð $ð$Ðð &ð cñ cˆÝ+¨L¸*ÀfÑMÔMˆØð 2	ð&,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ð &,ðTð ð ð ð ð ð ð (¨Ô5ˆÝ&1µ$Ñ&7Ô&7Ð#Ø'?ð 	Sð 	SÐ#õ Ð5µ~ÑFÔFðBÐ'Ô1Ð1à,Ô7ÔAð ð
 (¨	Ô2×9Ò9Ð:QÑRÔRÐRÐRå  Ñ.Ô.×4Ò4Ñ6Ô6Ðð
 �KÔMÒMð 	õ $ LÑ1Ô1ð#Ð"4Ð"4àØ(*Ý $Ô =ØÐ3°Tñ!ô !ð ,Ð+Ñ-Ô-ð (ð•Ô-¨mÑ<Ô<Ð<àð*
ð *
Ð&ð"	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð" 	×&Ò&Ø)�|Ð)Ð)Ð)Ø%Ø$Ø(Ð(Ø;Ø(­K¬OÒ;Ð;�q�qÀØ3Ø0Ð1ð 	'ñ 		
ô 		
ð 		
ð -ð ,	Oð ,	OˆAØ”5Ô)ð Õ1FÀ|Ñ1TÔ1Tð ØØ”<Ô$Ô)Ô.ˆDØ�{œÐ.Ð.Ø˜VÐ#Ð#Ý(Ð)WÑXÔXÐXØ×&Ò&Ø* Ð*Ð*Ð*Ø"ðð ð ð ð ð ñ
ô 
ð 
ð ×.Ò.Ø0 dÐ0Ð0Ð0Ø(ðð ð ð ð ñô ð ð ð ¥Ô!1Ð1Ð1ØF�Øð JØ#I�LØ×&Ò&Ø* Ð*Ð*Ð*Ø"ðð ð ð ð ð ð ð ñô ð ð õ %Ð%M°\Ð%MÐ%MÐ%MÑNÔNÐNà‰BåØØ#Ø)Ø'Ø$?Ø-Ø-Ø-ð	ñ 	ô 	ð 	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð( ‡L‚LÐ,Ð.@ÑAÔAÐAà€OØ ð >Ý*Ô;Ñ=Ô=ˆõ
 	1Ø)¸?ð	ñ 	ô 	ñØ!Øð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñ
ô 
ð 
ðð ð ð ð
 ×ÒØØØð
ð 
ð 
ð 
ð ,Õ-JØ#ñ.ô .ð
ð
 ð
ð 
ð 
ð' ñ ô ð ð4 ‡L‚L�¥$Ñ'Ô'Ð'à‡M‚MÐ%¥tÑ,Ô,Ð,à‡M‚MØð	
ð 	
ð 	
ð 	
ñô ð ð%ð %ð %ð %ðN
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ$ 	Ð(Ñ)Ô)­DØñ-ô -ñ 	ð ð:ð :åÐ8Ð8Ð:UÑVÔVð:ñ :ô :€Nð4ð 4Ý )Ð*GÐ*GÈÑ UÔ Uð4ñ 4ô 4€Hð ×Òð ð ð ð ð à!ðñ ô ñ ô ð ð ×ÒØ'ØØØ3Øð
ð 
ð 
ð ñ ô ð ð ‡L‚LØð		
ð 		
ð 		
ð 		
ð 		
ñô ð ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ñ
ô 
ð 
ð ‡L‚LØð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð: ‡L‚LØ&ð.	
ð .	
ð .	
ð .	
ð .	
ð .	
ñ1ô 1ð 1ð 1ð 1r`   c                ó:   ‡— |                       dˆfd„¦  «         d S )NzDeclarations.yamlc                 ó6   •— t          d„ ‰ D ¦   «         ¦  «        S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rr   )rZ  r‘  s     r_   rõ   z;gen_declarations_yaml.<locals>.<lambda>.<locals>.<listcomp>²
  s!   € ÐSÐSÐS¸QÕ5°aÑ8Ô8ÐSÐSÐSr`   )r
  rV  s   €r_   r�   z'gen_declarations_yaml.<locals>.<lambda>²
  s   ø€ •ÐSÐSÐBRÐSÑSÔSÑTÔT€ r`   )r  )rì  rf   s    `r_   Úgen_declarations_yamlrï  ­
  s4   ø€ ð ‡L‚LØØTÐTÐTÐTñô ð ð ð r`   r	   c                 óX   — t          t          ¦  «        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Úresolverr   r`   r_   Úget_torchgen_rootrô  ¶
  s   € õ
 •‰>Œ>Ô ×(Ò(Ñ*Ô*Ð*r`   c                 óh  ‡%‡&‡'— t          j        d¬¦  «        } |                      dddd¬¦  «         |                      dd	d
¬¦  «         |                      ddd¬¦  «         |                      ddd¬¦  «         |                      ddddd¬¦  «         |                      dddd¬¦  «         |                      dddd ¬¦  «         |                      ddd¬¦  «         |                      d dd!¬¦  «         |                      d"dd#¬¦  «         |                      d$dd%¬¦  «         |                      d&d'd(d)¬*¦  «         |                      d+d,d-¬¦  «         |                      d.d/d(d0¬*¦  «         |                      d1d2d(d3¬*¦  «         |                      d4d5dd6¬¦  «         |                      d7d8dd9¬¦  «         |                      d:t          d(g d;¢g d;¢d<¬=¦  «         |                      d>dd?¬¦  «         |                      d@ddA¬¦  «         |                      ¦   «         Š't          ‰'j        ‰'j        ¦  «        }t          j	         
                    ‰'j        dB¦  «        }t          j	         
                    ‰'j        dC¦  «        }dDdEl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          j        t          j        t          j        hŠ%‰'j        s‰'j        r5|                     ‰%¦  «         |                     t          j        ¦  «         n(|                     ‰%¦  «         ˆ%fdF„|D ¦   «         |d d …<   ‰'j        s‰'j        r?|                     t          j         ¦  «         |                     t          j         ¦  «         nM|                     t          j         ¦  «         t          j         |v r || !                    t          j         ¦  «        = ‰'j"        sM|                     t          j        ¦  «         t          j        |v r || !                    t          j        ¦  «        = ‰'j#        rˆ'fdG„|D ¦   «         }tI          |||¦  «        }tJ          |         }	|j&        |j'        c}
Š&tQ          |
¦  «        }dH„ |D ¦   «         }tS          |
¦  «        }dI„ |D ¦   «         }‰'j*        › dJ�}tW          |¦  «         ,                    dKdK¬L¦  «         ‰'j*        › dM�}tW          |¦  «         ,                    dKdK¬L¦  «         ‰'j-        › }tW          |¦  «         ,                    dKdK¬L¦  «         ‰'j.        �‰'j.        }n‰'j*        �‰'j*        › dJ�}ndN}tW          |¦  «         ,                    dKdK¬L¦  «         t_          ‰'|¬O¦  «        }t_          ‰'¬P¦  «        }t_          ‰'¬P¦  «        }t_          ‰'¬P¦  «        }t_          ‰'|¬O¦  «        }t_          ‰'|¬O¦  «        }t_          ‰'|¬O¦  «        }dQ|i}‰'j        rt_          ‰'¬P¦  «        |dR<   g }‰'j0        rJˆ&fdS„‰'j0        D ¦   «         }‰'j0        D ]/}t          j1        |¦  «        }||vr|                     |¦  «         Œ0dT‰'j2        v rgtg          dui dU|
“dV|“dW|“dX|“dY|“dZ|“d[‰&“d\|“d]|“d^|“d_|“d`|“da|“db|“dc‰'j4        “dd‰'j5        “de‰'j6        “df‰'j7        “dg‰'j        “dh|“di‰'j8        “Ž dj‰'j2        v rDts          dui dU|
“dk|	“dV|“dW|“dZ|“dY|“d[‰&“dl|“d]|“d_|“d`|“dm|“da|“db|“dc‰'j4        “de‰'j6        “Ž dn‰'j2        v rtu          |
|¬o¦  «         ‰'j;        rœtW          ‰'j;        ¦  «         <                    ¦   «         }|j=        }|j>        } |dpf|dqf|drf|dsfgdt„ | ?                    ¦   «         D ¦   «         z   D ]<\  }!}"|"| z   }#|j@        |"|z   z  }$|! A                    |#t          |$¦  «        ¦  «         Œ;d S d S )vNz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--headeronly-install-dirz--headeronly_install_dirz¨output directory for header-only generated files (e.g. enum_tag.h). Defaults to `<install-dir>/core` when --install-dir is set, otherwise `build/torch/headeronly/core`.z--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)rƒ  Ú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   )r�  c                ó   •— g | ]}|‰v¯|‘Œ	S rr   rr   )rs   r§   ÚMPS_KEYSs     €r_   rõ   zmain.<locals>.<listcomp>p  s#   ø€ ÐJÐJÐJ !¸ÀÐ8IÐ8I˜AÐ8IÐ8IÐ8Ir`   c                ó^   •— g | ])}t          |¦  «        st          |¦  «        ‰j        v ¯'|‘Œ*S rr   )r0   r…   Úbackend_whitelist)rs   r§   Úoptionss     €r_   rõ   zmain.<locals>.<listcomp>‚  sI   ø€ ð 
ð 
ð 
àÝ& qÑ)Ô)ð
õ .1°©V¬V°wÔ7PÐ-PÐ-Pð à-PÐ-PÐ-Pr`   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rr   )r˜   r5   rÚ  s     r_   rõ   zmain.<locals>.<listcomp>‘  s8   € ð #ð #ð #Ø­z¸!Õ=QÑ/RÔ/Rð#Ø	ð#ð #ð #r`   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rr   )r˜   r6   rÚ  s     r_   rõ   zmain.<locals>.<listcomp>—  s9   € ð ð ð àÝ�aÕ1Ñ2Ô2ðØ	ðð ð r`   z/coreT)ÚparentsÚexist_okz/opszbuild/torch/headeronly/core)r  Úinstall_dir)r  ÚcudaÚxpuc                óD   •— g | ]}‰t          j        |¦  «                 ‘ŒS rr   )r,   Úparse)rs   Úkeyrg   s     €r_   rõ   zmain.<locals>.<listcomp>Æ  s9   ø€ ð 
ð 
ð 
àð �KÔ-¨cÑ2Ô2Ô3ð
ð 
ð 
r`   rü  rf   r—  ré  ru  r_  rë  rg   rw  rN  rx  rì  rk   r�  rí  r¸  ry  rO  r¹  rz  r{  r}  rƒ  r€   rM  r  rý  )rf   rì  rw   Úcpu_vec_Úcore_Úops_c                ó"   — g | ]\  }}||› d �f‘ŒS )r  rr   )rs   ru   Ú	device_fms      r_   rõ   zmain.<locals>.<listcomp>	  s(   € ÐSÐSÐSÑ+<¨6°9ˆi˜F˜˜˜Ð&ÐSÐSÐSr`   rr   )BÚargparseÚArgumentParserÚadd_argumentr…   Ú
parse_argsrw  Úop_registration_whitelistrq  Úosr„   r  Úsource_pathÚtorchgen.modelr�  r,   rã  rå  rö   r÷   rø   rù   r‚  ÚMTIAr¯   ÚMPSÚ	SparseMPSÚSparseCsrMPSÚmpsrz  rn  r²   r
  ÚXPUr–   Úmtiar  rÂ   ri   rf   rg   r•  rŠ  r  r	   ÚmkdirÚaoti_install_dirÚheaderonly_install_dirrH   Ústatic_dispatch_backendr  Úgeneraterë  r¸  ry  rO  r¹  r}  rt  rï  Úoutput_dependenciesró  r´   Ústemrz   rò  Úwrite_outputs)(Úparserr_  Únative_yaml_pathr¿   r�  rí  r{  r‚   Úparsed_yamlr€   rf   r—  ré  Ú!native_functions_with_view_groupsru  Úcore_install_dirÚops_install_dirr#  r$  rN  rì  rx  Úcuda_fmr  rw  rM  rk   rë  r  Údp_keyÚdepfile_pathÚdepfile_nameÚdepfile_stemr{   r¥  Úvarnamer„   r   rg   r  s(                                        @@@r_   Úmainr6  ¾
  s¹  øøø€ ÝÔ$Ð1MÐNÑNÔN€FØ
×ÒØØØ0Øð	 ñ ô ð ð ×ÒØØØIð ñ ô ð ð
 ×ÒØØØDð ñ ô ð ð
 ×ÒØ ØØAð ñ ô ð ð
 ×ÒØØØØØ%ð ñ ô ð ð ×ÒØØØ4Ø:ð	 ñ ô ð ð ×ÒØ"Ø"ð)ð ð ñ ô ð ð ×ÒØØØLð ñ ô ð ð
 ×ÒØØØ6ð ñ ô ð ð
 ×ÒØØØ6ð ñ ô ð ð
 ×ÒØØØ7ð ñ ô ð ð ×ÒØ%Ø%Øð-ð	 ñ ô ð ð ×ÒØ"Ø"ðMð ñ ô ð ð ×ÒØØØð*ð	 ñ ô ð ð ×ÒØ#Ø#ØØNð	 ñ ô ð ð ×ÒØ+Ø+ØØ?ð	 ñ ô ð ð ×ÒØ%Ø%ØðCð	 ñ ô ð ð ×ÒØÝØØ;Ð;Ð;Ø;Ð;Ð;Ø.ð ñ ô ð ð ×ÒØØðMð ñ ô ð ð ×ÒØØðMð ñ 	ô 	ð 	ð ×ÒÑ!Ô!€Gå(ØÔ)ØÔ&ñô €Hõ
 ”w—|’| GÔ$7Ð9WÑXÔXÐÝ”W—\’\ 'Ô"5Ð7IÑJÔJ€Nà,Ð,Ð,Ð,Ð,Ð,õ
 	ŒÝÔÝÔ-ÝÔ9ÝÔ-ÝÔ:ÝÔÝÔð	€Nõ 	ŒÝÔð 	ð€Mõ ‘%”%€Kå”¥Ô!6½Ô8PÐQ€HØ„{ð K�gÔ0ð KØ×Ò˜hÑ'Ô'Ð'Ø×Ò�+œ/Ñ*Ô*Ð*Ð*à×Ò˜8Ñ$Ô$Ð$ØJÐJÐJÐJ }ÐJÑJÔJˆ�a�a�aÑà„{ð D�gÔ0ð DØ×Ò�;œ?Ñ+Ô+Ð+Ø×Ò�+œ/Ñ*Ô*Ð*Ð*à�Š�œÑ(Ô(Ð(åŒ?˜mÐ+Ð+Ø˜m×1Ò1µ+´/ÑBÔBÐCàŒ<ð EØ�Š�Ô(Ñ)Ô)Ð)åÔ˜}Ð,Ð,Ø˜m×1Ò1µ+Ô2BÑCÔCÐDàÔ ð 
ð
ð 
ð 
ð 
à"ð
ñ 
ô 
ˆõ $Ð$4°nÀkÑRÔR€KÝ.¨~Ô>€JàÔ$ØÔ#ð &Ð�oõ
  <Ð<LÑMÔMÐð#ð #Ø+ð#ñ #ô #Ðõ )MØñ)ô )Ð%ðð à2ðñ ô €Kð  "Ô-Ð4Ð4Ð4ÐÝÐ	ÑÔ× Ò ¨¸Ð Ñ=Ô=Ð=Ø Ô,Ð2Ð2Ð2€OÝˆÑÔ×Ò¨°tÐÑ<Ô<Ð<à!Ô2Ð4ÐÝÐ	ÑÔ× Ò ¨¸Ð Ñ=Ô=Ð=àÔ%Ð1Ø!(Ô!?ÐÐØ	Ô	Ð	(Ø$+Ô$7Ð!>Ð!>Ð!>ÐÐà!>ÐÝÐ	Ñ Ô ×&Ò&¨t¸dÐ&ÑCÔCÐCå¨Ð=MÐNÑNÔN€GÝ wÐ/Ñ/Ô/€FÝ"¨7Ð3Ñ3Ô3€JÝ¨Ð0Ñ0Ô0€GÝ w¸OÐLÑLÔL€FÝ¨Ð=MÐNÑNÔN€GÝ%ØÐ%;ðñ ô €Mð ˜'Ð"€JØ„{ð ?Ý-°gÐ>Ñ>Ô>ˆ
�5Ñà.0ÐØÔ&ð +ð
ð 
ð 
ð 
àÔ6ð
ñ 
ô 
Ðð Ô2ð 	+ð 	+ˆCÝ Ô& sÑ+Ô+ˆFØ˜^Ð+Ð+Ø×"Ò" 6Ñ*Ô*Ð*øà�GÔ$Ð$Ð$Ýð 	
ð 	
ð 	
Ø-Ð-ð	
à%=Ð%=ð	
ð )DÐ(Cð	
ð $˜ð		
ð
 �Xð	
ð !4Ð 3ð	
ð ,˜Oð	
ð �Gð	
ð �Gð	
ð "�zð	
ð �6ð	
ð "�zð	
ð (˜-ð	
ð *˜>ð	
ð ”�ð	
ð  '.Ô&GÐ&Gð!	
ð" ")Ô!=Ð!=ð#	
ð$ -4Ô,SÐ,Sð%	
ð&  'Ô9Ð9ð'	
ð( (˜-ð)	
ð*  'Ô9Ð9ð+	
ð 	
ð0 �GÔ$Ð$Ð$Ýð 	
ð 	
ð 	
Ø-Ð-ð	
à!�zð	
ð &>Ð%=ð	
ð )DÐ(Cð		
ð
 !4Ð 3ð	
ð �Xð	
ð ,˜Oð	
ð (˜-ð	
ð �Gð	
ð �6ð	
ð "�zð	
ð �6ð	
ð (˜-ð	
ð *˜>ð	
ð ”�ð	
ð  ")Ô!=Ð!=ð!	
ð 	
ð& ˜gÔ.Ð.Ð.ÝÐ/?ÈÐOÑOÔOÐOàÔ"ð 1Ý˜GÔ7Ñ8Ô8×@Ò@ÑBÔBˆØ#Ô(ˆØ#Ô(ˆð �RˆLØ˜Ð$Ø�gÐØ�VÐð	
ð
 TÐSÀ
×@PÒ@PÑ@RÔ@RÐSÑSÔSñTð 	1ð 	1‰JˆB�ð ˜|Ñ+ˆGØÔ&¨&°<Ñ*?Ñ@ˆDØ×Ò˜W¥c¨$¡i¤iÑ0Ô0Ð0Ð0ð1ð 1ð
	1ð 	1r`   Ú__main__)rj   r,   rk   rl   rm   rG   rn   rG   )Nr}   F)r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rn   re   )r}   )r~   r   r„   r…   rn   r�   )r„   r…   rn   r�   rq   )r„   r…   r¿   r…   r‚   rƒ   r†   r‡   r¾   rÀ   rn   re   )rŽ   rÃ   rn   rÄ   )râ   r…   rn   r…   )rï   rð   rn   rñ   )r¼   r4   rü   r'   rn   rý   )r¼   r4   rü   rð   rn   r  )rï   rð   rn   r  )r  r  r  r   rn   r…   )r  r  r¼   r4   rü   r'   rn   r…   )r  r  r¼   r4   rg   rð   rn   r…   r‰  )r±  r5   rn   r  )r¼   r4   r_  rD   rn   r‡   )rý  r   rn   r…   )râ   r…   rn   r   )r  r=   rn   r…   )r™  r  rn   r  )r¼   r4   rn   r  )r(  r   r)  r‡   r*  r�   r+  r�   r#  r,  rn   r   )r+  r&   r)  r‡   r*  r�   r+  r�   r#  r,  rn   r   )r¼   r4   rn   r   )r¼   r4   rn   r‡   )r¼   r4   rg   r_  rn   r…   )ro  rp  rq  r  rn   rD   )rf   rÃ   rn   rx  )rf   rÃ   rn   r‹  )r—  r‹  rg   r_  r–  r˜  rn   r™  )r›  r™  rn   r  )r—  r‹  rg   r_  r–  r˜  rn   r  )r¼   r´  rž  r'   rn   r…   )r{   rG   r—  r‹  rj   r,   rž  r'   r_  rD   r¸  r‡   rB  r‡   r¹  r‡   rº  r‡   rn   r  )r—  r‹  rj   r,   rž  r'   r_  rD   r¸  r‡   rB  r‡   rn   r  )rf   rÃ   rÚ  rD   rn   rÛ  )rf   rÃ   r—  r‹  ré  rê  rë  rð   r_  rD   rg   r_  rì  rG   rk   rl   rí  rî  r�  rï  r¸  r‡   rn   rÄ   )rf   rÃ   r—  r‹  rë  rð   r_  rD   rg   r_  rì  rG   rk   rl   r  rG   rí  rî  r�  rï  r¸  r‡   rn   rÄ   )"rf   rÃ   r€   r�   r—  r‹  ré  rê  rë  rð   r_  rD   rg   r_  rM  rG   rN  rG   rì  rG   rk   rl   r  rG   r�  rï  rí  rî  r¸  r‡   rO  r‡   rn   rÄ   ),rf   rÃ   r—  r‹  ré  rê  ru  rv  r_  rD   rë  rð   rg   r_  rw  rG   rN  rG   rx  rG   rì  rG   rk   rl   r�  rï  rí  rî  r¸  r‡   ry  r‡   rO  r‡   r¹  r‡   rz  r‡   r{  r|  r}  r‡   rn   rÄ   )rì  rG   rf   rÃ   rn   rÄ   )rn   r	   )rn   rÄ   )¬Ú
__future__r   r  Ú	functoolsrk  rÒ   r  Úcollectionsr   r   r   Údataclassesr   r   Úpathlibr	   Útypingr
   r   r   r   Útyping_extensionsr   rº   Útorchgen.api.dispatcherÚapiri  Ú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   rm  ri   r|   r©   rµ   Úcacher½   rÂ   r¡   rî   rû   r  r  r  r/  r;  rG  r[  r^  ro  rŒ  r¢  r«  r°  rè  rî  rð  r
  r  r  r  r'  r3  r2  rZ  r^  rn  rw  rŠ  r•  rH  rŸ  r°  r³  r·  rÕ  rÙ  rè  r  rL  rt  rë  rï  rô  r6  ra   rr   r`   r_   ú<module>rR     s5  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø *Ð *Ð *Ð *Ð *Ð *à €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð8ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ð ð 3Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð €GˆC�L„L€ðBð ð ð ð �ñ ô ð ð ˆZ˜Ð'9Ð;LÐ&MÑNÔN€
ð :<Ð Ð ;Ð ;Ð ;Ñ ;Ø57Ð Ð 7Ð 7Ð 7Ñ 7ðð ð ð ð, ,0ØØ %ð1#ð 1#ð 1#ð 1#ð 1#ðhð ð ð ð ð( „ð/ð /ð /ñ „ð/ð ,0ð1ð
 !&Ø!%ð1ð 1ð 1ð 1ð 1ð 1ð@=ð =ð =ð =ð@
ð 
ð 
ð 
ð4	
ð 	
ð 	
ð 	
ðð ð ð ð(ð ð ð ð ð ð ð ð ,ð  ,ð  ,ð  ,ðFRð Rð Rð Rð$Kð Kð Kð Kð<Fð Fð Fð FðX €�$ÐÑÔð`ð `ð `ð `ð `ñ `ô `ñ Ôð`ð0 €�$ÐÑÔðW&ð W&ð W&ð W&ð W&ñ W&ô W&ñ ÔðW&ðx €�$ÐÑÔð*ð *ð *ð *ð *ñ *ô *ñ Ôð*ð^ €�$ÐÑÔð)ð )ð )ð )ð )ñ )ô )ñ Ôð)ð^ €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð< ðMð Mð Mñ ÔðMð
yð yð yð yðx3ð 3ð 3ð 3ð €�$ÐÑÔð@&ð @&ð @&ð @&ð @&ñ @&ô @&ñ Ôð@&ðTSð Sð Sð Sð&ð ð ð ð0
ð 
ð 
ð 
ðð ð ð ð?'ð ?'ð ?'ð ?'ðF
ð 
ð 
ð 
ð@!ð !ð !ð !ðH ðUð Uð Uñ ÔðUðrð ð ð ð "ðð ð ñ "Ô!ðð@ð ð ð ð>0Oð 0Oð 0Oð 0Oðfð ð ð ð@ 	Ô0ðð ð ð ð ð ð>ð ð ð ð@ 	Ô0ðð ð ð ð ð ð4ð ð ð ð(_ð _ð _ð _ðH,ð ,ð ,ð ,ð`!=ð !=ð !=ð !=ðHvð vð vð vðrð ð ð ðDH5ð H5ð H5ð H5ðVpð pð pð pðfð ð ð ð+ð +ð +ð +ðN1ð N1ð N1ð N1ðb
 ˆzÒÐØ€D�F„F€F€F€Fð Ðr`   