
    qi4h                    nj   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlmZ d dlmc m Z! d dlm"Z"m#Z# d dlm$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA g d	ZBej                  ZCej                  j                  ZEej                  j                  j                  ZHd
 ZId ZJd ZKdddZLd dlMmNZN  eO       ZPePddddefdZQd ZRd ZS eQe*j                  d      d        ZU eQe*j                        d        ZW eQe*j                        d        ZX eQe*j                        d        ZY eQe*j                        d        ZZ eQe*j                        d        Z[ eQe*j                        d        Z\ eQe*j                        d        Z^ eQe*j                  d      d         Z_ eNeHj                        d!e8fd"       Z` eNeHj                         eA       d!e8fd#              Za eQe*j                        d$        Zb eQe*j                        d%        Zc eQe*j                        d&        Zd eQe*j                        d'        Ze eQe*j                        d(        Zf eQe*j                        d)        Zg eQe*j                        d*        Zh eQe*j                        d+        Zi eQe*j                        d,        Zj eA        e?d-e*j                  .      d/e8d0e2de8fd1              Zld/e8d0e2de8fd2Zm eNeHj                         eA       d!e8de8fd3              Zn eQe*j                  d      d4        Zo eQe*j                  d      d5e8de8fd6       Zpd/e8de8fd7Zq eQe*j                  d8      d/e8de8fd9       Zs eQe*j                        d/e8de8fd:       Zt eQe*j                  d      d/e8de8fd;       Zu eQe*j                  d      d/e8de8fd<       Zv eQe*j                        d/e8de8fd=       Zw eRej                  j                  d>      Zz eQe*j                  d8      d/e8de8fd?       Z{ eQe*j                  eHj                  8      d@        Z| eQe*j                        dA        Z} eQe*j                        dB        Z~ eQe*j                        dC        Z eQe*j                        dD        Z eQe*j                        dE        Z eA       	 dd/e8dFedGeej                     de8fdH       Z eNeHj
                         eA        e?dIe*j                  .      	 ddJe8dFe(dKede8fdL                     Z eNeHj                         eA       	 	 	 dd/e8dMee2   dNee2   dOee2   de8f
dP              Zd/e8fdQZ eQe*j                  eR      dS        Zd/e8de8fdTZd/e8de8fdUZ eQe*j                        dV        Z eNeHj                         eA        e?d-e*j                  .      d dWd/e8dXede8fdY                     Z eQe*j                        dZ        Z eQe*j                        d/e8de8fd[       Z eQe*j                  d      d\        Z eQe*j                  d      d]        Z eQe*j                  d      d^        Z eQe*j                        d_        Z eQe*j                        d`        Z eQe*j                        da        Z eQe*j                        db        Z eQe*j.                  d8      d/e8de8fdc       Z eQe*j                        dd        Z eQe*j                        de        Z eQe*j                  d      df        ZdJe8de8fdgZePddddddfdefdhZ eNeHj<                         eA        e?die*j                  .      ddjd/ee8e2f   dkee8e2f   dlee2   fdm                     Z ee*j                  ddn      do        Z ee*j                  p      d/e8dke8de8fdq       Z ee*j                  p      d/e8dke8de8fdr       Z ee*j                  p      d/e8dke8de8fds       Z ee*j                  p      d/e8dke8de8fdt       Z ee*j                  p      d/e8dke8de8fdu       Z ee*j                  dv      d/ee8e2f   dkee8e2f   fdw       Z eNeHjL                         eA       ddxd/ee8e2f   dkee8e2f   dyee   fdz              Z ee*j                  dv      d/e8dke8de8fd{       Z ee*j.                  p      d/ee8e2f   dkee8e2f   de8fd|       Z eA       d/ee8e2f   dkee8e2f   deCfd}       Z eejT                  j                  dd~      d/ee8e2f   dkee8e2f   fd       Zd/eCdkeCdeCfdZd/eCdkeCdeCfdZ ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z eNeHjb                         eAdd      dJe8dee8e8f   fd              Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  dv      d/e8dke8de8fd       Z ee*j                  dv      d/e8dke8de8fd       Z ee*j                  ddn      d!e8de8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Zded/e8dke8dededdfdZ	 	 	 dd/e8dke8dededede8fdZ ee*j                  ddn      d/e8dke8fd       Z ee*j                  dv      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  p      d/e8dke8fd       Z eQe*j                        d/e8fd       Z ee*j                  p      d/e8dke8fd       Z ee*j                  p      d/e8dke8fd       Z ee*j                  dv      d/e8dke8de8fd       Z ee*j                  p      d/e8dke8de8fd       Z ee*j                  p      d/e8dke8de8fd       Z ee*j                  d      d/e8dke8de8fd       Z ee*j                  dv      d/e8dke8de8fd       Z ee*j                  ddn      d/e8dke8de8fd       Z ee*j                  p      d/e8dke8de8fd       Z eNeHj                         eA       	 dd/ee8e2f   dkee8e2f   dle2fd              Z eNeHj                         eA        e?die*j                  .      ddjd/ee8e2f   dkee8e2f   dle2fd                     Z ee*j                  ddd      d/e8dke8de8fd       Z eNeHj                         eA        e?die*j                  .      d/ee8e2f   dkee8e2f   fd                     Z eejT                  j                  dd      d/ee8e2f   dkee8e2f   fd       Z eNeHj                         eA        e?de*j                  .      dddJe8de8de8d0e2de8f
d                     Z eNeHj                         eA        e?de*j                  .      dddJe8de8de8d0e2de8f
d                     Z eNeHj                         eA        e?de*j                  .      	 	 dd/e8dee9   dee9   de8fd                     Z eNeHj                         eA       	 ddJe8dee9   de8fd              Z eNeHj                         eA       	 ddJe8dee9   de8fd              Z eNeHj                  j                         eNeHj                  j                         eNeHj                  j                         eNeHj                  j                         eNeHj                  j                         eAd       e?die*j                  .      	 	 ddeCd/ee9   dkee9   fd                                                 Z eNeHj                         eA       ej                  dd/e8dej                  de8fd              Zddd/eCdkeCfdZ eNeHj                        d/e8de2fd       Z	 	 	 	 	 	 	 dd/e8dee%   dGeej                     dee   deej                     deej                     dee   dedefdȄZedɄ        Zej                  	 	 	 ddej                  dGej                  dededeej                     deeef   fdʄ       Zej                  	 	 	 ddedGej                  dededeej                     deeef   fd˄       Zej                  	 	 	 ddGej                  dededeej                     deeef   f
d̄       Zej                  	 	 	 ddeCdededeej                     deeef   f
d΄       Zd/eCdefdЄZd/e8de8fdфZdddddddҜd/e8dedededee(   dedGeej                     deeC   de4de8fdڄZddۄZ eNeHj                         eA       	 	 dd/e8dFee(   dKede8fd܄              Z eNeHj                         eA       	 	 dd/e8dFee(   dKede8fd݄              Z eNeHj                  j                  eHj                  j                  g      	 	 ddddޜd/e8dFeee   eee      f   dKedGeej                     deeC   de8fd߄       Zd/eCdeCfdZ eNeHj                        	 	 ddddޜd/e8dFeee   eee      f   dKedeeC   de8f
d       Z eNeHj                        	 	 dddd/e8dFee(   dKedeeC   de8f
d       Z eNeHj                        	 	 dddd/e8dFee(   dKedeeC   de8f
d       ZddZ eNeHj                         eA       	 	 	 dddd/e8dFee(   dee   dKedee2   de8fd              Z eNeHj                         eA       	 	 	 dddd/e8dFeee   eee      f   dee   dKedee2   de8fd              Z eNeHj                        	 	 ddddޜd/e8dFee(   dKede8fd       Z eNeHj                         eAdd      	 dddddd/e8dFee(   dee   dKedee2   f
d              Z eNeHj                         eAdd      	 	 	 dddd/e8dFee(   dee   dKedee2   f
d              Z eNeHj                         eA        e?de*j                  .      ddddJe8de8de8de2dle2de8fd                     Zdee8e
e8   f   de8dee8ee8df   f   fdZ dedFede8de8fdZdee8e
e8   f   de8dee8ee8df   f   fdZdee8e
e8   f   de8dee8ee8df   f   fdZ	 dd/e8de5d e6dee   de8f
dZ eNeHj
                         eA       	 dd!e8de8de5d e6dee   de8fd              Zde5fdZeHj                  j                  j                  eEj                        eHj                  j                  j                  eEj                        dee8   fd              Zd/e8de5de8fdZ eNeHj                         eA        e?de*j                  .      dd	e:dFede8fd
                     Z eA       d	e:de8fd       Zd!e8de8fdZ eNeHj                          eA       	 dd!e8dee   d0e2de8fd              Zej"                  dd/eCdej                  deCfdZ eA       d	e:de8fd       Z eNeHj(                        ddd/eCdedeCfd       Zd/eCdkeCdeCfdZdd/e8dedFedee8df   fdZdd/e8dedede8fdZ eNeHj0                         eA       d/e8de'de8fd              Zd/e8de8fdZd/e8de8fdZd/e8dFedeee8f   dede8f
dZd/eCd e(d!edeeCeCeCf   fd"Zd5e8d#ee   de8fd$Z eNeHj<                  j                        d!eCd%eeC   d&eeC   d'ed(ed)ed*ed!edeeCeCeCf   fd+       Z eNeHj>                         eAddd,      d!eCd-e5d%eeC   d&eeC   d!edeeCeCeCf   fd.              Zej@                  jB                  jE                  eHj>                  j                        d/        Z# eNeHjH                        d/e8de8fd0       Z$ eNeHjJ                         eA       d!e8d1e3dFed2e3de8f
d3              Z%eHjL                  jN                  j                  eEj                        	 	 	 	 	 	 	 	 	 dd!eCd4ed5ee   d6ee   d7eeC   d8ed9ed:ed;ee   d<ee   d=ee   deCfd>       Z&eHjP                  j                  j                  eEj                        	 	 	 	 	 	 	 	 dd!eCd4ed5ee   d6ee   d7eeC   d8ed:ed;ee   dee   deCfd?       Z(d@e5dAe6dBededCef
dDZ) eNeHjT                         eA       d/eCdeCfdE              Z*d/e8dFede8fdGZ+d/e8dFede8fdHZ,d/e8dIe5de8fdJZ-dJe8de8de8fdKZ. eNeHj^                         eA       dd/e8dLe(de(de8fdM              Z/ eNeHj`                         eA       	 dd/e8dOede'de8fdP              Z0d	e:ddfdQZ1 eNeHjd                         eA       dd	e:dFede8fdR              Z2 eA       	 dd/e8dFedGeej                     de8fdS       Z3 eA       d	e:de8fdT       Z4 eA       d	e:de8fdU       Z5d/e8dFedVe5de8fdWZ6 eNeHjn                        ddXe8dFede:fdY       Z7 eA       d5e7dFedZe7d[e7fd\       Z8d5e7dFedZe7d[e7fd]Z9 eNeHjt                         eA       d5e7dFedZe7d0ee2e7f   fd^              Z: eNeHjv                        d5e7dFedZe7d0ee2e7f   fd_       Z;d5e7dFedZe7d0ee2e7f   d`ef
daZ< eA       ddjd5e7dFedZe7d[e7dle2f
db       Z= eNeHj|                         eA       d5e7dFedZe7fdc              Z> eNeHj~                  j                        dd/e8dFee(   de8fdd       Z? eNeHj                        	 ddJeCdeee   dFedeeC   fdf       ZA	 dd/e8dgeeCe(f   dFedee8df   fdhZBd/e8dge(dee8df   fdiZCd/e8dge(dee8df   fdjZD eNeHj                  j                         eA       	 ddJe8dkede8fdl              ZE eNeHj                         eA       	 	 	 dd!e8de8dkedmednede8fdo              ZG eNeHj                        	 	 	 ddJe8dkedmednede8f
dp       ZH eNeHj                         eA       	 	 	 ddXe8dkedmednede8f
dq              ZI eNeHj                         eA       d	ee8   de8fdr              ZKd	ee8   de8fdsZJd/e8dte(de:fduZL eNeHj                  j                        d/e8fdv       ZMd/e8de8fdwZN eNeHj                        d/e8de8fdx       ZO eNeHj                        d/e8dyedmede8fdz       ZPePZQ eNeHj                        dJe8dBededCede8f
d{       ZR eNeHj                         eA       dJe8dBededCefd|              ZSdddޜd/e8dFedGeej                     deeC   de8f
d}ZT eNeHj                        dddޜd/e8dFedGeej                     deeC   de8f
d~       ZU eNeHj                        dddޜd/e8dFedGeej                     deeC   de8f
d       ZV eNeHj                        d/e8dFede8fd       ZW eNeHj                  j                        d/e8dIe5de8fd       ZXdJe8de8de8fdZYd/e8de8fdZZ eA       	 dd/ej                  dej                  dFee   dej                  fd       Z[ eA       dej                  dddej"                  ddGeej                     dej                  dee%   dededej                  de8fd       Z] eA       dej                  dddfdGeej                     dej                  dee%   dedede8fd       Z^ eNeHj                         eA       dddddd/e8de5dGeej                     deej                     dee%   dede8fd              Z_ eNeHj                         eA       dddddd/e8de5d e6dGeej                     deej                     dee%   dede8fd              Z` eNeHj                  j                         eA       dej                  dddddGeej                     dej                  dee%   dedede8fd              Za eNeHj                         eA       ddddddd/e8de5dGeej                     deej                     dee%   dedede8fd              Zb eNeHj                  j                         eA       dej                  dddddGeej                     dej                  dee%   dedede8fd              Zc eNeHj                         eA       ddddddd/e8de5dGeej                     deej                     dee%   dedede8fd              Zd eNeHj                         eA       dddddd/e8de5de2dGeej                     deej                     dee%   dede8fd              ZeeHj                  j                  j                  eEj                        	 dde8de8deej                     de8fd       Zf eNeHj                         eA       dddddej                  dd/e8dGeej                     dee%   deej                     dededej                  de8fd              Zg eNeHj                  j                  eHj                  j                  g       eA       	 	 	 d dej                  ddddde2dee2   dCe2dGeej                     dej                  dee%   dedede8fd              Zh eNeHj                         eA        e?de*j                  .      deCdeCd%eeCe2f   fd                     Zk eNeHj                         eA       ddej                  ddddee2e8f   dee2e8f   de2dGeej                     dee%   dej                  dedede8fd              Zl eNeHj                         eA       	 dddej                  ddddee2e8f   dee2e8f   de2de2dGeej                     dee%   dej                  dedede8fd              Zmed	e
e8   defd       Zned	e8defd       Zn eNeHj                        d	ee8ee8   ee8   f   dedee8   fd       Znd!e8deee'f   deee'f   de8fdZo eNeHj                         eA       ddej                  ddddIee5ee5   f   de6dGeej                     dee%   dej                  dedede8fd              Zpdedej                  fdZq eNeHj                         eA       	 ddej                  dddddedee   dGeej                     dej                  dee%   dedede8fd              Zr eNeHj                  j                  eHj                  j                  g       eA       dej                  dddddIe5de2dGeej                     dej                  dee%   dedede8fd              Zsdddddej                  dd/e8de2dGeej                     deej                     dee%   dededej                  de8fdZt eNeHj                         eA       dddddej                  dd/e8dGeej                     deej                     dee%   dededej                  de8fd              Zu eNeHj                         eA       dddddej                  dd/e8dGeej                     deej                     dee%   dededej                  de8fd              Zv eNeHj                  j                         eA       dddddddGeej                     dee%   deej                     dedede8fd              Zwdej                  dddd/e2dGeej                     dej                  dee%   dede8fdZx	 	 ddIe5deeeef   deeeef   dGej                  de%de8fdZy eNeHj                         eA       d/e8de8d0e9fd              Zz eNeHj                        d/e8de8d0e9de8fd       Z{	 	 	 dd/e8dke8dedededefdZ|d/e8dke8defdZ} eNeHj                         eAd      	 	 	 dddd!e8d1eeeef      dFee(   dKedGeej                     de8fd              Z~ eNeHj                         eA       dJe8de8fd              Zd Z eeΫ      Z ee      Z ee      Z eNeHj                         eA       dd/e8dede8fdÄ              Z eNeHj
                         eA       dd/e8dede8fdĄ              Zdededkedeeeef   fdǄZdedededGej                  dej                  defdȄZ eNeHj                         eA       	 dej                  ej                  ddddededkedGej                  dej                  de%dede8fdʄ              Zdededkedeeeef   fd˄Z eNeHj                         eA       	 dej                  ej                  ddddededkedGej                  dej                  de%dede8fd̄              Z eNeHj                         eAd      ddd͜d/e9de8dedefdф              Z eNeHj                         eA        e?dIe*j                  .      dd҄                     Z eNeHj                         eA        e?dIe*j                  .      ddӄ                     Z eNeHj                         eA        e?dIe*j                  .      ddԄ                     Z eNeHj                          eA        e?dIe*j                  .      ddՄ                     Z eNeHj"                         eA        e?de*j                  .      	 	 	 dddddddלd؄                     Z eNeHj$                        dNddٜdڄ       Z eQe*j                        dJe8fdۄ       Z eQe*j                        dJe8fd܄       Z eNeHj*                         eA       ddFee(   fd݄              Zdބ Zd߄ Z eNeHj0                         eAd      e e?de*j                  .      d                             Z eNeHj2                         eAd      e e?de*j                  .      d                             Z eNeHj4                         eA       d5e8de8dFedZefd              Z eSeU      Z eSeW      Z eSeX      Z eSe      Z eSeҫ      Z eSeѫ      Z eSeY      Z eSeZ      Z eSe[      Z eSe\      Z eSe      Z eSe      Z eSe      Z eSe^      Z eSe      Z eSe      Z eSe      Z eSe_      Z eSeӫ      Z eSeԫ      Z eSeի      Z eSea      Z eSe      Z eSeb      Z eSec      Z eSeU      Z eSeV      Z eSe      Z eSed      Z eSe      Z eSe      Z eSee      Z eSeg      Z eSef      Z eSeh      Z eSej      Z eSei      Z eSe      Z eSeo      Z eSe      Z eSe      Z eSep      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe|      Z eSe      Z eSe      Z eSek      Z eSe}      Z eSe      Z eSe      Z eSe      Z eSe~      Z eSe      Z eSe«      Z eSeë      Z eSeī      Z eSeū      Z eSeȫ      Z eSez      Z eSe      Z eSeɫ      Z eSe      Z eSeʫ      Z eSe      Z eSe      Z eSe      Z eSe˫      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSe      Z eSeͫ      Z eSe      Z eSe      Z eSe      Z eSe      Z eSeΫ      Z eSe      Z eSeϫ      Z eSe      Z eSe      Z eSe      Z eSe      Z eSen      Z eeHj                        Z eeHj                        Z eeHj                        Z eeHj(                        Z eeHj6                        Z eeHj~                        Z eeHjH                        Z  eeHj                        Z eeHj                        Z eeHjn                  d      Z eeHj                        Z eeHj                        Zd Zd Zd Zdej                  dee9e:f   fdZ		 ddZ
ddddddZd dlZd dlZd dlZd dlZd dlZy(      N)CallableIterableSequence)Enum)partialreducesingledispatchwraps)AnycastOptionaloverloadUnion)	sym_floatsym_int)BoolLikeDeviceLikeTypeDimDimsSequenceTypeDimsTypedtype_to_typeELEMENTWISE_TYPE_PROMOTION_KIND	FloatLikeFloatWithoutSymFloatIntLike(is_contiguous_for_memory_format_or_falseis_contiguous_or_falseis_weakly_lesser_typeNumber
NumberTypeRealNumberTypeREDUCTION_OUTPUT_TYPE_KIND	ShapeType
StrideType
TensorLikeTensorLikeTypeTensorOrNumberLikeTypeTensorSequenceType)_maybe_convert_to_dtype_maybe_resize_out_safe_copy_out"elementwise_type_promotion_wrapper elementwise_unary_scalar_wrapperout_wrapper(  absacosacoshasinhasinatanatanhbitwise_notceilconj_physicalcoscoshcount_nonzerodeg2raddigammaerferfinverfcexpexpm1exponentialexp2fillfill_floorfrac	geometric	index_add
index_copyindex_copy_index_select
index_fillindex_fill_isfiniteisinfisposinfisneginfisnanisreali0lerplgammaloglog1plog2log10
log_normallog_softmaxmvlgammanormnormal
nan_to_numnegpositiverad2deg
reciprocalroundsigmoidsgnsignsignbitsinsincsinhsoftmaxsqrtsquaretantanhtracetruncaddatan2bitwise_andbitwise_left_shift
bitwise_orbitwise_right_shiftbitwise_xor	clamp_min	clamp_maxcopysigndiveqfloat_powerfloor_dividefmaxfminfmodgcdgegt	heavisidehypotigammaigammacimagiscloselcmle	logaddexp
logaddexp2logical_andlogical_not
logical_orlogical_xor	logsumexpltmaximumminimummulne	nextafterpowrealrpow	remainderrsubrtruediv	rfloordivsubtrue_dividetrunc_dividexlogyaddcdivaddcmulclampmasked_fillmasked_fill_whereclonecopy_toitemtoallamaxaminanycumsumcumprodmeandotvdotstdstd_meansumsum_to_sizeprodvarvar_meanaddralias
alias_copy
atleast_1d
atleast_2d
atleast_3d
as_stridedas_strided_copyas_strided_scatter
block_diagbroadcast_shapesbroadcast_tensorsbroadcast_tocatchunkcolumn_stackconjconstant_pad_nd
contiguous
diag_embeddiagdiagonaldiagonal_copydiagonal_scatterdsplitdstackexpand	expand_asexpand_copyflattenflipfliplrflipudhsplithstackmeshgridmovedimnarrownarrow_copynative_group_normnative_layer_normpermutepermute_copyravelrepeatreshape
reshape_asrollrot90rsqrtsplit_with_sizesstack	swap_axessqueezesqueeze_copytt_copyTtake_along_dimtensor_split	transposetranspose_copyunbind_copyunfoldunfold_copy	unsqueezeunsqueeze_copyviewview_as	view_copyvsplitvstackview_as_complex	unflattenunbindtriutriltriu_indicestril_indicesarangecauchyempty
empty_likeempty_permutedempty_stridedeyefull	full_likelinspacelogspace	new_emptynew_empty_stridednew_fullnew_ones	new_zerosones	ones_likerandnscalar_tensorzerozeros
zeros_likeallcloseequal	bucketize
is_complexrenormstftistftc                 ,    | d u xs | j                   dk7  S )Nhputypedevices    Z/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/_refs/__init__.pyis_noncontiguous_supportedr8  p  s    T>1V[[E11    c                     d }ddl m} | D ]  }t        ||      s|j                  } n t	        |      s|j                         }|S )Nr   )
FakeTensor)torch._subclasses.fake_tensorr;  
isinstancefake_devicer8  r   )input_tlistoutputr6  r;  r   s        r7  handle_noncontiguous_outputsrA  t  sL    F8 a$]]F
 &f-""$Mr9  c            	        	
 ddl m}m}m} t        j
                  j                  j                  j                  }t        d t        d |       D              }t        |      dk(  ry |D ]  t        t              rt        d       dgt        t         d |D              z  	t#        |      D ].  \  t%        ddt              z
  d      D ]  
 |
         r |	
         r |
   	
   k(        ry,|rd |
   d	
      } |	
   d	
      }|dk(  r |dk7  rt	        j&                  
   dk(         |dk(  r |dk7  rt	        j&                  	
   dk(          |
   	
   k(        r |	
   dk(        r
   dk  rt)        d      
   	
<    |
         s |
   dk(        rt	        j&                  	
   
   k(  	
fd        1 	S )Nr   )guard_or_falseis_nested_int	size_hintc              3   F   K   | ]  }t        |t              r|fn|  y wNr=  r   .0xs     r7  	<genexpr>z$_broadcast_shapes.<locals>.<genexpr>  s(       1g&A-s   !c                 
    | d uS rG   rK  s    r7  <lambda>z#_broadcast_shapes.<locals>.<lambda>  s
    !4- r9  zMInput shapes should be of type ints, a tuple of ints, or a list of ints, got    c              3   2   K   | ]  }t        |        y wrG  len)rJ  shapes     r7  rL  z$_broadcast_shapes.<locals>.<genexpr>  s     4ESZ4s   T
allow_nonez9Attempting to broadcast a dimension with negative length!c            
      ,    d    d d  d d 
S )Nz.Attempting to broadcast a dimension of length z at z ! Mismatching argument at index z had z0; but expected shape should be broadcastable to rN  )arg_idxcommon_shapeidxrU  s   r7  rP  z#_broadcast_shapes.<locals>.<lambda>  s<    LUSVZLX\]`\a b55<IU5' J22>A r9  )%torch.fx.experimental.symbolic_shapesrC  rD  rE  torchfxexperimental_configbacked_size_oblivioustuplefilterrT  r=  r   RuntimeErrorr   max	enumeraterange_check
ValueError)_shapesrC  rD  rE  	backed_soshapesabrZ  r[  r\  rU  s           @@@@r7  _broadcast_shapesrp    s&     %%--CCI /9 F 6{a %*_  	
4s4V4546L $F+ /R#e*_b1 .	CU3Z( !c!23#J,s"339  !%*>A!,s"3EAAv!q&U3Z1_5Av!q&\#%6!%;<!%*S0A"ABl3/145:>$S  %*#JS! s,c
a1P  %s3AS.	/b r9  T)preserve_cpu_scalar_tensorsc                      t        d |D         dt        dt        dt        fd fdt        fd|D              S )Nc              3   X   K   | ]"  }t        |t              r|j                  nd  $ y wrG  )r=  r%   rU  rJ  r   s     r7  rL  z#_maybe_broadcast.<locals>.<genexpr>  s"     	GQZ:.!''D
8	Gs   (*rn  ro  returnc                    ddl m}m}m} t	        |       t	        |      k7  ryt        | |      D ]Y  \  }} |||k7        r y | ||dk(  |dk(              rn | ||dk(  |dk(              r yt        j                  ||k(  d        [ y)Nr   )rC  sym_andsym_orTrQ  c                       y)NzCsizes assumed to be the same due to unbacked broadcasting semanticsrN  rN  r9  r7  rP  z9_maybe_broadcast.<locals>.should_expand.<locals>.<lambda>      r9  F)r]  rC  rw  rx  rT  zipr^  ri  )rn  ro  rC  rw  rx  rK  ys          r7  should_expandz'_maybe_broadcast.<locals>.should_expand  s    	
 	
 q6SV1I 	DAqa1f%
 ga1fa1f56qAvqAv 67 LLQ]	( r9  c                    | y t        | t              r| S t        | t              r?rt        j                  |       r| S  | j
                        r| j                        S | S t        dt        t        |             z   dz         )Nz#Unexpected type when broadcasting: !)
