
    Χg*k                   f   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 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 erdd	lmZ g d
Z ej         ej!        d          Z"ddZ#d Z$ e"d          dd            Z% e"d          dd            Z& e"d           ej'        d          dd                        Z( e"d           ej'        d          dd                        Z) e"d          ddd            Z* e"d          ddd            Z+ e"d           ddd!            Z, e"d"          dd#            Z- e"d$          dd%            Z. e"d&           ej/        d'd'd'd(          ddd*                        Z0 ej/        d'd'd+          dd,            Z1dd-Z2dd.Z3 e"d/          dd0            Z4 e"d1          dd2            Z5 e"d3          dd4            Z6 e"d5          dd6            Z7 e"d7           ej/        d'd8          dd9                        Z8 e"d:           ej/        d'd8          dd;                        Z9 e"d<          dd=            Z: e"d>          dd?            Z; e"d@          ddA            Z< e"dB          ddC            Z= e"dD           ej/        d'd'd'dEdE          ddF                        Z> e"dG          ddH            Z? e"dI          ddJ            Z@ e"dK          ddL            ZA e"dM           ej'        ddNdOP          ddQ                        ZB e"dR          ddS            ZC e"dT          ddU            ZD e"dV          ddW            ZE e"dX          ddY            ZF e"dZ          dd[            ZG e"d\          dd]            ZH e"d^          dd_            ZI e"d`           ej'        ddadP          ddb                        ZJ e"dc          ddd            ZK ej'        d          dde            ZL e"df ejM        dgdh          gi           e"dj ejM        dkdl          gi           e"dm ejM        dndodpq          gi          dddu                                    ZN e"dv           ej/        d'd8dw          ddx                        ZO e"dy          ddz            ZP e"d{          dd|            ZQ e"d}          dd~            ZR e"d           ej'        d          dd                        ZS e"d           ej'        d          dd                        ZT e"d           ej'        d          dd                        ZU e"d           ej'        dd          dd                        ZV e"d           ej'        d           ej/        d'd'd8dd'          dd                                    ZW e"d           ej'        d           ej/        d'd'd'd8d8d8d'd8d8	  	        dd                                    ZX e"d           ej'        ddp          ddd                        ZY e"d           ej'        d           ej/        d'd8d8          dd                                    ZZ e"d           ej/        d'd          dd                        Z[ e"d           ej'        d          dd                        Z\ e"d          dd            Z] e"d           ej/        d'd8d8d8          ddd                        Z^ e"d           ej/        d'd'd8d8          ddd                        Z_ e"d          	 ddd            Z` e"d           ej/        d'dd8d8          ddd                        Za e"d          	 ddd            Zb e"d           ej/        d'd8d8          ddd                        Zc e"d           ej'        d           ej/        d'd8d'          dd                                    Zd e"d          dd            Ze e"d          ddd            Zf e"d          dd            Zg e"d          dd            Zh e"d          dd            Zi e"d           ej'        d          dd                        Zj e"d           ej'        d          dd                        Zk e"d          dd            Zl e"d          dd            Zm e"d          dd            Zn e"d           ej/        d'dEdE          dd                        Zo e"d           ej'        d           ej/        d'd(d          	 ddd                                    Zp e"dæ           ej/        d'd8          ddĄ                        Zq e"dŦ           ej/        d'd8dw          dddƄ                        Zr e"dǦ          ddȄ            Zs e"dɦ          dʄ             Zt e"d ejM        deju        jv        jw        jx        ddpΦ           e#d̦          gi           e"d ejM        deju        jv        jw        jy        ddpΦ           e#dЦ          gi           e"d ejM        deju        jv        jw        jz        ddpΦ           e#dӦ          gi          dՄ                                     Z{  e"d֦           e{deju        jv        jw        jx        ddΦ                    Z|  e"dئ           e{deju        jv        jw        jy        ddΦ                    Z}  e"dڦ           e{deju        jv        jw        jz        ddΦ                    Z~ e"d ejM        deju        jv        jw        jx                   e#dݦ          gi           e"d ejM        deju        jv        jw        jy                   e#dߦ          gi           e"d ejM        deju        jv        jw        jz                   e#d          gi          d                                     Z e"d ejM        ddeju        jv        jw        jx                   e#d          gi           e"d ejM        ddeju        jv        jw        jy                   e#d          gi           e"d ejM        ddeju        jv        jw        jz                   e#d          gi           e"d ejM        ddeju        jv        jw        jx        e|           e#d          gi           e"d ejM        ddeju        jv        jw        jy        e}           e#d          gi           e"d ejM        ddeju        jv        jw        jz        e~           e#d          gi          dd                                                                        ZddZd Z e"d          dd            ZddZ e"d           e"d           e"d          dd                                    Z e"d           e"d           e"d           dd                                    Z e"d          dd            Z e"d ejM        ddԐd           e#d          gi           e"d	 ejM        d
dd           e#d
          gi           e"d ejM        ddd           e#d          gi           e"d ejM        ddԐd           e#d          gi           e"d ejM        ddd           e#d          gi           e"d ejM        ddd           e#d          gi          dd                                                                        Z e"d          dd            Z e"d          dd            Z e"d          d             Zd Zdd"Z e"d#          dd$            Z e"d%           ej'        dd          dd&                        Z e"d'           ej'        dd          edd(                                    Z e"d)           ej'        dd          dd*                        Zdd+Z e"d,           ej'        dd          dd-                        Zdd.Z e"d/           ej'        dd          edd0                                    Z e"d1           ej'        dd          edd2                                    Z e"d3          dd4            Z e"d5          dd6            Z e"d7          dd8            Z e"d9           ed:          dd;                        Z e"d<           ed:          dd=                        Z e"d>           ed:          dd?                        Z e"d@          ddA            Z e"dB          ddC            Z e"dD          ddE            Z e"dF           ej/        d'd'd'd8          dddG                        Z e"dH           ej/        d'd8dw          dddI                        Z e"dJ           ej/        d'd8d8          ddK                        Z e"dL           ej/        d'd'd'dddd8dd8d8d8d8d8          	 dddM                        Z e"dN           ej/        d'd'd'dd+dd8          ddO                        Z e"dP           ej/        d'd'd'dddd8dd8	  	        ddQ                        Z e"dR           ej/        d'd'd'dd'dd8          ddS                        Z e"dT           ej/        d'd'd'dd'dd8          ddU                        Z e"dV           ej/        d'd'd'dd'dd8          ddW                        Z e"dX           ej/        d'd'd'dddd8d          ddY                        Z e"dZ           ej/        d'd'd'dddd8d          dd[                        Z e"d\           ej/        d'd'd'dddd8d          dd]                        Z e"d^           ej/        d'd'd'd'd'd8d(d(d8	  	        dd_                        Z e"d`           ej'        ddpdpdp           ej/        d'dd'd'd(          ddg                                    Z e"dh           ej'        ddpdpdp           ej/        d'dd'd'd(d          ddj                                    Z e"dk           ej/        d'd'd'd'd'dd(d(d	  	        ddp                        Z e"dq           ej/        d'd8d8d8          ddr                        Z e"ds           ej'        d           ej/        d'dEdEdE          ddt                                    Z e"du           ej'        d          ddv                        Z e"dw           ej/        d'd8d'          ddx                        Z e"dy          ddz            Z e"d{          dd|            Z e"d}          dd~            Z e"d           ej/        d'd'dd          	 ddd                        Z e"d          dd            Z e"d           ej/        d'd'd8d(          dd                        Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d           ej/        d'd'          dd                        Z e"d           ej/        d'd'          dd                        Z e"d          ddd            Z e"d           ej'        dd          dd                        Z e"d          ddd            Z e"d           ej'        dd          dd                        Z e"d           ej'        d           ej/        d'dd8          dd                                    Z e"d           ej'        d           ej/        d'dd8          dd                                    Z e"d           ej'        d           ej/        d'd'd8          dd                                    Z e"d          dd            Z e"d           e"d           ej/        d'd(d8          dd                                    Z e"d ejM        d          gi           e"d ejM        d          gi           e"d ejM        d          gi           e"d ejM        d          gi           e"d ejM        d          gi           e"d ejM        d          gi          dd                                                                        Z e"d           ej/        d'dEdd8d'          ddd                        Z e"d           ej/        d'd'd'd8          dd                        Z e"d           ej/        d'd8d8          dd                        Z e"d           ej/        d'd8d8d8          dd                        Z e"d           ej        ddd          dd                        Z e"d           ej        ddd          dd                        Z e"d¦           ej        ddd          ddÄ                        Z e"dĦ           ej        ddd          ddń                        Z e"dƦ           ej        ddd          ddǄ                        Z e"dȦ           ej        ddd          ddɄ                        Z e"dʦ           ej        ddd          dd˄                        Z e"d̦           ej        ddd          dd̈́                        Z e"dΦ           ej        ddd          ddτ                        Z e"dЦ           ej/        d'd8d'd'd'd'          	 	 dddф                        Z e"dҦ           ej/        d'd8d'd'd'd'          	 	 	 	 	 d ddӄ                        Z e"dԦ          	 dddՄ            Z e"d֦          ddׄ            Z e"dئ          	 d!ddل            Z e"dڦ          dddۄ            Z e"dܦ           ej/        d'd8d'd'd'          ddd݄                        Z e"dަ           ej/        d'd8d'd'd'd'          	 	 	 	 	 d dd߄                        Z e"d          	 ddd            Z e"d          dd            Z e"d           ej/        d'd8d'd'd'          ddd                        Z e"d           ej/        d'd8d'd'd'd'          	 	 	 	 	 d dd                        Z e"d          	 ddd            Z e"d          	 ddd            Z e"d          	 	 	 	 	 d dd            Z e"d          	 ddd            Z e"d          dd            Z e"d          dd            Z e"d           ej'        d           ej/        d'd(d(          d"d                                    Z e"d           ej'        d           ej/        d'          dd                                    Z e"d           ej'        ddadP           ej/        d'          dd                                    Z e"d           ej/        d'          dd                        Z e"d           ej/        d'd(          dd                         Z e"d           ej/        d'd(          dd                        Z e"d          dd            Z e"d           ej/        d'd8          dd                        Z e"d           ej/        d'd8d8dw          ddd                        Z e"d	          dd
            Z e"d           ej/        d'd8d8d8d8dw          ddd                        Z e"d          dd            Z e"d          dd            Z e"d          dd            Z e"d          	 ddd            Z e"d           ej/        d'd8          dd                        Z e"d           ej/        d'd8          dd                        Z	 	 dddZ ej/        d'd'd'd8d8d(d8d8d8	  	        dd            Z  ej/        d'd'd'd'd8d8d(d8d8	  	        dd            Z e"d          dd            Z e"d          dd            Z e"d  ejM        d!           e#d"          gi           e"d# ejM        d$           e#d%          gi           e"d& ejM        d'           e#d(          gi          d#d*                                    Z e"d+           ej/        d'd8          dd,                        Z e"d-          dd.            Z e"d/           ej/        d'd8          dd0                        Z e"d1           ej/        d'd'd8          dd2                        Z e"d3           ej/        d'd'd8dEd'          dd4                        Z	 e"d5          dd6            Z
 e"d7          dd8            Z e"d9          dd:            Z e"d;          dd<            Z e"d=          	 	 	 	 d$dd>            Z e"d?          	 	 	 	 d$dd@            Z e"dA           ej/        d'd(d(d8dw          ddB                        Z e"dC          dddD            Z e"dE           ej/        d'          ddF                        Z e"dG           ej/        d'          ddH                        Z e"dI           ej'        ddpdp           ej/        d'd8d8          ddJ                                    Z e"dK           ej/        d'          ddL                        Z e"dM          dddN            Z e"dO           ej/        d'          ddP                        Z e"dQ          ddR            Z e"dS          ddT            Z e"dU           ej/        d'd8d8d8          ddV                        Z e"dW           ej/        d'd'd          d%dZ                        Z e"d[           ej/        d'd'd          d%d\                        Z e"d]           ej/        d'd8d'd'          dd^                        Z e"d_           ej/        d'd8d'd'          dd`                        Z e"da          ddb            Z e"dc          ddd            Z  e"de          ddf            Z! e"dg          eddh                        Z" e"di          ddj            Z# e"dk           ej/        d'd8d'd'          dddl                        Z$ ej/        d'dd8d8          ddm            Z% e"dn          ddo            Z& e"dp          ddq            Z' e"dr          dds            Z( e"dt          ddu            Z) e"dv           ej/        d'dd8          ddw                        Z* e"dx          ddy            Z+ e"dz          dd{            Z, e"d|          dd}            Z- e"d~          dd            Z. e"d          dd            Z/ e"d          dd            Z0 e"d           ej/        d'd'ddd'          d&d                        Z1 e"d           ej/        d'd(ddd'          d'd                        Z2 e"d           ej/        d'd'ddd'          d(d                        Z3 e"d           ej/        d'd'd8          d)dd                        Z4 e"d           ej/        d'dd          d*dd                        Z5 e"d           ej/        d'd8dd'          	 ddd                        Z6 e"d          dd            Z7 e"d           ej/        d'd+          dd+d                        Z8 e"d          dd            Z9 e"d           ej/        d'd+          d,d-d                        Z: e"d           ej'        ddpdpdp           ej/        d'd8d'd'd(d8          dd                                    Z; e"d           ej/        d'd'd8          dd                        Z< e"d          dd            Z= e"d          dd            Z> e"d          dd            Z? e"d          dd            Z@ e"d          dd            ZAddZBddZC e"d           ej/        d'd'd8d          dd                        ZD e"d           ej/        d'd'd8          dd                        ZE e"d           ej'        d           ej/        d'd'dd8          ddd                                    ZF e"d          dd            ZG e"d          dd            ZH e"d          dd            ZI e"d           ej/        d'dd8d'd'd'd'          	 	 	 	 	 	 d.d/d                        ZJ e"d          dd            ZK e"d          dd            ZL e"dæ           ej/        d'dEdE          ddĄ                        ZM e"dŦ           ej/        d'd'          ddƄ                        ZN e"dǦ          dddȄ            ZO e"dɦ           ej/        d'dd          ddʄ                        ZP e"d˦           ej/        d'd'd8          ddd̄                        ZQ e"dͦ          	 	 d0ddЄ            ZR e"dѦ          dd҄            ZS e"dӦ          ddԄ            ZT e"dզ          dddք            ZU e"dצ          dd؄            ZV e"d٦          ddڄ            ZW e"dۦ          dd܄            ZX e"dݦ          ddބ            ZY e"dߦ          ddd            ZZ e"d          dd            Z[ e"d          dd            Z\ e"d          dd            Z] e"d          d1d            Z^ e"d          dd            Z_ e"d          dd            Z` e"d          dd            Za e"d          dd            Zb e"d          dd            Zc e"d          d2d            Zd e"d          d3d            Ze e"d          d3d            Zf e"d          dd            Zg e"d          d4d             Zh e"d          dd            Zi e"d           e"d          d5d                        Zj e"d           e"d          d5d                        Zk e"d	          d6d
            ZldS (7  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SequenceTYPE_CHECKING)_C)
_constants_deprecation_type_utilserrorssymbolic_helper)GLOBALS)	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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	   )opsetnamestrc                      fd}|S )z5Exports the function in the current global namespace.c                ^    | t                      <   t                                         | S N)globals__all__append)funcr  s    V/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/onnx/symbolic_opset9.pywrapperz_export.<locals>.wrapper1  s'    		$t     )r  r  s   ` r  _exportr"  .  s#        
 Nr   c                    |                      d          }|                    t          j                                                   |S )z%Represents "missing" optional inputs.prim::Constant)opsetTyper   OptionalTypeofTensor)gns     r  r  r  9  s9    	AIIbo&&(()))Hr   zaten::_shape_as_tensorr)  jit_utils.GraphContextc                .    |                      d|          S NShaper%  r)  inputs     r  _shape_as_tensorr2  @      44r   zaten::_reshape_from_tensorc                p    t          |t                    r | j        dg|R ddi}t          | ||          S )NConcataxis_ir   )
isinstancelistr%  r   )r)  r1  shapes      r  _reshape_from_tensorr:  E  sG    % 1X0000a001eU###r   zaten::reshapeTc                .    t          j        | ||          S r  )r   _reshape_helperr)  selfr9  s      r  r   r   L  s     *1dE:::r   zaten::reshape_asc                P    |                      d|          }t          | ||          S r-  r%  r   r)  r>  otherr9  s       r  r   r   R  s)     DD%  E1dE"""r   z	aten::addc                6   t          j        |          r,t          j        |          rt          j        dddd|          S |rAt          j        t          j        |                    dk    r|                     d||          }|                     d||          S )a  
    This function takes the add function and returns the corresponding ONNX operator.

    This function is not meant to be called directly by the user.

    Args:
        g (GraphContext): The graph context.
        self (Tensor): The first operand.
        other (Tensor): The second operand.
        alpha (float, optional): The scaling factor for the second operand. Defaults to None.

    Returns:
        ONNX operator.
    Addr     z)Add between list of tensors not supported   Mul)r   	_is_value_is_tensor_list _onnx_opset_unsupported_detailed_scalar_maybe_get_scalarr%  r)  r>  rB  alphas       r  r   r   Y  s       && 
?+J4+P+P 
?1bEt
 
 	
  *()J5)Q)QRRVWWWUE5))44tU###r   z	aten::subc                    |rAt          j        t          j        |                    dk    r|                     d||          }|                     d||          S )a  
    Consumes sub function and returns the corresponding ONNX operator.

    This function is not meant to be called directly by the user.

    Args:
        g (GraphContext): The graph context.
        self (Tensor): The first operand.
        other (Tensor): The second operand.
        alpha (Optional[Tensor]): A scaling factor to apply to the second operand.
            If `alpha` is not provided, it defaults to 1.

    Returns:
        ONNX operator
    rF  rG  Sub)r   rK  rL  r%  rM  s       r  r   r   r  sX    "  *()J5)Q)QRRVWWWUE5))44tU###r   z
