
    '}h                   |   d Z 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mZmZmZ ddlZddlmc mZ ddlZddlZddlmZ ddlmZmZmZmZmZ ddlmZ ddlmZmZm Z  dd	l!m"Z" g d
Z# ejH                  e jJ                  d      Z&d Z'ddZ(ejR                  d        Z* e&d      ejR                  dd              Z+ e&d      ejR                  dd              Z, e&d       ejZ                  d      ejR                  dd                     Z. e&d       ejZ                  d      ejR                  dd                     Z/ e&d      ejR                  dܐdd              Z0 e&d      ejR                  dܐdd              Z1 e&d      ejR                  dܐdd              Z2 e&d      ejR                  dd               Z3 e&d!      ejR                  dd"              Z4 e&d#       ejj                  d$d$d$d%      ejR                  dݐdd&                     Z6 ejj                  d$d$d'      ejR                  dd(              Z7ejR                  dd)       Z8ejR                  dd*       Z9 e&d+      ejR                  dd,              Z: e&d-      ejR                  dd.              Z; e&d/      ejR                  dd0              Z< e&d1      ejR                  dd2              Z= e&d3       ejj                  d$d4      ejR                  dd5                     Z> e&d6       ejj                  d$d4      ejR                  dd7                     Z? e&d8      ejR                  dd9              Z@ e&d:      ejR                  dd;              ZA e&d<      ejR                  dd=              ZB e&d>      ejR                  dd?              ZC e&d@       ejj                  d$d$d$dAdA      ejR                  ddB                     ZD e&dC      ejR                  ddD              ZE e&dE      ejR                  ddF              ZF e&dG      ejR                  ddH              ZG e&dI       ejZ                  ddJdKL      ejR                  ddM                     ZH e&dN      ejR                  ddO              ZI e&dP      ejR                  ddQ              ZJ e&dR      ejR                  ddS              ZK e&dT      ejR                  ddU              ZL e&dV      ejR                  ddW              ZM e&dX      ejR                  ddY              ZN e&dZ      ejR                  dd[              ZO e&d\       ejZ                  dd]dL      ejR                  dd^                     ZP e&d_      ejR                  dd`              ZQ ejZ                  d      ejR                  dda              ZRejR                  ddb       ZSejR                  ddc       ZTejR                  dd        ZU e&de e'dfdg      gh       e&di e'djdk      gh       e&dl e'dmdndop      gh      ejR                  dސddq                            ZV e&dr       ejj                  d$d4ds      ejR                  ddt                     ZW e&du      ejR                  ddv              ZX e&dw      ejR                  ddx              ZY e&dy      ejR                  ddz              ZZ e&d{       ejZ                  d      ejR                  dd|                     Z[ e&d}       ejZ                  d      ejR                  dd~                     Z\ e&d       ejZ                  d      ejR                  dd                     Z] e&d       ejZ                  dd      ejR                  dd                     Z^ e&d       ejZ                  d       ejj                  d$d$d4dd$      ejR                  	 	 dd                            Z_ e&d       ejZ                  d       ejj                  d$d$d$d4d4d4d$d4d4	      ejR                  	 	 dd                            Z` e&d       ejZ                  ddo      ejR                  dܐdd                     Za e&d       ejZ                  d       ejj                  d$d4d4      ejR                  dd                            Zb e&d       ejj                  d$d      ejR                  dd                     Zc e&d       ejZ                  d      ejR                  dd                     Zd e&d      ejR                  dd              Ze e&d       ejj                  d$d4d4d4      ejR                  dܐdd                     Zf e&d       ejj                  d$d$d4d4      ejR                  dܐdd                     Zg e&d      ejR                  	 d	 dd              Zh e&d       ejj                  d$dd4d4      ejR                  dܐdd                     Zi e&d      ejR                  	 d	 dd              Zj e&d       ejj                  d$d4d4      ejR                  ddd                     Zk e&d       ejZ                  d       ejj                  d$d4d$      ejR                  dd                            Zl e&d      ejR                  dd              Zm e&d      ejR                  dܐdd              Zn e&d      ejR                  dd              Zo e&d      ejR                  dd              Zp e&d      ejR                  dd              ZqejR                  dd       Zr e&d       ejZ                  d      ejR                  dd                     Zs e&d       ejZ                  d      ejR                  dd                     Zt e&d      ejR                  dd              Zu e&d      ejR                  dd              Zv e&d      ejR                  dd              Zw e&d       ejj                  d$dAdA      ejR                  dd                     Zx e&d       ejZ                  d       ejj                  d$d%d      ejR                  	 d	 	 	 	 	 	 	 dd                            Zy e&d       ejj                  d$d4      ejR                  dd                     Zz e&d       ejj                  d$d4ds      ejR                  dܐdd                     Z{ e&d      ejR                  dd              Z| e&d      ejR                  d               Z} e&d e'dej                  j                  j                   j                  ddoƫ       e(dī      gh       e&d e'dej                  j                  j                   j                  ddoƫ       e(dȫ      gh       e&d e'dej                  j                  j                   j                  ddoƫ       e(d˫      gh      ejR                  d̈́                             Z  e&dΫ       edej                  j                  j                   j                  ddƫ            Z  e&dЫ       edej                  j                  j                   j                  ddƫ            Z  e&dҫ       edej                  j                  j                   j                  ddƫ            Z e&d e'dej                  j                  j                   j                         e(dի      gh       e&d e'dej                  j                  j                   j                         e(d׫      gh       e&d e'dej                  j                  j                   j                         e(d٫      gh      ejR                  dڄ                             Z e&d e'ddej                  j                  j                   j                         e(dܫ      gh       e&d e'ddej                  j                  j                   j                         e(d߫      gh       e&d e'ddej                  j                  j                   j                         e(d      gh       e&d e'ddej                  j                  j                   j                  e       e(d      gh       e&d e'ddej                  j                  j                   j                  e       e(d      gh       e&d e'ddej                  j                  j                   j                  e       e(d      gh      ejR                  dd                                                 ZejR                  dd       ZejR                  d        Z e&d      ejR                  dd              ZejR                  dd       Z e&d       e&d       e&d      ejR                  dd                            Z e&d       e&d       e&d      ejR                  dd                            Z e&d      ejR                  	 	 	 	 	 	 	 	 	 	 dd              Z e&d e'ddd       e(d      gh       e&d e'ddd       e(d      gh       e&d e'd dd       e(d       gh       e&d e'dd̐d       e(d      gh       e&d e'ddd       e(d      gh       e&d e'ddd       e(d      gh      ejR                  dd	                                                 Z e&d
      ejR                  	 	 dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  d               ZejR                  d        ZejR                  dd       Z e&d      ejR                  dېd              Z e&d       ejZ                  dd      ejR                  dېd                     Z e&d       ejZ                  dd      eejR                  dېd                            Z e&d       ejZ                  dd      ejR                  dېd                     ZejR                  dېd       Z e&d       ejZ                  dd      ejR                  dېd                     ZejR                  dېd       Z e&d       ejZ                  dd      eejR                  dېd                            Z e&d        ejZ                  dd      eejR                  dېd!                            Z e&d"      ejR                  dېd#              Z e&d$      ejR                  dېd%              Z e&d&      ejR                  dېd'              Z e&d(       ed)      ejR                  dېd*                     Z e&d+       ed)      ejR                  dېd,                     Z e&d-       ed)      ejR                  dېd.                     Z e&d/      ejR                  dېd0              Z e&d1      ejR                  dېd2              Z e&d3      ejR                  dېd4              Z e&d5       ejj                  d$d$d$d4      ejR                  ddېd6                     Z e&d7       ejj                  d$d4ds      ejR                  dܐdېd8                     Z e&d9       ejj                  d$d4d4      ejR                  dېd:                     Z e&d;       ejj                  d$d$d$dddd4dd4d4d4d4d4      ejR                  	 d	 dېd<                     Z e&d=       ejj                  d$d$d$dd'dd4      ejR                  	 	 dېd>                     Z e&d?       ejj                  d$d$d$dddd4dd4	      ejR                  	 	 dېd@                     Z e&dA       ejj                  d$d$d$dd$dd4      ejR                  	 	 dېdB                     Z e&dC       ejj                  d$d$d$dd$dd4      ejR                  	 	 dېdD                     Z e&dE       ejj                  d$d$d$dd$dd4      ejR                  	 	 dېdF                     Z e&dG       ejj                  d$d$d$dddd4d      ejR                  	 	 dېdH                     Z e&dI       ejj                  d$d$d$dddd4d      ejR                  	 	 dېdJ                     Z e&dK       ejj                  d$d$d$dddd4d      ejR                  	 	 dېdL                     Z e&dM       ejj                  d$d$d$d$d$d4d%d%d4	      ejR                  	 	 dېdN                     Z e&dO       ejZ                  ddododo       ejj                  d$dd$d$d%      ejR                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddP                            Z e&dQ       ejZ                  ddododo       ejj                  d$dd$d$d%d      ejR                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddR                            Z e&dS       ejj                  d$d$d$d$d$dd%d%d	      ejR                  	 	 	 	 	 	 	 	 	 	 ddT                     Z e&dU       ejj                  d$d4d4d4      ejR                  dېdV                     Z e&dW       ejZ                  d       ejj                  d$dAdAdA      ejR                  dېdX                            Z e&dY       ejZ                  d      ejR                  dېdZ                     Z e&d[       ejj                  d$d4d$      ejR                  dېd\                     Z e&d]      ejR                  dېd^              Z e&d_      ejR                  dېd`              Z e&da      ejR                  dېdb              Z e&dc       ejj                  d$d$dd      ejR                  	 d	 dېdd                     Z e&de      ejR                  dېdf              Z e&dg       ejj                  d$d$d4d%      ejR                  dېdh                     Z e&di      ejR                  dېdj              Z e&dk      ejR                  dېdl              Z e&dm      ejR                  dېdn              Z e&do      ejR                  dېdp              Z e&dq      ejR                  dېdr              Z e&ds      ejR                  dېdt              Z e&du      ejR                  dېdv              Z e&dw      ejR                  dېdx              Z e&dy       ejj                  d$d$      ejR                  dېdz                     Z e&d{       ejj                  d$d$      ejR                  dېd|                     Z e&d}      ejR                  ddېd~              Z e&d       ejZ                  dd      ejR                  dېd                     Z e&d      ejR                  ddېd              Z e&d       ejZ                  dd      ejR                  dېd                     Z e&d       ejZ                  d       ejj                  d$dd4      ejR                  dېd                            Z e&d       ejZ                  d       ejj                  d$dd4      ejR                  dېd                            Z e&d       ejZ                  d       ejj                  d$d$d4      ejR                  dېd                            Z e&d      ejR                  dېd              Z e&d       e&d       ejj                  d$d%d4      ejR                  dېd                            Z e&d e'd      gh       e&d e'd      gh       e&d e'd      gh       e&d e'd      gh       e&d e'd      gh       e&d e'd      gh      ejR                  dڐd                                                 Z e&d       ejj                  d$dAdd4d$      ejR                  dܐdېd                     Z e&d       ejj                  d$d$d$d4      ejR                  dېd                     Z e&d       ejj                  d$d4d4      ejR                  dېd                     Z e&d       ejj                  d$d4d4d4      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ej                  ddd      ejR                  dېd                     Z e&d       ejj                  d$d4d$d$d$d$      ejR                  	 	 d	 dېd                     Z e&d       ejj                  d$d4d$d$d$d$      ejR                  	 	 	 	 	 d	 dېd                     Z e&d      ejR                  	 d	 dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  	 d	 dېd              Z e&d      ejR                  ddېd              Z e&d       ejj                  d$d4d$d$d$      ejR                  ddېd                     Z e&d«       ejj                  d$d4d$d$d$d$      ejR                  	 	 	 	 	 d	 dېdÄ                     Z e&dī      ejR                  	 d	 dېdń              Z e&dƫ      ejR                  dېdǄ              Z e&dȫ       ejj                  d$d4d$d$d$      ejR                  ddېdɄ                     Z e&dʫ       ejj                  d$d4d$d$d$d$      ejR                  	 	 	 	 	 d	 dېd˄                     Z e&d̫      ejR                  	 d	 dېd̈́              Z e&dΫ      ejR                  	 d	 dېdτ              Z e&dЫ      ejR                  	 	 	 	 	 d	 dېdф              Z e&dҫ      ejR                  	 d	 dېdӄ              Z e&dԫ      ejR                  dېdՄ              Z e&d֫      ejR                  dېdׄ              Z e&dث       ejZ                  d       ejj                  d$d%d%      ejR                  ddل                            Z e&dګ       ejZ                  d       ejj                  d$      ejR                  dېdۄ                            Z e&dܫ       ejZ                  dd]dL       ejj                  d$      ejR                  dېd݄                            Z e&dޫ       ejj                  d$      ejR                  dېd߄                     Z e&d       ejj                  d$d%      ejR                  dېd                     Z e&d       ejj                  d$d%      ejR                  dېd                     Z e&d      ejR                  dېd              Z e&d       ejj                  d$d4      ejR                  dېd                     Z e&d       ejj                  d$d4d4ds      ejR                  dܐdېd                     Z e&d      ejR                  dېd              Z  e&d       ejj                  d$d4d4d4d4ds      ejR                  dܐdېd                     Z e&d      ejR                  dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  	 d	 dېd              Z e&d       ejj                  d$d4      ejR                  dېd                     Z e&d       ejj                  d$d4      ejR                  dېd                     ZejR                  	 	 d	 dېd       Z ejj                  d$d$d$d4d4d%d4d4d4	      ejR                  	 	 dېd              Z	 ejj                  d$d$d$d$d4d4d%d4d4	      ejR                  	 	 dېd              Z
 e&d      ejR                  dېd              Z e&d      ejR                  dېd               Z e&d e'd       e(d      gh       e&d e'd       e(d      gh       e&d e'd       e(d	      gh      dd
                     Z e&d       ejj                  d$d4      ejR                  dېd                     Z e&d      ejR                  dېd              Z e&d       ejj                  d$d4      ejR                  dېd                     Z e&d       ejj                  d$d$d4      ejR                  dېd                     Z e&d       ejj                  d$d$d4dAd$      ejR                  	 	 dېd                     Z e&d      ejR                  dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  dېd              Z e&d      ejR                  	 	 	 	 d	 dېd              Z e&d      ejR                  	 	 	 	 d	 dېd               Z e&d!       ejj                  d$d%d%d4ds      ejR                  dېd"                     Z e&d#      ejR                  ddېd$              Z e&d%       ejj                  d$      ejR                  dېd&                     Z e&d'       ejj                  d$      ejR                  dېd(                     Z e&d)       ejZ                  ddodo       ejj                  d$d4d4      ejR                  dېd*                            Z e&d+       ejj                  d$      ejR                  dېd,                     Z e&d-      ejR                  dܐdېd.              Z e&d/       ejj                  d$      ejR                  dېd0                     Z  e&d1      ejR                  dېd2              Z! e&d3      ejR                  dېd4              Z" e&d5       ejj                  d$d4d4d4      ejR                  dېd6                     Z# e&d7       ejj                  d$d$d      ejR                  	 	 	 	 	 	 	 	 dd8                     Z$ e&d9       ejj                  d$d$d      ejR                  	 	 	 	 	 	 	 	 dd:                     Z% e&d;       ejj                  d$d4d$d$      ejR                  dېd<                     Z& e&d=       ejj                  d$d4d$d$      ejR                  dېd>                     Z' e&d?      ejR                  dېd@              Z( e&dA      ejR                  dېdB              Z) e&dC      ejR                  dېdD              Z* e&dE      eejR                  dېdF                     Z+ e&dG      ejR                  dېdH              Z, e&dI       ejj                  d$d4d$d$      ejR                  ddېdJ                     Z- ejj                  d$dd4d4      ejR                  dېdK              Z. e&dL      ejR                  dېdM              Z/ e&dN      ejR                  dېdO              Z0 e&dP      ejR                  dېdQ              Z1 e&dR      ejR                  dېdS              Z2 e&dT       ejj                  d$dd4      ejR                  dېdU                     Z3 e&dV      ejR                  dېdW              Z4 e&dX      ejR                  	 	 dېdY              Z5 e&dZ      ejR                  dېd[              Z6 e&d\      ejR                  dېd]              Z7 e&d^      ejR                  dېd_              Z8 e&d`      ejR                  dېda              Z9 e&db       ejj                  d$d$ddd$      ejR                  	 	 	 	 	 	 	 	 	 	 	 	 ddc                     Z: e&dd       ejj                  d$d%ddd$      ejR                  	 	 	 	 	 	 	 	 	 	 	 	 dde                     Z; e&df       ejj                  d$d$ddd$      ejR                  	 	 	 	 	 	 	 	 	 	 	 	 ddg                     Z< e&dh       ejj                  d$d$d4      ejR                  ddېdi                     Z= e&dj       ejj                  d$dd      ejR                  ddېdk                     Z> e&dl       ejj                  d$d4dd$      ejR                  	 d	 dېdm                     Z? e&dn      ejR                  dېdo              Z@ e&dp       ejj                  d$d'      ejR                  dܐddq                     ZA e&dr      ejR                  dېds              ZB e&dt       ejj                  d$d'      ejR                  dddu                     ZC e&dv       ejZ                  ddododo       ejj                  d$d4d$d$d%d4      ejR                  	 	 dېdw                            ZD e&dx       ejj                  d$d$d4      ejR                  dېdy                     ZE e&dz      ejR                  dېd{              ZF e&d|      ejR                  dېd}              ZG e&d~      ejR                  dېd              ZH e&d      ejR                  dېd              ZI e&d      ejR                  dېd              ZJejR                  dېd       ZKejR                  dېd       ZL e&d       ejj                  d$d$d4d      ejR                  dېd                     ZM e&d       ejj                  d$d$d4      ejR                  dېd                     ZN e&d       ejZ                  d       ejj                  d$d$dd4      ejR                  dܐdېd                            ZO e&d      ejR                  dېd              ZP e&d      ejR                  dېd              ZQ e&d      ejR                  dېd              ZR e&d       ejj                  d$dd4d$d$d$d$      ejR                  	 	 	 	 	 	 d	 	 	 dd                     ZS e&d      ejR                  dېd              ZT e&d      ejR                  dېd              ZU e&d       ejj                  d$dAdA      ejR                  dېd                     ZV e&d       ejj                  d$d$      ejR                  dېd                     ZW e&d      ejR                  dܐdېd              ZX e&d       ejj                  d$dd      ejR                  dېd                     ZY e&d       ejj                  d$d$d4      ejR                  dܐdېd                     ZZ e&d      ejR                  	 	 d	 dېd              Z[ e&d      ejR                  dېd              Z\ e&d      ejR                  dېd              Z] e&d      dܐdېd       Z^ e&d      ejR                  dېd              Z_ e&d      ejR                  dېd              Z` e&d      ejR                  dېd              Za e&d      ejR                  dېd              Zb e&d      ejR                  dܐdېd              Zc e&d      ejR                  dېd              Zd e&d      dېd       Ze e&d      ejR                  dېd              Zf e&d      ejR                  	 	 	 	 d d              Zg e&d      ejR                  dېd              Zh e&d      ejR                  dېd              Zi e&d      ejR                  dېd              Zj e&d«      ejR                  dېdÄ              Zk e&dī      ejR                  dېdń              Zl e&dƫ      ejR                  ddǄ              Zm e&dȫ      ejR                  ddɄ              Zn e&dʫ      ejR                  dd˄              Zo e&d̫      ejR                  dېd̈́              Zp e&dΫ      ejR                  ddτ              Zq e&dЫ      ejR                  dېdф              Zr e&dҫ       e&dӫ      ejR                  ddԄ                     Zs e&dի       e&d֫      ejR                  ddׄ                     Zt e&dث      ejR                  ddل              Zuy(  zhThis file exports ONNX ops for opset 9.

Opset 9 is supported by ONNX release 1.4.1
release on 01/23/19
    )annotationsN)CallableListOptionalSequenceTupleUnion)_C)
_constants_deprecation_type_utilserrorssymbolic_helper)GLOBALS)	_beartype	jit_utilsregistration)Number(  absacosaddaddcmuladdmmaliasamaxaminaminmaxarangeargmaxargmin
as_strided	as_tensorasinatanatan2baddbmm
batch_norm	bernoullibitwise_not
bitwise_orbmmbroadcast_tensorsbroadcast_to	bucketizecatcdistceil	clamp_max	clamp_minclampcloneconstant_pad_nd
contiguousconv_tbcconv_transpose1dconv_transpose2dconv_transpose3dconv1dconv2dconv3dconvert_element_typeconvolutioncoscosine_similaritycrosscumsumdetachdimdivdotdropouteluembedding_bag	embedding
empty_likeemptyeqerfexp	expand_asexpandeyefillflattenfloor_dividefloorfloordivfrobenius_norm	full_likefullgathergegeluget_pool_ceil_paddingglu
group_normgthann_window
hardshrinkhardsigmoid	hardswishhardtanh	index_add
index_copy
index_fill	index_putindex_selectindexinstance_normis_floating_point	is_pinnedisnanitemkl_div
layer_normle
leaky_relulerpliftlinalg_crosslinalg_matrix_normlinalg_normlinalg_vector_normlinearlinspacelog_sigmoidlog_softmaxloglog10log1plog2logical_andlogical_not
logical_orlogical_xorlogit	logsumexp	lstm_celllstmltmasked_fillmasked_fill_matmulmax_pool1d_with_indicesmax_pool2d_with_indicesmax_pool3d_with_indicesmaxmaximummeshgridminminimummishmmmovedimmse_lossmulmultinomialmvnarrownative_layer_normneneg	new_emptynew_fullnew_ones	new_zerosnonzero_numpynonzeronormnumelnumpy_Tone_hot	ones_likeonesonnx_placeholderoverload_by_arg_countpadpairwise_distancepermutepixel_shufflepixel_unshufflepowpreluprim_constant_chunkprim_constant_splitprim_constant	prim_dataprim_device
prim_dtypeprim_ifprim_layoutprim_list_constructprim_list_unpack	prim_loopprim_maxprim_min
prim_shapeprim_tolistprim_tuple_construct	prim_typeprim_unchecked_castprim_uninitialized	rand_likerandrandint_likerandint
randn_likerandn
reciprocalreflection_padrelurelu6	remainderrepeat_interleaverepeatreplication_pad
reshape_asreshaperollrrelursqrtrsubscalar_tensorscatter_addscatterselectselusigmoidsignsilusinsizeslicesoftmaxsoftplus
softshrinksortsplit_with_sizessplitsqrtsquaresqueezestackstd_meanstdsubttaketantanh
tanhshrinktensor	thresholdtotopk	transposetrue_dividetype_asunbindunfoldunsafe_chunkunsafe_split_with_sizesunsafe_split	unsqueezeunsupported_complex_operatorsnoop_complex_operatorsunusedvar_meanvarview_asviewwherewrap_logical_op_with_cast_towrap_logical_op_with_negation
zeros_likezeroszero	   )opsetc                       fd}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                     | i S N )fnargskwargss    Y/var/www/html/test/engine/venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py_applyz_apply_params.<locals>._apply+  s    4"6""    r  )r  r   r"  s   `` r!  _apply_paramsr$  (  s    # Mr#  c                      fd}|S )z5Exports the function in the current global namespace.c                L    | t               <   t        j                         | S r  )globals__all__append)funcnames    r!  wrapperz_export.<locals>.wrapper4  s    	$tr#  r  )r+  r,  s   ` r!  _exportr-  1  s    
 Nr#  c                    | j                  d      }|j                  t        j                  j	                                |S )z%Represents "missing" optional inputs.prim::Constant)opsetTyper
   OptionalTypeofTensor)gns     r!  r  r  <  s1     	
AIIboo&&()Hr#  zaten::_shape_as_tensorc                &    | j                  d|      S NShaper0  r4  inputs     r!  _shape_as_tensorr<  D       44r#  zaten::_reshape_from_tensorc                h    t        |t              r | j                  dg|ddi}t        | ||      S )NConcataxis_ir   )
isinstancelistr0  r   )r4  r;  shapes      r!  _reshape_from_tensorrD  J  s7     %X00a01eU##r#  zaten::reshapeTc                0    t        j                  | ||      S r  )r   _reshape_helperr4  selfrC  s      r!  r   r   R  s     **1dE::r#  zaten::reshape_asc                @    | j                  d|      }t        | ||      S r7  r0  r   r4  rH  otherrC  s       r!  r   r   Y  s#     DD% E1dE""r#  z	aten::addc                .   t        j                  |      r.t        j                  |      rt        j                  dddd|      S |r>t        j                  t        j
                  |            dk7  r| j                  d||      }| j                  d||      S )NAddr     z)Add between list of tensors not supported   Mul)r   	_is_value_is_tensor_list _onnx_opset_unsupported_detailed_scalar_maybe_get_scalarr0  r4  rH  rL  alphas       r!  r   r   a  s       &?+J+J4+P??1bEt
 	
 (()J)J5)QRVWWUE5)44tU##r#  z	aten::subc                    |r>t        j                  t        j                  |            dk7  r| j                  d||      }| j                  d||      S )NrP  rQ  Sub)r   rU  rV  r0  rW  s       r!  r   r   m  sJ     (()J)J5)QRVWWUE5)44tU##r#  z