r=  r   r%   utilsis_cpu_scalar_tensorrU  r   re  strr4  )rK  rU  r[  rq  r}  s     r7  __maybe_broadcastz+_maybe_broadcast.<locals>.__maybe_broadcast  s}    96"H:&*u/I/I!/LQWWl3xx--H5DGDsJ r9  c              3   0   K   | ]  } |        y wrG  rN  )rJ  rK  r  r[  s     r7  rL  z#_maybe_broadcast.<locals>.<genexpr>  s     B"1l3Bs   )rp  r#   boolrc  )rq  argsr  r[  r}  s   ` @@@r7  _maybe_broadcastr    sH    $	G$	GL y T @$ BTBBBr9  )register_decompositionF)aten_op
extra_metaexact_dtyperu  c                ,     dt         f fd}|S )Nprimc                     t               t              t        t        d      dt        dt        f fd                            }t
        u r t        j                    j                         t              |       |S )Nr  rn  type_promoting_argstype_promotion_kindrn  ru  c                 B     |         |       }t        | g|      S rG  )rA  )rn  r@  r  r  s     r7  _refz>_make_elementwise_unary_reference.<locals>.inner.<locals>._ref%  s*     %1!WF/V<<r9  )
r
   r.   r-   r,   r&   infer_aten_opr  get_aten_op__name__r  )r  r  r  r  r  r  s   ` r7  innerz0_make_elementwise_unary_reference.<locals>.inner"  s     
t		-	)	+ & 3

	=N 	=~ 	=	

 
* 
. 
	= m#''dmm<G+"7+D1r9  r   )r  r  r  r  r  s   ```` r7  !_make_elementwise_unary_referencer    s    H  0 Lr9  c                       fd}||_         t        j                         j                  j                  d   |_        |S )a%  
    This function defines an alias of another function and sets its __name__ argument.
    It also sets its __module__ argument to the module of the caller.
    Note that when naively doing `alias = fn`, we have that `alias.__name__ == "fn"`, and
    `alias.__module__ == fn.__module__`.
    c                       | i |S rG  rN  )r  kwargsfns     r7  _fnz_make_alias.<locals>._fnE  s    4"6""r9  r  )r  inspectcurrentframef_back	f_globals
__module__)r  namer  s   `  r7  _make_aliasr  =  s7    # CL))+22<<ZHCNJr9  c                      t                fd       } j                   d}||_         t        t        t        |            |      }ddlm}  |       j                  }||vr|j                  |       |S )z
    Given a function with out variant (i.e. using `out_wrapper()), it returns its in-place variant
    See https://github.com/pytorch/pytorch/wiki/Developer-FAQ#how-do-in-place-operations-work-in-pytorch
    c                       | g|d| i|S )NoutrN  )rn  r  r  r  s      r7  r  z_make_inplace.<locals>._fnT  s    !,d,,V,,r9  _r   )	getmodule)	r
   r  r  getattratenr  r  __all__append)r  r  inplace_namer  _alls   `    r7  _make_inplacer  M  sz     2Y- - kk]!$LCL
=
 |!<
=c
BC "R=  D4L!Jr9  r  c                 ,    t        j                  |       S rG  )primsr/   r  s    r7  r/   r/   f  s    
 99Q<r9  c                 ,    t        j                  |       S rG  )r  r0   r  s    r7  r0   r0   n      ::a=r9  c                 ,    t        j                  |       S rG  )r  r1   r  s    r7  r1   r1   s      ;;q>r9  c                 ,    t        j                  |       S rG  )r  r3   r  s    r7  r3   r3   x  r  r9  c                 ,    t        j                  |       S rG  )r  r2   r  s    r7  r2   r2   }  r  r9  c                 ,    t        j                  |       S rG  )r  r4   r  s    r7  r4   r4     r  r9  c                 ,    t        j                  |       S rG  )r  r5   r  s    r7  r5   r5     r  r9  c                 ,    t        j                  |       S rG  )r  r6   r  s    r7  r6   r6     s    Qr9  c                 ,    t        j                  |       S rG  )r  r7   r  s    r7  r7   r7         
 ::a=r9  inputc                 @    t        j                  | j                        S rG  )r  is_complex_dtypedtyper  s    r7  r-  r-    s    !!%++..r9  c                 n    t        j                  | j                        s| S t        j                  |       S rG  )r  r  r  r  r8   r  s    r7  r8   r8     s,     !!%++.u%%r9  c                 ,    t        j                  |       S rG  )r  r9   r  s    r7  r9   r9         99Q<r9  c                 ,    t        j                  |       S rG  )r  r:   r  s    r7  r:   r:     r  r9  c                 ,    t        j                  |       S rG  )r  r=   r  s    r7  r=   r=         ==r9  c                 ,    t        j                  |       S rG  )r  r>   r  s    r7  r>   r>     r  r9  c                 ,    t        j                  |       S rG  )r  erf_invr  s    r7  r?   r?     r  r9  c                 ,    t        j                  |       S rG  )r  r@   r  s    r7  r@   r@     r  r9  c                 ,    t        j                  |       S rG  )r  rA   r  s    r7  rA   rA     r  r9  c                 ,    t        j                  |       S rG  )r  rB   r  s    r7  rB   rB     r  r9  c                 ,    t        j                  |       S rG  )r  rD   r  s    r7  rD   rD     r  r9  r  r  rn  valuec                 ,   t        | t              sJ t        |t              sJ t        j                  | j
                        }t        j                  t        |      |      sdt        |       d| d}t        |      t        j                  | |      S Nzvalue argument of type  cannot be safely cast to type r  )r=  r%   r   r  r   r  r   r4  rj  r  rE   )rn  r  python_typemsgs       r7  rE   rE     s     a$$$eV$$$%%agg.K&&tE{K@'U}4ST_S``abo::ar9  c                 ^    t        j                  | |      }t        j                  | |       | S rG  )r  rE   r   )rn  r  rs      r7  rF   rF     s%    

1eA	MM!QHr9  c                 ,    t        j                  |       S rG  )r^  r)  r  s    r7  r'  r'    s     E""r9  c                 ,    t        j                  |       S rG  )r  rG   r  s    r7  rG   rG         
 ;;q>r9  rK  c                     t        j                  t        j                  t        j                  |             t        j                  |             }t        j
                  | |      S rG  )r^  r   rG   r/   rj   r   )rK  trunc_xs     r7  rH   rH     s>    
 iiEIIaL15::a=AG99Q  r9  c                     t        | t              sJ t        j                  t	        j
                  | j                        d        t        j                  |       S )Nc                       y)Nz#imag only supports complex tensors.rN  rN  r9  r7  rP  zimag.<locals>.<lambda>  rz  r9  )	r=  r%   r^  ri  r  r  r  r  r   r  s    r7  r   r     sC    a$$$	LLqww')V ::a=r9  )r  c                     t        j                  | j                        st        j                  | j                        rt	        j
                  |       S t        | t        j                        S )Nr  )	r  is_float_dtyper  r  r  rP   r$  r^  r  r  s    r7  rP   rP     sG    
 AGG$(>(>qww(G~~a  Qejj))r9  c                    t        j                  | j                        rNt        j                  t        t        j                  |             t        t        j                  |                   S t        j                  | j                        r!t        j                  |       t        d      k(  S t        j                  | t        j                        S )Ninfr  )r  r  r  r^  r   rQ   r   r   r  r/   floatr)  r  r  s    r7  rQ   rQ     s    agg&ejjm 4eEJJqM6JKKAGG$yy|uU|++AUZZ00r9  c                     t        j                  t        j                   j                          fd       t        j
                   j                        r t        d      k(  S t        j                   t         j                        S )Nc                  "    d j                    S )Nz7Complex dtype is not supported for isposinf, got dtype r  r  s   r7  rP  zisposinf.<locals>.<lambda>'      I!''S r9  r  r  	r^  ri  r  r  r  r  r  r)  r  r  s   `r7  rR   rR      sc    
 
LL""177++S AGG$E%L  AUZZ00r9  c                     t        j                  t        j                   j                          fd       t        j
                   j                        r t        d      k(  S t        j                   t         j                        S )Nc                  "    d j                    S )Nz7Complex dtype is not supported for isneginf, got dtype r  r  s   r7  rP  zisneginf.<locals>.<lambda>5  r  r9  z-infr  r  r  s   `r7  rS   rS   .  sc    
 
LL""177++S AGG$E&M!!AUZZ00r9  c                 .    t        j                  | |       S rG  r  r   r  s    r7  rT   rT   <  s    88Aq>r9  r_   c                     t        j                  | j                        rt        j                  |       dk(  S t        j
                  | t        j                        S )Nr   r  )r  r  r  r^  r   r$  r  r  s    r7  rU   rU   E  s>    
 agg&zz!}!!??1EJJ//r9  c                 ,    t        j                  |       S rG  )r  	bessel_i0r  s    r7  rV   rV   P  s     ??1r9  c                 ,    t        j                  |       S rG  )r  rX   r  s    r7  rX   rX   W  s    <<?r9  c                 ,    t        j                  |       S rG  )r  rY   r  s    r7  rY   rY   \  r  r9  c                 ,    t        j                  |       S rG  )r  rZ   r  s    r7  rZ   rZ   a  r  r9  c                 ,    t        j                  |       S rG  )r  r[   r  s    r7  r[   r[   f  r  r9  c                 ,    t        j                  |       S rG  )r  r\   r  s    r7  r\   r\   k  r  r9  dimr  c                     |xs | j                   }t        j                  |      }t        | |      }t        |t	        ||d      z
  |      S )NTkeepdim)r  r  get_computation_dtyper)   r   )rn  r  r  result_dtypecomputation_dtypea_s         r7  r^   r^   q  sK     #AGGL33LA	 $5	6B"2	"c4(H#H,WWr9  selfr  r  c                 B   t        |t              s|f}| j                         dk(  r8t        j                  t        j
                  |       ||      j                         S t        j                  t        j                  |       |d      }t        j                  ||j                         t        d      k(  d      }|r|nt        j                  ||      }t        j                  t        j
                  | |z
        ||      }|j                         j                  |      S )Nr   Tr  r  )r=  r   numelr^  r   rA   rY   r   r   r   r/   r  r   rv   )r  r  r  maxesmaxes_squeezedresults         r7  r   r   }  s     c8$fzz|qyy4#w7;;==JJuzz$'d;EeUYY[E%L%@!DE%U5==+DNYYuyy.W=F::<N++r9  nanposinfneginfc                 v   t        | t              sJ t        j                  | j                        st        j
                  | j                        r| j                         S |d}|)t        j                  | j                        j                  }|)t        j                  | j                        j                  }t        j                  t        j                  |       ||       }t        j                  t        j                  |       ||      }t        j                  t        j                  |       ||      }|S )N        )r=  r%   r  is_boolean_dtyper  is_integer_dtyper   r^  finforf  minr   rT   rS   rR   )rn  r  r  r	  r  s        r7  rb   rb     s     a$$$agg&%*@*@*Iwwy
{~QWW%))~QWW%))[[Qa0F[[*FF;F[[*FF;FMr9  c                 f    t        j                  | j                  t         j                  ud        y )Nc                       	 y)NzNegation, the `-` operator, on a bool tensor is not supported. If you are trying to invert a mask, use the `~` or `logical_not()` operator instead.rN  rN  r9  r7  rP  z_neg_meta.<locals>.<lambda>  s      r9  )r^  ri  r  r  r  s    r7  	_neg_metar    s#    	LL	uzz!	
r9  )r  c                 ,    t        j                  |       S rG  )r  rc   r  s    r7  rc   rc     s     99Q<r9  c                 |    t        | t              sJ | j                  t        j                  u rd}t        |      | S )Nz'positive does not support bool tensors.)r=  r%   r  r^  r  re  )rn  r  s     r7  rd   rd     s7    a$$$ww%**73Hr9  c                     t        | t              sJ t        j                  | j                        rt        j                  |       S | S rG  )r=  r%   r  r  r  r  r   r  s    r7  r   r     s7    a$$$agg&zz!}Hr9  c                 ,    t        j                  |       S rG  )r  rf   r  s    r7  rf   rf     s    Ar9  )decimalsr  c                    |dk(  rt        j                  |       S d|z  }d| z  }t        j                  t        j                  t        j                  | |            |      S )Nr   
   )r  rg   r   )rn  r  ten_powten_neg_pows       r7  rg   rg     sS     1}{{1~h,hY'yyUYYq'%:;[IIr9  c                 ,    t        j                  |       S rG  )r  r   r  s    r7  r   r     r  r9  c                 R    t        dt        dt        t        |                         S NrQ  )r   rv   rA   rc   r  s    r7  rh   rh     s    q#aSV-..r9  c                     t        j                  | j                        r-| j                         }t	        j
                  |dk(  d| |z        S | j                         S Nr   )r  r  r  r/   r^  r   rj   )rn  a_abss     r7  ri   ri     sG    
 agg&{{5A:q!e)44vvxr9  c                 ,    t        j                  |       S rG  )r  rj   r  s    r7  rj   rj     r  r9  c                 ,    t        j                  |       S rG  )r  rk   r  s    r7  rk   rk     s    
 ==r9  c                 ,    t        j                  |       S rG  )r  rl   r  s    r7  rl   rl     r  r9  c                     t         j                  | z  } t        j                  | dk(  dt        j                  |       | z        S Nr   rQ  )mathpir^  r   rl   r  s    r7  rm   rm     s3    !A;;qAvq%))A,"233r9  c                 ,    t        j                  |       S rG  )r  rn   r  s    r7  rn   rn     r  r9  c                 ,    t        j                  |       S rG  )r  rp   r  s    r7  rp   rp   !  r  r9  c                     t        | |       S rG  )r   r  s    r7  rq   rq   &  s    
 q!9r9  c                 ,    t        j                  |       S rG  )r  rr   r  s    r7  rr   rr   .  r  r9  c                 ,    t        j                  |       S rG  )r  rs   r  s    r7  rs   rs   3  r  r9  c                 ,    t        j                  |       S rG  )r  ru   r  s    r7  ru   ru   8  r  r9  c                    | j                   t        j                  t        j                        fd       | j                         }t        j                  t        |      dk7  d        t        j                  |d   dk(  d        | j                         }t        j                  |d   dk(  d        |d d }t        j                  t        j                  d	 |D              d
        t        j                  | j                         dz  dk(  d        t        j                  | t        j                              j                  d      S )Nc                      d  S )Nz^view_as_complex is only supported for floating pointtensors, but got a tensor of scalar type: rN  )input_dtypes   r7  rP  z!view_as_complex.<locals>.<lambda>E  s     55@MC r9  r   c                       y)Nz-Input tensor must have one or more dimensionsrN  rN  r9  r7  rP  z!view_as_complex.<locals>.<lambda>K  rz  r9  rV     c                       y)Nz+Tensor must have a last dimension of size 2rN  rN  r9  r7  rP  z!view_as_complex.<locals>.<lambda>O  rz  r9  rQ  c                       y)Nz/Tensor must have a last dimension with stride 1rN  rN  r9  r7  rP  z!view_as_complex.<locals>.<lambda>U  rz  r9  c              3   ,   K   | ]  }|d z  dk(    yw)r3  r   NrN  )rJ  strides     r7  rL  z"view_as_complex.<locals>.<genexpr>Y  s     8VaZ1_8   c                       y)NzCTensor must have a stride divisible by 2 for all but last dimensionrN  rN  r9  r7  rP  z!view_as_complex.<locals>.<lambda>Z  rz  r9  c                       y)Nz0Tensor must have a storage_offset divisible by 2rN  rN  r9  r7  rP  z!view_as_complex.<locals>.<lambda>^  rz  r9  )r  r^  ri  r  r  sizerT  r7  builtinsr   storage_offsetr  view_element_typecorresponding_complex_dtyper   )r  sizesold_stridesdimsr1  s       @r7  r  r  A  s   **K	LL[)	C
 IIKE	LLE
a? 
LLb	Q=
 ++-K	LLB1A sD	LL8488U 
LL!Q&B ""e//<gbkr9  c           	      <     dt         f fd}|S )Nr  c                 f     j                   t               t        d	      dt        t        t
        f   dt        t        t
        f   dt        f fd              }r t               |      }|_         t        u rt        j                         r t              |       |S )Nrn  ro  r  rn  ro  ru  c                 |   t        j                  xs t        | t               fd       t        j                  xs t        |t               fd       t        j                  xs# t        | t              xr t        |t               fd       t	        | |      \  } } | |      }t        | |g|      S )Nc                        dS )Nzc: Received a lhs Python scalar to an elementwise binary operation that does not accept lhs scalars!rN  r  s   r7  rP  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>      4& !> > r9  c                        dS )Nzc: Received a rhs Python scalar to an elementwise binary operation that does not accept rhs scalars!rN  rH  s   r7  rP  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>  rI  r9  c                        dS )Nz?: Receive two Number inputs to an elementwise binary operation!rN  rH  s   r7  rP  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>  s    4& _` r9  )r^  _check_valuer=  r   r  rA  )rn  ro  r@  r  r  supports_lhs_python_scalarsupports_rhs_python_scalarsupports_two_python_scalarss      r7  r  z?_make_elementwise_binary_reference.<locals>.inner.<locals>._reft  s     *G*Q2G.G>
 *G*Q2G.G>
 + I"1f-G*Q2GH`
 $Aq)DAq!QZF/A??r9  )r  r
   r,   r   Tensorr    r.   r  r  r  r  )
r  r  r  has_outr  should_register_decompositionrM  rN  rO  r  s
   ` r7  r  z1_make_elementwise_binary_reference.<locals>.innero  s    <==D	t	+ * 3

	@VZ'(	@VZ'(	@ 	@ 	@	

 

	@.  ;=&Dm#''d3G#@+"7+D1r9  r  )	r  r  r  rQ  rM  rN  rO  rR  r  s	   ```````` r7  "_make_elementwise_binary_referencerS  e  s    *H * *X Lr9  rE  alpharo  rU  c                   t        | |      \  } }|t        | t              r| j                  n|j                  }t	        j
                  |      }|t        ur<t	        j                  t        |      |      sdt        |       d| d}t        |      t        |t              rt        j                  ||      }n||z  }t        j                  | |      }t        | |g|      S )z/
    Reference implementation of torch.add
    alpha argument of type r  r  )r  r=  r%   r  r  r   r  r   r4  rj  r  r   rv   rA  rn  ro  rU  r  r  r  r@  s          r7  rv   rv     s      Aq!DAq%a4!''))%0d"5+F+FK,
 ,DK=8WXcWddefCS/!a$		!U#AE	AYYq!_F'A77r9  )r  rM  rN  c                 .    t        j                  | |      S rG  )r  rw   rE  s     r7  rw   rw          ;;q!r9  )r  c                 .    t        j                  | |      S rG  )r  rx   rE  s     r7  rx   rx          Q""r9  c                 .    t        j                  | |      S rG  )r  
shift_leftrE  s     r7  ry   ry          Aq!!r9  c                 .    t        j                  | |      S rG  )r  rz   rE  s     r7  rz   rz     r_  r9  c                 .    t        j                  | |      S rG  )r  shift_right_arithmeticrE  s     r7  r{   r{     s     ''1--r9  c                 .    t        j                  | |      S rG  )r  r|   rE  s     r7  r|   r|     r\  r9  )r  rM  c                    t        |t              r3t        | t              r#t        || j                  | j
                        }nat        | t              rQt        |t              rA| j
                  |j
                  k7  r(d| j
                   d|j
                   d}t        |      t        t        |      t        t        |             t        |             S )Nr  r6  /Expected divisor (b) to be on the same device (&) as dividend (a), but it is found on r  )r=  r   rP  r&  r  r6  re  r   rk   rc   r/   )rn  ro  r  s      r7  r   r     s     !VAv!6!177188<	Av	:a#8QXX=Q?zIopqpxpxoyyz{3SQ[#a&11r9  )rounding_moderh  c                    |t        | |      S |dk(  rt        | |      S |dk(  rt        | |      S d| d}t        |      )z/
    Reference implementation of torch.div
    ru   rG   zLdiv expected rounding_mode to be one of None, 'trunc', or 'floor' but found .)r   r   r   rj  )rn  ro  rh  r  s       r7  r   r     s\     1a  	'	!Aq!!	'	!Aq!!\]j\kklmor9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r         
 88Aq>r9  c                 
   t        | t              st        |t              sJ t        |t              r9|dk(  r| j                         S |dk(  r| | z  S |dk(  rt	        j
                  |       S t        | t              rs| dk(  rt	        j                  |d      S | dk(  rSt        j                  |j                        st        j                  |j                        rt	        j                  |      S t        j                  | |      S )N      ?g       @      ?T)r=  r&   r   r   r^  rp   rE   r  r  r  r  rD   r  r   rE  s     r7  r   r      s     a(Jq.,III!V8779#Xq5L#X::a= 	Av	8::a&&8  )U-C-CAGG-L::a= 99Q?r9  c                 ^   t        | t              rt        |t              rt        d      t        j                  | |      }|J t        j
                  |      rt        j                  }nt        j                  }t        | |      } t        ||      }t        | |      \  } }t        | |      S )Nz=Receive two Number inputs to an elementwise binary operation!)r=  r   rj  r  get_higher_dtyper  r^  
complex128float64r)   r  r   rn  ro  r  s      r7  r   r   =  s    
 !VAv!6K
 	

 ""1a(Ee$  
 	 5)A5)AAq!DAqq!9r9  )r  rO  rR  c                    t        | t              r(t        |t              rt        |       } t        |      }n*t        |t              r3t        | t              r#t        || j                  | j
                        }nt        | t              r3t        |t              r#t        | |j                  |j
                        } nt        | t              rt        |t              r| j
                  |j
                  k7  rk| j
                  t        j
                  d      k(  r(d| j
                   d|j
                   d}t        |      t        j                  || j
                        }t        | t              rt        |t              sJ | j                  t        j                        rt        | |      S t        j                        rt        | |      S t        j                  dfd       y )	Nre  cpurf  rg  r  r5  Fc                        dS )Nz not supported for floor_dividerN  r  s   r7  rP  zfloor_divide.<locals>.<lambda>  s    ug-L$M r9  )r=  r   r&  rP  r  r6  r^  re  r  
device_putr  r  _floor_divide_floatr  _floor_divide_integerri  )rn  ro  r  r  s      @r7  r   r   w  s_    !VAv!6!!	Av	:a#8!177188<	Av	:a#8!177188<	Av	:a#8QXX=Q88u||E**CAHH:Mstut|t|s}}~Cs##  1884Aa Z6%:::GGEE""1a((				&$Q**UMNr9  c                 t   t        | |      \  } }| j                  j                  st        j                  | |      S t        j                  |       t        j                  |      k7  j                  t        j                  | |      dk7        }t        j                  | |      t        || j                        z
  S r   )
r  r  	is_signedr  r   r^  rk   r   r   r)   )rn  ro  offsets      r7  rz  rz    s    Aq!DAq77yyA mmA%--"22??

1a@PTU@UVF99Q?4VQWWEEEr9  c                     t        | |      }t        t        | |      |      }t        t	        | d      t	        |d            }t        |d      }t        ||      }t        |t        |d      |      }t        |      }t        t        ||      d      }t        |t        |d      |      }t        | |      }t        d|j                  |j                        }	t        t        |d      |t        |	|            }t        t        |d      ||      S )Nr   rQ  ro  re  )r   r   r   r|   r   r   rx   r   rG   r   rv   r&  r  r6  r   )
rn  ro  modr   different_signed_inputsnon_zero_remaindermask	floor_div	basic_divzero_tensors
             r7  ry  ry    s    
q!*C
c!Sk1
%C *"Q(Bq!H=C)+BCD
c#qk3
'C c
Ic#y!3'DdC	1-y9IAq!IAQAQRK baj)Xk9-MNI Aq9i00r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r          ::ar9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     r  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     r  r9  mantissaexponentc                 f    t         j                  j                  t        j                  |             S rG  )r^  return_typesfrexpr  r   s    r7  r  r    s$     ##EKK$566r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     s     99Q?r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     rl  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     rl  r9  valuesc                    t        j                  | d      }t        j                  t        j                  | d      t        j                  |             }t        j
                  |dd      }t        j
                  |||      }|S r&  )r^  r   r   r   rT   r   )r  r  input_eq_zeroinput_lt_zerozeros_and_onesr@  s         r7  r   r     sc     HHUA&M$$UXXeQ%7U9KLM[[15N[[?FMr9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     rZ  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     s     <<1r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     s     ==Ar9  r  rtolatolc                      t        j                  j                  j                  k(   fd       t        j                  dk\   fd       t        j                  dk\   fd       y )Nc                  B     d j                    dj                    dS )Nz4: Attempting to compare tensors of different dtypes  and r  r  )rn  ro  r  s   r7  rP  z#_check_close_args.<locals>.<lambda>+  s)    4&LQWWIUZ[\[b[bZccde r9  r   c                        d dS )Nz6: rtol must be greater than or equal to zero, but got r  rN  )r  r  s   r7  rP  z#_check_close_args.<locals>.<lambda>/      4&NtfTUV r9  c                       d  dS )Nz6: atol must be greater than or equal to zero, but got r  rN  )r  r  s   r7  rP  z#_check_close_args.<locals>.<lambda>3  r  r9  )r^  rL  r  ri  r  rn  ro  r  r  s   `````r7  _check_close_argsr  "  sV     
	177e 