aten::rsubc                (    t          | |||          S )N)rN  )r   rM  s       r  r   r     s    q%U++++r   z	aten::mulc                    t          j        |          r+t          j        |          r|                     d||          S |                     d||          S )NAndrG  )r   _is_boolr%  r)  r>  rB  s      r  r   r     sS    %% (/*B5*I*I (ttE4'''ttE4'''r   z	aten::divc                h    t          |          dk    rt          | ||          S t          | ||g|R  S Nr   )lenr   _div_rounding_mode)r)  r>  rB  argss       r  rC   rC     s=    
4yyA~~1dE***!!T5848888r   zaten::addcmulvf      ?c                    |                      dt          j        |g                    }t          | |t	          | t	          | ||          |                    S NConstantvalue_t)r%  torchr   r   r   )r)  r>  tensor1tensor2value
value_tenss         r  r   r     sO     j%,w*?*?@@Jq$As1gw77DDEEEr   sc                    |t          | ||          S |dk    rt          | ||          S |dk    rt          | ||          S t          j        d| d|          )NrT   trunczUnsupported rounding mode: "z$". Expected None, "floor" or "trunc")r   _floor_divide_trunc_divider   SymbolicValueError)r)  r>  rB  rounding_modes       r  rY  rY    sz    1dE***	'	!	!Qe,,,	'	!	!Qe,,,'^=^^^
 
 	
r   c                N   |                      d||          }|                      d|t          j        j                  }t          j                            |t          j        j                  }|t          j        j        k    r{t          j	        |          s<t          j	        |          r(|                      d|t          j        j
                  }nR|                      d||                                          }n'|                      d|t          j        j
                  }|S )NDivCastto_i)r%  _C_onnxTensorProtoDataTypeINT64r
   JitScalarType
from_value	UNDEFINEDr   _is_fpFLOAT	onnx_type)r)  r>  rB  outscalar_types        r  rl  rl    s   
$$udE
"
"C $$vs!<!B$
C
CC +66k'1 K k/999%d++ 	0Fu0M0M 	$$vs)D)J$KKCC$$ **,,   CC dd63W%@%FdGGJr   c                T   t          j        |          st          j        |          r't          | ||          }|                     d|          S |                     d||          }|                     dt	          j        dt          j                            }|                     dt          j        | ||          t          j        | ||                    }|                     d||                     d	||                    }|                     d
||                     d|                     d||                              }|                     dt	          j        dt          j                            }	|                     d	||	          }
|                     d||
          S )NFloorrp  r`  r   dtypera  XorrP  rG  rS  NotEqualrF  )r   rz  r   r%  rc  r   int64
_lt_helper)r)  r>  rB  r}  rC   r  negativemod
fixup_maskonefixups              r  rk  rk    sn   d## ''=e'D'D '!T5))ttGS!!! dd5$&&ttJQek(J(J(JtKK44&q$55&q%66
 
 dd5$UC 7 788TT%144qttGS$7O7O+P+PQQ
dd:u|AU['I'I'IdJJUJ,,ttE3&&&r   zaten::floor_dividec                $    t          | ||          S r  )rl  rU  s      r  rS   rS     s     D%(((r   zaten::floordivc                $    t          | ||          S r  )rS   rU  s      r  rU   rU     s    4'''r   zaten::true_dividec                   t          j        |          st          j        |          r|                     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
        }|                     d||          }|                     d||          }|                     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
    rp  rq  rr  )r   rz  r%  rc  get_default_dtypert  ru  r{  floatdoubleDOUBLE)r)  r>  rB  r~  onnx_scalar_types        r  r   r     s     d## ('=e'D'D (ttE4''' )++K28%+%%)D)D)D)D  EL00"6=44#3444DDD%5D66E44tU###r   zaten::reciprocalc                    t          j        |          s'|                     d|t          j        j                  }|                     d|          S )Nrq  rr  
Reciprocal)r   rz  r%  rt  ru  r{  r)  r>  s     r  r   r     sI     !$'' JttFDw'B'HtII44d###r   z	aten::catic                
   t          j        |          }g |D ]A}t          j        |          rt          j        |d          s,                    |           Bt                    dk    sJ t          fdD                       sJ |                                                                 D ])}|                                	                    |           *t          j        |          } | j
        dg|R d|iS )a{  Implement concatenation of pytorch tensors in ONNX along the specified `dim` dimension.

    Parameters:
        g (jit_utils.GraphContext): Graph context.
        tensor_list (List[torch.Tensor]): List of tensors to concatenate.
        dim (int): Dimension along which to concatenate the tensors.

    Returns:
        ONNX graph node representing the concatenated tensor.
    r   c              3     K   | ]f}t          j        d                    du pEt          j        |          du p/t          j        |          t          j        d                    k    V  gdS r   N)r   _get_tensor_rank).0r   nonempty_tensorss     r  	<genexpr>zcat.<locals>.<genexpr>3  s        
 	 	()9!)<==E 	A+A..$6	A+A..+,<Q,?@@A     r   r5  r6  )r   _unpack_list_is_constant_get_tensor_dim_sizer  rX  allnoderemoveAllInputsaddInputr%  )r)  tensor_listrB   tensorsr   r  s        @r  r+   r+     sV    *;77G  # #'** 	?3Wq4
 4
 	 """"  1$$$$    
 "        &&((( ' '##A&&&&*;77G14/7///3///r   zaten::stackc                j      fdt          j        |          D             }  j        dg|R diS )Nc                >    g | ]}t          j        |g          S r!  r   _unsqueeze_helper)r  r   rB   r)  s     r  
<listcomp>zstack.<locals>.<listcomp>E  s:        	)!Q66  r   r5  r6  )r   r  r%  )r)  r  rB   
unsqueezeds   ` ` r  r   r   B  s`         -k::  J 142:222c222r   z
aten::listc                    |S r  r!  r  s     r  _listr  L      Kr   zaten::mmc                    |                      dt          j        dg                    }|                      d|||dd          S )Nr`  rF  ra  Gemm        r]  beta_falpha_fr%  rc  r   )r)  r>  rB  Cs       r  r   r   Q  sC     	
Zqc!2!233A44eQsC4@@@r   z	aten::bmmc                0    |                      d||          S NMatMulr/  rU  s      r  r'   r'   Y      44$&&&r   zaten::matmulc                0    |                      d||          S r  r/  rU  s      r  r   r   ^  r  r   zaten::addmmr   c           
        d }t          j        |          }t          j        |          }t          j        |          }	||}n	||}n|	|	}t          j        |          }
t          j        |          }d }|7 ||
d          s ||d          r|                     d||          }|}t          j        |          }t          j        |          }|dk    rT|                     dt          j        ||                                                    }|                     d||          }|dk    rf|                     dt          j        t          j        |          |                                                    }|                     d||          }|                     d	||          S |                     d
|||t          j        |          t          j        |                    S )Nc                    | d uo| |k    S r  r!  )r[  us     r  is_not_none_norzaddmm.<locals>.is_not_none_nort  s    }'a'r      r  rF  r`  r  ra  rG  rD  r  r  )r   _try_get_scalar_typer  r%  rK  rc  r   r  )r)  r>  mat1mat2betarN  r~  self_scalar_typemat1_scalar_typemat2_scalar_type	mat1_rank	mat2_rankr  res1res2s                  r  r   r   c  s    K&;DAA&;DAA&;DAA#&		%&		%&066I066I( ( ( 	1%% )8A)F)F  ttHdD))'..&t,,A::DDELk>O>O>Q>Q$R$R$R   E 44tU++D19944#+D119J9J9L9L     D 44tT**DttE4&&&44&t,,'..    r   z	aten::negc                .    |                      d|          S )NNegr/  r  s     r  r   r         44tr   z
aten::sqrtc                ~   t           j                            |t           j        j                  t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        hv r'| 	                    d|t          j        j                  }| 	                    d|          S )Nrq  rr  Sqrt)r
   rw  rx  ry  UINT8INT8INT16INTrv  r%  rt  ru  r{  r  s     r  r   r     s     ++k'1  	!'!&!'!%!'
  ttFDw'B'HtII44r   zaten::rsqrtc                    |                      dt          j        t          j        d          |          t          | |                    S )Nrp  rF  )r%  r   _if_scalar_type_asrc  r   r   r  s     r  r   r     s=    441%*Q--FFQPT  r   z
aten::tanhg      ?   )scale
zero_pointc                .    |                      d|          S )NTanhr/  r  s     r  r   r     s     44r   z	aten::sinc                .    |                      d|          S )NSinr/  r  s     r  r   r     r  r   z	aten::cosc                .    |                      d|          S )NCosr/  r  s     r  r=   r=     r  r   z	aten::tanc                .    |                      d|          S )NTanr/  r  s     r  r   r     r  r   z
aten::asinc                .    |                      d|          S )NAsinr/  r  s     r  r   r         44r   z
aten::acosc                .    |                      d|          S )NAcosr/  r  s     r  r   r     r  r   z
aten::atanc                .    |                      d|          S )NAtanr/  r  s     r  r    r      r  r   zaten::atan2c           
     (   |                      d||          }|                      d|          }|                      dt          j        d                    }|                      dt          j        t          j                            }|                      d||          }|                      d||                      d||          |                      d	||                    }|                      d
||          }	|                      d|	||          }
|
S )Nrp  r  r`  r   ra  GreaterWhererD  rP  Less)r%  rc  r   mathpi)r)  r>  rB  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TW(=(=t>>H)*iz)J)J&DD*	UD(##	UD(##	  #$$$vuj"A"ATT'68MtTTFMr   zaten::sigmoidg      p?c                .    |                      d|          S )a  Converts the corresponding PyTorch function into ONNX operators.

    It is not meant to be called directly by a user.

    Args:
        g (jit_utils.GraphContext): Graph context.
        self (Tensor): the input tensor.
    Returns:
        ONNX operator
    Sigmoidr/  r  s     r  r   r     s     44	4   r   z
aten::signc                .    |                      d|          S )NSignr/  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 |                     d||||          S )NrF  r   Slice)axes_istarts_iends_i)rX  r   	INT64_MAXr%  )r)  r1  axesstartsendss        r  _slicer    sn    v;;#d))####
6{{aF1INNtAw*:N/N/N44tfT4JJJr   z	aten::sum	ReduceSumsum)decoratez
aten::mean
ReduceMeanmeanz
aten::prod
ReduceProdprodF)allow_multi_dim_supportonnx_opr  boolc                .    t          j        | ||          S r  )r   _reduce_with_dtype_helper)r  r  r  s      r  _reduce_with_dtyper    s!      4.  r   zaten::cumsumnonec                4    t          j        ddd|           d S )Nr@   r  rE  r   _onnx_opset_unsupported)r)  r1  rB   r  s       r  r@   r@   %  s!     +HaUCCCCCr   zaten::_sample_dirichletc                ,    t          j        d|          S )N_sample_dirichletr   _onnx_unsupportedr)  r>  	generators      r  r  r  +  s    ,-@$GGGr   zaten::_standard_gammac                ,    t          j        d|          S )N_standard_gammar  r  s      r  r  r  0  s    ,->EEEr   zaten::tc                    t          j        |          }||dk     r|                     d|          S |                     d|d          S )Nr  Identity	Transpose)rF  r   perm_i)r   r  r%  )r)  r>  ranks      r  r   r   5  sM    +D11D|taxx ttJ%%%44T&4111r   zaten::numpy_Tc                    t          j        |          }|J t          t          t	          d|                              }|                     d||          S Nr   r"  r#  )r   r  r8  reversedranger%  )r)  r1  ndimperms       r  r   r   @  sU     +E22Dq$(())D44U44000r   zaten::expandc           
        t          j        |d          }t          j        |          s*|                     dt	          j        |                    }nat          j        |          rMt          j        | t          | |d          |                     dt	          j	        dg                              }t          j        j        }t          | ||          }t          | ||                     dt	          j	        d                              }t          | |                     d||          ||          }|                     d||          S )zXImplement the expand function for a pytorch tensor in ONNX according to specified `size`isr`  ra  r   r  Expandr   _maybe_get_constrH  r%  rc  
LongTensor_is_packed_listr<  r   r   r
   rw  rv  r   r   r  )r)  r>  r   implicitr  r   neg_oness          r  rO   rO   I  s#    +D$77D$T** 
ttJ(8(>(>t??		(	.	. 
 .uQa  !$$z5<;M;M$"N"N
 
 %+EQe$$D1dADDU\"5E5EDFFGGHADD$114>>D44$%%%r   zaten::broadcast_toc           
        t          j        |d          }t          j        |          s*|                     dt	          j        |                    }nat          j        |          rMt          j        | t          | |d          |                     dt	          j	        dg                              }t          j        j        }t          | ||          }t          | ||                     dt	          j	        d                              }t          | |                     d||          ||          }|                     d||          S )Nr-  r`  ra  r   r.  r  r/  r0  )r)  r>  r   r  r   r5  s         r  r)   r)   ^  s#    +D$77D$T** 
ttJ(8(>(>t??		(	.	. 
 .uQa  !$$z5<;M;M$"N"N
 
 %+EQe$$D1dADDU\"5E5EDFFGGHADD$114>>D44$%%%r   zaten::expand_asc                   t          j        |d          }t          |t          j                  r|j        }|                    t          j                  }g }t          |	                                          D ]}t          j
        |                    |                              |                              |          |          rT|                    |           |                     d|                    |d                              |                    }|                     d|          }|                     d||          S )Nr   r`  T)keepdimra  r.  r/  )r   r1  r7  rc  Tensorr  r   r  r)  rB   equalr  r  rN   r  r%  )r)  r>  rB  self_t	orig_typedimsdr9  s           r  rN   rN   r  s    -dC88F&%,'' 	L	5<((vzz||$$ 	 	A{6;;q>>33A66@@HH&QQ AttD$(G(G(J(J9(U(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           |                     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   rm  warningswarnr%  )r)  weightindicespadding_idxscale_grad_by_freqsparses         r  rH   rH     s{      
g5 
'N
 
 	

 aG3f	
 	
 	
 44&'***r   zaten::embedding_bagc
                |    t          j        |          st          j        d          S t          j        d|          S )Nz%embedding_bag with per_sample_weightsrG   )r   _is_noner  )
r)  embedding_matrixrF  offsetsrH  moderI  per_sample_weightsinclude_last_offsetrG  s
             r  rG   rG     sF     #$677 
03
 
 	
 ,_>NOOOr   z
aten::size)quantize_outputc                >   ||                      d|          S t          j        |d          dk     rWt          j        |          }|At          j        |d          |z   }|                      dt	          j        |                    }t          j        | ||          S )Nr.  r  r   r`  ra  )r%  r   r1  r  rc  r   _size_helperr)  r>  rB   r%  s       r  r   r     s     {ttGT"""'S11A55/55!23<<tCC$$z5<+<+<$==C'4555r   zaten::transposec                    ||k    r|S t          j        |          }|Kt          t          |                    }||         ||         c||<   ||<   |                     d||          S t          j        d|          )Nr"  r#  zAUnsupported: ONNX export of transpose for tensor of unknown rank.)r   r  r8  r)  r%  r   rm  )r)  r>  dim0dim1r%  r  s         r  r   r     s     t|| +D11DE$KK  !%dT$ZT
DJttKdt333'O
 
 	
r   zaten::permuter-  c           	         |t          t          dt          |                              k    r|S |                     d||          S r'  )r8  r)  rX  r%  )r)  r>  r=  s      r  r   r     sD     tE!SYY''((((44T$4///r   z
aten::viewc                $    t          | ||          S r  )r   )r)  r>  r   s      r  r  r    s     1dD!!!r   zaten::view_asc                P    |                      d|          }t          | ||          S r-  r@  rA  s       r  r  r    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|                    |           |                     d||||          S )	Nr  r  rE  'Dynamic number of outputs not supportedunknown dimension sizerF  Splitsplit_ir6  outputs)r   rJ  r  _unimplementedr  r%  )	r)  r>  chunksrB   _outputsr   
split_sizesplitsleftovers	            r  r  r    s     ?Ar#Ld
 
 	
 /c::D|-4d
 
 	
 -!#.J\TZ/0Fj H  h44vc84LLLr   zaten::splitc                   t          j        ||          st          j        dddd|          S t          j        |                                d          }|                                dk    rt          | ||||          S t          j        |dd          }t          j        ||          }| |||z  }nt          j        dddd	|          S |g||z  z  }||z  }	|	r|	                    |	           | 
                    d
||||          S )Nr   r  rE  r\  rf  r   r  re  z$Unknown dimension size not supportedr^  r_  )r   _is_split_staticrJ  	_node_getr  rB   r   
_get_constr  r  r%  )
r)  r>  split_size_or_sizesrB   rd  	split_valre  r   rf  rg  s
             r  r   r      s8    +,?JJ 
?QEt
 
 	
  )*=*B*B*D*DgNNI}}4)<c8LLL +,?lSSJ/c::D|(DD"CB F   \TZ/0Fj H  h44vc84LLLr   zaten::unsafe_splitc                (    t          | ||||          S r  )r   )r)  r>  rl  rB   rd  s        r  r  r    s     D-sH===r   zaten::split_with_sizesc                    t          j        ||          st          j        dddd|          S |                     d||||          S )Nr   r  rE  r\  r^  r_  )r   ri  rJ  r%  r)  r>  split_sizesrB   rd  s        r  r   r   "  sY     +KBB 
?2'PRV
 
 	
 44{34QQQr   zaten::unsafe_split_with_sizesc                (    t          | ||||          S r  )r   rp  s        r  r  r  ,  s     At[#x@@@r   zaten::unbindc                     |t          j        dddd|          S                      d|dg|z  |          }|dk    r|gn|} fd|D             }|S )	Nr   r  rE  r\  r^  rF  r_  c                >    g | ]}t          j        |g          S r!  )r   _squeeze_helper)r  r}  rB   r)  s     r  r  zunbind.<locals>.<listcomp>=  s7       ;>'366  r   )r   rJ  r%  )r)  r>  rB   rd  ra  squeezed_outputss   ` `   r  r   r   3  s     ?aF
 
 	
 dd7D1#.hdWWG#q==wiigG    BI   r   zaten::selectc                &   t          j        |          }t          j        |          sQ|dk     rK|dk    rt          j        }n|dz   }t          j        | ||g|g|g          }t          j        | ||g          S |                     d|||          S )zImplement the select functionality for a pytorch tensor in ONNX.

    Selects elements from the input tensor along the specified `dim` dimension based on the `index` tensor.
    r   r.  rF  r  r  r  rA  r6  )r   rL  rH  r   r  _slice_helperru  r%  )r)  r>  rB   rj   	end_index
slice_nodes         r  r   r   C  s     -e44E%e,, 75199B;;",II	I$2t3%yk
 
 

 .q*seDDD ttHdE#t666r   zaten::squarec                0    |                      d||          S NrG  r/  r  s     r  r   r   Z  s    44tT"""r   zaten::squeezec                d   ||                      d|          S t          j        |dd          }|dk     rxt          j        |          }|Lt	          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        ||          }|^t	          j        dt          |          z   dz   dz   t          |          z   dz   dz   dz   dz              t          j	        | ||g          S |dk    rHt	          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  rB   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  rF  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.)
r%  r   rk  r  rC  rD  r  rb  r  ru  )r)  r>  rB   squeeze_dimr%  dim_sizes         r  r   r   _  ss   
{ttIt$$$!,S#u==KQ/55M9k""#AB == *	*
 kD())* ;; XX	 	 	 4KK"1BD   3D+FFHC+ HH +	
  gg ^^ &&
	
 
	
 
	
 .q$}MMMM!||C+ 66 (mm	
 "" hh >> ""
	
 
	
 
	
 M?
k

	
	 l	l   *1dK=IIIIr   zaten::preluc                   t          j        |          }t          j        |          }t          |          }|a|dk    r5t          j        | |t          t          d|dz
                                }n&|dk    r |dgk    rt          j        | |dg          }d}||||k    sJ d| d|             |                     d||          S )Nr  rF  r   z)rank(x) should be >= rank(slope) but got z < PRelu)	r   r  _get_tensor_sizesrX  r  r8  r)  ru  r%  )r)  r>  rE  	self_rankweight_sizesweight_ranks         r  r   r     s    066I"4V<<Ll##Kq==$664aQ 7 788 FF !^^ 3 3$4QDDFK!8$$$RyRR[RR %$$44v&&&r   z
aten::siluc                X    |                      d||                      d|                    S )NrG  r  r/  r0  s     r  r   r     s&    44uadd9e44555r   z
aten::mishc                    |                      d||                      d|                      d|                              S )NrG  r  Softplusr/  r0  s     r  r   r     s4    44uadd6144
E+B+BCCDDDr   z
aten::reluc                2    t          j        | d|d          S )NRelu   opset_beforer   _op_with_optional_float_castr0  s     r  r   r     s'     7	65r   r   zaten::relu6c                &    t          | |dd          S )Nr      )r0   r0  s     r  r   r     s     E1a   r   z
aten::ceilc                .    |                      d|          S )NCeilr/  r0  s     r  r-   r-     s    44r   zaten::floorc                .    |                      d|          S )Nr  r/  r0  s     r  rT   rT     r3  r   z	aten::lenc           
         t          | ||                     dt          j        dg                              }t	          j        | |dg          S Nr`  r   ra  )r   r%  rc  r2  r   ru  )r)  r>  sz_0s      r  _lenr    sG    4j%2BA32G2GHHIID*1dQC888r   zaten::thresholdc                    t          j        |          dk    rt          j        dd|          S t          j        |          dk    rt          j        dd|          S |                     d|          S )Nr   r   znon-zero thresholdznon-zero valuer  )r   rK  rb  r%  )r)  r>  r   rf  s       r  r   r     sq     y))Q..-k;OQUVVVu%%**-k;KTRRR44r   zaten::leaky_relur1  _C.Valuenegative_sloper  inplacec                2    |                      d||          S )N	LeakyRelur  r/  )r)  r1  r  r  s       r  rs   rs     s     44UN4;;;r   z	aten::gluc                    t          j        ||          }||dz  dk    sJ |                     d||d          \  }}|                     d||                     d|                    S )Nr  r   r^  )r6  ra  rG  r  )r   r  r%  )r)  r1  rB   r  firstseconds         r  r]   r]     sr     3E3??H!|q    DD%QD??ME644uadd9f55666r   zaten::softmaxc           
     H   t          j        |          }||dk     r||z   }||dz   k    }|rPt          t          |                    }|d         ||         c||<   |d<   |                     d||          }|dz
  }|                     d||          }|r||                                                                dk    rRt          j        |d	d
          }|                     d|t          j	        |          
                                          }|r|                     d||          }|S |                     d||                     d||gd                    }|                     d|          }	t          j        | |	|g          }
|                     d|	|
          }|r||                                                                dk    rRt          j        |d	d
          }|                     d|t          j	        |          
                                          }|S )Nr   rF  r.  r"  r#  Softmaxry  r$  r  r  rq  rr  rP  	ReduceMaxr  
keepdims_iExpr  rp  )r   r  r8  r)  r%  r  kindrk  r
   rw  r|  _reducesum_helper)r)  r1  rB   r  	input_dimis_transpose_requiredr  r   parsed_dtyperM   r  s              r  r   r      s+   .  077I77c/C )S1W 4  	 i(())D"&r(DIDItBxDDeDD99Ea-C$$y%$44 	UZZ\\&&((,<<<*5eS'JJLdd .|<<FFHH   G ! 	>dd;d==G DDqttKuQRtSSTTE
$$ue

C

+AsC5
A
A
ACdd5#s##G 
""$$(888&1%gFF$$G+";L"I"I"S"S"U"U  
 
 Nr   zaten::softplusc                    t          j        |d          }|dk    r@|                     d|                     d|                     d||                    |          S |                     d|          S )Nr\  rF  rp  r  rG  )r   r1  r%  )r)  r>  r  r   
beta_consts        r  r   r   @  se     1$<<JQttE144
ADDd,C,CDDdKKK44
D!!!r   zaten::get_pool_ceil_paddingc                4   t          j        |           }||t                     d          nd t          d D                       rt          j        dd|           S fdt          dt                              D             fdt          dt                              D             fdt          dt                              D             fdt          dt                              D             S )	Nc              3     K   | ]}|d u V  	d S r  r!  r  r  s     r  r  z(get_pool_ceil_padding.<locals>.<genexpr>M  s&      11!t)111111r   r\   input size not accessiblec                    g | ]W}t          t          j        |         d |         z  z   |         z
  t          |                   z                      dz   XS r  rF  )intr  r-   r  )r  r  rB   kernel_sizepaddingstrides     r  r  z)get_pool_ceil_padding.<locals>.<listcomp>Q  sq         	DIs1vGAJ.Q?5PQCSCSSTTUU
	  r   r   c                    g | ]<}|         d z
  |         z  |         |         z   k    r|         d z
  n|         =S rF  r!  )r  r  ceiled_output_dimrB   r  r  s     r  r  z)get_pool_ceil_padding.<locals>.<listcomp>W  sm         $A&*fQi7SVgaj=PQQ a 1$$"1%	  r   c                    g | ]E}|         d k    rdn4|         |         d|         z  z   |         d z
  |         z  d z   z
  z
  FS rF  r   r  r!  )r  r  r  rB   r  r  r  s     r  r  z)get_pool_ceil_padding.<locals>.<listcomp>_  s         q	Q A AF'!*n%)!,q0F1I=AC  r   c                    g | ]w}|         d |         z  z   |         k    rB|         |         dz
  k     rt          |                   n,t          |         dz
            nt          |                   xS r  r  )r  r  r  r  padding_ceils     r  r  z)get_pool_ceil_padding.<locals>.<listcomp>o  s         a1wqz>1{1~FF  ?[^a%777 LO$$$Q!+,,, \!_%%  r   )r   r  rX  anyrb  r)  )r1  r  r  r  sizesr  rB   r  s    ``` @@@r  r\   r\   H  s    -e44E$)$5%W
 
 4C
{c11S11111{-#%@%
 
 	
       q#g,,''         q#/0011          q#g,,''  L       q#l++,,  L r   zaten::max_pool1d
max_pool1drF  )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           fd                        }|S )NTFr[  r-  r  c                $   t           |                    dhk    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|\  }	}
|                     d|dd t                    D             d	 t                    D             
          \  }}t          j        | |d t                    D             t           d                    t           d                              }t          | |
|          }
|	|
fS  | j        d|fddi|}	|	S )NrF  dilationc              3  &   K   | ]\  }}||z   V  d S r  r!  r  ar?  s      r  r  z1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s*      %U%UAa!e%U%U%U%U%U%Ur   r  )kernel_shape_ipads_i	strides_iMaxPoolra  c                    g | ]}d S r  r!  r  _s     r  r  z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>  s    888a888r   c                    g | ]}d S r  r!  r  s     r  r  z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>  s    3331333r   )ra  r  r  c                    g | ]}d |z   S )r  r!  r  s     r  r  z2_max_pool.<locals>.symbolic_fn.<locals>.<listcomp>  s    222a!e222r   r   rx  )setr   rb  tupler\   zipr%  r)  rz  r8  r   )r)  r1  r  r  r  r  	ceil_moder  kwargsrrF  r  flattened_indicesrh  r  ndimsr  tuple_fns                 r  symbolic_fnz_max_pool.<locals>.symbolic_fn  s    xx!!""qc))"1$
EJJJ 	! F))** 	"0VWUUL%U%U#lG:T:T%U%U%U U UUGGkG&h{33!&))
 
$  	iDDDVDDJAw#$44885<<88833eEll333 $( $ $ A   -!22U5\\222HHQKK((((1++&&  A !Wa((Gg:Y;;q;F;;AHr   r   quantized_args
parse_args)r  r  r  r  r  s   ```` r  	_max_poolr  ~  s{    8 #D%ueLLT4tSAA2 2 2 2 2 2 2 BA ML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          	 dd fd                        }|S )NTr[  r-  r  r  r1  r  r  Sequence[int]r  r  int | Sequence[int]r  r  count_include_padc           	        |s|}t          j        ||||          }t          |t                    sJ |}|r3t          j        | d|d|z   dz  ddd          }dt          |          z  }|r=t          ||||          }	|t          d	 t          |	|          D                       z   }n|dz  }|                     d
| |           |          |          }
|
S )NPad)r   r   r  constantr  rE  r  mode_svalue_fr  r   c              3  &   K   | ]\  }}||z   V  d S r  r!  r  s      r  r  z1_avg_pool.<locals>.symbolic_fn.<locals>.<genexpr>(  s;       8 8 1aA8 8 8 8 8 8r   AveragePool)r  r  r  )	r   _avgpool_helperr7  r  r  rX  r\   r  r%  )r)  r1  r  r  r  r  r  divisor_overrideadjusted_paddingr  outputr  r  s              r  r  z_avg_pool.<locals>.symbolic_fn  sN     	! F!1g{F4Dd
 
 '5)))))"  
	3#@ 7*a/!  E  $c'll2 	40VWUUL/% 8 8$'6F$G$G8 8 8 3 3    0!3#8K00hv&&#  
 
 r   r  )r1  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  s   `` r  	_avg_poolr    su    , #D))T4sCHH / / / / / / / IH *)/b r   zaten::adaptive_avg_pool1dadaptive_avg_pool1dr  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                T     t          j        dd           fd            }|S )NTFc                6   }	 t          j        d          n%# t          $ r t          j        d|          cY S w xY wdgt	                    z  k    rdk    r|                     d|          S t          j        |          }	 |dd          n# t          $ r d Y nw xY wt          d D                       rEdgt	                    z  k    r|                     d|          d fS t          j        
d	|          S fd
t          dt	                              D             }|dgt	          |          z  k    rEdgt	                    z  k    r|                     d|          d fS t          j        
d|          S fdt          dt	                              D             }dk    r1 	| |||dt	                    z  dt	                    z  d          S |                     | |           |                    }|S )Nr-  z4adaptive pooling, since output_size is not constant.rF  r  GlobalAveragePoolr  c              3     K   | ]}|d u V  	d S r  r!  r  s     r  r  z6_adaptive_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s&      55Aa4i555555r   GlobalMaxPoolr  c                2    g | ]}|         |         z  S r!  r!  r  r  rB   output_sizes     r  r  z7_adaptive_pool.<locals>.symbolic_fn.<locals>.<listcomp>  s&    CCC1s1vA&CCCr   r   z-output size that are not factor of input sizec                L    g | ] }t          |         |         z            !S r!  r  r  s     r  r  z7_adaptive_pool.<locals>.symbolic_fn.<locals>.<listcomp>  s.    FFFaSQ+a.())FFFr   r  r  r  F)r  r  )
r   
_parse_arg	Exceptionr  rX  r%  r  r  rb  r)  )r)  r1  r  output_size_valuer  r  kr  rB   fnr  r  types     `     @r  r  z#_adaptive_pool.<locals>.symbolic_fny  s    (	)4[$GGKK 	 	 	 #4F    	 1#K 0 0000T]5J5J44+U3331%88	)CC 	 	 	 CCC	 ;#5555555;qcC$4$4444ttOU33T99"115   DCCCCaS0B0BCCC1#C.  qcC$4$4444ttOU33T99"1EGX   GFFFF5CHH3E3EFFF92a1dSXXotc#hhNNNdE((1++RSUUs    ??

B B$#B$)r   r  )r  r  r  r  r  s   ```` r  _adaptive_poolr  9  sR    @ #D%00/ / / / / / / 10/b r   rB   r  c                    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  r.  )r8  rX  )rB   r   paddingss      r  _prepare_onnx_paddingsr    sW     CF||qcS1Ws3xx%788HB(26r6"22HOr   c                   t          j        | d          }t          j        |          r^t          j        |          rJt          j        |          }	 d |D             }n(# t
          $ r t          j        dddd|           cY S w xY w|S )Nr-  c                :    g | ]}t          j        |d d          S )r  r  )r   rk  )r  r[  s     r  r  z)_convert_padding_node.<locals>.<listcomp>  s4       BC*1c9==  r   r  r  rE  z)The sizes of the padding must be constant)r   r1  rH  r3  r  r  rJ  )r1  r  
input_lists      r  _convert_padding_noder"    s    .ud;;G )) o.Mg.V.V $1'::
		 GQ  GG  	 	 	 #Cq"I5    	 Ns   A   "BBzaten::constant_pad_ndc           	        d}	 t          j        |dd          }n(# t          $ r t          j        dddd|          cY S w xY wt	          |          }t          t          j        |          |          }t          j        | d||||d          S )	Nr  r\  rf  r  r  rE  z*The value for the padding must be constantr  )r   rk  r  rJ  r"  r  r  r  )r)  r1  r  rf  rN  r  s         r  r2   r2     s    D
*5#w?? 
 
 
 ?1bF
 
 	
 	
 	

 $G,,G%o&Fu&M&MwWWH7	5%uSU   s    "A A r   c                   t          |          }t          |          dz  dk    sJ t          |          dz  }|}t          |          D ]9}|d|z  dz             }|d|z  dz             }g }	|dk    r?t          j        | |d|z   g| gt
          j        g          }
|	                    |
           |dk     s|dk     rbt          j	        d|           }t          j	        d|            }t          j        | |d|z   g|g|g          }|	                    |           n|	                    |           |dk    r4t          j        | |d|z   gdg|g          }|	                    |            | j
        dg|	R dd|z   i};|S )Nr  r   rF  rx  r5  r6  )r"  rX  r)  r   rz  r   r  r  builtinsr   r%  )r)  r1  r   r  r*  curidxpad_rpad_lr  leftstartendmiddlerights                  r  _pad_circularr/    s   #C((Gw<<!q    w<<1D
CT{{ 9 9!c'A+'!c'A+'199"03a#gY%zAU@V  D NN4   199		LUF++ELUF++,C$2#gYwU  F NN6""""NN3199#13a#gYs%  E NN5!!!ad88g888q3w88Jr   zaten::reflection_pad1dzaten::reflection_pad2dzaten::reflection_pad3dc                    d}t          |          }t          t          j        |          |          }t          j        | d|||d          S )Nreflectr  rE  r  r  r  r"  r  r   r  r  r)  r1  r  rN  r  s        r  r   r     sW     D#G,,G%o&Fu&M&MwWWH7	5%B   r   zaten::replication_pad1dzaten::replication_pad2dzaten::replication_pad3dc                    d}t          |          }t          t          j        |          |          }t          j        | d|||d          S )Nedger  rE  r2  r3  r4  s        r  r   r     sW     D#G,,G%o&Fu&M&MwWWH7	5%B   r   z	aten::padrN  rf  c                   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| |          )Nrh  	replicater1  r  circularzUnrecognized padding mode )r   r  r   r   r2   r/  r   rm  )r)  r1  r   rN  rf  s        r  r   r   $  s     %dC00D{q%---			a,,,			q%e444			Qs+++'(KT(K(KUSSSr   zaten::upsample_nearest1dupsample_nearest1dnearestzaten::upsample_nearest2dupsample_nearest2d   zaten::upsample_nearest3dupsample_nearest3d   zaten::upsample_linear1dupsample_linear1drz   zaten::upsample_bilinear2dupsample_bilinear2dzaten::upsample_trilinear3dupsample_trilinear3dinterpolate_modec                      fd}|S )Nc                   t          j        | |          \  }}t          j                   t          j        |          }|rt          j        d|          S |t          j        | ||          }|                     d||          S )Nzalign_corners == TrueUpsampler  )r   _get_interpolate_attributes_interpolate_warningrL  rb  _interpolate_size_to_scalesr%  )	r)  r1  r  rZ  scalesalign_cornersrB   rC  r  s	         r  r  z!_interpolate.<locals>.symbolic_fnd  s     / K!
 !
 	,-=>>>'9-HH 	X"1$8OQVWWW>$@5+s F ttJv6FtGGGr   r!  )r  rB   rC  r  s   ``` r  _interpolaterM  9  s8    VH H H H H H H r   zaten::__interpolatec                l    t          j        | |||||          \  }}|                     d|||          S )NrF  rG  )r    _interpolate_get_scales_and_moder%  )	r)  r1  r   scale_factorrN  rL  recompute_scale_factor	antialiasrK  s	            r  __interpolaterS  u  sC     #C	5$dM LFD 44
E6$4777r   zaten::bitwise_notc                    t          j        |          st          j        d|          |                     d|          S NzOONNX export does NOT support exporting bitwise Not for non-boolean input valuesr  r   rT  r   rm  r%  r0  s     r  r%   r%     sH    #E** 
'+
 
 	

 44ur   zaten::bitwise_orc                    t          j        |          st          j        d|          t          j        |          st          j        d|          |                     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: OrrV  rU  s      r  r&   r&     s|    #D)) 
'3
 
 	

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

 44dE"""r   c                      fd}|S )Nc                J     t          j                    fd            }|S )Nc           	     x    t                      d          } |  || |d           || |d                    S )N_cast_F)r  )r)  r1  rB  to_cast_funcr  to_types       r  wrap_with_castzGwrap_logical_op_with_cast_to.<locals>.decorator.<locals>.wrap_with_cast  sJ    "99%7g%7%78L2aa66Qu8U8UVVVr   	functoolswraps)r  r_  r^  s   ` r  	decoratorz/wrap_logical_op_with_cast_to.<locals>.decorator  sE    				W 	W 	W 	W 	W 
		W r   r!  )r^  rc  s   ` r  r  r    s$         r   r  r   returnc                F     t          j                    fd            }|S )Nc                F    |                      d | ||                    S )Nr  r/  )r)  r1  rB  r  s      r  wrap_with_notz4wrap_logical_op_with_negation.<locals>.wrap_with_not  s%    ttE445%00111r   r`  )r  rg  s   ` r  r  r    s9    _T2 2 2 2 2 r   zaten::__not_c                    t          j        |          st          j        d|          |                     d|          S rU  rV  r  s     r  __not_ri    sH    #D)) 
'+
 
 	

 44tr   zaten::eqc           	     ,   t          |                                t          j                  rat          |                                t          j                  r5|                     dt          j        dt
          j                            S |                                }|                                }|	                                |	                                cxk    rdk    rn n|
                    d          |
                    d          cxk    rdk    rbn n_|                     dt          j        |                    d          |                    d          k    t
          j                            S |                     d||          S )	Nr`  Tr  ra  onnx::Constantrf  rh  r  )r7  r  r   DeviceObjTyper%  rc  r   r  r  r  kindOfrh  )r)  r>  rB  	self_node
other_nodes        r  rK   rK     sm    $))++r/00 NZ

b&6 6 N
 ttJT(L(L(LtMMM		IJ~~:??,,@@@@0@@@@@@G$$
(9(9'(B(BIIIIcIIIII 44KK((JLL,A,AA*       44u%%%r   zaten::nec                $    t          | ||          S r  )rK   rU  s      r  r   r     s     aur   zaten::gtc                $    t          | ||          S r  _gt_implr)  r1  rB  s      r  r_   r_          Aue$$$r   c                   t          j        |          rbt          j        |          rN|                     d|t          j        j                  }|                     d|t          j        j                  }|                     d||          S )Nrq  rr  r  r   rT  r%  rt  ru  INT32rt  s      r  rs  rs    sy    && L?+CE+J+J LVU)D)JKKVU)D)JKK44	5%(((r   zaten::ltc                $    t          | ||          S r  _lt_implrt  s      r  r   r     ru  r   c                   t          j        |          rbt          j        |          rN|                     d|t          j        j                  }|                     d|t          j        j                  }|                     d||          S )Nrq  rr  r  rw  rt  s      r  r{  r{    sy    && L?+CE+J+J LVU)D)JKKVU)D)JKK44u%%%r   zaten::gec                $    t          | ||          S r  rz  rt  s      r  rZ   rZ          Aue$$$r   zaten::lec                $    t          | ||          S r  rr  rt  s      r  rr   rr     r~  r   zaten::__and_c                    t          j        |          st          j        d|          t          j        |          st          j        d|          |                     d||          S )NzOONNX export does NOT support exporting bitwise AND for non-boolean input valuesrS  rV  rt  s      r  __and_r    |    #E** 
'+
 
 	

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

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

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

 44eU###r   zaten::__xor_c                    t          j        |          st          j        d|          t          j        |          st          j        d|          |                     d||          S )NzOONNX export does NOT support exporting bitwise XOR for non-boolean input valuesr  rV  rt  s      r  __xor_r  -  r  r   zaten::logical_andBoolc                0    |                      d||          S )NrS  r/  rt  s      r  r   r   >       44ue$$$r   zaten::logical_orc                0    |                      d||          S )NrX  r/  rt  s      r  r   r   D  s     44eU###r   zaten::logical_xorc                0    |                      d||          S )Nr  r/  rt  s      r  r   r   J  r  r   zaten::logical_notc                x    |                      d|                      d|t          j        j                            S )Nr  rq  rr  r%  rt  ru  BOOLr0  s     r  r   r   P  s.    44qttFE0K0PtQQRRRr   zaten::__rshift_c                   t           j                            |          }t           j                            |t           j        j                  |k    r*|                     d||                                          }|                     dt          j        dt          j                            }t          j
        |          s'|                     d|t          j        j                  }|                     d||          }|                     d||                                          }|                     d||          }|S )	Nrq  rr  r`  r  r  ra  Powrp  r
   rw  rx  ry  r%  r|  rc  r   float32r   rz  rt  ru  r{  )r)  r>  rB  r  twotwo_powrshifts          r  	__rshift_r  U  *    #0;;DAA!,,UK4M4WXX	 	 !++--  
 
 $$z5<#G#G#G$
H
HC!$'' LVU)D)JKKdd5#u%%Gdd''))   G
 TT%w''FMr   zaten::__lshift_c                   t           j                            |          }t           j                            |t           j        j                  |k    r*|                     d||                                          }|                     dt          j        dt          j                            }t          j
        |          s'|                     d|t          j        j                  }|                     d||          }|                     d||                                          }|                     d||          }|S )	Nrq  rr  r`  r  r  ra  r  rG  r  )r)  r>  rB  r  r  r  lshifts          r  	__lshift_r  r  r  r   zaten::wherec           
     H   t          j        |          s'|                     d|t          j        j                  }|Nt          | |          }t          j        | ||                     dt          j	        d                    |          S |                     d|||          S )Nrq  rr  r`  rF  ra  r  )
r   rT  r%  rt  ru  r  r   _unbind_helperrc  r   )r)  	conditionr>  rB  rd  s        r  r  r    s     #I.. SDD1L1QDRR	|Ay))	-y!$$z5<??$CCX
 
 	
 44D%000r   zaten::log_softmaxc                   t          j        |          }|t          j        dd          S |dk     r||z   }||dz   k    }|rPt          t	          |                    }|d         ||         c||<   |d<   |                     d||          }|dz
  }|                     d||	          }|r||                                                                d
k    rRt          j        |dd          }|                     d|t          j
        |                                                    }|r|                     d||          }|S )NrB   fONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.r   rF  r.  r"  r#  
LogSoftmaxry  r$  r  r  rq  rr  )r   r  rb  r8  r)  r%  r  r  rk  r
   rw  r|  )	r)  r1  rB   r  r  r  r  	return_opr  s	            r  r}   r}     sb     077I-7
 
 	

 Qww#o%q0 E)$$%%"2hS	S	48[%55!m\555I 
""$$(888&1%gFFDDIK$=l$K$K$U$U$W$W  
 
	  >DDiD==	r   zaten::_log_softmaxc                    |rit           j                            |t           j        j                  t           j        j        k    r'|                     d|t          j        j                  }t          | ||          S Nrq  rr  )
r
   rw  rx  ry  HALFr%  rt  ru  r{  r}   )r)  r1  rB   half_to_floats       r  _log_softmaxr    st     	L%00;,6
 
 $)* *
 VU)D)JKKq%%%%r   zaten::_convolutionc                   t          j        |          }	 |dd          }n# t          $ r d }Y nw xY w|t          d |D                       rt	          j        d|          ||g}t          j        |          s-t          j        |          dk    r|                    |           |dd          |||z   ||	d}t          d |D                       r+|sJ t          |          t          |          k    sJ ||d<    | j
        |rdnd	g|R i |}t          j        |          s/t          j        |          dk    r| 
                    d
||          S |S )Nr  c              3     K   | ]}|d u V  	d S r  r!  r  s     r  r  z_convolution.<locals>.<genexpr>  &      "C"C19"C"C"C"C"C"Cr   DUnsupported: ONNX export of convolution for kernel of unknown shape.rF  )r  r  r  dilations_igroup_ic              3  "   K   | ]
}|d k    V  dS r  r!  )r  os     r  r  z_convolution.<locals>.<genexpr> 	  s&      
*
*a16
*
*
*
*
*
*r   output_padding_iConvTransposeConvrD  )r   r  r  r  r   rm  rK  r  r  rX  r%  )r)  r1  rE  biasr  r  r  
transposedoutput_paddinggroups	benchmarkdeterministiccudnn_enabled
allow_tf32weight_sizekernel_shaperZ  r  r*  s                      r  _convolutionr    s   ( "3F;;K"122    
 s"C"Cl"C"C"CCC'R
 
 	

 6?D $T**,T22a77D &abb/ G# F 
*
*>
*
*
*** 4 6{{c.111111%3!"
6__HHHHHHA $T**,T22a77ttE1d###   
! 00zaten::_convolution_modec                >   t          j        |          }	 |dd          }	n# t          $ r d }	Y nw xY w|	t          d |	D                       rt	          j        d|          ||g}
t          j        |          s-t          j        |          dk    r|
                    |           |dk    rd}n|dk    rd}|dd          ||||d	} | j	        d
g|
R i |}t          j        |          s/t          j        |          dk    r| 	                    d||          S |S )Nr  c              3     K   | ]}|d u V  	d S r  r!  r  s     r  r  z$_convolution_mode.<locals>.<genexpr>/	  r  r   r  rF  validVALIDsame
SAME_UPPER)r  r  
auto_pad_sr  r  r  rD  )
r   r  r  r  r   rm  rK  r  r  r%  )r)  r1  rE  r  r  r  r  r  r  r  rZ  r  r*  s                r  _convolution_moder  	  s   ( "3F;;K"122    
 s"C"Cl"C"C"CCC'R
 
 	

 6?D $T**,T22a77D'	F		%abb/ F 	V%d%%%f%%A $T**,T22a77ttE1d###r  zaten::convolutionc
                :    t          | |||||||||	d d d d           S r  r  )
r)  r1  rE  r  r  r  r  r  r  r  s
             r  r<   r<   T	  s@     	  r   zaten::conv1dc                    t          j        |d          }|dv rt          | |||||||          S t          j        |d          }t          | ||||||dd|d d d d           S Nrh  )r  r  r-  Fr!  r   r  r  r  	r)  r1  rE  r  r  r  r  r  str_paddings	            r  r8   r8   t	      
 ",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  r9   r9   	  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	                :    t          | ||||||d||d d d d           S NTr  	r)  r1  rE  r  r  r  r  r  r  s	            r  r5   r5   	  @     	  r   zaten::conv_transpose2dc	                :    t          | ||||||d||d d d d           S r  r  r  s	            r  r6   r6   
  r  r   zaten::conv_transpose3dc	                :    t          | ||||||d||d d d d           S r  r  r  s	            r  r7   r7   !
  r  r   zaten::batch_normc
                   t          j        |d           t          j                    rAt          j        |||||g          s(t
          j        dk     rt          j        dddd|          S t          j        | |||||          \  }}}}| 	                    d||||||d|z
  |sdnd	  	        }
|s|
S |
\  }}}}}|
                    |                                           |
                    |                                           |                    d	|                                z              |                    d	|                                z              |S )
Nr#      BatchNormalizationr  zaAll input tensors must have the same `dtype`. Turn off Autocast or export using opset version 15.rF  r?  )	epsilon_f
momentum_fra  zbatch_norm_dead_output-)r   check_training_moderc  is_autocast_enabledargs_have_same_dtyper   export_onnx_opset_versionrJ  _batchnorm_helperr%  r&  r  setDebugName	debugName)r)  r1  rE  r  running_meanrunning_vartrainingmomentumepsr  r}  resnew_running_meannew_running_var
saved_mean	saved_vars                   r  r#   r#   @
  s    ',??? 	!##
4FD,<
 


 -22? C
 
 	
 />.O	5&$k/ /+FD, $$x<!(q  
 
C  
HKE
I  !2!2!4!4555 0 0 2 2333 9J<P<P<R<R RSSS89;N;N;P;PPQQQ
r   zaten::native_layer_normnormalized_shaper  rE  r  r  #tuple[_C.Value, _C.Value, _C.Value]c                |   d t          t          |          dd          D             }t          j        | d          }t          j        | |          }| j        dk     r|                     d||          }	nJ|                     d||                     dt          j        |t          j        	          
                    }	t          | ||	          }
t          j                            |
          t          j        j        k    }|r[t          j                            |          }|                     d|
t          j        |                                                    }
| j        dk     r(|                     dt          | |
|          |          }nY|                     dt          | |
|          |                     dt          j        |t          j        	          
                    }t!          | |                     d||                    }|                     d|
|          }|r[t          j                            |          }|                     d|t          j        |                                                    }|%t          j        |          st%          | ||          }|%t          j        |          st'          | ||          }|rS|                     d|t          j        |                                                    }|                     d|          }nt)          | |          }||	|fS )Nc                    g | ]}| S r!  r!  r  s     r  r  z%native_layer_norm.<locals>.<listcomp>
  s    <<<1QB<<<r   r   r.         @   r
  r  r`  r  ra  rq  rr  rD  rp  r  )r)  rX  r   _generate_wrapped_numberr  r%  rc  r   longr   r
   rw  rx  r  r|  r   r   rK  r   r   r   )r)  r1  r  rE  r  r  r  two_csteps_cstr  	numeratoris_type_half	eps_dtypevariancedenominator
normalizedinput_dtyperdenominators                     r  r   r   y
  s    =<c"233Q;;<<<D6q#>>G6q#>>Gw||ttL%t55ttDDU\$ej%I%I%IDJJ
 
 Aud##I 	!,,Y77$)	*   
-88AA	DDIK$=i$H$H$R$R$T$T  
 
	
 	w||44c!Y&@&@4NN449g&&DDU\$ej%I%I%IDJJ
 
 q!$$uh8899KeY44J  
!/::5AATTJ[%>{%K%K%U%U%W%W  
 

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

  2dd*;77AACC  
 

 ttL+66!![11t\))r   zaten::layer_normcudnn_enablec                6    t          | |||||          \  }}}|S r  )r   )	r)  r1  r  rE  r  r  r  r  r  s	            r  rq   rq   
  s*     )E3CVTSVWWJ1r   zaten::instance_normuse_input_statsr  r   r  c
                   t          j        |d           t          j        |d          }
|t          j        |          rw|
t	          j        d|          t          j        dg|
z  t          j	        
                    |                                                    }|                     d|          }|t          j        |          rw|
t	          j        d|          t          j        dg|
z  t          j	        
                    |                                                    }|                     d|          }|*t          j        |          s|t          j        |          r|                     d	||||
          S t          j        |          }|                                }|d         }|t	          j        d|          |d         }d|d<   ||z  |d<   t          | ||                     dt          j        |gt          j                                      }t          | ||                     dt          j        |gt          j                                      }t          | ||                     dt          j        |gt          j                                      }t          | ||                     dt          j        |gt          j                                      }|                     d||                     dt          j        |                              }t%          | |||||||||	
  
        }t'          | ||                     dt          j        |                              S )Nrk   rF  zCUnsupported: ONNX export of instance_norm for unknown channel size.r]  r  r`  ra  r  InstanceNormalizationr  r   zJUnsupported: ONNX export of instance_norm training for unknown batch size.Reshape)r   r  r  rK  r   rm  rc  r   r
   rw  rx  r  r%  r  copyr   r  r2  r#   r  )r)  r1  rE  r  r  r  r   r  r  r  channel_sizeweight_value
bias_value
input_sizeinput_size_reshaper*  cweight_bias_running_mean_running_var_input_reshapedr}  s                          r  rk   rk   
  s    'III"7qAAL~1&99~+U   |EL +66u==CCEE
 
 
 j,77|/55|+U   \EL +66u==CCEE
 
 

 ttJ
t33#L11 	#K00  tt+UFDCtPPP$6u==
 (__..qM9+  
 qM !1 !A1vqttJaS0T0T0TtUU
 
 tQTT*elA3ek.R.R.RTSS
 
 DDU\1#U[%I%I%IDJJ
 

 DDU\1#U[%I%I%IDJJ
 

 DDU%56H%I%IDJJ
 

 
 
 AsADDU\*5M5MDNNOOOr   zaten::unfoldc                
    t          j                  }	 |         }n# t          $ r d }Y nw xY w|t          d||          }t          ||dz   |          } fdt	          ||          D             }	t          |          }
t          t          d|
                                                                                  fd|	D             }  j	        dg|R diS t          j
        dd          S )	Nr   rF  c           	     N    g | ]!\  }}t          j        g|g|g           "S )rx  r   rz  )r  lowhi	dimensionr)  r1  s      r  r  zunfold.<locals>.<listcomp>G  sR     
 
 
 R )5	{C5t  
 
 
r   c           
     j    g | ]/}t          j                            d |          g          0S )r"  r#  )r   r  r%  )r  r   r  r)  r+  s     r  r  zunfold.<locals>.<listcomp>P  sS     
 
 
  -144Qt444yk 
 
 
r   r5  r6  Unfoldr  )r   r  r  r)  r  rX  r8  r  popr%  rb  )r)  r1  r  r   stepr  sizedimlow_indices
hi_indicesr   r*  r  r+  s   ```         @r  r  r  9  sp    -e44E	"     Aw--41d33

 
 
 
 
 
 {J77	
 
 
 5zzE!TNN##DHHY''(((
 
 
 
 
 
 	
 
 
	 qtH;y;;;;;;-15
 
 	
s   # 22z	aten::eluc                    |r|dk    rt          j        dd|          S |r|dk    rt          j        dd|          S |                     d|t          j        |                    S )Nr]  r  zdoes not support scale in Eluinput_scalez#does not support input_scale in EluElur  )r   rb  r%  rK  )r)  r1  rN  r  r  s        r  rF   rF   ]  s      
#-4e
 
 	
  
{c))-@+
 
 	
 44uo&=e&D&D4EEEr   z
aten::seluc                .    |                      d|          S )NSelur/  r0  s     r  r   r   m  s     44r   zaten::index_selectc                0    t          j        | |||          S r  )r   _select_helper)r)  r>  rB   rj   s       r  ri   ri   s  s     )!T3>>>r   zaten::index_putc                   t          j        |          rt          j        |          }n|g}t          j        |d          }t	          |          dk    r|rt          | ||          S |S t          j        ddd|           d S )Nr?  r   rh   r  rE  )r   r3  r  r  rX  r   r  )r)  r>  indices_list_valuevalues
accumulateindices_lists         r  rh   rh   |  s    &'9:: ,&34FGG*+ +J<<J
<A 	(q$'''+KBEEEEEr   zaten::index_fillc                    t          j        |d          }t          j        | |||          \  }}t          j        |          }t          j        ||          }t          | ||d           }t          | ||||          S Nr  )r   r  _index_fill_reshape_helperrL  r  rO   r   )	r)  r>  rB   rj   rf  	dim_valueexpanded_index_shapeexpanded_indexexpanded_values	            r  rg   rg     s    *344I+:+U	4e, ,(. -e44E.ud;;EAu&:DAAN1dC@@@r   zaten::index_copyc                    t          j        |d          }t          j        | |||          \  }}t          | ||||          S r+  )r   r  r,  r   )r)  r>  rB   rj   sourcer-  r.  r/  s           r  rf   rf     sM    *344I+:+U	4e, ,(. 1dC888r   zaten::bucketizec                4   t           j        j        }|rt           j        j        }|                     d|                     d|          |                     d|          d          }t          j        |          }|J t          t          d|dz                       }t          | t          j
        | ||          |d           }	|rt          | ||	          }
nt          | ||	          }
|                     d|
|          }t          j        | |dgd          S )	Nr5  r.  r   ry  rF  rq  rr  r  )rt  ru  rv  rx  r%  r   r  r8  r)  rO   r  rZ   r_   r  )r)  r>  
boundaries	out_int32r.  out_type	new_shapetensor_rankunsqueeze_axesexpanded_boundariescondcond_outs               r  r*   r*     s$   
 *0H 5.4 XqttGZ88!$$w:M:MVWXXI "2488K"""%;?3344N 	)!ZHH	   0!T.//!T.//ttFDxt00H ,Q!QRSSSSr   zaten::type_asc                    t          j        |          }t          j        |          }||k    r||S |*|                     d||                                          S t	          j        d|          )Nrq  rr  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  r%  r|  r   rm  )r)  r>  rB  
self_dtypeother_dtypes        r  r   r     s     5d;;J!6u==K[  Z%;tt&&((  
 
 	
 
#	? 		  r   zaten::cosine_similarityc                   t          j        | t          | ||          |gd          }t          j        | t          | ||          |gd          }t          j        | t          | ||          |gd          }t          | t	          | t          | ||                    |                     dt          j        |g                              }t          | ||          S )Nr   r  r`  ra  )	r   r  r   r   r   r%  rc  r   rC   )	r)  x1x2rB   r  r?   x1_l2x2_l2div_tenss	            r  r>   r>     s     -	3q"b>>3%A  E -	3q"b>>3%A  E -	3q"b>>3%A  E 	43q%''((!$$z5<QTPUCVCV$*W*W H q%"""r   zaten::pairwise_distancec                   t          j        |          s*|                     dt          j        |g                    }t          | |                     dt          j        dgt          j                            t          | ||                    }t          j        | t          | t          | ||          |          dgt          j        |d                    }t          | ||          S )Nr`  ra  rF  r  r.  r  r  )r   rH  r%  rc  r   rC   r  r   r  r   r   r  )r)  input1input2pr  r8  inv_p	summations           r  r   r     s    $S)) <dd:u|SE':':d;;		Zqc!E!E!EFFAq# E
  1	As1ff%%q))t"-gs;;	  I q)U###r   zaten::clonec                    |S r  r!  )r)  r1  unused_memory_formats      r  r1   r1      	     Lr   z	aten::absc                .    |                      d|          S )NAbsr/  r  s     r  r   r     r  r   z	aten::logc                .    |                      d|          S )NLogr/  r  s     r  r~   r~     r  r   zaten::log1pc                    t          | t          | t          j        t	          j        d          |          |                    S )NrF  )r~   r   r   r  rc  r   r  s     r  r   r     s4    q#a;EJqMM4PPRVWWXXXr   zaten::log10c           
         d}|                      dt          | |          |                      dt          j        |g                              S )NgUk@rp  r`  ra  r%  r~   rc  r   )r)  r>  _ln10s      r  r   r     sA    "E44s1d||QTT*elE7>S>ST%T%TUUUr   z	aten::powc                   t           j                            |          }t          j        |          s;t           j        j        }|                     d||                                          }t          j        |          s*|                     d||                                          }|                     d||          }|S )Nrq  rr  r  )r
   rw  rx  r   rz  r{  r%  r|  )r)  r>  exponentf_dtyper   s        r  r   r     s    '22488G!$'' <+1ttFDw'8'8':':t;;!(++ 
44""$$  
 

 $$udH
%
%CJr   zaten::clampc           
        t          j        |          rt          | ||          S t          j        |          rt          | ||          S t          j        |          rTt          j        |          r@t          j        | d|t          j        |d          t          j        |d          d          S t          | t          | ||          |          S )NClipr\     min_fmax_fr  )r   rK  r.   r/   r  r  r  )r)  r>  r   r   s       r  r0   r0   +  s     $$ >D#&&&		!#	&	& >D#&&&',, 
	>1Mc1R1R 
	>"?%0c::%0c::    Q	!T3 7 7===r   zaten::clamp_minc           	     F   t          j        |          r,t          j        | d|t          j        |d          d          S t          j                            |          }|                     d||                                          }t          j        | d||d          S )	Nr[  r\  r\  )r^  r  rq  rr  Maxr  	r   r  r  r  r
   rw  rx  r%  r|  )r)  r>  r   r  s       r  r/   r/   A       #C(( 	
;vt?#=c3#G#GVX
 
 
 	
 )44T::dd63U__%6%6d77;udCb
 
 
 	
r   zaten::clamp_maxc           	     F   t          j        |          r,t          j        | d|t          j        |d          d          S t          j                            |          }|                     d||                                          }t          j        | d||d          S )	Nr[  r\  r\  )r_  r  rq  rr  Minr  rb  )r)  r>  r   r  s       r  r.   r.   P  rc  r   z	aten::maxc                0    t          j        | |||          S r  )r   _max_helperr)  r>  dim_or_yr8  s       r  r   r   _  s    
 &q$'BBBr   zaten::maximumc                &    t          | ||          S N)ri  )r   rt  s      r  r   r   g       q%%((((r   z	aten::minc                0    t          j        | |||          S r  )r   _min_helperrh  s       r  r   r   m  s     &q$'BBBr   zaten::minimumc                &    t          | ||          S rk  )r   rt  s      r  r   r   s  rl  r   z
aten::amaxc                4    |                      d|||          S )Nr  r  r/  r)  r>  rB   r8  s       r  r   r   y       44T#'4BBBr   z
aten::aminc                4    |                      d|||          S )N	ReduceMinr  r/  rq  s       r  r   r     rr  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  rB   r  rt  r  )r   rK  rk  r%  )r)  r>  rB   r8  reduce_kwargss        r  r   r     s     "7+M#C(( ((c599#&%h14T33]33TQTT6 6*6 6  r   z	aten::expc                .    |                      d|          S )Nr  r/  r  s     r  rM   rM     r  r   zaten::dropout_zaten::dropoutc                p    t          j        |d           |s|S |                     d||d          \  }}|S )NrE   Dropoutr  )ratio_fra  )r   r  r%  )r)  r1  rI  trainr  r  s         r  rE   rE     sF     'y999 44	5!Q47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                J     t          j        ddd           fd            }|S )Nr[  r  r?  c                8    |rt          j        d|          S |S )Nztraining mode)r   rb  )r)  r1  rI  r{  r  s       r  feature_dropoutz-_unsupported_dropout.<locals>.feature_dropout  s(      	P"1$OOOr   r   r  )r  r~  s   ` r  _unsupported_dropoutr    s@    2 VS11    21 r   z
aten::normc                b   |dk    rt          j        d          }n0|dk    rt          j        d          }nt          j        d|           || |||          }|Rt          j        |dd          }|                     d	|t          j        |                                          
          }|S )NrF  ReduceL1r  ReduceL2z)ONNX export only p-norms with p of 1 or 2)rB   r8  r  r  rq  rr  )	r   _reduce_op_symbolic_helperr   rm  rk  r%  r
   rw  r|  )r)  r>  rI  rB   r8  r  r\  r  s           r  r   r     s     	Avv6zBB	
a6zBB'7
 
 	
 Qq$C111F*5#w??ff;+DU+K+K+U+U+W+WXXMr   zaten::conv_tbcc           
         |                      d|g d          }|                      d|g d          }t          | |||dg|gdgd          }|                      d|g d          S )Nr"  )rF  r  r   r#  )r  rF  r   rF  )r  r   rF  )r%  r8   )r)  r1  rE  r  r   convs         r  r4   r4     sw     DDeIIID66ETT+viiiT88F!UFD1#uqc1==D44T)))4444r   zaten::_uniquec                ,    t          j        d|          S )N_uniquer  )r)  r1  sortedreturn_inverses       r  r  r    s     ,Y>>>r   zaten::_unique2c                4    t          j        ddd|           d S )N_unique2r  rE  r  )r)  r1  r  r  return_countss        r  r  r    s!     +J2uEEEEEr   zaten::_cast_Bytez2.0z
the futurez8Avoid using this function and create a Cast node insteadc                P    |                      d|t          j        j                  S r  )r%  rt  ru  r  r)  r1  non_blockings      r  
_cast_Byter    "     44G$?$E4FFFr   zaten::_cast_Charc                P    |                      d|t          j        j                  S r  )r%  rt  ru  r  r  s      r  
_cast_Charr    "     44G$?$D4EEEr   zaten::_cast_Shortc                P    |                      d|t          j        j                  S r  )r%  rt  ru  r  r  s      r  _cast_Shortr  	  r  r   zaten::_cast_Intc                P    |                      d|t          j        j                  S r  )r%  rt  ru  rx  r  s      r  	_cast_Intr    r  r   zaten::_cast_Longc                P    |                      d|t          j        j                  S r  )r%  rt  ru  rv  r  s      r  
_cast_Longr    r  r   zaten::_cast_Halfc                P    |                      d|t          j        j                  S r  )r%  rt  ru  FLOAT16r  s      r  
_cast_Halfr  '  s"     44G$?$G4HHHr   zaten::_cast_Floatc                P    |                      d|t          j        j                  S r  )r%  rt  ru  r{  r  s      r  _cast_Floatr  1  r  r   zaten::_cast_Doublec                P    |                      d|t          j        j                  S r  )r%  rt  ru  r  r  s      r  _cast_Doubler  ;  s"     44G$?$F4GGGr   zaten::_cast_Boolc                P    |                      d|t          j        j                  S r  r  r  s      r  
_cast_Boolr  E  r  r   zaten::emptyc                *    t          | |||||          S r  )r  )r)  r  r  layoutdevice
pin_memorymemory_formats          r  rJ   rJ   O  s     E5&&*===r   zaten::empty_likec                *    t          | |||||          S r  )r  )r)  r1  r  r  r  r  r  s          r  rI   rI   ]  s     avvzBBBr   zaten::new_emptyc                    t          j        |          }t          j        |          r||}t          | |||||          S r  )r   r  rK  rJ   r)  r>  r  r  r  r  r  r>  s           r  r   r   k  sI     !5d;;J&& :+AE5&&*===r   zaten::scalar_tensorc                    t          j        |dd          }|t          j        j        }|                     d|t          j        |                                                    }|S )Nr  r  rq  rr  )r   rk  r
   rw  r{  r%  r|  )r)  scalarr  optionss       r  r   r   u  sY    &uc7;;E})/TT&&{'@'G'G'Q'Q'S'STTTFMr   zaten::tensorc                   t          j        |dd          }t          j        |          r|7t          j                            t          j        |          d                   }g }t          j        |          D ]}|                     dt          j	        dg                    }t          j
        | ||          }|                     d|t          j        |                                                    }|                    |            | j        d	g|R d
diS |t          j                            |          }t          j        |          rAt          j        |          st          j        |          r|                     d|dd          }|                     d|t          j        |                                                    S )Nr  r  r   r`  rF  ra  rq  rr  r5  r6  ConcatFromSequence)r6  
new_axis_i)r   rk  r3  r
   rw  rx  r  r%  rc  r2  r<  r|  r  _is_listrI  _is_scalar_list)r)  datar  r  requires_gradr!  r   shape_references           r  r   r   ~  s    &uc7;;E&t,, L=-88,T2215 E 
 -d33 	! 	!Add:u7G7L7LdMMO/1oFFAVQ[%>u%E%E%O%O%Q%QRRAa    qtH4z444!444=-88>>E#D)) 	L+D11	L.t44	L 44,d14KKD44;#<U#C#C#M#M#O#O4PPPr   zaten::as_tensorc                &    t          | |||          S r  )r   )r)  r  r  r  s       r  r   r     s    !T5&)))r   zaten::zerosc           	        |t           j        j        }nt          j        |          }t          j        |d          }t          |t                    rYt          |          dk    rF|                     dt          j
        g                               t          j                            }|                     d|t          j
        dg|                                                    S )Nr-  r   r`  ra  ConstantOfShaper  r
   rw  r{  r   r1  r7  r8  rX  r%  rc  r   r   r  r  r)  r  r  r  r  r  r~  sizes_s           r  r  r    s     }!/5!/66-eT::F&$ KCKK1$4$4Zb)9)9)<)<U[)I)IJJ44aS(9(9(;(;<<<    r   zaten::zeros_likec           	     \   |                      d|          }t          j        |          r0t          j                            |t          j        j                  }nt          j        |          }|                      d|t          j        dg|	                                                    S )Nr.  r  r   r  ra  
r%  r   rK  r
   rw  rx  r{  rc  r   r  	r)  r1  r  r  r  r  r  r9  r~  s	            r  r  r         DD%  E&& 7!/::;,2
 
 "/6644aS(9(9(;(;<<<    r   zaten::new_zerosc                    t          j        |          }t          j        |          r||}t          | |||||          S r  )r   r  rK  r  r  s           r  r   r     sI     !5d;;J&& :+AE5&&*===r   z
aten::zeroc                L    t          j        |          }t          | ||          S r  )r   r  r  )r)  r>  r>  s      r  r  r    s$     5d;;Jaz***r   z
aten::onesc           	        |t           j        j        }nt          j        |          }t          j        |d          }t          |t                    rYt          |          dk    rF|                     dt          j
        g                               t          j                            }|                     d|t          j
        dg|                                                    S )Nr-  r   r`  ra  r  rF  r  r  r  s           r  r   r     s     }!/5!/66-eT::F&$ KCKK1$4$4Zb)9)9)<)<U[)I)IJJ44aS(9(9(;(;<<<    r   zaten::ones_likec           	     \   |                      d|          }t          j        |          r0t          j                            |t          j        j                  }nt          j        |          }|                      d|t          j        dg|	                                                    S )Nr.  r  rF  r  ra  r  r  s	            r  r   r     r  r   zaten::new_onesc                    t          j        |          }t          j        |          r||}t          | |||||          S r  )r   r  rK  r   r  s           r  r   r     sI     !5d;;J&& :+A5%<<<r   z
aten::fullc                8   t          j        |d          }t          j        |          ra|t          j        j        n|}t          | ||||          }t          | |||                     dt          j
        d                              S t          j        |dd          }|t          j        j        }	nt          j        |          }	t          j        |d          }
t          |
t                    rYt          |
          dk    rF|                     dt          j
        g                               t          j                            }|                     d	||                    d                              |	                                                    S )
Nr   r`  rF  ra  r  r  r-  r   r  )r   r1  rH  r
   rw  r{  r  r   r%  rc  r   rk  r7  r8  rX  r   r  r  r  )r)  r  rf  r  r  r  r  const_valuetmpr~  r  s              r  rX   rX     sd    "25#>>K -- 
38=)//eAueVV441c5!$$z5<??$"K"KLLL*5#w??=%39KK%3E::K 1%>>fd## 	OFq(8(8DDU\"-=-=-@-@-M-MDNNEtt$$Q''**;+<+<+>+>??  
 
 	
r   zaten::full_likec                   t          j        |d          }t          j        |dd          }|0t          j                            |t          j        j                  }nt          j        |          }t          j        |          rvt          | ||||          }	| 	                    d||
                                          }t          | |	|| 	                    dt          j        d                              S | 	                    d	|          }
| 	                    d
|
t          j        |g|                                                    S )Nr\  r  r  rq  rr  r`  rF  ra  r.  r  r  )r   r1  rk  r
   rw  rx  r{  rH  r  r%  r|  r   rc  r   r  )r)  r1  
fill_valuer  r  r  r  r  r~  r  r9  s              r  rW   rW   (  s1    !1*cBBJ&uc7;;E}!/::;,2
 
 "/66 ,, 

E5&&99TT&*;3H3H3J3JTKK
1c:qttJQt'P'PQQQWe$$ttL*[5F5F5H5HIII  
 
 	
r   zaten::new_fullc           	         t          j        |          }t          j        |          r||}t          | ||||||          S r  )r   r  rK  rX   )	r)  r>  r   r  r  r  r  r  r>  s	            r  r   r   H  sK     !5d;;J&& :+A4UFFJGGGr   	aten::eyec           	     F   t          |          dk    ra|\  }}}}}t          j        | |dg          }|                     d||d          }t	          | ||||          }	|                     d|	          S t          |          dk    ru|\  }}
}}}}|                     dt          j        | |dg          t          j        | |
dg          d          }t	          | ||||          }	|                     d|	          S t          j        ddt          |           d	          S )
Nr?  r   r5  ry  EyeLiker  r  with 
 arguments)rX  r   r  r%  r  rb  )r)  rZ  r*  r  r  r  r  r  r9  r   ms              r  rP   rP   Y  s0   
4yyA~~/3,5&&*"4QA3??Xx!<<q%77ttIv&&&
4yyA~~26/1eVVZ-aQC88-aQC88	  
 
 q%77ttIv&&&)+7Ts4yy7T7T7TUUUr   aten::slicec                   t          |          dk    rh|\  }}}}t          j        |d          }|dk    rt          j        d|          |                                                                dk    o+t          |                                t          j
                  }|                                                                dk    o+t          |                                t          j
                  }|                                                                dk    }	|                                                                dk    }
|s|	r.|s|
r*|                                                                dk    rt          j        t          j        j        k    rt          j        d|          t          j        | |dg          }t          j        | |dg          }t          j        | |dg          }|                     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}|                                                                dk    o+t          |                                t          j
                  }|                                                                dk    o+t          |                                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  rF  z"step!=1 is currently not supportedr$  rk  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   DynamicSlicerx  r  r  r  r  )rX  r   r  r   rm  r  r  r7  r  r   NoneTyper   operator_export_typert  OperatorExportTypesONNXr  r%  r   r  rz  rb  )r)  r>  rZ  rB   r+  r,  r  is_start_noneis_end_noneis_start_onnx_constis_end_onnx_conststart_unsqueezedend_unsqueezeddim_unsqueezeds                 r  r   r   q  s   
4yyA~~ $UC)$44199+,PRVWWW

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

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

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

HHJJA
 A
 #N(B5#(N(N 6J   +C55 	
 ,t3%se
 
 
 	
 )-9VT9V9V9VWWWr   zaten::hardtanhr>  min_valmax_valc                6    t          j        | d|||d          S )Nr[  r\  r]  r  )r)  r>  r  r  s       r  rd   rd     s+     7	64wgB   r   zaten::hardswishc                P    t          | |          }|                     d||          S r~  )rb   r%  )r)  r>  hss      r  rc   rc     s)     
Q		B44tR   r   zaten::hardsigmoidc                2    |                      d|d          S )NHardSigmoidgUUUUUU?r  r/  r  s     r  rb   rb     s     44tU4333r   zaten::tanhshrinkc                L    |                      d|t          | |                    S )NrP  )r%  r   r  s     r  r   r     s"     44tT!T]]+++r   zaten::hardshrinkc                   t           j                            |t           j        j                  }|                     dt          j        ||                                                    }t          | t          | ||          t          | |t          | |                              }|                     d|||                     dt          j        d|                                                              S Nr`  r  ra  r  r   )r
   rw  rx  r{  r%  rc  r   r  r   r_   r   r   )r)  r>  lambdr~  lambd_opr;  s         r  ra   ra     s     +66k'- K ttU+*;*;*=*=>>>   H aAtX..1dC8<L<L0M0MNND44	L+*;*;*=*=>>> 	 	
 	
	  r   zaten::softshrinkc                   t           j                            |t           j        j                  }|                     dt          j        ||                                                    }t          | ||          }|                     d|t          | ||          |                     dt          j        d|                                                              }t          | |t          | |                    }|                     d|t          | ||          |                     dt          j        d|                                                              }t          | ||          S r  )r
   rw  rx  r{  r%  rc  r   r  r_   r   r   r   r   )	r)  r>  r  r~  r  gt_condgt_outlt_condlt_outs	            r  r   r     sd    +66k'- K ttU+*;*;*=*=>>>   H D(##GTTAtX	L+*;*;*=*=>>> 	 	
 	
	 F D#a**++GTTAtX	L+*;*;*=*=>>> 	 	
 	
	 F q&&!!!r   zaten::aliasc                    |S r  r!  r  s     r  r   r     r  r   zaten::unsqueezec                :   |dk     r~t          j        |          }|Rt          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 )zbImplement unsqueezing a pytorch tensor in ONNX by inserting a new dimension at the specified `dim`r   Nz)ONNX export unsqueeze with negative axis r  r  r  rF  r  r  r  r  r  )r   r  rC  rD  r  rb  r  rT  s       r  r  r    s    
 Qww/55M;c((AB == *	*
 cDj1n%%& ;; XX	 	 	 *q.CC"1Dd   ,QcUCCCCr   z
aten::sortc                    |t          j        dd|           t          j        |          }	 ||         }n# t          $ r d }Y nw xY w|t          j        dd|          S |                     d|||d          S )NSortz'Out parameter is not supported for sortr  TopKr  k_ir6  ra  )r   rb  r  r  r%  )r)  r>  rB   	decendingr}  
self_sizesr  s          r  r   r   2  s     &=t	
 	
 	
 !2488Jc?    
 -f6QSWXXX44(34BBBs   7 AAzaten::numelc                ,    t          j        | |          S r  )r   _numel_helperr  s     r  r   r   H  s    (D111r   z
aten::topkc                    |t          j        dd|           |st          j        dd|           |                     d|||d          S )Nr  z'Out parameter is not supported for topkzAscending TopK is not supportedr  r  )r   rb  r%  )r)  r>  r  rB   largestr  r}  s          r  r   r   M  sd     &=t	
 	
 	
  X&v/PRVWWW44!C4;;;r   zprim::convert_element_typec                    t          j        |d         dd          }|                     d|t          j        |                                                    S )Nr   r  r  rq  rr  )r   rk  r%  r
   rw  r|  )r)  r>  rZ  r  s       r  r;   r;   [  sI    &tAwW==E44;#<U#C#C#M#M#O#O4PPPr   zaten::toc                   d } ||          r|S t          |          dk    r|d         }t          j        |d                   r|d                                                                         dk    rt          j        |d                                         d          }t          |t          j                  r>t          |j	                  dk    r$|
                                }t          |          }n|}t          j        |          st          |t          j                  rOt          j                            |d                   }|                     d||                                          S |                     d|t          j        |                                                    S t          |          dk    rXt          j        |d	         d
d          }|                     d|t          j        |                                                    S t          |          dk    rXt          j        |d         d
d          }|                     d|t          j        |                                                    S t          |          dk    rXt          j        |d         d
d          }|                     d|t          j        |                                                    S t          j        d|          S )Nc                J   t          |           dk    r| d                                                                         dk    pz| d                                                             t
          j                                                  p1t          | d                                         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 d	S )
Nr=  r   prim::devicer?  rF  r  r  )r     F)rX  r  r  r  isSubtypeOfr   ListTypeofIntsr7  rl  r   rk  )rZ  r  s     r  is_aten_to_device_onlyz"to.<locals>.is_aten_to_device_onlyc  s    t99>> Q##%%7 @7<<>>--bk.@.@.B.BCC@d1gllnnb.>??
 YY!^^ $.tAwWEEED= YY&   $.tAwWEEED= ur   r=  r   rk  rf  rq  rr  r?  rF  r  r  r  r  zUnknown aten::to signature)rX  r   rH  r  r  rj  r7  rc  r9  r9  ro   r  r
   rw  rx  r%  r|  rk  r  )r)  r>  rZ  r  r  tvals         r  r   r   a  s     , d## 
4yyA~~ Q%d1g..
	!Q##%%)999",T!W\\^^WEED$-- !tz??a''99;;DIIEE E$U++ 	Yz%/N/N 	Y-88aAAE44__&&     44;+DU+K+K+U+U+W+W4XXX	Ta*47CAAttFD{'@'G'G'Q'Q'S'StTTT	Ta*47CAAttFD{'@'G'G'Q'Q'S'StTTT	Ta*47CAAttFD{'@'G'G'Q'Q'S'StTTT,-I4PPPr   zaten::repeatc                    t           j        j        }t          | ||          }|                     d||          }|                     d||          S )Nr/  Tile)r
   rw  rv  r   r%  )r)  r>  repeatsr  shape_s        r  r   r     sI    %+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        |          r_t          j        | ||                     dt          j	        dg                              }t          j	        dt          j
                  }nt          j        |          }|dk     r|t          |          z  }|                                }t          |          D ]\  }	}
|
d	\  ||	<   ||	<   |dk    s|d
k    rG|d         d
k    r;||         dk    rt          j        dddd|          S t          j        | |||          S |d
k    ri||         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|          g }t          j        | ||d          }t          j        | |||          }d\  ||<   ||<   t          |          D ] \  }	}t%          | ||	         |d
z             }|                     dt          j        |d |d
z                                ||                     dt          j        ||d
z   d                              g} | j        dg|R ddi}t)          | ||d           }t          j        | ||                     dt          j        |                    d          }|                    |            | j        dg|R 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.r`  r.  ra  r   r  )r   r.  rF  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)r.  rF  r5  r6  	allowzero)r   r  r  r   rm  rK  r<  r%  rc  r   r  rL  rX  r  	enumeraterJ  -_repeat_interleave_single_value_repeat_helper_repeat_interleave_split_helperr  r2  rO   r  )r)  r>  r  rB   r  repeats_dimrepeats_sizesinput_sizesinput_sizes_tempr'  r	  repsfinal_splitsr_splitsi_splitsr_spliti_splitr_concats                     r  r   r     s6    "27;;K#5g>>M!3D99K'U
 
 	
 'U
 
 	
 'S
 
 	
 $$ 5.tQTT*elB4.@.@TAA
 
 l1EK000/44 Qwws;"''))$[11 < <Z6;3K.s3 aK1,,q1AQ1F1Fsq  "C#E   LtWc
 
 	

 
		sq  "C#E   #"C#<   !C 0000? 100Q'(OQUVVVL>q'4QRSSH>q$cRRH.3+K&s+!(++ % %WAx}cAg66DDU%56Fyqy6Q%R%RDSSDDU%56FsQwyy6Q%R%RDSS

 1468666A66GXt44!1DDU%5k%B%BDCC	
 
 
 	G$$$$144<444444r   zaten::pixel_shufflec                z   t          j        |          }t          |          dk    rt          j        dd|          S t	          d |dd          D                       rt          j        | t          j        | |ddg          |                     dt          j	        d	d
||d	d	g                    d	          }|                     d|g d          }t          j        | ||                     dt          j	        g d                    d	          }t          j        | ||                     dt          j	        g d                    d	          }t          j
        | |ddg          S |d         |z  |z  }t          j        | ||                     dt          j	        d
||||d         |d         g                    d	          }|                     d|g d          }t          j        | ||                     dt          j	        d
||d         |z  |d         |z  g                    d	          S )Nr=  r   only support 4d inputc              3     K   | ]}|d u V  	d S r  r!  r  s     r  r  z pixel_shuffle.<locals>.<genexpr>$  &      
'
'19
'
'
'
'
'
'r   rF  r  r  r`  r   r.  ra  r  r"  )r   rF  r=  r  r?  r  r#  )r   r   r.  rF  r   r   )r   r   r   r   r.  rF  r?  r   r  rX  rb  r  r<  r  r%  rc  r   ru  )	r)  r>  upscale_factorr=  
after_viewafter_transpose	reshape_h	reshape_woutput_channels	            r  r   r     s    ,T22D
4yyA~~-4d
 
 	
 
'
'd122h
'
'
''' =
$4-a1v>>DDa^^QPQ%RSS    
 
 

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

$ $${J?Q?Q?Q$RR.DD&Q.0Q.0	   
 
 
 
 
 	
r   zaten::pixel_unshufflec                   t          j        |          }t          |          dk    rt          j        dd|          S t	          d |dd          D                       rt          j        | t          j        | |dg          |                     dt          j	        ddd	|dg          
          d          }t          j        | ||                     dt          j	        ddddd	|g          
          d          }|                     d|g d          }t          j        | ||                     dt          j	        g d          
          d          }t          j
        | |ddg          S |d         |z  |z  }t          j        | ||                     dt          j	        d	|d         |d         |z  ||d         |z  |g          
          d          }	|                     d|	g d          }t          j        | ||                     dt          j	        d	||d         |z  |d         |z  g          
          d          S )Nr=  r   r   c              3     K   | ]}|d u V  	d S r  r!  r  s     r  r  z"pixel_unshuffle.<locals>.<genexpr>l  r"  r   rF  r  r`  r   r.  ra  r  r"  )r   rF  r  r?  r  r=  r#  )r   r.  rF  rF  r   r   r  r#  )
r)  r>  downscale_factorr=  r'  r(  r&  final_reshaper)  r%  s
             r  r   r   d  s    ,T22D
4yyA~~-4d
 
 	
 
'
'd122h
'
'
''' :
#3-as;;DDU\1a=Mq2Q%R%RDSS	
 
 
	 $3DDU\1aArCS2T%U%UDVV	
 
 
	 $${I>P>P>P$QQ'7DDU\2E2E2E%F%FDGG	
 
 
 .q-!QHHHa#336FF$4DDQQ#33(Q#33(	 	    !
 
 

$ $${J?Q?Q?Q$RR.DD&Q#33Q#33	   
 
 
 
 
 	
r   c                r	   *+,-. t          j        dz   dz   dz   dz   dz              g d}t          t          d |D             |                    }|rdnd	.d
k    r2t	                    .z  d|	z   z  k    rt          j        d
d|          S t	                    .z  d|	z   z  k    sJ .fdt          dt	                    .          D             +|
r                     d|g d          }|r|rt          j        dd|          S 	                    d          r$|dd          
                                         }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,d - *+,-fd} *+,-fd} fd}t                    D ]R}|r;.dk    r ||          \  }}}n ||          \  }}t                     }||dz   f}n.dk    rA |d	|z            \  }} }! |d	|z  dz             \  }"}#}$                     d|!|$d          }n4 |d	|z            \  }}  |d	|z  dz             \  }"}#t                     }                     d||"d          }                     d| |#d          }d	|z  d	|z  d	z   f}|||||g}%|%                     ||g|R             d
k    r|%                     ||g|R             |ri ndd i}&dk    r#|	r||g}'n|g}'  j        dg|%R d	*|'d!|&\  }}(n=dk    r  j        dg|%R d	*dd"|&\  }}(nd
k    r  j        d
g|%R d#*d$|&\  }}(})|	r\                     d|g d%          }t          j         |                     d&t          j        g d'          (          d)          }nt          j         |dg          }|                    |(           d
k    r|                    |)           T|
r                     d|g d          }dk    r|(n  j        dg|R d*di}dk    sdk    r||fS d
k    rdk    r|)n  j        dg|R d*di}|||fS d S )+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  r   Softsignr  c                6    g | ]}|                                 S r!  )lower)r  act_funs     r  r  z _generic_rnn.<locals>.<listcomp>  s     <<<W]]__<<<r   r=  r  LSTMrF  zLSTMs with projectionsc                *    g | ]}||z            S r!  r!  )r  r  all_weightsweights_per_layers     r  r  z _generic_rnn.<locals>.<listcomp>  s9        	A---.  r   r   r"  r  r#  zRNN/GRU/LSTMzdropout in training modeRNNzunknown hidden sizeGRU))rF  r  r   rF  )r  r  )r<  )r  r=  )rF  r  c                J      fd|D             }  j         dg|R ddiS )Nc           
     Z    g | ]'\  }}t          j        d g|z  g|z  g          (S )r   rx  r  )r  xyr)  r*  ws      r  r  z8_generic_rnn.<locals>.reform_weights.<locals>.<listcomp>  sT     
 
 
1 )!QaS!a%PQTUPUwWWW
 
 
r   r5  r6  r   r/  )r)  rA  r*  	intervalsslicess   ```  r  reform_weightsz$_generic_rnn.<locals>.reform_weights  s[    
 
 
 
 
 
!
 
 
 qtH0v000a000r   c                    |          }	dk    r|\  }}n 	dk    s	dk    rfd|D             \  }}t          fd||fD                       S )Nr:  r;  r6  c              3  4   K   | ]} |          V  d S r  r!  r  rA  r)  hidden_sizereform_permutationrD  s     r  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  sE       $ $JKq![2DEE$ $ $ $ $ $r   c              3  F   K   | ]}t          j        |d g          V  dS r  r  r  r?  r)  s     r  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  H       
 
 -aQC88
 
 
 
 
 
r   )r  )
layer_indexweights	weight_ih	weight_hhr)  rH  layer_weightsrI  rD  variants
       r  transform_weights_no_biasz/_generic_rnn.<locals>.transform_weights_no_bias  s    ,e#* IyyF!2!2$ $ $ $ $ $ $OV$ $ $ Iy  
 
 
 
+
 
 
 
 
 	
r   c                    	|          }dk    r|\  }}}}n"dk    sdk    r
fd|D             \  }}}}                     d||d          }t          fd|||fD                       S )	Nr:  r;  r6  c              3  4   K   | ]} |          V  d S r  r!  rG  s     r  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>  sE       6 6JKq![2DEE6 6 6 6 6 6r   r5  r   ry  c              3  F   K   | ]}t          j        |d g          V  dS r  r  rK  s     r  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>"  rL  r   )r%  r  )rM  rN  rO  rP  bias_ihbias_hhbias_concatr)  rH  rQ  rI  rD  rR  s          r  transform_weightsz'_generic_rnn.<locals>.transform_weights  s    ,e5<2Iy'77F!2!26 6 6 6 6 6 6OV6 6 62Iy'7 dd8Wgad@@ 
 
 
 
K8
 
 
 
 
 	
r   c                L    dk    r| nt          j        | dg|g|g          S )NrF  r   rx  r  )r?  r+  r,  r)  
num_layerss      r  retrieve_statez$_generic_rnn.<locals>.retrieve_state'  s@     Q A .1A3wcU  	
r   r5  ry  direction_sbidirectional)ra  hidden_size_iactivations_s)ra  r`  linear_before_reset_ir  )ra  r`  )r   r  rF  r  r`  )r   r   r.  ra  r  r6  )rC  rD  dictr  rX  r   rb  r)  r%  
startswithr4  r  r  r  r<  rc  r2  ru  )/r)  rR  r1  initial_statesr8  
has_biasesr\  rE   r{  r_  batch_firstbatch_sizesonnxActivationsvariantToOnnxActivationMapnonlinearityw_hhunidirectionalprev_outputh_outsh0c0c_outssequence_lensrS  rZ  r]  r  rO  rP  rY  state_indicesweight_ih_fweight_hh_fbias_fweight_ih_bweight_hh_bbias_binputsextra_kwargs
activationh_outc_outrH  rQ  rI  rD  r9  s/   ``  ` `                                   @@@@@r  _generic_rnnr    s    M	)
	 !	! F		F
 A	A J	J    O "&<<O<<<oNN" " (.Q&S-->O1O	M2   -f6NPUVVV{z,==]ARSSSSS    q#k**,=>>  M  ;[%			:: 
5 
-6
 
 	
 %   1'!""+2C2C2E2EFq>D!6tQ??K-15
 
 	
 '&NKF%7e++	F		B!,!4F1III+M% 655	F		 6551 1 1
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 : O! O! 	- A%%4E4Ea4H4H1	9kk'@'@'C'C$	9$Qiiq1uHMM A%%3D3DQU3K3K0[&3D3DQUQY3O3O0[&dd8VVAdFF+D+DQU+K+K([+D+DQUQY+O+O([$QiiX{KJJIX{KJJIE1q519,My)[-PnnR8-888999fMM..<m<<<===+Qrr-1Qe ,*L9

*^
!%"" " )(" " " "K !%"" " )&'" " " "K (,)) ))*+) )IU) )%K  	O $${K$MMK)9Z)9***)E)EFF	  KK *9![1#NNKefMM%    Gdd;IIIdFF AooUU414+L6+L+L+L!+L+LF%7e++F""	F		$//tqtH/Pv/P/P/Pa/P/PFF** 
	r   c
                    t          j        |          t          j        |          }}
t          | d||
|||||||	          S )Nr6  r   r  r  )r)  r1  hidden_vweight_vrf  r\  rE   r{  r_  rg  hiddenrE  s               r  
_lstm_fullr    s\     	$X..$X.. F 	  r   c
                    t          j        |          t          j        |          }}
t          | d||
||||||	|          S )Nr6  rh  r  )r)  r1  rh  r  r  rf  r\  rE   r{  r_  r  rE  s               r  _lstm_packedr    sa     	$X..$X.. F 	   r   z
aten::lstmc                j    t          j        |d                   rt          | g|R  S t          | g|R  S Nr  )r   rI  r  r  )r)  rZ  s     r  r   r     sE    &tAw// $A%%%%%!#d####r   zaten::lstm_cellc                z    t          j         |dg          }t          j        |          } fd|D             }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 )Nr   c                >    g | ]}t          j        |d g          S r  r  rK  s     r  r  zlstm_cell.<locals>.<listcomp>  s*    KKKqo/1qc::KKKr   TFr6  rF  )r\  rE   r{  r_  rg  )r   r  r  
_is_tensorr  ru  )r)  r>  r  w_ihrl  b_ihb_hhr1  rE  rf  r  ro  rr  s   `            r  r   r     s    -as;;E)&11FKKKKFKKKF$3$>t$D$DVtT4  4QU,  )3D99DuJ$	  Avv *	6A3 &q&1#667 7r   z	aten::grur;  gruzaten::rnn_tanhRNN_TANHrnn_tanhzaten::rnn_reluRNN_RELUrnn_relur  c                     t          j        ddddddddd	  	         fd            t          j        ddddddddd	  	         fd            fd}|S )Nr[  r  r\  c
                ^    t          j        |          }
t          | |||
||||||	          S r  r  )r)  r1  r  r  rf  r\  rE   r{  r_  rg  rE  r  s              r  	_rnn_fullz"_one_hidden_rnn.<locals>._rnn_full  sH     !-h77
 
 	
r   c
                `    t          j        |          }
t          | |||
|||||	|          S )Nr  r  )r)  r1  rh  r  r  rf  r\  rE   r{  r_  rE  r  s              r  _rnn_packedz$_one_hidden_rnn.<locals>._rnn_packed  sM     !-h77#
 
 
 	
r   c                \    t          j        |d                   r	 | g|R  S  | g|R  S r  )r   rI  )r)  rZ  r  r  s     r  symbolicz!_one_hidden_rnn.<locals>.symbolic2  sJ    *4733 	';q(4((((9Q&&&&&r   r  )r  r  r  r  s   ` @@r  _one_hidden_rnnr    s     S#sCc3LL
 
 
 
 ML
6 S#sCc3LL
 
 
 
 ML
6' ' ' ' ' ' Or   zaten::_dim_arangec           
         |                      d|          }|                      d||                      dt          j        |                    d          }t          | |dd d d           S )Nr.  rA  r`  ra  r   ry  r=  )r%  rc  r   r   )r)  likerB   
like_shapestops        r  _dim_aranger  ;  sm     gt$$J44*add:u|C7H7HdIIRS   D !T1dD$///r   zaten::detachc                    |S r  r!  r0  s     r  rA   rA   F  rN  r   zaten::contiguousc                <    |dk    rt          j        d|          |S )Nr  z-onnx memory_format support is not implemented)r   rm  )r)  r1  r  s      r  r3   r3   L  s0     q';U
 
 	
 Lr   zaten::_pack_padded_sequencec                   |r|                      d|g d          }|                                                    t          j        j                                                  st          j        d|          t          j
                            |t          j
        j                  t          j
        j        k    r'|                      d|t          j        j                  }|                      d||d	          S )
Nr"  r  r#  z*'lengths' must be a Tensor for ONNX exportrq  rr  zprim::PackPaddedr  ra  )r%  r  r  rc  r   
TensorTypegetr   rm  r
   rw  rx  ry  r  rt  ru  rx  )r)  r1  lengthsrg  s       r  _pack_padded_sequencer  V  s      ;[%			::<<>>%%eh&9&=&=&?&?@@ 
'8%
 
 	
 	!,,[.8	
 	
 $(	) 	)
 $$vwW-H-N$OO44"E7A4>>>r   zaten::_pad_packed_sequencec                z    |                      d||d          \  }}|r|                      d|g d          }||fS )Nzprim::PadPackedr  r  r"  r  r#  r/  )r)  r  rh  rg  padding_valuetotal_lengthr  s          r  _pad_packed_sequencer  o  sO     DD*D+qDIIMD' 9ttKiiit88=r   zaten::randintc                2   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        |	          rQ|                     d|t          j
        dgt          j        	          
          }
|                     d|
||          }n|                     d|	||          }t          j        j        }|                     d||                                          }||k    r*|                     d||                                          }|S )Nr  r  r  highr   r-  r  r   r  ra  RandomUniformLikelow_fhigh_fRandomUniform)shape_ir  r  rq  rr  )r   rk  r
   rw  rv  r  r1  rH  r%  rc  r   r  r|  )r)  r  r  shapesr  r  low_ihigh_ir~  r9  shape_constr   	int_dtyper   s                 r  r   r     s   &uc7;;E&sC77E'c6::F}!/5!/66}/	3???~/	4@@@,VT::E '' 
ddL!EK888  
 

 	  
 
 	  
 
 )/Idd65y':':'<'<d==GK$$vw[-B-B-D-D$EENr   zaten::randint_likec                >   t          j        |dd          }t          j        |dd          }t          j        |dd          }|t          j        j        }nt          j        |          }|t          j        d|          |t          j        d|          |                     d|||          }	t          j        j        }
|                     d|	|
                                	          }|
|k    r*|                     d||                                	          }|S )
Nr  r  r  r  r   r  r  rq  rr  )r   rk  r
   rw  rv  r  r%  r|  )r)  r>  r  r  r  r  r  r  r~  r   r  r   s               r  r   r     s   &uc7;;E&sC77E'c6::F}!/5!/66}/	3???~/	4@@@DD	   E )/Idd65y':':'<'<d==GK$$vw[-B-B-D-D$EENr   zaten::randnc                   t          j        |dd          }|t          j        j        }nt          j        |          }t          j        |d          }t          j        |          ra|                     d|t          j	        dgt          j
                            }|                     d||                                	          S |                     d
||                                          S )Nr  r  r-  r  r   r  ra  RandomNormalLikedtype_iRandomNormalr  r  r   rk  r
   rw  r{  r1  rH  r%  rc  r   r  r|  r)  r  r  r  r~  r9  r  s          r  r   r     s    &uc7;;E}!/5!/66,VT::E '' 

ddL!EK888  
 

 tt))++  
 
 	

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

 44%%''    r   zaten::randn_likec                   t          j        |dd          }|0t          j                            |t          j        j                  }nt          j        |          }|                     d||                                          S )Nr  r  r  r  r   rk  r
   rw  rx  r{  r%  r|  )r)  r>  r  r  r  r  r  r~  s           r  r   r     sy     &uc7;;E}!/::++1
 
 "/6644"D+2G2G2I2I4JJJr   zaten::rand_likec                   t          j        |dd          }|/t          j                            |t          j        j                  }|                     d|t          j        |                                                    S )Nr  r  r  r  r  )r)  r>  r  r  r  r  r  s          r  r   r     s{     &uc7;;E})44++1
 
 44T;+DU+K+K+U+U+W+W    r   zaten::rreluc                    |s ||z   dz  }|                      d||          S |                      d|||          }|                      d||          S )Nr  r  r  r  )r  r  r  r/  )r)  r1  r4  upperr  r  r  rI  s           r  r   r   &  sb      7#%ttKt666	 %UCCA44"""r   zaten::bernoullic                t   |*t          j        |          st          j        dd|           |*t          j        |          st          j        dd|           t          j                            |t          j        j                  }|t          j        j        k    rt          j        dd|          S |                     d|dd|                                          }|t          j        |          s|n|}|                     d	||          }|                     d
||                                          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  rq  rr  )	r   rK  rb  r
   rw  rx  ry  r%  r|  )	r)  r1  rI  r  r}  r  randsprobr  s	            r  r$   r$   0  sE   
7<<&G	
 	
 	
 _%=i%H%H&CU	
 	
 	
 %00{(2 E )333-5u
 
 	
 DD!!   E o&>q&A&A11uDTT&%&&F44U__%6%64777r   zaten::log_sigmoidc                Z    |                      d|          }|                      d|          S )Nr  rR  r/  )r)  r1  rI  s      r  r|   r|   O  s)     	
YA44q>>r   z	aten::erfc                .    |                      d|          S )NErfr/  r0  s     r  rL   rL   V  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|                     d|          S |dk     r||z   }|dk    r!||dz
  k    r|                     d||          S |dk    r$||dz
  k    r|                     d||dz             S t          j        | ||||          S )	NrB   r  r   rF  r!  Flattenry  r  )r   r  rb  r<  r%  _flatten_helper)r)  r1  	start_dimend_dimrB   s        r  rR   rR   \  s    
*5
1
1C
{-7	
 
 	
 axx.q%!===
axxttJ&&&{{-A~~'S1W,,ttIuYt777A~~'S1W,,ttIuWq[t999*1eYMMMr   zaten::nonzeroc                J    t          | |                     d|                    S )z/Emitted from `torch.nonzero(x, as_tuple=False)`NonZero)r   r%  r0  s     r  r   r   y  s"     QY&&'''r   zaten::nonzero_numpyc                D    t          | t          | |          d|          S )NrF  )rd  )r   r   )r)  r1  rd  s      r  r   r     s%     !WQ&&H====r   zaten::isnanc                2    |                      d|          }|S )NIsNaNr/  )r)  r1  r  s      r  rn   rn     s     TT'5!!FMr   z	aten::anyc                   t          |          dk    r|d         }d\  }}nO|\  }}}t          j        |d          }d |                    d          D             }t          j        |d          }|                     d|t
          j        j        	          }t          j        | |||
          }t          | ||                     dt          j        dt          j                                      S )NrF  r   rW  r   c                ,    g | ]}t          |          S r!  r  )r  r>  s     r  r  z_any.<locals>.<listcomp>  s    ,,,!s1vv,,,r   r.  r  rq  rr  r  r`  r  ra  )rX  r   r  r  r%  rt  ru  rv  r  r_   rc  r   r  )r)  rZ  r1  rB   r8  	input_sums         r  _anyr    s     4yyA~~QWW #sG(c22,,sxx||,,,!,Wc::DDW%@%FDGGE1	5  I aADDU\!5:5V5V5VDWWXXXr   z	aten::allc           
        |                      d|d                   }t          |          dk    r$|                      dt          | |                    S |                      dt          | ||d         |d                             S )Nr  r   rF  r  )r%  rX  r  )r)  rZ  r1  s      r  _allr    sp    DDQ  E
4yyA~~ttE45>>*** ttE45$q'47;;<<<r   zaten::narrowc                @    t          j        | ||g|g||z   g          S )Nrx  r  )r)  r1  rB   r+  lengths        r  r   r     s4     (	5ueWEFN3C   r   zaten::argmaxtorch._C.Valuer8  c                2    t          j        | |||d          S )NArgMaxr   _argmin_argmax_helperr)  r1  rB   r8  s       r  r   r          0E3RRRr   zaten::argminc                2    t          j        | |||d          S )NArgMinr  r  s       r  r   r     r  r   zaten::scatterc           
        t           j                            |t           j        j                  }t	          j        |          }t	          j        |          r|                     d||||          S t           j                            |          }||k    r*|                     d||                                          }|                     d||t          | ||          |          S )NScatterry  rq  rr  )
r
   rw  rx  ry  r   rL  rH  r%  r|  rN   )r)  r>  rB   rj   srcsrc_typer  s          r  r   r     s     (33[&0 H 
+C
0
0C %% RttItUCt<<< '4??EEx''$$vs)9)C)C)E)E$FFCttItUIae,D,DStQQQr   zaten::scatter_addc                z   t          j        |          }|t          j        dd|          S t          j        |d          }|r>|                     dt          j        ||                                                    }nt          | ||          }t          j	        | ||||          }t          | ||          S )Nr   r  F)allow_nonstaticr`  r  ra  )r   r  rb  r  r%  rc  r  r  r  _scatter_helperr   )r)  r>  rB   rj   r  r~  r  to_adds           r  r   r     s     "6t<<K-7
 
 	
 -dEJJJE 2j%+e;CTCTCVCV*W*W*WXXAt[11,QUCHHFq$r   z
aten::log2c           
         d}|                      dt          | |          |                      dt          j        |                              S )Ng9B.?rp  r`  ra  rU  )r)  r>  _ln2s      r  r   r     s?    D44s1d||QTT*el4>P>PT%Q%QRRRr   zaten::is_floating_pointc                    t          j        |          r*|                     dt          j        dg                    S |                     dt          j        dg                    S Nr`  rF  ra  r   )r   rz  r%  rc  
BoolTensorr  s     r  rl   rl     s[    d## ?ttJ(8!(=(=t>>>44
E$4aS$9$94:::r   zaten::__is_c                   t          j        |          rht          j        |          r*|                     dt          j        dg                    S |                     dt          j        dg                    S t          | ||          S r  )r   rK  r%  rc  r  rK   rU  s      r  __is_r    s    && ?#D)) 	C44
E,<aS,A,A4BBBttJ(8!(=(=t>>>aur   zaten::__isnot_c                $    t          | ||          S r  )r  rU  s      r  __isnot_r    s     D%   r   zaten::one_hotc                   |                      dt          j        ddg                    }t          j                            |t          j        j                  t          j        j        t          j        j        t          j        j	        t          j        j
        hv r'|                      d|t          j        j                  }|                      d|||d	          S )
Nr`  r   rF  ra  rq  rr  OneHotr.  ry  )r%  rc  r2  r
   rw  rx  ry  r  r  r  r  rt  ru  rv  )r)  r>  num_classesr'  s       r  r   r   	  s    TT*e&61v&>&>T??F ++[.8  	!'!&!%!'	
  dd6;W5P5VdWW44$VB4???r   zaten::gatherc           
     r   t          j        |d          rt          j        dd|          S t          j                            |          }|                     dt          j        ddg                    }t          | ||                     dt          j        |g                              }|                     d|                     d	||||
          |
                                          }|                     dt          j        | ||dz   g          |          }t          j        | ||gd          S )Nr  rY   zsparse_grad == Truer`  r   rF  ra  rq  r  ry  rr  rG  r  )r   r1  rb  r
   rw  rx  r%  rc  r2  r   r|  r  r  )	r)  r>  rB   rj   sparse_gradr~  r'  depthr   s	            r  rY   rY     s%    'S99 U-h8MtTTT +66t<<KTT*e&61v&>&>T??FD!$$z53CSE3J3J$KKLLEDD	XueVC88""$$   E
 $$uo74#'KKU
S
SC,QSEaPPPPr   c                2    t          j        | ||||          S r  )r   _var_mean_helper)r)  r1  rB   
correctionr8  s        r  	_var_meanr	  ,  s    +Auc:wOOOr   z	aten::stdc                P    t          | |g|R  \  }}|                     d|          S Nr  r	  r%  r)  r1  rZ  r
  r  s        r  r   r   1  s1    a&&&&FC44r   z	aten::varc                (    t          | |g|R  \  }}|S r  )r	  r  s        r  r
  r
  7  s"    a&&&&FCJr   zaten::var_meanc                v    t          |          dk    rt          | |d |d         d           S t          | |g|R  S )NrF  r   )rX  r	  )r)  r1  rZ  s      r  r	  r	  =  sC    
4yyA~~E4a$777E)D))))r   zaten::std_meanc                T    t          | |g|R  \  }}|                     d|          |fS r  r  )r)  r1  rZ  r
  r  s        r  r   r   E  s6    E)D)))IC44d""r   zaten::logsumexpc                4    |                      d|||          S )NReduceLogSumExpr  r/  r  s       r  r   r   K  s     44!54IIIr   aten::arangec                    d } 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          }	                     d|	t          j	        |          
                                	          S t          |          d
k    st          |          dk    rot          |          d
k    rd }n ||d                   }t          j         |d         |d         |d         |          \  }}}}t          j         |dg          }t          j         |dg          }t          j         |dg          } |                     d                     d||          |                    }t          j         t           t           |d d d                     dg          }	                     d                     d|	|          |          }	                     d|	t          j	        |          
                                	          S t          |          dk    r ||d                   }t          j         |d         |d         |          \  }}}}t          j         |dg          }t          j         |dg          } |                     d||                    }                     dt          j         t           t           ||g|dd          R            dg          |          }	                     d|	t          j	        |          
                                	          S t          j        ddt          |           d          S )Nc                0    t          j        | d          } | S r+  )r   r1  r  s    r  _get_arange_dtypez!arange.<locals>._get_arange_dtypeS  s    0<<r   c                    t          j        |           rM                    d                    d|           t          j        j                                                  } | S )Nrq  r  rr  )r   rz  r%  r
   rw  rv  r|  )range_tensorr)  s    r  _float_step_convertz#arange.<locals>._float_step_convertW  s_    !,// 	44V\** .4>>@@    L
 r   r  r?  rF  r   )r,  r  rq  rr  r=  r  r  )r+  r,  r  r  rp  rP  rD  rG  r  )r+  r,  r  r  r  r  )rX  r   _arange_cast_helperr  ru  r   r   r%  r
   rw  r|  rb  )
r)  rZ  r  r  r  r,  r+  r  r  arange_tensors
   `         r  r   r   Q  s%          4yyA~~Tat99>>EE &%d1g..E"1"E47%#
 #
 #
sE4 /3<<**3//'7wq$q,tTBBCCaS
 
 ttM(A%(H(H(R(R(T(T  
 
 	
 
Ta3t99>>t99>>EE &%d1g..E"1"ET!W$q'Qu#
 #
 #
sE4 0D1#>>/3<<1!UQC@@**144qttE37N7NPT+U+UVV'7wq$q,dDAABBQC
 
 UADDt$D$DeLLttM(A%(H(H(R(R(T(T  
 
 	
 
Ta!!$q'**"1"ET!W$q'#
 #
 #
sE4 /3<<1!UQC@@**144sE+B+BCC+71d1lEGT!""XGGGHH1#  
 
 ttM(A%(H(H(R(R(T(T  
 
 	
 ).:W#d)):W:W:WXXXr   zaten::linspacec                2   t          j        | |d           }t          | t          | ||          t          | ||                     dt          j        dt
          j                                                }	t          | t          | ||	          |          S )Nr`  rF  r  ra  )
r   _arange_helperrC   r   r%  rc  r   r  r   r   )
r)  r+  r,  stepsr  r  r  r  r  r  s
             r  r{   r{     s     #1!UDAAL	AsEAuadd:u|AU[/Q/Q/QdRRSS D
 q#at,,e444r   z
aten::liftc                    |S r  r!  r  s     r  ru   ru     s	     Kr   zaten::masked_fillc                    |                      d|t          j        j                  }t	          j        |          }|                      d|t	          j        ||          |          S )zImplement the masked_fill functionality available for a pytorch tensor in ONNX.

    Fills elements of the input tensor with `value` where `mask` is True.
    rq  rr  r  )r%  rt  ru  r  r   rL  r  r)  r>  maskrf  s       r  r   r     sW     447#>#C4DDD-e44E44A%NNPTUUUr   zaten::masked_fill_c                &    t          | |||          S r  )r   r!  s       r  r   r     s    q$e,,,r   aten::indexc           	     "    t          j        |          rt          j        |          }n|g} fdfd|D             }t          |          dk    rt          j         d|d         d          S d t          |          D             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                      fdt          |          D                                  dfdt          |          D             z                                  d|          |d                  }d                  }t          |dz
  dd          D ]_}                     d||                  |          }	                     d||	          }                     d||                            }`t           d|          t           |          }
t!          t          d         d         dz                       k    r9                     dt#          j        dg                    gfdt          |          D             z   }  j        dg|R ddi}t          j         |          t!          t          dd         dz                       dgz   t!          t          d         dz   ||z
  dz                       z   }                     d|          fdt          d                   D             |
gz   fdt          d         |          D             z   }  j        dg|R ddi}n,  j        d|
gfdt          |          D             R ddi}t          j         |          S )Nc                   t          j        |           st          j                            | t          j        j                  t          j        j        k    st          j        |           rY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.rF  )r   rK  r
   rw  rx  ry  r  rT  r  r   rm  rC  rD  ru  r   )rj   r)  r>  s    r  try_mask_to_indexz index.<locals>.try_mask_to_index  s    '.. 	O%00{0:  (./ / '..	/ w{{/U   M=  
 $3Awq%7H7H1#NNEr   c                &    g | ]} |          S r!  r!  )r  r'  r'  s     r  r  zindex.<locals>.<listcomp>  s%    999#  %%999r   rF  r   F)apply_reshapec                @    g | ]\  }}t          j        |          |S r!  )r   rK  )r  r  r'  s      r  r  zindex.<locals>.<listcomp>  s<     
 
 
!So6Ns6S6S

 
 
r   r$  z9operator of advanced indexing on tensor of unknown rank. 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.c                    g | ]C}                     d                      dt          j        |g                    d          DS )rA  r`  ra  r   ry  )r%  rc  r2  )r  rB   r)  shape_tensors     r  r  zindex.<locals>.<listcomp>  sg          DDU-=se-D-DDEE	     r   r"  c                    g | ]}|v|	S r!  r!  )r  r  adv_idx_indicess     r  r  zindex.<locals>.<listcomp>   s#    FFFQo-E-E1-E-E-Er   r#  r  ry  r.  r  rG  rD  r`  ra  c                (    g | ]}|v|         S r!  r!  r  r  r.  dim_tensor_lists     r  r  zindex.<locals>.<listcomp>;  s/       +,q?W?WOA&?W?W?Wr   r5  r6  c                     g | ]
}|         S r!  r!  )r  r  r1  s     r  r  zindex.<locals>.<listcomp>M  s    KKKA_Q'KKKr   c                (    g | ]}|v|         S r!  r!  r0  s     r  r  zindex.<locals>.<listcomp>O  s3       O33 (*333r   c                (    g | ]}|v|         S r!  r!  r0  s     r  r  zindex.<locals>.<listcomp>Z  s3       O33 (*333r   )r   r3  r  rX  r$  r  ri   r  rb  rC  rD  r   r  r2  r)  r%  r8  rc  r2  r<  )r)  r>  rj   rF  r%  adv_idx_countcum_adv_index
multiplierr  	adv_indexcum_adv_index_shape_tensorfolded_adv_idx_shape_listfolded_adv_idx_shapeadv_idx_permutefinal_shape_listfinal_shaper.  r1  r,  r'  s   ``              @@@@r  rj   rj     sn   &u-- !.u55'     * :999999G
7||q-tQ
%
 
 
 	
,
 
%g..
 
 
 1$$K!!Q&&4+W_Q5G-H   #3D99D|&5!O   Mi4i i i    00M+At44L     !;;  O 44&FFFFeDkkFFFG   D 44	44>>D $OB$78M()<=J=1,b"55  DD0B(CZPP	 !UM9 E ETT:q7I'J 


  4M::D)9!])K)K& $oa(/"*=*ABB# #  
 DDU-=rd-C-CDDD-    05d  -)
 (,qt(8( ( (AB( ($ '6q$@TUU q/!"4q"899::c5!3a!79MPQ9QRRSST  
 ttKotFF LKKKq7I1J1JKKK123    !&q'94!@!@   ! #ad8I.>IIIqII"ad.	    !&t  	 	 	 	 	 #21dKHHHr   zaten::linalg_normordSequence[int] | Noner  c                n   d }|t          j        |          rAt          j        | |dg          }|                     dt	          j        dg                    }t          j        |          }|t          j        dd|          S |dk    rt          j        |d          }nkd	dg}nft          |          dk    rSt          j        |          r*|                     dt	          j        dg                    }t          j        |d          }|rt          | |||||          S t          | |||||          S )
Nr.  r`  r  ra  rB   (Input rank must be known at export time.rF  r\  r   )r   rK  r<  r%  rc  r2  r  rb  r  rX  ry   rw   )r)  r>  r?  rB   r8  r  	ord_valueself_dims           r  rx   rx   e  sG    I
{#C(( 	B"21dRDAAD$$z5+;QC+@+@$AAC"3D99"1A4   q=='23<<IIa&CCs88q==',, Fdd:u/?/D/DdEE'23<<I K!!T9c7EJJJasC%@@@r   zaten::linalg_vector_normc                4    t          j        | |||||          S r  )r   _linalg_vector_norm_helper)r)  r>  r?  rB   r8  r  s         r  ry   ry     s      5asCRWXXXr   zaten::linalg_matrix_norm	list[int]c                2   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         k    r|s|dxx         dz  cc<   t          j        | |                     d|          |d         g|          }|dk    rEt          | ||                     dt          j        |d         g                    |          \  }	}
nDt          | ||                     dt          j        |d         g                    |          \  }	}
|	S )Nrh  fronuczlinalg.matrix_normzord==nucr\  r  r  zord==2rB  r   rF  rP  r  r`  ra  )ri  r8  )r   r  rV   rb  r  r  infr  r%  r   rc  r2  r   )r)  r>  r?  rB   r8  r  rC  rD  r  r  rF  s              r  rw   rw     s]     *344IEasG444	e		-.BJPTUUU#.sC88	!!T3888>>Y"__ #12FRVWWW"3D99"1$&PRV  
 q6A::FFFhFFFq6A::FFFhFFF  I$($:$: VSVNCFCFq6CF??7?FFFaKFFF/qttE4  #a&g
 
 
 q==!j%2BCF82L2LMM	  OFGG "j%2BCF82L2LMM	  OFG r   zaten::linalg_crossr.  c                &    t          | |||          S r  )r?   )r)  r1  rB  rB   s       r  rv   rv     s     E5#&&&r   zaten::frobenius_normc                    |                      d||          }t          j        | |||          }|                      d|          S )NrG  r  r  )r%  r   r  )r)  r>  rB   r8  sqrsumsqrs         r  rV   rV     sF     $$udD
!
!C.q#cgVVVF44r   zaten::multinomialc                   |*t          j        |          st          j        dd|           |s|dk    rt          j        dd|           t          | |          }|                     d|t
          j        j        |          S )NMultinomialz*generator is not supported for multinomialrF  zGreplacement=False when num_samples > 1 is not supported for multinomial)r  sample_size_i)r   rK  rb  r~   r%  rt  ru  rv  )r)  r1  num_samplesreplacementr  	log_inputs         r  r   r     s    
 _%=i%H%H&G	
 	
 	
  
;??&U	
 	
 	
 AuI44+1!	    r   zaten::baddbmmc           
     h   t           j                            |          }t          | ||          }t	          | ||                     d||                                                    }t	          | ||                     d||                                                    }	t          | ||	          S r  )r
   rw  rx  r   r   r%  r|  r   )
r)  r>  batch1batch2r  rN  r~  	batch_mulmul_amul_bs
             r  r"   r"     s    +66t<<Kq&&))I		VU!6!6!8!899 E
 		VT 5 5 7 788 E
 q%r   zaten::meshgridindexing
str | Nonec           
         |d}n|dvrt          j        d| |          t          j        |          }|dk    r|dd d         |d d<    fd|D             } fd	|D             }  j        d
g|R ddi}g }t          |          D ]\  }}	                     dt          j        dt          j                            gt          |          z  }
||         |
|<   t           |	  j        d
g|
R ddi          }|                                         d||                     |dk    r|d         |d         c|d<   |d<     j        dg|R  S )Nij>   r_  xyzUnsupported indexing: r`  rF  r.  r  c                    g | ]@}t          j        |                    d t          j        dg                              AS )r`  r.  ra  )r   r<  r%  rc  r2  r  r   r)  s     r  r  zmeshgrid.<locals>.<listcomp>  s\         	'q!$$z5+;RD+A+A$BB	
 	
  r   c                <    g | ]}                     d |          S )r.  r/  rb  s     r  r  zmeshgrid.<locals>.<listcomp>  s'    777!QTT'1%%777r   r5  r6  r   r`  r  ra  r/  prim::ListConstruct)r   rm  r   r  r%  r  rc  r   r  rX  r:  r  )r)  r  r\  unpacked_tensor_listr  tensors_shape	out_shaper}  r  r   r  
t_reshapeds   `           r  r   r   
  s    		%	%'/X//
 
 	
 +7DD4#72#>RaR     &	  G 8777w777MX8888a88I
C'"" : :144
EJq,L,L,L4MMNQTR
 R
 
 #1%
)!QX0R0R0R0RPQ0R0RSS


144*i8899994QQAA14%,,,,,r   zaten::remainderc                    t          | ||          }|                     d||          }|                     d||          S )NrG  rP  )rk  r%  )r)  r1  rB  rC   quos        r  r   r   +  s>    
5%
(
(C
$$uc5
!
!C44uc"""r   z
aten::geluapproximatec                >   |dk    r5t          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          | ||                     d|
                                        S d}|                     d	|                     d
|t          j        |t          j                                      }t          | ||                     dt          j        dt          j                                      }t          | t          | ||          |                     dt          j        dt          j                                      S )Nr   r  gHm?r  r]        ?r  g;f?r  rp  r`  rF  ra  )	r  r   r  rc  r   r  r   r   r%  )r)  r>  rk  kBetakKappar  kappar  half	self_cubeinner_sqrt2rL   erf_plusones                 r  r[   r[   2  s    f	!dg+&&|E666V5<888l3el333|Cu|4444Qd!3!344	AtSD#a	*B*BCCDD1dC4QQTT&%5H5H)I)IJJKKK#dd5!$$udELu|,T,T,TUUVVsADDU\!5<-P-P-PDQQ
 
 4%%DDU\#U\%J%J%JDKK
 
 	
r   zaten::group_normc                   t          j        |d          }|||z  dk    sJ t          j        |          }|t          j        dd|          S d|dg}	t          j        | ||                     dt          j        |	                              }
|                     dt          j        dg|z  t          j
                            |                                          	                    }|                     dt          j        d
g|z  t          j
                            |                                          	                    }|                     d|
|||          }t          j        | ||                     d|                    }|&|                                                                r]t          j        dgt          j
                            |                                          	          }|                     d|          }|&|                                                                r]t          j        d
gt          j
                            |                                          	          }|                     d|          }t          t!          d|dz
                      }t#          | t%          | |t          j        | ||                    t          j        | ||                    S )NrF  r   r^   zunknown input rankr.  r`  ra  r]  r  r  r  r  r.  )r   r  r  rb  r<  r%  rc  r2  r   r
   rw  rx  r  r  
mustBeNoner8  r)  r   r   r  )r)  r1  
num_groupsrE  r  r  r  r  
input_rankr9  r  r  r  norm_reshapedr   r  r  r  s                     r  r^   r^   N  s    #7qAALj(A---- 1%88J-l<PRWXXX
BE$4	5!$$z5+;E+B+B$CC N ddEJ+66u==CCEE
 
 
   G DDEJ+66u==CCEE
 
 
   E DD%3   M *1mQTT'5=Q=QRRD~1133~|E2==eDDJJLL
 
 
 j,77|tyy{{--//|\E2==eDDJJLL
 
 

 ttJ
t33 aa(())D	At_6q&$GGHH)!T488  r   zaten::_weight_normc                b   t          j        |          }|t          t          |                    }|&|dk     r||z  }|dk    r|                    |           t          | |d|d          }|                     d||          }|                     d||          S t          j        d|          )Nr.  r  rF  rp  rG  zDUnsupported: ONNX export of _weight_norm for tensor of unknown rank.)	r   r  r8  r)  remover   r%  r   rm  )r)  r  weight_grB   r%  r  norm_vrC   s           r  _weight_normr    s     +H55D E$KK  ?RxxtbyyC   a1dA..dd5(F++ttE3)))

#N  r   z	aten::dimc                Z    |                      d|          }|                      d|          S )zFImplement the dim functionality available for a pytorch tensor in ONNXr.  Sizer/  r=  s      r  rB   rB     s+     DD$E44r   zaten::__contains_c           	     b   t          j        |          }t          d |D                       rnt          j        |          rZ|                     dt          j        t          j        |                                d          d |D             v                     S t          j
        d|          )Nc              3  >   K   | ]}t          j        |          V  d S r  )r   r  r  r?  s     r  r  z__contains_.<locals>.<genexpr>  s>        ,-$Q''     r   r`  rf  c              3  d   K   | ]+}t          j        |                                d           V  ,dS )rf  N)r   rj  r  r  s     r  r  z__contains_.<locals>.<genexpr>  s7      XXQO-affhh@@XXXXXXr   ra  zJUnsupported: ONNX export of __contains__ for non-constant list or element.)r   r  r  r  r%  rc  r   rj  r  r   rm  )r)  r>  elementunpacked_lists       r  __contains_r    s    #066M
  1>     	


&w
/
/	
 ttL)',,..'BBXX-XXXY   
 
 	
 
#T  r   zaten::__getitem_c           
     v    t          | ||                     dt          j        dg                    |          S r  )r   r%  rc  r   )r)  r>  r  s      r  
__getitem_r    s2    !T144
EL!4E4E4FFJJJr   z
aten::itemc                    |S r  r!  r  s     r  ro   ro     r  r   z
aten::takec                    t          j        | ||                     dt          j        dgt          j                                      }t          | |d|          }t          | ||          }|S )Nr`  r.  r  ra  r   )r   r<  r%  rc  r   r  ri   r   )r)  r>  rj   self_flattenedr}  s        r  r   r     si    $4	4j%,t5;*O*O*OPP N q.!U
3
3C
QU
#
#CJr   c                j    t          | ||          }t          | |          }t          | ||          }|S r  )r   rM   r   )r)  r1  targetdiff_exp_r  s         r  _kl_div_log_target_implr    s6    65!!Eq&>>DD%  FMr   c           
        t          | |          }t          | ||          }t          | ||          }t          | |          }t	          | ||                     dt          j        d                              }t          | |||          }|S r  )	r~   r   r   r  r_   r%  rc  r   r  )	r)  r1  r  log_r  
output_poszeros_mask_r  s	            r  _kl_div_non_log_target_implr    s    q&>>D4EQ&&J:&&Fq&!$$z5<??$CCDDE1eZ00FMr   zaten::kl_divc                    |rt          | ||          }nt          | ||          }|dk    r|S |dk    r|                     d|d          S |dk    rt          j        | |d          S t          j        d|          S )Nr   rF  r
  r  r  z4kl_div with reduction other than none, mean, or sum.)r  r  r%  r   r  r  )r)  r1  r  	reduction
log_targetr  s         r  rp   rp     s      ?(E6::,Qv>>A~~	attL&Qt777	a0FqIIII0BE
 
 	
r   zaten::mse_lossc           	        t          | t          | ||          t          | ||                    }|dk    r|S |dk    r|                     d|d          S |dk    rt          j        | |d          S t          j        d|          S )Nr   rF  r
  r  r  z6mse_loss with reduction other than none, mean, or sum.)r   r   r%  r   r  r  )r)  r1  r  r  r  s        r  r   r     s     C5&))3q%+@+@AAFA~~	attL&Qt777	a0FqIIII0De
 
 	
r   zaten::as_stridedc                x   t          j        |d          }t          |          }t          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        |	                              |          |
z  z   }A|r||z   }|                     d||                     d|                    S d }t          |          D ]\  }}
dg|z  }d||<   t          | ||                     dt          j        dg                    |                     dt          j        |                              }	t          j        | t          | |	d	d d d           |                     dt          j        |                              }|                     d
||                     dt          j        |
g                              }||}|                     d||          }|r>|                     d||                     dt          j        |g                              }|                     d||          S )Nr-  r`  r.  r  ra  r   rF  rA  r=  rG  rD  )r   r1  rX  r<  r%  rc  r   r  rH  r  r  r  r   r  r   )r)  r>  r  stridesoffsetr%  self_1dindr  r   r  r_sizetmp_inds                r  r   r   	  s    ,UD99Ew<<D-	4j%,t5;*O*O*OPP G $U++ ",lA3ej111!*3ug+>+>!?!? 	A 	AA~fS4ZFF1IT**//77&@@CC 	,CttHgqttJt'D'DEEE"7++ 	0 	0IAvS4ZFF1IZqc):):;;Za99	 D &5q$4t44Zf)=)=>> G
 ddwZvh9O9O P P G {dd5#w// 	M$$uc144
EL&4J4J#K#KLLCttHgs+++r   zaten::__derive_indexc           	     Z    |                      d||                      d||                    S )NrD  rG  r/  )r)  rj   r+  r  s       r  __derive_indexr  8  s(    44uadd5%66777r   zaten::__range_lengthc                    |                      d||          }|                      dt          | ||                    }|                      d|t          j        j                  S )NrP  r  rq  rr  )r%  r   rt  ru  rv  )r)  lor  r  r   rC   s         r  __range_lengthr  =  sV     $$ub"

C
$$v{1c400
1
1C44'"="C4DDDr   zaten::linearc                4   t          j        |          }t          | |          }|dk    r|                                                                s|                     dt          j        dt          j                            }|                     dt          j        dt          j                            }t          | |||||          }nHt          | ||          }|                                                                st          | ||          }|S )Nr  r`  rF  r  ra  )r   r  r   r  rw  r%  rc  r   r  r   r   r   )r)  r1  rE  r  r%  rN  r  r  s           r  rz   rz   L  s    +E22Dq&\\Fqyy//11yZau{)K)K)KLLttJQek(J(J(JtKKq$vud;;5&))yy{{%%'' 	*D&))FMr   zaten::hann_window
int | Nonec                   |Ht          j                    }|r|j        st           j        }t          j                            |          }	nt	          j        |          }	t          | |dd d d           }
|                     d|
t          j
        j                  }t          | |                     dt          j        t          j        t           j                            |          }|du rDt!          | ||                     dt          j        dt           j                                      }t%          | ||          }|                     dt'          | t)          | |                    |	                                          }|S )	Nr=  rq  rr  r`  r  ra  FrF  )rc  r  rl   r  r
   rw  