aten::rsubc                     t        | |||      S )N)rX  )r   rW  s       r!  r   r   u  s     q%U++r#  z	aten::mulc                    t        j                  |      r(t        j                  |      r| j                  d||      S | j                  d||      S )NAndrQ  )r   _is_boolr0  r4  rH  rL  s      r!  r   r   {  sE     %/*B*B5*IttE4''ttE4''r#  z	aten::divc                T    t        |      dk(  rt        | ||      S t        | ||g| S Nr   )lenr  _div_rounding_mode)r4  rH  rL  r  s       r!  rG   rG     s2     4yA~1dE**!!T58488r#  zaten::addcmulvfc                    | j                  dt        j                  |g            }t        | |t	        | t	        | ||      |            S NConstantvalue_t)r0  torchr   r   r   )r4  rH  tensor1tensor2value
value_tenss         r!  r   r     sB     j%,,w*?@Jq$As1gw7DEEr#  sc                    |t        | ||      S |dk(  rt        | ||      S |dk(  rt        | ||      S t        j                  d| d|      )NrX   trunczUnsupported rounding mode: "z$". Expected None, "floor" or "trunc")r  _floor_divide_trunc_divider   SymbolicValueError)r4  rH  rL  rounding_modes       r!  rc  rc    sj     1dE**	'	!Qe,,	'	!Qe,,''*=/9]^
 	
r#  c                ~   | j                  d||      }| j                  d|t        j                  j                        }t        j
                  j                  |t        j
                  j                        }|t        j
                  j                  k7  r|t        j                  |      sCt        j                  |      r.| j                  d|t        j                  j                        }|S | j                  d||j                               }|S | j                  d|t        j                  j                        }|S )NDivCastto_i)r0  _C_onnxTensorProtoDataTypeINT64r   JitScalarType
from_value	UNDEFINEDr   _is_fpFLOAT	onnx_type)r4  rH  rL  outscalar_types        r!  rt  rt    s   
$$udE
"C $$vs!<!<!B!B$
CC ++66k''11K k//999%%d+0F0Fu0M$$vs)D)D)J)J$KC J $$ **,  C J dd63W%@%@%F%FdGJr#  c                   t        j                  |      st        j                  |      rt        | ||      }| j                  d|      S | j                  d||      }| j                  dt	        j
                  dt        j                              }| j                  dt        j                  | ||      t        j                  | ||            }| j                  d|| j                  d	||            }| j                  d
|| j                  d| j                  d||                  }| j                  dt	        j
                  dt        j                              }	| j                  d	||	      }
| j                  d||
      S )NFloorrx  rh  r   dtyperi  XorrZ  rQ  r]  NotEqualrP  )r   r  r  r0  rk  r   int64
_lt_helper)r4  rH  rL  r  rG   r  negativemod
fixup_maskonefixups              r!  rs  rs    s7   d#'='=e'D!T5)ttGS!! dd5$&ttJQekk(JtK44&&q$5&&q%6
 dd5$UC 78TT%144qttGS$7O+PQ
dd:u||AU[['IdJUJ,ttE3&&r#  zaten::floor_dividec                    t        | ||      S r  )rt  r_  s      r!  rW   rW     s     D%((r#  zaten::floordivc                    t        | ||      S r  )rW   r_  s      r!  rY   rY     s     4''r#  zaten::true_dividec                   t        j                  |      st        j                  |      r| j                  d||      S t        j                         }t
        j                  j                  }|t        j                  u s|t        j                  u sJ t        j                         t        j                  u rt
        j                  j                  }| j                  d||      }| j                  d||      }| j                  d||      S )a  Division where both inputs are cast to floating types

    If both inputs are floating, performs div as usual
    If only one input is a floating type, the other input is cast to its type
    If neither input is a floating type, both inputs are cast to the default scalar type
    rx  ry  rz  )r   r  r0  rk  get_default_dtyper|  r}  r  floatdoubleDOUBLE)r4  rH  rL  r  onnx_scalar_types        r!  r  r    s     d#'='=e'DttE4'' ))+K2288%++%)DDD ELL0"66==44#344DDD%5D6E44tU##r#  zaten::reciprocalc                    t        j                  |      s,| j                  d|t        j                  j
                        }| j                  d|      S )Nry  rz  
Reciprocal)r   r  r0  r|  r}  r  r4  rH  s     r!  r   r   	  sC     !!$'ttFDw'B'B'H'HtI44d##r#  z	aten::catic                   t        j                  |      }g |D ]?  }t        j                  |      rt        j                  |d      s/j	                  |       A t              dkD  sJ t        fdD              sJ |j                         j                          D ]!  }|j                         j                  |       # t        j                  |      } | j                  dg|d|iS )Nr   c              3     K   | ]g  }t        j                  d          du xsG t        j                  |      du xs. t        j                  |      t        j                  d          k(   i ywr   N)r   _get_tensor_rank).0r   nonempty_tensorss     r!  	<genexpr>zcat.<locals>.<genexpr>"  s~      
 	 	(()9!)<=E 	A++A.$6	A++A.++,<Q,?@A	As   A-A0r?  r@  )r   _unpack_list_is_constant_get_tensor_dim_sizer)  rb  allnoderemoveAllInputsaddInputr0  )r4  tensor_listrF   tensorsr   r  s        @r!  r/   r/     s     **;7G  #''*?3W3Wq4
 "#  1$$$ 
 "    &&( '##A&' **;7G144/7/3//r#  zaten::stackc                    t        j                  |      D cg c]  }t        j                  | ||g       }} | j                  dg|d|iS c c}w )Nr?  r@  )r   r  _unsqueeze_helperr0  )r4  r  rF   r   
unsqueezeds        r!  r   r   1  s_     !--k: 	))!Q6J  1442:2c22	s   Az
aten::listc                    |S r  r  r  s     r!  _listr  <  	     Kr#  zaten::mmc                ~    | j                  dt        j                  dg            }| j                  d|||dd      S )Nrh  rP  ri  Gemm              ?beta_falpha_fr0  rk  r   )r4  rH  rL  Cs       r!  r   r   B  s<    
 	
Zqc!23A44eQsC4@@r#  z	aten::bmmc                (    | j                  d||      S NMatMulr9  r_  s      r!  r+   r+   K       44$&&r#  zaten::matmulc                (    | j                  d||      S r  r9  r_  s      r!  r   r   Q  r  r#  zaten::addmmr   c           
        d }t        j                  |      }t        j                  |      }t        j                  |      }	||}n	||}n|	|	}t        j                  |      }
t        j                  |      }d }| ||
d      s
 ||d      r| j                  d||      }|}t        j                  |      }t        j                  |      }|dk7  rI| j                  dt        j                  ||j                                     }| j                  d||      }|dk7  r\| j                  dt        j                  t        j                  |      |j                                     }| j                  d||      }| j                  d	||      S | j                  d
|||t        j                  |      t        j                  |            S )Nc                    | d uxr | |k7  S r  r  )rd  us     r!  is_not_none_norzaddmm.<locals>.is_not_none_nori  s    }'a'r#     r  rP  rh  r  ri  rQ  rN  r  r  )r   _try_get_scalar_typer  r0  rU  rk  r   r  )r4  rH  mat1mat2betarX  r  self_scalar_typemat1_scalar_typemat2_scalar_type	mat1_rank	mat2_rankr  res1res2s                  r!  r   r   W  s    K&;;DA&;;DA&;;DA#&		%&		%&006I006I( 	1%A)FttHdD)''.&&t,A:DDELLk>O>O>Q$R  E 44tU+D1944#++D19J9J9L  D 44tT*DttE4&&44&&t,''.   r#  z	aten::negc                &    | j                  d|      S )NNegr9  r  s     r!  r   r          44tr#  z
aten::sqrtc                   t         j                  j                  |t         j                  j                        t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  hv r,| j                  d|t        j                  j                        }| j                  d|      S )Nry  rz  Sqrt)r   r  r  r  UINT8INT8INT16INTr~  r0  r|  r}  r  r  s     r!  r   r     s       ++k''11 	!!''!!&&!!''!!%%!!''
 ttFDw'B'B'H'HtI44r#  zaten::rsqrtc                    | j                  dt        j                  t        j                  d      |      t        | |            S )Nrx  rP  )r0  r   _if_scalar_type_asrk  r   r   r  s     r!  r   r     s8     4411%**Q-FQPT r#  z
aten::tanhg      ?   )scale
zero_pointc                &    | j                  d|      S )NTanhr9  r  s     r!  r   r     s    
 44r#  z	aten::sinc                &    | j                  d|      S )NSinr9  r  s     r!  r   r     r  r#  z	aten::cosc                &    | j                  d|      S )NCosr9  r  s     r!  rA   rA     r  r#  z	aten::tanc                &    | j                  d|      S )NTanr9  r  s     r!  r   r     r  r#  z
aten::asinc                &    | j                  d|      S )NAsinr9  r  s     r!  r#   r#          44r#  z
aten::acosc                &    | j                  d|      S )NAcosr9  r  s     r!  r   r     r  r#  z
aten::atanc                &    | j                  d|      S )NAtanr9  r  s     r!  r$   r$     r  r#  zaten::atan2c           
        | j                  d||      }| j                  d|      }| j                  dt        j                  d            }| j                  dt        j                  t        j                              }| j                  d||      }| j                  d|| j                  d||      | j                  d	||            }| j                  d
||      }	| j                  d|	||      }
|
S )Nrx  r  rh  r   ri  GreaterWhererN  rZ  Less)r0  rk  r   mathpi)r4  rH  rL  sloper$   
const_zeroconst_pi"condition_second_or_third_quadrantsecond_third_quadrantcondition_14_or_23_quadrantresults              r!  r%   r%     s     DDe$E44Dj%,,q/:JttJTWW(=t>H)*iz)J&DD*	UD(#	UD(#	 #$$$vuj"ATT'68MtTFMr#  zaten::sigmoidg      p?c                &    | j                  d|      S )NSigmoidr9  r  s     r!  r   r     s    
 44	4  r#  z
aten::signc                &    | j                  d|      S )NSignr9  r  s     r!  r   r     r  r#  c                    t        |      t        |      k(  sJ t        |      dk(  r |d   dk(  r|d   t        j                  k(  r|S | j                  d||||      S )NrP  r   Slice)axes_istarts_iends_i)rb  r   	INT64_MAXr0  )r4  r;  axesstartsendss        r!  _slicer     s_     v;#d)###
6{aF1INtAw*:N:N/N44tfT4JJr#  c                l   t         j                  j                  |t         j                  j                        }|t         j                  j                  k7  r^t	        j
                  |      sI|t         j                  j                  k7  r,| j                  d|t        j                  j                        }|S Nry  rz  )
r   r  r  r  r   r  r~  r0  r|  r}  r4  rH  r  s      r!  _maybe_cast_reduce_op_inputr  	  s    ++66k''11K k//999  &&t,{88>>>447+F+F+L+L4MDKr#  c                >     t         j                  d fd	       }|S )Nc                   t        | |      }||t               k(  rt        j                  | |      S rdnd}t        j                  ||d      t        j                  |dd      }}r|n|g}| j                  |||      S )Nisr  rF   keepdimr  
keepdims_i)r  tupler   _handle_reduce_dim_none
_get_constr0  )r4  rH  rF   r  descdim_listallow_multi_dim_supportonnx_op_names         r!  symbolicz%_reduce_op_symbolic.<locals>.symbolic  s    *1d3;#. #::1dLQQ 34D*55T5))'3	B C 6sC5H44d84PPr#  NN)r   beartype)r  r  r  s   `` r!  _reduce_op_symbolicr!    s$    Q Q  Or#  c                h     t        j                         t        j                   fd              }|S )Nc                     | g| }|D ]0  }|j                   }t        |      t        |      k(  s' || g| c S  t        j                  dj                   dt        |       d      S )Nzaten::with 
 arguments)_arg_descriptorsrb  r   _unimplemented__name__)r4  r  	overloadsoverloadarg_descriptorsr  s        r!  r,  z&overload_by_arg_count.<locals>.wrapper1  s     qL4L	! 	*H&77O?#s4y0)D))	* --R[[M"eCI;j$A
 	
r#  )	functoolswrapsr   r   )r  r,  s   ` r!  r   r   /  s3    __R
  
 Nr#  z	aten::sum	ReduceSumsum)decoratez
aten::mean
ReduceMeanmeanz
aten::prod
ReduceProdprodFr  c                F    t        |       t        fd       }|S )Nr5  c                    t        j                  d      t        j                  dd      fd              }rdnd}t        j                  d      t        j                  d|dd      fd              }||fS )NTrd  nonec                   d }|j                         j                         dk(  rOt        j                  |dd      }t	        j
                  |      j                         }| j                  d||      }n8|j                         j                         dk7  rt        j                  d|      S  | |      }|Ft        j
                  j                  |      j                         }||k7  r| j                  d||      }|S Nonnx::Constantr  r  ry  rz  r/  
r  kindr   r  r   r  r  r0  r'  r  )r4  rH  r  
dtype_onnxr  result_dtype_onnxr+  r  s         r!  reduce_nodimz8_reduce_with_dtype.<locals>.reduce.<locals>.reduce_nodimO  s     Jzz|  "&66'225#wG(66u=GGI
ttFDzt:""$(88&55dGUKKa&F%$/$=$=$H$H%)+ " %
2TT&&zTBFMr#  r  r  c                   d }|j                         j                         dk(  rOt        j                  |dd      }t	        j
                  |      j                         }| j                  d||      }n8|j                         j                         dk7  rt        j                  d|      S  	| |||      }|Ft        j
                  j                  |      j                         }||k7  r| j                  d||      }|S r:  r<  )
r4  rH  rF   r  r  r>  r  r?  r+  r  s
           r!  
reduce_dimz6_reduce_with_dtype.<locals>.reduce.<locals>.reduce_dimd  s     Jzz|  "&66'225#wG(66u=GGI
ttFDzt:""$(88&55dGUKKasG4F%$/$=$=$H$H%)+ " %
2TT&&zTBFMr#  )r   quantized_args
parse_args)	r4  r  r   r@  dim_descrB  r  r+  r  s	         r!  reducez"_reduce_with_dtype.<locals>.reduceM  s    		'	'	-		#	#C	0	 
1 
.	" 34		'	'	-		#	#C3	?	 
@ 
.	" Z''r#  )r!  r   )onnx_opr+  r  rF  r  s    `` @r!  _reduce_with_dtyperH  @  s1     #)@H )( )(V Mr#  zaten::cumsumr8  c                    t        j                         rL|j                         j                         dk7  rt        j                  dd|      S | j                  d||      S t        j                  ddd|       y )Nr/  rD   r  dim_ir  rO  )r   is_caffe2_aten_fallbackr  r=  r'  at_onnx_opset_unsupported)r4  r;  rF   r  s       r!  rD   rD   |  sf     ..0::<"22"11(GUKKttHe3t//++HaUCr#  zaten::_sample_dirichletc                    t        j                         r>t        j                  |      st        j                  dd|      S | j	                  d|      S t        j
                  d|      S )N_sample_dirichletz#We are not able to export generatorr   rL  _is_noner'  rM  _onnx_unsupportedr4  rH  	generators      r!  rP  rP    sa     ..0''	2"11#%JD  tt'..,,-@$GGr#  zaten::_standard_gammac                    t        j                         r>t        j                  |      st        j                  dd|      S | j	                  d|      S t        j
                  d|      S )N_standard_gammaznot able to export generatorrQ  rT  s      r!  rW  rW    sa     ..0''	2"11!#A4  tt%t,,,,->EEr#  zaten::tc                    t        j                  |      }||dk  r| j                  d|      S | j                  d|d      S )Nr  Identity	Transpose)rP  r   perm_i)r   r  r0  )r4  rH  ranks      r!  r   r     sG     ++D1D|tax ttJ%%44T&411r#  zaten::numpy_Tc                    t        j                  |      }|J t        t        t	        d|                  }| j                  d||      S Nr   rZ  r[  )r   r  rB  reversedranger0  )r4  r;  ndimperms       r!  r   r     sJ     ++E2Dq$()D44U4400r#  zaten::expandc           
     r   t        j                  |d      }t        j                  |      s'| j                  dt	        j
                  |            }n\t        j                  |      rGt        j                  | t        | |d      | j                  dt	        j                  dg                  }t        j                  j                  }t        | ||      }t        | || j                  dt	        j                  d                  }t        | | j                  d||      ||      }| j                  d||      S Nr  rh  ri  r   r  Expandr   _maybe_get_constrR  r0  rk  
LongTensor_is_packed_listrF  r   r   r   r  r~  r   r   r  )r4  rH  r   implicitr  r   neg_oness          r!  rS   rS          ++D$7D$$T*ttJ(8(8(>t?		(	(	. ..uQa !$$z5<<;M$"N
 %%++EQe$D1dADDU\\"5EDFGHADD$14>D44$%%r#  zaten::broadcast_toc           
     r   t        j                  |d      }t        j                  |      s'| j                  dt	        j
                  |            }n\t        j                  |      rGt        j                  | t        | |d      | j                  dt	        j                  dg                  }t        j                  j                  }t        | ||      }t        | || j                  dt	        j                  d                  }t        | | j                  d||      ||      }| j                  d||      S re  rh  )r4  rH  r   r  r   rm  s         r!  r-   r-     rn  r#  zaten::expand_asc                R   t        j                  |d      }t        |t        j                        r|j
                  }|j                  t        j                        }g }t        |j                               D ]  }t        j                  |j                  |      j                  |      j                  |      |      sG|j                  |       | j                  d|j                  |d      j                  |            } | j                  d|      }| j                  d||      S )Nr   rh  T)r  ri  r8  rg  )r   ri  rA  rk  Tensorr  r   r  ra  rF   equalr2  r
  rR   r)  r0  )r4  rH  rL  self_t	orig_typedimsdrC  s           r!  rR   rR     s     --dC8F&%,,'LL	5<<(vzz|$ 	A{{6;;q>33A6@@H&QAttD$(G(J(J9(U  	 DD% E44$&&r#  zaten::embeddingbc                    |r&t         j                  rt        j                  d|      |dk\  r%t         j                  rt	        j
                  d       | j                  d||      S )NzUnsupported: ONNX export of embedding with scale_grad_by_freq=True for training mode. ONNX does not support scaling the gradients.r   zWarning: ONNX export of embedding with padding_idx >= 0 for training mode. ONNX does not support not updating the embedding vector at padding_idx during training.Gather)r   export_trainingr   ru  warningswarnr0  )r4  weightindicespadding_idxscale_grad_by_freqsparses         r!  rL   rL     sd     g55''N
 	

 aG33f	
 44&'**r#  zaten::embedding_bagc
                    t        j                  |      st        j                  d      S t        j                         r| j	                  d|||d|||||	
      S t        j                  d|      S )Nz%embedding_bag with per_sample_weightsrK      )outputsscale_grad_by_freq_imode_isparse_iinclude_last_offset_ipadding_idx_i)r   rR  rS  rL  rM  )
r4  embedding_matrixr~  offsetsr  moder  per_sample_weightsinclude_last_offsetr  s
             r!  rK   rK     s      ##$67003
 	
 ..0tt!3"5%  
 	
 ,,_>NOOr#  z
aten::size)quantize_outputc                6   || j                  d|      S t        j                  |d      dk  rVt        j                  |      }|?t        j                  |d      |z   }| j                  dt	        j
                  |            }t        j                  | ||      S )Nr8  r  r   rh  ri  )r0  r   ri  r  rk  r   _size_helperr4  rH  rF   r]  s       r!  r   r   6  s     {ttGT""''S1A5//5!223<tCC$$z5<<+<$=C''455r#  zaten::transposec                0   ||k(  r|S t        j                  |      }|9t        t        |            }||   ||   c||<   ||<   | j	                  d||      S t        j
                         r| j                  d|d||      S t        j                  d|      )NrZ  r[  r  int)overload_namedim0_idim1_izAUnsupported: ONNX export of transpose for tensor of unknown rank.)	r   r  rB  ra  r0  rL  rM  r   ru  )r4  rH  dim0dim1r]  r	  s         r!  r  r  D  s    
 t| ++D1DE$K !%dT$ZT
DJttKdt33		0	0	2 ttKU4PTtUU''O
 	
r#  zaten::permuter  c           	     p    |t        t        dt        |                  k(  r|S | j                  d||      S r_  )rB  ra  rb  r0  )r4  rH  ru  s      r!  r   r   ]  s6     tE!SY'((44T$4//r#  z
aten::viewc                    t        | ||      S r  )r   )r4  rH  r   s      r!  r  r  f  s     1dD!!r#  zaten::view_asc                @    | j                  d|      }t        | ||      S r7  rJ  rK  s       r!  r  r  m  s#     DD% E1dE""r#  zaten::unsafe_chunkc                   |t        j                  dddd|      S t        j                  ||      }|t        j                  dd|      S ||z   dz
  |z  }|g||z  z  }||z  }|r|j	                  |       | j                  d||||      S )	Nr  r  rO  'Dynamic number of outputs not supportedunknown dimension sizerP  Splitsplit_ir@  r  )r   rT  r  r'  r)  r0  )	r4  rH  chunksrF   _outputsr   
split_sizesplitsleftovers	            r!  r  r  t  s     ??Ar#Ld
 	
 //c:D|--4d
 	
 -!#.J\TZ/0Fj Hh44vc84LLr#  zaten::splitc                   t        j                  ||      st        j                  dddd|      S t        j                  |j	                         d      }|j                         dkD  rt        | ||||      S t        j                  |dd      }t        j                  ||      }|!|||z  }nt        j                  dddd	|      S |g||z  z  }||z  }	|	r|j                  |	       | j                  d
||||      S )Nr   r  rO  r  rn  r   r  r  z$Unknown dimension size not supportedr  r  )r   _is_split_staticrT  	_node_getr  rF   r   r  r  r)  r0  )
r4  rH  split_size_or_sizesrF   r  	split_valr  r   r  r  s
             r!  r   r     s    ++,?J??QEt
 	
  ))*=*B*B*DgNI}}4)<c8LL ++,?lSJ//c:D|(D"CCB F  \TZ/0Fj Hh44vc84LLr#  zaten::unsafe_splitc                     t        | ||||      S r  )r   )r4  rH  r  rF   r  s        r!  r	  r	    s    
 D-sH==r#  zaten::split_with_sizesc                    t        j                  ||      st        j                  dddd|      S | j                  d||||      S )Nr   r  rO  r  r  r  )r   r  rT  r0  r4  rH  split_sizesrF   r  s        r!  r   r     sO     ++KB??2'PRV
 	
 44{34QQr#  zaten::unsafe_split_with_sizesc                     t        | ||||      S r  )r   r  s        r!  r  r    s    
 At[#x@@r#  zaten::unbindc                    |t        j                  dddd|      S | j                  d|dg|z  ||      }|dk(  r|gn|}|D cg c]  }t        j                  | ||g       }}|S c c}w )Nr  r  rO  r  r  rP  r  )r   rT  r0  _squeeze_helper)r4  rH  rF   r  r  r  squeezed_outputss          r!  r  r    s     ??aF
 	
 dd7D1#.hdWG#q=wigGBI;>''36  s   A'zaten::selectc                *   t        j                  |      }t        j                  |      sU|dk  rP|dk(  rt        j                  }n|dz   }t        j
                  | ||g|g|g      }t        j                  | ||g      S | j                  d|||      S )Nr   rf  rP  r	  r
  r  ry  r@  )r   rV  rR  r   r  _slice_helperr  r0  )r4  rH  rF   rn   	end_index
slice_nodes         r!  r   r     s    
 --e4E%%e,519B;",,I	I$22t3%yk

 ..q*seDD ttHdE#t66r#  zaten::squarec                (    | j                  d||      S NrQ  r9  r  s     r!  r   r     s     44tT""r#  zaten::squeezec                4   || j                  d|      S t        j                  |dd      }|dk  rst        j                  |      }|Et	        j
                  dt        |      z   dz   dz   dz   t        ||z         z   d	z   d