LL	V 
LL	Vr9  	equal_nanc           
         t        d| |||       t        | |      }|rft        j                  | j                        st        j
                  | j                        r(t        |t        t        |       t        |                  }|dk(  r|dk(  r|S t        j                  | j                        sot        j
                  | j                        sPt        j                  | t        j                               } t        j                  |t        j                               }t        |t        t        ||                  }t        t!        | |            }t        |t        t#        |      t%        ||                  }|S )Nztorch.iscloser  r   )r  r   r  r  r  r  r   r   rT   r  convert_element_typer^  get_default_dtyperv   r/   r   r   rP   r   )	rn  ro  r  r  r  closeallowed_erroractual_errorr  s	            r7  r   r   8  s    ?a14dKq!HEe**1773u7M7Magg7V5+eAha"AB qyTQY (1G1G1P&&q%*A*A*CD&&q%*A*A*CDc#a,/0Ms1ay>L {8L12lM3RSF Mr9  c                    | j                   }|t        j                  t        j                  fv }|rHt	        j
                  | t        j                        } t	        j
                  |t        j                        }t        j                  | |      }t        j                  |dk(  d|      }t        j                  t	        j                  | |      |z        }|s|S t	        j
                  ||      S r&  )r  r^  int8int16r  r  int32r   r   r/   r   )rn  ro  r  promote_to_intgress         r7  r   r   c  s     GGE uzz5;;77N&&q%++6&&q%++6		!QAAFAq!A
))EIIaOa'
(C$3P%*D*DS%*PPr9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r   x  rl  r9  c                    t        j                  |       t        j                  |      k\  }t        j                  || |      }t        j                  |||       }t        j                  t        j                  t        j
                  t        j                  |                   t        j                  |       t        j                  |      k(        }t        j                  | j                        st        j                  |j                        rt        j                  |      dk  }t        j                  ||t        j                  t        j                  |      t        j                  |      z               }t        j                  |||t        j                  t        j                  ||z
              z         }t        j                  |      }	t        j                  |	t        t        d      t        d            |      S t        j                  || |t        j                  t        j                  ||z
              z         S )Nr   r  )r^  r   r   r   r   rP   r  r  r  rY   rA   rZ   rT   complexr  )
rn  ro  r  max_min_inf_maskneg_min_maskinf_valsnon_nan_valsnan_masks
             r7  r   r     s    ::a=EJJqM)D;;tQ"D;;tQ"D  %..A78%**Q-5::VW=:XH agg&%*@*@*Izz$'!+;;$		%))D/EIIdO*K L
 {{hu{{599TD[3I'J J
 ;;t${{8WU5\5<%H,WW{{8Qu{{599TD[;Q/R(RSSr9  c                 ,   t        j                  t        j                  | j                        xs t        j                  |j                         d        | |k\  }t        j
                  || |      }t        j
                  |||       }t        j                  t        j                  |       | |k(        }dt        j                  d      z  }|t        j                  t        j                  ||z
              |z  z   }t        j
                  || |      S )Nc                       y)Nz)logaddexp2 doesn't support complex dtypesrN  rN  r9  r7  rP  zlogaddexp2.<locals>.<lambda>  rz  r9  rn  r3  )r^  ri  r  r  r  r   r   rQ   r'  rY   rZ   rD   )rn  ro  r  r  r  r  	inv_log_2r  s           r7  r   r     s     
LL##AGG,O0F0Fqww0OP;
 6D;;tQ"D;;tQ"D  Qa8Hdhhqk!IEKK

4$; 789DDF;;xF++r9  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r   r  r  r  rE  s     r7  r   r     C     !!!''*F!!!''*Fq5Lr9  c                 P    t        j                  | j                        s| dk(  S |  S r   r  r  s    r7  r   r     s$    !!!''*Av2Ir9  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }t        | |      S r   )r  r  r  rz   rE  s     r7  r   r     sG     !!!''*F!!!''*Far9  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r   r  rE  s     r7  r   r     r  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     rl  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r          ==Ar9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     r  r9  )r  rO  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r     s    
 99Q?r9  c                 .    t        j                  | |      S rG  r  rE  s     r7  r   r     rl  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r      s     ??1a  r9  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r   	  s     ??1a  r9  rQ  c                 l    t        | t              rd}t        |      t        j                  || |      S )Nz?Received a Number for the first argument, but expected a TensorrT  )r=  r   rj  r^  r   )rn  ro  rU  r  s       r7  r   r     s0     !VOo99Q''r9  c                   t        | |      \  } }t        | t              rgt        |t              rWt        j                  t        j                  | j                         xr  t        j                  |j                         d        |dk7  rt        | t              r| j                  n|j                  }t        j                  |      }t        j                  t        |      |      sdt        |       d| d}t        |      t        |t        j                        rt        j                  ||      }n||z  }t        j                  | |      }t!        | |g|      S )z/
    Reference implementation of torch.sub
    c                       	 y)NzwSubtraction, the `-` operator, with two bool tensors is not supported. Use the `^` or `logical_xor()` operator instead.rN  rN  r9  r7  rP  zsub.<locals>.<lambda>6  s    C r9  rQ  rW  r  r  )r  r=  r%   r^  ri  r  r  r  r   r   r4  rj  rP  r  r   r   rA  rX  s          r7  r   r   !  s     Aq!DAq!Z Z:%>&&qww//W8N8Nqww8W4W	
 z%a4!''))%0**4;D+DK=8WXcWddefCS/!a&		!U#A
 E	AYYq!_F'A77r9  r   )r  r  r  rO  c                 .    t        j                  | |      S rG  )r  r   rE  s     r7  r   r   N  s     99Q?r9  c           
         t        j                  t        | t              xs t        |t              d        t        |t              r3t        | t              r#t        | |j                  |j                        } nBt        | t              r2t        |t              r"t        || j                  | j                        }t        | t              sJ t        |t              sJ t        j                  t        j                  | d      dt        j                  | t        j                  |                  }t        j                  t        j                  |      t        d      |      S )Nc                       y)Nz/Expected either argument a or b to be a Tensor"rN  rN  r9  r7  rP  zxlogy.<locals>.<lambda>a  rz  r9  re  r   r  )r^  ri  r=  r%   r   r&  r  r6  r   r   r   rY   rT   r  )rn  ro  rhss      r7  r   r   X  s     
LL1j!>Z:%>A !Z Z6%:!177188<	Az	"z!V'<!177188< a$$$a$$$
++ehhq!na1eiil)C
DC;;u{{1~uU|S99r9  )r  r  rO  c                     t        j                  |       }t        j                  |      rt        j                  | |      S t        t        j                  | |            S rG  )r  	get_dtyper  r  r   ru   rt  s      r7  r   r   s  sE     OOAEe$yyA1a!!r9  )r  tensor1tensor2r  r  r  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcdiv
    c                  (    dt               d  dS r  r3  r  r  s   r7  rP  zaddcdiv.<locals>.<lambda>      -d5k]:YZeYffgh r9  r  r  r   r^  rL  r   r4  r  r  r  r  r  r  s      ` @r7  r   r     _      

))%0''U[Ah	

 %'/G+++r9  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcmul
    c                  (    dt               d  dS r  r3  r  s   r7  rP  zaddcmul.<locals>.<lambda>  r  r9  r  r  s      ` @r7  r   r     r  r9  )rn  r  rf  r  rf  c                    ||d}t        |      |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } | S )Nz+clamp called but both min and max are none!)rj  r^  rT   rz   r   r   r   )rn  r  rf  r  a_isnan	conditions         r7  r   r     s     {s{;o
++a.$$UXXa%5w?	
 KK	1c*
++a.$$UXXa%5w?	KK	1c*Hr9  c                 0    t        j                  | |      S )N)r  r^  r   )r  r  s     r7  r}   r}          ;;t%%r9  c                 0    t        j                  | |      S )N)rf  r  )r  rf  s     r7  r~   r~     r  r9  predc                      ||t         t        j                   ||d       t        j                   j
                  t        j                  u  fd       t         ||      \   }}t        j                   ||      S ) Tallow_cpu_scalar_tensorsc                  "    d j                    S )Nz#expected predicate to be bool, got r  )r  s   r7  rP  zwhere.<locals>.<lambda>  s    5djj\B r9  )
NotImplementedErrorr  check_same_devicer^  ri  r  r  r  r  r   )r  rn  ro  s   `  r7  r   r     sp    " 	yAI!!	D!QF	LL

ejj B
 "$1-JD!Q;;tQ""r9  memory_formatr  c                4    t        j                  | |      }|S Nr  )r  r   )rn  r  r  s      r7  r   r     s    
 [[-8FMr9  )allow_cross_devicec                    |sA| j                   |j                   k7  r(d|j                    d| j                    d}t        |      t        j                  | |      S )NzAttempting to copy from device z to device z*, but cross-device copies are not allowed!)r6  re  r  r   )rn  ro  r  r  s       r7  r   r      sM    !((ahh"6/zQXXJNxy3==Ar9  c                     | j                         dk7  rd| j                          d}t        |      t        j                  | j                        } |t        j                  |             S )NrQ  zCan't convert a tensor with z elements to a number!)r  rj  r  r   r  r  r   )rn  r  number_types      r7  r   r   (  sW    wwyA~,QWWYK7MNo %%agg.Kuzz!}%%r9  r6  copylayout
pin_memorynon_blockingc                     | xrw |d u xs | j                   |k(  xr` |d u xs | j                  |k(  xrI |d u xs | j                  |k(  xr2 |d u xs, |t        j                  k(  xs t        j                  | |      S r  )r6  r  r  r^  preserve_formatr  is_contiguous_for_memory_format)rn  r6  r  r  r  r  r  r  s           r7  _to_will_aliasr   5  s      
	
t^1qxx61
	
d].agg.
	
 t^1qxx61
	
 T! U 5 55U44QmTr9  c                      t         rG  )r  )r  r  s     r7  _to_dispatchr  N  s    
r9  c                     | ||||d}|S N)r6  r  r  r  r  rN  r6  r  r  r  r  r  s         r7  
_to_devicer  S  s!     $&F Mr9  c                 <    t        j                  |       ||||d}|S r  )r^  r6  r  s         r7  _to_device_strr  e  s*     ,,v&$&F Mr9  c                     | |||d}|S )N)r  r  r  r  rN  )r  r  r  r  r  s        r7  	_to_dtyper
  w  s     $&	F Mr9  otherc                 `    | j                   }| j                  }| j                  }||||||d}|S )N)r6  r  r  r  r  r  )r6  r  r  )r  r  r  r  r6  r  r  r  s           r7  	_to_otherr    sA     \\FKKE\\F $&F Mr9  	to_kwargsc                    g d}d|v r.t        |d   t              rt        j                  |d         |d<   |D ]  }||v s|dk(  r||   t        j                  u st|dk(  r[||   j
                  | j                  j
                  k(  r5||   j                  r:||   j                  | j                  j                  k(  st        | |d       ||   k(  s|j                  |        y )N)r  r6  r  r  r6  r  )	r=  r  r^  r6  r  r4  indexr  pop)rn  r  options_to_checkkws       r7  _canonicalize_to_argumentsr    s    E9Ih,?!E#ll9X+>?	( "?&9R=E<Q<Q+Q(N!"**ahhmm;%bM//9R=3F3F!((..3X Ar4(IbM9 b!"r9  c                    t        |      dk7  rt        |i |}d|vsJ t        | |       t        | fi |r| S d|v r|j	                  d      nd}d|v r|j	                  d      nd}|s)|j                  d| j                        | j                  k7  r>|s<d|vr8d|vr4d	|vr0t        j                  | |j                  d| j                              S t        j                  | fi |}t        ||        |S )
Nr   r  r  Fr  r  r  r6  r  )rT  r  r  r   r  getr  r  r  r^  r  r   )rn  r  r  r  r  r  s         r7  r   r     s    
4yA~t.v. v%%%q&)a"6"!'6!16::fuD1?61I6::n-uL 
&**Wagg.!''9F*V#V# ))!VZZ-IJJa*6*FFAMr9  )has_identityaccepts_dim_tuplerB  keepdimsr  r  r  r  r  rB  r  r  output_dtype_kindc                    t         t              sJ  j                  dkD  rt        d j                   d      |.t        |t              sJ |||j                  k7  rt        d      |s|t        |t
              sJ t        |t
              r|f}t        j                   j                  |      }|s<ddl	m
}	  j                  dk(  xs  |	 fd|D         }
t        j                  |
d        t        j                   ||      \  }}t         |        | |      }|rst         j                        D cg c]  }||vr j                  |   nd	 }}t         j                        D cg c]	  }||vs| }}t!        j"                  |||      }|C|J |||j                  k7  rt        d
      t%        ||j                        }t'        ||      S |j                  |k7  r|t!        j(                  ||      }|S c c}w c c}w )N@   zReceived a tensor with z? dimensions, but only tensors with up to 64 dims are supported!z4dtype argument and out dtype must match in reductionr   )rw  c              3   B   K   | ]  }j                   |   d kD    ywr   NrU  rJ  irn  s     r7  rL  z_reduction.<locals>.<genexpr>	  s     .L!qwwqzA~.Ls   c                       y)NzJreducing over zero-size dimension for reduction operation without identityrN  rN  r9  r7  rP  z_reduction.<locals>.<lambda>	  rz  r9  rQ  z7Expected the dtype of reduction result and out to match	copy_fromr   )r=  r%   ndimre  r  r   r  reduction_dimsrU  r]  rw  r^  ri  reduction_dtypesr)   rh  r  broadcast_in_dimr*   r+   r  )rn  r  r  r  rB  r  r  r  r  rw  valid_shaper  r  r  r!  output_shapebroadcast_dimss   `                r7  
_reductionr,    s    a$$$vv{%affX-lm
 	
 #z***		!"J  |z$444$w.DAffkMW.Lt.L%M`	

 ',&<&<	e'#| 	 #45A!T]FDI!&&MRqatm
:RR%*166]Datm!DD''nM
'''!:I   V\\2<<|||#(@++FLAM! SDs   ;H0	H
:H
c                 J    t        t         j                        }t         di       } t        d      |       t	               dd fd
       } j                   d}||_        |j
                  j                  |        t        t        t        |            |       |S )zk
    Given a view function (e.g. torch.diagonal) generates its copy variant (e.g. torch.diagonal_copy)
    __annotations__Tr  Nr  c                 X     |d| i|}r| y | |S t        j                  d |      S )Nr  c                 B    | j                  t        j                        S r  )r   r^  contiguous_formatrO  s    r7  rP  z3_make_copy_from_view.<locals>._fn.<locals>.<lambda>3	  s    aggE,C,CgD r9  )pytreetree_map)r  r  r  r  r  return_none_on_out_variants       r7  r  z!_make_copy_from_view.<locals>._fn*	  sB    T-s-f-%#/?MD
 	
r9  _copy)r  r  r  r.   r
   r.  updater  )r  r5  aten_fnannotationsr  	copy_names   ``    r7  _make_copy_from_viewr;   	  s     dBKK(G"/4K 
'	&w	/B
2Y 

 

 ;;-u%ICL{+47434S9Jr9  c                     t        j                  t        j                  t        j                  |       ||            }| j                  t         j                  k(  r |j                  t         j                        }|S )Nr  r  )r^  r   r   r  uint8r   )rn  r  r  r  s       r7  r   r   >	  sU     uyy):):1)=sGTUFww%++-Mr9  c                 h   t        | t        j                        }t        |t        t
        f      rt        |      dk(  r|j                         }n"|j                  ||      j                  d      }| j                  t        j                  u r$t        j                  |t        j                        S |S )Nr   )r  r  F)r)   r^  r  r=  listrc  rT  r   r   r   r  r=  r  r  )rn  r  r  r  r  s        r7  r   r   M	  s     
!EJJ	/B#e}%#c(a-C144U; 	ww%++))&%++>>Mr9  )r  r  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S NrN  rB  r  r  r  r  )r  r  r  r  r^  int64r,  r  r   r"   SAMErn  r  r  r  r  s        r7  r   r   a	  s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I			499 r9  c           
      
    t        j                  d      t        j                  t        j                   j
                         fd       t        j                   j
                        r#t              dkD  rt        j                         S  j                  t              z
  t        t                    t         fdt        t                    D              z   }t        j                   |dd       S )NFvalidatec                  *    d d j                    dS )Nzsum_to_size: size "z" is not expandable to size ""r  rn  rU  s   r7  rP  zsum_to_size.<locals>.<lambda>	  s    %eW,I!''RST r9  r   c              3   \   K   | ]#  }|z
     d k(  rj                   |   d k7  r| % ywrQ  Nr  )rJ  r!  rn  leading_dimsrU  s     r7  rL  zsum_to_size.<locals>.<genexpr>	  s9      5\!"a'AGGAJ!O 	
5s   ),T)r  r  r  )r  extract_shape_from_varargsr^  ri  is_expandable_torU  is_same_shaperT  r  view_ofr%  rc  rh  r   )rn  rU  reduce_dimsrN  s   `` @r7  r   r   	  s     ,,UUCE	LLuagg.T 5!''*s5zA~}}Q66CJ&Ll+,u 5|SZ05 0 K
 99QKTBBr9  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S rA  )r  r  r  r  r^  rC  r,  r  r   r"   rD  rE  s        r7  r   r   	  s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I	

499 r9  r/  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S NrN  FrB  r  r  r  r  r  )r,  r  r   r"   rD  rn  r  r  r  s       r7  r   r   	  E     byC2I	

499	 	r9  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S rV  )r,  r  r   r"   rD  rX  s       r7  r   r   	  rY  r9  c                 6    |t        | t              r| }d } | |fS rG  )r=  r  )r  unbiaseds     r7  _dim_var_dispatchr]  	  s'     JsD1=r9  
correctionr\  r_  c          
          t        ||      \  }}t        j                  ||      }|dk(  s|g k(  rd }t        | t	        t
        j                  |      ||d d dt        j                        }|S )NrN  r^  TrW  )	r]  r  set_correctionr,  r   r  r   r"   COMPLEX_TO_FLOAT)rn  r  r\  r  r_  r  s         r7  r   r   	  sr     &c84MC%%h
;J
byC2I			j14EE	F Mr9  c                .   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}t        | |      } t        j                  | |||      }t        j                  |      }|J t        ||      S N)r_  r  )
r]  r  ra  r'  r"   rb  r)   r^  r   rp   )	rn  r  r\  r  r_  opmath_dtyper  a_vara_stds	            r7  r   r   

  s     &c84MC%%h
;J00	%66L% 	 <0AIIaWEEJJuE"5%00r9  c          	         	 |dk(  s|g k(  rd }	 j                   t         t        j                  ||d t        j
                        }t        j                  t        j                        xs t        j                        	fd       t        |t              r|f}t        j                   j                  |      } j                  dk(  rdn#t!        t"        j$                   fd|D        d      }t'        ||      } j                   n}t)        ||      }|5t        |t*              sJ t-        ||j                        }t/        ||      S |S )NrN  rB  c                      ddnd d  S )Nz&mean(): could not infer output dtype. Inputr   z> dtype must be either a floating point or complex dtype. Got: rN  )r  
orig_dtypes   r7  rP  zmean.<locals>.<lambda>;
  s'    4$,w*= >77<g? r9  r   rQ  c              3   <   K   | ]  }j                   |     y wrG  r  r   s     r7  rL  zmean.<locals>.<genexpr>D
  s     7Qq
7Qs   r#  )r  r,  r  r   r"   KEEP_PROMOTED_TYPEr^  ri  r  r  r  r=  r   r&  rU  r%  r   operatorr   r   r)   r%   r*   r+   )
rn  r  r  r  r  r  rB  nelemr  rk  s
   `  `     @r7  r   r   !
  s0    byC2IJ}			4GGF 
LLU#Du'='=e'D	
 #sf-D1A&7QD7QST"UE'F#m177L$V\:F
#z***V\\2<<Mr9  out0out1)r\  r  r_  c                d   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}| j                  }t        | |      } t        j                  | |||      \  }}	t        j                  |      }
|J t        |
|      t        |	|      fS rd  )r]  r  ra  r'  r"   rb  r  r)   r^  r   rp   )rn  r  r\  r  r_  re  r  original_dtyperf  a_meanrg  s              r7  r   r   O
  s     &c84MC%%h
;J00	%66L% WWN<0ANN1cj'RME6JJuEu-7 r9  c                b    t        ||      \  }}t        | ||||      }t        | ||      }||fS )Nr^  )r]  r   r   )rn  r  r\  r  r_  vms          r7  r   r   i
  s=     &c84MCAsHg*=AQWAa4Kr9  )r  vec1vec2)betarU  rx  ry  rz  c                    t        j                  j                  dk(  fd       t        j                  j                  dk(  fd       dfdffD ]  \  }t        |t              st        j                  t        j                   j                        xr@ t        j                  j                        xr t        j                  j                        fd         j                  j                  d   j                  d          t        j                   j                        rt        j                  t        t              t              fd       t        j                  t        t              t              fd	       s.rt        j                        S t        j                   d
      S t        j                   rt        j                              S t        j                   d
            S t        j                  t        t              t!         j                               fd       t        j                  t        t              t!         j                               fd       dk(  rt        j                        z  S  z  t        j                        z  z   S )NrQ  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec1, but got -Dr%  )rx  s   r7  rP  zaddr.<locals>.<lambda>
      <TYYKrJ r9  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec2, but got r}  r~  )ry  s   r7  rP  zaddr.<locals>.<lambda>
  r  r9  rU  rz  c                      d  dS )NzBoolean z$ only supported for Boolean results.rN  )arg_names   r7  rP  zaddr.<locals>.<lambda>
  s    (8*,PQ r9  r   c                       dt                S )Nzexpected bool/int beta but got r3  rz  s   r7  rP  zaddr.<locals>.<lambda>
  s    5d4j\B r9  c                       dt                S )Nz expected bool/int alpha but got r3  r  s   r7  rP  zaddr.<locals>.<lambda>
  s    6tDzlC r9  Fc                  :    dt                dj                   S Nzcannot safely convert z to r4  r  )rz  r  s   r7  rP  zaddr.<locals>.<lambda>
  s    ,T$ZLTZZLI r9  c                  :    dt                dj                   S r  r  )rU  r  s   r7  rP  zaddr.<locals>.<lambda>
  s    ,T%[Mdjj\J r9  )r^  ri  r%  r=  r  r  r  r  r   rU  r   r4  intouterr  r   r   )r  rx  ry  rz  rU  argr  s   ````` @r7  r   r   y
  s    
LL		QJ 
LL		QJ !'*T6N; Xc4 LL&&tzz2 7**4::67**4::6Q	 ;;tzz!}djjm4Ddjj)!$t*c2B	
 	!$u+s3C	
 .35;;tT*Uu9UU##+0D$' 6;oodE6R 
 	!$t*mDJJ.GHI	
 	!$u+}TZZ/HIJ	
 195;;tT222$;T4)@!@@@r9  r  r  .c                     |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        d |D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_1d`.c              3   V   K   | ]!  }|j                   d k\  r|nt        |d       # yw)rQ  r   N)r%  r  rJ  rn  s     r7  rL  zatleast_1d.<locals>.<genexpr>
  s%     E!QVVq[i1o5Es   ')rQ  r   )r=  collectionsabcr   rc  rT  )r  r  args_r  s       r7  r   r   
  sm     JsKOO$<$<=c;??#;#;<<<
EuE
ECc(Q,3*CF*r9  at_least_fnc                 N     | |      }t        |t              sJ t        ||      S rG  )r=  r%   r  )r  r  r  arg_s       r7  _unsqueeze_atleastr  
  s+     sDdJ'''T3r9  c                 *   |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        t
        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_2d`.r   c              3   P   K   | ]  }|j                   d k\  r|n |        yw)r3  Nr~  )rJ  rn  unsqueeze_atleast_1ds     r7  rL  zatleast_2d.<locals>.<genexpr>
  &     M!QVVq[&:1&==M   #&rQ  )	r=  r  r  r   r   r  r   rc  rT  )r  r  r  r  r  s       @r7  r   r   
  s~     JsKOO$<$<=c;??#;#;<<<"#5z1E
MuM
MCc(Q,3*CF*r9  c                 *   |s't        | t        j                  j                        r| }n,t        | t        j                  j                        rJ | f|z   }t	        t
        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_3d`.rV  c              3   P   K   | ]  }|j                   d k\  r|n |        yw)   Nr~  )rJ  rn  unsqueeze_atleast_2ds     r7  rL  zatleast_3d.<locals>.<genexpr>
  r  r  rQ  r   )	r=  r  r  r   r   r  r   rc  rT  )r  r  r  r  r  s       @r7  r   r   
  s~     JsKOO$<$<=c;??#;#;<<<"#5z2F