from_dtyper   r%  rt  ru  r{  r   r   r  r  r   r  rC   r   r   r|  )r)  window_lengthperiodicr  r  r  r  r  dtype_r~  n_arrayr  s               r  r`   r`   \  sb    }(** 	!V5 	![F!/::6BB!/66Qq$d;;GTT&'(C(ITJJF	144
EL$L$L$L4MMv F 5}add:u|AUY7W7W7WdXX
 
 FM**FTTq#a..!!""$$   F Mr   zaten::mvc                $    t          | ||          S r  r   )r)  r>  vecs      r  r   r     s    !T3r   z	aten::dotc                $    t          | ||          S r  r  rU  s      r  rD   rD     s    !T5!!!r   zaten::movedimc                   |                     d          }|                     d          }|                                |                                k    sJ ||k                                    r|S t          j        |          }|J t          t          |                    }|                                }|                                }t          |	                                |	                                          D ]\  }}	|||	<   d||<   d||	<   d |D             }d |D             }t          ||          D ]
\  }}	|||	<   | 
                    d||          S )Nr.  c                    g | ]
}|d k    |S r.  r!  r  rB   s     r  r  zmovedim.<locals>.<listcomp>      5553"99999r   c                    g | ]
}|d k    |S r  r!  r  s     r  r  zmovedim.<locals>.<listcomp>  r  r   r"  r#  )r  r   r  r   r  r8  r)  r  r  tolistr%  )
r)  r>  r2  destinationr  r+  src_dimsdst_dimsr  dsts
             r  r   r     sh    [[__F""2&&K;;==K,,......+""$$ 066I   i  !!Dyy{{Hyy{{H););)=)=>>  SS	55x555H55x555H(++  SS		44T$4///r   z
aten::fillc                    t           j                            |t           j        j                  }t	          | |||          S r  )r
   rw  rx  r{  rW   )r)  r>  rf  r~  s       r  rQ   rQ     s=     +66k'- K Qe[111r   zaten::index_addc           
        t          j        d           |r@t          j        t          j        |                    dk    rt          j        dd|          S t          j        d          t          j        d|          t          j	        |          }t          j	        |          }||t          j        d|          ||k    r@||z
  }t          |          D ]+}	t          j        | |t          j	        |          g          },t          j        |          }