z          ||z  }nt        j                  dd|      S t        j                  ||      }|Xt	        j
                  dt        |      z   dz   dz   t        |      z   dz   dz   dz   dz          t        j                  | ||g      S |dkD  rAt	        j
                  dt        |      z   dz   dz   t        |      z   dz   dz   dz   dz          |S t	        j
                  dt        |      z   dz   dz          t        j                  | ||g      S )NSqueezer  rF   r   z'ONNX export squeeze with negative axis - might cause the onnx model to be incorrect. (Negative axis is not supported in ONNX. Axis is converted to & based on input shape at export time. CPassing an tensor of different rank in execution will be incorrect.r   %negative axis with unknown input rankz5This model contains a squeeze operation on dimension z on an input z7with unknown shape. Note that if the size of dimension z of the input zVis not 1, the ONNX model will return an error. Opset version 11 supports squeezing on zMnon-singleton dimensions, it is recommended to export this model using opset zversion 11 or higher.r  rP  z. The size of z%this dimension in the given input is z. The model will zWbe exported without the squeeze node. If the model is intended to be used with dynamic z-input shapes, please use opset version 11 to zexport the model.z. If the model is z_intended to be used with dynamic input shapes, please use opset version 11 to export the model.)
r0  r   r  r  r{  r|  strr'  r  r  )r4  rH  rF   squeeze_dimr]  dim_sizes         r!  r   r     s0    {ttIt$$!,,S#u=KQ//5MM9k"#AB == *	*
 kD()* ;; XX	 4K"11BD  33D+FHC+ HH +	
  gg ^^ &&
	
 ..q$}MM!|C+ 66 (m	
 "" hh >> ""
	
 MM?
k
	
	 l	l **1dK=IIr#  zaten::preluc                r   t        j                  |      }t        j                  |      }t        |      }|X|dkD  r.t        j                  | |t        t        d|dz
                    }n%|dk(  r |dgk(  rt        j                  | |dg      }d}||||k\  sJ d| d|        | j                  d||      S )Nr  rP  r   z)rank(x) should be >= rank(slope) but got z < PRelu)	r   r  _get_tensor_sizesrb  r  rB  ra  r  r0  )r4  rH  r}  	self_rankweight_sizesweight_ranks         r!  r   r   +  s      006I"44V<Ll#Kq=$6664aQ 78F !^ 3$44QDFK!8$	S6yk[MR	S$44v&&r#  z
aten::siluc                H    | j                  d|| j                  d|            S )NrQ  r   r9  r:  s     r!  r   r   C  s"     44uadd9e455r#  z
aten::mishc                h    | j                  d|| j                  d| j                  d|                  S )NrQ  r  Softplusr9  r:  s     r!  r   r   I  s-     44uadd6144
E+BCDDr#  c           
     d   |j                  dd      }|j                  dt        j                  j                        }t	        |      }t        j                  j                  |d         }t        j                  |d          xr |du xs t        j                  |k  }|r|D ]r  }	|	j                         st        j                  j                  |	      }
|
|k7  s9t        j                  d| d|j                          d|
j                          |	       t        |      D ]Q  \  }}	|	j                         st        j                  |	      r-| j                  d|	|j!                         	      ||<   S  | j                  |g|i |}|r"| j                  d||j!                         	      }|S )
a  Some PyTorch operators (e.g., Clip/Min/ReLU/Pad) are super set of ONNX in terms of data types.
    This function maximizes the exportability of PyTorch-ONNX by allowing ONNX-unsupported PyTorch
    operator data type. For example, `Cast<int>(Clip<float>(Cast<float>(INPUT)))` can be used to mimic
    `Clip<int>(INPUT)` (opset version < 12).

    Args:
        g (torch._C.Graph): graph to write the ONNX representation into.
        op_name (str): operator name in ONNX.
        *args (tuple): operands to the operator.
        **kwargs (dict): attributes to the operator along with "opset_before" (optional, None by default)
            indicating the smallest opset version to trigger such casting behavior and "target_float_t"
            (optional, torch.onnx.JitScalarType.FLOAT by default) indicating the data type of internal operator.

    Returns:
        Optional[torch._C.Value, Tuple[torch._C.Value, ...]]: output(s) of the operator.
    opset_beforeNtarget_float_tr   z
Inputs of z must have same dtype.Got z and ry  rz  )popr   r  r  rB  r  r   r  r   export_onnx_opset_versionisCompleteTensorr   ru  scalar_name	enumerater0  r  )r4  op_namer  r   r  r  inputsdtype_0require_castr;  input_scalar_typer  rH  s                r!  _op_with_optional_float_castr  O  s   $ ::nd3LZZ 0+2K2K2Q2QRN$ZF''226!9=G&--fQi88 P A AL P   	E%%'$/$=$=$H$H$O!$/ 33$WI .&2245U;L;X;X;Z:[] 		 "&) 	HAu%%'0F0Fu0MDD'113 ! q		 144+&+F+DttFDw'8'8':t;Kr#  z
aten::reluc                     t        | d|d      S )NRelu   r  r  r:  s     r!  r   r     s     (65rJJr#  zaten::relu6c                    t        | |dd      S )Nr      )r4   r:  s     r!  r   r     s     E1a  r#  z
aten::ceilc                &    | j                  d|      S )NCeilr9  r:  s     r!  r1   r1     s     44r#  zaten::floorc                &    | j                  d|      S )Nr  r9  r:  s     r!  rX   rX     r=  r#  z	aten::lenc           
         t        | || j                  dt        j                  dg                  }t	        j
                  | |dg      S Nrh  r   ri  )r   r0  rk  rj  r   r  )r4  rH  sz_0s      r!  _lenr    sC     4j%2B2BA32GHID**1dQC88r#  zaten::thresholdc                    t        j                  |      dk7  rt        j                  dd|      S t        j                  |      dk7  rt        j                  dd|      S | j                  d|      S )Nr   r   znon-zero thresholdznon-zero valuer  )r   rU  r'  r0  )r4  rH  r   rn  s       r!  r   r     sh    
 y)Q.--k;OQUVVu%*--k;KTRR44r#  zaten::leaky_reluc                *    | j                  d||      S )N	LeakyRelur  r9  )r4  r;  negative_slopeinplaces       r!  rw   rw     s     44UN4;;r#  z	aten::gluc                    t        j                  ||      }|
|dz  dk(  sJ | j                  d||d      \  }}| j                  d|| j                  d|            S )Nr  r   r  )r@  r  rQ  r   )r   r  r0  )r4  r;  rF   r  firstseconds         r!  ra   ra     sf     33E3?H!|q   DD%QD?ME644uadd9f566r#  zaten::softmaxc           
        t        j                  |      }||dk  r||z   }||dz   k7  }|r>t        t        |            }|d   ||   c||<   |d<   | j	                  d||      }|dz
  }| j	                  d||      }|rm|j                         j                         dk7  rLt        j                  |d	d
      }| j	                  d|t        j                  |      j                               }|r| j	                  d|      }|S | j	                  d|| j	                  d||gd            }| j	                  d|      }	t        j                  | |	|g      }
| j	                  d|	|
      }|rm|j                         j                         dk7  rLt        j                  |d	d
      }| j	                  d|t        j                  |      j                               }|S )Nr   rP  rf  rZ  r[  Softmaxr  r/  r  r  ry  rz  rZ  	ReduceMaxr  Expr  rx  )r   r  rB  ra  r0  r  r=  r  r   r  r  _reducesum_helper)r4  r;  rF   r  	input_dimis_transpose_requiredr	  r   parsed_dtyperQ   r/  s              r!  r   r     s   0  007I7c/C )S1W 4 i()D"&r(DIDItBxDDeDD9Ea-C$$y%$4UZZ\&&(,<<*55eS'JLdd ..|<FFH  G !dd;d=G DDqttKuQRtSTE
$$ue
C

+
+AsC5
ACdd5#s#G""$(88&11%gF$$G+";";L"I"S"S"U  
 Nr#  zaten::softplusc                    t        j                  |d      }|dk7  r4| j                  d| j                  d| j                  d||            |      S | j                  d|      S )Nre  rP  rx  r  rQ  )r   ri  r0  )r4  rH  r  r   
beta_consts        r!  r   r     sY     !11$<JQttE144
ADDd,CDdKK44
D!!r#  zaten::get_pool_ceil_paddingc                   t        j                  |       }||t        |       d  nd }|t        d |D              rt        j                  dd|       S t        dt        |            D cg c]D  }t        t        j                  ||   d||   z  z   ||   z
  t        ||         z              dz   F }}t        dt        |            D cg c])  }||   dz
  ||   z  ||   ||   z   k\  r||   dz
  n||   + }}t        dt        |            D cg c]2  }||   dk(  rdn%||   ||   d||   z  z   ||   dz
  ||   z  dz   z
  z
  4 }}t        dt        |            D cg c]Q  }||   d||   z  z   ||   k\  r-||   ||   dz
  k  rt        ||         nt        ||   dz
        nt        ||         S }}|S c c}w c c}w c c}w c c}w )Nc              3  $   K   | ]  }|d u  
 y wr  r  r  r  s     r!  r  z(get_pool_ceil_padding.<locals>.<genexpr>  s     1!t)1   r`   input size not accessibler   r  rP  )
r   r  rb  anyr'  ra  r  r  r1   r  )	r;  kernel_sizestridepaddingsizesrF   r  ceiled_output_dimpadding_ceils	            r!  r`   r`     sc    --e4E$)$5%W
 4C
{c1S11--#%@%
 	
 q#g,'  	DIIs1vGAJ.Q?5PQCSSTU
	  q#/01	   "Q&&)3Q'!*9LM 	!q q!	"  q#g,'  1IN 	
 N1vGAJ&+<Q+?!+Cvay*PST*TUW	
L $ q#l+,	  !_q71:~-;q>B AQ!!33 Q [^a'( a!	"	L 	 A	s   +A	F>.G7G$AGzaten::max_pool1d
max_pool1drP  )return_indiceszaten::max_pool2d
max_pool2dr  zaten::max_pool3d
max_pool3d   c           	          t        j                  dddddd      t        j                  dddddd      t        j                   fd                     }|S )NTFrd  r  r  c                   t         |            dhk7  rt        j                  d|      S |s|}t         |            }|r.t	        ||||      }|t        d t        ||      D              z   }n|dz  } |      | |      d}r | j                  d|fddi|\  }	}
| j                  d|dt              D cg c]  }d c}t              D cg c]  }d c}      \  }}t        j                  | |t              D cg c]  }d|z   	 c}t         d	            t         d            
      }t        | |
|      }
|	|
fS  | j                  d|fddi|}	|	S c c}w c c}w c c}w )NrP  dilationc              3  ,   K   | ]  \  }}||z     y wr  r  r  arw  s      r!  r  z1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>k  s     %UAa!e%U   r  )kernel_shape_ipads_i	strides_iMaxPoolr  )r  r  r  r   r  )setr   r'  r  r`   zipr0  ra  r  rB  r   )r4  r;  r  r  r	  r  	ceil_moder  r   rr~  _flattened_indicesr  rp  r+  ndimsr  tuple_fns                  r!  symbolic_fnz_max_pool.<locals>.symbolic_fn`  s    x!"qc)"11$
EJJ F)*0VWUL%U#lG:T%U UUGkG&{3!&)
$ iDDVDJAw#$44+0<8a8&+El313 $( $ A   --!%*5\2a!e2HQK((1+&A !Wa(Gg:Y;q;F;AH  93 3s    	E'	E,
E1r   rC  rD  r   r   )r+  r$  r#  r  r%  s   ```` r!  	_max_poolr'  C  sb    : ##D%ueLT4tSA2  B M2h r#  zaten::max_pool1d_with_indicesr   zaten::max_pool2d_with_indicesr   zaten::max_pool3d_with_indicesr   zaten::avg_pool1d
avg_pool1dzaten::avg_pool2d
avg_pool2dzaten::avg_pool3d
avg_pool3dc           
          t        j                  d      t        j                  ddddddd      t        j                  	 d	 	 	 	 	 	 	 	 	 	 	 d fd                     }|S )	NTrd  r  r  r8  c           	     j   |s|}t        j                  ||||      }t        |t              sJ |}|r&t	        | d|d|z   dz  ddd      }dt        |      z  }|r.t        ||||      }	|t        d	 t        |	|      D              z   }n|dz  }| j                  d
| |       |      |      }
|
S )NPad)r   r   r  constantr  rO  r  mode_svalue_fr  r   c              3  ,   K   | ]  \  }}||z     y wr  r  r  s      r!  r  z1_avg_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s      8 1aA8r  AveragePool)r  r  r  )	r   _avgpool_helperrA  r  r  rb  r`   r  r0  )r4  r;  r  r  r	  r  count_include_paddivisor_overrideadjusted_paddingr  outputr+  r$  s              r!  r%  z_avg_pool.<locals>.symbolic_fn  s      F!11g{F4Dd
 '5)))" 0 7*a/!E  $c'l20VWUL/% 8$'6F$G8 3    0!3#K0v&#  
 r#  r  )r;  _C.Valuer  Sequence[int]r  r;  r	  zUnion[int, Sequence[int]]r  r  r6  r  r&  )r+  r$  r%  s   `` r!  	_avg_poolr<    s    . ##D)T4sCH // #/ 	/
 +/ / /  I */b r#  zaten::adaptive_avg_pool1dadaptive_avg_pool1dr4  zaten::adaptive_avg_pool2dadaptive_avg_pool2dzaten::adaptive_avg_pool3dadaptive_avg_pool3dzaten::adaptive_max_pool1dadaptive_max_pool1dr  zaten::adaptive_max_pool2dadaptive_max_pool2dzaten::adaptive_max_pool3dadaptive_max_pool3dc                v     t        j                  dd      t        j                   fd              }|S )NTFc                   |}	 t        j                  |d      }|dgt	        |      z  k(  rdk(  r| j                  d|      S t        j                  |      }	 |dd  }|t        d |D              r=|dgt	        |      z  k(  r| j                  d|      d fS t        j                  d	|      S t        d
t	        |            D cg c]  }||   ||   z   }}|d
gt	        |      z  k7  r=|dgt	        |      z  k(  r| j                  d|      d fS t        j                  d|      S t        d
t	        |            D cg c]  }t        ||   ||   z         }}dk(  r& 
| |||dt	        |      z  dt	        |      z  d      S | j                  | |       |            }	|	S # t        $ r t        j                  d|      cY S w xY w# t        $ r d }Y w xY wc c}w c c}w )Nr  z4adaptive pooling, since output_size is not constant.rP  r4  GlobalAveragePoolr  c              3  $   K   | ]  }|d u  
 y wr  r  r  s     r!  r  z6_adaptive_pool.<locals>.symbolic_fn.<locals>.<genexpr>a  s     5Aa4i5r  GlobalMaxPoolr  r   z-output size that are not factor of input sizer  r2  )rP  F)r  r  )r   
_parse_arg	ExceptionrS  rb  r0  r  r  r'  ra  r  )r4  r;  output_sizeoutput_size_valuer
  rF   r  r  kr9  r  r+  r$  types             r!  r%  z#_adaptive_pool.<locals>.symbolic_fnC  s"    (	)44[$GK 1#K 000T]5J44+U3311%8	)C
 ;#555qcC$444ttOU3T99"1115  16aS0BC1s1vA&CC1#C. qcC$444ttOU3T99"11EGX  49CH3EFaSQ+a.()FF9a1dSXotc#hNNdE(1+RSUE  	 #44F 	  	 C	 D Gs/   F, G G#G(,GGG G )r   rC  r   r   )r+  rM  r$  r  r%  s   ```` r!  _adaptive_poolrN    s<    B ##D%0/  1/b r#  c                p    t        |dd       dg| dz  t        |      z
  z  z   }|ddd   |ddd   z   }|S )zGenerate paddings in ONNX order based on pad in pytorch.
    Args:
        dim: the dimension of the tensor.
        pad: the paddings in pytorch.
            The order is dim_n_begin, dim_n_end, dim_n-1_begin, dim_n-1_end, ...
    Nr   r  rf  )rB  rb  )rF   r   paddingss      r!  _prepare_onnx_paddingsrR  y  sO     CF|qcS1Ws3x%788HB(26r6"22HOr#  c                X   t        j                  | d      }t        j                  |      rQt        j                  |      r<t        j                  |      }	 |D cg c]  }t        j
                  |dd       }}|S |S c c}w # t        $ r t        j                  dddd|       cY S w xY w)Nr  r  r	  r-  r  rO  z)The sizes of the padding must be constant)r   ri  rR  rk  r  r  rI  rT  )r;  r	  
input_listrd  s       r!  _convert_padding_noderU    s    ..ud;G  )o.M.Mg.V$11':
		GQBC**1c9=G  N7N  	 #CCq"I5 	s$   B A?9B ?B "B)(B)zaten::constant_pad_ndc           	         d}	 t        j                  |dd      }t	        |      }t        t        j                  |      |      }t        | d||||d      S # t        $ r t        j                  dddd|      cY S w xY w)	Nr.  re  rn  r-  r  rO  z*The value for the padding must be constantr/  )r   r  rI  rT  rU  rR  r  r  )r4  r;  r	  rn  r  rQ  s         r!  r6   r6     s     D
**5#w? $G,G%o&F&Fu&MwWH'	5%uSU   
 ??1bF
 	

s   A "A<;A<c                   t        |      }t        |      dz  dk(  sJ t        |      dz  }|}t        |      D ]-  }|d|z  dz       }|d|z  dz       }g }	|dkD  r@t        j                  | |d|z   g| gt
        j                  g      }
|	j                  |
       |dk  s|dk  rat        j                  d|       }t        j                  d|        }t        j                  | |d|z   g|g|g      }|	j                  |       n|	j                  |       |dkD  r1t        j                  | |d|z   gdg|g      }|	j                  |        | j                  dg|	dd|z   i}0 |S )Nr  r   rP  r  r?  r@  )rU  rb  ra  r   r  r   r  r)  builtinsr   r0  )r4  r;  r   r	  rb  curidxpad_rpad_lr  leftstartendmiddlerights                  r!  _pad_circularrb    s   #C(Gw<!q   w<1D
CT{ 9!c'A+'!c'A+'19"003a#gY%zAUAU@VD NN4 19	LLUF+ELLUF+,C$22#gYwUF NN6"NN319#113a#gYs%E NN5!add88g8q3w8=9@ Jr#  zaten::reflection_pad1dzaten::reflection_pad2dzaten::reflection_pad3dc                |    d}t        |      }t        t        j                  |      |      }t	        | d|||d      S )Nreflectr-  rO  r  r0  r  rU  rR  r   r  r  r4  r;  r	  r  rQ  s        r!  r   r     sD    
 D#G,G%o&F&Fu&MwWH'	5%B r#  zaten::replication_pad1dzaten::replication_pad2dzaten::replication_pad3dc                |    d}t        |      }t        t        j                  |      |      }t	        | d|||d      S )Nedger-  rO  re  rf  rg  s        r!  r   r     sD    
 D#G,G%o&F&Fu&MwWH'	5%B r#  z	aten::padc                    t        j                  |d      }|dk(  rt        | ||      S |dk(  rt        | ||      S |dk(  rt	        | |||      S |dk(  rt        | ||      S t        j                  d| |      )Nrp  	replicaterd  r.  circularzUnrecognized padding mode )r   rH  r   r   r6   rb  r   ru  )r4  r;  r   r  rn  s        r!  r   r     s     %%dC0D{q%--		a,,		q%e44		Qs++''*DTF(KUSSr#  zaten::upsample_nearest1dupsample_nearest1dnearestzaten::upsample_nearest2dupsample_nearest2dr  zaten::upsample_nearest3dupsample_nearest3d   zaten::upsample_linear1dupsample_linear1dr~   zaten::upsample_bilinear2dupsample_bilinear2dzaten::upsample_trilinear3dupsample_trilinear3dc                      fd}|S )Nc                   t        j                  | |      \  }}t        j                         t        j                  |      }|rt        j                  d|      S |t        j
                  | ||      }| j                  d||      S )Nzalign_corners == TrueUpsampler0  )r   _get_interpolate_attributes_interpolate_warningrV  r'  _interpolate_size_to_scalesr0  )	r4  r;  rJ  r  scalesalign_cornersrF   interpolate_moder+  s	         r!  r%  z!_interpolate.<locals>.symbolic_fn7  s     / K K!
 	,,-=>'99-H"11$8OQVWW>$@@5+sF ttJv6FtGGr#  r  )r+  rF   r~  r%  s   ``` r!  _interpolater    s    XH r#  zaten::__interpolatec                f    t        j                  | |||||      \  }}| j                  d|||      S )Nrw  rx  )r    _interpolate_get_scales_and_moder0  )	r4  r;  r   scale_factorr  r}  recompute_scale_factor	antialiasr|  s	            r!  __interpolater  H  s>     #CC	5$dMLFD 44
E6$477r#  zaten::bitwise_notc                |    t        j                  |      st        j                  d|      | j	                  d|      S NzOONNX export does NOT support exporting bitwise Not for non-boolean input valuesr  r   r^  r   ru  r0  r:  s     r!  r)   r)   Z  s@     ##E*''+
 	

 44ur#  zaten::bitwise_orc                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzVONNX export does NOT support exporting bitwise OR for non-boolean input values. self: zWONNX export does NOT support exporting bitwise OR for non-boolean input values. other: Orr  r_  s      r!  r*   r*   f  sm     ##D)''3
 	

 ##E*''4
 	

 44dE""r#  c                      fd}|S )Nc                F     t        j                          fd       }|S )Nc           	     X    t               d    } |  || |d       || |d            S )N_cast_F)r'  )r4  r;  rL  to_cast_funcr  to_types       r!  wrap_with_castzGwrap_logical_op_with_cast_to.<locals>.decorator.<locals>.wrap_with_cast{  s7    "9vgY%78Laa6Qu8UVVr#  r,  r-  )r  r  r  s   ` r!  	decoratorz/wrap_logical_op_with_cast_to.<locals>.decoratorz  s(    			W 
	W r#  r  )r  r  s   ` r!  r  r  x  s     r#  c                B     t        j                          fd       }|S )Nc                8    | j                  d | ||            S )Nr  r9  )r4  r;  rL  r*  s      r!  wrap_with_notz4wrap_logical_op_with_negation.<locals>.wrap_with_not  s    ttE45%011r#  r  )r*  r  s   ` r!  r  r    s&    __T2 2 r#  zaten::__not_c                |    t        j                  |      st        j                  d|      | j	                  d|      S r  r  r  s     r!  __not_r    s@     ##D)''+
 	

 44tr#  zaten::eqc           	        t        |j                         t        j                        r^t        |j                         t        j                        r6| j	                  dt        j                  dt
        j                              S |j                         }|j                         }|j                         |j                         cxk(  rdk(  rn n|j                  d      |j                  d      cxk(  rdk(  rZn nW| j	                  dt        j                  |j                  d      |j                  d      k(  t
        j                              S | j	                  d||      S )	Nrh  Tr  ri  r;  rn  rp  r  )rA  rM  r
   DeviceObjTyper0  rk  r   boolr  r=  kindOfrp  )r4  rH  rL  	self_node
other_nodes        r!  rO   rO     s    $))+r//0Z