MuM
MCc(Q,3*CF*r9  r;  r7  r=  c                 Z    ||n| j                         }t        j                  | |||      S rG  )r=  r  r   )rn  r;  r7  r=  storage_offset_ints        r7  r   r   
  s6     )4!:J:J:L  AtV-?@@r9  srcc                 @    |dn|}t        j                  | ||||      S r   )r  r   )r  r  r;  r7  r=  r  s         r7  r   r   
  s+     -4.##E3f>PQQr9  c                  8    t        j                  t        |        S rG  )r^  Sizerp  )rm  s    r7  r   r     s    ::'011r9  c                  v    t        |       dk(  rt        | d   t              s| d   } t        t	        | ddi      S )NrQ  r   rq  F)rT  r=  rP  r?  r  tensorss    r7  r   r     s<     7|qGAJ!?!* 'MuMNNr9  c                     t        |      t        | j                        z
  }t        t        |t        | j                        |z               }t	        j
                  | ||      S rG  )rT  rU  rc  rh  r  r(  )rn  r;  startrB  s       r7  r   r     sK    IAGG$Euc!''lU234D!!!T400r9  r  r  c                   
 d }t        |       dk(  rd}t        |      | D ]  }t        |t              rJ  t	        j
                  | ddi ddlm} d 
t        |       D ]\  \  
j                  dk7  s
j                  dk7  s+t        j                  j                  
j                  k(  
fd       ^ 
| d   

j                  }g }t        |       D ]  \  }t        |      t        |j                        k7  rB|j                  dk(  sJ t        j                   ||j                  d   dk(        
fd	       i|j                  dk(  r ||j                  d   dk(        r|j                  |         ||       }t        |      dk(  rE| d   	 t        t        d
 | D                    }	t#        dj$                  j&                  |	|      S t	        j(                  |d   j                  |      }t	        j*                  |d   j                  |       t-        j.                  ||      j1                  |      S # t         $ r d}	Y w xY w)Nc                     d }| D ]I  }t        j                  |      }|t        j                  k(  r|c S |||k7  rt        j                  c S |}K |J |S rG  )r  suggest_memory_formatr^  r2  )inputsformatr   fs       r7   cat_compute_output_memory_formatz-cat.<locals>.cat_compute_output_memory_format"  si     	A++A.AE+++!fk...F	 !!!r9  r   z3cat expects at least one tensor, but received zero!r  FrC  rQ  c                  D    d j                    dj                    d dS )N6Number of dimensions of tensors must match.  Expected z-D tensors, but got z-D for tensor number  in the listr~  )exampler!  r   s   r7  rP  zcat.<locals>.<lambda>S  s0       '~-A!&& J%%&C|5 r9  c                  *    d j                    d dS )Nr  z*-D tensors, but got 1-D for tensor number r  r~  )r  
tensor_idxs   r7  rP  zcat.<locals>.<lambda>o  s$     #LL> *!!+L: r9  c              3   4   K   | ]  }|j                     y wrG  )requires_gradrI  s     r7  rL  zcat.<locals>.<genexpr>  s     $FQ__$F   r   r  r6  r  r  r  )rT  rj  r=  r%   r  r  r]  rC  rg  r%  r^  ri  rU  r  r  r   	Exceptionr  r  r6  canonicalize_dimvalidate_idxr  r   r   )r  r  r  r  tensorrC  rU  filteredr  r  r  r!  r   r  s             @@@@r7  r   r     sE   
 7|qCo .&*---. 
WEuED$ G'" 1?vv{vv{FFgll*5  !*MMEH'0 $
Fu:V\\**;;!###LL v||A!34:$ {{aN6<<?a3G$HOOF#3$6 5W=M
8}AJ	" !$Fg$F!FGM ''88''
 	
 
 
 !!1!13
7C	x{''-99Xs#)))FF  	"!M	"s   #I IIc                 >    t        d | D              }t        |d      S )Nc              3      K   | ]6  }|j                   d kD  r|n |j                  |j                         d f       8 ywrM  )r%  r   r  rI  s     r7  rL  zcolumn_stack.<locals>.<genexpr>  s7      ;<QVVaZQYY	1~66s   <>rQ  )rc  r   r  aligned_tensorss     r7  r   r     s(     @G O ""r9  c                     t        j                  | j                        s| S | j                  rt	        j
                  |       S t        j                  |       S rG  )r  r  r  	is_sparser^  r8   r  r   r  s    r7  r   r     s@    !!%++.""5))::er9  padc           	        
 t        j                  t              dz  dk(  fd       | j                  t              t              dz  }|z
  t        j                  |k\  fd       | }t	              D ]t  
d
z
  dz
  z     dk  r*|j                  
    |j                  
      z         }dz      dk  sL|j                  
d|j                  
   dz      z         }v t        j                  d D              r|j                         S t        d        }t	        |      D ]^  
t              
dz   dz  z
  
z         z   dz      z   }t        j                  |dk\  
fd       |j                  |       ` t        j                  |       }t        j                  || j                  | j                  | j                   |      }|dk(  r| j                  t         j"                  k(  rd	}t        j$                  ||      }|}	t	              D ]s  
d
z
  dz
  z     dk\  r)|	j                  
   |	j                  
      z
        }	dz      dk\  sK|	j                  
d|	j                  
   dz      z
        }	u t'        j(                  |	|       |S )
Nr3  r   c                       dt                S )Nz1Length of pad must be even but instead it equals rS  )r  s   r7  rP  z!constant_pad_nd.<locals>.<lambda>  s    CCH:N r9  c                  (    dt               d  dS )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has  dimensions.rS  )l_inpr  s   r7  rP  z!constant_pad_nd.<locals>.<lambda>  s"     225c(;P' r9  rQ  c              3   &   K   | ]	  }|d k    ywr  rN  )rJ  ps     r7  rL  z"constant_pad_nd.<locals>.<genexpr>  s     'aAE's   c            	      F    d z       d    ddz       d z    d	S )NzThe input size z, plus negative padding r  rQ  zG resulted in a negative output size, which is invalid. Check dimension z of your input.rN  )r!  input_sizesl_diffr  pad_idxs   r7  rP  z!constant_pad_nd.<locals>.<lambda>  sG    ok&1*&=%>>V7|nE#gk"2!3 4117!OM r9  r  F)r^  ri  rT  rU  rh  r   r<  r   r   r?  r  r  r  r  r  r6  r  r  rE   r  r   )r  r  r  l_padc_input	new_shapenew_dimr  r@  c_outputr!  r  r  r  r  s    `        @@@@@r7  r   r     s   
 
LLC1N
 ++KEHMEU]F	LL	 G65! Puqy1}%w<!nnQWw}}Q7G#g,7VWGw{annQ7==+;c'A+>N+NOGP" ||'3''}}[&)*I5\ 	"c(q1uk*fqj)CL83w{;KKqLM	
 	!	" //6M[[kk||))#F zekkUZZ/ZZ&FH65! Suqy1}%w<13w<!2S\!AH w{q q!X^^A->Wq[AQ-QRHS 
MM(G$Mr9  c                    t        j                  |t         j                  k7  d        t        | |      r| S t        j                  | |      S )Nc                       y)Nz@preserve memory format is unsupported by the contiguous operatorrN  rN  r9  r7  rP  zcontiguous.<locals>.<lambda>  rz  r9  r  )r^  ri  r  r   r   )rn  r  s     r7  r   r     sC     
LL...R 0O;;q66r9  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%dstack expects a non-empty TensorListrN  rN  r9  r7  rP  zdstack.<locals>.<lambda>  rz  r9  r3  )r^  ri  rT  r   r   r  s     r7  r   r     1    	LLW!#RS '*O""r9  )implicitr  c                   ddl m}m}m} t        j
                  j                  j                  j                  }t        |      dk(  r!t        |d   t              rt        |d         }t	        j                  t        |      t        | j                        k\  d        t        |      t        | j                        z
  }t        |      }t!        | j                        D ]  \  }	|	|z   }
||
    |dk(        r||
<   !|r6 |d      } |d      }|dk(  r|dk7  rt	        j                  dk(         t	        j                   |dk(  k(        fd       t	        j                  dk\         ||
<    t#        j$                  |       t'        j(                  | |t        t+        |t        | j                        |z                     S )	Nr   )rC  rE  rx  rQ  c                       y)Nz3expand: the requested shape has too few dimensions!rN  rN  r9  r7  rP  zexpand.<locals>.<lambda>#  rz  r9  rV  TrW  c                      d d  dS )Nz3expand: attempting to expand a dimension of length  -> r  rN  )requested_lengthrK  s   r7  rP  zexpand.<locals>.<lambda>I  s    MaSPTUeTffgh r9  )r]  rC  rE  rx  r^  r_  r`  ra  rb  rT  r=  r   rc  ri  rU  r?  rg  r  validate_shaper  r(  rh  )rn  r  rU  rC  rE  rx  rl  r}  shape_r\  
offset_idxx_hintrequested_hintr  rK  s                @@r7  r   r     s   WW%%--CCI
 5zQ:eAh9eAh	LLE
c!''l"E
 Z#agg,&F%[FAGG$ $2Q6\
 , *b01!"F: "16!*+;!MQ;>Q#6LLa(LLqAv/145h LL)Q./!1F:I$2N 
 !!	65vs177|f'<=> r9  c                 8    | j                  |j                        S rG  )r   rU  rE  s     r7  r   r   W  s    88AGGr9  chunksc           	         |dk  rd| d}t        |      t        j                  | j                  |      }| j                  |   }t        j                  ||z        }t        j                  ||z        }||z  }t        |      D cg c]  }t        | |||z  |       }	}|dk7  r |	j                  t        | |||z  |             t        |	      S c c}w )Nr   z%Expected at least one chunk, but got r  )rj  r  r  r%  rU  r'  r7   rG   rh  r   r  rc  )
rn  r  r  r  length
chunk_sizefull_chunkstail_chunk_sizer!  r  s
             r7  r   r   [  s    {5fXQ?o

 
 
-CWWS\F6F?+J**Vj01Kz)OBGBTUQfQQ^Z8UFU!fQ[:%=OP= Vs   C	start_dimend_dimc                 F   t        j                  | j                  |      }t        j                  | j                  |      }||k(  r| j                  dk7  r| S t        j                  | ||d       \  }}|t        j
                  | ||      S t        j                  | ||      S )Nr   must_be_valid)r  r  r%  r  _collapse_view_helpercollapse_viewcollapse)rn  r  r  r  _new_stridess        r7  r   r   q  s    &&qvvy9I$$QVVW5G G!
 $99	9gTI| ""1i99 >>!Y00r9  c                     t        |t              st        |t              st        d      t	        j
                  | j                  |      }t	        j                  |       t        j                  | |      S )Nz!dims has to be a sequence of ints)
r=  rc  r?  rj  r  canonicalize_dimsr%  validate_no_repeating_dimsr  rev)rn  rB  s     r7  r   r     sX     dE":dD+A<==""16640D	$$T*99Qr9  c                 N    | j                   dk  rt        d      t        | d      S )Nr3  zInput must be >= 2-d.rQ  r%  re  r   r  s    r7  r   r     %    vvz2334=r9  c                 N    | j                   dk  rt        d      t        | d      S )NrQ  zInput must be >= 1-d.r  r   r  s    r7  r   r     r  r9  r  r  c                 F   t        t              rYt        j                  j	                         dk(  xr t        j                  j                        d        j                         t        t              t        j                  | j	                         dkD  d        t        j                  dk\  d        t        j                  | j                  |      }| j                  |      t        j                  t         k  xr k  fd       dk  rz   t        j                  z
  k  fd       t!        | j"                        }||<   | j%                  || j'                         | j)                         | j'                  |      z  z         S )Nr   c                       y)Nz'start must be an 0-dim integral Tensor.rN  rN  r9  r7  rP  znarrow.<locals>.<lambda>  rz  r9  c                       y)Nz-narrow() cannot be applied to a 0-dim tensor.rN  rN  r9  r7  rP  znarrow.<locals>.<lambda>  rz  r9  c                       y)Nz&narrow(): length must be non-negative.rN  rN  r9  r7  rP  znarrow.<locals>.<lambda>  rz  r9  c                      d   d  d dS )Nz0start out of range (expected to be in range of [, z], but got )rN  )
dim_lengthr  s   r7  rP  znarrow.<locals>.<lambda>  s%    BJ;-rR\Q]]hinhoopq r9  c                      d d d  dS )Nzstart (z) + length (z) exceeds dimension size (z).rN  )r
  r  r  s   r7  rP  znarrow.<locals>.<lambda>  s    '%VH4NzlZ\] r9  )r=  r%   r^  ri  r  r  r  r  r   r   r  r  r%  r;  _check_with
IndexErrorr?  rU  r   r7  r=  )rn  r  r  r  r  r
  s     `` @r7  r   r     sP   
 %$IIK1D!7!7!D=	
 

eE	LL1UV	LL1NO

 
 
-CJ		u4*!4q
 qy
"	LLf$$] QWWIIcN<<188:q//1AHHSME4II r9  	norm_dimsepsc                 >   t        j                  | j                  |      }t        j                  | j                        }t        | |      }t        |t              sJ t        j                  ||dd      \  }}t        j                  ||z         }||z
  |z  }|||fS )a  Computes mean and 1/std of a tensor along norm_dims.

    Used as a helper function for normalization layers.

    Args:
        a (Tensor): input tensor
        norm_dims (DimsType): dimensions to normalize over
        eps (float): epsilon for numerical stability

    Returns:
        out (Tensor): normalized tensor.
        mean (Tensor): mean of the tensor along norm_dims.
        rstd (Tensor): 1/std of the tensor along norm_dims.
    FTr  r\  r  )r  r  r%  r  r  r)   r=  r%   r^  r   r   )	rn  r  r  r  a_acc
biased_varr   rstdr  s	            r7  
_normalizer    s    $ ''	:I33AGG<#A'89EeZ(((~~9udJ ;;zC'(D4<4
Cd?r9  
dimensionsc                 R    t        |      D ]  }t        j                  | |      }  | S rG  )sortedr^  r  )rK  r  r  s      r7  _unsqueeze_multipler    s+    j! $OOAs#$Hr9  weightbias
batch_sizenum_channelsflattened_inner_size
num_groupsc                 n    t        j                   j                  dk\   fd       t        j                  |z  dk(   fd       t        j                   j
                        }t         |      }	ddg}
t        j                  |	||z  |g      }t        j                  |j                  |
      }
t        j                  ||
dd      \  }}t        j                  ||z         } j                  j                  d	k(  r|t        j                  |d
|z  d
g      }||z  }| |z  }|"t        j                  |d
|z  d
g      }||z   }|j                         j                  ||g|d
g      }|j                         j                  ||g|d
g      }t        t!        d j                              }t#        ||      }t#        ||      }|	|z  |z   }nl||z
  |z  }|j%                   j&                        }dgt        t!        d j                              z   }|t#        ||      }||z  }|t#        ||      }||z   }t        | j
                        }t        | j
                        }t        | j
                        }t        j(                  ||
      }t        j(                  ||
      }|||fS )Nr3  c                  "    d j                    S )Nz=Expected at least 2 dimensions for input tensor but received r~  r  s   r7  rP  z#native_group_norm.<locals>.<lambda>  s    OPUPZPZ|\ r9  r   c                  .    dd j                    d z   S )NzDExpected number of channels in input to be divisible by num_groups, zbut got input of shape z and num_groups = r  )r  r  s   r7  rP  z#native_group_norm.<locals>.<lambda>  s#    V#EKK=0B:,
OP r9  r  FTr  rv  rQ  )r^  ri  r%  r  r  r  r)   r   r  r   r   r6  r4  r   r   r?  rh  r  r  rU  r   )r  r  r  r  r  r  r  r  r  	input_accr&  input_reshapedr  r   r  weight_reshapedwro  bias_reshapedr+  unsqueeze_wunsqueeze_br  unsqueeze_weightunsqueeze_biass   `     `                  r7  r   r     s    
LL

a\ 
LLz!Q&	P 33EKK@'/@AIVN]]	Z!;=QRN ,,^-@-@.QN~~NUDJ ;;zC'(D||E!f&8--Q
LJ$>B
 ?"EAI!MMq*lj&@!DM M!ALLN%%z<&@<QRBSTLLN%%z<&@<QRBSTeAuzz23)!^<)!^<+%3$,hhu{{#tE!UZZ$89926>J((C0~FN&C
!#u{{
3C"45D"45D ==~.D==~.Dtr9  out2normalized_shapec                     ddl m} t              }t        j                  |dk\  fd       t        j                  d u xs  |j
                  t                    fd       t        j                  d u xs  |j
                  t                    fd       t        j                   j                  |k\  xr,  | j
                   j                  |z
  d  t                     fd       t                t              t               j                  |z
  }t        t        | j                              }t         ||      \  }	}
}|	z   }	n|	z  }	n
|	z  z   }	t        |	 j                        }	 j                  j                  dv r,t        |
 j                        }
t        | j                        }|	|
|fS )	Nr   sym_eqrQ  c                       dt               z   S )NzzExpected normalized_shape to be at least 1-dimensional, i.e., containing at least one element, but got normalized_shape = )r  )r-  s   r7  rP  z#native_layer_norm.<locals>.<lambda>>  s     I

  r9  c                  R    dt        j                        z   dz   t               z   S )NzQExpected weight to be of same shape as normalized_shape, but got weight of shape  and normalized_shape = r  rU  )r-  r  s   r7  rP  z#native_layer_norm.<locals>.<lambda>H  s5     
fll
 %% 
	  r9  c                  R    dt         j                        z   dz   t              z   S )NzMExpected bias to be of same shape as normalized_shape, but got bias of shape r3  r4  )r  r-  s   r7  rP  z#native_layer_norm.<locals>.<lambda>Q  s4     
djj/ %% 
	  r9  c                  p    dt              z   dz   t              z   dz   t         j                        z   S )NzGiven normalized_shape=z, expected input with shape z, but got input of size r4  )r  r-  s   r7  rP  z#native_layer_norm.<locals>.<lambda>^  sK    )

 
() 
  %	%
 ekk
 r9  )rv  mtia)r]  r0  rT  r^  ri  rU  rc  r%  r   r?  rh  r  r)   r  r6  r4  )r  r-  r  r  r  r0  normalized_ndimaxisr&  r  r   r  s   ````        r7  r   r   0  s    =*+O	LL1	  
LL$G&u5E/FG	  
LLCtzz51A+BC	  
LL

o% 	
KKo589"#

	 uEF#$::'D%ejj12N <OCt~$*Dj		Fl		 0FlT!
!#u{{
3C||O+&tU[[9&tU[[9tr9  c                     t        | S rG  )r   )	fake_modefuncr  r  s       r7  native_layer_norm_faker=  ~  s    d##r9  c                     t        j                  | j                  t        j                  |            }t	        j
                  | |      S rG  )r  r  r%  extract_dims_from_varargsr  r   )rn  rB  _permutations      r7  r   r     s9    **	//5L ??1l++r9  r  maxnormc                 h  	 t        j                  t        |t               d        t        j                  |dkD  d        t        j                  t        t               d        t        j                  dk\  fd       | j                  	t        j                  	dkD  	fd       t        j                  	|      }t        t        	            }||= t        j                  | j                        }|| j                  k7  r%t         j                  j                  | ||d|	      }n#t         j                  j                  | ||d
      }d}t        j                  |kD  ||z   z  d      }|| j                  k7  r t        j                  || j                        }| |z  j!                         S )Nc                       y)Nzrenorm: p must be real-valuedrN  rN  r9  r7  rP  zrenorm.<locals>.<lambda>  rz  r9  r   c                       y)Nz'renorm: non-positive norm not supportedrN  rN  r9  r7  rP  zrenorm.<locals>.<lambda>  rz  r9  c                       y)Nz#renorm: maxnorm must be real-valuedrN  rN  r9  r7  rP  zrenorm.<locals>.<lambda>  rz  r9  c                      d  S )Nz,renorm: expected maxnorm to be >= 0 but got rN  )rA  s   r7  rP  zrenorm.<locals>.<lambda>  s     LWIV r9  rQ  c                      d  dS )Nz/renorm: input needs at least 2 dimensions, got  dimensionsrN  r~  s   r7  rP  zrenorm.<locals>.<lambda>  s    A${S r9  T)r  r  r  gHz>rn  )r^  ri  r=  r  r%  r  r  r?  rh  r  r  linalgvector_normr   r  r  r   )
r  r  r  rA  rS  acc_typer`   r  norm_factorr%  s
      `     @r7  r.  r.    so   
 