t          j        |          }|
||
|k    rt          j        d|          t          t          |                    }d	 t          |          D             }fd
t          |          D             }t          j        | ||||          }t          | ||          }t                    D ]}	t          j        | |dg          }t          |z
  dz
            D ]+}	t          j        | |t          j	        |          g          },t!          | |t          | ||          |          S )NzyWarning: ONNX export does not support duplicated values in 'index' field, this will cause the ONNX model to be incorrect.rF  re   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.c                    g | ]}d S r  r!  r  s     r  r  zindex_add.<locals>.<listcomp>  s    888a888r   c                8    g | ]}|k    rt           j        nd S r  )sysmaxsize)r  r  rB   s     r  r  zindex_add.<locals>.<listcomp>  s'    UUU1a3hhckkQUUUr   rx  r   )rC  rD  r   rK  rL  rb  r1  r   rm  r  r)  r  r  r8  rz  rN   r   )r)  r>  rB   rj   rB  rN  self_dim_rankother_dim_rankdeltar  other_dim_sizeself_dim_sizenew_shape_axesnew_shape_startsnew_shape_endsr7  s     `             r  re   re     s   M	<    O()J5)Q)QRRVWWW-k<NNN

*3
4
4C
{'#
 
 	
 $4T::M$5e<<N 6'H
 
 	
 &&.u 	 	A#55?;EBBC EE %9%EEN#8sCCM")BM))+>   %..//N885#7#7888UUUUm@T@TUUUN-	4n-=N  I a	**E3ZZ A A1!UQC@@=3&*++ 
 
1u7>>?
 
 q$Yq%%?%?GGGr   z
aten::rollc           	        t          |          t          |          k    sJ |}t          t          |                    D ]}g }t          j        | |||         g||          gt          j        g          }|                    |           t          j        | |||         gdg||          g          }|                    |            | j        dg|R d||         i}|S )Nrx  r   r5  r6  )rX  r)  r   rz  r  r  r  r%  )r)  r>  shiftsr=  r  r  r  r9  s           r  r   r     s    v;;#d))####F3v;; 
9 
9-vT!WIq	zl#+
 
 
 	e-vT!WIqc&)
 
 
 	eh8888Q88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  rF  )r   _get_dim_for_crossr   r   r   )r)  r1  rB  rB   roll_x_1roll_y_1roll_x_2roll_y_2s           r  r?   r?     s     