b&&6
 ttJT(LtMM		IJ~~:??,@0@@G$
(9(9'(BIcI 44KK(JLL,AA**    44u%%r#  zaten::nec                    t        | ||      S r  )rO   r_  s      r!  r   r     s    
 aur#  zaten::gtc                    t        | ||      S r  _gt_implr4  r;  rL  s      r!  rc   rc          Aue$$r#  c                ,   t        j                  |      rmt        j                  |      rX| j                  d|t        j                  j
                        }| j                  d|t        j                  j
                        }| j                  d||      S )Nry  rz  r  r   r^  r0  r|  r}  INT32r  s      r!  r  r    sp    &?+C+CE+JVU)D)D)J)JKVU)D)D)J)JK44	5%((r#  zaten::ltc                    t        | ||      S r  _lt_implr  s      r!  r   r     r  r#  c                ,   t        j                  |      rmt        j                  |      rX| j                  d|t        j                  j
                        }| j                  d|t        j                  j
                        }| j                  d||      S )Nry  rz  r  r  r  s      r!  r  r    sp    &?+C+CE+JVU)D)D)J)JKVU)D)D)J)JK44u%%r#  zaten::gec                    t        | ||      S r  r  r  s      r!  r^   r^         
 Aue$$r#  zaten::lec                    t        | ||      S r  r  r  s      r!  rv   rv     r  r#  zaten::__and_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzOONNX export does NOT support exporting bitwise AND for non-boolean input valuesr]  r  r  s      r!  __and_r    m     ##E*''+
 	

 ##E*''+
 	

 44ue$$r#  zaten::__or_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzNONNX export does NOT support exporting bitwise OR for non-boolean input valuesr  r  r  s      r!  __or_r    sm     ##E*''+
 	

 ##E*''+
 	

 44eU##r#  zaten::__xor_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzOONNX export does NOT support exporting bitwise XOR for non-boolean input valuesr  r  r  s      r!  __xor_r  	  r  r#  zaten::logical_andBoolc                (    | j                  d||      S )Nr]  r9  r  s      r!  r   r   "	       44ue$$r#  zaten::logical_orc                (    | j                  d||      S )Nr  r9  r  s      r!  r   r   )	  s     44eU##r#  zaten::logical_xorc                (    | j                  d||      S )Nr  r9  r  s      r!  r   r   0	  r  r#  zaten::logical_notc                z    | j                  d| j                  d|t        j                  j                              S )Nr  ry  rz  r0  r|  r}  BOOLr:  s     r!  r   r   7	  s0     44qttFE0K0K0P0PtQRRr#  zaten::__rshift_c                |   t         j                  j                  |      }t         j                  j                  |t         j                  j                        |k7  r"| j	                  d||j                               }| j	                  dt        j                  dt        j                              }t        j                  |      s,| j	                  d|t        j                  j                        }| j	                  d||      }| j	                  d||j                               }| j	                  d||      }|S )	Nry  rz  rh  r  r  ri  Powrx  r   r  r  r  r0  r  rk  r   float32r   r  r|  r}  r  )r4  rH  rL  r  twotwo_powrshifts          r!  	__rshift_r  =	     
 #00;;DA!!,,UK4M4M4W4WX	 !++-  
 $$z5<<#G$
HC!!$'VU)D)D)J)JKdd5#u%Gdd'')  G
 TT%w'FMr#  zaten::__lshift_c                |   t         j                  j                  |      }t         j                  j                  |t         j                  j                        |k7  r"| j	                  d||j                               }| j	                  dt        j                  dt        j                              }t        j                  |      s,| j	                  d|t        j                  j                        }| j	                  d||      }| j	                  d||j                               }| j	                  d||      }|S )	Nry  rz  rh  r  r  ri  r  rQ  r  )r4  rH  rL  r  r  r  lshifts          r!  	__lshift_r  [	  r  r#  zaten::wherec           
     @   t        j                  |      s,| j                  d|t        j                  j
                        }|Ht        | |      }t        j                  | || j                  dt        j                  d            |      S | j                  d|||      S )Nry  rz  rh  rP  ri  r  )
r   r^  r0  r|  r}  r  r   _unbind_helperrk  r   )r4  	conditionrH  rL  r  s        r!  r  r  y	  s    
 ##I.DD1L1L1Q1QDR	|Ay)	--y!$$z5<<?$CX
 	
 44D%00r#  zaten::log_softmaxc                6   t        j                  |      }|t        j                  dd      S |dk  r||z   }||dz   k7  }|r>t        t	        |            }|d   ||   c||<   |d<   | j                  d||      }|dz
  }| j                  d||	      }|rm|j                         j                         d
k7  rLt        j                  |dd      }| j                  d|t        j                  |      j                               }|r| j                  d|      }|S )NrF   fONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.r   rP  rf  rZ  r[  
LogSoftmaxr  r/  r  r  ry  rz  )r   r  r'  rB  ra  r0  r  r=  r  r   r  r  )	r4  r;  rF   r  r  r  r	  	return_opr  s	            r!  r   r   	  s0     007I--7
 	

 Qw#o%q0E)$%"2hS	S	48[%5!m\55I""$(88&11%gFDDIK$=$=l$K$U$U$W  
	 DDiD=	r#  zaten::_log_softmaxc                   |rt         j                  j                  |t         j                  j                        t         j                  j                  k(  r,| j                  d|t        j                  j                        }t        | ||      S r  )
r   r  r  r  HALFr0  r|  r}  r  r   )r4  r;  rF   half_to_floats       r!  _log_softmaxr  	  ss    
 	%%00;,,66
 $$))*
 VU)D)D)J)JKq%%%r#  zaten::_convolutionc                p   t        j                  |      }	 |dd  }|t        d |D              rt	        j
                  d|      ||g}t        j                  |      s)t        j                  |      dk(  r|j                  |       |dd  |||z   ||	d}t        d |D              r"|sJ t        |      t        |      k(  sJ ||d<    | j                  |rdnd	g|i |}t        j                  |      s+t        j                  |      dk7  r| j                  d
||      S |S # t        $ r d }Y w xY w)Nr  c              3  $   K   | ]  }|d u  
 y wr  r  r  s     r!  r  z_convolution.<locals>.<genexpr>	       "C19"Cr  DUnsupported: ONNX export of convolution for kernel of unknown shape.rP  )r  r  r  dilations_igroup_ic              3  &   K   | ]	  }|d k7    ywr  r  )r  os     r!  r  z_convolution.<locals>.<genexpr>	  s     
*a16
*s   output_padding_iConvTransposeConvrN  )r   r  rI  r  r   ru  rR  r  r)  rb  r0  )r4  r;  r}  biasr  r	  r  
transposedoutput_paddinggroups	benchmarkdeterministiccudnn_enabled
allow_tf32weight_sizekernel_shaper  r   r5  s                      r!  _convolutionr  	  s_   * "33F;K"12 s"Cl"CC''R
 	

 6?D $$T*,,T2a7D &ab/ G#F 
*>
** z6{c.1111%3!"
_HHHA $$T*,,T2a7ttE1d##[   s   D& &D54D5zaten::_convolution_modec                   t        j                  |      }	 |dd  }	|	t        d |	D              rt	        j
                  d|      ||g}
t        j                  |      s)t        j                  |      dk(  r|
j                  |       |dk(  rd}n|dk(  rd}|dd  ||||d	} | j                  d
g|
i |}t        j                  |      s+t        j                  |      dk7  r| j                  d||      S |S # t        $ r d }	Y w xY w)Nr  c              3  $   K   | ]  }|d u  
 y wr  r  r  s     r!  r  z$_convolution_mode.<locals>.<genexpr>
  r  r  r  rP  validVALIDsame
SAME_UPPER)r  r  
auto_pad_sr  r  r  rN  )
r   r  rI  r  r   ru  rR  r  r)  r0  )r4  r;  r}  r  r  r	  r  r  r  r  r  r   r5  s                r!  _convolution_moder  
  s2   * "33F;K"12 s"Cl"CC''R
 	

 6?D $$T*,,T2a7D'	F	%ab/F 	V%d%f%A $$T*,,T2a7ttE1d##O   s   C: :DDzaten::convolutionc
                2    t        | |||||||||	d d d d       S r  r  )
r4  r;  r}  r  r  r	  r  r  r  r  s
             r!  r@   r@   C
  s;     	 r#  zaten::conv1dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S Nrp  )r  r  r  Fr  r   rH  r  r  	r4  r;  r}  r  r  r	  r  r  str_paddings	            r!  r<   r<   d
       ",,Wc:K'' 	
 		
 ",,Wd;
 	
r#  zaten::conv2dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S r  r  r  s	            r!  r=   r=   
  r  r#  zaten::conv3dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S r  r  r  s	            r!  r>   r>   
  r  r#  zaten::conv_transpose1dc	                2    t        | ||||||d||d d d d       S NTr  	r4  r;  r}  r  r  r	  r  r  r  s	            r!  r9   r9   
  ;     	 r#  zaten::conv_transpose2dc	                2    t        | ||||||d||d d d d       S r  r  r  s	            r!  r:   r:   
  r   r#  zaten::conv_transpose3dc	                2    t        | ||||||d||d d d d       S r  r  r  s	            r!  r;   r;     r   r#  zaten::batch_normc
                   t        j                  |d       t        j                         rFt        j                  |||||g      s,t
        j                  dk  rt        j                  dddd|      S t        j                  | |||||      \  }}}}| j                  d||||||d|z
  |sdnd	      }
|s|
S |
\  }}}}}|j                  |j                                |j                  |j                                |j                  d	|j                         z          |j                  d	|j                         z          |S )
Nr'      BatchNormalizationr  zaAll input tensors must have the same `dtype`. Turn off Autocast or export using opset version 15.rP  rq  )	epsilon_f
momentum_fr  zbatch_norm_dead_output-)r   check_training_moderk  is_autocast_enabledargs_have_same_dtyper   r  rT  _batchnorm_helperr0  r1  rM  setDebugName	debugName)r4  r;  r}  r  running_meanrunning_vartrainingmomentumepsr  r  resnew_running_meannew_running_var
saved_mean	saved_vars                   r!  r'   r'   6  s[    '',? 	!!#44FD,<
 --2?? C
 	
 />.O.O	5&$k/+FD, $$x<!q  
C 
HKE
I  !2!2!45 0 0 23 9J<P<P<R RS89;N;N;PPQ
r#  zaten::native_layer_normc                   t        t        |      dd      D cg c]  }|  }}t        j                  | d      }t        j                  | |      }	| j	                  d||      }
t        | ||
      }t        j                  j                  |      t        j                  j                  k(  }|rTt        j                  j                  |	      }| j	                  d|t        j                  |      j                               }| j	                  dt        | ||      |      }t        | | j	                  d||	            }| j	                  d	||      }|rTt        j                  j                  |      }| j	                  d|t        j                  |      j                               }|"t        j                  |      st        | ||      }|"t        j                  |      st        | ||      }|rH| j	                  d|t        j                        j                               }| j	                  d
|      }nt!        | |      }||
|fS c c}w )Nr   rf         @r1  r  ry  rz  rN  rx  r  )ra  rb  r   _generate_wrapped_numberr0  r   r   r  r  r  r  r   r   rR  r   r   r   )r4  r;  normalized_shaper}  r  r  r  r	  two_csteps_cstr2  	numeratoris_type_half	eps_dtypevariancedenominator
normalizedinput_dtyperdenominators                      r!  r   r   p  s    c"23Q;<1QB<D<66q#>G66q#>G44eD41DAud#I 	!!,,Y7$$))	*  --88A	DDIK$=$=i$H$R$R$T  
	
 ttL#aG"<TtJHq!$$uh89KeY4J !//::5ATTJ[%>%>{%K%U%U%W  

 No66v>J/
LO44T:J-

 ddKk&?&?&L&V&V&X  
 ttL+6!![1t\))_ =s   
I
zaten::layer_normc           	         t        j                         r| j                  d||||||      S t        | |||||      \  }}}|S )Nru   )normalized_shape_ieps_fcudnn_enable_i)r   rL  rM  r   )	r4  r;  r  r}  r  r  cudnn_enabler#  r!  s	            r!  ru   ru     s`     ..0tt/'  
 	
 )E3CVTSVWJ1r#  zaten::instance_normc
                   t        j                  |d       t        j                  |d      }
|t        j                  |      rq|
t	        j
                  d|      t        j                  dg|
z  t        j                  j                  |      j                               }| j                  d|      }|t        j                  |      rq|
t	        j
                  d|      t        j                  dg|
z  t        j                  j                  |      j                               }| j                  d|      }|,t        j                  |      s|t        j                  |      r| j                  d	||||
      S t        j                  |      }|j                         }|d   }|t	        j
                  d|      |d   }d|d<   ||z  |d<   t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }| j                  d|| j                  dt        j"                  |                  }t%        | |||||||||	
      }t'        | || j                  dt        j                  |                  S )Nro   rP  zCUnsupported: ONNX export of instance_norm for unknown channel size.r  r  rh  ri  r  InstanceNormalizationr  r   zJUnsupported: ONNX export of instance_norm training for unknown batch size.Reshape)r   r  r  rR  r   ru  rk  r   r   r  r  r  r0  r  copyr   r  rj  r'   r  )r4  r;  r}  r  r  r  use_input_statsr  r  r  channel_sizeweight_value
bias_value
input_sizeinput_size_reshaper5  cweight_bias_running_mean_running_var_input_reshapedr  s                          r!  ro   ro     s    ''I"77qAL~11&9++U  ||EL ++66u=CCE
 j,7|//5++U  \\EL ++66u=CCE

 ttJ
t3##L1##K0tt+UFDCtPP$66u=
 (__.qM9++ 
 qM !1 !A1vqttJaS0TtU
 tQTT*ellA3ekk.RTS
 DDU\\1#U[[%IDJ

 DDU\\1#U[[%IDJ

 DDU%5%56H%IDJ

 
 AsADDU\\*5MDNOOr#  zaten::unfoldc                   t        j                         r| j                  d||||      S t        j                  |      }	 ||   }|t        d||      }t        ||dz   |      }t        ||      D 	
cg c]"  \  }	}
t        j                  | ||g|	g|
g      $ }}	}
t        |      }t        t        d|            }|j                  |j                  |             |D cg c],  }t        j                  | | j                  d||      |g      . }} | j                  dg|d	|iS t        j                  d
d|      S # t        $ r d }Y 
w xY wc c}
}	w c c}w )Nr  )dimension_isize_istep_ir   rP  r  rZ  r[  r?  r@  Unfoldr  )r   rL  rM  r  rI  ra  r  r  rb  rB  r)  r  r  r0  r'  )r4  r;  	dimensionr   stepr
  sizedimlow_indices
hi_indiceslowhir   rb  rc  r   r
  s                   r!  r  r  +  s    ..0ttHe4PTtUU--e4E	"
 Aw-41d3

 {J7	
 R ))5	{C5t
 
 5zE!TN#DHHY'(
 	
  --144Qt44yk
	 
 qttH;y;;;--15
 	
1   

s   E 4'E"1EEEz	aten::eluc                    |r|dk7  rt        j                  dd|      S |r|dk7  rt        j                  dd|      S | j                  d|t        j                  |            S )Nr  r  zdoes not support scale in Eluinput_scalez#does not support input_scale in EluElur  )r   r'  r0  rU  )r4  r;  rX  r  rI  s        r!  rJ   rJ   R  sq    
 #--4e
 	
 {c)--@+
 	
 44uo&=&=e&D4EEr#  z
aten::seluc                &    | j                  d|      S )NSelur9  r:  s     r!  r   r   c  s     44r#  zaten::index_selectc                2    t        j                  | |||      S r  )r   _select_helper)r4  rH  rF   rn   s       r!  rm   rm   j  s     ))!T3>>r#  zaten::index_putc                ^   t        j                  |      rt        j                  |      }n|g}t        j                         r|g|z   ||gz   } | j                  dg| S t        j
                  |d      }t        |      dk(  r|rt        | ||      S |S t        j                  ddd|       y )Nrl   rw  r   r  rO  )	r   rk  r  rL  rM  rH  rb  r   rN  )r4  rH  indices_list_valuevalues
accumulateindices_listr  s          r!  rl   rl   t  s     &&'9:&334FG*+..0v$
';;qttK'$'' ++J<J
<Aq$''++KBEr#  zaten::index_fillc                J   t        j                  |d      }t        j                         r| j                  d|||d|      S t        j                  | |||      \  }}t        j
                  |      }t        j                  ||      }t        | ||d       }t        | ||||      S )Nr  rk   
int_Scalar)r  rK  )	r   rH  rL  rM  _index_fill_reshape_helperrV  r  rS   r   )	r4  rH  rF   rn   rn  	dim_valueexpanded_index_shapeexpanded_indexexpanded_values	            r!  rk   rk     s      **34I..0tt&  
 	
 ,;+U+U	4e,(. --e4E..ud;EAu&:DAN1dC@@r#  zaten::index_copyc                    t        j                  |d      }t        j                         r| j                  d||||      S t        j                  | |||      \  }}t        | ||||      S )Nr  rj   rJ  )r   rH  rL  rM  rV  r   )r4  rH  rF   rn   sourcerW  rX  rY  s           r!  rj   rj     so      **34I..0ttL$vYtGG+:+U+U	4e,(. 1dC88r#  zaten::bucketizec                   t         j                  j                  }|rt         j                  j                  }| j	                  d| j	                  d|      | j	                  d|      d      }t        j                  |      }|J t        t        d|dz               }t        | t        j                  | ||      |d       }	|rt        | ||	      }
nt        | ||	      }
| j	                  d|
|      }t        j                  | |dgd      S )	Nr?  r8  r   r  rP  ry  rz  r  )r|  r}  r~  r  r0  r   r  rB  ra  rS   r  r^   rc   r  )r4  rH  
boundaries	out_int32ra  out_type	new_shapetensor_rankunsqueeze_axesexpanded_boundariescondcond_outs               r!  r.   r.     s    **00H..44 XqttGZ8!$$w:MVWXI "2248K"""%;?34N 	))!ZH	 !T./!T./ttFDxt0H ,,Q!QRSSr#  zaten::type_asc                *   t        j                  |      }t        j                  |      }||k(  r||S |"| j                  d||j                               S t        j                         r| j                  d||      S t        j                  d|      )Nry  rz  r  zUnsupported: ONNX export of type_as for tensor of unknown dtype. Please check if the dtype of the parameter passed to the type_as function is correct.)r   r  r0  r  rL  rM  r   ru  )r4  rH  rL  
self_dtypeother_dtypes        r!  r  r    s     !55d;J!66u=K[ Z%;tt&&(  
 	
 ..0ttItU++

#
#	? 		 r#  zaten::cosine_similarityc                   t        j                         r| j                  d||||      S t        j                  | t	        | ||      |gd      }t        j                  | t	        | ||      |gd      }t        j                  | t	        | ||      |gd      }t        | t        | t	        | ||            | j                  dt        j                  |g                  }t        | ||      S )NrB   )rK  r(  r   r  rh  ri  )r   rL  rM  r  r   r   r   r0  rk  r   rG   )	r4  x1x2rF   r  rC   x1_l2x2_l2div_tenss	            r!  rB   rB     s     ..0tt'Rs#tFF--	3q"b>3%AE --	3q"b>3%AE --	3q"b>3%AE 	43q%'(!$$z5<<QTPUCV$*WH q%""r#  zaten::pairwise_distancec                   t        j                  |      s'| j                  dt        j                  |g            }t        | | j                  dt        j                  dgt        j                              t        | ||            }t        j                  | t        | t        | ||      |      dgt        j                  |d            }t        | ||      S )Nrh  ri  rP  r  rf  r  r  )r   rR  r0  rk  r   rG   r  r   r  r   r   rH  )r4  input1input2pr  r  inv_p	summations           r!  r   r     s     $$S)dd:u||SE':d;		Zqc!EFAq#E
  11	As1ff%q)t"--gs;	I q)U##r#  zaten::clonec                    |S r  r  )r4  r;  unused_memory_formats      r!  r5   r5     	     Lr#  z	aten::absc                &    | j                  d|      S )NAbsr9  r  s     r!  r   r     r  r#  z	aten::logc                &    | j                  d|      S )NLogr9  r  s     r!  r   r   !  r  r#  zaten::log1pc                ~    t        | t        | t        j                  t	        j
                  d      |      |            S )NrP  )r   r   r   r  rk  r   r  s     r!  r   r   '  s0     q#a;;EJJqM4PRVWXXr#  zaten::log10c           
         d}| j                  dt        | |      | j                  dt        j                  |g                  S )NgUk@rx  rh  ri  r0  r   rk  r   )r4  rH  _ln10s      r!  r   r   -  s:     #E44s1d|QTT*ellE7>ST%TUUr#  z	aten::powc                z   t         j                  j                  |      }t        j                  |      s<t         j                  j
                  }| j                  d||j                               }t        j                  |      s"| j                  d||j                               }| j                  d||      }|S )Nry  rz  r  )r   r  r  r   r  r  r0  r  )r4  rH  exponentf_dtyper   s        r!  r   r   4  s     ''2248G!!$'++11ttFDw'8'8':t;!!(+44""$  

 $$udH
%CJr#  zaten::clampc           
        t        j                  |      rt        | ||      S t        j                  |      rt        | ||      S t        j                  |      rNt        j                  |      r9t        | d|t        j                  |d      t        j                  |d      d      S t        | t        | ||      |      S )NClipre     min_fmax_fr  )r   rR  r2   r3   r  r  rH  )r4  rH  r   r   s       r!  r4   r4   E  s    
 $D#&&		!	!#	&D#&&'',1M1Mc1R/%00c:%00c:  Q	!T3 7==r#  zaten::clamp_minc           	        t        j                  |      r$t        | d|t        j                  |d      d      S t        j
                  j                  |      }| j                  d||j                               }t        | d||d      S )	Nr  re  r  )r  r  ry  rz  Maxr  	r   r  r  rH  r   r  r  r0  r  )r4  rH  r   r  s       r!  r3   r3   \  ~     ##C(+vt?#=#=c3#GVX
 	
 ))44T:dd63U__%6d7+AudCbQQr#  zaten::clamp_maxc           	        t        j                  |      r$t        | d|t        j                  |d      d      S t        j
                  j                  |      }| j                  d||j                               }t        | d||d      S )	Nr  re  r  )r  r  ry  rz  Minr  r  )r4  rH  r   r  s       r!  r2   r2   j  r  r#  z	aten::maxc                   ||| j                  d|d      S |t        | d||d      S t        j                  |dd      }t        j                  |dd	      }| j                  d||g|
      }| j                  d|||      }||fS )Nr  r   r  r  r  r  r  rF   r  r  ArgMaxr@  r  r0  r  r   r  )r4  rH  dim_or_yr  rF   r   r~  s          r!  r   r   x  s     GOttK!t44+AudHSUVV ((3>!,,Wc9Edd;cUwdG$$xcg$FG|r#  zaten::maximumc                    t        | ||      S N)r  )r   r  s      r!  r   r          q%%((r#  z	aten::minc                   ||| j                  d|d      S |t        | d||d      S t        j                  |dd      }t        j                  |dd	      }| j                  d||g|
      }| j                  d|||      }||fS )N	ReduceMinr   r  r  r  r  r  rF   r  r  ArgMinr  r  )r4  rH  r  r  rF   r   r~  s          r!  r   r     s    
 GOttK!t44+AudHSUVV ((3>!,,Wc9Edd;cUwdG$$xcg$FG|r#  zaten::minimumc                    t        | ||      S r  )r   r  s      r!  r   r     r  r#  z
aten::amaxc                ,    | j                  d|||      S )Nr  r  r9  r4  rH  rF   r  s       r!  r   r         
 44T#'4BBr#  z
aten::aminc                ,    | j                  d|||      S )Nr  r  r9  r  s       r!  r   r     r  r#  zaten::aminmaxc                    d|i}t        j                  |      st        j                  |dd      }|g|d<    | j                  d|fi | | j                  d|fi |fS )Nr  r  rF   r  r  r  )r   rR  r  r0  )r4  rH  rF   r  reduce_kwargss        r!  r   r     su    
 "7+M##C(((c59#&%h144T3]3TQTTT6*6  r#  z	aten::expc                &    | j                  d|      S )Nr  r9  r  s     r!  rQ   rQ     r  r#  zaten::dropout_zaten::dropoutc                j    t        j                  |d       |s|S | j                  d||d      \  }}|S )NrI   Dropoutr  )ratio_fr  )r   r  r0  )r4  r;  rs  trainr   r!  s         r!  rI   rI     s;    
 ''y944	5!Q47DAqHr#  zaten::alpha_dropout_zaten::feature_alpha_dropout_zaten::feature_dropout_zaten::feature_alpha_dropoutzaten::alpha_dropoutzaten::feature_dropoutc                l     t        j                  ddd      t        j                   fd              }|S )Nrd  r8  rw  c                :    |rt        j                  d|      S |S )Nztraining mode)r   r'  )r4  r;  rs  r  r+  s       r!  feature_dropoutz-_unsupported_dropout.<locals>.feature_dropout  s"     "11$OOr#  r   rD  r   r   )r+  r  s   ` r!  _unsupported_dropoutr    s<    ( VS1  2 r#  z
aten::normc                *   |dk(  rt        d      }n'|dk(  rt        d      }nt        j                  d|       || |||      }|Lt        j                  |dd      }| j                  d	|t        j                  |      j                         
      }|S )NrP  ReduceL1r  ReduceL2z)ONNX export only p-norms with p of 1 or 2rF   r  r  r  ry  rz  )	r!  r   ru  r   r  r0  r   r  r  )r4  rH  rs  rF   r  r  re  r  s           r!  r   r     s     	Av