LLZ7++-TU	LLQIJ	LLw((*W 
LL1V ::D	LLqS
 
 
 s
+CuT{#KC **5;;7H5;;||''1k4x ( 
 ||''q+t'L
C++dWng.DcJK5;;00ekkJK++--r9  n_fft
hop_length
win_lengthwindowcenterpad_mode
normalizedonesidedreturn_complexalign_to_windowc                     t        j                  d u xs j                   j                  k(   fd       t        j                  | xs |
d u d        ||ndz  ||n|	O j                         xs% d uxr t	        j
                  j                        }t        j                  |d        n|	}t        j                  t	        j                   j                        xs t	        j
                   j                        d        t        j                  d j                  cxk  xr dk  nc d         j                  }|dk(  r j                  d	       |rd
 j                  z
  }dz  }g t        j                  d|       j                  }t        j                   j                  |      ||g|        j                   j!                         |d          j!                  d      t        j                  d	cxk  xr k  nc fd       t        j                  d	kD  fd       t        j                  d	cxk  xr k  nc fd       t        j                  d u xs j                  fk(  fd       k  rT,t        j"                   j                   j                        z
  dz  }t        j%                  |z
  |z
  g      |s#|
r!z
  dz  }t        j                   ||g|        j'                  d        z   t	        j
                   j                        }||n| }|rdnd }|r;t        j                  | d        t         j(                  j+                   d|      }n"t         j(                  j)                   d|      }|j-                  dd       |dk(  r|j/                  d	      }|r|S t        j0                  |      S )Nc                  B    d j                    dj                    z   S )NzAstft input and window must be on the same device but got self on  and window on r5  r  rP  s   r7  rP  zstft.<locals>.<lambda>  s,    OPUP\P\~^/0 r9  c                       y)Nz6stft only supports align_to_window for center = False.rN  rN  r9  r7  rP  zstft.<locals>.<lambda>  rz  r9     c                       	 y)Nzstft requires the return_complex parameter be given for real inputs, and will further require that return_complex=True in a future PyTorch release.rN  rN  r9  r7  rP  zstft.<locals>.<lambda>  s    c r9  c                       y)Nz:stft expected a tensor of floating point or complex valuesrN  rN  r9  r7  rP  zstft.<locals>.<lambda>  rz  r9  rQ  r3  c                       y)Nzstft expected a 1D or 2D tensorrN  rN  r9  r7  rP  zstft.<locals>.<lambda>  rz  r9  r   r  c                      d  d S )Nzstft expected 0 < n_fft <= z, but got n_fft=rN  )r  rM  s   r7  rP  zstft.<locals>.<lambda>  s    -fX5EeWM r9  c                      d  S )Nz0stft expected hop_length > 0 but got hop_length=rN  )hop_length_s   r7  rP  zstft.<locals>.<lambda>  s    B;-P r9  c                      d  S )Nz9stft expected 0 < win_length <= n_fft but got win_length=rN  )win_length_s   r7  rP  zstft.<locals>.<lambda>  s    KK=Y r9  c                  0    d  ddj                    z   S )Nz8expected a 1D window tensor of size equal to win_length=r  zbut got window with size r  )rd  rP  s   r7  rP  zstft.<locals>.<lambda>  s(    F{mSUV)&,,89 r9  re  rV  )	dimensionr;  steporthoc                       y)Nz9Cannot have onesided output if window or input is complexrN  rN  r9  r7  rP  zstft.<locals>.<lambda>  rz  r9  r  r`   )r^  ri  r6  r-  r  r  r  r  r%  r  	itertoolsr   rU  r  r  r  r;  r#  r   r  fftrfft
transpose_squeeze_view_as_real)r  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  return_complex_original_ndim
extra_dims
pad_amountextended_shapeleftinput_pad_amountcomplex_fftr`   r  rb  r  rd  s   ``  `                @@@r7  r/  r/    s    
LL$7&--5<<7	
 
LL
-o-H
 !+ 6*EQJK * 6*EK**, 
$G5#9#9&,,#G 	 		
 )	LLU[[)PU-C-CEKK-PL 
LLejj%A%'PQJJM"^
aZ
I9++Az:IU[[IN3j*5MxX

5::<
45ZZ]F	LL	EVM 
LLaP 
LL	K 5 Y 
LL$8&,,;.8	
 U>ZZ5;;u||TF#)%%ftU[5H45O.PQo!K/A5!13C DhOLL2ELDE((5K#/x_H 7dDOO	
 iinnUn6iimmErm5NN1all1o!3>u'9'9#'>>r9  c
                 X	    t        j                  d u xs j                   j                  k(   fd       ||n|dz  }
||n|}t        j                  t        j                   j
                         fd        j                  d      } j                  d      ||
|dz
  z  z   }t        j                   j                         dkD  d        t        j                  d	 j                  cxk  xr d
k  nc  fd       ||n|k7  }|r#t        j                  |d	z  dz   k(  fd       nt        j                  |k(  fd       t        j                  d|
cxk  xr |k  nc d        t        j                  d|cxk  xr |k  nc d        t        j                  d u xs j                  |fk(  d        Bt        j                   j
                        }t        j                  || j                        }n}||k7  r'||z
  d	z  }t        j                  ||||z
  |z
  fd      } j                  } j                  d	k(  r j                  d        j                  dd	       |rdnd }|	r;t        j                  | d        t         j                   j#                   d|       nyt        j                  d u xs  t        j                  j
                         d        |s j%                  dd|d	z  dz          t         j                   j'                   d|        j                  d	      |k(  sJ  |j)                  dd|g      z  }t        j+                  ||j                  d      |fd||
      }t        j+                  |j-                  d	      j/                  d||f      |j                  d      |fd||
      }||j                  d      k(  sJ ||j                  d      k(  sJ |r|d	z  nd}|||z   }n|r	||d	z  z
  }n|}t1        d||z
        }|j%                  d||      }|j%                  d||      }||z  }|d	k(  r|j3                  d      }||kD  r3t5        j6                  dd	       t        j                  |d||z
  fd      }|S )Nc                  B    d j                    dj                    z   S NzBistft input and window must be on the same device but got self on rY  r5  rZ  s   r7  rP  zistft.<locals>.<lambda>:  s-    PQVQ]Q]P^_/0 r9  r\  c                  @    d j                    dj                    z   S r{  r5  rZ  s   r7  rP  zistft.<locals>.<lambda>E  s&    Pofmm_=> r9  rV  rQ  r   c                       y)Nz"istft input tensor cannot be emptyrN  rN  r9  r7  rP  zistft.<locals>.<lambda>N  rz  r9  r3  r  c                  "    d j                    S )Nz8istft expected a tensor with 2 or 3 dimensions, but got r~  r  s   r7  rP  zistft.<locals>.<lambda>Q  s    J5::,W r9  c                      dd  z   S )NMistft expected the frequency dimension (3rd to the last) of the input tensor z3to match n_fft / 2 + 1 when onesided=True, but got rN  fft_sizes   r7  rP  zistft.<locals>.<lambda>X  s    _GzRS r9  c                      dd  z   fS )Nr  z,to match n_fft when onesided=False, but got rN  r  s   r7  rP  zistft.<locals>.<lambda>`  s    _@
KL r9  c                       y)Nz+istft expected 0 < hop_length <= win_lengthrN  rN  r9  r7  rP  zistft.<locals>.<lambda>h  rz  r9  c                       y)Nz&istft expected 0 < win_length <= n_fftrN  rN  r9  r7  rP  zistft.<locals>.<lambda>k  rz  r9  c                       y)NzDInvalid window shape. window has to be 1D and length of `win_length`rN  rN  r9  r7  rP  zistft.<locals>.<lambda>o  rz  r9  re  rh  c                       y)Nz9cannot have onesided output if window or input is complexrN  rN  r9  r7  rP  zistft.<locals>.<lambda>  rz  r9  rj  c                       y)Nz:Complex windows are incompatible with return_complex=FalserN  rN  r9  r7  rP  zistft.<locals>.<lambda>  rz  r9  )r  r  r  )r  r  r;  rg  zThe length of signal is shorter than the length parameter. Result is being padded with zeros in the tail. Please check your center and hop_length settings
stacklevel)r^  ri  r6  r  r  r  r;  r  r%  rU  corresponding_real_dtyper#  r  r   r  r   rl  ifftr   irfftr  unfold_backwardr   r   rf  r   warningswarn)r  rM  rN  rO  rP  rQ  rS  rT  r  rU  rb  rd  n_framesexpected_output_signal_len	onesided_
real_dtypewindow_rv  rr  r`   y_tmpr|  window_envelopr  endr  s   `   `                    @r7  r0  r0  +  s    
LL$7&--5<<7	
 !+ 6*EQJK * 6*EK	LLu{{+	
 zz"~Hzz"~H!&1)E!E	LL"$PQ	LL	UZZ1W %0h%6GIQJNh&	
 	X	
 
LL	K&;&= 
LL	K 5 "R 
LL$8&,,;.8V
 ~33EKK@
**[
5<<Pe#)&&wu{7JT7Q0RTUVJJMzzQ"OOAq!E 7dDMO	
 		u"48dNF%"8"8"FFP	
 LLRq!aLHE		2D9::a=E!!!GLL!Q//EZZ]$>? 	 	A ))Aq(E23ZZ]$>? * N &222%)<)<Q)???? EQJaEfn	(5A:5(C%K F	QeF3A#**qf*MN	NAIIaL
''`	

   Q.H(H$I1MHr9  a_shapea_striderf  rg  c                   	
 t        |       }t        j                  ||d      	|dk(  rdn| 	   
|dk(  rdn|	   }t        j                  
k  	
fd       t        j                  dkD  fd       t        |       }t        |      }|j                         |j                  |       	|k  r|	   z
  z  dz   |	<   |	xx   z  cc<   ||fS )NT)wrap_scalarr   rQ  c                      d  d d S )Nz%Maximum size for tensor at dimension z is z but size is rN  )r  max_sizer;  s   r7  rP  z*_get_unfold_shape_stride.<locals>.<lambda>  s    7uD
-X\W]^ r9  c                      d  dS )NzStep is z but must be > 0rN  rg  s   r7  rP  z*_get_unfold_shape_stride.<locals>.<lambda>  s    (4& 01 r9  )rT  r  r  r^  ri  r?  r  )r  r  rf  r;  rg  a_ndimlast_striderU  stridesr  r  s      ``    @@r7  _get_unfold_shape_strider    s     \F

 
 
ECaKqWS\H{!K	LL^
 
LLq1
 ME8nG	LLNN;
V|Cj4'D014c
'>r9  c                    t        j                  |d      }t        j                  t	        |      t	        | j
                        k\  d        t	        |      dk(  rt        j                  |       S t	        |      | j                  z
  }dg|z  }| j
                  D ]  }|j                  |        t        d t        ||      D              }d|v rKt        j                  || j                  | j                  | j                  t        j                  |             S |}t        j                   |      }t#        |      D ]!  \  }}t%        ||||t'        |d            \  }}# t)        t#        |            }	|	j+                  t-        j.                  d      d	       t        |	 \  }
}| j1                  |      }t        j                  |      }|j3                  |
      }|j5                  |      S )
NFrG  c                       y)Nzbrepeat: Number of dimensions of repeat dims can not be smaller than number of dimensions of tensorrN  rN  r9  r7  rP  zrepeat.<locals>.<lambda>  rz  r9  r   rQ  c              3   ,   K   | ]  \  }}||z    y wrG  rN  )rJ  padded_sizerepeat_sizes      r7  rL  zrepeat.<locals>.<genexpr>  s!      $K 	k!r8  r  T)keyreverse)r  rO  r^  ri  rT  rU  r   r%  r  rc  r{  r  r  r6  r  r  make_contiguous_strides_forrg  r  rf  r?  sortrn  
itemgetterr   r   r   )rn  repeat_shapenum_new_dimensionspadded_shapedim_sizetarget_shapeurtensor_shapeurtensor_strider  enumerated_stridepermute_order_sorted_striderepeat_xtensorcloned_resultpermuted_results                  r7  r   r     s    33L5QL	LLLS\)t
 <A{{1~\*QVV33++LGG &H%&  (+L,(G L 	L{{''88//55a8
 	
 "N77EO"<0 
X*BOS(C!<L+
'
 Y78x2215tD$'):$;!M> XXn-N KK/M $++M:O ""<00r9  
allow_copyc                 t  
 d| 
|D ]=  }
j                   k\  r@|dk(  sJ 
j                   dz
  }t        j                  
|
j                  |         
dz   S|
j                     k(  rdz   k
j                     }}||z  dk7  r |dz  }|
j                  |   z  }||z  dk7  r |k7  rtt        j                  
|d       \  }}|I|rt        j
                  | |      c S d| j                   d| j                          d| d}	t        |	      t        
|      
||k7  rt        j                  
|      
dz   @ 
j                   k  rFt        j                  
j                     dk(  
fd       t        
      

j                   k  rF
| u rt        j                  |       S 
S )	Nr   rQ  r  z Cannot view a tensor with shape z and strides  as a tensor with shape r  c                  .    d d j                       S )Nza.size(z) expected to be 1 but got r  )r  r\  s   r7  rP  z/_reshape_view_helper_core_alg.<locals>.<lambda>_  s    gcU"=bhhsm_M r9  )r%  r  	split_dimrU  r  r   r7  rj  r   r^  ri  r   rR  )rn  rU  r  r  last_dimaccumr  r  r  r  r  r\  s             @@r7  _reshape_view_helper_core_algr    s   ( C	
B ,"''>Q;;ww{H Xrxx/ABB'C RXXc]"'Cfn!1HCRXXc]"E fn! #: ',&A&ACD'#I|   ==E228	qxxzlZrsxryyz{ o%S#&B F?S&1BAgY,^ -HHSMQM	
 R - 
Qw}}Q	r9  c                    t        j                  d      t        j                   j                                j                         dk(  r t	         t        j
                              S  j                  dk(  r7 }D ]  }|dk(  sJ t        |d      } | u rt        j                         S |S t              dk(  rA } j                  D ]  }|dk(  sJ t        |d      } | u rt        j                         S |S t               rt              dk(  r6 j                  dkD  r't        j                    j                         gdg      S t              dk(  r4 j                  dk(  r%d   }d   }t        j                   ||g|dg      S t        t         j"                  d      }t        j$                   j                         |k(   fd       t'         |      S )NFrG  r   rQ  rV  r3  c                  *    d j                    d dS )Nz&Could not reshape a tensor with shape r  r  r  rK  s   r7  rP  z&_reshape_view_helper.<locals>.<lambda>  s    8	AYZ_Y``ab r9  )r  rO  
infer_sizer  r   r  r%  r  r  rR  rT  rU  r   r   r^  r   rn  r   ri  r  )rn  r  rU  _ar  dim0dim1shape_numels   ` `     r7  _reshape_view_helperr  i  s   ,,UUCE UAGGI.E 	wwyA~!UE$E$Ee$LMM 	vv{ 	#FQ;;2r"B	# 7==##I 5zQgg 	!FQ;;RB	! 7==##Ia u:?qvvz##A	{QC88u:?qvv{8D8D##Ad|dAY??ua0K	LL		[ b )E:>>r9  rU  c                      t        | g|ddiS )Nr  Tr  rK  s     r7  r   r     s    ;E;d;;r9  c                 @    | j                  |j                               S rG  )r   r;  r  r  s     r7  r   r     s    <<

%%r9  shiftsc                    t        j                  | j                  |      }t        |t              s|f}t        |t              s|f}| j                         dk(  r| j                         S | j                         dk(  r t        |      dkD  rt        d|d    d      t        |      }t        |      }|dk7  s|dk7  r|dk(  rt        d      |dk(  rH|dk(  rCt        j                  t        j                  |       |d      j                  | j                        S ||k7  rt        d| d|       |dkD  sJ |dd }|dd }t        j                  | |d   f|d         }t        j                  |||      S |d   }| j                  |   }	|	|d   z
  |	z  }
t        j                   |	| j"                  	      }| j%                  |t        j&                  |
|z   |	            S )
z/Reference implementation of :func:`torch.roll`.r   zDimension specified as z but tensor has no dimensionsrQ  z`shifts` requiredz*shifts and dimensions must align. shifts: z, dims: Nr5  )r  r  r%  r=  r   r  r   r  rT  r  re  r^  r   r   r  rU  r  r6  rM   r   )rn  r  rB  
len_shiftslen_dimstail_shifts	tail_dimsfirst_dim_rolledr  r;  r  r\  s               r7  r   r     s   
 ""16640Dfh'dH%w 	wwyA~wwy 	uuw!|D	A%d1gY.KL
 	
 VJ4yHQ(a-?233 q=Z1_::emmA.:??HH!<ZLQYPZ[  !||QRjH	 ::a&)tAw?zz*KCC
 q'C773<DF1I%E
,,tAHH
-C>>#uzz%#+t<==r9  r   rQ  kc                    t        |      dk7  rt        dt        |             | j                  dk  rt        d| j                         t        j                  | j                  |      }|d   |d   k(  rt        d|d    d|d          |dz  }|dk(  r5t        j                  t        j                  | |d   f      |d   |d         S |dk(  rt        j                  | |      S |d	k(  r5t        j                  t        j                  | |d   f      |d   |d         S | j                  t
        j                  
      S )z0Reference implementation of :func:`torch.rot90`.r3  z2expected total rotation dims == 2, but got dims = z/expected total dims >= 2, but got total dims = r   rQ  z7expected rotation dims to be different, but got dim0 = z and dim1 = r\  r  r  )
rT  re  r%  r  r  r^  r   r   r   r2  )rn  r  rB  s      r7  r   r     s?    4yA~@TL
 	
 	vvzLQVVHUVV ""16640DAw$q'Ed1gYl[_`a[bZcd
 	
 	
AAAvuzz!d1gZ8$q'47KK	
azz!T""	
auzz!d1gZ8$q'47KKwwU%<%<w==r9  c                     ddl m} | d   j                  t        dt	        |             D ]/  }t        j                   || |   j                        fd       1 y )Nr   r/  rQ  c                      d  dS )Nz4stack expects each tensor to be equal size, but got z at entry 0 rN  )entry_shapes   r7  rP  z%_check_stack_inputs.<locals>.<lambda>  s    J;-Wcd r9  )r]  r0  rU  rh  rT  r^  ri  )r  r0  r!  r  s      @r7  _check_stack_inputsr    sR    <!*""K1c'l# 
71:##[1d	

r9  c                    t        |       dkD  sJ d       t        j                  | d   j                  dz   |      }|| d   j                  k  ret	        |        t        | d   j                        }|j                  |t        |              t        j                  | |      }|j                  |      S t        j                  | D cg c]  }|j                  |       c}|      S c c}w )Nr   z$stack expects a non-empty TensorListrQ  )rT  r  r  r%  r  r?  rU  insertr^  r   r  r  )r  r  wrapped_dimresult_sizesr  r   s         r7  r   r     s     w<!CCC((1)<cBKWQZ__$G$GAJ,,-KW6ii-xx%% 99@1akk+.@#FF@s   C&c           
         |xs | j                   }t        j                  |      }t        | |      }| j	                         dk(  rt        |      }nt        ||d      }t        ||z
        }t        t        |t        ||d            |      S )Nr   Tr  )	r  r  r  r)   r  rA   r   r   r   )rn  r  r  r  r  r  a_expa_maxs           r7  ro   ro   $  s     #AGGL33LA	 $5	6BwwyA~BRd+BJ"E3uc489 r9  c                     t        j                  t        |       dkD  d        t        |  }|d   j                  dk(  rt        |d      S t        |d      S )Nr   c                       y)Nz%hstack expects a non-empty TensorListrN  rN  r9  r7  rP  zhstack.<locals>.<lambda><  rz  r9  rQ  )r^  ri  rT  r   r%  r   r  s     r7  r   r   :  sQ    	LLW!#RS '*Oq!#?A&&""r9  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%vstack expects a non-empty TensorListrN  rN  r9  r7  rP  zvstack.<locals>.<lambda>F  rz  r9  )r^  ri  rT  r   r   r  s     r7  r  r  D  r  r9  r@  c                 &   t        j                  | j                  |      }t        j                  t        |      dk7  d        | j                  t        | j                  d |       t        |      z   t        | j                  |dz   d        z         S )Nr   c                       y)Nz"unflatten: sizes must be non-emptyrN  rN  r9  r7  rP  zunflatten.<locals>.<lambda>N  rz  r9  rQ  )	r  r  r%  r^  ri  rT  r  rc  rU  )rn  r  r@  s      r7  r  r  L  so    

 
 
-C	LLUq"NO66%&u5aggcAgi>P8QQRRr9  r   c                 0   t        j                  | j                        t        j                  t        | j                        dkD  d        | j                     dk(  ryt        fdt        j                  | | j                           D              S )Nr   c                       y)Nz5Dimension specified as 0 but tensor has no dimensionsrN  rN  r9  r7  rP  zunbind.<locals>.<lambda>W  rz  r9  rN  c              3   J   K   | ]  }t        j                  |        y wrG  )r^  r   )rJ  sr  s     r7  rL  zunbind.<locals>.<genexpr>_  s!      
&'EMM!S!
s    #)	r  r  r%  r^  _check_indexrT  rU  rc  r   )r   r  s    `r7  r  r  R  s    

 
 
-C	AGGqG 	wws|q 
+0+=+=as+S
 
 	
r9  r  r  c                 d    | j                  t        j                        j                  |||      S r  )r   r^  r2  rL   )rK  r  r  r  s       r7  rK   rK   d  s-    77!8!879EEUF r9  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       | j                  dk(  r| j                  d      n| }t        d       f|z  fz   }|||<   | S )NrQ  c                  $    d j                    dS Nz(Index should have dimension 1 or 0 (got r	  r~  r  s   r7  rP  zindex_copy_.<locals>.<lambda>o      :5::,aH r9  r   )r  r  r%  r^  ri  r  slice)rK  r  r  r  r|  r\  s     `   r7  rL   rL   k  ss    

!
!!&&#
.C	LL

aH
 &&A+A1A;.3
%
)CAcFHr9  c                 "    t        | |||d      S )NFinplace_index_fillrK  r  r  r  s       r7  rN   rN   x  s    
 q#ueU;;r9  c                 "    t        | |||d      S )NTr  r  r  s       r7  rO   rO     s     q#ueT::r9  r  c                "   t        j                  j                  dk  fd       t        t              r't        j                  j                  dk(  fd       n7t        j
                  | j                  | j                  | j                        | j                  dk(  }|r| j                  d      n| }t        |j                        }j                         ||<   j                  |      |rt        j                  nt         j                   } |||      }	|r| S |r|	j#                  d      j%                         }	|	j'                         | j'                         k7  r(t        j(                  |       }
|
j+                  |	       |
}	|	S )NrQ  c                  $    d j                    dS r  r~  r  s   r7  rP  z_index_fill.<locals>.<lambda>  r  r9  r   c                  $    d j                    dS )Nz<Only supports 0-dimensional value tensor. Got a tensor with r  r~  r  s   r7  rP  z_index_fill.<locals>.<lambda>  s     !!&L: r9  )r  r  r6  )r^  ri  r%  r=  r%   r&  r  r  r6  r  r?  rU  r  r   rP  rL   rK   r   r   r7  r  copy_)rK  r  r  r  r  zero_dimr|  rU  rK   r  new_outs     ``       r7  r  r    s;    
LL

aH %$JJ!O:	
 ##''8888	
 vv{H"AAMEE#JLLE'.##E4D4DJ
QUE
*C++a.&&(C::<188:%&&q)GMM#C
r9  c                h    | j                  t        j                        j                  ||||      S )Nr  rT  )r   r^  r2  
index_add_)rK  r  r  r  rU  s        r7  rJ   rJ     s:     77!8!879DD	 E  r9  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       j                  dk(  rj                  d      | j                  dk(  r5t        j                  |       j                  d| j                              S t        d       f|z  fz   }| |   j                         S )NrQ  c                  $    d j                    dS r  r~  r  s   r7  rP  zindex_select.<locals>.<lambda>  r  r9  r   )r  r  r%  r^  ri  r  r  rK   r   r  r   )rK  r  r  r\  s     ` r7  rM   rM     s     
!
!!&&#
.C	LL