,UC
8
8C
 AuqcC5))HAuqcC5))H AuqcC5))HAuqcC5))H q#a8,,c!Xx.H.HIIIr   zaten::cdistr  #use_mm_for_euclid_dist_if_necessaryc                    t          j        |          }|J t          j        | ||dz
  g          }t          j        | ||dz
  g          }t          | |||dd          S )NrF  r  gư>F)r  r8  )r   r  r  r   )r)  rA  rB  rI  compute_moder%  broadcasted_x1broadcasted_x2s           r  r,   r,   '  sx     +B//D$6q"taxjIIN$6q"taxjIIN	>>1%   r   z
aten::lerpc                   |                      d||          }t          | |                      d||                      dt          j        d                              |                      d||                      d||                    |                      d||                      d||                      d|                      dt          j        d                    |                                        S )	NrP  r  r`  rm  ra  rD  rG  r]  )r%  r  rc  r   )r)  r>  r,  rE  diffs        r  rt   rt   >  s     44sD!!D		VVQTT*el36G6GTHHII	UD!$$ufd3344	DDUADDU\#5F5FDGGPP 	
 	
	  r   zaten::broadcast_tensorsc                     t          j        |          }t           |d                   |D ]}t           |           fd|D             }  j        dg|R  S )Nr   c                2    g | ]}t          |          S r!  )rN   )r  r   r)  t_with_final_shapes     r  r  z%broadcast_tensors.<locals>.<listcomp>]  s&    GGGai1011GGGr   rd  )r   r  r  r   r%  )r)  r>  all_tensorsr   t_listr  s   `    @r  r(   r(   S  s    !.t44K#A{1~66  ; ; $6::GGGGG;GGGF14%/////r   zaten::is_pinnedc                    d S r  r!  )r)  r>  r  s      r  rm   rm   a  s	     4r   prim::ConstantSplitc           	         t          j        ||          }|t          j        dd|          S |g||z  z  }||z  }|r|                    |           |                     d|||t          |                    S )Nr  r]  r^  r_  )r   r  rb  r  r%  rX  )r)  r>  re  rB   r   rf  rg  s          r  r   r   g  s    /c::D|-!#;T
 
 	
 \TZ/0Fj H  h44vc3v;;4OOOr   prim::ConstantChunkc                    t          j        ||          }|t          j        dd|          S ||z   dz
  |z  }t          | |||          S )Nr  r]  rF  )r   r  rb  r   )r)  r>  rc  rB   r  re  s         r  r   r   y  sa    3D#>>H-!#;T
 
 	
 V#a'F2Jq$