+	
a
+''7
 	
 q$C1F**5#w?ff;+D+DU+K+U+U+WXMr#  zaten::conv_tbcc           
        t        j                         r| j                  d||||      S | j                  d|g d      }| j                  d|g d      }t	        | |||dg|gdgd      }| j                  d|g d      S )	Nr8   )pad_irZ  )rP  r  r   r[  )r  rP  r   rP  )r  r   rP  )r   rL  rM  r0  r<   )r4  r;  r}  r  r   convs         r!  r8   r8     s     ..0ttJvt3t?? [%	:k6)<aqcC51#qAttKit88r#  zaten::_uniquec                    t        j                         r| j                  d|||d      S t        j                  d|      S )N_uniquer  )sorted_ireturn_inverse_ir  )r   rL  rM  rS  )r4  r;  sortedreturn_inverses       r!  r  r  $  sJ     ..0tt+  
 	
 00EBBr#  zaten::_unique2c                    t        j                         r| j                  d||||d      S t        j                  ddd|       y )N_unique2r  )r  r  return_counts_ir  r  rO  )r   rL  rM  rN  )r4  r;  r  r  return_countss        r!  r  r  4  sN     ..0tt+)  
 	
 ++J2uEr#  zaten::_cast_Bytez2.0z
the futurez8Avoid using this function and create a Cast node insteadc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r4  r;  non_blockings      r!  
_cast_Byter  E  %     44G$?$?$E$E4FFr#  zaten::_cast_Charc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r  s      r!  
_cast_Charr  P  %     44G$?$?$D$D4EEr#  zaten::_cast_Shortc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r  s      r!  _cast_Shortr  [  r  r#  zaten::_cast_Intc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r  s      r!  	_cast_Intr  f  r  r#  zaten::_cast_Longc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r~  r  s      r!  
_cast_Longr  q  r  r#  zaten::_cast_Halfc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  FLOAT16r  s      r!  
_cast_Halfr  |  s%     44G$?$?$G$G4HHr#  zaten::_cast_Floatc                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r  s      r!  _cast_Floatr    r  r#  zaten::_cast_Doublec                Z    | j                  d|t        j                  j                        S r  )r0  r|  r}  r  r  s      r!  _cast_Doubler    s%     44G$?$?$F$F4GGr#  zaten::_cast_Boolc                Z    | j                  d|t        j                  j                        S r  r  r  s      r!  
_cast_Boolr    r  r#  zaten::emptyc                "    t        | |||||      S r  )r  )r4  r
  r  layoutdevice
pin_memorymemory_formats          r!  rN   rN     s     E5&&*==r#  zaten::empty_likec                "    t        | |||||      S r  )r  )r4  r;  r  r  r  r  r  s          r!  rM   rM     s     avvzBBr#  zaten::new_emptyc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rR  rN   r4  rH  r
  r  r  r  r  rh  s           r!  r   r     sA    
 !55d;J&:+AE5&&*==r#  zaten::scalar_tensorc                    t        j                  |dd      }|t        j                  j                  }| j                  d|t        j                  |      j                               }|S )Nr  r  ry  rz  )r   r  r   r  r  r0  r  )r4  scalarr  optionss       r!  r   r     s[     &&uc7;E}))//TT&&{'@'@'G'Q'Q'STTFMr#  zaten::tensorc                   t        j                  |dd      }t        j                  |      r|5t        j                  j                  t        j                  |      d         }t               }t        j                  |      D ]  }| j                  dt        j                  dg            }t        j                  | ||      }| j                  d|t        j                  |      j                               }|j                  |         | j                  d	g|d
diS |t        j                  j                  |      }t        j                  |      r?t        j                  |      st        j                   |      r| j                  d|dd      }| j                  d|t        j                  |      j                               S )Nr  r  r   rh  rP  ri  ry  rz  r?  r@  ConcatFromSequence)r@  
new_axis_i)r   r  rk  r   r  r  r  rB  r0  rk  rj  rF  r  r)  _is_listrS  _is_scalar_list)r4  datar  r  requires_gradrT  r   shape_references           r!  r   r     s   
 &&uc7;E&&t,=--88,,T215E V
 --d3 	!Add:u7G7G7LdMO//1oFAVQ[%>%>u%E%O%O%QRAa 		!
 qttH4z4!44=--88>E##D)++D1..t444,d14KD44;#<#<U#C#M#M#O4PPr#  zaten::as_tensorc                    t        | |||      S r  )r   )r4  r  r  r  s       r!  r"   r"     s     !T5&))r#  zaten::zerosc           	        |t         j                  j                  }nt        j                  |      }t        j                  |d      }t        |t              rQt        |      dk(  rC| j                  dt        j                  g       j                  t        j                              }| j                  d|t        j                  dg|j                                     S )Nr  r   rh  ri  ConstantOfShaper  r   r  r  r   ri  rA  rB  rb  r0  rk  r   r   r  r  r4  r
  r  r  r  r  r  sizes_s           r!  r  r    s    
 }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r#  zaten::zeros_likec           	     \   | j                  d|      }t        j                  |      r9t        j                  j                  |t        j                  j                        }nt        j                  |      }| j                  d|t        j                  dg|j                                     S )Nr8  r  r   r  ri  
r0  r   rR  r   r  r  r  rk  r   r  	r4  r;  r  r  r  r  r  rC  r  s	            r!  r  r         DD% E&!//::;,,22
 "//644aS(9(9(;<   r#  zaten::new_zerosc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rR  r  r  s           r!  r   r   +  sA    
 !55d;J&:+AE5&&*==r#  z
aten::zeroc                F    t        j                  |      }t        | ||      S r  )r   r  r  )r4  rH  rh  s      r!  r  r  7  s#     !55d;Jaz**r#  z
aten::onesc           	        |t         j                  j                  }nt        j                  |      }t        j                  |d      }t        |t              rQt        |      dk(  rC| j                  dt        j                  g       j                  t        j                              }| j                  d|t        j                  dg|j                                     S )Nr  r   rh  ri  r  rP  r  r  r  s           r!  r   r   >  s     }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r#  zaten::ones_likec           	     \   | j                  d|      }t        j                  |      r9t        j                  j                  |t        j                  j                        }nt        j                  |      }| j                  d|t        j                  dg|j                                     S )Nr8  r  rP  r  ri  r  r  s	            r!  r   r   P  r  r#  zaten::new_onesc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rR  r   r  s           r!  r   r   j  sA    
 !55d;J&:+A5%<<r#  z
aten::fullc                   t        j                  |d      }t        j                  |      r_|t        j                  j
                  n|}t        | ||||      }t        | ||| j                  dt        j                  d                  S t        j                  |dd      }|t        j                  j
                  }	nt        j                  |      }	t        j                  |d      }
t        |
t              rQt        |
      dk(  rC| j                  dt        j                  g       j                  t        j                               }| j                  d	||j#                  d      j                  |	j%                                     S )
Nr   rh  rP  ri  r  r  r  r   r  )r   ri  rR  r   r  r  r  r   r0  rk  r   r  rA  rB  rb  r   r  r  r  )r4  r
  rn  r  r  r  r  const_valuetmpr  r  s              r!  r\   r\   u  s<   
 "225#>K  -38=))//eAueVV41c5!$$z5<<?$"KLL**5#w?=%3399K%33E:K 11%>fd#Fq(8DDU\\"-=-@-@-MDNEtt$$Q'**;+<+<+>?  
 	
r#  zaten::full_likec                   t        j                  |d      }t        j                  |dd      }|9t        j                  j                  |t        j                  j                        }nt        j                  |      }t        j                  |      rct        | ||||      }	| j                  d||j                               }t        | |	|| j                  dt        j                  d                  S | j                  d	|      }
| j                  d
|
t        j                  |g|j                                     S )Nre  r  r  ry  rz  rh  rP  ri  r8  r  r  )r   ri  r  r   r  r  r  rR  r  r0  r  r   rk  r   r  )r4  r;  
fill_valuer  r  r  r  r  r  r  rC  s              r!  r[   r[     s    !11*cBJ&&uc7;E}!//::;,,22
 "//6  ,E5&&9TT&*;3H3H3JTK
1c:qttJQt'PQQWe$ttLL*[5F5F5HI  
 	
r#  zaten::new_fullc           	         t        j                  |      }t        j                  |      r||}t        | ||||||      S r  )r   r  rR  r\   )	r4  rH  r   r  r  r  r  r  rh  s	            r!  r   r     sC     !55d;J&:+A4UFFJGGr#  	aten::eyec           	        t        |      dk(  rV|\  }}}}}t        j                  | |dg      }| j                  d||d      }t	        | ||||      }	| j                  d|	      S t        |      dk(  rk|\  }}
}}}}| j                  dt        j                  | |dg      t        j                  | |
dg      d      }t	        | ||||      }	| j                  d|	      S t        j
                  ddt        |       d	      S )
Nrq  r   r?  r  EyeLiker  r  r$  r%  )rb  r   r  r0  r  r'  )r4  r  r5  r  r  r  r  r  rC  r   ms              r!  rT   rT     s    4yA~/3,5&&*"44QA3?Xx!<q%7ttIv&&
4yA~26/1eVVZ--aQC8--aQC8	  
 q%7ttIv&&))+s4yk7TUUr#  aten::slicec                   t        |      dk(  rL|\  }}}}t        j                  |d      }|dk7  rt        j                  d|      |j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  }	|j                         j                         dk(  }
|s|	r%|s|
r!|j                         j                         dk7  rt        j                  t        j                  j                  k(  rt        j                  d|      t        j                   | |dg      }t        j                   | |dg      }t        j                   | |dg      }| j#                  d	||||      S |rdnt        j                  |d      }|rt$        j&                  nt        j                  |d      }t        j                  |d      }t        j(                  | ||g|g|g
      S t        |      dk(  r|\  }}}d}|j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  xr( t        |j                         t        j                        }|rdnt        j                  |d      }|rt$        j&                  nt        j                  |d      }t        j(                  | ||g|g|g
      S t        j*                  ddt        |       d      S )Nr  r  rP  z"step!=1 is currently not supportedr/  r;  zUnsupported: ONNX export of Slice with dynamic inputs. DynamicSlice is a deprecated experimental op. Please use statically allocated variables or export to a higher opset version.r   DynamicSlicer  r  r  r$  r%  )rb  r   rH  r   ru  r  r=  rA  rM  r
   NoneTyper   operator_export_typer|  OperatorExportTypesONNXr  r0  r   r  r  r'  )r4  rH  r  rF   r^  r_  rB  is_start_noneis_end_noneis_start_onnx_constis_end_onnx_conststart_unsqueezedend_unsqueezeddim_unsqueezeds                 r!  r   r     s1    4yA~ $UC))$419++,PRVWW

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 $jjl//15EEHHJOO-1AA*= +<xxz $44++w/J/J/O/OO//E 	  $3#D#DQPQs#S !0!B!B1cA3!O!0!B!B1cA3!Ott"$""  'AO,F,Fuc,RE  $$$//S9 
 ",,S#6C"004seUG3%  
TasD

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 #(B(B5#(N     ++C5 	
 ,,t3%se
 	
 ))-5T:9VWWr#  zaten::hardtanhc                $    t        | d|||d      S )Nr  r  r  r  )r4  rH  min_valmax_vals       r!  rh   rh   %  s    
 (	64wgB r#  zaten::hardswishc                @    t        | |      }| j                  d||      S r  )rf   r0  )r4  rH  hss      r!  rg   rg   /  s#    
 
Q	B44tR  r#  zaten::hardsigmoidc                *    | j                  d|d      S )NHardSigmoidgUUUUUU?r  r9  r  s     r!  rf   rf   8  s     44tU433r#  zaten::tanhshrinkc                <    | j                  d|t        | |            S )NrZ  )r0  r   r  s     r!  r   r   C  s     44tT!T]++r#  zaten::hardshrinkc                   t         j                  j                  |t         j                  j                        }| j	                  dt        j                  ||j                                     }t        | t        | ||      t        | |t        | |                  }| j	                  d||| j	                  dt        j                  d|j                                           S Nrh  r  ri  r  r   )r   r  r  r  r0  rk  r   r  r   rc   r   r   )r4  rH  lambdr  lambd_opre  s         r!  re   re   J  s     ++66k''--K ttU+*;*;*=>  H aAtX.1dC8<L0MND44	LL+*;*;*=> 	 	
	 r#  zaten::softshrinkc                   t         j                  j                  |t         j                  j                        }| j	                  dt        j                  ||j                                     }t        | ||      }| j	                  d|t        | ||      | j	                  dt        j                  d|j                                           }t        | |t        | |            }| j	                  d|t        | ||      | j	                  dt        j                  d|j                                           }t        | ||      S r  )r   r  r  r  r0  rk  r   r  rc   r   r   r   r   )	r4  rH  r  r  r  gt_condgt_outlt_condlt_outs	            r!  r   r   a  s(    ++66k''--K ttU+*;*;*=>  H D(#GTTAtX	LL+*;*;*=> 	 	
	F D#a*+GTTAtX	LL+*;*;*=> 	 	
	F q&&!!r#  zaten::aliasc                    |S r  r  r  s     r!  r   r     r  r#  zaten::unsqueezec                0   |dk  ryt        j                  |      }|Kt        j                  dt	        |      z   dz   dz   dz   t	        ||z   dz         z   dz   dz          ||z   dz   }nt        j
                  d	d
|      S t        j                  | ||g      S )Nr   z)ONNX export unsqueeze with negative axis r  r  r  rP  r  r  r
  r  r  )r   r  r{  r|  r  r'  r  r  s       r!  r
  r
    s    
 Qw//5MM;c(AB == *	*
 cDj1n%& ;; XX	 *q.C"11Dd  ,,QcUCCr#  z
aten::sortc                    |t        j                  dd|       t        j                  |      }	 ||   }|t        j                  dd|      S | j	                  d|||d      S # t        $ r d }Y <w xY w)NSortz'Out parameter is not supported for sortr  TopKr  k_ir@  r  )r   r'  r  rI  r0  )r4  rH  rF   	decendingr  
self_sizesr  s          r!  r   r     s    
 &&=t	
 !2248Jc? --f6QSWXX44(34BB   s   A$ $A21A2zaten::numelc                N    | j                  d|      }| j                  d|d      S )Nr8  r3  r   r  r9  rG  s      r!  r   r     s)     DD$E44e422r#  z
aten::topkc                    |t        j                  dd|       |st        j                  dd|       | j                  d|||d      S )Nr$  z'Out parameter is not supported for topkzAscending TopK is not supportedr  r%  )r   r'  r0  )r4  rH  rL  rF   largestr  r  s          r!  r  r    sQ    
 &&=t	
 &&v/PRVW44!C4;;r#  zprim::convert_element_typec                    t        j                  |d   dd      }| j                  d|t        j                  |      j                               S )Nr   r  r  ry  rz  )r   r  r0  r   r  r  )r4  rH  r  r  s       r!  r?   r?     sE     &&tAwW=E44;#<#<U#C#M#M#O4PPr#  zaten::toc                z   t         j                  d        } ||      r|S t        |      dk(  r`|d   }t        j                  |d         r|d   j                         j                         dk(  rwt        j                  |d   j                         d      }t        |t        j                        r6t        |j                        dk(  r|j                         }t        |      }n|}t        j                  |      st        |t        j                        rDt        j                  j!                  |d         }| j#                  d||j%                               S | j#                  d|t        j                  |      j%                               S t        |      dk(  rOt        j&                  |d	   d
d      }| j#                  d|t        j                  |      j%                               S t        |      dk(  rOt        j&                  |d   d
d      }| j#                  d|t        j                  |      j%                               S t        |      dk(  rOt        j&                  |d   d
d      }| j#                  d|t        j                  |      j%                               S t        j(                  d|      S )Nc                   t        |       dk(  r| d   j                         j                         dk(  xsk | d   j                         j	                  t
        j                  j                               xs+ t        | d   j                         t
        j                        S t        |       dk(  rt        j                  | d   dd      }|d u S t        |       dv rt        j                  | d   dd      }|d u S y	)
Nr  r   prim::devicerq  rP  r  r  )r     F)rb  r  r=  rM  isSubtypeOfr
   ListTypeofIntsrA  r  r   r  )r  r  s     r!  is_aten_to_device_onlyz"to.<locals>.is_aten_to_device_only  s    t9> Q##%7 @7<<>--bkk.@.@.BC@d1gllnb.>.>?
 Y!^ $..tAwWEED= Y&  $..tAwWEED= r#  r  r   r;  rn  ry  rz  rq  rP  r  r  r  r0  zUnknown aten::to signature)r   r   rb  r   rR  r  r=  r  rA  rk  rq  rC  rs   r  r   r  r  r0  r  r  rS  )r4  rH  r  r4  r  tvals         r!  r   r     s@     , d#
4yA~ Q%%d1g.Q##%)99",,T!W\\^WED$-tzz?a'99;DIE E$$U+z%/N--88aAE44__&    44;+D+DU+K+U+U+W4XX	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT,,-I4PPr#  zaten::repeatc                    t         j                  j                  }t        | ||      }| j	                  d||      }| j	                  d||      S )Nrg  Tile)r   r  r~  r   r0  )r4  rH  repeatsr  shape_s        r!  r   r   %  sH     %%++Eq'5)F44$'D44g&&r#  zaten::repeat_interleavec                   t        j                  |      }t        j                  |      }t        j                  |      }|t        j                  d|      |t        j                  d|      |t        j                  d|      t        j
                  |      rbt        j                  | || j                  dt        j                  dg                  }t        j                  dt        j                        }nt        j                  |      }|dk  r|t        |      z  }|j                         }t        |      D ]  \  }	}
|
	d	\  ||	<   ||	<    |dk(  s|d
k(  rA|d   d
k(  r9||   dk(  rt        j                  dddd|      S t        j                   | |||      S |d
k(  rW||   dk(  rt        j                  dddd|      S |d   t        j                  dddd|      S |d   ||   k(  sJ d       |d   }nt        j                  d|      t#               }t        j$                  | ||d      }t        j$                  | |||      }d\  ||<   ||<   t        |      D ]  \  }	}t'        | ||	   |d
z         }| j                  dt        j(                  |d |d
z                || j                  dt        j(                  ||d
z   d              g} | j                  dg|ddi}t+        | ||d       }t        j                  | || j                  dt        j(                  |            d      }|j-                  |         | j                  dg|d|iS )NzGUnsupported: ONNX export of repeat_interleave for unknown repeats rank.zGUnsupported: ONNX export of repeat_interleave for unknown repeats size.zEUnsupported: ONNX export of repeat_interleave for unknown input size.rh  rf  ri  r   r  )r   rf  rP  r   r     z3Unsupported along dimension with unknown input sizez*Unsupported for cases with dynamic repeatsz2repeats must have the same size as input along dimz%repeats must be 0-dim or 1-dim tensor)rf  rP  r?  r@  	allowzero)r   r  r  r   ru  rR  rF  r0  rk  r   r  rV  rb  r/  r  rT  -_repeat_interleave_single_value_repeat_helperrB  _repeat_interleave_split_helperr
  rj  rS   r)  )r4  rH  r8  rF   rJ  repeats_dimrepeats_sizesinput_sizesinput_sizes_temprZ  r4  repsfinal_splitsr_splitsi_splitsr_spliti_splitr_concats                     r!  r   r   .  s   
 "227;K#55g>M!33D9K''U
 	
 ''U
 	
 ''S
 	
 $..tQTT*ellB4.@TA
 ll1EKK0//4 Qws;"'')$[1 <Z6;3K.s3<
 aK1,q1AQ1Fsq "CC#E  LLtWc
 	

 
	sq "CC#E  #"CC#<  !C 00	@?	@0Q''(OQUVV6L>>q'4QRSH>>q$cRH.3+K&s+!(+ %WAx}cAg6DDU%5%56Fyq6Q%RDSDDU%5%56FsQwy6Q%RDS

 144686A6GXt4!11DDU%5%5k%BDC	
 	G$%  1444<444r#  zaten::pixel_shufflec                   t        j                  |      }t        |      dk7  rt        j                  dd|      S t	        d |dd  D              rt        j
                  | t        j                  | |ddg      | j                  dt        j                  d	d
||d	d	g            d	      }| j                  d|g d      }t        j
                  | || j                  dt        j                  g d            d	      }t        j
                  | || j                  dt        j                  g d            d	      }t        j                  | |ddg      S |d   |z  |z  }t        j
                  | || j                  dt        j                  d
||||d   |d   g            d	      }| j                  d|g d      }t        j
                  | || j                  dt        j                  d
||d   |z  |d   |z  g            d	      S )Nr  r   only support 4d inputc              3  $   K   | ]  }|d u  
 y wr  r  r  s     r!  r  z pixel_shuffle.<locals>.<genexpr>       
'19
'r  rP  r  r  rh  r   rf  ri  r<  rZ  )r   rP  r  r  rq  r  r[  )r   r   rf  rP  r   r   )r   r   r   r   rf  rP  rq  r   r  rb  r'  r  rF  r  r0  rk  r   r  )	r4  rH  upscale_factorru  
after_viewafter_transpose	reshape_h	reshape_woutput_channels	            r!  r   r     s+    ,,T2D
4yA~--4d
 	
 
'd12h
''$44--a1v>DDa^^QPQ%RS   

 $${J?Q$R#33DDU\\2E%FDG	
	 $33DDU\\2E%FDG	
	 ..q)aVDDaN2nD$44DD&&&QQ	   !

$ $${J?Q$R..DD&Q.0Q.0	  
 
 	
r#  zaten::pixel_unshufflec                4   t        j                  |      }t        |      dk7  rt        j                  dd|      S t	        d |dd  D              r	t        j
                  | t        j                  | |dg      | j                  dt        j                  ddd	|dg      
      d      }t        j
                  | || j                  dt        j                  ddddd	|g      
      d      }| j                  d|g d      }t        j
                  | || j                  dt        j                  g d      
      d      }t        j                  | |ddg      S |d   |z  |z  }t        j
                  | || j                  dt        j                  d	|d   |d   |z  ||d   |z  |g      
      d      }	| j                  d|	g d      }t        j
                  | || j                  dt        j                  d	||d   |z  |d   |z  g      
      d      S )Nr  r   rL  c              3  $   K   | ]  }|d u  
 y wr  r  r  s     r!  r  z"pixel_unshuffle.<locals>.<genexpr>  rN  r  rP  r  rh  r   rf  ri  r<  rZ  )r   rP  r  rq  r  r  r[  )r   rf  rP  rP  r   r   r  rO  )
r4  rH  downscale_factorru  rS  rT  rR  final_reshaperU  rQ  s
             r!  r   r     s?    ,,T2D
4yA~--4d
 	
 
'd12h
''#33--as;DDU\\1a=Mq2Q%RDS	
	 $33DDU\\1aArCS2T%UDV	
	 $${I>P$Q'77DDU\\2E%FDG	
 ..q-!QHHa#336FF$44DDQQ#33(Q#33(	   !

$ $${J?Q$R..DD&Q#33Q#33	  
 
 	
r#  c                z	   ,-./ t        j                  dz   dz   dz   dz   dz          g d}t        t        |D cg c]  }|j	                          c}|            }|rdnd}d	k(  r.t        |      |z  d
|	z   z  k7  rt        j                  d	d|      S t        |      |z  d
|	z   z  k(  sJ t        dt        |      |      D cg c]
  }||||z     c}-|
r j                  d|g d      }|r|rt        j                  dd|      S j                  d      r|dd  j	                            }d|d
   }t        j                  |d
      ,,t        j                  dd|      S |	 }|}g }dk(  sdk(  r|}nd	k(  r|\  }}g }|t               n|}dk(  rg d.n	d	k(  rg d.t        j                  d        /t        j                   ,-./fd       }t        j                   ,-./fd       }t        j                   fd       }t              D ]!  }|r0|dk(  r ||      \  }}}n ||      \  }}t               }||d
z   f} n|dk(  r7 |d|z        \  }!}"}# |d|z  d
z         \  }$}%}& j                  d|#|&d      }n* |d|z        \  }!}" |d|z  d
z         \  }$}%t               } j                  d|!|$d      } j                  d|"|%d      }d|z  d|z  dz   f} |||||g}'|'j                   |g|         d	k(  r|'j                   |g|         |ri nddi}(dk(  r(|	r|g})ng})  j                  dg|'d,|)d|(\  }}*nEdk(  r  j                  dg|'d,d
d |(\  }}*n"d	k(  r  j                  d	g|'d!,d"|(\  }}*}+|	rV j                  d|g d#      }t        j                    | j                  d$t#        j$                  g d%      &      d'      }nt        j&                   |d
g      }|j                  *       d	k(  sj                  +       $ |
r j                  d|g d      }d
k(  r*n  j                  dg|d(di}dk(  sdk(  r||fS d	k(  r"d
k(  r+n  j                  dgd(di}|||fS y c c}w c c}w ))NzVExporting a model to ONNX with a batch_size other than 1, with a variable length with z can cause an error z9when running the ONNX model with a different batch size. z4Make sure to save the model with a batch size of 1, z=or define the initial states (h0/c0) as inputs of the model. )r  r  r   Affiner  ThresholdedRelu
ScaledTanhr  rJ  Softsignr  r  r  LSTMrP  zLSTMs with projectionsr   rZ  rP  r   r  r[  zRNN/GRU/LSTMzdropout in training modeRNNzunknown hidden sizeGRU))rP  r  r   rP  )r  r  )rc  )r  r  )rP  r  c                    |D cg c](  \  }}t        j                  | |dg||z  g||z  g      * }}} | j                  dg|ddiS c c}}w )Nr   r  r?  r@  )r   r  r0  )r4  wr5  	intervalsxyslicess          r!  reform_weightsz$_generic_rnn.<locals>.reform_weights  sk     "
1 ))!QaS!a%PQTUPUwW
 
 qttH0v0a00	