aH zzQ"vv{ "--aE8JKK;.3
%
)CS6r9  c                     ddl m |Rt        d t         j                        D              }|rt        j                   |      S t        j                         S  j                  }t        j                  ||      }t        |t              r|fn|}|dk(  r*t        |      dk(  s|dk(  sJ t        j                         S t         fd|D              }t        |      dk(  rt        j                         S t        |      dk(  rt        j                   |      S t        |      }t        |d      }|D ]  }t         |         S )	Nr   r  c              3   2   K   | ]  \  }}|d k(  s|  ywrM  rN  )rJ  r\  r;  s      r7  rL  zsqueeze.<locals>.<genexpr>  s     JYS$	SJs   r  c              3   T   K   | ]  } j                   |   d k(        s| ! ywrM  r  )rJ  drn  rC  s     r7  rL  zsqueeze.<locals>.<genexpr>  s$     DqN1771:?$CDs   ((rQ  T)r  )r]  rC  rc  rg  rU  r  r   rR  r%  r  r  r=  r   rT  r?  r  )rn  r  rB  r%  	dims_listr!  rC  s   `     @r7  r   r     s   D
{J)AGG*<JJ)-u}}Q%C5==3CC66D

!
!$
,CS)C6sDqy4yA~--}}Q DDDDD
4yA~}}Q
4yA~}}Q%%T
Iy$/I AqMHr9  split_sizesc                     t        t                    D ]  }t        j                  |   dk\  d        ! t        j                  t
        t        j                         j                     k(   fd       g } j                         }D ]e  }t         j                        }||<   |j                   j                  | j                         |             | j                            |z  z   }g |S )Nr   c                       y)NzCsplit_with_sizes expects split_sizes have only non-negative entriesrN  rN  r9  r7  rP  z"split_with_sizes.<locals>.<lambda>  rz  r9  c                  T    dt        j                         dj                       S )NzSplit sizes add up to z but got the tensor's size of )r<  r   rU  )r  r  r  s   r7  rP  z"split_with_sizes.<locals>.<lambda>
  s.    (k)B(CCabfblblmpbqars r9  )rh  rT  r^  ri  r  rj  r<  r   rU  r=  r?  r  r   r7  )r  r  r  r!  splitsr}  
split_sizer  s   ```     r7  r   r     s     3{#$ 
NaY	


 
[!TZZ_4s F  "F! :
$	#	# 	dooiGH$++-,z99: Mr9  indices_or_sectionsc                    t        j                  | j                  |      }| j                  dk(  rd}t        |      t	        |t
              rj|j                  j                  dk7  rd|j                   }t        |      |j                  t        j                  k7  rd|j                   }t        |      t	        |t              st	        |t
              r|j                  dk(  rt	        |t              r|n|j                         }|dk  rd| }t        |      | j                  |   }t        j                   ||z        }||z  }g }	t#        |      D ]  }
|
|k  r|dz   n|}|	j%                  |       ! t'        t(        j+                  | |	|            S |}t	        |t
              r:|j                  dk7  rd	|j                   d
}t        |      |j-                         }dgt/        |      z   | j                  |   gz   }t#        t1        |      dz
        D cg c]  }||dz      ||   z
   }	}t'        t(        j+                  | |	|            S c c}w )Nr   zXtensor_split: received a rank zero tensor, but expected a tensor of rank one or greater!rv  z\tensor_split: if indices_or_sections is a tensor it must be on the CPU, but received one on zgtensor_split: if indices_or_sections is a tensor it must have long dtype,  but received one with dtype zAtensor_split: number of sections must be greater than 0, but was rQ  r  zntensor_split: non-scalar indices_or_sections tensors must have only one dimension, but received a tensor with rH  )r  r  r%  rj  r=  r%   r6  r4  r  r^  longr   r   r   rU  r'  rG   rh  r  rc  r  r   tolistr?  rT  )rn  r  r  _dimr  sectionsr  min_split_sizenum_splits_one_extrar  	split_idxr  indicesr!  s                 r7  r   r     s~   
 !!!&&#.Dvv{ho %z2%%**e3'':'A'A&BD  S/!$$

200C0I0I/JL  S/! %w/&
38K8P8PTU8U -v6  $))+ 	 q=UV^U_`CS/!774=Hx$78'(2x 	+I  44 "# 
 z*	+ T**1kt*DEE &):6"''1,22E2J2J1K;X  !o%)002G#W%7<A#g,QRBR<STqwq1u~
2TTT**1kt*DEE Us   Ic                     t        j                   j                  dk\   fd        j                  dk(  rdndt        t              rDt        j                  dk7  xr  j
                     z  dk(   fd       t               S t        j                  t        t        t        f      fd       }t         |      S )NrQ  c                  :    dt         j                        z   dz   S )NzPtorch.hsplit requires a tensor with at least 1 dimension, but got a tensor with  dimensions!r  r%  r  s   r7  rP  zhsplit.<locals>.<lambda>i  #    ^!&&k r9  r   c                  |    dt              z   dz   t         j                           z   dz   t              z   dz   S )Nz0torch.hsplit attempted to split along dimension z , but the size of the dimension $ is not divisible by the split_size r  r4  )rn  r  r  s   r7  rP  zhsplit.<locals>.<lambda>u  sX    Bc(45 aggcl#$ 9	9
 j/"  r9  c                       dt                S )Nzhsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r3  r  s   r7  rP  zhsplit.<locals>.<lambda>       !4568 r9  
r^  ri  r%  r=  r   rU  r   _check_typer?  rc  )rn  r  r  r  r  s   `` @@r7  r   r   d  s     
LL	!	
 vv{!C%w/(
1_?
!:a!?	
 Az3//	&u6	
 &K;,,r9  c                 r    t        j                   j                  dk\   fd       t        t              rCt        j                  dk7  xr  j
                  d   z  dk(   fd       t         d      S t        j                  t        t        t        f      fd       }t         |d      S )Nr3  c                  :    dt         j                        z   dz   S )NzPtorch.vsplit requires a tensor with at least 2 dimension, but got a tensor with r!  r"  r  s   r7  rP  zvsplit.<locals>.<lambda>  r#  r9  r   c                  0    d j                   d    d dS )NzQtorch.vsplit attempted to split along dimension 0, but the size of the dimension r   r%  r  r  )rn  r  s   r7  rP  zvsplit.<locals>.<lambda>  s*    3771:,6, r9  c                       dt                S )Nzvsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r3  r'  s   r7  rP  zvsplit.<locals>.<lambda>  r(  r9  r)  )rn  r  r  r  s   `` @r7  r
  r
    s     
LL	!	
 %w/(
1_=j!8A!=	
 Az1--	&u6	
 &K;**r9  r}  c                     | j                         t        j                  dv fd       dk(  rt        j                  | |      S t        j                  | |      S )N)rQ  r3  c                      d  dS )Nz'diag(): Supports 1D or 2D tensors. Got DrN  r~  s   r7  rP  zdiag.<locals>.<lambda>  s    "I$q Q r9  rQ  )r  r^  ri  r   r   )r  r}  r%  s     @r7  r   r     sU     88:D	LLQ qyf--""400r9  r  dim2c                     t        j                  |       }|j                  |||      t        j                  j
                  j
                  k(  fd       t               |S )Nc                  <    dj                    d j                    S )NzCexpected src to have a size equal to the diagonal of the input.Got z for a diagonal of shape r  )r   r  s   r7  rP  z"diagonal_scatter.<locals>.<lambda>  s$     yyk24::,@ r9  )r  clone_preserve_stridesr   r^  ri  rU  r   )r  r  r}  r  r2  r  r   s    `    @r7  r   r     sZ     
&
&u
-C<<d+D	LL

cii	@
 D#Jr9  c                    | j                         }t        j                  |      t        j                  |      t        j                  k7  fd       | j                         }|dk\  r<t        t        | j                            | j                            |z
        d      }n;t        t        | j                            |z   | j                                  d      }|dkD  r8|dk\  r||| j                            z  z  }n||| j                            z  z  }t        | j                               D cg c]  \  }}|fvs| }	}}|	j                  |       t        | j                               D cg c]  \  }}|fvs| }
}}|
j                  | j                            | j                            z          | j                  |	|
|      }|S c c}}w c c}}w )z4
    Reference implementation of torch.diagonal
    )r\  rankc                      d  d S Nz(diagonal dimensions cannot be identical r  rN  r  r2  s   r7  rP  zdiagonal.<locals>.<lambda>       HbQUPVW r9  r   )r;  r7  r=  )r  r  r  r^  ri  r=  rf  r  r;  r7  rg  r  r   )r  r}  r  r2  num_dimsr=  	diag_sizer!  r  r@  r  r  s     ``        r7  r   r     s    xxzH!!d:D!!d:D	LLW ((*N{DIIK-tyy{4/@6/IJAN	DIIK-6		D8IJAN	1}Q;ft{{}T':::Nft{{}T':::N$TYY[1K41aQtTl5JQKEK	LL&t{{}5OTQ4,9NqOGONN4;;=&t)<<=__%_WFM L Ps   G(G(G.G.c                 8   | j                   dz   }t        j                  |      t        j                  |      kD  rc| }t        j                  k7  fd       | j                  d      }|dk7  rt        | j                        }t        j                  |      |d<   t        j                  || j                  | j                  d      }|dkD  r|| fn| |f}t        j                  |d      } |t        j                  |      z  }| j                        j                  d      } t        j                   || j                  t        j"                  	      }	t        j                   |||z   | j                  t        j"                  	      }
|	|
j                  d      k(  }t%        t'        | j                              D cg c]  }|fv r|nd }}|j)                  |      }t        j*                  ||       j-                         S c c}w )
z6
    Reference implementation of torch.diag_embed
    rQ  )r7  r\  c                      d  d S r9  rN  r:  s   r7  rP  zdiag_embed.<locals>.<lambda>  r;  r9  rV  r   Fr  r6  r  r  r6  r  )r%  r  r  r^  ri  r;  r?  rU  r<  r/   r(  r  r6  r   r  r   r  rC  rh  rT  r   mask_tensorr   )r   r}  r  r2  r7  r  t_shapezpaira_rangeb_rangecondr!  
cond_shapes     ``          r7  r   r     s    66A:D!!t6D!!t6D d{4
d	LLW
 vvbzH{qww-ll6*KKqwwqxxuU!1v!QIId#HLL(( 	
D!!"d+A ll8AHHEKKHGll6!!((%++G
 g''++D@Ec!''l@ST1aD$</(Q6TJT<<
#D T1%0022 Us   Hc                   
 | D cg c])  }|j                         dk  r|j                  dd      n|+ }}t        j                  d |D              }|d   j                  
g }d}t        |      D ]  \  t        j                  j                         dk(  fd       t        j                  j                  
k(  
fd       j                  \  }}t        j                  ||f
j                        }t        j                  |||z
  |z
  f
j                        }	|t        j                  ||	fd	      gz  }||z  } t        j                  |d	      S c c}w )
z6
    Reference implementation of torch.block_diag
    rQ  rV  c              3   :   K   | ]  }|j                   d      ywrM  r  )rJ  r  s     r7  rL  z'_block_diag_iterable.<locals>.<genexpr>K  s     BVaBs   r   r3  c                  2    d  dj                          dS )Nz5Input tensors must have 2 or fewer dimensions. Input z has rH  r  )r!  r  s   r7  rP  z&_block_diag_iterable.<locals>.<lambda>T  s"     CuVZZ\N+7 r9  c                  0    d  d dj                    dS )NzCInput tensors must all be on the same device. Input 0 is on device z and input z is on device rj  r5  )r6  r!  r  s   r7  rP  z&_block_diag_iterable.<locals>.<lambda>Y  s(     $$*8;qcVWY r9  rA  r  )r  r  r<  r   r6  rg  r^  ri  rU  r(  r  r   )r  r  
tensors_2dncolsr  	col_startrowcolrv  rightr6  r!  s    `        @@r7  _block_diag_iterablerT  A  sY    KR@Ffjjla/ArV;J  LLBzBBE]!!FFIz* 	6JJLA7	

 	MMV#Y	

 <<S{{C+F&,,O%)#c)*6
 	599dFE2:;;S	#& 99V##;s   .E$c                      t        |       S )z
    This is used as an input to PythonRefInfo. `torch.block_diag`
    expects arguments splatted, but `aten.block_diag` expects only
    one argument that is a list of Tensors.
    )rT  r  s    r7  r   r   g  s      ((r9  r  c                    | j                   dk  rt        d| j                    d      t        |t              r<|dk(  s| j                  d   |z  dk7  r"t        dd| j                  d    d| d	z         t        | |d      S )
Nr  zPtorch.dsplit requires a tensor with at least 3 dimension, but got a tensor with r!  r   r3  z3torch.dsplit attempted to split along dimension 2, zbut the size of the dimension r%  r  )r%  re  r=  r   rU  r   )rn  r  s     r7  r   r   q  s    vvz^_`_e_e^ffrs
 	
 (G$(a-1771:;PTU;UA.qwwqzl:^_g^hhijk
 	
 8Q''r9  c                     | j                   dkD  rt        d| j                    d      t        j                  | d| j                   dk  rd      S d      S )Nr3  z7t() expects a tensor with <= 2 dimensions, but self is r1  r   rQ  )r%  re  r^  r   r  s    r7  r   r     sS     	vvzEaffXQO
 	
 ??1aaffqj88a88r9  c                 h    t        j                  | j                  dv d        | j                         S )N)r   r3  c                       	 y)NzcThe use of `x.T` on tensors of dimension other than 0 or 2 to reverse their shape is not supported.rN  rN  r9  r7  rP  zT.<locals>.<lambda>  s    7 r9  )r^  ri  r%  r   r  s    r7  r   r     s,    	LL	&	
 335Lr9  c                 ,    t        j                  |       S rG  )r  rR  r  s    r7  r   r     r  r9  r  c                 .   t        j                  | j                  ||f      \  }}| j                  dk  s||k(  rt        j                  j                  |       S t        t        | j                              }|||<   |||<   t        j                  | |      S r  )
r  r  r%  r  r   defaultr?  rh  r^  r   )rn  r  r  _dim0_dim1r@  s         r7  r   r     s}    **166D$<@LE5vv{ddlzz!!!$$aff&LLL==L))r9  c                 z    t        | j                  | j                         |||      \  }}| j                  ||      S rG  )r  rU  r7  r   )r  rf  r;  rg  rU  r  s         r7  r  r    s:     .

DKKM9dDNE7 ??5'**r9  c                 d    | j                  |||      j                  t        j                        S r  )r  r   r^  r2  )r  rf  r;  rg  s       r7  r  r    s2     ;;y$-33-- 4  r9  c                   |j                   }t        j                  ||      }|dk(  r | |j                  d      d||      S |j                  |dz         }t	        j
                  |j                  |   |j                        }|j                  d      |k  }t        ||z
  dz
        D ]  }	|j                  d      } t	        j                  |||      }
 | |
|||      S )Nr   )r  r  r  rQ  r5  rV  )
r%  r  r  r  r^  r  rU  r6  rh  r   )r<  initrn  r  r  r  r%  rgr  r  masked_as              r7  _cumsumprod_commonre    s     66D

 
 s
+CqyAKKNC@@	C!GA	aggcl188	4B<<?b D4#:>" "~~b!"{{4D)HcC88r9  c                ,    t        t        d| |||      S )Nr   r<  rb  rn  r  r  r  )re  r   rn  r  r  r  s       r7  r   r     s     3Q!EsSSr9  c                ,    t        t        d| |||      S )NrQ  rg  )re  r   rh  s       r7  r   r     s     4a1#UPSTTr9  c                 ~    | j                   dz   }t        j                  ||      }t        j                  | |f|      S )NrQ  r~  )r%  r  r  r  expand_dims)rn  r  r%  s      r7  r  r    s:     66A:D

 
 s
+CQT22r9  c                      t        | g|ddiS )Nr  Fr  rK  s     r7  r  r    s    <E<e<<r9  c                 @    | j                  |j                               S rG  )r  r;  r  s     r7  r  r    s    99UZZ\""r9  c                     t        | d      S )N)rV  )r   r  s    r7  r   r     s    1er9  r  c                      t        j                   j                  j                  k(   fd       t        j                  t        j                  j
                        fd       |5t        j                   j                  d      dj                  d            S t         j                        }j                  |      ||<   t        j                  |j                               }t        |      }t        j                        } j                  |      ||<   t        j                  | j                               }t         |      }|j                  |      }||z  }t        j                  |||      S )Nc                  >    d j                    dj                    dS )Nz]torch.take_along_dim(): input and indices should have the same number of dimensions, but got z dimensions for input, and z dimensions for indicesr~  )rn  r  s   r7  rP  z take_along_dim.<locals>.<lambda>  s*    --.VVH4O||n35 r9  c                  $    d j                    dS )Nz?torch.take_along_dim(): dtype of indices should be int but got z insteadr  )r  s   r7  rP  z take_along_dim.<locals>.<lambda>"  s    M}}oX' r9  rV  r   )r^  ri  r%  r  r  r  gatherr  r?  rU  r;  infer_size_shapesr   )	rn  r  r  
self_sizesbroadcast_shapeindices_broadcastindices_sizesself_broadcastr  s	   ``       r7  r   r     s/    
LL	',,	
 
LLw}}-	
 {||AFF2J7<<+;<<!'']
!,,s+
311*gllnM(/BW]]+VVC[c11-J%a9 "&&s+-8||NC1BCCr9  r  r  r6  r  r  r  r  c           	         t        j                  t         j                  k7  d        t        j                  |      }t         j
                  k(  rt        j                  |      }nht         j                  k(  rt        j                  |      }n?t        j                  t         j                  k(  fd       t        j                  |      }t        j                  ||| ||||      S )Nc                       y)Nz8torch.empty: the Preserve memory format is not supportedrN  rN  r9  r7  rP  zempty.<locals>.<lambda>H  rz  r9  c                      d  dS )Nz/torch.empty: received an unknown memory format r  rN  r  s   r7  rP  zempty.<locals>.<lambda>T  s    Em_TUV r9  r  r  r6  r  r  )r^  ri  r  r  rO  r2  r  channels_last_3d!make_channels_last_3d_strides_forchannels_last!make_channels_last_2d_strides_forr  )r  r  r6  r  r  r  rU  r  s        `  r7  r  r  <  s     
LL...J
 ,,U3E///33E:	%00	099%@U000V	
 99%@# r9  c                 6    t        j                  | ||||      S )Nr@  )r  r  )rU  physical_layoutr  r  r6  r  r  s          r7  r  r  c  s&     # r9  r  r  r6  r  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  |||||      S )Nr  r6  r  r  )r  r  r6  r^  r  )rn  r;  r  r  r6  r  s         r7  r  r  v  sQ     }AGG%EQXXVFQXXVF;; r9  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )zD
    Reference implementation of torch.Tensor.new_empty_strided
    r  )r  r  r6  r^  r  )rn  r;  r7  r  r  r6  r  s          r7  r  r    sV      }AGG%EQXXVFQXXVF r9  r}  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NFr   r}  r  rO  r^  r  r  r  r  r  r6  r  r  r;  s         r7  r(  r(    sZ     ++D1D}'')::%**$!# r9  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r  r  r  r6  r^  r  r  rn  r;  r  r  r6  r  r  s          r7  r"  r"    sm     }AGG%EQXXVFQXXVF::"177uzz1q# r9  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NTrQ  r}  r  r  s         r7  r#  r#    sZ     ++D1D}'')::## r9  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r  r  r  s          r7  r!  r!    sm     }AGG%EQXXVFQXXVF::!!''ejj0a# r9  
fill_valuec                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )Nr  )r  r  r6  r^  r  )rn  r;  r  r  r  r6  r  s          r7  r   r     sT     }AGG%EQXXVFQXXVF:: r9  c                     |S rG  rN  )r;  r  r  s      r7  	empty_outr  0  s	     Jr9  )r  r6  r  r  r  r  c          	      P   || j                   n|}|| j                  n|}|| j                  n|}|t        j                  k7  r&t        j
                  | j                  ||||||      S t        j                  |       \  }}t        j                  | j                  ||||||      S )Nry  r}  )
r  r  r6  r^  r  r  rU  r  3compute_elementwise_output_logical_to_physical_permr  )	rn  r  r6  r  r  r  r  logical_to_physical_permr  s	            r7  r  r  9  s     }AGG%EQXXVFQXXVF---{{GG'!'
 	
 	AA!D  a 	 # r9  r  c                r    t        j                  |       t        j                  |       t        j                  t        j
                  |            }t         t              rJ t        t              rJ t        t              rJ  d t        j                  dk7  d        dkD  rt        j                   k\  d        ndk  rt        j                   k  d        d }t        j                   |       xr  |       fd       t        j                   |      fd        f}	t        j                  d |	D              }
|&|
rt        j                  nt        j                         }t        j                  |      }|s|
r!t               }t              }t              }|t        j                  k(  s|
r,t        dkD        t        |dk        z
  }z
  |z   |z
  |z  }nt!        j"                   z
  z        }|rt%        j&                  ||||	      S t%        j&                  |dd
t        j                  |d	      }|
rt        j(                  nt        j*                  ||      }t-        ||      } |z  z   }t-        ||      }|r|j/                  d       |S )Nr   c                       y)Nzstep must be nonzerorN  rN  r9  r7  rP  zarange.<locals>.<lambda>}  rz  r9  c                       yNz7upper bound and lower bound inconsistent with step signrN  rN  r9  r7  rP  zarange.<locals>.<lambda>  rz  r9  c                       yr  rN  rN  r9  r7  rP  zarange.<locals>.<lambda>  rz  r9  c                 R    t        | t               xs t        j                  |       S rG  )r=  r   r'  rP   rO  s    r7  	is_finitezarange.<locals>.is_finite  s!    a!566J$--:JJr9  c                      d d  S )Nzunsupported range: r  rN  )r  r  s   r7  rP  zarange.<locals>.<lambda>  s    %eWD6 r9  c                      d  S )Nzstep must be finite but got rN  r  s   r7  rP  zarange.<locals>.<lambda>  s    .tf5 r9  c              3   <   K   | ]  }t        |t                y wrG  rH  rJ  r  s     r7  rL  zarange.<locals>.<genexpr>  s     IS
3 8I   )r  rg  r  r6  r  rQ  FT)r  check_layoutcheck_pin_memoryr^  r6  device_or_defaultr=  r  ri  r<  r   rC  r  r  r   r  r'  r7   r  iotar  get_acc_typer)   requires_grad_)r  r  rg  r  r  r6  r  r  r  r  integer_args
is_integerxstartxendxstepri   r  r  r  r  s   ```                 r7  r  r  d  sz    
v	:&\\%11&9:F%)))#w'''$((( {	LL:;ax5LM	
 
5LM	

K 
LL%+Ys^6 
LL$5
 3D<<IDIIL}+1H1H1J''.J\s| |519oUQY/-%'#-%7C%K4/0zz'
 	
 JJkkE #

(:(:5&(I  $E+<=ETE\!F$VU3Fd#Mr9  )r  r  r  c                    | |g}t        |t              r| j                  d|      }n|j                  |       t        |t              sJ |j                         dk\  }t        j                  ||dz
  |      }t        j                  |||       }||| z
  z  |z   }t        j                  t        |  }|j                         |k7  rt        j                  ||      }t        ||      S )NrN  ro  rQ  )r=  r   r   r  rP  r/   r^  r   r  "compute_elementwise_output_stridesr  r7  r  copy_stridedrA  )	r  r  r  r  r  coeffbaser@  r7  s	            r7  rW   rW     s     S\F&&!F+fff%%% ::<3DKKfqj&1E;;tS%(DcEk"T)F557G7PQF}}& ##FF3'77r9  )r  r6  r  r  r  stepsc          
      R    t         t              rBt        j                   j	                         dk(  d        t         t        j                         t        t              rBt        j                  j	                         dk(  d        t        t        j                        t        j                  d  fD              rZt        j                  t        j                               nFt        j                  t        j                        fd       nxs t        j                         t        t        j                        sJ t        j                  t        t               fd       t        t              sJ t        j                  dk\  d        ||||d}dk(  rt        j                   dd	i|S d
k(  rwt         t              rMt        j"                  ffd	i|}	t        j$                  j&                  j(                  j+                  |	       S t        j                   f fd	i|S t        j,                  dfi |}
t        j.                        st        j0                        rt        j2                  n}t        j4                  |
t6        j8                  |      \  }}t;        t
        |      } z
  d
z
  z  }t        j<                  |
dz  k   | ||
      z  z   | |d
z
  |