C888r   zprim::shapec                .    |                      d|          S r-  r/  r  s     r  r   r     s    44r   z	prim::maxc                4    t          j        | d||d          S )Nra  r\  r  r  rU  s      r  r   r     s'    7	5$B   r   z	prim::minc           
         |s]t          j        |          r9t          | ||                     dt	          j        dg                              }t          | |          S t          | ||          S r  )r   r3  r   r%  rc  r   r   rU  s      r  r   r     sk     *400 	OD!$$z5<;L;L$"M"MNND1d||q$r   z
prim::datac                    |S r  r!  r  s     r  r   r     r  r   zprim::layoutc                T    |                      dt          j        d                    S r  r  r  s     r  r   r     s"     44
ELOO4444r   rd  c                    d S r  r!  r)  r{  r  s      r  r   r         4r   zprim::ListUnpacklist[_C.Value] | Nonec                    t          |          dk    rJ|d                                                                         dk    rt          j        |d                   S d S )NrF  r   rd  )rX  r  r  r   r  r  s      r  r   r     sV     6{{aF1INN,,11337LLL +F1I6664r   zprim::TupleConstructc                    d S r  r!  r  s      r  r   r     r  r   zprim::Uninitializedc                    d S 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        }|                     dt          j        |                    S r_  )r   r  r
   rw  r{  r%  rc  r   )r)  r>  r~  s      r  r   r     sC    !6t<<K!/544