s   -Ac                    |    }	dk(  r|\  }}n	dk(  s	dk(  rfd|D        \  }}t        fdfD              S )Nra  rb  r_  c              3  4   K   | ]  } |        y wr  r  r  re  r4  hidden_sizereform_permutationrj  s     r!  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  s"      $JKq![2DE$   c              3  N   K   | ]  }t        j                  |d g        ywr  r   r  r  rg  r4  s     r!  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  s'      
=>O--aQC8
   "%)r  )
layer_indexweights	weight_ih	weight_hhr4  rn  layer_weightsro  rj  variants
       r!  transform_weights_no_biasz/_generic_rnn.<locals>.transform_weights_no_bias  sc    ,e#* IyF!2$OV$ Iy  
CLiBX
 
 	
r#  c                    	|    }dk(  r|\  }}}}ndk(  sdk(  r
fd|D        \  }}}}j                  dd      }t        fd|fD              S )	Nra  rb  r_  c              3  4   K   | ]  } |        y wr  r  rm  s     r!  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>  s"      6JKq![2DE6rp  r?  r   r  c              3  N   K   | ]  }t        j                  |d g        ywr  rr  rs  s     r!  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>  s*      
 --aQC8
rt  )r0  r  )ru  rv  rw  rx  bias_ihbias_hhbias_concatr4  rn  ry  ro  rj  rz  s          r!  transform_weightsz'_generic_rnn.<locals>.transform_weights  s    ,e5<2Iy'7F!26OV62Iy'7 dd8Wgad@ 
K8
 
 	
r#  c                L    dk(  r| S t        j                  | dg|g|g      S )NrP  r   r  r   r  )rg  r^  r_  r4  
num_layerss      r!  retrieve_statez$_generic_rnn.<locals>.retrieve_state  s<     Q 	
 !..1A3wcU	
r#  r?  r  direction_sbidirectional)r  hidden_size_iactivations_s)r  r  linear_before_reset_ir  )r  r  )r   r  rP  r  rh  )r   r   rf  ri  r<  r@  )r{  r|  dictr  lowerrb  r   r'  ra  r0  
startswithr  r  r   r   r)  rF  rk  rj  r  )0r4  rz  r;  initial_statesall_weights
has_biasesr  rI   r  r  batch_firstbatch_sizesonnxActivationsact_funvariantToOnnxActivationMapweights_per_layerr  nonlinearityw_hhunidirectionalprev_outputh_outsh0c0c_outssequence_lensr{  r  r  rw  rx  r  state_indicesweight_ih_fweight_hh_fbias_fweight_ih_bweight_hh_bbias_br  extra_kwargs
activationh_outc_outrn  ry  ro  rj  s0   ``    `                                     @@@@r!  _generic_rnnr  &  s    MM	)
	 !	! F		F
 A	A J	JO "&O<W]]_<oN" (Q&S->O1O	M2  --f6NPUVV{z,==]ARSSSS q#k*,=> 	A--.M [%	:5--6
 	
 % 1'!"+2C2C2EFq>D!66tQ?K--15
 	
 '&NKF%7e+	F	B!,!4F1I+M% 6	F	 61 1 

 

 

 
 
 
 
 
 : O! A%4Ea4H1	9k'@'C$	9$Qiq1uHM A%3DQU3K0[&3DQUQY3O0[&dd8VVAdF+DQU+K([+DQUQY+O([$QiX{KJIX{KJIE1q519,My)[-PnR8-89fMM.<m<=+r-1Qe*L9
*^
!%"" )(" "K !%"" )&'" "K (,)))*+)IU)%K  $${K$MK)99Z)9)9*)EF	K *99![1#NKefMM% _O!` dd;IdF AoU4144+L6+L!+LF%7e+F""	F	$/tqttH/Pv/Pa/PFF** 
u =s   R3R8c
                    t        j                  |      t        j                  |      }}
t        | d||
|||||||	      S )Nr_  r   r  r  )r4  r;  hidden_vweight_vr  r  rI   r  r  r  hiddenr}  s               r!  
_lstm_fullr    sZ     %11##H- F 	 r#  c
                    t        j                  |      t        j                  |      }}
t        | d||
||||||	|      S )Nr_  r  r  )r4  r;  r  r  r  r  r  rI   r  r  r  r}  s               r!  _lstm_packedr  ,  sZ     %11##H- F 	 r#  z
aten::lstmc                b    t        j                  |d         rt        | g| S t        | g| S Nr  )r   rS  r  r  )r4  r  s     r!  r   r   L  s6     &&tAw/A%%%!#d##r#  zaten::lstm_cellc                   t        j                  | |dg      }t        j                  |      }|D cg c]  }t        j                  | |dg       }}t        j                  |      r||||fn||f}	t        j                  |      rdnd}
t	        | d|||	|
ddddd      \  }}}t        j
                  | |dg      t        j
                  | |dg      fS c c}w )Nr   TFr_  rP  )r  rI   r  r  r  )r   r  r  
_is_tensorr  r  )r4  rH  r  w_ihr  b_ihb_hhr;  rg  r}  r  r!  r  r  s                 r!  r   r   U  s     --as;E))&1FDJKqo//1qc:KFK$3$>$>t$DtT4 4QU,  )33D9uJ$	Avv **	6A3&&q&1#67 7% Ls   Cz	aten::grurb  gruzaten::rnn_tanhRNN_TANHrnn_tanhzaten::rnn_reluRNN_RELUrnn_reluc                     t        j                  ddddddddd	      t        j                   fd              t        j                  ddddddddd	       fd       fd}|S )Nrd  r  re  c
                X    t        j                  |      }
t        | |||
||||||	      S r  r  )r4  r;  r  r  r  r  rI   r  r  r  r}  r=  s              r!  	_rnn_fullz"_one_hidden_rnn.<locals>._rnn_fully  sC     !--h7
 	
r#  c
                Z    t        j                  |      }
t        | |||
|||||	|      S )Nr  r  )r4  r;  r  r  r  r  r  rI   r  r  r}  r=  s              r!  _rnn_packedz$_one_hidden_rnn.<locals>._rnn_packed  sC     !--h7#
 	
r#  c                X    t        j                  |d         r	 | g| S  | g| S r  )r   rS  )r4  r  r  r  s     r!  r  z!_one_hidden_rnn.<locals>.symbolic  s5    **473q(4((Q&&&r#  r  )r=  r  r  r  s   ` @@r!  _one_hidden_rnnr  q  s}     S#sCc3L
  M
6 S#sCc3L
 M
6' Or#  zaten::_dim_arangec           
        | j                  d|      }| j                  d|| j                  dt        j                  |            d      }t        j                         r| j                  d|      S t        | |dd d d       S )	Nr8  ry  rh  ri  r   r  z_caffe2::Ranger  )r0  rk  r   r   rL  r   )r4  likerF   
like_shapestops        r!  _dim_aranger    s~     gt$J44*add:u||C7HdIRS  D ..0tt$d++ aq$d33r#  zaten::detachc                    |S r  r  r:  s     r!  rE   rE     rx  r#  zaten::contiguousc                <    |dkD  rt        j                  d|      |S )Nr  z-onnx memory_format support is not implemented)r   ru  )r4  r;  r  s      r!  r7   r7     s+     q'';U
 	
 Lr#  zaten::_pack_padded_sequencec                   |r| j                  d|g d      }|j                         j                  t        j                  j
                  j                               st        j                  d|      t        j                  j                  |t        j                  j                        t        j                  j                  k7  r,| j                  d|t        j                  j                         }| j                  d||d	      S )
NrZ  r`  r[  z*'lengths' must be a Tensor for ONNX exportry  rz  zprim::PackPaddedr  r  )r0  rM  r1  rk  r
   
TensorTypegetr   ru  r   r  r  r  r  r|  r}  r  )r4  r;  lengthsr  s       r!  _pack_padded_sequencer    s     [%	:<<>%%ehh&9&9&=&=&?@''8%
 	
 	!!,,[..88	
 $$((	)
 $$vwW-H-H-N-N$O44"E7A4>>r#  zaten::_pad_packed_sequencec                j    | j                  d||d      \  }}|r| j                  d|g d      }||fS )Nzprim::PadPackedr  r  rZ  r`  r[  r9  )r4  r  r  r  padding_valuetotal_lengthr  s          r!  _pad_packed_sequencer    s@     DD*D+qDIMD'ttKit8=r#  zaten::randintc                6   t        j                  |dd      }t        j                  |dd      }t        j                  |dd      }|t        j                  j                  }nt        j                  |      }|t        j
                  d|      |t        j
                  d|      t        j                  |d      }	t        j                  |	      rN| j                  d|t        j                  dgt        j                  	      
      }
| j                  d|
||      }n| j                  d|	||      }t        j                  j                  }| j                  d||j                               }||k7  r"| j                  d||j                               }|S )Nr  r  rF  highr   r  r  r   r  ri  RandomUniformLikelow_fhigh_fRandomUniform)shape_ir  r  ry  rz  )r   r  r   r  r~  rS  ri  rR  r0  rk  r   r  r  )r4  rF  r  shapesr  r  low_ihigh_ir  rC  shape_constr   	int_dtyper   s                 r!  r   r   
  s    &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@,,VT:E  'ddLL!EKK8  

 	  
 	  
 ))//Idd65y':':'<d=GK$$vw[-B-B-D$ENr#  zaten::randint_likec                D   t        j                  |dd      }t        j                  |dd      }t        j                  |dd      }|t        j                  j                  }nt        j                  |      }|t        j
                  d|      |t        j
                  d|      | j                  d|||      }	t        j                  j                  }
| j                  d|	|
j                         	      }|
|k7  r"| j                  d||j                         	      }|S )
Nr  r  rF  r  r   r  r  ry  rz  )r   r  r   r  r~  rS  r0  r  )r4  rH  rF  r  r  r  r  r  r  r   r  r   s               r!  r   r   6  s    &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@DD	  E ))//Idd65y':':'<d=GK$$vw[-B-B-D$ENr#  zaten::randnc                   t        j                  |dd      }|t        j                  j                  }nt        j                  |      }t        j
                  |d      }t        j                  |      rZ| j                  d|t        j                  dgt        j                              }| j                  d||j                         	      S | j                  d
||j                               S )Nr  r  r  r  r   r  ri  RandomNormalLikedtype_iRandomNormalr  r  r   r  r   r  r  ri  rR  r0  rk  r   r  r  r4  r  r  r  r  rC  r  s          r!  r   r   T  s     &&uc7;E}!//55!//6,,VT:E  'ddLL!EKK8  

 tt))+  
 	

 44%%'   r#  z
aten::randc                   t        j                  |dd      }|t        j                  j                  }nt        j                  |      }t        j
                  |d      }t        j                  |      rZ| j                  d|t        j                  dgt        j                              }| j                  d||j                         	      S | j                  d
||j                               S )Nr  r  r  r  r   r  ri  r  r  r  r  r  r  s          r!  r   r   o  s     &&uc7;E}!//55!//6,,VT:E  'ddLL!EKK8  

 tt))+  
 	

 44%%'   r#  zaten::randn_likec                   t        j                  |dd      }|9t        j                  j	                  |t        j                  j
                        }nt        j                  |      }| j                  d||j                               S )Nr  r  r  r  r   r  r   r  r  r  r0  r  )r4  rH  r  r  r  r  r  r  s           r!  r   r     su     &&uc7;E}!//::+++11
 "//644"D+2G2G2I4JJr#  zaten::rand_likec                   t        j                  |dd      }|8t        j                  j	                  |t        j                  j
                        }| j                  d|t        j                  |      j                               S )Nr  r  r  r  r  )r4  rH  r  r  r  r  r  s          r!  r   r     sw     &&uc7;E}))44+++11
 44T;+D+DU+K+U+U+W   r#  zaten::rreluc                    |s||z   dz  }| j                  d||      S | j                  d|||      }| j                  d||      S )Nr  r  r  r  )r  r  r  r9  )r4  r;  r  upperr  rU  r  rs  s           r!  r   r     sT     #%ttKt66	 %UCA44""r#  zaten::bernoullic                z   |,t        j                  |      st        j                  dd|       |,t        j                  |      st        j                  dd|       t        j                  j                  |t        j                  j                        }|t        j                  j                  k(  rt        j                  dd|      S | j                  d|dd|j                               }|t        j                  |      s|n|}| j                  d	||      }| j                  d
||j                               S )N	Bernoulliz,out parameter is not supported for bernoulliz(generator is not supported for bernoulliinput dtype not accessibler  r  r  )r  r  r  r  ry  rz  )	r   rR  r'  r   r  r  r  r0  r  )	r4  r;  rs  rU  r  r  randsprobr9  s	            r!  r(   r(     s$    77<&&G	
 _%=%=i%H&&CU	
 %%00{((22E ))333--5u
 	
 DD!  E o&>&>q&A1uDTT&%&F44U__%6477r#  zaten::log_sigmoidc                J    | j                  d|      }| j                  d|      S )Nr   r|  r9  )r4  r;  rs  s      r!  r   r     s$     	
YA44q>r#  z	aten::erfc                &    | j                  d|      S )NErfr9  r:  s     r!  rP   rP     s     44ur#  zaten::flattenc                   t        j                  |      }|t        j                  dd|      S |dk(  rt        j                  | |dg      S |dk(  r| j	                  d|      S |dk  r||z   }|dk(  r||dz
  k(  r| j	                  d||      S |dk(  r||dz
  k(  r| j	                  d||dz         S t        j
                  | ||||      S )	NrF   r  r   rP  rY  Flattenr  r  )r   r  r'  rF  r0  _flatten_helper)r4  r;  	start_dimend_dimrF   s        r!  rV   rV     s    
 
*
*5
1C
{--7	
 	
 ax..q%!==
axttJ&&{-A~'S1W,ttIuYt77A~'S1W,ttIuWq[t99**1eYMMr#  zaten::nonzeroc                :    t        | | j                  d|            S )z/Emitted from `torch.nonzero(x, as_tuple=False)`NonZero)r   r0  r:  s     r!  r   r     s    
 QY&''r#  zaten::nonzero_numpyc                4    t        | t        | |      d|      S )NrP  )r  )r  r   )r4  r;  r  s      r!  r   r     s     !WQ&H==r#  zaten::isnanc                *    | j                  d|      }|S )NIsNaNr9  )r4  r;  r9  s      r!  rr   rr     s     TT'5!FMr#  z	aten::anyc                   t        |      dk(  r|d   }d\  }}nY|\  }}}t        j                  |d      }|j                  d      D cg c]  }t	        |       }}t        j                  |d      }| j                  d|t        j                  j                        }t        j                  | |||	      }t        | || j                  d
t        j                  dt        j                                    S c c}w )NrP  r   ra  r   rf  r  ry  rz  r  rh  r  ri  )rb  r   rH  r  r  r0  r|  r}  r~  r  rc   rk  r   long)r4  r  r;  rF   r  rv  	input_sums          r!  _anyr  #  s     4yA~QW #sG((c2"xx|,!s1v,,!,,Wc:DDW%@%@%F%FDGE11	5I aADDU\\!5::5VDWXX -s   	C9z	aten::allc           
         | j                  d|d         }t        |      dk(  r| j                  dt        | |            S | j                  dt        | ||d   |d               S )Nr  r   rP  r  )r0  rb  r  )r4  r  r;  s      r!  _allr  8  s`     DDQ E
4yA~ttE45>** ttE45$q'47;<<r#  zaten::narrowc                B    t        j                  | ||g|g||z   g      S )Nr  r  )r4  r;  rF   r^  lengths        r!  r   r   D  s-     ((	5ueWEFN3C r#  zaten::argmaxc                4    t        j                  | |||d      S )Nr  r   _argmin_argmax_helperr4  r;  rF   r  s       r!  r   r   M       00E3RRr#  zaten::argminc                4    t        j                  | |||d      S )Nr  r  r  s       r!  r    r    Y  r  r#  zaten::scatterc           
        t         j                  j                  |t         j                  j                        }t	        j
                  |      }t	        j                  |      r| j                  d||||      S t         j                  j                  |      }||k7  r"| j                  d||j                               }| j                  d||t        | ||      |      S )NScatterr  ry  rz  )
r   r  r  r  r   rV  rR  r0  r  rR   )r4  rH  rF   rn   srcsrc_typer  s          r!  r   r   e  s     ((33[&&00H 
+
+C
0C  %ttItUCt<< '44??Ex'$$vs)9)C)C)E$FCttItUIae,DStQQr#  zaten::scatter_addc                d   t        j                  |      }|t        j                  dd|      S t        j                  |d      }|r7| j	                  dt        j                  ||j                                     }nt        | ||      }t        j                  | ||||      }t        | ||      S )Nr   r  F)allow_nonstaticrh  r  ri  )r   r  r'  r  r0  rk  r  r  r  _scatter_helperr   )r4  rH  rF   rn   r  r  r
  to_adds           r!  r   r   x  s     "66t<K--7
 	
 --dEJEj%++e;CTCTCV*WXAt[1,,QUCHFq$r#  z
aten::log2c           
         d}| j                  dt        | |      | j                  dt        j                  |                  S )Ng9B.?rx  rh  ri  r  )r4  rH  _ln2s      r!  r   r     s8      D44s1d|QTT*ell4>PT%QRRr#  zaten::is_floating_pointc                    t        j                  |      r'| j                  dt        j                  dg            S | j                  dt        j                  dg            S Nrh  rP  ri  r   )r   r  r0  rk  
BoolTensorr  s     r!  rp   rp     sR     d#ttJ(8(8!(=t>>44
E$4$4aS$94::r#  zaten::__is_c                   t        j                  |      rct        j                  |      r'| j                  dt        j                  dg            S | j                  dt        j                  dg            S t        | ||      S r!  )r   rR  r0  rk  r"  rO   r_  s      r!  __is_r$    so     &##D)44
E,<,<aS,A4BBttJ(8(8!(=t>>aur#  zaten::__isnot_c                    t        | ||      S r  )r$  r_  s      r!  __isnot_r&    s     D%  r#  zaten::one_hotc                   | j                  dt        j                  ddg            }t        j                  j                  |t        j                  j                        t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  hv r,| j                  d|t        j                  j                        }| j                  d|||d	      S )
Nrh  r   rP  ri  ry  rz  OneHotrf  r  )r0  rk  rj  r   r  r  r  r  r  r  r  r|  r}  r~  )r4  rH  num_classesrQ  s       r!  r   r     s     TT*e&6&61v&>T?F  ++[..88 	!!''!!&&!!%%!!''	
 dd6;W5P5P5V5VdW44$VB4??r#  zaten::gatherc           
     F   t        j                  |d      rt        j                  dd|      S t        j                  j                  |      }| j                  dt        j                  ddg            }t        | || j                  dt        j                  |g                  }| j                  d| j                  d	||||
      |j                               }| j                  dt        j                  | ||dz   g      |      }t        j                  | ||gd      S )Nr  r]   zsparse_grad == Truerh  r   rP  ri  ry  r(  r  rz  rQ  r  )r   ri  r'  r   r  r  r0  rk  rj  r   r  r  r  )	r4  rH  rF   rn   sparse_gradr  rQ  depthr   s	            r!  r]   r]     s    ''S9--h8MtTT ++66t<KTT*e&6&61v&>T?FD!$$z53C3CSE3J$KLEDD	XueVC8""$  E
 $$uo774#'KU
SC,,QSEaPPr#  c           
     ,   |#| j                  d|d      }|}t        | |      }n| j                  d|||      }| j                  d||d      }| j                  d|      }| j                  d|| j                  dt        j                  |      	      d
      }| j                  d|d      }| j                  d||      }	| j                  d|	|	      }
|dn|}| j                  d|
||      }|d}|dk7  r| j                  d|t        j
                  j                        }| j                  dt        j                  |t        j                        	      }| j                  d||      }| j                  d|| j                  d||            }||fS )Nr1  r   r  r  rP  r8  ry  rh  ri  r  r3  rZ  rQ  ry  rz  r  rx  )r0  r   rk  r   r|  r}  r  r  )r4  r;  rF   
correctionr  r2  t_meannum_elementsredudced_dimssub_vsqr_subkeepdim_meanr  r  r   s                  r!  	_var_meanr5    s    {ttL%At6QttL%tHlE#!DWe,DDU\\#%6D7	  
 ttL-AtFDDv&Edd5%'G1L
$$|WS\$
JC
QttLw'B'B'H'H  
 dd:u||Jekk'RdSdd5#|,dd5#qttE<=>9r#  z	aten::stdc                F    t        | |g| \  }}| j                  d|      S Nr  r  r0  r4  r;  r  r  r!  s        r!  r   r     s*     a&&FC44r#  z	aten::varc                &    t        | |g| \  }}|S r  )r  r9  s        r!  r  r    s     a&&FCJr#  zaten::var_meanc                \    t        |      dk(  rt        | |d |d   d       S t        | |g| S )NrP  r   )rb  r5  )r4  r;  r  s      r!  r  r    s8     4yA~E4a$77E)D))r#  zaten::std_meanc                J    t        | |g| \  }}| j                  d|      |fS r7  r8  )r4  r;  r  r  r2  s        r!  r   r     s/     E)D)IC44d""r#  zaten::logsumexpc                ,    | j                  d|||      S )NReduceLogSumExpr  r9  r  s       r!  r   r     s     44!54IIr#  aten::arangec                \    t        j                         r  j                  dg| S t        j                  d        }t        j                   fd       }t        |      dk(  st        |      dk(  rt        |      dk(  rd }n ||d         }t        j                   |d   |      \  }}}}t        j                   |dg      } ||      }t        j                   t         t         ||d d             dg      }	 j                  d	|	t        j                  |      j                         
      S t        |      dk(  st        |      dk(  r>t        |      dk(  rd }n ||d         }t        j                   |d   |d   |d   |      \  }}}}t        j                   |dg      }t        j                   |dg      }t        j                   |dg      } | j                  d j                  d||      |            }t        j                   t         t         |d d d             dg      }	 j                  d j                  d|	|      |      }	 j                  d	|	t        j                  |      j                         
      S t        |      dk(  r ||d         }t        j                   |d   |d   |      \  }}}}t        j                   |dg      }t        j                   |dg      } | j                  d||            } j                  dt        j                   t         t         ||g|dd         dg      |      }	 j                  d	|	t        j                  |      j                         
      S t        j                  ddt        |       d      S )Nr   c                2    t        j                  | d      } | S )Nr  )r   ri  r  s    r!  _get_arange_dtypez!arange.<locals>._get_arange_dtype#  s    00<r#  c                    t        j                  |       rJj                  dj                  d|       t        j                  j
                  j                               } | S )Nry  r  rz  )r   r  r0  r   r  r~  r  )range_tensorr4  s    r!  _float_step_convertz#arange.<locals>._float_step_convert(  sU    !!,/44V\* ..44>>@   L
 r#  r  rq  rP  r   )r_  r  ry  rz  r  r0  r  )r^  r_  rB  r  rx  rZ  rN  rQ  r  )r^  r_  r  r?  r$  r%  )r   rL  rM  r   r   rb  _arange_cast_helperr  r  r   r   r0  r   r  r  r'  )
r4  r  rB  rE  r  r_  r^  rB  rD  arange_tensors
   `         r!  r   r     s    ..0qttH$t$$    4yA~Tat9>E &d1g.E"1"E"E47%#