z
        z  z
        }t        |      S )Nr   c                       yNz:linspace only supports 0-dimensional start and end tensorsrN  rN  r9  r7  rP  zlinspace.<locals>.<lambda>  rz  r9  c                       yr  rN  rN  r9  r7  rP  zlinspace.<locals>.<lambda>  rz  r9  c              3   <   K   | ]  }t        |t                y wrG  r=  r  r  s     r7  rL  zlinspace.<locals>.<genexpr>       LJsG,Lr  c                      d  d S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype rN  )default_complex_dtyper  s   r7  rP  zlinspace.<locals>.<lambda>  s    56K5LLrsxryz r9  c                      dt              j                   dt               j                   dt              j                   dS )Nz4received an invalid combination of arguments - got (r  r	  )r4  r  )r  r  r  s   r7  rP  zlinspace.<locals>.<lambda>  sD     u+r$s),,-RU0D0D/EQH r9  c                       y)Nz$number of steps must be non-negativerN  rN  r9  r7  rP  zlinspace.<locals>.<lambda>  rz  r9  )r  r6  r  r  r  rQ  r  r3  )r  r   )r=  r&   r^  ri  r  r)   rs  r<  r   r  r?  r  r  r  r*  r   r  r  opsr  r  r\  r  r  r  rC  r'  r"   rD  r   r   )r  r  r  r  r6  r  r  r  factory_kwargsempty_tensorrc  	dtype_redr  r  cast_rgrg  r  r  s   ````             @r7  r  r    s    %(IIK1P	
 (u}}=#~&GGINP	
 &c5==9||LU8KLL % A A##%!
 =)ELL&&u-z
 2002eU[[))) 
5'"	H
 eW%%%	LL!KL  &	N zzzAA.AAze^, ;;xOuOOL99>>&&..|UCC::uhMUMnMM 
a	1.	1B
 ""5)U-C-CE-J 	 
 !11
&++Yq -5FGG %KEAI&D
++
UQYwr{""dWeai2-...C
 #3..r9  r  c          
      V   |t        j                         }t        j                  j	                  |      rt        | t              rt        |       } nDt        | t              r4t        j                  | j                         dk(  d        t        | |      } t        |t              rt        |      }nDt        |t              r4t        j                  |j                         dk(  d        t        ||      }t        j                  d | ||fD              r,t        j                  t        j                               }	|	}d }
nt         j                  }
t        |t               rJ |dk  rt"        t        j$                  | |||
||||      }t        t        j&                  ||      |      S )Nr   c                       yNz:logspace only supports 0-dimensional start and end tensorsrN  rN  r9  r7  rP  zlogspace.<locals>.<lambda>Z  rz  r9  c                       yr  rN  rN  r9  r7  rP  zlogspace.<locals>.<lambda>b  rz  r9  c              3   <   K   | ]  }t        |t                y wrG  r  r  s     r7  rL  zlogspace.<locals>.<genexpr>f  r  r  r}  )r^  r  r  r  r  r=  r   r   r&   ri  r  r)   r<  r   r?  rs  r  r  r  r   )r  r  r  r  r  r6  r  r  r  r  _dtyperets               r7  r  r  B  sb    }'') {{##E*eY'ENE~.LL		q T ,E59Ec9%#,C^,LL	QT *#u5C||LU8KLL % A A##%!
 &$(((ax!!
..#	C #599T3#7??r9  indexingc                      y rG  rN  )r  r  s     r7  r   r     s     	r9  c                      y rG  rN  )r  r  s     r7  r   r     s    r9  c                     t        |d   t        t        f      rt        |      dk(  sJ t        |d         }t	        j
                  t        j                  d |D              d        t	        j
                  t        |      dkD  d        t        t        |      dz
        D ]p  }t	        j
                  ||   j                  ||dz      j                  k(  d        t	        j
                  ||   j                  ||dz      j                  k(  d        r d} d	k(  r!t        |      d
k\  }|r-|d   |d   g|d
d  }nt	        j
                   dk(   fd       g }|D ]j  t        t              sJ t	        j
                  j                  dk(  xs j                  dk(  fd       |j                  j                                l g }t        |      D ]^  \  }t        t              sJ j                  dk(  rj!                  d      |j                  t#        j$                  ||f             ` |r|d   |d   c|d<   |d<   |S )Nr   rQ  c              3   <   K   | ]  }t        |t                y wrG  r=  r%   r  s     r7  rL  zmeshgrid.<locals>.<genexpr>  s     @1Z:.@r  c                       y)Nz)meshgrid expects its inputs to be tensorsrN  rN  r9  r7  rP  zmeshgrid.<locals>.<lambda>  rz  r9  c                       y)Nz'meshgrid expects a non-empty TensorListrN  rN  r9  r7  rP  zmeshgrid.<locals>.<lambda>  rz  r9  c                       y)Nz3meshgrid expects all tensors to have the same dtyperN  rN  r9  r7  rP  zmeshgrid.<locals>.<lambda>  rz  r9  c                       y)Nz4meshgrid expects all tensors to have the same devicerN  rN  r9  r7  rP  zmeshgrid.<locals>.<lambda>  rz  r9  Fxyr3  ijc                      d  S )NzDtorch.meshgrid: indexing must be one of "xy" or "ij", but received: rN  )r  s   r7  rP  zmeshgrid.<locals>.<lambda>  s    !!)
, r9  c                      d  S )NzEtorch.meshgrid: Expected 0D or 1D tensor in the tensor list but got: rN  )r   s   r7  rP  zmeshgrid.<locals>.<lambda>  s    [\][^_ r9  r  )r=  r?  rc  rT  r^  ri  r<  r   rh  r  r6  r%   r%  r  r  rg  r  r  r(  )r  r  r!  swap_first_and_second_tensorsresult_shapegridsr   s   `     @r7  r   r     s6    '!*tUm,7|q   
#	LL@@@;
 
LLW!#TU3w<!#$ 
AJA 4 44I	
 	AJQ!6!66J	

 %*!4(+G(9%(qz71:<<G	
 !L '!Z(((FFaK&166Q;_	
 	AGGI&' #%E'" D1!Z(((66Q;tAU++A|aTBC	D %"1XuQxa%(Lr9  sourcedestinationc                 V   t              t        u rft              t        u rft        j                  t	              t	              k(  fd       | j
                  }t        t        j                  |            }t        t        j                  |            }t        |      }t        |      }t        j                  t	        |      t	        |      k(  fd       t        j                  t	        |      t	        |      k(  fd       t        t        ||            }g }	d}
t        |      D ]K  }|j                  |      }||	j                  |       (|
|v r
|
dz  }
|
|v r
|	j                  |
       |
dz  }
M t        j                  | t        |	            }|S )z3
    Reference implementation of torch.movedim
    c                  :    dt               dt                dS )Nz5movedim: Invalid source or destination dims: source (z> dims) should contain the same number of dims as destination (z dims)r?  )r  r  s   r7  rP  zmovedim.<locals>.<lambda>  s.    V~ ''+K'8&9A r9  )r7  r  c                  "    dt                dS )Nz#movedim: repeated dim in `source` (r	  r  )r  s   r7  rP  zmovedim.<locals>.<lambda>  s    5d6l^1E r9  c                  "    dt                dS )Nz(movedim: repeated dim in `destination` (r	  r  )r  s   r7  rP  zmovedim.<locals>.<lambda>  s    :4;L:MQO r9  r   rQ  )r4  r  r^  ri  rT  r%  rc  r  r  setdictr{  rh  r  r  r   )r  r  r  r7  ssdssssdssrw  rB  sidir  r  s    ``           r7  r   r     ss    F|sKC"n 
LLFs;''	
 ::D	u&&D&A	BB	u&&D+F	GB
b'C
b'C 
LLB3s8E 
LLB3s8O
 	SR[AD	
BDk EE"I=KKN )a )KKO!GB ]]5%+.FMr9  )r  r6  r  r  r  r  c                   t        j                  |       t        j                  |       t        j                  |       } |t	        j
                         n|}|t	        j                  d      n|}t        j                  | ||||      S )Nrv  r@  )	r  r  r  rO  r^  r  r6  r  r  )rU  r  r  r6  r  r  r  s          r7  r  r    sz     
v	:&,,U3E).E##%EE$*NU\\% F# r9  valc                     t         j                  t         j                  t         j                  fD ](  }| t        j                  |      j
                  k  s&|c S  t         j                  S rG  )r^  r=  uint16r  iinforf  rC  )r  possible_dtypes     r7  _strength_reduce_integerr  )  sM     ;;ekkB "%++n-111!!" ;;r9  nrw  c                     t        j                   dk\   fd       t        j                  dk\  fd       t         j                  }t         t        j
                        r/t        t        j
                        rt        t                     }t        j                   ||d      }t        j                  ||d      }	|j                  d      |	k(  }
|t         j                  dfv r)|s'|
j                  |xs t        j                               S t        j                  d||||d	      }t        j                  |
|d      S )
z/
    Reference implementation of torch.eye
    Nr   c                      d  S )Nz%n must be greater or equal to 0, got rN  )r  s   r7  rP  zeye.<locals>.<lambda>B      #H!L r9  c                      d  S )Nz%m must be greater or equal to 0, got rN  )rw  s   r7  rP  zeye.<locals>.<lambda>C  r  r9  Fr@  rV  r  r}  )r^  ri  rC  r=  r  IntWithoutSymIntr  rf  r  r  stridedr   r  r#  r   )r  rw  r  r  r6  r  r  range_dtyperange_nrange_mrH  ones   ``          r7  r  r  0  s    	y	LLaLM	LLaLM++K!U++,Au?U?U1V.s1ay9ll1KeTGll1KeTGR G+D%--&&zwwu9 7 7 9::jj!
 {{4a((r9  c                   t        j                  |       t        j                  |       ||nt        j                  t	        |            }||nt        j                  d      }t        | |||||      }t        j                  ||      S )Nrv  r}  )	r  r  r  type_to_dtyper4  r^  r6  r  rE   )rU  r  r  r  r6  r  r  es           r7  r  r  ]  s     
v	:&&EE,?,?Z@P,QE)Vu||E/BF#	A ::a$$r9  r  r  r6  r  r  r  c          	      R    t        j                  | ||||||      }t        ||      S )Nr  )r^  r  rE   )	rn  r  r  r  r6  r  r  r  r  s	            r7  r  r  z  s8     		##	A :r9  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NFr   r  r^  r  r  r  rn  r  r  r6  r  r  r  s          r7  r)  r)    sC     ??	"177uzz1q##	 	r9  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NTrQ  r  r  r  s          r7  r$  r$    sC     ??	!!''ejj0a##	 	r9  c                     t        j                  |       t        j                  |      }t        j                  |       } t        j                  |      }t        j                  |dd| ||      S )Nr  rn  )r   r   r  r6  r  )r  r  rO  dtype_or_defaultr  r  ra   )r  r6  r  r  r  rU  r  s          r7  r%  r%    se     
:&--e4F""5)E$$V,F<<# r9  c                    t        j                  |       t        j                  |       ||nt        j                  t	        |             }||nt        j                  d      }t        j                  | ||      S )Nrv  re  )	r  r  r  r   r4  r^  r6  r  r&  )rn  r  r  r6  r  s        r7  r&  r&    se     
v	:&&EE,?,?Q,HE)Vu||E/BFqf==r9  lowhighc                6   t        j                  |        t        |t              sJ t        |t              sJ t	        |      }t	        |      }t        |t
        j                        sJ t        j                  |      }t        j                  | ||||      S )N)r  r  r  r6  )
r  r  r=  r   r   r^  r  canonicalize_devicer  _uniform_helper)rU  r  r  r  r6  s        r7  r  r    s     
c6"""dF###
C.CT?DeU[[)))&&v.F  Cd%PVWWr9  r  c                    t        j                  | j                        t        |t              rt        |      }n|j                  t        j                  dk(  fd       | j                  j
                  dddt        j                  j                         dfv xr |j                  j
                  dk(  }t        j                  |xs |j                  | j                  k(  d        t        j                  |j                        }|t        u r-t        j                  t        j                  |      fd	       t        || j                        }t        j                  |||       }|j!                         S )
Nr   c                      d  dS )Nz@only supports a 0-dimensional value tensor, but got tensor with z
 dimensionrN  )
value_ndims   r7  rP  zmasked_fill.<locals>.<lambda>  s    VWaVbblm r9  cudaxpumpsr2  rv  c                       y)Nz,Expected `value` to be on same device as `a`rN  rN  r9  r7  rP  zmasked_fill.<locals>.<lambda>  rz  r9  c                      d  dS )Nzcould not convert to type z without overflowrN  )r  s   r7  rP  zmasked_fill.<locals>.<lambda>&  s    0=NO r9  )r  r   r  r=  r   r4  r%  r^  ri  r6  _C_get_privateuse1_backend_namer  r   r)   r   r   )rn  r  r  
value_typeis_cpu_scalarr  r  r  s         @@r7  r   r     s/    %%agg.K% %[
 ZZ
!Om	
 HHMMuehh&L&L&NPUVW +!!U* 	
 	5U\\QXX5B	
 ((5
W
 	''
K@O	
 $E1773ED%#A <<>r9  c                 V    t        j                  | ||      }| j                  |       | S rG  )r^  r   r  )rn  r  r  ro  s       r7  r   r   4  s(     	!T5)AGGAJHr9  c                     t        d| |||       t        t        j                  t        j                  | ||||            j                               S )z4
    Reference implementation of torch.allclose
    ztorch.allcloser  )r  r  r  )r  r  r^  r   r   r   )rn  ro  r  r  r  s        r7  r*  r*  >  sH     +qADtL		%--14diPQVVX r9  c                 T   t        j                  | |d       t        j                  | |       | j                  |j                  k7  ryt	        | j
                  |j
                        D ]  \  }}||k7  s y | j                         dk(  ryt        t        t        | |                  S )NFr  r   T)
r  r  check_same_dtyper%  r{  rU  r  r   r   r   )rn  ro  rK  r|  s       r7  r+  r+  O  s    	Aq5A	1a  	vvAGGQWW% 16
 	wwyA~Bq!Hr9  r  c                j   |dk(  r | t        |t              st        |      dk  s|d}t        |t              r|g}t        |t              rD|t	        t        | j                              }t        j                  j                  | ||||      S t        j                  j                  | ||||      S )Nfror3  r  )r=  r   rT  r  rc  rh  r%  r^  rI  matrix_normrJ  )r  r  r  r  r  s        r7  r`   r`   b  s     	
U
z#s';s3x1}	
#se!S ;ejj)*C||''q#we'LL||''q#we'LLr9  c                      t        j                   j                  dk(   fd       t        j                  t        j                   d            S )Nr3  c                  "    d j                    S )Nz+expected a matrix, but got tensor with dim r~  r   s   r7  rP  ztrace.<locals>.<lambda>  s    =dii[I r9  r   )r^  ri  r%  r   r   r   s   `r7  rt   rt   }  s;     
LL		QI 99UZZa())r9  c                 l     dt         t        t        f   dt         t        t        f   dt        f fd}|S )Nrn  ro  ru  c                      ||       S rG  rN  )rn  ro  base_ops     r7  ropz_make_r_binary_op.<locals>.rop  s     q!}r9  )r   r&   r    )r'  r(  s   ` r7  _make_r_binary_opr)    s=    +,+, 
 Jr9  r   c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k\  }t        j                  ||       j                         S )Nr3  c                       y)Nz2triu: input tensor must have at least 2 dimensionsrN  rN  r9  r7  rP  ztriu.<locals>.<lambda>  rz  r9  r}  r5  rV  
r^  ri  r%  rU  r  r6  r  r  rB  r   rn  r   hr&  r  s        r7  r  r         
LL	!Q 7723<DAqQqxx(2226
,,q
*
4
4R
8	9	D T1%0022r9  c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k  }t        j                  ||       j                         S )Nr3  c                       y)Nz2tril: input tensor must have at least 2 dimensionsrN  rN  r9  r7  rP  ztril.<locals>.<lambda>  rz  r9  r}  r5  rV  r,  r-  s        r7  r  r    r/  r9  rQ  rR  c                    | dk(  s|dk(  ry|dkD  rt        |d|z         nt        | |z   dkD        }t        dt        || |z               }t        dt        | | |z               }||z
  dz   }||z   |z  dz  }||z
  }t        d||z        }	||	|fS )Nr   r   r   r   rQ  r3  )r  r  rf  )
rQ  rR  r}  m_first_row
m_last_row	n_row_alln_row_trapezoidtrapezoid_sizediff_rowrectangle_sizes
             r7  _get_tril_sizesr;    s    
ax3!8*01*#c1v:&#cFlQ>N:OKQCv./JAs3f-.I ;.2O "J./AQFN?*HHsN+N>;66r9  c                      t        j                  dk\  fd       t        j                  dk\  fd       t        j                  t         j                  t         j                  fv  fd       y )Nr   c                      d  S )Nzrow must be non-negative, got rN  )rQ  s   r7  rP  z_trilu_checks.<locals>.<lambda>      %CC5#I r9  c                      d  S )Nzcol must be non-negative, got rN  )rR  s   r7  rP  z_trilu_checks.<locals>.<lambda>  r>  r9  c                      d d  dS )NrJ  z" not implemented for ''rN  )r  r  s   r7  rP  z_trilu_checks.<locals>.<lambda>  s    "TF25'; r9  )r^  ri  r  rC  )r  rQ  rR  r  r  r  s   ````  r7  _trilu_checksrB    sO     
LLIJ	LLIJ	LL%++u{{++;r9  rv  c                   t        d| ||||       t        | ||      \  }}}	t        d|       }
t        t        j
                  |||      } |d|t        j                        }|	dz
  }t	        j                  | t	        j                  ||z  d|z  z         z         }t	        j                  |d|	z  dz
  |z   |z  dz  z
        }t        ||
z   |      }t        ||      } |d||      }||z  ||	z
  dz   |
z   z   }||z  }t	        j                  t	        j                  ||f      t	        j                  ||f      f      S )Nr  r   r  r6  r  r  ro  r3  rQ  )rB  r;  rf  r   r^  r  rs  rG   rp   r)   r   r   )rQ  rR  r}  r  r  r6  r  r8  r:  r4  
row_offset	arange_kwxs1ro  	row_inds1	col_inds1xs2	row_inds2	col_inds2s                      r7  r  r    sK    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U]]
;CcAQBAEAGO!<<=IC1{?Q#6#Bi"ORU"UUVI'	J(>FI'	59I A~U
3Cs
cK/!3j@AIc	I;;	Iy)	*EIIy)6L,MN r9  c                     | dk(  s|dk(  ry|dkD  rt        d||z
        n|}t        dt        | |       |z        }t        | ||dz
        \  }}}| |z  ||z   z
  }||z
  }	|	||fS )Nr   r3  rQ  )rf  r  r;  )
rQ  rR  r}  r4  r:  trapezoid_size_trilrectangle_size_trilr  	triu_sizer8  s
             r7  _get_triu_sizesrQ    s    
ax3!8*01*#av&#K CfW-34N 3B#sFUVJ2W/,ac	03FFGI/N>;66r9  c                   t        d| ||||       t        | ||      \  }}}	t        d|      }
t        t        j
                  |||      } |d||      }||z  }||z  } |d|t        j                        }d|	z
  }t	        j                  | t	        j                  ||z  d|z  z
        z
        }t	        j                  |d|	z  dz
  |z
  |z  dz  z
        }t        ||      }t        ||      }|r|||z  z   }||
z   }t	        j                  t	        j                  ||f      t	        j                  ||f      f      S )	Nr  r   rD  r  g      r3  rQ  ro  )rB  rQ  rf  r   r^  r  rs  rG   rp   r)   r   r   )rQ  rR  r}  r  r  r6  r  r8  r:  r4  
col_offsetrF  rJ  rK  rL  rG  ro  rH  rI  s                      r7  r  r    sL    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U
3Cs
Ic	I A~U]]
;C{AQBAEAGO!<<=ICAOa$7)$Cy#PTW"WWXI'	59I'	59I
3!67	J&I;;	Iy)	*EIIy)6L,MN r9  )	out_int32rS  
boundariesrT  rS  c                   t        j                  j                         dk(  fd       t        | t         j                        r| nt        j
                  |       } |rt         j                  nt         j                  }j                  d   }|dk(  rt        j                  |       S t        j                  | j                  | j                  t         j                        }||z   }|||z
  dz  z   }|   }	|r|	| kD  }
n|	| k\  }
t        j                  |
||dz         }|dkD  rt        j                  | t         j                        }t        t!        j"                  |            }t%        |      D ]q  }t        j                  |
|z  ||      }||k  }t        j                  ||||z
  dz  z   d      }|   }	|r|	| kD  }
n|	| k\  }
t        j                  |
 |z  |dz   |      }s |j'                  |      S )NrQ  c                  ,    d j                          dS )Nz2boundaries tensor must be 1 dimension but got dim(r	  r  )rU  s   r7  rP  zbucketize.<locals>.<lambda>R  s    DZ^^EUDVVWX r9  rV  r   rA  r3  r  )r^  ri  r  r=  rP  r  r  rC  rU  r)  r(  r6  r   r$  r  r  r'  r[   rh  r   )rn  rU  rT  rS  	out_dtypen_boundariesr  r  midmid_valcond_midcond_updatenitersr  s    `            r7  r,  r,  G  s    
LLAX
 5<<(ell1oA(ekkI##B'Lq""
 KKDE
,
C 3;1$
$CoGQ;a<KK%q1Eaooauzz:TYY|,-v 	KA++h4c3?C#+K++k5C%KA3E+EqIC oG "Q;"a<KK(k 937EJE	K 88)8$$r9  c                     |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dkD  fd       |t        j                  t        j                  t        j                         dz
  z        z  z   S )Nc                  "    d j                    S )NzwCauchy distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r   s   r7  rP  zcauchy.<locals>.<lambda>       ::>**G r9  r  c                      d  S )Nz-cauchy_ expects sigma > 0.0, but found sigma=rN  )sigmas   r7  rP  zcauchy.<locals>.<lambda>  s    ?wG r9  ro  )r^  ri  r  r  r  r  r  rr   r'  r(  	rand_like)r  medianrc  	generators   ` ` r7  r  r    s     	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLG EEIIdgg1F1L&MNNNNr9  c                 4    |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dkD  fd       t        j                         }t        j                  |j                        j                  dz  }|d|z
  k\  }t        j                  || t        j                  |            }dz  |z  S )Nc                  "    d j                    S )Nz|Exponential distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r   s   r7  rP  zexponential.<locals>.<lambda>  ra  r9  r  c                      d  S )Nz4exponential_ expects lambda > 0.0, but found lambda=rN  )rates   r7  rP  zexponential.<locals>.<lambda>  s    FtfM r9  r3  rn  rV  )r^  ri  r  r  r  r  r  rd  r  r  r   rY   )r  rj  rf  uniform_valepsilonr  log_uniforms   ``     r7  rC   rC     s     	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLs
M
 //$'K kk+++,0014GsW},I++i'599[3IJK9{""r9  c                     |J t        j                  t        j                   j                         xr  t        j
                   j                          fd       t        j                  dk  xr dk  fd       t        j                  t        j                  t        j                                t        j                         z        dz   S )Nc                  "    d j                    S )Nzgeometric not implemented for r  r   s   r7  rP  zgeometric.<locals>.<lambda>  s    0= r9  r   rQ  c                      d  S )Nz0geometric_ expects p to be in (0, 1), but got p=rN  )r  s   r7  rP  zgeometric.<locals>.<lambda>  s    B1#F r9  )
r^  ri  r  r  r  r  rG   rZ   rd  r'  )r  r  rf  s   `` r7  rI   rI     s     	LL""4::.. 	3&&tzz22=
 
LL	A!a%F ;;u{{EOOD$9#9:TZZ^KLqPPr9  c                     |J t        j                  t        j                   j                         xrB t        j
                   j                         xr  t        j                   j                          fd       t        j                  dk  fd       t        j                  t        j                         z  |z         S )Nc                  "    d j                    S )Nzlog_normal not implemented for r  r   s   r7  rP  zlog_normal.<locals>.<lambda>  s    1$**> r9  r   c                      d  S )Nz-log_normal_ expects std > 0.0, but found std=rN  r   s   r7  rP  zlog_normal.<locals>.<lambda>  s    ?uE r9  )	r^  ri  r  r  r  r  r  rA   
randn_liker  r   r   rf  s   ` ` r7  r]   r]     s     	LL""4::.. 	3&&tzz22	3&&tzz22>	 
LL	CE 99S5++D11D899r9  )r   r   )rf  r  r  r6  r  c          	         ||t         j                  k(  sJ t        t              st        j                  dk\  fd       |t        d | fD              }t        j                  t        |      dkD  d        t        j                  |d u xr |d u d        t        d |D         }|d   j                  }|d   j                  }njt        j                  t        | t               xr t        t               d        |t        j                         n|}|t        j                  d      n|}t        j                  |d	d
||d|      }	|	z  | z   S )Nr   c                      d  S )Nz)normal expects std >= 0.0, but found std rN  rt  s   r7  rP  znormal.<locals>.<lambda>  s     I#O r9  c              3   B   K   | ]  }t        |t              s|  y wrG  r  rt  s     r7  rL  znormal.<locals>.<genexpr>  s     La*Q
2KLs   c                       y)NzFnormal expects that either mean or std is a tensor, or size is definedrN  rN  r9  r7  rP  znormal.<locals>.<lambda>  rz  r9  c                       y)Nz.Cannot pass layout, or pin_memory without sizerN  rN  r9  r7  rP  znormal.<locals>.<lambda>	  rz  r9  c              3   4   K   | ]  }|j                     y wrG  r  rt  s     r7  rL  znormal.<locals>.<genexpr>  s     "<q177"<r  c                       y)Nz>normal expects mean and std to be scalars when size is definedrN  rN  r9  r7  rP  znormal.<locals>.<lambda>  rz  r9  rv  r  rn  F)r   r   r  r6  r  rf  )r^  r  r=  r%   ri  rc  rT  rp  r  r6  r  r  ra   )
r   r   r;  rf  r  r  r6  r  r  normal_sampless
    `        r7  ra   ra     sM   ( >Vu}}444c:&1HO	
 |LD#;LLL1\	
 	dN1zT1D	

 !"<G"<=
  ""4,,PZZ5P1PT	
 .3]'')(.e$F\\N $&&r9  )rf  c                6    t        ||| j                  | |      S )N)r  rf  )ra   rU  rv  s       r7  normal_r  #  s    $TZZTYGGr9  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-rad2deg is not supported for complex tensors.rN  rN  r9  r7  rP  zrad2deg.<locals>.<lambda>,  rz  r9  gcܥL@r^  ri  r  r  r  )r  M_180_PIs     r7  re   re   (  s8    	LL""4::..? CH(?r9  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-deg2rad is not supported for complex tensors.rN  rN  r9  r7  rP  zdeg2rad.<locals>.<lambda>6  rz  r9  g9RFߑ?r  )r  M_PI_180s     r7  r<   r<   2  s8    	LL""4::..? EH(?r9  c                 *    | dk7  j                  |      S r   )r   )r  r  s     r7  r;   r;   <  s     AI??3r9  c                 `    t        j                   j                         dk(  xr j                         dk(   fd       t        j                   j                  j                  k(   fd        fd}t        j                   j	                         j	                         k(  |       y )NrQ  c                  N    dj                          d j                          dS )Nz1D tensors expected, but got zD and z	D tensorsr  r  r  s   r7  rP  z_dot_check.<locals>.<lambda>E  s#    /