EL$=$=4>>>r   prim::tolistc                h    t          j        |d          }|dk    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  rF  r  zdim_val > 1)r   r1  rb  )r)  r1  dim_valelem_ty_valrB   s        r  r   r     s9     
*7C
8
8C
Qww-nmUSSSLr   r  Nonec                   | j                                                                         }t          |t          j                  rd S t          j        dd|                                 d| j                                                   S )Nr  z,output type should be 'DeviceObjType', not '')	original_noder  r  r7  r   rl  r   rb  r  )r)  r{  r  output_types       r  r   r     s~    /((**//11K+r/00 t)L{7G7G7I7ILLL	    r   z
prim::Looplist[_C.Value]c           	     
   | j         }| j        }| j        }| j        }t          j        }t          j        }t          |                                          }	t          j
        | dg|R |                                t          |	          d\  }
}}t          |	|          D ]\  }}t          |                                          D ]\  }}|dk    r@|t          |          k     r-|                    ||                                                    |dk    rr|dz   t          |          k     r\t%          |                                t&          j                  s0|                    ||dz                                                       t*          j                            ||j        |||d           t*          j                            ||          }t          j        r!t*          j                            |||           |S )NLoopra  n_blocksr   rF  F)r  envvalues_in_envparams_dictr   r  r  r  blocksr   add_op_with_blocksoutputsSizerX  r  r  r{  r&  r  r7  r   r'  rc  _jit_pass_onnx_blockblock%_jit_pass_fixup_onnx_controlflow_nodeonnx_shape_inference(_jit_pass_onnx_node_shape_type_inference)r)  r{  attrsr  r  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OM-K"75Mt{{}}%%J3<3O	644 4$($4$4$6$6Z4 4 40N& ),J8J(K(K 
 
$	$ !!1!1!3!344 	3 	3GAtAvv!c&kk//VAY^^--...
 AUc&kk))"499;;@@ * VAE]//11222%%# 	
 	
 	
 	
 HBB- M # 