sE4 //3<*3/'77wq$q,tTBCaS
 ttM(A(A%(H(R(R(T  
 	
 
Ta3t9>t9>E &d1g.E"1"E"ET!W$q'Qu#
sE4 00D1#>//3<11!UQC@*144qttE37NPT+UV'77wq$q,dDABQC
 UADDt$DeLttM(A(A%(H(R(R(T  
 	
 
Ta!$q'*"1"E"ET!W$q'#
sE4 //3<11!UQC@*144sE+BC++71d1lEGT!"XGH1# 
 ttM(A(A%(H(R(R(T  
 	
 )).E#d)J:WXXr#  zaten::linspacec                   t        j                  | |d       }t        | t        | ||      t        | || j	                  dt        j                  dt
        j                                          }	t        | t        | ||	      |      S )Nrh  rP  r  ri  )
r   _arange_helperrG   r   r0  rk  r   r  r   r   )
r4  r^  r_  stepsr  r  r  r  rD  rB  s
             r!  r   r   p  ss    
 #11!UDAL	AsEAuadd:u||AU[[/QdRSD
 q#at,e44r#  z
aten::liftc                    |S r  r  r  s     r!  ry   ry   ~  s	     Kr#  zaten::masked_fillc                    | j                  d|t        j                  j                        }t	        j
                  |      }| j                  d|t	        j                  ||      |      S )Nry  rz  r  )r0  r|  r}  r  r   rV  r  r4  rH  maskrn  s       r!  r   r     sW     447#>#>#C#C4DD--e4E44AA%NPTUUr#  zaten::masked_fill_c                    t        | |||      S r  )r   rM  s       r!  r   r     s     q$e,,r#  aten::indexc                    t        j                         r j                  d|d      S t        j                  |      rt        j                  |      }n|g}t
        j                   fd       }|D cg c]
  } ||       }}t        |      dk(  rt        j                   d|d   d      S t        |      D cg c]  \  }}t        j                  |      r| }}}t        |      dk(  rS t        |      dk(  rt         |d   ||d            S t        j                        }|t        j                  d	d
      S t        j                  dt         j"                   d       t        |      }	t%               }
t'        |      D cg c]<  } j)                  d|
 j)                  dt+        j,                  |g            d      > }} j)                  d|t'        |      D cg c]	  }||vs| c}z          j)                  d|	      ||d      }||d      }t'        |	dz
  dd      D ]G  } j)                  d|||      |      } j)                  d||      } j)                  d||||            }I t         d|      t%         |      }|t/        t'        |d   |d   dz               k(  r+ j)                  dt+        j,                  dg            gt'        |      D cg c]  }||vs||    c}z   }  j(                  dg|ddi}t        j0                   |      t/        t'        d|d   dz               dgz   t/        t'        |d   dz   ||	z
  dz               z   } j)                  d|      t'        |d         D cg c]  }||   	 c}|gz   t'        |d   |      D cg c]  }||vr||    c}z   }  j(                  dg|ddi}n5  j(                  d|gt'        |      D cg c]  }||vr||    c}ddi}t        j0                   |      S c c}w c c}}w c c}w c c}w c c}w c c}w c c}w c c}w )Nrn   rq  )r  c                   t        j                  |       st        j                  j	                  | t        j                  j
                        t        j                  j                  k(  st        j                  |       r\j                  dk  rt        j                  d      t        j                  d       t        j                  t        |       dg      } | S )Nr  z?Exporting masked indices are only supported after ONNX opset 9.zExporting aten::index operator with indices of type Byte. Only 1-D indices are supported. In any other case, this will produce an incorrect ONNX graph.rP  )r   rR  r   r  r  r  r  r^  r  r   ru  r{  r|  r  r   )rn   r4  rH  s    r!  try_mask_to_indexz index.<locals>.try_mask_to_index  s    ''.%%00{00:: ((../ ''.ww{//U  MM=
 $33Awq%7H1#NEr#  rP  r   F)apply_reshaperP  zoperator of advanced indexing on tensor of unknown rank. Try turning on shape inference during export: torch.onnx._export(..., onnx_shape_inference=True).z=Exporting aten::index operator of advanced indexing in opset z is achieved by combination of multiple ONNX operators, including Reshape, Transpose, Concat, and Gather. If indices include negative values, the exported graph will produce incorrect results.ry  rh  ri  r  rZ  r[  r  rf  r  rQ  rN  r?  r@  )r   rL  rM  rk  r  r   r   rb  rN  r  rR  rm   r  r'  r{  r|  r   r  r<  ra  r0  rk  rj  rB  rF  )r4  rH  rn   r~  rS  rZ  r  adv_idx_indicesr]  adv_idx_countshape_tensorrF   dim_tensor_listcum_adv_index
multiplier	adv_indexcum_adv_index_shape_tensorfolded_adv_idx_shape_listfolded_adv_idx_shapeadv_idx_permutefinal_shape_listfinal_shapes   ``                    r!  rn   rn     s(    ..0ttGT5tAA&&u-!..u5' * 299# %9G9
7|q--tQ
%
 	
. &g.
!So6N6Ns6SA
 
 1$K!Q&4+W_Q5G-H  #33D9D|&55!J   MMO445ii  0M+At4L !;   DDU-=-=se-DDE	  O  44&#DkFQo-E1FG  D 44	44>D $OB$78M()<=J=1,b"5 DD0B(CZP	 !UM9 ETT:q7I'J
  4M:D)9!])K& $oa(/"*=*AB# 
 DDU-=-=rd-CDD- 16d+,q?WOA&-)
 (,qtt(8(AB($ '66q$@TU q/!"4q"89:c5!3a!79MPQ9QRST  
 ttKotF 27q7I1JKA_Q'K123 "'q'94!@O3 (* ! #add8I.>IqI"add.	
 "'tO3 (*	 	 #221dKHHO :0
> G6$ LsC   7P;Q Q AQ2	Q<Q8	QQ QQQ
zaten::linalg_normc                T   d }|t        j                  |      r?t        j                  | |dg      }| j                  dt	        j
                  dg            }t        j                  |      }|t        j                  dd|      S |dk(  rt        j                  |d      }ned	dg}n`t        |      dk(  rRt        j                  |      r'| j                  dt	        j
                  dg            }t        j                  |d      }|rt        | |||||      S t        | |||||      S )
Nrf  rh  r  ri  rF   (Input rank must be known at export time.rP  re  r   )r   rR  rF  r0  rk  rj  r  r'  rH  rb  r}   r{   )r4  rH  ordrF   r  r  	ord_valueself_dims           r!  r|   r|   >  s    I
{##C("221dRDAD$$z5+;+;QC+@$AC"33D9"11A4  q='223<Ia&Cs8q='',dd:u/?/?/DdE'223<I!!T9c7EJJasC%@@r#  zaten::linalg_vector_normc                H   t        j                  |      rt        j                  | |dg      }d}|t        j                  k(  r'| j                  d| j                  d|      ||      }nW|t        j                   k(  r'| j                  d| j                  d|      ||      }n|dk(  rt        j                  dd	d
d|      S |dk(  r t        d      | |||      }n|dk(  r t        d      | |||      }n| j                  dt        j                  |t        j                              }t        j                  | | j                  d| j                  d|      |      ||      }| j                  d|| j                  d| j                  dt        j                  dt        j                              |            }t        j                  |      sLt        j                  |dd      }| j                  d|t        j                  |      j                               }|S )Nrf  Fr  rz  r  r  r   r}   r  rO  zord=0 not supportedrP  r  r  r  r  rh  r  ri  r  rx  r  r  ry  rz  )r   rR  rF  r  infr0  rT  r!  rk  r   r  r  r  r   r  r  )r4  rH  rd  rF   r  r  r  ord_ops           r!  r}   r}   b  s    $..q$=
dhhk144t#4SWU			k144t#4SWU	?? !R)>
 	
 
0$Z0Dc7S	0$Z0Dc7Sj%,,s%--*PQ 22qttE144t,f5cg
 DDZau}})MN
 ##E***5#w?ff;+D+DU+K+U+U+WXMr#  zaten::linalg_matrix_normc                   t        j                  |d      }|dk(  rt        | |||      S |dk(  rt        j                  dd|      S t        j                  |d      }|t        | |||      S |dk(  s|dk(  rt        j                  dd	|      S t        j                  |      }|t        j                  dd
|      S |d   dk  r|dxx   |z  cc<   |d   dk  r|dxx   |z  cc<   |t
        j                  k(  s|t
        j                   k(  r|d   |d   c|d<   |d<   |d   |d   kD  r|s|dxx   dz  cc<   t        j                  | | j                  d|      |d   g|      }|dkD  r<t        | || j                  dt        j                  |d   g            |      \  }	}
|	S t        | || j                  dt        j                  |d   g            |      \  }	}
|	S )Nrp  fronuczlinalg.matrix_normzord==nucre  r  rP  zord==2rc  r   rP  rz  r  rh  ri  )r  r  )r   rH  rZ   r'  r  r  rh  r  r0  r   rk  rj  r   )r4  rH  rd  rF   r  r  re  rf  r/  r  r~  s              r!  r{   r{     s     **34IEasG44	e	--.BJPTUU#..sC8	!!T388>Y"_ #112FRVWW"33D9"11$&PRV 
 q6A:FhFq6A:FhF I$(($: VSVNCFCFq6CF?7FaKF//qttE4 #a&g
 q=!j%2B2BCF82LM	OFG  "j%2B2BCF82LM	OFG r#  zaten::linalg_crossc                    t        | |||      S r  )rC   )r4  r;  rL  rF   s       r!  rz   rz     s     E5#&&r#  zaten::frobenius_normc                ~    | j                  d||      }t        j                  | |||      }| j                  d|      S )NrQ  r  r  )r0  r   r  )r4  rH  rF   r  sqrsumsqrs         r!  rZ   rZ     s=     $$udD
!C..q#cgVF44r#  zaten::multinomialc                   |,t        j                  |      st        j                  dd|       |s|dkD  rt        j                  dd|       t        | |      }| j	                  d|t
        j                  j                  |      S )NMultinomialz*generator is not supported for multinomialrP  zGreplacement=False when num_samples > 1 is not supported for multinomial)r  sample_size_i)r   rR  r'  r   r0  r|  r}  r~  )r4  r;  num_samplesreplacementrU  	log_inputs         r!  r   r     s     _%=%=i%H&&G	
 ;?&&U	
 AuI44++11!	   r#  zaten::baddbmmc           
     (   t         j                  j                  |      }t        | ||      }t	        | || j                  d||j                                     }t	        | || j                  d||j                                     }	t        | ||	      S r  )r   r  r  r   r   r0  r  r   )
r4  rH  batch1batch2r  rX  r  	batch_mulmul_amul_bs
             r!  r&   r&     s     ++66t<Kq&&)I		VU!6!6!89E
 		VT 5 5 78E
 q%r#  zaten::meshgridc                8   |d}n|dvrt        j                  d| |      t        j                  |      }|dk(  r|dd d   |d d |D cg c]>  }t        j                  | || j                  dt        j                  dg      	            @ }}|D cg c]  }| j                  d
|       }} | j
                  dg|ddi}g }t        |      D ]  \  }	}| j                  dt        j                  dt        j                        	      gt        |      z  }
||	   |
|	<   t        | | | j
                  dg|
ddi      }|j                  | j                  d||              |dk(  r|d   |d   c|d<   |d<    | j
                  dg| S c c}w c c}w )Nij>   r~  xyzUnsupported indexing: r  rP  rf  r  rh  ri  r8  r?  r@  r   r  rg  prim::ListConstruct)r   ru  r   r  rF  r0  rk  rj  r  r   r  rb  rD  r)  )r4  r  indexingunpacked_tensor_listr   r  tensors_shape	out_shaper  r  r  
t_reshapeds               r!  r   r     s    		%''$XJ/
 	
 +77D4#72#>Ra 
 &	  	''q!$$z5+;+;RD+A$B	
G  077!QTT'1%7M7X88a8I
C'" :144
EJJq,L4MNQTR
 
 #1%
)!QX0R0RPQ0RS


144*i89: 4QQAA144%,,,% 8s   AFFzaten::remainderc                h    t        | ||      }| j                  d||      }| j                  d||      S )NrQ  rZ  )rs  r0  )r4  r;  rL  rG   quos        r!  r   r   /  s7     5%
(C
$$uc5
!C44uc""r#  z
aten::geluc                   |dk(  r*t        j                  dt         j                  z        }d}t        j                  |t        j
                        }t        j                  |t        j
                        }t        j                  dt        j
                        }t        j                  dt        j
                        }t        | |t        | ||            }	t        | |t        | |t        | ||	                  }
t        | |t        | |t        | || j                  d|
                        S d}| j                  d	| j                  d
|t        j                  |t        j
                                    }t        | || j                  dt        j                  dt        j
                                    }t        | t        | ||      | j                  dt        j                  dt        j
                                    S )Nr   r  gHm?r  r        ?r  g;f?r  rx  rh  rP  ri  )	r  r   r  rk  r   r  r   r   r0  )r4  rH  approximatekBetakKappar  kappar  half	self_cubeinner_sqrt2rP   erf_plusones                 r!  r_   r_   7  su    f		!dgg+&||E6V5<<8ll3ell3||Cu||44Qd!34	AtSD#a	*BCD1dC4QQTT&%5H)IJKK#dd5!$$udELLu||,TUVsADDU\\!5<<-PDQ
 4%DDU\\#U\\%JDK
 	
r#  zaten::group_normc                   t        j                         r| j                  d||||||      S t        j                  |d      }|
||z  dk(  sJ t        j                  |      }|t        j
                  dd|      S d|dg}	t        j                  | || j                  dt        j                  |	                  }
| j                  dt        j                  d	g|z  t        j                  j                  |      j                         
            }| j                  dt        j                  dg|z  t        j                  j                  |      j                         
            }| j                  d|
|||      }t        j                  | || j                  d|            }||j                         j!                         rVt        j                  d	gt        j                  j                  |      j                         
      }| j                  d|      }||j                         j!                         rVt        j                  dgt        j                  j                  |      j                         
      }| j                  d|      }t#        t%        d|dz
              }t'        | t)        | |t        j*                  | ||            t        j*                  | ||            S )Nrb   )num_groups_ir(  cudnn_enabled_irP  r   zunknown input rankrf  rh  ri  r  r  r  r,  r-  r8  )r   rL  rM  r  r  r'  rF  r0  rk  rj  r   r   r  r  r  r  
mustBeNonerB  ra  r   r   r  )r4  r;  
num_groupsr}  r  r  r  r1  
input_rankrC  r;  r7  r8  norm_reshapedr   r2  r3  r	  s                     r!  rb   rb   T  s    ..0tt#)  
 	
 #77qALj(A--- 11%8J--l<PRWXX
BE$44	5!$$z5+;+;E+B$CN ddEJ++66u=CCE
  G DDEJ++66u=CCE
  E DD%3  M **1mQTT'5=QRD~113||E22==eDJJL
 j,7|tyy{--/\\E22==eDJJL

 ttJ
t3 aa()D	At_66q&$GH))!T48 r#  zaten::_weight_normc                   t        j                  |      }|kt        t        |            }| |dk  r||z  }|dk7  r|j	                  |       t        | |d|d      }| j                  d||      }| j                  d||      S t        j                         r| j                  d|||      S t        j                  d|      )	Nrf  r  rP  rx  rQ  _weight_normrJ  zDUnsupported: ONNX export of _weight_norm for tensor of unknown rank.)r   r  rB  ra  remover   r0  rL  rM  r   ru  )r4  r  weight_grF   r]  r	  norm_vrG   s           r!  r  r    s     ++H5D E$K ?RxtbyC a1dA.dd5(F+ttE3))..0ttNHhctBB

#
#N r#  z	aten::dimc                J    | j                  d|      }| j                  d|      S )zFImplement the dim functionality available for a pytorch tensor in ONNXr8  Sizer9  rG  s      r!  rF   rF     s%    
 DD$E44r#  zaten::__contains_c           	     H   t        j                  |      }t        d |D              rft        j                  |      rQ| j	                  dt        j                  t        j                  |j                         d      d |D        v             S t        j                  d|      )Nc              3  F   K   | ]  }t        j                  |        y wr  )r   r  r  rg  s     r!  r  z__contains_.<locals>.<genexpr>  s       ,-$$Q's   !rh  rn  c              3  d   K   | ](  }t        j                  |j                         d        * yw)rn  N)r   r  r  r  s     r!  r  z__contains_.<locals>.<genexpr>  s#     XQO--affh@Xs   .0ri  zJUnsupported: ONNX export of __contains__ for non-constant list or element.)r   r  r  r  r0  rk  r   r  r  r   ru  )r4  rH  elementunpacked_lists       r!  __contains_r    s     $006M
 1> 

&
&w
/ttLL))',,.'BX-XY  
 	
 
#
#T r#  zaten::__getitem_c           
     h    t        | || j                  dt        j                  dg            |      S r  )r   r0  rk  r   )r4  rH  r  s      r!  
__getitem_r    s-     !T144
ELL!4E4FJJr#  z
aten::itemc                    |S r  r  r  s     r!  rs   rs     r  r#  z
aten::takec                    t        j                  | || j                  dt        j                  dgt        j
                                    }t        | |d|      }t        | ||      }|S )Nrh  rf  r  ri  r   )r   rF  r0  rk  r   r  rm   r   )r4  rH  rn   self_flattenedr  s        r!  r   r     s^     %44	4j%,,t5;;*OPN q.!U
3C
QU
#CJr#  c                R    t        | ||      }t        | |      }t        | ||      }|S r  )r   rQ   r   )r4  r;  targetdiff_exp_r9  s         r!  _kl_div_log_target_implr    s.    65!Eq&>DD% FMr#  c           
         t        | |      }t        | ||      }t        | ||      }t        | |      }t	        | || j                  dt        j                  d                  }t        | |||      }|S r  )	r   r   r   r  rc   r0  rk  r   r  )	r4  r;  r  log_r  
output_poszeros_mask_r9  s	            r!  _kl_div_non_log_target_implr    sm    q&>D4EQ&J:&Fq&!$$z5<<?$CDE1eZ0FMr#  zaten::kl_divc                    |rt        | ||      }nt        | ||      }|dk(  r|S |dk(  r| j                  d|d      S |dk(  rt        j                  | |d      S t        j
                  d|      S )Nr   rP  r1  r  r  z4kl_div with reduction other than none, mean, or sum.)r  r  r0  r   r  rS  )r4  r;  r  	reduction
log_targetr9  s         r!  rt   rt     s     (E6:,Qv>A~	attL&Qt77	a00FqII00BE
 	
r#  zaten::mse_lossc           	         t        | t        | ||      t        | ||            }|dk(  r|S |dk(  r| j                  d|d      S |dk(  rt        j                  | |d      S t        j
                  d|      S )Nr   rP  r1  r  r  z6mse_loss with reduction other than none, mean, or sum.)r   r   r0  r   r  rS  )r4  r;  r  r  r9  s        r!  r   r     s     C5&)3q%+@AFA~	attL&Qt77	a00FqII00De
 	
r#  zaten::as_stridedc                   t        j                  |d      }t        |      }t        j                  | || j	                  dt        j                  dgt
        j                                    }t        j                  |      st        j                  dgt
        j                        }t        t        ||            D ]=  \  }\  }	}
dg|z  }d||<   |t        j                  |	      j                  |      |
z  z   }? |r||z   }| j	                  d|| j	                  d|            S d }t        |      D ]  \  }}
dg|z  }d||<   t        | || j	                  dt        j                  dg            | j	                  dt        j                  |                  }	t        j                  | t        | |	d	d d d       | j	                  dt        j                  |                  }| j	                  d
|| j	                  dt        j                  |
g                  }||}| j	                  d||      } |r7| j	                  d|| j	                  dt        j                  |g                  }| j	                  d||      S )Nr  rh  rf  r  ri  r   rP  ry  r  rQ  rN  )r   ri  rb  rF  r0  rk  r   r  rR  r	  r  r  r   r  r   )r4  rH  r
  stridesoffsetr]  self_1dindr  r   r  r_sizetmp_inds                r!  r!   r!   (  sF   
 ,,UD9Ew<D--	4j%,,t5;;*OPG $$U+llA3ejj1!*3ug+>!? 	AA~fS4ZFF1IT*//7&@@C	A ,CttHgqttJt'DEE"7+ 	0IAvS4ZFF1IZqc):;Za9	D &55q$4t4Zf)=>G
 ddwZvh9O PG {dd5#w/)	0* $$uc144
ELL&4J#KLCttHgs++r#  zaten::__derive_indexc           	     J    | j                  d|| j                  d||            S )NrN  rQ  r9  )r4  rn   r^  rB  s       r!  __derive_indexr  X  s$     44uadd5%677r#  zaten::__range_lengthc                    | j                  d||      }| j                  dt        | ||            }| j                  d|t        j                  j                        S )NrZ  r  ry  rz  )r0  r  r|  r}  r~  )r4  lorG  rB  r   rG   s         r!  __range_lengthr  ^  sP     $$ub"
C
$$v{1c40
1C44'"="="C"C4DDr#  zaten::linearc                   t        j                  |      }t        | |      }|dk(  r|j                         j	                         s~| j                  dt        j                  dt        j                              }| j                  dt        j                  dt        j                              }t        | |||||      }|S t        | ||      }|j                         j	                         st        | ||      }|S )Nr  rh  rP  r  ri  )r   r  r   r  r  r0  rk  r   r  r   r   r   )r4  r;  r}  r  r]  rX  r  r9  s           r!  r~   r~   n  s     ++E2Dq&\Fqy//1Zau{{)KLttJQekk(JtKq$vud; M	 5&)yy{%%'D&)FMr#  zaten::hann_windowc                   |Rt        j                         }|r|j                  st         j                  }t        j
                  j                  |      }	nt	        j
                  |      }	t        | |dd d d       }
| j                  d|
t        j                  j                        }t        | | j                  dt        j                  t        j                  t         j                              |      }|du rAt!        | || j                  dt        j                  dt         j"                                    }t%        | ||      }| j                  dt'        | t)        | |            |	j+                               }|S )	Nr  ry  rz  rh  r  ri  FrP  )rk  r  rp   r  r   r  
from_dtyper   r0  r|  r}  r  r   r   r  r  r   r  rG   r   r   r  )r4  window_lengthperiodicr  r  r  r  r  dtype_r  n_arrayr9  s               r!  rd   rd     s6    }((*V55[[F!//::6B!//6Qq$d;GTT&'(C(C(I(ITJF	144
ELL$L4MvF 5}add:u||AUYY7WdX
 FM*FTTq#a.!""$  F Mr#  zaten::mvc                    t        | ||      S r  r   )r4  rH  vecs      r!  r   r     s     !T3r#  z	aten::dotc                    t        | ||      S r  r  r_  s      r!  rH   rH     s     !T5!!r#  zaten::movedimc                   |j                  d      }|j                  d      }|j                         |j                         k(  sJ ||k(  j                         r|S t        j                  |      }|J t        t        |            }|j                         }|j                         }t        |j                         |j                               D ]  \  }}	|||	<   d||<   d||	<    |D 
cg c]
  }
|
dk7  s	|
 }}
|D 
cg c]
  }
|
dk7  s	|
 }}
t        ||      D ]
  \  }}	|||	<    | j                  d||      S c c}
w c c}
w )Nrf  rZ  r[  )r  r   r  r   r  rB  ra  r/  r  tolistr0  )r4  rH  r\  destinationr  rc  src_dimsdst_dimsr  dstrF   s              r!  r   r     sO   
 [[_F""2&K;;=K,,....+""$006I   i !Dyy{Hyy{H););)=> SS	
  (53"95H5'53"95H5(+ SS	 44T$4// 65s   +
D>6D> 
EEz
aten::fillc                    t         j                  j                  |t         j                  j                        }t	        | |||      S r  )r   r  r  r  r[   )r4  rH  rn  r  s       r!  rU   rU     s>     ++66k''--K Qe[11r#  zaten::index_addc           
        t        j                  d       |rBt        j                  t        j                  |            dk7  rt        j
                  dd|      S t        j                  |d      }|t        j                  d|      t        j                  |      }t        j                  |      }||t        j                  d|      ||k7  r@||z
  }t        |      D ]-  }	t        j                  | |t        j                  |      g      }/ t        j                  ||      }
t        j                  ||      }|
||
|kD  rt        j                  d|      t        t        |            }t        |      D 	cg c]  }	d	 }}	t        |      D 	cg c]  }	|	|k7  rt        j                  nd }}	t        j                   | ||||
      }t#        | ||      }t        |      D ]  }	t        j                  | |d	g      } t        ||z
  dz
        D ]-  }	t        j                  | |t        j                  |      g      }/ t%        | ||t#        | ||      |      S c c}	w c c}	w )NzyWarning: ONNX export does not support duplicated values in 'index' field, this will cause the ONNX model to be incorrect.rP  ri   z
alpha != 1r  zXONNX export does NOT support exporting 'index_add_()' function with unknown 'dim' value.z~ONNX export does NOT support exporting 'index_add_()' function while the rank of self tensor or tensor to be added is unknown.zoONNX export does not support exporting 'index_add_()' function with duplicated values in 'index' parameter yet.r   r  )r{  r|  r   rU  rV  r'  ri  r   ru  r  ra  r  r  rB  sysmaxsizer  rR   r   )r4  rH  rF   rn   rL  rX  self_dim_rankother_dim_rankdeltar  other_dim_sizeself_dim_sizenew_shape_axesnew_shape_startsnew_shape_endsra  s                   r!  ri   ri     s{    MM	< (()J)J5)QRVWW--k<NN

*
*3
4C
{''#
 	
 $44T:M$55e<N 6''H
 	
 &.u 	A#555?;;EBCE	
 %99%EN#88sCM")BM)++>  %./N#(#78a88@Em@TU1a3hckkQ6UNU--	4n-=NI a	*E3Z A11!UQC@A =3&*+ 
11u77>?


 q$Yq%%?GG! 9Us   =	II$z
aten::rollc           	        t        |      t        |      k(  sJ |}t        t        |            D ]  }g }t        j                  | |||   g||    gt        j
                  g      }|j                  |       t        j                  | |||   gdg||    g      }|j                  |        | j                  dg|d||   i} |S )Nr  r   r?  r@  )rb  ra  r   r  r  r  r)  r0  )r4  rH  shiftsru  r  r  r  rC  s           r!  r   r   (  s     v;#d)###F3v; 
9--vT!WIq	zl#++
 	e--vT!WIqc&)
 	eh88Q8
9 Mr#  zaten::crossc           	         t        j                  ||      }t        | |dg|g      }t        | |dg|g      }t        | |dg|g      }t        | |dg|g      }t        | t	        | ||      t	        | ||            S )Nr  rP  )r   _get_dim_for_crossr   r   r   )r4  r;  rL  rF   roll_x_1roll_y_1roll_x_2roll_y_2s           r!  rC   rC   >  s     
,
,UC
8C
 AuqcC5)HAuqcC5)H AuqcC5)HAuqcC5)H q#a8,c!Xx.HIIr#  zaten::cdistc                    t        j                  |      }|J t        j                  | ||dz
  g      }t        j                  | ||dz
  g      }t        | |||dd      S )NrP  r  gư>F)r  r  )r   r  r  r   )r4  rk  rl  rs  compute_moder]  broadcasted_x1broadcasted_x2s           r!  r0   r0   R  sn     ++B/D$66q"taxjIN$66q"taxjIN	>>1% r#  z
aten::lerpc                   | j                  d||      }t        | | j                  d|| j                  dt        j                  d                  | j                  d|| j                  d||            | j                  d|| j                  d|| j                  d| j                  dt        j                  d            |                        S )	NrZ  r  rh  r  ri  rN  rQ  r  )r0  r  rk  r   )r4  rH  r_  r}  diffs        r!  rx   rx   j  s    
 44sD!D		VVQTT*ell36GTHI	UD!$$ufd34	DDUADDU\\#5FDGP	
	 r#  zaten::broadcast_tensorsc                    t        j                  |      }t        | |d         }|D ]  }t        | ||      } |D cg c]  }t	        | ||       }} | j
                  dg| S c c}w )Nr   r  )r   r  r  r   rR   r0  )r4  rH  all_tensorst_with_final_shaper   t_lists         r!  r,   r,     s     "..t4K#A{1~6  ; $6:; <GGai101GFG144%/// Hs   A&zaten::is_pinnedc                     y r  r  )r4  rH  r  s      r!  rq   rq          r#  prim::ConstantSplitc           	         t        j                  ||      }|t        j                  dd|      S |g||z  z  }||z  }|r|j                  |       | j	                  d|||t        |            S )Nr  r  r  r  )r   r  r'  r)  r0  rb  )r4  rH  r  rF   r   r  r  s          r!  r   r     s     //c:D|--!#;T
 	
 \TZ/0Fj Hh44vc3v;4OOr#  prim::ConstantChunkc                    t        j                  ||      }|t        j                  dd|      S ||z   dz
  |z  }t        | |||      S )Nr  r  rP  )r   r  r'  r   )r4  rH  r  rF   r  r  s         r!  r   r     s^     33D#>H--!#;T
 	
 V#a'F2Jq$
C88r#  zprim::shapec                &    | j                  d|      S r7  r9  r  s     r!  r   r     s     44r#  z	prim::maxc                "    t        | d||d      S )Nr  r  r  r  r_  s      r!  r   r     s     (5$BOOr#  z	prim::minc           
         |sSt        j                  |      r2t        | || j                  dt	        j
                  dg                  }t        | |      S t        | ||      S r  )r   rk  r   r0  rk  r   r   r_  s      r!  r   r     sV     **40D!$$z5<<;L$"MND1d|q$r#  z
prim::datac                    |S r  r  r  s     r!  r   r     r  r#  zprim::layoutc                N    | j                  dt        j                  d            S r  r  r  s     r!  r   r     s     44
ELLO444r#  r  c                     y r  r  r4  r  r   s      r!  r   r     r  r#  zprim::ListUnpackc                    t        |      dk(  r<|d   j                         j                         dk(  rt        j                  |d         S y )NrP  r   r  )rb  r  r=  r   r  r  s      r!  r   r     sF    
 6{aF1INN,1137LL ++F1I66r#  zprim::TupleConstructc                     y r  r  r  s      r!  r   r     r  r#  zprim::Uninitializedc                     y r  r  r  s      r!  r   r     r  r#  zprim::unchecked_castc                    |S r  r  r  s     r!  r   r     r  r#  zprim::dtypec                    t        j                  |      }|t        j                  j                  }| j                  dt        j                  |            S rg  )r   r  r   r  r  r0  rk  r   r  s      r!  r   r      sG     "66t<K!//5544
ELL$=4>>r#  prim::tolistc                j    t        j                  |d      }|dkD  rt        j                  dd|      S |S )ztolist is currently supported only for 1D input tensors.

    dim_val and elem_ty_val represent dimension and type annotations
    that need to match dimension and type of the input tensor.
    r  rP  r	  zdim_val > 1)r   ri  r'  )r4  r;  dim_valelem_ty_valrF   s        r!  r   r   
  s7     
*
*7C
8C
Qw--nmUSSLr#  r/  c                
   | j                   j                         j                         }t        |t        j
                        ry t        j                  dd|j                          d| j                   j                               S )Nr/  z,output type should be 'DeviceObjType', not '')	original_noder9  rM  rA  r
   r  r   r'  r=  )r4  r  r   output_types       r!  r   r     sn     //((*//1K+r//0))
6{7G7G7I6J!L	  r#  z
prim::Loopc                   | j                   }| j                  }| j                  }t        j                  }t        j
                  }t        |j                               }t        j                  | dg||j                         t        |      d\  }	}
}t        ||
      D ]  \  }}t        |j                               D ]  \  }}|dk(  r0|t        |      k  r"|j                  ||   j!                                |dkD  sA|dz   t        |      k  sSt#        |j!                         t$        j&                        r||j                  ||dz      j!                                 t(        j$                  j+                  ||j,                  ||d        t(        j$                  j/                  ||      }t        j0                  r!t(        j$                  j3                  |||       |S )NLoopr  n_blocksr   rP  F)r  envparams_dictr   r  r  r  blocksr   add_op_with_blocksoutputsSizerb  r  r  r  r1  rM  rA  r
   r2  rk  _jit_pass_onnx_blockblock%_jit_pass_fixup_onnx_controlflow_nodeonnx_shape_inference(_jit_pass_onnx_node_shape_type_inference)r4  r  attrsr  r  r  r  opset_version
old_blocksnew_op_outputsnew_block_contextsnew_node	old_blocknew_block_contextr  b_infixed_outputss                    r!  r   r   )  s    ??D
%%C--K"7755Mt{{}%J3<3O3O	644$($4$4$6Z40N& ),J8J(K 
$	$ !!1!1!34 	3GAtAv!c&k/VAY^^-.
 AUc&k)"499;@VAE]//12	3 	%%## 	
'
4 HHBB-M ##99k=	
 r#  zprim::Ifc                   | j                   }| j                  }| j                  }| j                  }t        j
                  }t        j                  }|d   j                         j                         dk(  }	|	r/t        j                  |d   j                         d      j                         }
t        |
t              rt        |
      n
t        |
      }|rdnd}t        |j!                               |   }t"        j$                  j'                  ||||d      }t        |j)                               }t        |j)                               }g }t+        t-        |            D ]B  }||   |vr t/        j0                  d||    d||         |||      }|j3                  |       D |S t5        |j!                               }t7        j8                  | dg||j;                         t-        |      d	\  }}}t=        ||      D ]2  \  }}t"        j$                  j'                  ||j                  ||d
       4 t"        j$                  j?                  ||      }t        j@                  r!t"        j$                  jC                  |||       |S )Nr   r;  rn  rP  TzThe sub block ATen output z is not in env.Ifr  F)"r  r  r  r  r   r  r  r  r=  r   r  r  rA  rB  r  r  r  rk  r
   r  r  ra  rb  r   ru  r)  r  r   r  r  r  r  r  r  )r4  r  r  r5  r  r  r  r  r   	static_if
input_flagr  	block_idx	current_bif_output_listcurrent_b_listfinal_b_listrZ  onnx_br!  r"  r#  r$  r%  r&  r(  s                             r!  r   r   ]  sb    	
AGGE
%%C--K"7755Mq	 %%'+;;I4 %..vay~~/?IPPR
)*d;C
OjAQ 	 %A!	$Y/	hh++ 
 aiik*i//12^,- 	(Cc"#-//01D0E_U"3'  ,-F'	( 188:&
7@7S7St8
8
&'mmoJ8
4*H -0
<N,O 	(I(HH))!''$	 FFm
 ''HH==+} r#  r/  c           	        | j                   }|j                         ry t        |j                         j	                         t
        j                        ry |j                  d      dk(  r'| j                  dt        j                  |d            S |j                  d      dk(  r'| j                  dt        j                  |d            S |j                         j	                         j                  t
        j                  j                               sI|j                         j	                         j                  t
        j                  j                               r:| j                  dt        j                   t        j                  |d                  S |j                         j	                         j                  t
        j                  j#                               rGt        j                  |d      D cg c]  }| j                  d|       }} | j                  dg| S t%        j&                  d|j                  d       d	t(        j*                   d
|j                               c c}w )Nrn  r   rh  ri  rp  value_sr  z"Unsupported prim::Constant kind: 'z'. Please send a bug report at .)r  r  rA  r9  rM  r
   r  r  r0  r   r  r1  r2  r3  ofFloatsrk  r   	ofStringsr   ru  r   PYTORCH_GITHUB_ISSUES_URL)r4  r  r  r  rp  str_constantss         r!  r   r     s    ??D $++-$$&(8(89{{7s"ttJ(A(A$(PtQQ{{7s"ttJ(A(A$(PtQQ{{}''
					)	)"++*>*>*@	Att_-F-FtW-U V  
 	
 {{}''(=(=(?@ %..tW=
 DDQD'
 
 qtt):M::

#
#
,T[[-A,B C''1'K'K&LA	O 
s   8I/
prim::typec                   |j                         j                         dk(  rOt        j                  |j                         j	                               }|| j                  dt        |            S t        j                  dd|      S )Nr/  rh  r4  r;  z,Device type cannot be statically determined.)	r  r=  r   get_device_from_valuer;  r0  r  r   r'  )r4  device_valuer  r   r  s        r!  r   r     sy     !^3001B1B1D1J1J1LM44
CK488))6 r#  zonnx::Placeholderc                    | j                   }| j                  }| j                  }t        j                  j                  |||      S r  )r  r  r  rk  r
   '_jit_onnx_convert_pattern_from_subblock)r4  r  r  r  r  r  s         r!  r   r     s8     ??DGGE
%%C88;;E4MMr#  zaten::resolve_conjzaten::resolve_negc                    |S r  r  r:  s     r!  r  r    s	     Lr#  zaten::_conjzaten::conj_physicalc                p    t        j                  |      rt        j                  d|      S t        | |      S )Nz aten::_conj, aten::conj_physical)r   is_complex_valuerS  r  r:  s     r!  r  r    s:     ''.00.
 	
 "!U++r#  zaten::logitc                .   | j                  dt        j                  d            }t        j                  |      s| j                  d|t
        j                  j                  |      j                               }| j                  d||      }| j                  d||      }| j                  d|||      }| j                  d	||      }| j                  d|||      }n|}| j                  d||      }	| j                  d
||	      }
| j                  d|
      S )Nrh  r  ri  ry  rz  rZ  r  r  r  rx  r|  )	r0  rk  r   r   rR  r   r  r  r  )r4  rH  r  r  one_sub_epsself_less_equal_one_sub_epstemporary_selftemporary_self_less_epszr   rG   s              r!  r   r     s     $$z5<<#4$
5C##C(ddCk77BB4HRRT  
 dd5#s+&'dd9k4&H#g'BD+V"#$$v~s"CDD13G
$$uc1
C
$$ua
C44sr#  )r+  r  )r4  jit_utils.GraphContextr  )r  )T)rG  r  r+  r  r  r  r  )F)r4  rJ  r;  r:  r  r  r  r  )rF   r  )r4  rJ  r;  r:  r   r:  )
r4  rJ  r;  r:  r   r:  r  r:  rn  r:  )r+  r  rF   r  r~  r  )r*  r   returnr   )NNN)r4  rJ  r;  r:  r  r;  r}  r:  r  r:  r  r  rK  z#Tuple[_C.Value, _C.Value, _C.Value])r4  rJ  r;  r:  r  r;  r}  r:  r  r:  r  r  r*  r  rK  r:  )
r4  rJ  r0  r  r  r   r  r   r  r  )FFr  )FN)NNNFN)NNF)r4  rJ  rH  r:  r  r  r  r  )r=  r  )NNFN)r4  rJ  r;  torch._C.ValuerF   rL  r  r  )r4  rJ  rH  rL  rd  rL  rF   Optional[Sequence[int]]r  r  r  rL  )r4  rJ  rH  rL  rd  r  rF   rM  r  r  r  rL  )r4  rJ  rH  rL  rd  rL  rF   z	List[int]r  r  r  rL  )rf  )NF)r4  rJ  r  zOptional[str])r8  )r4  rJ  rH  rL  r  r  )TNNNNF)r4  rJ  r  zOptional[int])r  #use_mm_for_euclid_dist_if_necessary)r4  rJ  rK  zOptional[List[_C.Value]])r4  rJ  rK  None)r4  rJ  rK  zList[_C.Value])r4  rJ  r>  r:  )r4  rJ  r;  r:  )r4  rJ  rH  rL  r  rL  (v  __doc__
__future__r   rX  r,  r  r  r{  typingr   r   r   r   r   r	   rk  torch._C._onnxr
   _onnxr|  torch.nn.modules.utils
torch.onnxr   r   r   r   r   torch.onnx._globalsr   torch.onnx._internalr   r   r   torch.typesr   r(  partialonnx_symbolic_onnx_symbolicr$  r-  r   r  r<  rD  rC  r   r   r   r   r   r   rG   rD  r   rc  rt  rs  rW   rY   r  r   r/   r   r  r   r+   r   r   r   r   r   r   r   rA   r   r#   r   r$   r%   r   r   r  r  r!  r   rH  rD   rP  rW  r   r   rS   r-   rR   rL   rK   r   r  r   r  r  r  r   r	  r   r  r  r   r   r   r   r   r   r  r   r   r1   rX   r  r   rw   ra   r   r   r`   nnmodulesutils_single_pair_tripler'  r   r   r   r<  rN  rR  rU  r6   rb  r   r   r   r  r  r)   r*   r  r  r  rO   r   rc   r  r   r  r^   rv   r  r  r  r   r   r   r   r  r  r  r   r  r  r  r@   r<   r=   r>   r9   r:   r;   r'   r   ru   ro   r  rJ   r   rm   rl   rk   rj   r.   r  rB   r   r5   r   r   r   r   r   r4   r3   r2   r   r   r   r   r   r   r   rQ   rI   r  r   r8   r  r  
deprecatedr  r  r  r  r  r  r  r  r  rN   rM   r   r   r   r"   r  r  r   r  r   r   r   r\   r[   r   rT   r   rh   rg   rf   r   re   r   r   r
  r   r   r  r?   r   r   r   r   r   r  r  r  r   r   r  r  rE   r7   r  r  r   r   r   r   r   r   r   r(   r   rP   rV   r   r   rr   r  r  r   r   r    r   r   r   rp   r$  r&  r   r]   r5  r   r  r  r   r   r   r   ry   r   r   rn   r|   r}   r{   rz   rZ   r   r&   r   r   r_   rb   r  rF   r  r  rs   r   r  r  rt   r   r!   r  r  r~   rd   r   rH   r   rU   ri   r   rC   r0   rx   r,   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r#  r!  <module>rd     sL  
 #    
  C C         V U ' C C 
DN #""<#=#=QG   ()
   *  ,-
$  .$  %
;  & !; "#%
#  & $#
 
$  $ 
$  $ 
,  , 
(  ( 
9  9  Cc3/
F  0 !F
 Cc*

  +
  > ' '0 $%
)  &)
  !
(  "( #$
$  %$6 "#
$  $$ C%
0  & 08 C%
3  & 3 
   

A  A 
'  ' 
'   ' Cc34
2  5 2j 
   
    
   KCH
  I  
   
   
   
   
   
   
  *  KAF
!  G !! 
    %
K  &K    *    }[%'H&IJlF(K'LML&%PQ 1 	 N K1h Cf-
D  .  D )*
H  +H '(
F  )F 	
2  2  %
1  & !1 %
&  &  &$ $%%
&  & &&$ !"d+
'  , #'" !"%Cc34
++  5 & #+0 %&%Cc3S#sCH
PP  I & 'PB e<
6  = 6 !"%Cc*

  + & #