|6%))+iX r9  c                  <    dj                    d j                    S )Nz:dot : expected both vectors to have same dtype, but found r  r  r  s   r7  rP  z_dot_check.<locals>.<lambda>J  s     L::,eEKK=* r9  c            	          dj                          d j                          dj                          d j                          d	S )Nz+inconsistent tensor size, expected tensor [z] and src [z.] to have thesame number of elements, but got r  z elements respectively)r  r  s   r7  numel_errorz_dot_check.<locals>.numel_errorN  sL    9$**,{SXS^S^S`Ra b004

~U5;;=/Qgi	
r9  )r^  ri  r  r  r  )r  r  r  s   `` r7  
_dot_checkr  B  sx    	LL
a,EIIK1,X
 
LL

ekk!	*
 
LL.<r9  c                 .     t                fd       }|S )Nc                 .    t        | |        | |      S rG  )r  )r  r  r  s     r7  wrapperz#_dot_check_wrapper.<locals>.wrapperX  s    4$r9  )r
   )r  r  s   ` r7  _dot_check_wrapperr  W  s     
2Y  Nr9  r  c                    | j                         r| j                         rt|j                         r@t        j                  | j	                         |j	                               j	                         S t        j
                  | j	                         |      S |j                         r$t        j
                  |j	                         |       S | |z  j                         S rG  )r-  is_conjr^  r   r   r   r   r  s     r7  r   r   `  s     <<>}}yyejjl;@@BBzz$))+u55]]_::ejjlD115Lr9  c                     | j                         st        j                  | |      S | j                         rf|j                         r2t        j                  |j                         | j                               S t        j                  | j                         |      S |j                         r2t        j                  | |j                               j                         S | j                         |z  j                         S rG  )r-  r^  r   r  r   r   r8   r   r  s     r7  r   r   t  s     ??yyu%%||~==?::ejjlDIIK8899TYY[%00	yyuzz|,1133  5(--//r9  c                    t        j                  | j                  |      }dg| j                  z  }d||<   |dk  r|| j                  |   z   }t	        j
                  | j                  |   | j                        j                  |      |k(  }t	        j                  ||      j                  | j                        }t	        j                  |||       S )NrQ  rV  r   r5  )r  r  r%  rU  r^  r  r6  r  r  r   r   )rK  r  r  r  
mask_shaper  s         r7  select_scatterr    s     
 
 
-CqvvJJsOqy$<<QXX6;;JG5PD
//#s
#
*
*177
3C;;tS!$$r9  )r5  c                 V    t        | t        j                  t        j                  f      S rG  )r=  r^  TypedStorageUntypedStorage)objs    r7  
_isStorager  
  s     cE..0D0DEFFr9  c                    d}t        |       }g }t        | t        t        f      rt	        |       }|r||j
                  z  }|j                  |       t	        |      |kD  r"t        dt        |       j                   d      |dk(  r	 |S 	 | d   }|} t        | t        t        f      r|S # t        $ r# t        dt        |       j                   d      w xY w)N   ztoo many dimensions 'rA  r   z.could not determine the shape of object type ')r  r=  r?  rc  rT  itemsizer  rj  r4  r  r  )seqscalar_typeMAX_DIMS
is_storager@  r  handles          r7  _compute_sizesr    s    HCJE
S4-
(S{+++FVu: 4T#Y5G5G4HJKKQ; L	VF
  S4-
(" L  	@cASAS@TTUV 	s   B, ,,Cc                 &   t        | t              rt        j                         S t        | t              r t        | t
              st        j                  S t        | t              rt        j
                  S t        | t              rt        j                         }|t        j                  u rt        j                  S |t        j                  u rt        j                  S |t        j                  u rt        j                  S t        d      t        | t        j                         r| j"                  S t        | t$              r"t'        dt)        |       j*                   d      t        | t,        t.        f      rzd }t1        |       }|dk(  rt        j                         S t3        |      D ]D  }| |   }	 t5        |      }|t        j6                  ||      }n|}|t        j                  u sB|c S  |S t        dt)        |       j*                         )Nz'invalid default scalar type for complexznew(): invalid data type 'rA  r   zCould not infer dtype of )r=  r   r^  r  r   r  rC  r   r  r  cfloatdoublecdoublehalfchalfre  rP  r  r  	TypeErrorr4  r  r?  rc  rT  rh  _infer_scalar_typepromote_types)r  default_dtype
scalarTyper  r!  cur_itemitem_scalarTypes          r7  r  r  )  s   #y!&&((#w
3(={{#x zz#w//1EKK'<<ell*== ejj(;;HII#u||$yy#s4T#Y5G5G4HJKK#e}%
S Q;**,,v 	"A1vH 1:O%"00_M
,
U]]* "!	"  
2493E3E2FG
HHr9  r  r  c           	         t        |t              rD|j                         dk(  r1|j                         j	                  | dd      j                  d      S t        |t              r"|j                         j	                  | dd      S t        |t              rt        j                  ||       S |}|st        j                  d      S t        j                  |D cg c]  }t        | |       c}      S c c}w )NrQ  rv  T)r  r6  r  rN  r  r   )r=  rP  r  detachr   r  r   r^  r&  r  r   _recursive_build)r  r  r  r   s       r7  r  r  ]  s     #v399;!#3zz|ZDINNrRR	C	  zz|ZDII	C	 ""3j99 C  	A [[M*:t<MN Ns   C4c                    t        |t        j                        rat        j                  | d        |}|r|j	                         }|r|j
                  n|}	||n|j                  }
|j                  |
|	d|      S t        |d      rt        S ||n| d   }
|rt        |      n|}	t        |      rt        S t        j                  |
      j                  dk(  rt        S t        |	|      }|j                  |
|	dd      }|S )Nc                       y)Nz,Can't pin tensor constructed from a variablerN  rN  r9  r7  rP  z)_internal_new_from_data.<locals>.<lambda>  rz  r9  F)r6  r  r  r  __cuda_array_interface__r6  meta)r  r  )r=  r^  rP  ri  r  r  r6  r   hasattrNotImplementedr  r  r4  r  )optionsr  
device_optdatacopy_variables
copy_numpytype_inferencer  r   inferred_scalar_typer6  r  s               r7  _internal_new_from_datar  y  s    $%NR	
 **,C,:syy)53::vv&	  
 	
 t/0 &1Zwx7HF7E-d3; $<<$$.!! ""6=6#7eRWX Mr9  )r  r6  r  r  c          
         t        | t        j                        rt        j                  dt
        d       |d u }t        ddi||nt        j                         || dd||      }|j                          |r|j                  |       |S )NzTo copy construct from a tensor, it is recommended to use sourceTensor.detach().clone() or sourceTensor.detach().clone().requires_grad_(True), rather than torch.tensor(sourceTensor)r3  r  r6  rv  T)r  r  r  r  )
r=  r^  rP  r  r  UserWarningr  r  detach_r  )r  r  r6  r  r  r  
new_tensors          r7  r  r    s    $%l		
 d]N( 
5"(?(?(A%J !!-0r9  rG  )F)r  NN)gh㈵>g:0yE>Fr  )NN)NNNNNFF)FFN)NF)NNFr  )r   rV  )	NNNTreflectFNNN)NNNTFNNF)rN  )rQ  r  )r   r   rQ  )r   r}  rV  )r   NrQ  )r  )r  rn  )r!  NF)r   rQ  NrM  )rQ  r3  N(  r<  r  r  rk  r'  rn  r  collections.abcr   r   r   enumr   	functoolsr   r   r	   r
   typingr   r   r   r   r   r^  torch._prims_primsr  torch._prims_common_prims_commonr  torch.utils._pytree_pytreer3  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(   torch._prims_common.wrappersr)   r*   r+   r,   r-   r.   r  rP  r  DispatchKey_opsr  r  r8  rA  rp  r  torch._decompr  objectr  r  r  r  rb  r/   INT_TO_FLOATr0   r1   r3   r2   r4   r5   DEFAULTr6   r7   r-  r8   r9   r:   r=   r>   r?   r@   rA   rB   rD   	NO_OPMATHrE   rF   r'  rG   rH   r   ALWAYS_BOOLrP   rQ   rR   rS   rT   specialmultigammalnr_   rU   rV   rX   rY   rZ   r[   r\   r  r  r^   r   r  rb   r  rc   rd   r   rf   rg   r   rh   ri   rj   rk   rl   rm   rn   rp   BOOL_TO_LONGrq   rr   rs   ru   r  rS  rv   rw   rx   ry   rz   r{   r|   r   r   r  r   r   r   r   rz  ry  r   r   r   r  rc  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   r   r   r   r   r   r   r   r}   r~   r   r  
ScalarSelfScalarOtherScalarself_outr   r  r  r   r   r  r   r  registerr6  r  r  r  r
  r  r  r   r,  r;  r   r   r   dim_IntListIntList_outr?  r   r   r   r   r]  r   r   r   r   r   r   r   r  r   r   r   r   r   r   r\  py_implCompositeImplicitAutogradMetar   r   r   r   r   r2  r   r   r   r   r   r   r   r   r   r   r  r  r   r   _subclasses
fake_implsregister_op_implr=  r   r.  r/  rQ  r0  r  r   r  r  r   r   r   r   r  r   ro   r   r  r  r  rK   rL   rN   rO   r  rJ   rM   r   rB  r   r   r   r
  r   r  r   r   r   r   rT  r   r   r   r   r   r   r  r  re  r   r   r  r  r  r   r   r  r  r  r  r  r(  r"  r#  r!  r   r  r  r  
start_step	start_outrW   r  r  r   r   r  r  r  r  r  r)  r$  r%  r&  r  r   r   r*  r+  r`   rt   r)  r   r   r   r  r  r;  rB  r  r  rQ  r  r,  r  rC   rI   r]   ra   r  re   r<   r;   r  r  r   r   r  abs_acos_acosh_add_addcmul_addcdiv_asin_asinh_atan_atanh_atan2_bitwise_and_bitwise_left_shift_bitwise_not_bitwise_or_bitwise_right_shift_bitwise_xor_ceil_clamp_
clamp_min_
clamp_max_conj_physical_	copysign_cos_cosh_cumsum_cumprod_deg2rad_digamma_div_eq_erf_erfc_erfinv_exp_exp2_expm1_float_power_floor_floor_divide_fmod_frac_gcd_ge_gt_
heaviside_hypot_igamma_igammac_i0_lcm_le_lerp_lgamma_log10_log1p_log2_log_logical_and_logical_not_logical_or_logical_xor_lt_mul_	mvlgamma_nan_to_num_ne_neg_
nextafter_pow_rad2deg_reciprocal_
remainder_rsqrt_sgn_sigmoid_sign_sin_sinc_sinh_sqrt_square_sub_tan_tanh_tril_triu_true_divide_trunc_xlogy_cauchy_exponential_
geometric_log_normal_zero_r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r  r  r  torch._refs._conversionstorch._refs.ffttorch._refs.linalgtorch._refs.nn.functionaltorch._refs.specialrN  r9  r7  <module>rT     sSQ          8 8  < < 7 7   # $ $ $      2 l\	 
hh""zz~~2Nb 9= 8Cx 1   D 2 ##44	 ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#J#JK  L  ##++	 (/n / )/ **+& &  ,& ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q #7AA	 N 	 : 	 . 	 	 
	 ^ J >  		"# #> #  ## ##++	 ##++!N !~ !	!N ~  ##//* *> *	* ##B#N#NO1^ 1 1 P1 ##//1 1> 1	1 ##//1 1> 1	1 ##B#N#NO^   P
 u}}11:> ##//0n 0 0	0 ##00$'' ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q
  $(XX	X EKK X 	X X '#!7DD
 :?,
,',26,,	  (,$ ( !$#'#'		*	 Z  Z 	
   )4  ##++	 > N ~  ##B#O#OP Q 

##7?? 12 J^ J# Jn J	  $J ##B#O#OP Q ##B#O#OP/~ /. / Q/ ##++	 ##++	 ##//	 ##B#O#OP Q ##B#O#OP4 Q4
 ##B#O#OP Q ##B#O#OP Q ##00n  	 ##B#O#OP Q ##B#O#OP Q ##++	
!. !^ !L 	## %"&6 6t !#"7?? #'	8^Z'(8^Z'(8 J	8	  "8: $7DD$$

 $7??#> #n # ## $7??". "^ " "" $7??". "^ " "" $7??.> .n . .. $7??#> #n # ## $7DD$
2^Z'(
2-2>:3M-N
2	
2  !
 $(	^Z'(^Z'( C=	  "( $7CC$. ^  	 $7DD^Z'(^Z'( 4 ^Z'(^Z'(  r $==EE $"'
O^Z'(O-2>:3M-NO
O@FV F F6 F16 1f 1 12 $7??$$
N ~ . 
 $7??$$
N ~ . 
 $7??$#
N ~ . 
 

#Z$7 75)G#H 7 % $7 $7??$$
> n  
 $7CC$. ^  	 $7CC$. ^  	 $7??$$
^ ^  
 $7??$$
^  > 
 $7DD$$
n  N 
 $7DD$$
~ . ^ 

  	
  
2 ((( ( 	(
 ( (V $7??$$
Q> Qn Q
Q  $7CC$. ^  	 $7??$$
T TN T~ T
T0 $7??$$
,. ,^ , ,
, $7CC> n  ##B#N#NO>  P $7CC. ^  $7CC> n  $7CC$. ^  	 $7??~ . ^  $7??~ . ^  $7?? $> n  	 $7CC$. ^  	 $7AA$$
! !N !~ !
! $7??! !N !~ !!
 		" 	(^Z'(	(^Z'(	( 	(  #	( !#"7?? 	$8^Z'($8^Z'($8 	$8	  "$8N $7DD	 $	> n   

##"7DD:U>:-. :59S3T :	  $:* $==EE $
"^Z'("-2>:3M-N"
" %#67DD ,
,, ,
 , ,	  &,* %#67?? ,
,, ,
 , ,	  &,* 

##+7?? -1,0	(	) 
(	) 		  $4 ' -1&
&	(	)& &  (& ' -1&
&	(	)& &  (& 

(

--.

../

))*

++,#"7AA +/*.#
#&'# &'#	  - + 0 / )#. 

#?D?T?T).)<)<  $ 9= v &  		"&N &z & #& (,#'%)37!&^$ EKK  4.	
 U\\" E//0   
2    37LL;;  	
 E//0 
#s(^ "  37;;  	
 E//0 
#s(^ "  37	;;  E//0	
 
#s(^   37	  E//0	
 
#s(^ ."& "T "0. n V "##' ??
? 	?
 ? 8
? ? EKK ? 
&	? 2? ?D< ! #

	(	
 
 	
  "
 ! #	(	  	  "$ --txx/C/CDE 6:
 $( 	x}htCy11	2 
 EKK  
&	  F:CC C, 		" 6:
  	x}htCy11	2  
&	  #: 		" #
 !	(	 
 
&	  #. 		" #
 !	(	 
 
&	  #. ! ##	 (,	(	 tn 	 $   "6 ! 6:#	1 (,11	x}htCy11	21 tn1 	1 $1 1  "1* 		" #*
 **	(	* * * #*Z &VV #  $'+	(	 tn	
  $  '0 &VV ##	 (,	(	 tn 	 $  ' 		"#07?? 7A
7A
7A 7A
 7A 7A 7A	  #7Av
+	~x77	8
+AO
+
>5!4556
+   # *8  +	~x77	8+AO+
>5!4556++	~x77	8+AO+
>5!4556+$ %)		A	A
	A 	A SM		A
 	A //0 %)RR	R R 	R
 SMR R  1R2 2 ''(M(MN''(8(89O4#7 O : OO1N 1) 1 1 !#$7AAtG# tG# tGn tG	  "tGp #, # # # >  ,,-?@PP $S	P2<PP  .Ph 8=7N7N77!&!4!477 #& #> # # $/4 =f = = = %=B F v ^ S s 5QTAT;U ,1~ 1# 1C 1 1* 		"N "2 ~   #n  n  (-c>.A(BLOD").
666!">> tCy ^  ..667DDVD 6
D 	D
 D D D 
D 666!"D 8DN ../VVV$III VI 6
	I
 
I 666!"I % 0IX ..t/E/E/M/MN$ O$ %,~ , , &, $#.#.,#.36#.AO#.#.  %#.N +??@ !% $##%)&*p?p?p? p? 	p?
 Vp? p? p? p? tnp? TNp? d^p? p? Ap?h KAAB !% $## QQQ Q 	Q
 VQ Q Q tnQ SMQ Q CQj",9<DGOR8 $51f 51 51  %51pOO*.OOd2?N 2? 2? 2?r<~ <y <^ <
&^ &N &~ & 		"7>N 7>H 7>H 7>n 7>  #7>t 

#<B>>>)9>>  $><
!3 
 
 

#G% GC G G  $G   $(	 EKK  	 * #& #> # # #& #> # #S Sc S) S S $
n 
3 
/A 
 %
" * 3 z :  
: 
C 

 
J 
 (<<<$.<7<Z=S7T<  )< (();;;$.;7<Z=S7T; *;..	. . Z'(	. .b  	  	  " ))*J S    +" ))*~ HX$6 .  +< --.56
#Cy/2	&\ /D DFDFvx/0DF 
DF >3	DFP(-(-,4(-
>3(-X&+&+,4&+
>3&+R 		& 1
11 1  '1 --. 	  	
    /$ & 	&
&& & 	&
 & '&R ( 	535353 53 	53
 53  )53p (!$$~"6 !$> !$  )!$H)n- ). )(n ( (5G ( '9 9 (9$	 	N 	 

#^   $ '	* 	*s 	*# 	*. 	* (	* 	 $+
+%(+03+;>++ %+ (()n  C s   * $( 9 9 
	9 EKK 9 
&	9 90 $
 $( TT	T EKK 	T
 
&	T T %T %
 $( UU	U EKK 	U
 
&	U U &U '3 3c 3n 3 (3 		))*=N =I =. = +=
#. # #N #
^   AE%D||%D#ll%D19#%D
\\%D %DP  $( =='+).)@)@#EKK # LL# ^$	#
 # # &&# # #L  $( =='+ EKK  LL	
 ^$    $ '
 $(%)'+
 EKK 	
 U\\" ^$    (, ../ $(%)'+
 
 EKK  U\\" ^$    08 

**+ $( =='+EKK  LL ^$	
     ,0 '
 $(%)'+
 EKK 	
 U\\" ^$     (2 		))* $( =='+EKK  LL ^$	
     +0 &
 $(%)'+
 EKK 	
 U\\" ^$     '2 & $(%)'+
 
 EKK  U\\" ^$    '0 ==> 48
	 E//0 	 ? ( $('+%)).)>)>&& EKK & ^$	&
 U\\"& & & &&& &  )&R //1F1FGH $`
 $( =='+``	*	` `
 EKK ` LL` ^$` ` ` `  I`F 		"#27??8 8V 8U6:3E-F 8	  #82 & $('+ ==U/^+,U/	z>)	*U/ U/
 EKK U/ ^$U/ LLU/ U/ U/ U/  'U/p &
 	8@ $('+ ==8@^+,8@	z>)	*8@ 8@ 	8@ EKK 8@ ^$8@ LL8@ 8@ 8@ 8@  '8@v 
	h~. 	# 	 
	 
	~ 	 	 
	 &>ND$8%:OOP>> 
.> '>D;;#''(; s,,-; 	;~ **+
 $('+ ==E),,- EKK 	
 ^$ LL     ,6# %++  ! %) $( =='+%)
%)}%) EKK 	%)
 LL%) ^$%) %) %) %)  "%)V **DIIMM:;
 $( =='+%%% EKK 	%
 LL% ^$% % % %  <%> $(%)'+).)>)> EKK 	
 U\\" ^$   && . ( $(%)'+).)>)> EKK  U\\"	
 ^$   &&   ), ' $(%)'+).)>)> EKK  U\\"	
 ^$   &&   (, 

**+ $('+%)EKK  ^$ U\\"	
     ,8 $( =='+>> EKK > LL	>
 ^$> > >, $'$'XX	tS%	 X c5 
!X
 ;;X X X* (()*> * *@V *  **Z ))*+4J +   	
  
"^  4 & 		" &+"	M $(MMeSj!"M 
(	M 	M EKK M M  #M2 

#* *> *  $* [)l+	 		"3N 3c 3. 3  #3 		"3N 3c 3. 3  #3(7 73 7 7c3m8L 7$
	 
 ;;	
 LL " ))* "
  ==""	"	" "
 ;;" LL" " " "  +"R7 73 7 7c3m8L 7" ))* &
  =="&	&	& &
 ;;& LL& & & &  +&R '
 7%7%7% 	7%
 7%  (7%t $#!7??O	  %O  (()#!7??#	  *#6 '#!7??Q	  (Q (#!7??:	  ):" $# 8?? 
		1'
 
1'  %1'h %Hd H &H ##B#O#OP.  Q ##B#O#OP.  Q **+ Xh/    , =* !#)7??
 	   "
  		"#)7??0	   #0  ++,%n %> % %C %  -% Sd	u	S!!d	u	d	u		u	[)#$67 [)J'$%89 [)d	u	9%
9%
}-(#	Sd

!!!SBSd

Sd	u	[)	u	l+ddSBB9%
	u	

!BSBd

	u		u	dS[)[)J'[)BS(#	J'BS9%
S!J'9%
	u	S!dSddd

SSddd[)	u		u	

[)9%
J'd!$**-
&t7$T]]3"4;;/ #4;;/#DLL1#DLL1	dff	%%dnn5"4;;4P%dnn5 +	G
4/Ih"'(>@R(R"SH 5r tU L       r9  