99k=	
 	
 	
 r   zprim::Ifc           	        | j         }| j        }| j        }| j        }| j        }t
          j        }t
          j        }	|d                                         	                                dk    }
|
rzt          j        |d                                         d                                          }t          |t                    rt          |          nt!          |          }|rdnd}t          |                                          |         }t$          j                            |||||d          }t          |                                          }t          |                                          }g }t-          t/          |                    D ]T}||         |vr%t1          j        d||          d||                   |||                  }|                    |           U|S t7          |                                          }t9          j        | dg|R |                                t/          |          d	\  }}}t?          ||          D ].\  }}t$          j                            ||j        |||d
           /t$          j                             ||	          }t
          j!        r!t$          j        "                    |||	           |S )Nr   rk  rf  rF  TzThe sub block ATen output z is not in env.Ifr  F)#r  r  r  r  r  r   r  r  r  r  r   rj  r  r7  r8  r  r  r  rc  r   r
  ra  r)  rX  r   rm  r  r  r   r  r	  r  r  r  r  )r)  r{  r  r*  r  r  r  r  r  r  	static_if
input_flagr  	block_idx	current_bif_output_listcurrent_b_listfinal_b_listr'  onnx_br  r  r  r  r  r  r  s                              r  r   r   $  s   	AGE
%COM-K"75Mq	  %%''+;;I L4 %.vay~~/?/?IIPPRR
)*d;;QC
OOOjAQAQ 	 %+AA!	$$Y/	h++ 
 
 aiikk**i//1122^,,-- 	( 	(Cc"#--/U1DUUU"3'   ,-F''''188::&&
7@7St8
8
 8
&'mmooJ8
 8
 8
4*H -0
<N,O,O 	 	(I(H))!'$    FFm
 
 ' 	H==+}   r   r$  c           	     4     j         }|                                rd S t          |                                                                t
          j                  rd S |                    d          dk    r*                     dt          j
        |d                    S |                    d          dk    r*                     dt          j
        |d                    S |                                                                                    t
          j                                                  sU|                                                                                    t
          j                                                  r<                     dt          j        t          j
        |d                              S |                                                                                    t
          j                                                  r/ fdt          j
        |d          D             }  j        dg|R  S t%          j        d	|                    d           d
t(          j         d|                                          )Nrf  r   r`  ra  rh  value_sc                >    g | ]}                     d |          S )r`  r$  r/  )r  rh  r)  s     r  r  z!prim_constant.<locals>.<listcomp>  s9     
 
 
 DDQD''
 
 
r   rd  z"Unsupported prim::Constant kind: 'z'. Please send a bug report at .)r  rw  r7  r  r  r   rl  rm  r%  r   rj  r  r  r  ofFloatsrc  r   	ofStringsr   rm  r   PYTORCH_GITHUB_ISSUES_URL)r)  r{  r  r  str_constantss   `    r  r   r     sW   ?D t $++--$$&&(899 t{{7s""ttJ(A$(P(PtQQQ{{7s""ttJ(A$(P(PtQQQ{{}}''
  
						)	)"+*>*>*@*@	A	A
 tt_-FtW-U-U V V  
 
 	
 {{}}''(=(=(?(?@@ ;
 
 
 
$.tW==
 
 
 qt):M::::

#	OT[[-A-A 	O 	O'1'K	O 	O 	O  r   
prim::typedevice_valuec                >   |                                                                 dk    r^t          j        |                                                                           }|$|                     dt          |                    S t          j        dd|          S )Nr  r`  r$  r,  z,Device type cannot be statically determined.)	r  r  r   get_device_from_valuer1  r%  r  r   rb  )r)  r-  rZ  r  r  s        r  r   r     s    !!^3301B1B1D1D1J1J1L1LMM44
CKK4888)6  r   zonnx::Placeholderc                ~    | j         }| j        }| j        }| j        }t          j                            ||||          S r  )r  r  r  r  rc  r   '_jit_onnx_convert_pattern_from_subblock)r)  r{  r  r  r  r  r  s          r  r   r     sA    ?DGE
%COM8;;tS-  r   zaten::resolve_conjzaten::resolve_negc                    |S r  r!  r0  s     r  r  r    s	     Lr   zaten::_conjzaten::conj_physicalc                t    t          j        |          rt          j        d|          S t          | |          S )Nz aten::_conj, aten::conj_physical)r   is_complex_valuer  r  r0  s     r  r  r    sD     '.. 
0.
 
 	
 "!U+++r   zaten::logitc                   |                      dt          j        d                    }t          j        |          s|                      d|t
          j                            |                                                    }|                      d||          }|                      d||          }|                      d|||          }|                      d	||          }|                      d|||          }n|}|                      d||          }	|                      d
||	          }
|                      d|
          S )Nr`  r]  ra  rq  rr  rP  r  r  r  rp  rR  )	r%  rc  r   r   rK  r
   rw  rx  r|  )r)  r>  r  r  one_sub_epsself_less_equal_one_sub_epstemporary_selftemporary_self_less_epszr   rC   s              r  r   r     s(   
$$z5<#4#4$
5
5C#C(( ddCk7BB4HHRRTT  
 
 dd5#s++&'dd9k4&H&H#g'BD+VV"#$$v~s"C"CDD13GG
$$uc1

C
$$ua

C44sr   )r  r  )r)  r+  r  )r]  )T)r  r  r  r  r  r  r  )F)r)  r+  r1  r  r  r  r  r  )rB   r  )r)  r+  r1  r  r   r  )
r)  r+  r1  r  r   r  rN  r  rf  r  )r  r  rB   r  rC  r  )r  r   rd  r   )NNN)r)  r+  r1  r  r  r  rE  r  r  r  r  r  rd  r  )r)  r+  r1  r  r  r  rE  r  r  r  r  r  r  r  rd  r  )
r)  r+  r   r  r  r   r  r   r  r  )FF)NN)FN)NNNFN)NNF)r)  r+  r>  r  r  r  r  r  )r  r  )NNFN)r)  r+  r1  r  rB   r  r8  r  )r)  r+  r>  r  r?  r  rB   r@  r8  r  r  r  )r)  r+  r>  r  r?  r  rB   r@  r8  r  r  r  )r)  r+  r>  r  r?  r  rB   rG  r8  r  r  r  r  )NF)r)  r+  r\  r]  )r  )r)  r+  r>  r  rk  r  )TNNNNF)r)  r+  r  r  )r  r  )r)  r+  rd  r  )r)  r+  rd  r  )r)  r+  rd  r  )r)  r+  r-  r  )r)  r+  r1  r  )r)  r+  r>  r  r  r  (m  __doc__
__future__r   r%  ra  r  r  rC  typingr   r   r   rc  torch._C._onnxr   _onnxrt  torch.nn.modules.utils
torch.onnxr   r	   r
   r   r   torch.onnx._globalsr   torch.onnx._internalr   r   torch.typesr   r  partialonnx_symbolic_onnx_symbolicr"  r  r2  r:  r  r   r   r   r   r   r   rC   r  r   rY  rl  rk  rS   rU   r   r   r+   r   r  r   r'   r   r   r   r   r   r   r   r=   r   r   r   r    r!   r   r   r  _apply_paramsr  r@   r  r  r   r   rO   r)   rN   rH   rG   r   r   r   r  r  r  r   r  r   r  r   r   r   r   r   r   r   r   r   r-   rT   r  r   rs   r]   r   r   r\   nnmodulesutils_single_pair_tripler  r   r   r   r  r  r  r"  r2   r/  r   r   r   rM  rS  r%   r&   r  r  ri  rK   r   r_   rs  r   r{  rZ   rr   r  r  r  r   r   r   r   r  r  r  r}   r  r  r  r<   r8   r9   r:   r5   r6   r7   r#   r   rq   rk   r  rF   r   ri   rh   rg   rf   r*   r   r>   r   r1   r   r~   r   r   r   r0   r/   r.   r   r   r   r   r   r   r   rM   rE   r  r   r4   r  r  
deprecatedr  r  r  r  r  r  r  r  r  rJ   rI   r   r   r   r   r  r  r   r  r   r   r   rX   rW   r   rP   r   rd   rc   rb   r   ra   r   r   r  r   r   r   r;   r   r   r   r   r   r  r  r  r   r   r  r  rA   r3   r  r  r   r   r   r   r   r   r   r$   r|   rL   rR   r   r   rn   r  r  r   r   r   r   r   r   rl   r  r  r   rY   r	  r   r
  r	  r   r   r   r{   ru   r   r   rj   rx   ry   rw   rv   rV   r   r"   r   r   r[   r^   r  rB   r  r  ro   r   r  r  rp   r   r   r  r  rz   r`   r   rD   r   rQ   re   r   r?   r,   rt   r(   rm   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>rP     sT    # " " " " "       



  4 4 4 4 4 4 4 4 4 4                                  V U U U U U U U U U U U U U ' ' ' ' ' ' 8 8 8 8 8 8 8 8  #""""""
C C CL #"<#=QGGG      ())      *)  ,--$ $ $ .-$   %%; ; ; &% ! ; "##%%# # # &% $##
 $ $ $ $ $0 $ $ $ $ $* , , , , , ( ( ( ( 9 9 9 9   Cc3//F F F F 0/ ! F
 Cc**
 
 
 +*
   >' ' ' '0 $%%) ) ) &%)
  !!( ( ( "!( #$$$ $ $ %$$6 "##$ $ $ $#$ C%%#0 #0 #0 &% #0L C%%3 3 3 &% 3     
A A A A ' ' ' ' ' ' '  ' Cc3442 2 2 54 2j              KCHHH   IH                             *   KAFFF! ! ! GF ! !      %%K K K &%K 8?8eLLM   9O9,OOP   %%&%	
 	
 	
      	   Cf--D D D .-  D )**H H H +*H '((F F F )(F 	2 2 2 2   %%1 1 1 &% ! 1 %%& & & &%  && $%%%%& & & &% &%&$ !""d++' ' ' ,+ #"'" !""%%Cc344+ + + 54 &% #"+0 %&&%%Cc3S#sCHHP P P IH &% '&P( e<<<6 6 6 6 =< 6 !""%%Cc**
 
 
 +* &% #"
"   C&&0 0 0 '& ! 0 %%" " " &% "   # # # ! #
 $%%Cc3//M M M M 0/ &%M$ Cc3//M M M M 0/ M2 $%%HL> > > > &%> ())CsC00R R R R 10 *)R /00@DA A A A 10A Cc**    +*   %%Cc**7 7 7 +* &%  7( # # #  #   ;J ;J ;J ;J ! ;J| ' ' ' ', 6 6 6 6 E E E E %%   &%  %%! ! ! &% !             9 9 9 9
 !""Cc**   +* #" "##%%Cc**
 	< < < < +* &% $#< C%%7 7 7 &% 7   Cf--; ; ; ; .- ! ;|  !!" " " "!" -..2 2 /.2j %%%(*08!E	
 	
 	
 		   %%%(*06%	
 	
 	
 		   %%%(*08!E	
 	
 	
 		  7 7   67t J..)HIII!&		     J..)HIII!$		     J..)HIII!&		     %%lEH4D4J4RSS   %%lEH4D4J4PQQ   %%lEH4D4J4RSS  4 4   *4n %%!=%(2B2H2P	
 	
 	%&&	   %%!=%(2B2H2N	
 	
 	%&&	   %%!=%(2B2H2P	
 	
 	%&&	   %%!H"*#		
 	
 	%&&   %%!H"(#		
 	
 	%&&   %%!H"*#		
 	
 	%&&  3 3 3      ~3l   "  " '((   )($& & & &R ())())())   *) *) *) )**)**)**   +* +* +* T T T T( %%&:AyII$%%   %%&:AyII$%%   %%&:AyII$%%   %%&91hGG#$$   %%&;QII%&&    %%&<aJJ&''          T$ %&&8 8 8 '&8  #$$   %$ "### # $## 	 	 	         
d++& & & ,+ &2 
d++    ,+  
d++% % % ,+ %) ) ) ) 
d++% % % ,+ %& & & & 
d++% % %  ,+ % 
d++% % %  ,+ % % % %  %  $ $ $ $  % % %  %  #$$f%%% % % &% %$% "##f%%$ $ $ &% $#$ #$$f%%% % % &% %$% #$$S S S %$S !""   #"8 !""   #"8 Cc3//	1 	1 	1 	1 0/ 	1 #$$Cf--    .- %$> $%%Cc**	& 	& 	& +* &%	& $%%c4tS$S#sC " @ @ @ @  &%@F )** 4 4 4  +*4n #$$Cc4tS$LL   ML %$< Cc4dC@@ 
  
  
 A@   
F Cc4dC@@ 
  
  
 A@   
F Cc4dC@@ 
  
  
 A@   
F ())Cc4tS$GG   HG *): ())Cc4tS$GG   HG *): ())Cc4tS$GG   HG *): "##Cc3S#sCHH4 4 4 IH $#4n )**eUE::CsC55I* I* I* 65 ;: +*I*X "##eUE::CsCc::
 
 
 ;: ;: $#
 %&&Cc3S#sCHH\P \P \P IH '&\P~ Cc3//
 
 
 0/  
D %%Cc3//
F 
F 
F 0/ &% 
F %%   &%  $%%Cc**? ? ? +* &%? !""F F F #"F "##	A 	A 	A $#	A "##9 9 9 $#9 !""Cc3//HM T  T  T  T 0/ #" TF      ! ( )**Cc3//# # # 0/ +*#  )**$ $ $ +*$"             Y Y Y Y V V V V
     > > > >* !""C%%

 

 

 &% #"

 !""C%%

 

 

 &% #"

 C C C C	 C   d++) ) ) ,+ ! ) C C C C C   d++) ) ) ,+ ! ) %%Cs++C C C ,+ &% C %%Cs++C C C ,+ &% C   %%Cc**   +* &% !       !!  Cc**   +* !  "! +o+,BCCD   "+o+,JKKL   +o+,DEEF   !+o+,IJJK   +o+,ABBC   +o+,CDDE    	 	 	 	 	 	 0 CdC55    65    !!Cc3//	5 	5 	5 0/ "!	5   Cc**? ? ? +* ! ?  !!Cc3//F F F 0/ "!F "##	> 
G G G  $#G "##	> 
F F F  $#F #$$	> 
G G G  %$G !""	> 
G G G  #"G "##	> 
G G G  $#G "##	> 
I I I  $#I #$$	> 
G G G  %$G $%%	> 
H H H  &%H "##	> 
F F F  $#F Cc3S99 	> 	> 	> 	> :9 	> "##Cc3S99 	C 	C 	C 	C :9 $#	C !""NS> > > > #"> %&&   '& LQQ Q Q Q  Q6 !""* * * * #"* Cc344    54   "##Cc3S99     :9 $#. !""NS> > > > #"> + + + +
 Cc344    54  !""Cc3S99     :9 #".  !!NS= = = = "!= OT
 
 
 
 
0 !""
 
 
 
 
 #"
>  !! H H H H "!H  V V V V. EX EX EX EXP  !!%%Cc**   +* &% "! !""%%C  ! ! ! !  &% #"!
 #$$KAFFFC  4 4 4 !  GF %$4 "##C  , , , !  $#, "##C%%   &% $#( "##C%%" " " &% $#">     !""C%%D D D &% #"D2 Cc622C C C C 32 C& 2 2 2 2 Cc3V<<< < < < =< < ,--Q Q Q .-Q
 
GQ GQ GQ GQT ' ' '  ' )**DHd5 d5 d5 d5 +*d5N %&&C%%C
 C
 C
 &% '&C
L '((C%%@
 @
 @
 &% )(@
\ _+ _+ _+ _+ _+D Cc3S#sCHH   IH> Cc3S#sCHH   IH> $ $ $ $ !""7 7 7 #"74 8?8??P   +o+J779L9LM   +o+J779L9LM  ? ? ?	 	  ?D #$$C%%0 0 0 &% %$0     
 "##C%%   &% $# -..Cc**? ? ? +* /.?. ,--Cc344   54 .-"   ' ' ' ! 'T $%%   &%8    2    2 "##
 K K K K $#K& !""
     #"& Cc377# # # 87 # !""8 8 8 8 #"8< #$$C     !  %$
 C     !     eU33Cc**N N N +* 43 ! N4   C  ( ( ( !  ! (
 %&&> > > > '&> C     !  
 Y Y Y Y& = = = = Cc3//   0/   Cc**S S S +*  S Cc**S S S +*  S   Cc3//R R R 0/ ! R  #$$Cc3//      0/ %$  S S S S
 )**; ; ; +*;      !!! ! !  "!!   @ @ @ ! @ Cc3//Q Q Q Q 0/  Q" CsC00P P P 10P    
    
  !!* * * "!*  !!# # # "!#
 !""Cs++J J J ,+ #"J IY IY IY  IYX  !!	5 	5 	5 "!	5    
 #$$V V V %$V $%%- - - &%- `I `I `I `IF #$$CdC55A A A 65 %$AB *++CdC55Y Y Y 65 ,+Y *++CdC558 8 8 65 ,+8v $%%Cc**' ' ' ' +* &%' &''Cs++        ,+ ('  #$$Cc3//PT    0/ %$.         !     !!C%%- - - - &% "!-> !""# # # #"# C%%
 
 
 
 &% 
4 "##eUE::Cc3S997 7 7 :9 ;: $#7t $%%Cc**   +* &%.     #$$   %$& "##K K K $#K               Cc3//
 
 
 0/  
$  !!Cc**
 
 
 +* "!
 "##%%CdC00), ), ), ), 10 &% $#),X &''8 8 8 ('8 &''E E E ('E      #$$Cc3S#>> # # # # ?> %$#L 
        " " " "   Cc**0 0 0 +* ! 0@ C%%2 2 2 &% 2 !""BH BH BH BH #"BHJ Ct,,   -, & Cc**J J J J +* J" 
 
6    ,    ( )**
0 
0 
0 +*
0 !""    #"
 %&&
P 
P 
P '&
P" %&&9 9 9 '&9                  5 5 5  5 %&&   '& "##   $# &''   (' %&&   '& &''   (' ? ? ? ? 	 	 	  	 	 	 	  	 1 1 1 1h 
W W W Wt  !!   "!D 
 
 
 
 #$$   %$ $%%#$$   %$ &% %&&, , , '& ,"      r   