*  C&
0  ' !0 %
"  & "  
#  !#
 $%Cc3/
M  0 &M$ Cc3/
M  0 M2 $%
HL>>  &> ()CsC0
R  1 *R /0
@DAA  1A Cc*
  +   %Cc*
7  + &  7  
#   #  
;J  !;J| 
'  ', 
6  6 
E  E 2 2j %
K  & K %
!  & ! 
   
     
9  9
 !"Cc*
  + # "#%Cc*

 	<<< < 	<  + & $< C%
7  & 7  Cf-
;  . !;|  !
"  "" -.
(  /(V %((**0088!E	
 		 %((**0066%	
 		 %((**0088!E	
 		 8 88v J.)HI!&&		  J.)HI!$$		  J.)HI!&&		  lEHH$4$4$:$:$B$BC lEHH$4$4$:$:$@$@A lEHH$4$4$:$:$B$BC 5 ,5p !=%((2B2B2H2H2P2P	
 	%&	 !=%((2B2B2H2H2N2N	
 	%&	 !=%((2B2B2H2H2P2P	
 	%&	 !HH""**#		
 	%& !HH""((#		
 	%& !HH""**#		
 	%& 4 @4n  "  " '(
  )$ & &R ()()()
  * * * )*)*)*
  + + + 
TTT 
T 	T
 T  T( *Ay9$% *Ay9$% *Ay9$% )1h7#$ +Q9%&  ,a:&'  V$ %&
88  '8  #$
  % "#
#  $#  	 	   
    
d+
&  , &2 
d+
   ,  
d+
%  , % ) ) 
d+
%  , % & & 
d+
%   , % 
d+
%   , % 
%   %  
$  $  
%   %  #$f%
%  & %% "#f%
$  & $$ #$f%
%  & %% #$
S  %S !"
  #8 !"
  #8 Cc3/
	1  0 	1 #$Cf-
  . %> $%Cc*
	&  + &	& $%c4tS$S#sC  @@  &
@F )* 44  +4n #$Cc4tS$L
  M %< Cc4dC@
 
 
  A   
F Cc4dC@
 
 
  A   
F Cc4dC@
 
 
  A   
F ()Cc4tS$G
  H *: ()Cc4tS$G
  H *: ()Cc4tS$G
  H *: "#Cc3S#sCH
44  I $4n )*eUE:CsC5
7*7*7* $7* 	7*
 7* 
7* )7*  6 ; +7*t "#eUE:CsCc:
 $ 	
  
    ; ; $. %&Cc3S#sCH
\P\P \P \P 
\P \P  I '\P~ Cc3/
!
  0  !
H %Cc3/

F  0 & 
F %
  &  $%Cc*
?  + &? !"
F  #F$ "#
A  $A, "#
9  $9 !"Cc3/
HM T T  0 # TF  
  !0 )*Cc3/
#  0 +#$ )*
$  +$" 
   
   
   
Y  Y 
V  V
 
   
>  >* !"C%
R  & #R !"C%
R  & #R   	 
   d+
)  , !) 
     d+
)  , !) %Cs+
C  , & C %Cs+
C  , & C  %Cc*
  + & ! 
    ! Cc*
  + ! " m4J&K%L ":;< 6N(O'P !9:; %?T1U0VW}5L'M&N 	  X		&	 CdC5
  6    !Cc3/
9  0 "9  Cc*

C  + !
C  !Cc3/
F  0 "F "#	>
 G  $G "#	>
 F  $F #$	>
 G  %G !"	>
 G  #G "#	>
 G  $G "#	>
 I  $I #$	>
 G  %G $%	>
 H  &H "#	>
 F  $F Cc3S9
 	>	>  : 	> "#Cc3S9
 	C	C  : $	C !"
NS>>  #> %&
  ' 
LQQQ   Q6 !"
*  #* Cc34
  5   "#Cc3S9
   : $. !"
NS>>  #> 
+  +
 Cc34
  5  !"Cc3S9
   : #.  !
NS==  "= 
OT

  
0 !"

 

  #
>  !
 HH  "H  
V  V. 
EX  EXP  !%Cc*
  + & " !"%C 
!  ! & #!
 #$KAFC 
4  ! G %
4 "#C 
,  ! $, "#C%
  & $( "#C%
"  & $"> 
   !"C%
D  & #D0 Cc62
C  3 C& 
3  3
 Cc3V<
<  = < ,-
Q  .Q
 

HQ  HQV 
'   ' )*
DHd5d5  +d5N %&C%
C
  & 'C
L '(C%
@
  & )@
F  b+b+ b+J Cc3S#sCH
  I< Cc3S#sCH
  I< 
$  $ !"
7  #74 }U';WU^&LMj 97:;NO j 97:;NO@ N@F #$C%
	4  & %	4 
   
 "#C%
  & $ -.Cc*
?  + /?. ,-Cc34
  5 ."  
'  !'T $%
  &8 
  2 
  2 "#

 KK  $K& !"

   #& Cc37
#  8 # !"
8  #8< #$C 
  ! %
 C 
  !   eU3Cc*
N  + 4 !N4  C 
(  ! !(
 %&
>  '> C 
  ! 
 
Y  Y& 
=  = Cc3/
  0   Cc*
SSS 
S 	S  +  S Cc*
SSS 
S 	S  +  S  Cc3/
R  0 !R  #$Cc3/
   0 %  
S  S
 )*
;  +; 
    !
!   "!  
@  !@ Cc3/
Q  0  Q" CsC0
  1D 
  
 
  
  !
	*  "	*  !
#  "#
 !"Cs+
J  , #J 
NY   NYb  !
	5	5  "	5 
  
 #$
V  %V $%
-  &- 
fI  fIR #$CdC5
AA
A 
A 
!	A
 A A  6 %AB *+CdC5
++
+ 
+ 
!	+
 + +  6 ,+\ *+CdC5
88
8 
8 
	8
 8 8  6 ,8v $%Cc*
'  + &' &'Cs+
   , (  #$Cc3/
PT  0 %.  
   !    !C%
-  & "-> !"
#  ## C%

  & 
4 "#eUE:Cc3S9
BB  : ; $BJ $%Cc*
  + &4 
   #$
  %& "#
K  $K 
   
       Cc3/

  0  
$  !Cc*

  + "
 "#%CdC0
),  1 & $),X &'
8  (8 &' E  (E 
    #$Cc3S#>
 ## 	#  ? %#L 

     
"  "  Cc*
0  + !0@ C%
2  & 2 !"
BH  #BHJ Ct,
  - & Cc*
J  + J" 

 
6  , 
  ( )*

0  +
0 !" #
 %&

P  '
P" %&
9  '9 
   
P  P 
   
   5  5 %&
  ' "#
  $ &'
  ( %&
  ' &'
  ( 
?  ? 
	   	 
	   	 
/  /d 

T  Tn  !
  "D 

  
 #$
N  %N $%#$
  % & %&
,  ' ," 
  r#  