
    VhB             $         U d dl mZmZ d dlmZmZmZ d dlZd dl Z d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d d	l+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d d
l:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ d dlRmSZS d dlTmUZV d dlWZd dlXZd dlYZd dlZm[Z\ d dl]m^Z_ d dl`maZa d dlbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ eJrd dlmZ d dlZd dlZ
d&dZd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Zd' Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Z d\ Z
d'd^Zd_ Zd` Zda Zdb Zdc Zdd Zde Z	df Z
dg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zd]dwdxZ
d'dyZdz Zd{ Zd| Zd} Z d~ Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2
d'dZ3
d'dZ4
d'dZ5d Z6
d'dZ7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGddZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d Zad Zb
d'dZcd Zdd ZedÄ ZfdĄ Zgdń ZhdƄ ZidǄ ZjdȄ Zk
d'dɄZl eeldʬ˫      Zmd̄ Znd̈́ Zod΄ Zpdτ ZqdЄ Zrdф Zsd҄ Ztdӄ ZudԄ ZvdՄ Zwdք Zxdׄ Zyd؄ Zzdل Z{dڄ Z|dۄ Z}d܄ Z~d݄ Zdބ Zd߄ Zd Z G d d      Z G d de      Z G d de      Z G d de      Zd Zddddd]ddZd Zd Zd Zd Zd Z	 	 	 
d(dZd Zd Zd Zd Zd Zd Z
d'dZd Zd Zd Zd  Zd Zd Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Zd' Z
d'd(Zd) Zd* ZÐd+ ZĐd, ZŐd- ZƐd. Zǐd/ ZȐd0 Zɐd1 Zʐd2 Zːd3 Z̐d4 Z͐d5 Zΐd6 Zϐd7 ZАd8 Zѐd9 ZҐd: ZӐd; ZԐ
d)d<ZՐd= Z֐d> Zאd? Zؐd@ ZِdA ZڐdB ZېdC Zܐ
d'dDZݐ
d'dEZސ
d'dFZߐ
d'dGZdH Z
d'dIZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT Z
d'dUZ
d'dVZ
d'dWZdX Z
d'dYZdZ Zd[ Zd\ Zd] Zd^ Zd]d_d`Z
d)daZ
d)dbZ
d*dcZdd Zde Zdf Z
d'dgZdh Z di Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Z	dr Z
ds Zdt Zdu Zdv Zdw Z
d'dxZdyendzej"                  d{ej$                  d|ed}ed~eej   fdZd Z
d'dZd Z
d+dZd Zd]ddZd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%dddZ&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHddddZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUdÄ ZVdĄ ZWdń ZXdƄ ZYdǄ ZZdȄ Z[dɄ Z\dʄ Z]d˄ Z^d̄ Z_d̈́ Z`d΄ Zadτ Zb
d'dЄZcdф Zdd҄ Zedӄ ZfdԄ ZgdՄ Zhdք Zidׄ Zjd؄ Zkdل Zl
d'dڄZmdۄ Znd܄ Zod݄ Zpdބ Zqd߄ Zrd Zs
d,dZtd Zud Zvd Zwd ZxdZyePsddgng dZzd]d]dddZ{ G d dej                        Z} G d dej      Z~ G d d      Z G d de      Z G d de      Z G d de      Zg  ed edd]d]       e)ej                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               ei e8ej                   e9d	d
      i      ddd      f       ed edd]d]       e)ej                  ej
                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               ei e8ej                   e9dd      i      ddd      f       ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed edd]d]       e)ej                  ej
                        ddd eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  dddej&                  f      f        ed edd]d]       e)ej                  ej
                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed edd]d]      dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed edd]d]       e)ej                  ej
                  ej                  ej                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd dej                  f      f        ed! edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd dej                  f      f        ed" edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd e%ej&                         e       z          eie
j                  dd e              eie
j                  dd dej                  f      f        ed# edd]d]       e)ej                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed$ edd]d]       e)ej                  ej
                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd dej                  f      f        ed% edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f        ed& edd]d]       e)ej                  ej
                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd dej                  f      f        ed' edd]d]       e)ej                  ej
                        ddd eie
j                  dd e%ej&                         e       z          eie
j                  dd e%ej&                         e       z          eie
j                  dd e%ej&                         e       z          eie
j                  dd e%ej&                         e       z          eie
j                  dd e%ej&                         e       z          eie
j                  dd e%ej&                         e       z          eie
j                  dd dej                  f      f        ed( edd]d]       e)ej                  ej
                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed) edd]d]       e)ej                  ej
                  ej                        dddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                              f       ed* edd]d]       e)ej                  ej
                  ej                  ej                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd dej                  f      f        ed+ edd]d]       e)ej                  ej
                        dddd eie
j                  dd e              eie
j                  dd e              eie
j                  ddd,ej&                  f       eie
j                  ddd,ej&                  f       eie
j                  ddd,ej&                  f       eie
j                  ddd,ej&                  f       eie
j                  ddd,ej&                  f       eie
j                  ddd,ej&                  f       eie
j                  dd e             f	-       ed. edd]d]       e)ej                  ej
                        dddd]/       ed0 edd]d]       e)ej                  ej
                        ddd eie
j                  dd e              eie
j                  dd e              eie
j                  dd e              eie
j                  dd e              eie
j                  dd e              eie
j                  dd e              eie
j                  dd dej                  f      f        ed1 edd]d]      ddd ei e
j                  d2      dd e%ej&                               ei e
j                  d2      dd e%ej&                               eie
j                  dd e        e%ej&                        z          eie
j                  dd e              eie
j                  dd e        e%ej&                        z          eie
j                  dd e              eie
j                  dd e        e%ej&                        z          eie
j                  dd e              eie
j                  dd dej                  f      f	3      Zeen   ed4<    ed5 eddddʫ       e)ej                  ej
                  ej                  ej                        dddd eie
j                  dd       eie
j                  dd e"ej&                  ej
                  ej                               eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  dd6 e(        e'ej&                  ej
                  ej                  ej                        z         f7       ed8 edddʫ       e)ej                  ej
                        dddd eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd6       eie
j                  dd9       ei e
j                  d:      ddej                  fd; <      f	7       ed= eddddʫ       e)ej                  ej
                        ddd eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  dd6ej&                  f       ei e
j                  d:      ddej                  fd> <      f        ed? eddddʫ       e)ej                  ej
                  ej                  ej                  ej                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd6 e%ej&                              f        ed@ edddʫ       e)ej                  ej
                  ej                  ej                  ej                  ej                  ej&                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd6 e'ej&                               eie
j                  dd9 e'ej&                               eie
j                  dd dej                  f       eie
j                  ddA e             f
        edB edddʫ       e)ej                  ej
                  ej                  ej                  ej                  ej                  ej&                        ddd eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd6 e'ej&                               eie
j                  dd9 e'ej&                               eie
j                  dd dej                  f       eie
j                  ddA e             f
        edC edddʫ       e)ej                  ej
                  ej                        dd]d] eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd6 e'ej&                               eie
j                  dd9 e'ej&                               eie
j                  dd dej                  f       eie
j                  ddA e             f
        edD edddʫ       e)ej                  ej
                  ej                        dd]d] eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd e'ej&                               eie
j                  dd6 e'ej&                               eie
j                  dd9 e'ej&                               eie
j                  dd dej                  f       eie
j                  ddA e             f
E       edFd]d edddʫ       e)ej                  ej
                  ej                  ej                  ej                  ej&                        ddd eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       ei e
j                  dG      ddd,ej                  f       ei e
j                  dH      dddej                  feFI       eie
j                  ddJdej&                  fdK I      fdʐL
       edM edd]d]      d]d]d]d]N      g
Zeen   edO<    edP edQddʫ       e)ej                  ej
                        ddd eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  dd9ej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  ddej&                  f       eie
j                  dd6 e(        e'ej&                        z         f        edR edQddʫ       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd6 e(        e'ej&                        z          eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd9 e(        e'ej&                        z         f       gZee   edS<    edT edd]d]       e)ej                  ej
                  ej                        ddd eie
j                  dd ej                  ej                  f       eie
j                  ddUej                  ej                  f       eie
j                  ddej                  ej                  f       eie
j                  ddej                  ej                  f       eie
j                  ddej                  ej                  f      f        edV edd]d]       e)ej                  ej
                        ddd eie
j                  dd       eie
j                  dd e%ej&                               eie
j                  dd       eie
j                  dd e%ej&                               eie
j                  dd       eie
j                  dd e%ej&                               eie
j                  dd6       eie
j                  ddUd e%ej&                              f       gZee   edW<    edX edYddʫ       e)ej                  ej
                        ddd eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd e%ej&                               eie
j                  dd6 e%ej&                               eie
j                  dd9 e%ej&                              f       gZee   edZ<   d[ Zd\ Zd] Zd^ Zd_ Zd` Zda Z
d-dbZdcdddeZ
d.dgej:                  dhed~ej:                  fdiZ
d/dkZ
d0dmej:                  dnee   fdoZdmej:                  dnee   fdpZ
d*dmej:                  dnee   fdqZ
d0dmej:                  drefdsZ
d1dtZdu Ze
d2dv       Zdw ZdxejT                  fdyZ
d'dzZ
d3d{Zd| Zg  ed+d}ej^                   e"ej`                  ej
                  ejb                         e"ej&                  ej`                  ej
                  ejb                         e)ej                  ej
                         ei e
j                  d~      ddejd                  f       ei e
j                  d~      ddejd                  f       ei e
j                  d~      ddejd                  f       ei e
j                  d~      ddejd                  ejf                  ejb                  f       ei e
j                  d      ddej                  geM<       ei e
j                  d      ddejf                  ejd                  g       eie
j                  ddejd                  ejf                  ejb                  f       eie
j                  ddejd                  ejf                  ejb                  f       eie
j                  ddejd                  ejf                  ejb                  f       eie
j                  dd6ejd                  ejf                  ejb                  f      f
ddddddddʐ       eddejh                  d e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         e)ej                  ej
                        dddd e6ej                  dej
                  dej                  di      f ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      ddejd                  geH<       ei e
j                  d      ddejd                  geH<       ei e
j                  d      ddejd                  geH<       ei e
j                  d      ddejd                  geH<       ei e
j                  d      ddejd                  geH<      f	       eddejj                  d e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         e)ej                  ej
                         e6ej
                  di      fd]ddd ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI      f emd d             ed5ddd e"ej&                  ej
                  ej                  ejb                         e)ej                  ej
                  ej                        deddd ei e8ejb                   e9dd       i      dd      f eie
j                  ddej&                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  ej                  f      f       endd ejl                  jn                  d e"ej
                  ej                  ejb                  ej&                         e)ej                        d]d]ee eie
j                  ddej                  ej                  f       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd      f       end e#ej
                  ej                         e)ej                  ej
                  ej                  ej                        dd]dee eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  ddej                  f       eie
j                  dd      f	       endd ejT                  jp                   eej                  ej
                        d]d]d gee eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū       ei e
j                  dƫ      ddǫ       eie
j                  dȐdɫ      f	ʫ
       endːd̄ ejT                  jr                   eej                  ej
                         e)ej                  ej
                        d]d]d gee eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dÐdī       eie
j                  dÐdū       eie
j                  dȐdɫ       ei e
j                  d      dd      f	ͫ       endΐdτ ejT                  jt                   eej                  ej
                  ej                  ejv                  ej                  ej                  ejx                         e)ej                  ej
                        d]d]d gee eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū       eie
j                  dȐdɫ      fͫ       endАdф ejT                  jz                   eej                  ej
                         e)ej                  ej
                        d]d]d gee eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū       eie
j                  dȐdɫ      fͫ       endҐdӐdԄ ejT                  j|                   e!ej                  ej
                         e)ej                  ej
                        d]d]d gee ei e
j                  d«      ddի       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dȐdɫ       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū      f֫       endאd؄ dejT                  j~                   e!ej
                  ej                         e)ej                  ej
                        d]d]d]d gee eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dȐdɫ       ei e
j                  d      dd      f٫       edBe e#ej&                  ej                  ej
                         e)ej                  ej
                  ej                  ej                        dd]d ed]ګ       eie
j                  ddېd       eie
j                  dd       eie
j                  ddܫ      fݫ	       ed@e e#ej&                  ej                  ej
                         e)ej                  ej
                  ej                  ej                        dd]d ed]ګ       eie
j                  ddېd       eie
j                  dd       eie
j                  ddܫ      fݫ	       ed=d e"ejb                  ej                  ej
                  ej&                         e)ej                  ej
                        dddde eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫             ed8dddd e"ej
                  ej                  ejb                         e)ej                  ej
                        ddded ei e8ej                   e9dd       ej
                   e9dld      ej                   e9dld      i      dd       ei e8ejb                   e9dd       i      ddd,       ei e8ejb                   e9dd       i      dȐdd,       ei e8ejb                   e9dd       i      dȐdɐd,      f ei e
j                  d      ddejx                  f       ei e
j                  d      ddejx                  f      f       end e"ej                  ej
                         e!ej                  ej
                         e!ej                  ej
                         e)ej                  ej
                        dddeNe ei e
j                  d      ddej                  ej                  f      f       endd e"ej                  ej
                         e!ej                  ej
                         e)ej                  ej
                        dddeNddg eedd       ei e
j                  d      ddej                  ej                  f       ei e
j                  d      ddd,ej                  f      f       end e"ej
                  ej                         eej                  ej                  ej                  ej
                        dd ei e8ej`                   e9dld      i      ddd,      ge       end
d4d e"ej
                  ej                         e!ej                  ge=seFrej
                  gng   e)ej                  ej
                        ddd ei e8ej                   e9dd      ej                   e9dld      i      dd       ei e8ej                   e9dd      ej                   e9dld      i      dd       ei e8ej                   e9dldl      i      dd       ei e8ej                   e9ddl      i      dd       ei e8ej`                   e9dd      i      ddd,      g ei e
j                  d      dd de=        eie
j                  dd       ei e
j                  d      dd      fe       end e"ej
                  ej                         eej                  ej                  ej                  ej
                         eej                  ge=seFrej
                  gng ej                  ej                    e)ej                  ej
                        ddd ei e8ej                   e9dld      i      ddd       ei e8ej                   e9dld      i      ddd      ge ei e
j                  d      ddej                  ej                  f      f       end e"ej                  ej
                         e!ej                  ej
                         e)ej                  ej
                        dʐeedd ei e
j                  d      ddej                  ej                  f      f
       end e"ej                  ej
                         e!ej                  ej
                         e)ej                  ej
                        eedd ei e
j                  d      ddej                  ej                  f      f	       end	 e"ej                  ej
                         e!ej                  ge=seFrej
                  gng   e)ej                  ej
                        dddd ei e
j                  d      dd de=        ei e8ej                   e9dldl      i      dd      fe 

       end e"ej                  ej
                         e!ej                  ej
                         e)ej                  ej
                        ddde       end e"ej&                  ej
                  ej                        dd ei e
j                  d      dd e"ej&                  ej
                  ej                              fe	eN       endP e"ej                  ej
                         e)ej                  ej
                        ddd eie
j                  dd      fe eee      	       endR e!ej                  ej
                         e)ej                  ej
                        dd eie
j                  dd      fe eee             e
d5i dddej                  ddddʓddʓddʓddʓddʓddʓddʓddʓd e"ej&                  ej`                  ej
                        d e"ejb                  ej&                  ej`                  ej
                        d  e)ej                  ej
                        d!dʓd" ei e8ej                   e9dld      i      dd       ei e8ej                   e9d#d$      i      ddd       ei e8ej                   e9d%d
      i      ddd,       e6ej
                  di      gd& ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d'      dd(      f e
d6i dd*dej                  d e"ej&                  ej`                  ej
                        d e"ejb                  ej&                  ej`                  ej
                        d  e)ej                  ej
                        d" e6ej
                  di      fd+d]ddʓddʓddʓddʓddʓddʓddʓddʓd& ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d'      dd(      f e
d7i dd,dej                  d e"ej&                  ej`                  ej
                        d e"ejb                  ej&                  ej`                  ej
                        d  e)ej                  ej
                        d!dʓddʓddʓddʓddʓddʓddʓddʓddʓd" e6ej
                  di      fd& ei e
j                  d      ddejf                  ejd                  geIxs eH<       ei e
j                  d      ddejf                  ejd                  geIxs eH<       ei e
j                  d      ddejf                  ejd                  geIxs eH<       ei e
j                  d'      dd(      f ed-d. e#ej&                  ej
                  ej`                         e)ej                  ej
                        dddd] eie
j                  dd/      f0	       e
d8i dd2dej                  ddd e"ej&                  ej`                  ej
                        d e"ejb                  ej&                  ej`                  ej
                        d  e)ej                  ej
                        d" e6ej
                  di       ei e8ej                   e9d3d#      i      ddd      gd+d]ddʓddʓddʓddʓddʓddʓddʓddʓd& ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejf                  ejd                  geHI       ei e
j                  d      dddejf                  geHI       ei e
j                  d'      dd(      f end4 e!ej                  ej
                        ej                  d]d]en ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d5      fd]6       end7ej                   e"ej&                  ej                  ej
                        d]ddd]e98       end9ej                  ej                  j                  ej                        d:k\  rej                  nd eej                  f      d]d]d]d]d]e eie
j                  dd       ei e
j                  d      dd        ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd      f;       end<ej                   e"ej&                  ej                  ej
                         e)ej                  ej
                        e:e;d]ddd] eie
j                  dd       eie
j                  ddej                  g      f=       end> e"ej&                  ej                  ej
                  ejb                        d]ddd] eie
j                  dd       eie
j                  ddej                  g      fe<?       ed@ej                   e%ej&                         e)ej&                        ej                  d]A       edBej                   e(        e(        e)ej                  ej                  ej&                        ej                  ej                  d]d ed C       ei e
j                  d      dd۫       ei e
j                  dD      dd      fE       edFej                   e(        e(        e)ej                  ej                  ej&                        ej                  ej                  d]d ed C       ei e
j                  d      dd۫       ei e
j                  dD      dd      fE       endGej                   e"ej&                  ej                  ej
                        ddd]d]eːH       endIej                   e"ej&                  ej                  ej
                        d]ddd]e eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  f      fJ	       endK e       d]d]d]e=L       edej                   e#ej`                  ej
                         e)ej                  ej
                  ej                  ej                        dd eie
j                  dd edM  e(       D                    fddddddʐN       endO e        eee0e3gP       endQ e         e        ddddeee0e3g eie
j                  dd      fR       endSej                   e        ed]ddʐdT e0e3gU	       endV e"ej&                  ej
                  ej                  ejb                         e)ej                  ej
                  ej                        eEeFddd]W       endX e"ej&                  ej
                  ej                  ejb                        eEd]eFddd]Y       endZej                   e"ej&                  ej
                  ej                  ejb                         e)ej                  ej
                  ej                  ej                  ej&                        e,e-ddd] eie
j                  dd[       eie
j                  dd      f\
       end]d^  e"ej&                  ej
                  ej                  ejb                        e,e-ddʐd_gdd] eie
j                  dd      f`       endadb  e"ej&                  ej                  ej
                        e.e/ddd] eie
j                  dd       eie
j                  ddej                  f      fc	       endddee e#ej
                  ej`                         e)ej                  ej
                  ej                  ej                  ej&                        e eee      ddd eie
j                  ddej&                  f       eie
j                  dd      ff       edgej                   e"ej`                  ej
                  ejb                        d]dddddddʐh       ediej                   e"ej&                  ej
                  ej`                  ejb                         e)ej                  ej                        dddd]d]j	       edkdlej                   e"ej&                  ej
                  ej`                  ejb                        ddddddd ei e
j                  d      ddej                  f       ei e
j                  dm      dd      fn       endo e"ej&                  ej`                  ej
                         e)ej                  ej
                        eddd]p       endq e"ej&                  ej`                  ej
                  ejb                         e)ej                  ej
                        eddd]p       endr e       dd]dʐed]s       endt eej`                        d]ddd]e eie
j                  ddի       ei e
j                  d      ddej`                  f       eie
j                  dd9      fu       edv eej`                        ddd]e eie
j                  dd۫       ei e
j                  d      dddw       eie
j                  ddx      fy       edze e#ej&                  ej`                  ej
                         e)ej                  ej
                        ddddʐ{       end| e"ej`                  ej
                        eddd] ei e
j                  d      ddej                  ej                  f      fd]}       edej                   e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         e)ej                  ej
                        dd]ddd e6ej
                  di      f ei e
j                  d      ddejf                  ejd                  fd,eH~       ei e
j                  d      ddejd                  fd       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddd,ejf                  ejd                  geII       eie
j                  dddejb                  feHI      f       ed eej                         e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         e)ej                  ej
                        dddd ei e
j                  d      ddd,ej                  g       ei e
j                  d      ddejd                  g       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddd,ejf                  ejd                  geII       ei e
j                  d      ddd,ejf                  ejd                  geII       eie
j                  dddejb                  feHI      f
       end e"ej`                  ej
                        eed]dd ei e
j                  d      ddej                  ej                  f       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e8ej                   e9dd      i      ddd,      f       end e"ej`                  ej
                         e)ej                  ej
                  ej                        edddʐ       end e"ej`                  ej
                         e)ej                  ej
                  ej                        dd eie
j                  dd      fe       end e"ej                  ej
                         e)ej                  ej
                        dd eie
j                  dd      fed]       end e#ej&                  ej`                  ej
                         eed]      dddeN       end e#ej&                  ej`                  ej
                         eed]      dddeN       edej                   e6ej
                  dej                  di      f e#ej&                  ej`                  ej
                        ddddddddʐ       endej                  ddfej                  ej                  fd e"ej&                  ej                  ej
                        dddʐefeed]d       ed?dd e"ej&                  ej`                  ej
                         e"ej&                  ej`                  ej
                  ejb                         e)ej                  ej
                  ej                  ej                        dddddd edʐګ             ed?dd e#ej`                  ej
                         e)ej                  ej
                  ej                  ej                        d ddddd edʐګ       eie
j                  dd۫      f eie
j                  dd       ei e
j                  d      ddd,ej                  f      f       ed?dd e#ej`                  ej
                         e)ej                  ej
                  ej                  ej                        d ddddd edʐګ       eie
j                  dd۫      f eie
j                  dd       ei e
j                  d      ddej                  fd,      f       ed e"ej&                  ej`                  ej
                         e"ej&                  ej`                  ej
                  ejb                        dddd edʐګ             end e"ej&                  ej                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        d ed]d]d       ed eej                         e"ej&                  ej`                  ej
                         e"ej&                  ej`                  ej
                  ejb                         e)ej                  ej
                         ei e
j                  d      ddd,ejf                  ejd                  geHI      fddddʐ
       endd  e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                        e<dddd] eie
j                  dd      f
       endd  e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        ddʐe?d] eie
j                  dd      f	       end e"ej&                  ej`                  ej
                        e<dddd eie
j                  ddej                  f      f       endej                   e"ej&                  ej
                  ej                         e"ejb                  ej&                  ej`                  ej
                         e)ej                  ej
                        ddd]eeV
       end e"ej&                  ej
                  ej                  ejb                        d]dddeee	       endd e"ej&                  ej
                  ej                  ejb                        d]ddeee	       end e"ej&                  ej
                  ej                  ejb                        ddeee       end e"ej&                  ej
                  ej                        d]ddʐe       end e"ej&                  ej
                  ej                  ejb                        edddʐ       edej                   e"ej&                  ej
                  ej                  ejb                         e)ej                  ej
                  ej                  ej                  ej&                        dd]e@d       edej                   e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                  ej                  ej&                        ddd] ei e
j                  d      dd۫      f       edej                   e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                  ej                  ej&                        ddd] ei e
j                  d      dd۫      f       edej                   e#ej                  ej
                         e#ej                  ej
                         e)ej                  ej
                  ej                        ddddddi ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddejx                  f       ei e
j                  d      ddej                  fd,      fƫ       edej                   e#ej                  ej
                         e#ej                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        ddddej                  ej                  dʐddi ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddejx                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      dȐdej                  f       ei e
j                  d      ddd,ej                  f       ei e8ej                   e9dʐd      i      ddd      f˫       ed'd̄  eej
                  ej                         eej                  ej
                         e)ej                  ej
                        dddddddd ei e
j                  d      ddej
                  ej                  ej                  ej                  f       eie
j                  ddej
                  ej                  ej                  f      fͫ       ende4 ei e
j                  dϫ      dd      g e        edddd]d]d]d]eNЫ       end e       edddd]d]d]d] ei e
j                  dҫ      dd      fe4 eie
j                  dd       eie
j                  ddӫ      fԫ       ed$ej                   e#ej`                  ej
                         e)ej                  ej
                  ej                  ej                        dd eie
j                  dd edՄ  e(       D                    fddddddʐN       endej                   e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        eddd]׫       endej                   e"ej&                  ej`                  ej
                        eeddd]٫       endej                   e"ej&                  ej`                  ej
                        eeddd]٫       end e        de e5 eB       dk\  xs  eC       dk\   dޫ      e7g ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dߐd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddӫ       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd9       ei e
j                  d      dd      f       end eej
                  ej                        ddd]d]d]ee,g ei e
j                  d      ddի       ei e
j                  d      dߐd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddӫ       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f
       edeJr eej                  j                        ndd e6ej
                  dej                  di      f e#ej&                  ej`                  ej
                        ddde ei e
j                  d      ddej                  f      f
       edeI e#ej`                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        d] edʐګ      d ei e
j                  d      dd       ei e
j                  d      dej
                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  f       ei e8ej                   e9dd      i      dd      f       edej                  ej                   eej`                  ej
                         e)ej                  ej
                        g dd ei e
j                  d      dd       ei e
j                  d      ddī       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddeH       ei e
j                  d      ddeH       ei e
j                  d      ddeH      f		       e
d9ej                  dd e"ej&                  ej`                  ej
                         e)ej                  ej
                         e6ej
                  di      fdddddddddʐd edej                  d e#ej&                  ej
                  ej                         e)ej                  ej
                  ej                        dd]d       end e        ee1e3gd] eie
j                  dd        eie
j                  dd      f       edej                  d e#ej&                  ej
                  ej                         e)ej                  ej
                  ej                  ej                        dd]d       edej                   e'ejb                        d]ddd] eie
j                  dd      f        end e!ej                  ejv                  ej                  ej                  ej
                  ej`                        d]ddd] eie
j                  dd       ei e
j                  d      ddej                  ej                  f       ei e
j                  d      dd       ei e
j                  d      d5      fd]epeZ
       end e#ej
                  ej`                        d]e	       end e#ej
                  ej                         e)ej                  ej
                  ej                        ddʐeGeH       edej                  d e#ej&                  ej
                  ej                        dd]d	       end
 e"ej
                  ej                         e)ej                  ej
                  ej                        ddd]ee eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  f       eie
j                  dd       ei e
j                  d      ddejf                  fd      f	       end
 e"ej
                  ej                         e)ej                  ej
                  ej                        ddd]eed eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  f       eie
j                  dd       ei e
j                  d      ddejf                  fd      f
       end e"ej`                  ej
                         e)ej                  ej
                        ddd]ee eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  f       eie
j                  dd       eie
j                  dȐdejv                  ej                  ej                  fd       eie
j                  dȐdejv                  ej                  ej                  fd       ei e
j                  d      ddejf                  fd      f
	       end e"ej`                  ej
                         e)ej                  ej
                        ddd]eed eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  f       eie
j                  dd       eie
j                  dȐdejv                  ej                  ej                  fd       eie
j                  dȐdejv                  ej                  ej                  fd       ei e
j                  d      ddejf                  fd      f	
       edej                  d e"ej&                  ej`                  ej
                         e"ej&                  ej`                  ej
                  ejb                         e!ej`                  ej
                  ejb                         e)ej                  ej
                        dddd e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  geHI      f emd d             edej                  d e6ej
                  di      f e"ej&                  ej`                  ej
                         e)ej                  ej
                        dddd ei e
j                  d      ddd,ejf                  ejd                  geHI      f emd d             edej                  d e"ej&                  ej`                  ej
                         e)ej                  ej
                        dddd e6ej
                  di      f ei e
j                  d      ddejf                  ejd                  g      f emd d             ed e"ej&                  ej`                  ej
                        dddd]ddd] eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd      f ei e8ej                   e9dldl      i      dd,      g       ed e!ej
                  ej                         eej
                  ej                         e)ej                  ej
                        ddd] eie
j                  ddېd      f       end eej
                  ej`                         e)ej                  ej
                        ddʐe        edej                   e6ej
                  dej                  di      f e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej&                        d] ei e
j                  d      dd e"ej`                  ej
                               ei e
j                  d      dd e"ej`                  ej
                              f       edej                   d e#ej&                  ej
                  ej                         e)ej                  ej
                  ej                  ej                        dd]d       end ej                   e        ddde3feߐ!       end"ej                   e        dddd]ee1e3g eie
j                  dd       eie
j                  dd       eie
j                  dd      f#
       end$ej                   e        dd]de ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g       ei e
j                  d%      dd&      fe3e1g'	       end( e"ej&                  ej`                  ej
                  ejb                         e)ej                  ej
                  ej                  ej&                  ej                        eeddd]d])	       end* e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej&                  ej                        e
eddd]d]d+
       end, e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                        ddʐee] ei e
j                  d      dd-ej&                  geF<      f.       end/ e!ej                  ej
                        d0ed]d]ddd] ei e
j                  d      ddej`                  gd,      fd]1       end2d3 e"ej                  ej
                         e!ej                  ge=seFrej
                  gng   e)ej                  ej
                        dddddd] eed]4       ei e
j                  d      dd de=        ei e8ej                   e9dd       i      ddՐdeF       ei e8ej                   e9dd       i      dddeF       ei e8ej                   e9d dl      i      ddՐd,       ei e8ej                   e9dldl      ej                   e9dldl      i      dȐdd      g eie
j                  dd       ei e
j                  d5      ddՐd,ej                  f       ei e
j                  d      dȐdej                  f       ei e
j                  d      ddd,ej                  f      f6       endTd7 e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        edddʐ8       endTd9 e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        dddʐed:	       end; e#ej
                  ej                         e)ej                  ej
                  ej                        d]ddʐe^ eeqd]<      =       end> e#ej
                  ej                        d]dd eeqd]<             end? e!ej`                  ej
                         e)ej                  ej
                        ed]dd]d ei e8ej                   e9d@d@      i      dȐdd       ei e8ej                   e9ddA      i      ddd      fB	       end?dC e!ej`                  ej
                         e)ej                  ej
                        ed]dd]d ei e8ej                   e9d@d@      i      dȐdd       ei e8ej                   e9ddA      i      ddd      fD
       endE e!ej`                  ej
                         e)ej                  ej
                        ed]dd]d ei e8ej                   e9d@d@      i      dȐdd      fB	       endEdC e!ej`                  ej
                         e)ej                  ej
                        ed]dd]d ei e8ej                   e9d$d3      ej                   e9d@d@      i      dȐdd       ei e8ej                   e9d$d3      ej                   e9d@d@      i      ddd      fD
       endFdGej                   e"ej
                  ej&                  ej                         e)ej                  ej
                         eedHI       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dJdK      gd]ddd]L       endFdM e"ej
                  ej&                  ej                         e)ej                  ej
                         eedNI       eie
j                  dd      gdd]g ddd]O       endPd7 e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        edddQ       endPd9 e#ej                  ej
                  ej&                        dddʐedR       endS e       eddd]T       endU e       eddd]T       edTdVdW e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        dddej
                  d] eie
j                  dd/       eie
j                  ddېd      fX       edD e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        ddej
                  d] eie
j                  ddېd      fY       edPdZdW e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        dddej                  d] eie
j                  dd/       eie
j                  ddېd      fX       edC e#ej                  ej
                  ej&                         e)ej                  ej
                  ej                        ddej                  d] eie
j                  ddېd      fY       ed[ej                   e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej                  ej&                        d]dd]\       ed]ej                   e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej&                        d]dd]\       ed^ej                   e"ej&                  ej`                  ej
                         e)ej                  ej
                  ej                  ej&                        d]dd]d_       ed`ej                   e%ej&                         e)ej&                        ej                  ej                  d]d eie
j                  ddېd      fa	       edbej                   e%ej&                         e)ej&                        ej                  ej                  d]d eie
j                  ddېd      fa	       edcej                    e%ej&                         e)ej&                        ej"                  ej$                  d]d eie
j                  ddېd      fa	       eddde  e#ej&                  ej                  ej
                         e)ej                  ej
                  ej                        d]d] eie
j                  dd۫       eie
j                  ddx       ei e
j                  d      dd      ff       edgej&                   e%       d]d]h       ediej(                   e%       d]d] eie
j                  ddej                  f      fj       edkej*                   e"ej&                  ej                  ej
                        eed]d]d] eie
j                  ddej                  f       eie
j                  dd۫       eie
j                  ddx       ei e
j                  d      dd      fl	       endmdndmdo eej`                  ej
                         e)ej                  ej
                        edddddʐp       endmdndqdm e"ej&                  ej                  ej
                         e)ej                  ej
                         eedʐr      ddddʐs       endoej,                  j.                  j0                  do eej
                  ej                        edddd] eie
j                  ddej                  f      ft
       endudv eej`                  ej
                        ed]d]ddd]w	       endudqdv e"ej                  ej
                         eedʐr      d]ddd]x	       endy eej                  ej
                        ed]dd ei e8ej                   e9dd      i      ddd,      f eie
j                  ddd       ei e
j                  dz      ej`                  fdw      f{       end| e!ej`                  ej
                        eddʐ}       end~
d:d e#ej&                  ej                  ej
                         e)ej                  ej
                  ej                  ej                        e.fd]edec       end e"ej&                  ej                  ej
                  ejb                         e)ej                  ej
                  ej                  ej                  ej&                        d]ddd]e eie
j                  ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d       ei e
j                  d      d      f	       endd e"ej&                  ej                  ej
                  ejb                         e)ej                  ej
                  ej                  ej                  ej&                        d]ddd]e eie
j                  ddի       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  ej                  f       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      d       ei e
j                  d      dd-       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd6      f
       end e"ej&                  ej                  ej
                  ejb                        dddd]e eie
j                  ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d       ei e
j                  d      d       eie
j                  dd      f       end e"ej&                  ej                  ej
                  ejb                        d]ddd]ee ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dȐd      f	       endde eej`                  ej
                         e)ej                  ej
                        d]ddʐee ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e8ej                   e9dAd      i      dȐdd,      f       endd eej                  ej
                         e)ej                  ej
                        dddʐdYdQgdYdQge eie
j                  ddd,       eie
j                  ddd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e8ej                   e9d%d%      i      dd      f       endd eej                  ej
                         e)ej                  ej
                        dddʐdYdQgdYdQge eie
j                  ddd,       eie
j                  ddd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e8ej                   e9d%d%      i      dd      f       endej,                  j.                  j2                  d eej                  ej
                        dddʐdYdQgdYdQge eie
j                  ddd,       eie
j                  ddd       ei e
j                  d      dd       eie
j                  dd       ei e8ej                   e9d%d%      i      dd       eie
j                  ddՐd       eie
j                  dd9d       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd      f
       endd eej`                  ej
                        d]dd ei e8ej                   e9dd      i      ddd      ge͐       end eej`                  ej
                         e)ej                  ej
                  ej                        d]ddeNexew	       end eej`                  ej
                         e)ej                  ej
                  ej                         eie
j                  dd      fd]ddeNezey
       end eej`                  ej
                         eej`                  ej
                         e)ej                  ej
                  ej                         eie
j                  dd      fdd]ddeNe|e{       end eej`                  ej
                        d]ddd]eNe~e}	       end eej`                  ej
                         eie
j                  dd      fd]ddd]eNee
       end eej
                  ej`                         eie
j                  dd      fd]ddd]eNee
       endddd]dd eej                  ej                  ej
                         eej                  ej
                         e)ej                  ej
                  ej                        eNee       enddddd eej                         eej                  ej
                         e)ej                  ej
                  ej                        eNee eie
j                  ddd,      f       endddddd] eej`                  ej
                         e)ej                  ej
                  ej                        eNeU ei e
j                  d      ddej                  f      f       eddd dddddd e#ej`                  ej
                         e)ej                  ej
                  ej                        ed]ddʐ       end eeej4                  j6                  j8                        dd e!ej                  ej                  ej
                         e!ej                  ejb                  ej
                        edddeN ei e8ej                   e9dd      i      ddd       ei e8ejb                   e9dd      i      dd       ei e8ej                   e9dd      i      dd       ei e8ej`                   e9dd      i      ddd,      f ei e
j                  d      ddej                  f       eie
j                  ddej                  ej                  f       eie
j                  ddej                  f       eie
j                  dd[ej                  f      fd]       en
d;dd eeej4                  j6                  j:                         e!ej                  ej                  ej
                         e)ej                  ej
                         e!ej                  ejb                  ej
                        eddddeN ei e8ej                   e9dd      i      ddd       ei e8ej                   e9d
d%      i      ddՐd       ei e8ejb                   e9dÐdÐ      i      dd       ei e8ej`                   e9ddĐ      i      ddd,      g ei e
j                  d      dd       eie
j                  ddej                  ej                  f       eie
j                  dd[ej                  f       eie
j                  dd[ej<                  ejd                  f       ei e
j                  d      dd       eie
j                  dŐdej                  ej                  f      fd]dǜ endȐdɐd eeej4                  j6                  j>                         e!ej                  ej                  ej
                         e!ej                  ejb                  ej
                        eddddeN ei e8ej                   e9dd      i      ddd       ei e8ej                   e9dd      ej                   e9dd      i      ddd       ei e8ej                   e9dːdː      i      ddd       ei e8ej                   e9dd      ej                   e9dd      i      ddՐd       ei e8ej                   e9dd
      i      dddeA       ei e8ej                   e9dd      i      ddd       ei e8ejb                   e9d̐d̐      i      dd       ei e8ej`                   e9d3d͐      i      ddd,      g ei e
j                  d      dd       eie
j                  dd[ej                  f       eie
j                  dd[ej<                  ejd                  f       ei e
j                  d      dd       eie
j                  ddej                  ej                  f       ei e
j                  dΫ      ddej                  geF<      fd]ϫ       en
d<dАd e!ej                  ej                  ej
                         e!ej                  ejb                  ej
                         e)ej                  ej
                        eedddeN ei e8ejb                   e9dd      i      dd       ei e8ej                   e9dAd      i      ddd      f ei e
j                  d      dd       eie
j                  dŐdej                  ej                  f       eie
j                  ddej                  ej                  f      fdd]dҜ en
d=i ddӓdԐdՓd e!ej                  ej                  ej
                        d e!ej                  ejb                  ej
                        d  e)ej                  ej
                        d ee      dאedeNddʓddʓddʓddʓd" ei e8ejb                   e9dېd      i      dd       ei e8ej                   e9dd      i      dd      fd& ei e
j                  dܫ      dd       eie
j                  dŐdej                  ej                  f       eie
j                  ddej                  ej                  f      fddʓdd] en
d>dߐd e!ej                  ej
                  ej                         e!ej                  ejb                  ej
                         e)ej                  ej
                        eeeNddd ei e8ejb                   e9dېd      i      dd       ei e8ej                   e9dd      ej                   e9dd      i      ddի       ei e8ej                   e9d%d      i      dd       ei e8ej                   e9d%d      i      dd       ei e8ej                   e9dd      i      dd      f ei e
j                  d      dd       eie
j                  ddej                  ej                  f       ei e
j                  d      dd      fdd]d enddde eej                  ej
                        d]ddʐe eie
j                  ddej                  f       ei e8ej                   e9d%d      i      dȐdd,      geedʐ       end eej                  ej
                         e)ej                  ej
                        d]ddʐddg eie
j                  ddej                  f      gedʐ
       endddde eej`                  ej
                        d]ddd ei e8ej                   e9dld      i      dd       ei e
j                  d      dd      gedʐ       enddde e!ej`                  ej
                        d]ddʐee
       end eej                  ej                  ej
                         eej                  ej
                        d]dd eie
j                  ddej                  f      ge       enddd e"ej&                  ej
                  ej`                        ed] eie
j                  ddej&                  f      f       endddddd e"ej&                  ej
                  ej`                         ee֐d      d]	       endddd e"ej
                  ej`                         ee֐d       ei e
j                  d      ddej                  f      feNd]	       endd dd e"ej`                  ej
                         ee֐d        ei e
j                  d      ddej                  f      feNd]	       endddd e"ej`                  ej
                        e ei e
j                  d      ddej                  f       ei e
j                  d      d      feNd]	       endd e"ej&                  ej
                  ej`                         ee֐d      ddd]d] ei e
j                  d      ddej                  f       ei e
j                  d      dȐd      fd]
       endddddʐe eej
                  ej`                        dddd]dg	       end
d e!ej`                  ej
                  ej&                         e!ej`                  ej
                  ej&                        edddd] ei e
j                  d      dd      f
       endddddd eejx                  ej`                  ej
                         eed       eie
j                  dd      fd]
       endddddd eej`                  ej
                  ejx                         eed       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dÐdū       eie
j                  d      fd]
       endddddd eej`                  ej
                         eed       eie
j                  dd      fd]
       endddddd eejx                  ej`                  ej
                         eej`                  ej
                        eN eed       eed       eie
j                  dd      fd]       endddddd eejx                  ej`                  ej
                         eej`                  ej
                         eed       eed      eN eie
j                  dd      fd]       endddddd eej`                  ej
                        eN eed       eie
j                  dd      fd]       endddddd eej`                  ej
                         eej`                  ej
                         eed      eN eie
j                  dd      fd]       endddd eejx                  ej`                  ej
                         eej`                  ej
                        eN eed       eed       eie
j                  dd      fd]       end ej,                  j.                  j@                  d ddd eejx                         eej`                  ej
                        eN eed      d] eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd      f!       end" eej`                  ej
                        d]d eeNd]#      eb$       end%ddd eejx                  ej`                  ej
                        eN eed       eie
j                  dd      fd]&	       end' e#ej`                  ej
                        d]eeeddʐ(       end) e        eej
                  ej                        d]d]eee ei e8ej                   e9dd      i      dd      f*	       end+ e        eej
                  ej                        d]d]eee,       end-dd.d/e eej
                  ej                        
d?d0dddd]ddʐd1g2       end3d] eej`                  ej
                        edd ei e8ej                   e9dd      i      dd       ei e8ej                   e9dĐd4      i      ddd      f ei e
j                  d      ddd      f5       end6d7ddd eej                  ej                  ej
                         eej                  ej
                        ee eie
j                  ddd      f8
       end9dd]ddʐd: d] eej
                  ej                        d]e eie
j                  dd       eie
j                  dd      f ei e
j                  d      dd      f;       end<dd]ddʐd= d] eej
                  ej                        d]eNe eie
j                  dd       eie
j                  dd      f ei e
j                  d      dd      f>       end?d@dd]ddd]d] eej
                  ej                         eej                  ej
                         ei e
j                  dA      ddej
                  f       ei e
j                  d      dߐd      feeB       endCdDdd]d]ddd]d e#ej                  ej
                         eej                  ej
                        eeE       en
d@edddddd]d]ddd]d] eej
                  ej                        e ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       eie
j                  dd      fdF endGdHdd]ddd]d] e#ej
                  ej                         eej                  ej
                        eNeeI       endJdKdddd]d] eej                  ej
                        ev ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddeI        ei e
j                  d      ddd,       ei e
j                  d      dȐdL      fM
       endJdNdKdddd]d] eej                  ej
                        ewO
       endPdQdddd]d] eej                  ej
                        ev ei e
j                  d      ddeI        ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dȐdL      fM
       endPdNdQdddd]d]d] eej                  ej
                        ewR       endSdTdddd]d] eej                  ej
                        ev ei e
j                  d      ddeI        ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dȐdL      fU
       endSdNdTdddd]d] eej                  ej
                        ewO
       endVdddʐe e"ej                  ej
                         e!ej                  ej
                         e!ej                  ej
                         e!ej                  ej
                        eNddd]d eie
j                  dd      fW       endXddʐe e#ej                  ej
                         eej                  ge=seFrej
                  gng   ei e8ej                   e9dAd4      i      ddd,      f ei e
j                  d      dd de=        ei e
j                  d      ddej
                  f      fdddd]Y       endZd[dʐe eej
                  ej                        ddd]\       ed]d^
dAd_ eej
                  ej                        dddd]dd]d` 
d2da ei e8ej                   e9dd      ej
                   e9dd      i      dd      gb       edcddde  eej
                  ej                        dddd]dd]eeee eie
j                  dd      gf       edg
dAdh eej
                  ej                        dddd]dd]di 
d2dj ei e8ej                   e9dd      ej
                   e9dd      i      dd      gk       e	 
dBdldm dn  eej
                         eej                  ej
                        eSddd]do e[e\ ei e8ej                   e9dd      ej
                   e9dd      i      dd      f eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  dp      dd       ei e
j                  dp      ddī       ei e
j                  dp      dd       ei e
j                  dp      dd       ei e
j                  d      dd      fdʐdq edr
d'ds eej
                  ej                        dddd]dd]dt  ei e8ej                   e9ddu      ej
                   e9ddu      i      dd      gv       endwee e&        e&       ejB                  fz   dd]d] e5e? xs eFdx      g ei e
j                  d      dd d       ei e
j                  d      ddejB                  f      fy	       endz e#ej`                  ej
                  ej&                        eddddd]d]g  eie
j                  dd      f{       end|d} ef eej                  ej
                        d]d]dd] ei e8ej                   e9d%d      i      d      g ei e
j                  d      ddӐd       ei e
j                  d      dd d eB       d~k\         ei e
j                  d      ddej                  f       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddd,       ei e
j                  d      ddd,       ei e
j                  d      ddd,       ei e
j                  d      ddd,       ei e
j                  d      ddӐd,       ei e
j                  d      dd       ei e
j                  d      dȐd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dddej
                  fe> I       ei e
j                  d      dddej
                  ej                  ej                  feFxr e<I      f
       endeh e&       e>s e)ej                        n e)ej                  ej
                        d]dd]d]d] e5e; d      g eie
j                  ddd       eie
j                  ddՐd       eie
j                  ddd       eie
j                  ddӐd      f       endeg e&       e>s e)ej                  ej                        n* e)ej                  ej                  ej
                        d]dd]d]d]d e5e< d       e5eFd      g eie
j                  ddd       eie
j                  ddՐd       eie
j                  ddd       eie
j                  ddӐd      f       edd
d'd eej
                  ej                        ddddd]d  ei e8ej                   e9dd      ej
                   e9dd      i      dd      g ei e
j                  d      ddejf                  fd,      fdg       eddv
d'd e        e       d]d]d]d]d  ei e8ej                   e9dd      ej
                   e9dd      i      dd      g ei e
j                  d      ddejf                  f       eie
j                  dd        ei e
j                  d      ddej                  ejd                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  f      f       edde eej
                  ej                        dd]d]dd] eej4                  j6                  jD                  dʐ       ei e8ej                   e9dd      i      dd      g eie
j                  dd       eie
j                  dddeF      g       eddde eej`                  ej
                        dd]ddd ei e6ej                  dej
                  di      dd       ei e6ej                  dej
                  di      dd       ei e6ej                  dej
                  di      dd      g eie
j                  ddd,      f       eddd  eej
                  ej                        dddd]dd] eej4                  j6                  jF                  dʐ       ei e8ej                   e9dd      i      d      g       edd  e"ej                  ej
                         e"ej                  ej
                  ej&                        dddd]dd] ei e8ej                   e9dd      i      d      g ei e
j                  d      ddej<                  ej                  f      f       edd  e"ej`                  ej
                        dddd]dd] ei e
j                  d      ddd,ejf                  ejd                  g       ei e8ej
                   e9dd      i      d       ei e8ej                   e9ddl      ej
                   e9dd      i      ddd      g ei e
j                  d      ddej                  ej                  feI<       ei e
j                  d      ddej                  ej                  fd,eIxs eH~      f emd d              edd  e#ej`                  ej
                        d ddd]dd]d et       endeced e"ej`                  ej
                        d]ddʐ       end eecdʐ      ed e"ej`                  ej
                        d]dd eie
j                  dd       eie
j                  dd      f       ed eej
                  ej`                        d]d]       endd  e"ej
                  ej                  ej&                        ddd]e ei e
j                  d      ddd,       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end e#ej
                  ej                        dddʐe       endd eej                  ej
                        d]dddddgddge eie
j                  dd       ei e
j                  d      ddd,ej
                  ej                  f       ei e8ej                   e9d%dl      i      ddd,      f       enddd e&        eej                  ej
                        d]ddddgddge-e/g ei e8ej                   e9dd      i      dd      feА       enddÐem eej                  ej
                         eej                  ej
                        d]d]ddd ei e
j                  d      d5       ei e
j                  d      dd       ei e
j                  d      ddd       ei e8ej                   e9dd      i      dd       eie
j                  dd       eie
j                  dd       eie
j                  dd9      f eie
j                  dd      fī       ed eej
                  ej                        d e       d]d] eie
j                  dd/      fǫ       ed eej
                  ej                        d e       d]d] eie
j                  dd/      fʫ       edːd̐d eej
                  ej                        ddd]eeΫ	       edϐdАd eej
                  ej                        dʐeddʐdgӫ	       edԐdՐd eej                  ejv                  ej                  ej                  ej`                  ej
                         e#ej`                  ej
                         eej                  ej
                        dʐeed]ddʐdgث       endِdڐdeJrendeddʐe eej
                  ej`                        dddʐdg ei e
j                  d      dd       ei e
j                  d      dd      fݫ       edސd e#ej`                  ej
                         eej`                  ej
                        dd]ddʐdg	       end e"ej                  ej
                         e!ej                  ej
                        ddde ei e
j                  d      ddej                  ej                  f      f       endejH                   e#ej                  ej
                  ej&                        dd eie
j                  dd       ei e
j                  d      ddej                  fd      feŐ       edd e       d        edd e       d        edd e       d        edejJ                  d e"ej&                  ej
                  ej                        dd]d	       end e"ej&                  ej
                  ej                  ejb                        d]dd eedʐ       eedʐ       eedd]       eie
j                  dd       eie
j                  ddӫ       eie
j                  dd       eie
j                  dd       eie
j                  dd      f	       end e"ej&                  ej
                  ej                  ejb                        dd]d]d] eed]       eed]       eed]d]       eie
j                  dd       eie
j                  dd       eie
j                  ddd       eie
j                  ddd       eie
j                  ddd       eie
j                  dd9      f
       end e"ej&                  ej
                  ej                        d ddddʐe1e3 eie
j                  dd9      f
       eddejL                   e"ej`                  ej
                  ejb                        eddddddddʐ       endejN                   e!ej`                  ej
                        dd]dd]dʐe	       endejP                  d e"ej&                  ej                  ej
                        ddd]e        endejR                   e        dd]d]eܐeUe2e3g eie
j                  dd      f
       endejT                   e"ej&                  ej                  ej
                  ejb                        d]dg g ddddʐee       end e"ej&                  ej                  ej
                  ejb                        dddddd]ee eie
j                  ddej                  f      f       e
dC e"ej`                  ej
                         e"ej`                  ej
                  ejb                        ejV                   e!ej`                  ej
                         e!ej
                  ej`                  ejb                        dd]dddd ed C       ed C       ei e8ej                   e9dd      i      dd       ei e8ej                   e9dd      ej                   e9dd      i      dd      f eie
j                  ddej                  ejv                  ej                  ej                  g       eie
j                  ddejv                  ej                  ej                  g       ei e
j                  d      dȐdej                  feF<       ei e
j                  d      dȐdej                  f       ei e
j                  d      ddej                  feF<       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  ej                  ej                  f       ei e
j                  d      ddej                  ej                  ej                  f       ei e
j                  d      ddej                  ej                  ej                  f      fd	 ed
ejX                   e"ej`                  ej
                  ej&                        ddddd ed C       ed C       ei e8ej                   e9dd      ej                   e9dd      i      dd      f ei e
j                  d      dd۫       ei e
j                  d      dd       ei e
j                  d      ddej                  ej                  g       ei e
j                  d      ddej                  ej                  g       ei e
j                  d      ddej                  ej                  g       eie
j                  ddej
                  ej                  ej                  g      f       endejZ                   e        eddd]e2e3g       edej\                   e6ej
                  dej                  di      f e#ej&                  ej`                  ej
                        ddddddddʐ       edej^                   e"ej&                  ej
                  ej`                  ejb                        d]ddd] eie
j                  dd      f        endej`                   e"ej&                  ej
                  ej`                  ejb                        ed]ddʐee.f	       end e"ej&                  ej
                  ej`                        edd]ddʐe       ed&ejb                  d e#ej`                  ej
                        dd eie
j                  dd ed  e(       D                     ei e
j                  d      ddej
                  f      fddddddʐ       ed&ejb                  dd eej`                  ej
                        d  eedd i      ddd]d]       ed&ejb                  dd eej
                         eej`                  ej
                        d  eeddYi       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d       ei e8ej
                   e9dd      i      ddd       ei e8ej
                   e9dd      i      ddd      fddd]d]       ed&ejb                  dd eej
                         eej`                  ej
                        d   eedd!i       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      d      fddd]d]       e
dDejd                   e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                        dd]dddddddd ei e
j                  d      ddejd                  fd       ei e
j                  d      ddejf                  ejd                  fd,eH~       ei e
j                  d      ddejf                  ejd                  fd,eH~       ei e
j                  d'      dd(      f e6ej
                  di      fd" ed#e8d$ e"ej&                  ej`                  ej
                        d]dddʐ%       ed eejf                         e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                        ddddddddd e6ej                  di      f ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddejd                  f       ei e
j                  d      ddd,ej                  g       ei e
j                  d'      dd(      f&       ed0e e#ej&                  ej
                  ej`                         e#ej&                  ej
                  ej`                        ddddddd ei e
j                  d      ddej
                  ej                  ej                  ej                  g      f'       ed(e e"ej&                  ej
                  ej`                  ejb                         e!ej
                  ej`                         e!ej
                  ej`                  ejb                        ddddddd ei e
j                  d      ddej
                  ej                  ej                  ej                  g       ei e
j                  d'      dd(      f)       end* e"ej
                  ej`                  ej&                  ejb                         eed]      ddd]g g dʐ+	       end*d,d- e"ej
                  ej`                  ej&                         eedʐ      ddd].       end/ e"ej
                  ej`                  ej&                  ejb                         eed]      ddd]g g dd]0
       end, e"ej
                  ej`                  ej&                  ejb                        eg g d]dddʐ1	       end2 e"ej
                  ej`                  ej&                  ejb                        eddd eie
j                  dd3      f4       ed5ejT                  jh                   e"ej
                  ej`                  ej&                        d] eie
j                  dd       eie
j                  dd      fdddʐdg6	       ed7ejT                  jj                   e"ej
                  ej`                  ej&                        dʐddidd] eie
j                  dd۫       eie
j                  dd       eie
j                  dd      fdddʐd8d9g:       ed;ejT                  jl                   e"ej
                  ej`                  ej&                        d] eie
j                  dd       eie
j                  dd      fdddʐd8g6	       ed<ejT                  jn                   e%ej&                        d]d]d eie
j                  dd      f=       ed>ejT                  jp                   e%ej&                        d]d]d eie
j                  dd      f=       ed?ejT                  jr                   e%ej&                        d]d]d eie
j                  dd      f=       end@ejT                  jt                   e"ej
                  ej                         e!ej                  ge=seFrej
                  gng  d eedʐ4      dd]ddd] ei e
j                  d      dd de=        ei e8ej                   e9dld      i      dd       ei e8ej                   e9dld      i      ddի       ei e8ej                   e9dldl      i      dȐddeF      f eie
j                  dd       eie
j                  dd       ei e
j                  d5      ddՐd,ej                  f       ei e
j                  d      dȐdej                  f       ei e
j                  d      ddd,ej                  f      fA       edBejT                  jv                   eej
                  ej`                         e#ej
                  ej`                        dd]ddd eie
j                  dd       eie
j                  dd      fdʐdCgD       edEejT                  jx                   e"ej
                  ej`                         e"ej
                  ej`                        d]ddd eie
j                  dd       eie
j                  dd       ei e
j                  d      d       ei e
j                  d      d      fdʐdFgG       edHejT                  jz                   e"ej
                  ej`                        ddd]d eie
j                  dd       eie
j                  dd      fdʐdIgJ
       edK e"ej
                  ej`                        ddd]d]deL       endMdN e"ej
                  ej`                  ej&                  ejb                        e9dddd]O       endP e#ej
                  ej`                  ej&                        e:ddd]       endQej,                  j.                  j|                  jT                   e"ej
                  ej`                  ej&                  ejb                        edddd]d]d]R
       endS e#ej
                  ej`                  ej&                        e;ddddʐT       edUej~                   e#ej&                  ej
                  ej`                        dddddd]V	       e
dEej                   e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         ei e8ej                   e9ddl      i      ddd      fddddddddd ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d'      dd(       ei e
j                  d      ddej                  fd      f emdW ej                        dX e
dFi dej                  dYdZdd[d" e6ej
                  di       ei e8ej                   e9dd
      i      ddd      fd e"ej&                  ej`                  ej
                        d e"ejb                  ej&                  ej`                  ej
                        d!dʓddʓddʓddʓddʓddʓddʓddʓddʓddʓd& ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d'      dd(      fd\ emd] d        end^ej                   e"ej&                  ej
                  ej                         e"ej&                  ej
                  ej                        d]dd eie
j                  dd       eie
j                  ddӫ       eie
j                  dd      fe_	       end` e"ej                  ej&                  ej
                  ej                        d]ddd]eeĐa       endb e"ej                  ej&                  ej
                  ej                        d]ddd]eeŐa       endc e"ej                  ej&                  ej
                  ej                        d]ddd]eeƐa       enddej                   e        ed]ddʐde e0e3 ei e8ej                   e9dfdg      i      ddd,      g eie
j                  dd       eie
j                  dd e               ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g      fh
       ed*diej                   e#ej`                  ej
                        ddd eie
j                  dd edj  e(       D                    fdddddʐk       edldm eej                         e"ej&                  ej`                  ej
                        ddd ei e
j                  d      ddejd                  g       ei e
j                  d      ddd,ejf                  ejd                  geHI      fn       ed#do eej                         e"ej&                  ej`                  ej
                        ddddddddd ei e
j                  d      dddej                  g       ei e
j                  d'      dd(      fp       edqej                   e#ej`                  ej&                  ej
                         e#ej`                  ej&                  ej
                        ddd ei e
j                  d'      dd(      fdr s	       ed( eej                         e"ej&                  ej`                  ej
                        dddd ei e
j                  d      ddejf                  ejd                  g      ft       eddu d e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                         e6ej`                  di      fdddd ei e
j                  d      ddejf                  ejd                  f       eie
j                  ddejb                  f      fv       e
dGej                  dʐd e"ej&                  ej`                  ej
                         e"ejb                  ej&                  ej`                  ej
                        dddddddd e6ej
                  dwi       ei e8ejb                   e9dd       i      dd      f ei e
j                  d      ddd,ejf                  ejd                  feII       ei e
j                  d'      dd(      fdx edyej                   e"ej&                  ej                  ej
                         e6ej                  d	ej
                  di      fdd ei e
j                  d      ddejf                  ejd                  g       ei e
j                  d      dddejf                  ejd                  g       eie
j                  ddej&                  g       eie
j                  ddej&                  g       eie
j                  ddej&                  g      fz       endX e!ej
                  ej`                         e!ejb                  ej`                  ej
                        edddʐ{       ed|ej                   e"ej&                  ej
                  ej                         e"ejb                  ej&                         e6ej                  dej
                  di      f e!ej
                  ej                         e!ejb                        ddddddd eie
j                  ddej
                  ej                  ej                  ej                  f      f}       ed~ej                   e"ej&                  ej
                  ej                  ejb                        d]d]       edej                   e"ej&                  ej
                  ej                  ejb                        d]dddddd]
       edej                   e#ej&                  ej
                  ej                        dddddd]V	       edej                   e#ej&                  ej
                  ej                        dddddd]V	       edej                   e"ej&                  ej
                  ej                  ejb                        d]d]       edej                   e"ej&                  ej
                  ej                        d]dddddd]
       endd  e"ej`                  ej
                         e!ej`                  ej
                         e!ej`                  ej
                        d]ddd]e eie
j                  dd       ei e
j                  d      dd      f       endej                   e        edddd]d]d]e1e3e@g ei e
j                  d      ddej                  ej                  f       ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g      f       endd  e        dd]d]d]d]ddʐe5e2e3e@ ei e8ej                   e9dd      ej                   e9dd      i      ddի       ei e
j                  d      ddej                  g      g eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  ddej                  ej                  f       eieOdd      f       endd  e        dd]d]d]d]ddʐe7e2e3e@ ei e8ej                   e9dd      ej                   e9dd      i      ddի       ei e8ej                   e9dld%      i      dd       ei e
j                  d      ddej                  g       ei e8ej                   e9dfd      i      ddd      g eie
j                  dd       eie
j                  dd       eie
j                  ddej                  ej                  f       ei e
j                  d      dd      f       ed e       d ed C      d] ei e
j                  d      dd۫       eie
j                  ddx       eie
j                  dd      f       edd deJrend e#ej&                  ej`                  ej
                         e#ej&                  ej`                  ej
                        ddde eie
j                  dd      fd  emd d            d dD         endej                   e"ej&                  ej                  ej
                  ejb                        d]ddd]e'8       endej                   e%       d]d]e(       end e"ej&                  ej                  ej
                  ejb                        e1e2e3d]ddʐ       endd  e"ej&                  ej                  ej
                  ejb                         ee1dʐ       ee2dʐ       ee3dʐ      d]dd eie
j                  dd      f
       endd  e"ej                  ej&                  ej                  ej
                        d]dddʐe1e2e3 eie
j                  dd       eie
j                  dd9      f       endd  e"ej                  ej&                  ej                  ej
                        d]dd ee1dʐ       ee2dʐ       ee3dʐ       eie
j                  dd       eie
j                  dd9      f
       end e"ej                  ej&                  ej                  ej
                        dd]ddd]e4 eie
j                  dd       eie
j                  ddej                  g      f	       end e"ej                  ej&                  ej                  ej
                        dd]ddd] eie
j                  dd       eie
j                  ddej                  g      fe4	       end e"ej                  ej&                  ej                  ej
                        dd]ddd] eie
j                  dd       eie
j                  ddej                  g      fe4	       end e"ej&                  ej                  ej
                  ejb                        ed]ddd]e6e7	       endej                   e"ej&                  ej                  ej
                  ejb                        d]ddʐe8       end e"ej&                  ej                  ej
                  ejb                        ddd]e5       endej                   e        d]d]ddeNd]ee1e3g ei e
j                  d      dddwej                  g       ei e
j                  d      dddwej                  g      f       end e"ej&                  ej                  ej
                         e"ej&                  ej                  ej
                        eOeNddʐeQ       end e"ej&                  ej                  ej
                  ej                        d]ddd] eie
j                  dd       eie
j                  dd      fe eedʐ      	       end e"ej&                  ej                  ej
                  ej                        dddd]e eedʐ      eN	       end e"ej&                  ej                  ej
                  ejb                         e!ej                  ej
                  ejb                        e eedʐ      e_dddeNë
       end e"ej&                  ej                  ej
                  ejb                        dddd]e eedʐ      e` eie
j                  ddej&                  f      feNū      dƄ dD         end e"ej                  ej
                  ej&                        d]d]d]ddʐe ei e
j                  d      dd       eieOdȐdLej                  feH<      fɫ	       end e"ej                  ej
                  ej&                        d]d]d]dd ei e8ej                   e9dAdː      i      ddd,      fe eieOdȐdLej                  feH<      f̫
       end e"ej&                  ej                  ej
                  ejb                        dd]ddd]d]ejT                  j                   eie
j                  dd       ei e
j                  d      ddd      feqΫ       end e"ej&                  ej                  ej
                  ejb                        d]dddd]d]er ei e
j                  d      ddej                  gdeFxr eQ~      fЫ
       end e#ej&                  ej                  ej
                         e#ej&                  ej                  ej
                        esdd eie
j                  dd-ej&                  gdeF ~      fҫ       end e#ej&                  ej                  ej
                  ej                  ej                  ej                        eud]d] eie
j                  dd       eie
j                  dd       ei e
j                  dԫ      dd      fի       end e#ej&                  ej                  ej
                        evd]d] eie
j                  dd       eie
j                  dd      fի       end e"ej&                  ej                  ej
                        d]ddd]d]eƐث       end e"ej&                  ej                  ej
                        d]ddʐeǐeRګ       end e"ej&                  ej`                  ej
                        ddʐe#eSܫ       edݐdބ  e"ej&                  ej`                  ej
                  ejb                        d]e= eie
j                  d       eie
j                  d       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f߫       edd  e"ej&                  ej`                  ej
                  ejb                        d]e=d] eie
j                  dd       eie
j                  dd      f       edd  e"ej&                  ej`                  ej
                        d]e>d] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edd  e"ej&                  ej`                  ej
                  ejb                        d]e=d] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edd  e"ej&                  ej`                  ej
                  ejb                        d]e=dd eie
j                  dd       eie
j                  dd      f       edd  e"ej&                  ej`                  ej
                  ejb                        d]e= eie
j                  d       eie
j                  d       eie
j                  dd       eie
j                  dd      f߫       edd  e"ej&                  ej`                  ej
                        d]e=d eie
j                  d       eie
j                  d       eie
j                  dd       eie
j                  dd      f       edd  e"ej&                  ej`                  ej
                        d]e=d] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edd  e"ej&                  ej`                  ej
                  ejb                        d]e=d] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edd  e"ej&                  ej`                  ej
                        d]e=d] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edejT                  jd                   e"ej&                  ej`                  ej
                  ejb                        d]e=dd eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       edejT                  jf                   e"ej&                  ej`                  ej
                  ejb                        d]e= eie
j                  d       eie
j                  d       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f߫       edd  e"ej&                  ej`                  ej
                  ejb                        d]e= eie
j                  d       eie
j                  d       eie
j                  dd       eie
j                  ddd,       eie
j                  dd       eie
j                  ddd,       eie
j                  ddd,       eie
j                  dd      f߫       end e"ej&                  ej`                  ej
                  ejb                        d]eed] ei e
j                  d      dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d5       ei e
j                  d      dd       ei e
j                  d      dd-       ei e
j                  d      dd       ei e
j                  d      dd      f       end e"ej&                  ej`                  ej
                  ejb                        d]ed]e eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫      d       end e"ej&                  ej`                  ej
                  ejb                        d]ed]d       end  e!ej`                  ej
                  ej                        d ded] ei e
j                  d«      ddի       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū       eie
j                  ddd,       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dȐdɫ      f       end e!ej`                  ej
                  ej                        d d]ed]e eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫       eeej                  ߫       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end eej`                  ej
                  ej                  ej                  ej                        d d]ed] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end	 e#ej`                  ej
                        d
 d]ed] ei e
j                  d«      ddի       ei e
j                  d«      dÐdī       ei e
j                  d«      dÐdū       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      ddej                  ej                  geF<      f       end e#ej`                  ej
                        d d]ed] eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f       end e"ej&                  ej`                  ej
                        d]e$d]d       endd  e"ej&                  ej`                  ej
                  ejb                        d]e eie
j                  dd      fd]       endd  e"ej&                  ej`                  ej
                  ejb                        d]e eie
j                  dd      fd]       endej                  d]dd e"ej&                  ej`                  ej
                  ejb                        de eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd      f	       endej                  d]d e"ej&                  ej`                  ej
                  ejb                        de eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd      f       endej                  d]d e"ej&                  ej`                  ej
                  ejb                        de eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  ddej&                  f      f       endd  e"ej&                  ej`                  ej
                  ejb                        d]e eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d5       ei e
j                  d      dd-       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      fd]       endd  e"ej&                  ej`                  ej
                  ejb                        d] eedʬw      d] eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd-       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dȐd       ei e
j                  d      dȐdɫ       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end d!  e"ej
                  ej&                  ej`                        d]d]e eie
j                  dd       eie
j                  dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd-       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d"      dd       ei e
j                  d"      d       eie
j                  dd       eie
j                  dd       eie
j                  dd9      f#       end$ e"ej&                  ej`                  ej
                  ejb                        ed] eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d5       ei e
j                  d      dd-       ei e
j                  d"      dd       eie
j                  dJdK       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      d       ei e
j                  d"      dd       ei e
j                  d      dd      f%       end& e*ej&                  ej`                  ej
                        e!e"dd] eie
j                  dd       eie
j                  dJdK       eie
j                  dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  ddejB                  ej                  ej                  ej                  f      f
'       end( e"ej&                  ej`                  ej
                  ejb                        eed]d] eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      d5       ei e
j                  d      dd-       ei e
j                  d)      dd       eie
j                  dJdK       ei e
j                  d)      dd       ei e
j                  d)      dd       ei e
j                  d)      d       ei e
j                  d)      dd       ei e
j                  d      dd      f'       end* e"ej&                  ej`                  ej
                  ejb                        e d]d] eie
j                  dd       eie
j                  dJdK       eie
j                  dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f+       end,d-  e"ej&                  ej`                  ej
                  ejb                        d]e# eie
j                  dd      fd]       end.d/ d0  eej
                  ej`                        dʐe%eY eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      fd]1	       endҐd2 d eej
                  ej`                         eej
                  ej`                        dʐe' eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d3      d       ei e
j                  d3      d       ei e
j                  d      dd       ei e
j                  d      dȐd       ei e
j                  d      dȐdɫ       ei e
j                  d      dd9      f
4       endҐd5d6 d eej
                  ej`                         eej
                  ej`                        dʐe( eie
j                  dd       eie
j                  dd       ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddӫ       ei e
j                  d      dd       ei e
j                  d      d       ei e
j                  d      d       ei e
j                  d      dd       ei e
j                  d      d7       ei e
j                  d      d       ei e
j                  d      dȐd       ei e
j                  d      dȐdɫ       ei e
j                  d      dd       ei e
j                  d      d8d9      f:	       end;d< dd=  eej
                  ej`                        dddʐe)e* eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      f>       end? e"ej&                  ej`                  ej
                        e$eSddʐ@       endA e"ej                  ej&                  ej                  ej
                        eAddd eie
j                  dd       eie
j                  dd      fB       endC e"ej                  ej&                  ej                  ej
                        eBeCd]dʐD       endE e"ej                  ej&                  ej                  ej
                        eJeKddʐ@       edF eej
                  ej`                         eej`                  ej
                        ddd]G       endH e        e       egd] eie
j                  dd       ei e
j                  d      dȐdɐ      fI       endJ e        e       eheid] eie
j                  ddܐd       eie
j                  dd      fK       endL eej
                  ej                         eej                  ejx                  ejv                  ej                  ej                        ejdd] eie
j                  ddd      fM       endN e%       ekd]d] ei e
j                  d      dd      fի       endO e#ej                  ej
                         e#ej
                  ej                        elemend] ei e
j                  dP      dd      fQ       endR e#ej
                  ej                         e#ej
                  ej                        eod]e ei e
j                  dP      dd      fS       endTeHdU e"ej&                  ej                  ej
                  ej                        eDeFeEdddd]d eie
j                  dd       eie
j                  dd/       eie
j                  dd       eie
j                  dd      fV       endW e"ej                  ej&                  ej                  ej
                        eNeLeMdddd]X	       endY e"ej                  ej&                  ej                  ej
                        eNeLeMddddd] eie
j                  ddZ      f[       end\d] e"ej                  ej&                  ej                  ej
                        eJeKdd eie
j                  dd/      f^       end_ e"ej                  ej&                  ej                  ej
                        eJeKddd]`       endadb  e"ej&                  ej                  ej
                  ejb                         e!ej                  ej
                        dd]ddd]d] eie
j                  dd       eie
j                  dJdK      fec       endd e"ej&                  ej                  ej
                  ejb                         e!ej                  ej
                        ddddd]d]ee
       endf e#ej&                  ej                  ej
                         e#ej&                  ej                  ej
                        d]ddʐeg       endhdi e"ej&                  ej                  ej
                  ejb                        d]ddd]eȐeɐeʐj
       endk e!ej                  ej
                        e.eTdd ei e
j                  dl      dȐdd,ej                  f      fm       edndo ej                   e"ej&                  ej                  ej
                        dd]ddʐe eie
j                  dd      fp
       endqe e"ej&                  ej                  ej
                  ejb                        d]dg g dddd]d]eӐr       endqeՐds e"ej&                  ej                  ej
                  ejb                        d]dg g ddd]d]eԐt       endue e"ej&                  ej                  ej
                  ejb                        ddddd]d]e eie
j                  ddej                  f      fv       edwe>de? eedxdi      ddd] e"ej                  ej&                  ej                  ej
                        d] eie
j                  dd       ei e
j                  dy      d5       ei e
j                  dy      d      fz       end{d| dejT                  j                  d] e"ej&                  ej                  ej
                        d]d] eie
j                  dd        eie
j                  dd       ei e
j                  d}      dd      fe0~
       endd dejT                  j                   e"ej&                  ej                  ej
                        d]d] eie
j                  dd        ei e
j                  d      dd      fe0	       end e"ej&                  ej                  ej
                         e"ej&                  ej                  ej
                        d]ddd]ebeN eie
j                  dd9      f
       edej                   e"ej&                  ej                  ej
                        dd]ddʐeː       end e"ej                  ej
                        d]ddd] ei e8ej`                   e9dd      i      ddd      geϐ       end e"ej                  ej
                        d]ddd] ei e8ej`                   e9dd      i      ddd      geϐ       end e"ej
                  ej                        ddd]d] ei e8ej                   e9dĐdĐ      i      dd      feА       end e"ej&                  ej                  ej
                  ejb                        d]ddd]d]ddg g eѐ       end e"ej&                  ej                  ej
                  ejb                        dddd]d]ddg g e eie
j                  dd       eie
j                  ddej                  f      f       edd e#ej&                  ej`                  ej
                        dddd edC             endd dejT                  j                   e"ej&                  ej                  ej
                        dd]ddd eie
j                  dd      fe
       endd e"ej&                  ej`                  ej
                        dddd]ee	       end e$        e"ejb                  ej&                  ej`                  ej
                        e-d]d]ddʐe,	       ende0dd e"ej&                  ej
                  ej`                  ejb                        d]ddd]e/
       endd e"ej&                  ej
                  ej`                  ejb                        dddd]e/ eie
j                  dd       eie
j                  ddej                  f      f	       endd  e"ej&                  ej
                  ej`                  ejb                        d]dd eie
j                  dd       eie
j                  dd      fe2e3	       endd  e"ej&                  ej
                  ej`                  ejb                        d]ddd] eie
j                  dd       eie
j                  dd      fe2	       endd  e"ej&                  ej
                  ej`                  ejb                        dd]dd eie
j                  dd       eie
j                  dd      fe1	       endd d e"ej&                  ej
                  ej`                  ejb                        dd]ddd] eie
j                  dd       eie
j                  dd      fe1       end e"ej&                  ej`                  ej
                  ejb                        ddʐe*e)       end e"ej&                  ej`                  ej
                  ejb                        ddʐe*e)       end eej                  ej                  f      e+d ej                  d,fdd]d] ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end eej                  ej                  f      e+d ej                  d,fdd]d] ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f       end e"ej&                  ej`                  ej
                         e"ej&                  ej`                  ej
                        dd]ddʐe! eie
j                  dd9      f	       end e"ej                  ej
                         e!ej                  ej
                         e!ej`                  ej
                        ddd]e"       end e"ej                  ej
                         e!ej                  ej
                         e!ej`                  ej
                        ddd]e  ei e
j                  d      dJdK      f	       endd e e"ej&                  ej                  ej
                         e        eej                  ej
                        d]ddd]d] ei e
j                  d      ddի       ei e
j                  d      dd        eie
j                  dd       ei e
j                  d}      dd       ei e
j                  d}      ddӫ       ei e
j                  d}      dߐd       ei e
j                  d      dd«       ei e
j                  d      dd-ej&                  geF<      fë       end e!ej
                  ej`                         e!ej
                         e!ej
                        dd eie
j                  ddd       eie
j                  ddej                  g       eie
j                  ddej                  g       ei e8ej                   e9dŐd      i      ddd      fe+eaƫ	       ed)dǐdeJrend e6ej                  dej                  dej
                  di      f ei e
j                  d      ddej                  ejd                  gd       ei e
j                  d      ddejb                  ej                  ejd                  gd      f e"ej&                  ej                  ej
                         e"ej                  ej&                  ej`                  ej
                        dddd emdɄ d       ʫ       edeJrej                  j                  ndd e6ej                  di      f e#ej&                  ej`                  ej
                         e#ej&                  ej`                  ej
                        dddʐͫ	       e
dHeJrej                  j                  ndd e6ej                  dej
                  di      f ei e
j                  d'      dd(      f e#ej&                  ej`                  ej
                        ddddddddddʐdϜ ed"eJrej                  j                  ndd e6ej                  dej
                  di      f e#ej&                  ej`                  ej
                        ddddʐѫ	       edeJrej                  j                  ndd e6ej                  dej
                  dej                  di      f e#ej&                  ej`                  ej
                         e#ej&                  ej`                  ej
                        dddddddʐd ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k         ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k         ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k        fի       end֐eeq eej                  ej
                         eej
                         eej                  ej
                         eej                  ej
                        d]dd eie
j                  dd      f׫       end edل       eoep e!ej                  ej
                        d]dd eie
j                  ddej                  f      fګ	       ed1eJrendd e6ej                  di      f e#ej&                  ej`                  ej
                         e#ej&                  ej`                  ej
                        ddd ei e
j                  d      ddej                  ej                  geH<       ei e
j                  d      ddej                  ej                  geH<      f emd܄ d      ݫ       end e        d]ddee0e3g߫       endddʐd eej                  ej
                        edddʐ	       enddqdd e"ej&                  ej                  ej
                  ejb                         eedʐr      dddʐ	       eddeJrej                  j                  ndddddd e6ej
                  dej                  di      f e#ej&                  ej`                  ej
                        e       endd d e@eAeBdd eie-ddܫ      f eie
j                  dd       ei e
j                  d      dd      f e"ej&                  ej`                  ej
                  ejb                               end e"ej&                  ej
                  ej                  ejb                        eCd] eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dJdK       ei e
j                  d      dd-ej&                  geF<      f%       end e"ej&                  ej
                  ej                  ejb                        eDd]d]e,g eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dÐdū       ei e
j                  d      dd-ej&                  geF<      f       edej                  j                  j                  d      d  e"ej
                  ej                  ej&                        d]d]e- ei e8ej                   e9dd      i      dd       ei e8ej                   e9dd      i      dd       ei e8ej                   e9dd      i      dd       ei e8ej                   e9dd      i      dd      g eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      ddej&                  g       ei e
j                  d      ddej&                  g       ei e
j                  d      ddej&                  g       ei e
j                  d      ddej                  geF<       eie
j                  dd       ei e
j                  d      d5      f
       edej                  j                  j                  dd      ddd e"ej
                  ej                  ej&                         eeߐdd      d]d]d]e-g eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d      d5      f
       endej                  j                  j                  ddd      dddd e"ej
                  ej                  ej&                         eeߐdQd d      d]d]e-g eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d      d5      f	       edej                  j                  j                  dd      ej                   e"ej
                  ej                  ej&                         eeߐdd      d]d]d]e-g eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d      d5      f
       endej                  j                  j                  d	d      ddd
 e"ej
                  ej                  ej&                         eeߐd      d]d]e-g eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       eie
j                  dd       ei e
j                  d      d5      f	       endVe e!ej                  ej
                  ejb                         e!ej                  ej
                        dd]dd eie
j                  ddej                  f      f	       endVdee1e3gd]d]dd e         e         eie
j                  ddej                  ej                  f      f       endVde e!ej
                  ej                         e!ej                  ej
                        dd]d ei e8ej                   e9dd      i      dd       ei e
j                  d      ddej                  ej                  f       eie
j                  ddej                  ej                  f      f	       endVde e!ej                  ej
                  ejb                         e!ej                  ej
                        dd]dd] ei e8ej                   e9dAd      i      ddd       eie
j                  ddej                  f      f
       endxed]ddd]d]g g  e"ej&                  ej                  ej
                        dʐeX       endedddd]d]g g  e"ej&                  ej                  ej
                        dʐeX       endd  eej                  ej
                         eie
j                  dd       eie
j                  dd       ei e
j                  d      ddd       ei e
j                  d      dd      fddd]d]eId 
       endej,                  j.                  j                  j                  d e#ej                  ej
                  ej&                         eej                  ej
                        d]eJ ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      ddeM       ei e
j                  d      ddeM      f       endd  eej                  ej
                         eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      fddd]d] eeId      d  !
       end"d#  eej                  ej
                         eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      fddd]d] eeId$      d% !
       end&d'  eej                  ej
                        eSddd]eId]d(  eie
j                  dd       eie
j                  ddd       eie
j                  dd      f)       end*d+ d, eej                  ej
                         eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      fdddd] eeIdʐd$      d- .       end*d/ d0 e"ej&                  ej                  ej
                         eie
j                  dd       eie
j                  dd      feSddd] eeId]1      d2 3       end4ed] eej                  f      eM5       end6d7d8  eej
                  ej                        eLd geWdd eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      ddd       ei e
j                  d      dd       ei e
j                  d      d9d:      fdd];       end<d=  eej
                  ej                         eej
                  ej                         eej                        eK eie
j                  dd       eie
j                  dd       ei e
j                  d      dd      feNd]d]d g>       end?d@  eej
                  ej                        ex ei e
j                  d      ddej                  f       ei e8ej                   e9dd       i      dȐd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd       eie
j                  dd       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  dA      dȐdej
                  ej                  f       ei e
j                  dA      dȐdej
                  ej                  f      fd]ddddʐB
       edCdDedE  eedYd͐dF      dd eej
                  ej                         ei e8ej`                   e9dd      ej
                   e9dd      i      d      fG	       endHdI edJ       eNd]dd eej                  ej
                         eie
j                  ddej                  f      fK	       endL eej                  ej
                        d]eOePd]dMN       endO eej                  ej
                        d]eQd]dM eieOdȐdej                  ej                  feH<      fP       endQej                   e"ej&                  ej                  ej
                        d]d]eV ei e
j                  d      dd-ej&                  geF<      fR       erdSdd]ej&                   e"ej&                  ej                  ej
                         eej                         eie
j                  dTdUejx                  g      fV       erdWd]d]ej&                   e"ej&                  ej                  ej
                         eej                         eie
j                  dTdUejx                  g      fV       erdXdYdd]d e#ej                  ej
                  ej&                         eej                         eie
j                  dTdZ       eie
j                  dTd[      fec\	       erd]dYdd]d e#ej                  ej
                  ej&                         eej                         eie
j                  dTdZ       eie
j                  dTd[      fec\	       erd^d]d]dej                   e#ej                  ej
                         eej                  d]_      `       erdad]d]ej                   e#ej                  ej
                         eej                  d]_      b       erdcd d]d]ej                   e"ej&                  ej                  ej
                        e eej                         ei e
j                  d      dTdd       ei e
j                  d      dTde       ei e
j                  d      dTdf       ei e
j                  d      dTd[       ei e
j                  d      dTdg       ei e
j                  d      dTdh       ei e
j                  d      dTdi       ei e
j                  d      dTdZ      fj	       erdjdYdddddd e!ej                  ej
                         eej                        e ei e
j                  d      dddej                  g       ei e
j                  d      dTdd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdkej                  g       ei e
j                  d      dTdldej                  g      fm       erdndodddd]d eej                  ej
                         e!ej                  ej
                  ejb                         edʐ<       eej                         ei e
j                  d      dd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdkej                  g       ei e
j                  d      dTdpdej                  g       ei e
j                  d      dTdldej                  g      fq       erdrdYddddddd] e!ej`                  ej
                         e!ej`                  ej
                        e eej                        e ei e
j                  d      dTdd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdkej                  f       ei e
j                  d      dTdpej                  f      fs       erdrdCdYd]dddddd] e!ej`                  ej
                         e!ej`                  ej
                        e ei e
j                  d      dTdZ       ei e
j                  d      dTd[      ft       erdudYddddddd] e!ej`                  ej
                         e!ej`                  ej
                        e eej                        e ei e
j                  d      dTdd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdk       ei e
j                  d      dTdp       ei e
j                  d      dTdv      fw       erdudCdYd]dddddd] e!ej`                  ej
                         e!ej`                  ej
                        e ei e
j                  d      dTdZ       ei e
j                  d      dTd[      ft       erdxddYd]dd]dddeN e"ej&                  ej
                  ej                         e"ej&                  ej                  ej
                  ejb                        ee ei e
j                  d      dTdd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdy       ei e
j                  d      dTde       ei e
j                  d      dTdkej                  ej                  g       ei e
j                  d      dTdpejx                  ej                  ej                  g       ei e
j                  d      ddzej                  g      f{       er	 
dIi d}d d~dYdd]ddʓddʓddʓd e"ej&                  ej                  ej
                        d e"ej&                  ej                  ej
                  ejb                        d eej                        ded eeej                  ߫      d eeej                  ߫      d eeej                  ߫      d eeej                  ߫      d eeej                  ߫      d& ei e
j                  d      dTdd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdkej                  g       ei e
j                  d      dTdpej                  g       ei e
j                  d      ddzej                  g      f erdd dodddd]d e#ej&                  ej                  ej
                         e"ej&                  ej                  ej
                  ejb                         edʐ<       eej                          ei e
j                  d      dd       eie
j                  dTdZ       eie
j                  dTd[       ei e
j                  d      dTdkej                  g      f       end e       d]eS eie
j                  ddej                  f       eie
j                  ddej                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddeM      f       end e#ej`                  ej
                  ej&                        d]dd ei e8ej                   e9ddA      i      ddd      geR       end eej                  ej
                        d]eTddd ei e
j                  d      ddej                  f       ei e
j                  d      ddd       ei e
j                  d      ej`                  fdw      f       end eej`                  ej
                        dd]ddʐeXeY eie
j                  ddӫ       eie
j                  dd       eie
j                  dd       ei e
j                  d      ddej                  f      f	       end eej`                  ej
                        d]ddʐe[e\e]       endd eej                  ej
                        d]dʐe^e_ ei e
j                  d      ddej                  f      f       endetes e       d]d] ei e
j                  d      dd      f       end e#ej`                  ej
                        d]ddʐe`ea       end e#ej&                  ej                  ej
                         e#ej&                  ej                  ej
                        esd]d] ei e
j                  d      ddej                  f       eie
j                  dd-ej&                  gdeF ~      fM       end e"ej&                  ej                  ej
                  ejb                         e!ej                  ej
                  ejb                        ed]ddd] ei e
j                  d      ddej                  ej                  f      f	       end
dJdei e"ej                  ej
                        d]dd ei e
j                  d      ddej                  ej                  f      f       endej e"ej&                  ej                  ej
                        d]dd ei e
j                  d      ddej                  ej                  f      f       endek e"ej&                  ej                  ej
                        d]dd ei e
j                  d      ddej                  ej                  f      f       endel e"ej&                  ej                  ej
                        d]ddd gd dg eie
j                  d       eie
j                  dd       eie
j                  dd9      f	       ender eej                  ej
                         e)ej                  ej
                        d]ddʐ       endddeu e"ej&                  ej
                  ej                         e"ej&                  ej                  ej
                        d]ddd]	       endd| e#ej                  ej
                  ej&                        ddʐe%       enddx e#ej                  ej
                  ej&                         e#ej                  ej
                         e)ej                  ej
                        e% eie
j                  dd       eie
j                  dd       eie
j                  dd      f       enddj e#ej                  ej
                         e)ej                  ej
                         e#ej                  ej
                        ddʐe%       endd] e#ej                  ej
                  ej&                         e#ej                  ej
                         e)ej                  ej
                        dd]dʐe%	       enddX e#ej                  ej
                  ej&                         e#ej                  ej
                         e)ej                  ej
                        dd]dʐe%	       enddd eej                  ej
                        d]d]e& ei e
j                  d      ddd      f       enddd eej                  ej
                        d]d] ee&d       ei e
j                  d      ddd      f      Zeen   ed<   eej                  j                  z  Zg  edd+ ei e
j                  d      ddej                  geM<      f       edd ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI      f       edd ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI      f       edd ei e8ej                   e9dld      i      dd       ei e8ej                   e9d%d
      i      ddd,       e6ej
                  di      g ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI      f       edd) e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejd                  geHI       ei e
j                  d      dddejd                  geHI      f       eddX       edd eie
j                  dd       eie
j                  dd       eie
j                  dd      f       edd eie
j                  dd       eie
j                  dd       eie
j                  dd      f       edd ei e
j                  d      dd«       ei e
j                  dë      dd       ei e
j                  dë      dd       eie
j                  ddǫ       ei e
j                  dë      ddī       ei e
j                  d      dd       eie
j                  dd      fū       edƐdd eie
j                  ddej                  ejx                  ejv                  ej                  ej                  f       ei e
j                  d      dd        ei e
j                  d      dd«       ei e
j                  dȫ      dd       ei e
j                  dȫ      dd       eie
j                  ddǫ       ei e
j                  dȫ      ddī       ei e
j                  d      dd       eie
j                  dd      f	ɫ       edʐdd ei e
j                  d      dd        eie
j                  ddej                  ejx                  ejv                  ej                  ej                  f       eie
j                  ddej                  ejx                  ejv                  ej                  ej                  f       ei e
j                  d      dd«       ei e
j                  d˫      ddǐd       ei e
j                  d˫      dd       ei e
j                  d˫      dd       ei e
j                  d˫      ddī       ei e
j                  d      dd       eie
j                  dd      f
ɫ       ed̐dd ei e
j                  d      dd«       ei e
j                  dͫ      ddǐd       ei e
j                  dͫ      dd       ei e
j                  dͫ      dd       ei e
j                  dͫ      ddī       ei e
j                  d      dd       eie
j                  dd      fɫ       edΐdd ei e
j                  d      dd«       ei e
j                  dϫ      dd       ei e
j                  dϫ      dd       ei e
j                  dϫ      ddī       ei e
j                  dϫ      dȐd       ei e
j                  d      dd       ei e
j                  dƫ      ddǫ       eie
j                  dd       eie
j                  dd       eie
j                  dd      f
ɫ       edΐdҐd5d ei e
j                  d      dd«       ei e
j                  dϫ      dd       ei e
j                  dϫ      dd       ei e
j                  dϫ      ddī       ei e
j                  dϫ      dȐd       ei e
j                  d      dd       ei e
j                  dƫ      ddǫ       eie
j                  dd       eie
j                  dd       eie
j                  dd      f
Ы       edejT                  j|                  dҐdd] ei e
j                  d      dd«       ei e
j                  dϫ      dd       ei e
j                  dϫ      dd       ei e
j                  dϫ      ddī       ei e
j                  dϫ      dȐd       ei e
j                  d      dd       ei e
j                  dƫ      ddǫ       eie
j                  dd       eie
j                  dd       eie
j                  dd      f
ҫ       edӐd eie
j                  dd       eie
j                  dd       eie
j                  dd      f       edԐd
 eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddej                  ejx                  ejv                  ej                  ej                  fd,       eie
j                  ddej                  ejx                  ejv                  ej                  ej                  fd,       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd      f       edԐd
d eie
j                  dd       eie
j                  dd       eie
j                  ddej                  ejx                  ejv                  ej                  ej                  fd,       eie
j                  ddej                  ejx                  ejv                  ej                  ej                  fd,       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd       eie
j                  ddej                  ej                  ej                  ej                  ej                  ej
                  fd       eie
j                  ddej                  ej                  ej                  ej                  ej                  ej
                  fd,       eie
j                  ddejx                  ej                  ejv                  ej                  ej                  fd      f	ի       ed֐d eie
j                  dd       eie
j                  dd       eie
j                  dd       eie
j                  ddejv                  ej                  ej                  fd       eie
j                  ddejv                  ej                  ej                  fd       eie
j                  ddejv                  ej                  ej                  fd      f       ed֐dd eie
j                  dd       eie
j                  dd       eie
j                  ddejv                  ej                  ej                  fd       eie
j                  ddejv                  ej                  ej                  fd       eie
j                  ddejv                  ej                  ej                  fd       eie
j                  ddej                  ej                  ej                  ej                  ej                  ej
                  ej                  ejx                  fd       eie
j                  ddej                  ej                  ej                  ej                  ej                  ej
                  ejv                  ej                  ej                  ej                  ejx                  fd,      fի       edאdFdGث       edِd eie
j                  dd«      f       edڐd       edېd       edܐd       edݐdd] ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      fޫ       edߐdd] ei e
j                  d      ddի       ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      fޫ       edאdFdMث       eddidh       eddO eie
j                  ddǫ      f       edd eie
j                  ddǫ      f       edd e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejf                  ejd                  geHI       ei e
j                  d      dddejf                  ejd                  geHI      f       edd1 e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      ddd,ejf                  ejd                  g       ei e
j                  d      dddejf                  ejd                  geHI       ei e
j                  d      dddejf                  geHI      f       edd@       edd       edd eie
j                  ddǫ       eie
j                  dd      f       eddk       edd e6ej
                  di      f ei e
j                  d      ddejf                  ejd                  fd,eH~       ei e
j                  d      ddejd                  fd       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddd,ejf                  ejd                  geII       eie
j                  dddejb                  feHI      f       edd ei e
j                  d      ddd,ej                  g       ei e
j                  d      ddejd                  g       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddejf                  ejd                  geH<       ei e
j                  d      ddd,ejf                  ejd                  geII       ei e
j                  d      ddd,ejf                  ejd                  geII       eie
j                  dddejb                  feHI      f       eddː       edd!       edd e6ej                  dej
                  dej                  di      f ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k         ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k         ei e
j                  d      ddeJxr3  eaj                  ej                         eaj                  dԫ      k        f       edd"       edd ei e
j                  d      ddd,ejf                  ejd                  geHI      f       edd#       eddl ei e
j                  d      ddejd                  g       ei e
j                  d      ddd,ejf                  ejd                  geHI      f       eddwdʐ       edd$       edd ei e
j                  d      ddeH      f       edd' ei e
j                  d      ddej
                  ej                  ej                  ej                  f      f       edd       edd~dʐ       edddʐ       edddʐ       edddʐ       edddʐ       edddʐ       e	d d e6ej
                  dej                  di      f ei e
j                  d      ddej                  f      f       e	dd1 e6ej                  di      f ei e
j                  d      ddej                  ej                  geH<       ei e
j                  d      ddej                  ej                  geH<      f       e	d	dd e        eiej                  j                  j
                  j                  dd       eiej                  j                  j
                  j                  dd      f	       e	d	dd e       ի       e	d	dd e       ի       e	dd e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  geHI      f       e	dd%       e	dd e6ej
                  di      f ei e
j                  d      ddd,ejf                  ejd                  geHI      f       e	dd e6ej
                  di      f ei e
j                  d      ddejf                  ejd                  g      f       e	d	d       e	d
ddqث       e	ddq       e	dd       e	ddg       e	dd       e	dd( ei e
j                  d      ddejf                  ejd                  g      f       e	dd& ei e8ej
                   e9dd      i      ddd       ei e8ej
                   e9dd      i      ddd      f       e	dd e6ej`                  di      f ei e
j                  d      ddejf                  ejd                  f       eie
j                  ddejb                  f      f       e	dd)	dd]d] e6ej                  dej                  dej
                  di      f ei e
j                  d      ddej                  ejd                  gd       ei e
j                  d      ddejb                  ej                  ejd                  gd      f	       e	dd0 ei e
j                  d      ddej
                  ej                  ej                  ej                  g      f       e	dd(d]d] ei e
j                  d      ddej
                  ej                  ej                  ej                  g      f	       e	ddU       e	dd e6ej
                  di      f ei e
j                  d      ddejd                  fd       ei e
j                  d      ddejf                  ejd                  fd,eH~       ei e
j                  d      ddejf                  ejd                  fd,eH~      f       e	dd# e6ej
                  dej                  di      f ei e
j                  d      ddejf                  g      f       e	dd e6ej                  di      f ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddejd                  f       ei e
j                  d      ddd,ej                  g      f       e	ddmdqث       e	dd e6ej
                  dwi       ei e8ejb                   e9dd       i      dd      f ei e
j                  d      ddd,ejf                  ejd                  feII       ei e
j                  d      ddej
                  f      f       e	ddy e6ej                  d	ej
                  di      f ei e
j                  d      ddej                  f       ei e
j                  d      ddejf                  ejd                  g       ei e
j                  d      dddejf                  ejd                  g      f       e	dd ei e8ej                   e9ddl      i      ddd      g ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI      f       e	d d ei e8ej                   e9dd
      i      ddd      g ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI       ei e
j                  d      ddd,ejf                  ejd                  geIxs eHI      f       e	d!d*       e	d"ddqd]	#       e	d$dmdqd]	#       e	d%d       e	d&d& ei e
j                  	d'      dd«       ei e
j                  	d'      ddī       ei e
j                  	d'      ddǐd       ei e
j                  	d'      dd       ei e
j                  	d'      dd      fū       e	d(dgdʐ       e	d)ddʐ       e	d*ddʐ       e	d+d ei e
j                  	d'      dd«       ei e
j                  	d'      ddī       ei e
j                  	d'      dd       ei e
j                  	d'      dd       ei e
j                  	d'      dd       ei e
j                  	d'      dd       ei e
j                  	d'      dd       eie
j                  ddǫ       ei e
j                  d      dd      f	ū       e	d,d]d ei e8ej                   e9dd      ej
                   e9dd      i      dd      gɫ       e	d-ddʐ       e	d.dِ       e	d/d ei e
j                  d      ddej                  fd,      f       e	d0dZdʐ       e	d1ddʐ       e	d2dd eie
j                  dd«       eie
j                  ddej                  fd,      f	3       e	d4d-dʐ       e	d5ddqd]	#       e	d6d       e	d7d       e	d8d       e	d9dc       e	d:ddʐ       e	d;ddʐ       e	d<dd ei e8ej                   e9dd      i      d      gɫ       e	d=drd ei e8ej                   e9ddu      ej
                   e9ddu      i      dd      gɫ       e	d>dmdqd]	#       e	d?dudqd]	#       e	d@dC       e	dAdؐ       e	dBd'       e	dCdH       e	dDd֐       e	dEd       e	dFddd] eie
j                  ddǐd      f	G       e	dHddʐ       e	dId ei e
j                  d      ddd,ejf                  ejd                  g       ei e8ej
                   e9dd      ej                   e9ddl      i      ddd      g ei e
j                  d      ddej                  ej                  feI<       ei e
j                  d      ddej                  ej                  fd,eIxs eH~      f       e	dJdϐ       e	dKdː       e	dLd5dd ei e8ejb                   e9dd       i      dd      f ei e
j                  d      ddej                  ej                  f      f	M       e	dNd-       e	dOd`       e	dPdB ei e
j                  dD      dd      f       e	dQdF ei e
j                  	dR      dd      f       e	dSdb       e	dTdc       e	dUdz ei e
j                  d      dd۫       eie
j                  ddx      f       e	dVd?ddd ei e
j                  d      ddej                  ej                  ej                  f       eie
j                  ddej                  fd       eie
j                  ddej                  fd      f	W       e	dVd?ddd eie
j                  dd۫      f	X       e	dVd?ddd eie
j                  dd۫       eie
j                  ddej
                  fd,      f	X       e	dYd       e	dZd
 eie
j                  dd۫       ei e
j                  d      ddej                  ej                  g       ei e
j                  d      ddej                  ej                  g       ei e
j                  d      ddej                  ej                  g      f       e	d[d eie
j                  ddd,ej                  ej                  f       eie
j                  ddĐd,ej                  ej                  f      f       e	d\d       e	d]d edʐګ      dd ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      dej
                  f       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  f       ei e8ej                   e9dd      i      dd       eie
j                  ddx      f	^       e	d_dd]	`       e	dadd]	`       e	dbdddid ei e
j                  d      ddej
                  fd,       ei e
j                  d      ddej
                  fd,       ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddej
                  f       ei e
j                  d      ddejx                  f      f	c       e	dddi eie
j                  ddej                  f      f       e	ded       e	dfd       e	dgddd] ei e
j                  d      dd      f	h       e	didFd]	`       e	djdŐ       e	dkdȐ       e	dldk eie
j                  dd۫       eie
j                  ddx       ei e
j                  d      dd      f       e	dmdg       e	dnd       e	dod[       e	dpd       e	dqd]       e	drd^       e	dsd       e	dtdD eie
j                  dd      f       e	dudC eie
j                  dd      f       e	dvd=dd eie
j                  ddej                  f       eie
j                  ddej                  fd       eie
j                  ddej                  fd      f	w       e	dxd       e	dyd       e	dzdF ei e8ej                   e9dd      i      dd       ei e8ej                   e9dd      ej                   e9dd      i      dd      f eie
j                  ddej                  f       eie
j                  ddej                  fd       eie
j                  ddej                  fd       eie
j                  ddej                  ejv                  ej                  ej                  g       eie
j                  ddejv                  ej                  ej                  g       ei e
j                  d      ddej                  f       ei e
j                  d      ddej                  ej                  ej                  f       ei e
j                  d      ddej                  ej                  ej                  f       ei e
j                  d      ddej                  ej                  ej                  f      f	       e	d{d ei e
j                  d      ddej
                  fd,       ei e
j                  d      ddej
                  fd,       ei e
j                  d      ddej
                  f       ei e
j                  d      ddejx                  f      f       e	d|dK eie
j                  ddejb                  fd,       eie
j                  ddejb                  fd,      f       e	d}d8dd ei e8ej                   e9dd       ej
                   e9dld      ej                   e9dld      i      dd       ei e8ejb                   e9dd       i      ddd,       ei e8ejb                   e9dd       i      dȐdd,       ei e8ejb                   e9dd       i      dȐdɐd,      f ei e
j                  d      ddejx                  f       ei e
j                  d      ddejx                  f      f	M       e	d~ddd eie
j                  ddej                  f       eie
j                  ddej                  fd       eie
j                  ddej                  fd      f	w       e	ddR       e	ddP ei e
j                  d      ddej                  fd,       ei e
j                  d      ddej                  fd,      f       e	dd@ eie
j                  dd      f       e	ddB eie
j                  dd      f       e	ddd       e	ddd] ei e
j                  d      ddejx                  fd,      f	3       e	dddʐ	       e	d	ddʐ	       e	ddd]	       e	ddd]	       e	ddd] ei e
j                  d      dd      fޫ       e	ddd] ei e
j                  d      dd      fޫ       e	ddv eedʐ	       eie
j                  dd۫       eie
j                  ddx      f	       e	dd eie
j                  dd۫       eie
j                  ddx      f       e	ddd]	       e	ddd]	       e	ddd]	       e	ddd] ei e
j                  d      dd      fޫ       e	ddd] ei e
j                  d      dd      fޫ       e	ddd] ei e
j                  d      dd      fޫ       e	ddd]	       e	ddd]	       e	ddd]	       e	ddZ       e	dddʐ       e	ddd]	       e	ddd]	       e	ddd]	       e	dd e"ej&                  ej                  ej
                         ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f	       e	ddd e"ej&                  ej                  ej
                         ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd«      f	       e	ddd e"ej&                  ej                  ej
                         ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd       eie
j                  dd      f	       e	ddd]	       e	dd>       e	dd9       e	dd<       e	dd7       e	ddT eie
j                  dd      f       e	ddV       e	dd       e	ddi       e	dd       e	dd]       e	dd e6ej
                  dej                  di      fū       e	ddc       e	dd       e	dd       e	dddʐ       e	dddd]	       e	dddʐ       e	dd_ eie
j                  dd      f       e	dd       e	dd       e	dddʐ       e	dd       e	dd֐       e	ddؐ       e	ddڐ       e	ddE eie
j                  dd      f       e	dd eeddʐ      	«       e	dÐdd eed]dʐ       eie
j                  dd«      f	ī       e	dŐdd]	       e	dƐd ei e
j                  d      ddd,ej                  f       ei e
j                  d      ddĐd,ej                  f      f       e	dǐd       e	dȐddʐ       e	dɐd e6ej
                  dej                  di      fū       e	dʐd       e	dːdk       e	d̐dnd]	       e	d͐d       e	dΐd       e	dϐdd]	       e	dАdd]	       e	dѐdP       e	dҐdAd]	       e	dӐdq       e	dԐdudʐ       e	dӐdqdsث       e	dՐd^ eie
j                  dd«      f       e	d֐d`       e	dאdb       e	dؐd eedʐ	      d] eie
j                  ddej                  ej                  g      f	٫       e	dڐd eedʐ	      d] eie
j                  ddej                  ej                  g      f	٫       e	dېd       e	dܐddʐ       e	dݐdx       e	dސddʐ       e	dߐd ee3dʐ	      	«       e	ddY       e	dda       e	ddddʐ       e	dd       e	dddʐ       e	dd       e	dd       e	dddʐ       e	dd\ eie
j                  dd      f       e	dd       e	ddW       e	ddS eie
j                  dTdUejx                  g      f       e	ddX eecdʐ	       eie
j                  dTdZ       eie
j                  dTd[      f	       e	dd] eecdʐ	       eie
j                  dTdZ       eie
j                  dTd[      f	       e	ddW eie
j                  dTdUejx                  g      f       e	ddc ei e
j                  d      dTdd       ei e
j                  d      dTde       ei e
j                  d      dTdf       ei e
j                  d      dTd[       ei e
j                  d      dTdg       ei e
j                  d      dTdh       ei e
j                  d      dTdZ      f       e	ddjd eedʐ	       eie
j                  dTdZ       eie
j                  dTd[      f	ī       e	ddrd eie
j                  dTdZ       eie
j                  dTd[       ei e
j                  d      dTdkej                  f       ei e
j                  d      dTdpej                  f      f	3       e	ddE       e	dd|d eie
j                  dd       ei e
j                  d      dTdZ       ei e
j                  d      dTd[       ei e
j                  d      dTdkej                  g       ei e
j                  d      dTdpej                  g       ei e
j                  d      ddzej                  g      f	3       e	ddd eie
j                  dd      f	3       e	ddd eie
j                  dd      f	3       e	ddad]	       e	ddxdd eie
j                  dd       eie
j                  dTdZ       eie
j                  dTd[       ei e
j                  d      dTdkej                  ej                  g      f	       e	ddud eie
j                  dTdZ       eie
j                  dTd[       ei e
j                  d      dTdk      f	3       e	dd?d]	       e	dd eie
j                  dd«      fū       e	dd       e	ddVdd]	       e	dd$ ei e
j                  d"      dd«       ei e
j                  d"      ddī       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  
d       ddǫ       ei e
j                  d      dd      f	       e
dd ei e
j                  d"      dd«       ei e
j                  d"      ddī       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  
d      ddǫ       ei e
j                  d      dd      f	       e
dd 
d  ei e
j                  dƫ      ddǫ       ei e
j                  d«      ddի       ei e
j                  d«      dd       ei e
j                  d«      dd       ei e
j                  d«      dd      f
       e
dd& ei e
j                  d      dd       ei e
j                  d      dd       ei e
j                  d      dd      f       e
dd ei e
j                  d"      dd«       ei e
j                  d"      ddī       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  d"      dd       ei e
j                  
d      ddǫ       ei e
j                  d      dd      f	       e
d	d ei e
j                  
d
      dd«       ei e
j                  
d
      ddī       ei e
j                  
d
      dd       ei e
j                  
d
      dd       ei e
j                  
d
      dd       ei e
j                  
d
      ddǫ       ei e
j                  d      dd      f       e
dd  ei e
j                  
d
      dd«       ei e
j                  
d
      ddī       ei e
j                  
d
      dd       ei e
j                  
d
      dd       ei e
j                  
d
      dd       ei e
j                  
d
      ddǫ       ei e
j                  d      dd      f       e
dd,       e
dd       e
dd       e
dd( eie
j                  dd      f       e
dd
d d] eie
j                  ddd      f
       e
dd eie
j                  dd«       eie
j                  dd      f       e
dd eie
j                  dd«      f       e
dd eie
j                  dd«       eie
j                  dd      f       e
dd eie
j                  dd«      f       e
dd4       e
dd eie
j                  dd«      g       e
dd eie
j                  dd«       ei e
j                  
d      ddej                  ej                  f      g       e
ddt       e
dd,      Zeej                  j                  z  Zeez   ZeD  cg c]  }  e| e      s|  c} ZeD  cg c]  }  e| e      s|  c} Z e
d eD              ZeD  cg c]  }  e| e      s|  c} ZeD  cg c]  }  e| e      s| j                  s|  c} ZeD  cg c]  }  e| e      s| j"                  s|  c} ZeD  cg c]  }  e| er      s| j                  s|  c} ZeD  cg c]  }  e| e      s|  c} ZeD  cg c]  }  e| er      s|  c} ZeD  cg c]  } | j,                  |  c} ZeD  cg c]#  } | j0                  j3                  
d      s"| % c} ZeD  cg c]#  } | j0                  j3                  
d      s"| % c} Z ej"                  d,      f
dZd] ej"                  d,      f
d Z
d! Z
d" Z
dKddd
d#Z
dKddd
d$Z
d% Zyc c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w (L
      )wrapspartial)productchainisliceN)infnan)AnyUnion)Sequencemake_tensor)_dispatch_dtypesfloating_typesfloating_types_andcomplex_typesfloating_and_complex_typesfloating_and_complex_types_andall_types_and_complex_andall_types_andall_types_and_complexintegral_types_andempty_typescomplex_types_andintegral_typescustom_typesall_types_complex_float8_and)onlyCPUonlyCUDAonlyNativeDeviceTypesdisablecuDNNskipCUDAIfNoMagmaskipCUDAIfNoMagmaAndNoCusolverskipCUDAIfNoCusolverskipCPUIfNoLapackskipCPUIfNoFFT
skipCUDAIfprecisionOverrideskipCPUIfNoMklSparsetoleranceOverridetol)	!PLATFORM_SUPPORTS_FLASH_ATTENTION#PLATFORM_SUPPORTS_MEM_EFF_ATTENTIONSM53OrLaterSM80OrLaterSM89OrLaterwith_tf32_off
TEST_CUDNN_get_torch_cuda_version_get_torch_rocm_version)4make_fullrank_matrices_with_distinct_singular_valuesTEST_WITH_ROCM	IS_FBCODE
IS_WINDOWSIS_MACOS
TEST_SCIPYtorch_to_numpy_dtype_dictnumpy_to_torch_dtypeTEST_WITH_ASANGRADCHECK_NONDET_TOLslowTestTEST_WITH_SLOWTEST_WITH_TORCHINDUCTORwrapper_set_seed)_pytree)version)0LMSXS_NOTHING_getattr_qualDecorateInfoSampleInput
ErrorInput	AliasInfoNumericsFilterOpInfo_generate_reduction_inputs_generate_reduction_kwargssample_inputs_reductionReductionOpInfo#reference_inputs_elementwise_binary$make_error_inputs_elementwise_binary#generate_elementwise_binary_tensors7generate_elementwise_binary_arbitrarily_strided_tensors/generate_elementwise_binary_small_value_tensors/generate_elementwise_binary_large_value_tensors2generate_elementwise_binary_extremal_value_tensors0generate_elementwise_binary_broadcasting_tensors/generate_elementwise_binary_with_scalar_samplesBgenerate_elementwise_binary_with_scalar_and_type_promotion_samples1generate_elementwise_binary_noncontiguous_tensors sample_inputs_elementwise_binaryBinaryUfuncInfosample_inputs_elementwise_unary"generate_elementwise_unary_tensors.generate_elementwise_unary_small_value_tensors.generate_elementwise_unary_large_value_tensors1generate_elementwise_unary_extremal_value_tensors"reference_inputs_elementwise_unaryUnaryUfuncInfosample_inputs_spectral_opsSpectralFuncTypeSpectralFuncInfoShapeFuncInfosample_inputs_foreachForeachFuncInfo!gradcheck_wrapper_hermitian_input"gradcheck_wrapper_triangular_input9gradcheck_wrapper_triangular_input_real_positive_diagonal"gradcheck_wrapper_masked_operation,gradcheck_wrapper_masked_pointwise_operationclone_sample)_find_referenced_opinfo_inherit_constructor_argsPythonRefInfoReductionPythonRefInfoElementwiseUnaryPythonRefInfoElementwiseBinaryPythonRefInfo)(np_unary_ufunc_integer_promotion_wrapperreference_reduction_numpy
prod_numpy)opinfo)sample_inputs_linalg_cholesky%sample_inputs_linalg_cholesky_inversesample_inputs_crosssample_inputs_linalg_qr_geqrfsample_inputs_linalg_invertiblesample_inputs_lu_solvesample_inputs_legacy_solvesample_inputs_svd'sample_inputs_linalg_det_logdet_slogdetsample_inputs_linalg_lu!sample_inputs_diagonal_diag_embed error_inputs_diagonal_diag_embed)sample_inputs_i0_i1sample_inputs_polygammareference_polygamma)sample_inputs_softmax_variant)error_inputs_sparse_like_fnssample_inputs_sparse_like_fnserror_inputs_sparse_mulsample_inputs_sparse_mul!error_inputs_sparse_reduction_sum"sample_inputs_sparse_reduction_sum)stats皙?c           	      ,   | j                         rOt        j                  t        j                  t        j                  t        j
                  |                         }n(t        j                  t        j                  |             }||k  |d|z
  kD  z  S N   )
is_complextorchabsview_as_complexfracview_as_real)xepsys      b/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/common_methods_invocations.pyclose_to_intr      se    ||~IIe++EJJu7I7I!7L,MNOIIejjm$GQW&&    c              +      K   t        t        ||d d |      }t         |d      d       t         |ddd      ddd	       t         |ddd      dddd
       t         |ddd      dddd
       y w)Ndevicedtypelowhighrequires_grad   r         (   r   )dimstartend)r   r   r   step   r   r   rM   op_infor   r   r   kwargs
make_inputs         r   sample_inputs_slicer      s     V5!MKJ jmQ
''
jR,!1"
EE
jR,!1"1
MM
jR,!3BQ
OO   A8A:c           
   +   `  K   t        t        ||d d |      }t        j                  g d      ft        j                  d      ft        j                  g d      dft        j                  g d      d d d   dfdddd	d
df
}|D ]&  }t	         |t
        t
        t
        f      |       ( y w)Nr   r   r   r   r   )r      r      r      r   )r   r   )r   r   )r   r   r   r   r   r   args)r   r   r   tensorrM   rH   )r   r   r   r   r   r   
args_casesr   s           r   sample_inputs_tensor_splitr      s     V5!MKJ
 
i	 "	a	i	 !$	(	)#A#	.2J   <*aAY/d;;<   B,B.c              +      K   t        t        ||d d |      }t         |d      d       t         |t        t        t              g d       y wNr   r   r   r   r   r   r   r   r   r   rM   rH   r   r   r   r   r   make_args         r   sample_inputs_hsplitr      sE     {%d-IH
hqk1
%%
hq!Q'
33s   AAc              +      K   t        t        ||d d |      }t         |dt              d       t         |t        t        t              g d       y wr   r   r   s         r   sample_inputs_vsplitr      sG     {%d-IH
hq!na
((
hq!Q'
33   AAc              +      K   t        t        ||d d |      }t         |t        t        t              g d       t         |t        t        d      d       y w)Nr   r   r   r   r   r   s         r   sample_inputs_dsplitr      sJ     {%d-IH
hq!Q'
33
hq!Q'
++   AAc           	   +   h  K   t        t        t        j                  |      }d}t	        t         |d      d      |       dt         d}t	        t         |t        t        t        f      d      |       d}t	        t         |t        t        t        f      d	      t        |
       y w)Nr   r   z]torch.hsplit requires a tensor with at least 1 dimension, but got a tensor with 0 dimensions! r   error_regexzQtorch.hsplit attempted to split along dimension 1, but the size of the dimension & is not divisible by the split_size 0!-received an invalid combination of arguments.abc
error_typer   r   r   r   float32rN   rM   rH   	TypeErrorr   r   r   r   err_msg1err_msg2err_msg3s          r   error_inputs_hsplitr      s     {%--GH6H
["q1x
HH112 489H [1a)!4a8h
OO @H
HaAY'/(4 4s   B0B2c           	   +   l  K   t        t        t        j                  |      }d}t	        t         |t              d      |       dt         d}t	        t         |t        t        t              d      |       d}t	        t         |t        t        t              d      t        |	       y w)
Nr   z]torch.vsplit requires a tensor with at least 2 dimension, but got a tensor with 1 dimensions!r   r   zQtorch.vsplit attempted to split along dimension 0, but the size of the dimension r   r   r   r   r   r   s          r   error_inputs_vsplitr      s     {%--GH6H
[!a0h
GG112 489H [!Q!2A6!)+ + @H
[!Q!2E: )xA As   B2B4c           	   +     K   t        t        t        j                  |      }d}t	        t         |t              d      |       dt         d}t	        t         |t        t        t              d      |       y w)Nr   z]torch.dsplit requires a tensor with at least 3 dimension, but got a tensor with 1 dimensions!r   r   zQtorch.dsplit attempted to split along dimension 2, but the size of the dimension r   )r   r   r   r   rN   rM   rH   )r   r   r   r   r   r   s         r   error_inputs_dsplitr      sl     {%--GH6H
[!a0h
GG112 489H [!Q!2A6H
MMs   A>B c              +      K   t        t        |||      }d}|D ]-  \  }}}	}
 ||      }t        |
      }t        |||	f|       / y w)N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   storage_offsetr   r   r   r   dictrM   )r   r   r   r   r   r   
test_casesinput_shapeoutput_shapestrider  input_ts               r   sample_inputs_as_stridedr    sb     {6m\HJ >H O9\6>;'^4'v(>vNNO   A	Ac              +      K   fd}t         |       dd       t         |       ddd       t         |       ddd       y w)Nc                  H    t        d      } | dd j                        S )N)r   r   r   r      )r   requires_grad_)baser   r   r   s    r   r   z8sample_inputs_as_strided_partial_views.<locals>.make_arg  s(    5u=Abz((77r   r   r   r   r  
   rM   r   s    ```  r   &sample_inputs_as_strided_partial_viewsr    sE     8
 hj&&
11
hj&&
CC
hj&&
DDs   A	Ac              +      K   t        t        |||      }g d}|D ])  \  }}}	}
 ||      } ||      }t        ||||	|
       + y w)Nr   ))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
  r  r  	input_srcs                r    sample_inputs_as_strided_scatterr  '  sb     {6m\H
J >H c9\6>;'\*	'9lFSabbcs   AA	c           	   +      K   t        t        |t        j                  d      } |ddg      } |ddg      }t	        t        ||ddgddgd      d	       y w)
NFr   r   r      r   r  zTitemsize 4 requiring a storage size of 1604 are out of bounds for storage of size 64r   r   r   r   r   rN   rM   )r   r   r   r   r  r  s         r   error_inputs_as_strided_scatterr  =  sa     {6V[\H 1vG!Q I
GYAc
1Mj    AAc              +      K   d}g d}t        ||ddg      }|D ]/  \  }}	}
t        j                  ||||      }t        ||	|
       1 y w)N)r   r   r   r   r   r   r   r   r   r   FTr   )rwith_replacement)r   r   r   rM   )r   r   r   r   r   inputsrvalsproducts
input_datar&  r'  r  s               r   sample_inputs_combinationsr,  I  sd     F Evuudm4H+3 K'
A',,z&Ubc'Q9IJJKs   AAc              +      K   t        t        j                  |||      } |d      } |d      } |d      }t        |       t        ||       t        |||       y w)Nr   r"  r#  r$  )r   r   r   rM   )	r   r   r   r   r   r   abcs	            r   sample_inputs_cartesian_prodr1  X  se     u||F%}]H 	AAA a. a
 aA
   A!A#c              +     K   t        t        |||      }t        t        fddift        dfddift        fdddfd	ddift        t        t        fddift        t        fi ff}|D ]"  \  }}t	         ||       ||      f|
       $ t	         |d       |d      fddi
       t	         |d       |d      fddi
       t	         |d       |d      fddi
       y w)Nr   r   r   r   r   r         ?)r   r   r   r  r   )r   r   r   r   r   r   r   r   rH   rG   rM   )r   r   r   r   r   r   casesr  s           r   sample_inputs_cosine_similarityr8  i  s    {6m\H Q%
Q%
q%&	eQZ
QUAJ
Q!E  % _V(;/x7L6NW]^^_ hy))1D0FPUWY{
[[
hy))1D0FPUWY{
[[
hv&hy.A-CUTVK
XXs   C&C(c              +   j   K   t        t        ||d      }d}|D ]  }t         ||              y w)NFr   r   r   )r   r   r   r   r   r   r   r   r   r   r   r7  shapes           r   sample_inputs_itemr=  ~  s=     {%eTHE  +(5/**+s   13c              +      K   t        t        t        j                  |d      }t        t
        ft
        t
        ft
        t        t        ff}|D ]%  }t        t         ||            t        d       ' y w)NFr:  z&elements cannot be converted to Scalarr   )
r   r   r   r   rG   rH   rF   rN   rM   RuntimeError)opr   r   r   r7  r<  s         r   error_inputs_itemrA    so     {%--V[\H 

	
A	
Aq		E  B(\@B 	BB   A5A7c              +   t  K   t        t        |||      }t        t        ||d      }t        t        t        fddddfdddd	fd
ddd	fdddifdddifdddddfdddddfdi ff}|D ]f  \  }}t        |      dkD  r|d   nd}	|	dkD  r ||	      nd }
|	dkD  r ||	      nd } ||	d      } ||	d      }t	         ||      |||
|f|       h 	d d g}d |	d g}g d}t        |||      D ].  \  }
}}t	         |       ||	       ||	      fd|i       0 t	         |d      dddi       y w)Nr   FTr4  333333?)trainingmomentumr   r   r   r   333333)rE  rF  r           r"  rE  r   r   r   r         r  r   r   r   r  )TFFr   )NNNN)r   r   rH   lenrM   zip)r   r   r   r   r   r   make_arg_without_requires_gradr7  r  channelsweightbiasrunning_meanrunning_varweightsbiasesis_trainingrE  s                     r   sample_inputs_batch_normrX    s    {6m\H%,[udi%j" Q3sCD	D9:	d45	
D!"	
E"#	Dd3GH	EtCHI		&E  % 
V%(%5%9;q>q'/!|(#%-\x!t5hAF4X1E[!	 	
 		

( t$GHd#F&K"%gv{"C 

h[!""	 )	
 		


 hy)0HR\^bQc
dds   D6D8c              +     K   t        t        |||      }t        fdft        t        fdft        t        t        fdfg}|g}|t        j
                  k(  r|dk(  r|t        j                  gz  }t        ||      D ]R  \  \  }}	}
 ||      }t        j                  j                  j                  ||	|
      }t         ||      ||	|
       T y w)Nr   r   r   cuda)r   r   )r   r   rH   rG   r   floatfloat16r   nn
functionalsoftmaxrM   )r   r   r   r   r   r   r7  input_dtypesr<  r   input_dtypeinputoutputs                r   #sample_inputs_softmax_backward_datard    s     F%}H q	
Q
QBE
 7L& 0'%,UL%A E!k$$,,U;,O(5/63DDEs   CCc              +     K   t        | |||fi |}|D ]  }|j                  j                         dk(  r!|j                  }|j                  j                  dd      }|j                  j                  dd      }	|j                  j                  dd      }
t        |j                  |d   |d	   |d   |d
   ||	|
f        y w)Nr   rE  TrF  r4  r   h㈵>r   r   r   r   rX  rb  numelr   r   getrM   r   r   r   r   r   samplessampler   rE  rF  r   s              r   sample_inputs_native_batch_normrm    s     &w}WPVWG 	l <<1${{==$$Z6==$$Z5mmt,&,,d1gtAwQaRZ\dfi-jkk	l   CCc              +     K   t        | |||fi |}|D ]  }|j                  j                         dk(  r!|j                  }|j                  j                  dd      }|j                  j                  dd      }	|j                  j                  dd      }
|d   2|d   -t        |j                  |d	   |d
   |d   |d   ||	|
f       t        |j                  |d	   |d
   ||	|
f        y w)Nr   rE  TrF  r4  r   rf  r   r   r   r   rg  rj  s              r   &sample_inputs__native_batch_norm_legitrp    s     &w}WPVWG ^ <<1${{==$$Z6==$$Z5mmt,747#6fll$q'47DGTRSWV^`hjm1noofll$q'47HhX[1\]]^   C1C3c           
   +     	K   t        | |||fi |}|D ]  }|j                  j                         dk(  r!|j                  	|j                  j                  dd      }|j                  j                  dd      }t        	fdt        d      D              rt        |j                  	d   	d	   	d   	d
   ||f        y w)Nr   rF  r4  r   rf  c              3   ,   K   | ]  }|   d u   y wNr   ).0ir   s     r   	<genexpr>z8sample_inputs__batch_norm_with_update.<locals>.<genexpr>  s     11tAw$1s   r   r   r   r   r   )	rX  rb  rh  r   r   ri  anyrangerM   )
r   r   r   r   r   rk  rl  rF  r   r   s
            @r   %sample_inputs__batch_norm_with_updaterz    s     &w}WPVWG 
b <<1${{==$$Z5mmt,1a11&,,d1gtAwQaRZ\_-`aa
b   CCc              +      K   t        t        |||      }dt        ft        t        ft        t        t        ff}|D ]  }t	         ||              y wNr   r   r6  r;  s           r    sample_inputs_nn_activation_relur~    sW     {6m\H 


Q
Q	E  +(5/**+   AAc              +     K   | j                  ||d       d   }t        | ||||      E d {    t        t        |||      }dt        ft        t        ft        t
        t        ff}|D ]j  }dD ]1  }	t        j                  |	|||      }
t         ||      |
f       3 t        |      dk\  r|d   nd}t         ||       ||f      f       l t        j                  d	|||      }
t         |t        t        f      t        |

             t         |t        t        f      t         |t        f      
             y 7 "w)Nr   	op_kwargsr   r   )rK  rI  皙?      ?r   r   r   r  )rQ  r   )sample_kwargsrc   r   r   rH   rG   r   r   rM   rM  r  )r   r   r   r   r   r  r   r7  r<  rQ  weight_tensorchannel_sizes               r   sample_inputs_prelur    sI    %%feT:1=I.w}9BD D D {6m\H 


Q
Q	E  N( 	FF!LLe[hiMhuo]4DEE	F $'u:?uQx(5/</1J0LMMN LLF%}]M
h1v&t=/J
KK
h1v&t8QD>/K
LL/Ds   *EED"Ec              +   p   K   t        | |||fi |E d {    t        | |||fi |E d {    y 7 7 wrt  )r  rh   )r@  r   r   r   r   s        r   reference_inputs_prelur  9  sC     "2vumNvNNN1"fe]]V\]]] O]s   626466c                     t        j                  d| |      }|t         j                  k(  r"|j                  t         j                  d      }n|j                         }|j                         }d|id|ifS )Nr   r  cpur   rQ  )r   randbfloat16tor   r  numpy)r   r   rb  rQ  
weight_cpu	np_weights         r   !sample_kwargs_prelu_scalar_weightr  =  sd    ZZ67FYYU]]5YA
ZZ\
  "Iv9 566r   c              #     K   t        d|t        j                        }t        d|t        j                        }t        t	        |d|i      d       t        d|t        j                        }t        d	|t        j                        }t        t	        |d|i      d
       t        d|t        j                        }t        d|t        j                        }t        t	        |d|i      d       y w)Nr   r  r   rQ  r  z Not allow zero-dim input tensor.r   )r   r  r   	   z5Mismatch of parameter numbers and input channel size.r   zGprelu: Expected `weight` to be a scalar or 1D tensor, but got: ndim = 2)r   r   r   rN   rM   )r@  r   inprQ  s       r   error_inputs_prelur  G  s     
bu}}
=CfEMMBF
[h-?@!CE E iemm
DCfEMMBF
[h-?@!XZ Z iemm
DCemmDF
[h-?@!jl ls   C>D c              +     K   t        t        |||      }t        t        fddft        t        fddft        t        fddft        t        fdd	ft        t        fd
dft        t        fddft        t        fddft        t        fddft        t        fddfg	}t        t        t        fddft        t        t        fddft        t        t        fddft        t        t        fddft        t        t        fddff}t        t        fddft        t        fd d!ft        t        fd"d#ft        t        fd$d%ft        t        fd&d'ft        t        fd(d)ft        t        t        fd&d'ft        t        t        fd(d)ft        t        t        fd*d+ft        t        t        fd,d-fd.d/d0d1f}d2 |D        }	t        j                  |||	      D ]  \  }
}}t         ||
      ||3        |D ]  \  }
}}t         ||
d45      ||3         y w)6Nr   r  2r"  0r4  0_5r   1r   3r   neg_1r   neg_2)      neg_0_5)      neg_1_5)      ?1_5_default)r  r   1_5_dim)r  r   1_5_neg_dim)r  r   Tkeepdim_1_5_dim)r  r   Tkeepdim_1_5_neg_dim)r   r   	neg_2_dimr   r   	neg_1_dimr#  0_dimr   r   1_dimr  2_dimr   3_dimr   r   Tkeepdim_2_dim)r   r   Tkeepdim_3_dim)r   r   r   2_dim_scalar)r   r   r   3_dim_scalar)r   r   r   Tkeepdim_2_dim_scalar)r   )r   r   Tkeepdim_3_dim_scalarc              3   p   K   | ].  \  }}}||d d |d    fz   |dd  z   |j                  dd      f 0 y w)Nr   r   _dim_neg_dim)replace)ru  r<  r   names       r   rw  z%sample_inputs_norm.<locals>.<genexpr>  sO      ;)tT D!Ha{2T!"X=t||FT^?_` ;   46r   r  Texclude_zero)r   r   rH   	itertoolsr   rM   )r   r   r   r   r   r   r7  cases_nonzero_inputcases_posdimcases_negdimr<  r   r  s                r   sample_inputs_normr  [  s    {6m\H Qs
Qs
Q
Qs
Qs
Q 
Q 
Q)$
Q)$
E QFM*
QHi(
QI}-
QN$56
QO%:; Q;'
Q;'
Q'"
Q'"
Q'"
Q'"
QFG$
QFG$
QL/2
QL/2$$22L";-9;L '__UL,O AtT(5/4@@A 1 TtT(5t<4dSSTs   G>H c              +      K   t        t        |||      }t        t        fddft        t        fddft        t        fdddgfdff}|D ]  \  }}}	t         ||      ||		        y w)
Nr   r   default)frofro_defaultr  r   r   r  r   r   rH   rM   
r   r   r   r   r   r   r7  r<  r   r  s
             r   sample_inputs_norm_fror    s     {6m\H QY
Q=)
Q%!Q!5)E # AtT(5/4@@A   A&A(c              +      K   t        t        |||      }t        t        fddft        t        t        fdddgfdff}|D ]  \  }}}	t         ||      ||	        y w)Nr   )nucr  r   r   nuc_batchedr  r  r  s
             r   sample_inputs_norm_nucr    sr     {6m\H Q5!
QUQFO]3E
 # AtT(5/4@@As   AAc              +     K   t        t        |||      }t        t        ft         fdft        t        ft        fdft        t        ft        dfdft        t        ft        dfdff}|D ]  \  }}}	t	         ||      ||	        y w)	Nr   -infr   r   	inf_2_dimr   inf_2_neg_dimr  )r   r   rH   r   rM   r  s
             r   sample_inputs_norm_infr    s     {6m\H Q3$&!
Q#
Q#qK(
Q#r_-	E # AtT(5/4@@A   BB	c              +     K   t        t        |||      }dt        fdfdt        fft        dft        fft        t        fdft        t        ft        t        fff}|D ]q  \  }} ||      }	 ||      }
|t	        j
                  ||      k7  }t        |	|
f|       ||k(  sFt        |	|	j                         j                         f       s y w)Nr   r   r   r   r   r   broadcasts_inputr   )	r   r   rH   rG   r   broadcast_shapesrM   clonedetach_)r@  r   r   r   r   r   shapes	shape_lhs	shape_rhslhsrhsr  s               r   sample_inputs_equalr    s     F%}NH 	
r
	aT

Q!
Q
Q!QF !' B	9y!y!$(>(>y)(TT#SF=MNN	!c)<)<)>(@AABs   B C#/Cc              +   x  K   t        t        |||      }dt        fdft        dft        fft        t        fdft        t        t        ft        t        fft        t        t        ft        t        t        fft        dt        ft        t        fft        dt        fdt        t        ffdf	}|j	                  d      }|j	                  di       }|D ]a  \  }	}
 ||	      }t        |dz
        D cg c]
  } ||
       }}|	t        j                  |	|
      k7  }t        |t        |      ||       c y c c}w w)	Nr   r  r   r   )r   r   r   )r   r  r   
num_inputsr  r   r   r  )
r   r   rH   rG   ri  ry  r   r  rM   tuple)r@  r   r   r   r   r   r  r  r  r  r  r  _r   r  s                  r   sample_inputs_jiteratorr    s$    {6m\H 	
r

Q!
Q
QQF
QQ1I
QQF
QQ1I
F L)JJJ3M & j	9y!-2:>-BC#CC%)?)?	9)UU#E$KXhiijCs   C,D:.D5==D:c              +     K   dt         fdft         dft         fft         dft         ft        t         fdft         t        t         ft        t         fft         t        t         ft         t        t         fft        dt         ft        t         fft        dt         fdt        t         ffdf
}|D ]  }|^}}t        |t        |               y w)Nr  r   r   r  r   )rH   rG   rM   r  )	r@  r   r   r   r   r  r<  r  arg0s	            r   sample_inputs_broadcast_shapesr    s     
r

Q!
Q
Q
QQF
QQ1I
QQF
QQ1IF  1
d#E$K001   CC	c              +   j  K   t        | |||fi |E d {    t        t        |||      } |t        t        ffi | j                  } |t        t        ffi | j
                  }|t        j                  urt        ||fddi       nt        ||fddi       |j                  s|j                  rdnd} |t        t        ffi | j                  } |t        t        ffi | j
                  }|t        j                  urt        ||fd|i       y t        ||fddi       y 7 w)	Nr   alphar   r  Tg      	F)ra   r   r   rH   lhs_make_tensor_kwargsrhs_make_tensor_kwargsr   boolrM   is_floating_pointr   )	r@  r   r   r   r   r   r  r  	neg_alphas	            r   sample_inputs_add_subr    s!    /FE=[TZ[[[ {6m\H
Aq6
7R66
7C
Aq6
7R66
7CEJJ#SFGQ<@@#SFGT?CC 22e6F6FRI
Aq6
7R66
7C
Aq6
7R66
7CEJJ#SFGY3GHH#SFGU3CDD! \s   D3D0DD3c              +   j  K   t        t        dd      t        d       t        t        dd      t        d       t        t        dd      t        d       t        t        dt        d	      d
f      t        d       t        t        t        d      d      t        d       y w)Nr   r  r   zstep must be nonzerr   )r  r   z!bound inconsistent with step sign)r   r   r   r   zunsupported ranger  r   )rN   rM   r?  r[  r@  r   r   s      r   error_inputs_aranger  
  s     
[0\Wl
mm
[1lX{
||
[1lX{
||
[%,):;bu
vv
[vV<cv
wws   B1B3c              +     K   d}d ddddgfd|D        }d}||z   }|t         j                  t         j                  fvr||z  }|D ]^  \  }	}
}|	*|J t        |
||d	
       t        d|
||d
       3|t        |	|
f||d	       Jt        |	|
|f||d	       ` t        d       t        dd       y w)N)	)r   r   r   )r   r  r   r   r   r   )r   r   r   )r   i)r   r   r   )FTT)r   r   N)Nr   Nc                 F    | | dz   nd } |dz   }|t        |      nd }| ||fS Nr   r[  )r   r   r   s      r   to_floatz&sample_inputs_arange.<locals>.to_float%  s8    $0dCi".uT{Dc4r   )rI  gA!         )r  gC  @       @)rI  g       r  )r        @r  c              3   :   K   | ]  \  }}} |||        y wrt  r   )ru  r   r   r   r  s       r   rw  z'sample_inputs_arange.<locals>.<genexpr>1  s!     	K);%d(5#t
$	K   ))r   '  Nr   r  r   )r   r   r   r  r   r   r   r   )r   int8uint8rM   )r@  r   r   r   r   int_samplesfloat_sampleslarge_samplesrk  r   r   r   r  s               @r   sample_inputs_aranger    s    K&  	 
L{	KMM M)GUZZ--= # 
bsD=<<cEV*LMMaev(VWW\e3&5TZ9[\\e3+Y_>`aa
b a.
af
%%s   CC	c           	   +   v   K   t         ft        t        ff}|D ]  }t        |t        |||              y w)Nr:  rb  r   )rG   rH   rM   r  )r@  r   r   r   r   r  r<  s          r   sample_inputs_randnr  K  sC     	
	
AF
  mdv]j.kllm   79c              +      K   t        t        ||d      }t        t        fddft        t        t        fddff}|D ]  \  }}}	t         ||      ||	f        y w)NFr:  r   r   r   r4  r   r  
r@  r   r   r   r   r   rk  r<  meanstds
             r   sample_inputs_normalr!  T  sg     {%eTH
QA
QBG $ =tS(5/s<<=   AAc              +      K   t        j                  dg|      }d}t        t        |d|f      t        d|        y w)Nr  r   r   r   r   z)normal expects std >= 0.0, but found std r   r   zerosrN   rM   r?  r@  r   r   tinvalid_stds        r   error_inputs_normalr*  ^  sF     RD(AK
AQ,-@N    A Ac              +      K   t        t        ||d      }t        fddft        t        fddft        t        t        fddff}|D ]  \  }}}	t	         ||      ||	f        y w)NFr:  r   r4  r   r   r   r   r   rG   rH   rM   )
r@  r   r   r   r   r   rk  r<  mediangammas
             r   sample_inputs_cauchyr0  g  st     {%eTH
q#
QA
QBG
 !( Avu(5/@@A   A#A%c              +      K   t        j                  dg|      }d}t        t        |d|f      t        d|        y w)Nr  r$  r   r   z-cauchy_ expects sigma > 0.0, but found sigma=r   r%  )r@  r   r   r(  invalid_scales        r   error_inputs_cauchyr4  r  sF     RD(AM
AQ/0D]OT r+  c              +      K   t        t        ||d      }t        fdft        t        fdft        t        t        fdff}|D ]  \  }}t	         ||      |f        y w)NFr:  r4  r   r  r   r-  	r@  r   r   r   r   r   rk  r<  rates	            r   sample_inputs_exponentialr8  |  sg     {%eTH
s
Q
QCG
  9t(5/889   AA c              +      K   t        j                  dg|      }d}t        t        ||f      t        d|        y w)Nr  r$  r   r   z4exponential_ expects lambda > 0.0, but found lambda=r   r%  )r@  r   r   r(  invalid_rates        r   error_inputs_exponentialr<    sC     RD(AL
A\O,KL>Z    ?Ac              +      K   t        t        ||d      }t        fdft        t        fdft        t        t        fdff}|D ]  \  }}t	         ||      |f        y w)NFr:  皙?r4  r  r   r-  r6  s	            r   sample_inputs_geometricr@    sg     {%eTH
s
Q
QCG
  9t(5/889r9  c              +      K   t        j                  dg|      }d}t        t        ||f      t        d|        y w)Nr  r$  r   r   z2geometric_ expects p to be in \(0, 1\), but got p=r   r%  )r@  r   r   r(  neg_probs        r   error_inputs_geometricrC    sC     RD(AH
AXK(I(T r=  c              +      K   t        t        ||d      }t        fddft        t        fddft        t        t        fddff}|D ]  \  }}}	t	         ||      ||	f        y w)NFr:  r   g      ?r4  r   r   r-  r  s
             r   sample_inputs_log_normalrE    ss     {%eTH
q$
Qa
QAsG
 $ =tS(5/s<<=r1  c              +      K   t        j                  dg|      }d}t        t        |d|f      t        d|        y w)Nr  r$  r   r   z-log_normal_ expects std > 0.0, but found std=r   r%  r'  s        r   error_inputs_log_normalrG    sF     RD(AK
AQ,-D[MR r+  c              +      K   t        t        ||d      }t        fddft        t        fddft        t        t        fddff}|D ]  \  }}}	t	         ||      ||	f        y w)	NFr:  id   r   r   r   r   r-  )
r@  r   r   r   r   r   rk  r<  hilos
             r   sample_inputs_uniformrL    sr     {%eTH
tS
QA
QAqG
 ! :r2(5/R99:r1  c              +   d   K   t         ft        t        ff}|D ]  }t        |||d        y w)Nr   r  )rG   rH   rM   )r@  r   r   r   r   sizessizes          r   sample_inputs_ones_zerosrP    s@      
	
AE  K$&'IJJKs   .0c              +      K   d }t         ft        t        ff} ||       |t        j                        g}t	        ||      D ]  \  }}	t        ||	||        y w)Nc                 :    t        g | d      j                         S Nr  r   r   itemr   s    r   get_valz#sample_inputs_full.<locals>.get_val      2U59>>@@r   r   )rG   rH   r   intr   rM   )
r@  r   r   r   r   rW  rN  fill_valuesrO  
fill_values
             r   sample_inputs_fullr\    sh     A 
	
AE 5>7599#56K#E;7 Hj$
%GGH   AAc              +   z   K   t        j                  dg|      }t        t        |d      t        d       y w)Nr  r$  r   r   zIuniform_ expects to return a \[from, to\) range, but found from=3 > to=-1r   r%  )r@  r   r   r(  s       r   error_inputs_uniformr_    s5     RD(A
AG$`    9;c           	   +   &  K   t        t        dd      t        d       t        t        dd      t        d       t        t        t	        j
                  ddg|	      t	        j
                  d
d
g|	      df      t        d       y w)Nr   r   r   z$number of steps must be non-negativer   )r   r  zDreceived an invalid combination of arguments - got \(int, int, floatr   r$  r   z1only supports 0-dimensional start and end tensors)rN   rM   r?  r   r   r   r  s      r   error_inputs_linspacerb    s     
[1lX~

AG$[ 
 ELL!Q7u||QPQF[a?bde>fgG    BBc              +      K   d}d}d}t        t        |||            dgz   }|D ]9  \  }	}
}|t        j                  k(  r|
dk  s|	dk  r%t	        |	|
|f||d       ; t	        dd	
       y w)Nr  r   r   r   2          r   333333@rf  r   r   rf  )r   r  rf  r   r   r  r   r   r   )listr   r   r  rM   )r@  r   r   r   r   endsstartsnstepsr7  r   r   nsteps               r   sample_inputs_linspacerp    s     DFFv./:,>E" _sEEKKS1W	%sElUV\;]^^_
 af
%%   A/A1c              +     K   d}d}d}d}t        t        j                  |d      }	t        t	        ||||            dgz   }
|
D ]  \  }}}\  }}|t        j
                  k(  r|dk  s|dk  r)||d	}|r8 |	|t        |t              rt        j                  nt        j                  
      }|r8 |	|t        |t              rt        j                  nt        j                  
      }t        |||f|        t        dd       y w)Nre  rg  rj  TTTFFTFr   r   )r   r  rf  rt  r   r   rV  r  r   r   r   )r   r   r   rk  r   r  
isinstancer[  r   int64rM   )r@  r   r   r   r   rl  rm  rn  is_start_end_tensorsr   r7  r   r   ro  is_start_tensoris_end_tensortensor_optionss                    r   &sample_inputs_linspace_tensor_overloadr~    s     DFFGu||F%HH v/CDEIaHbbE?D 
K;sE;O]EKKS1W	#(F;U:eU;S%--Y^YdYdeE3z#u7MemmSXS^S^_C%sEl>JJ
K af
%%s   DD
c              +     K   d}d}d}|t         j                  t         j                  fv rdnd}t        ||||      D ]  \  }	}
}}|t         j                  k(  r|
dk  s|	dk  r&|dk(  r)t	        |	t
              r|j                  s|j                  sT|t        |	|
|f||d	       lt        |	|
||f||d	        t        dd
       y w)Nr  r   333333?r   r   rh  r   r   r   ri  r   r   r   r   r  皙?Nr        @r  r  r   r   r   r  r   r   r  r   )	r   r  r  r   rx  r[  r   r   rM   )r@  r   r   r   r   rl  rm  rn  basesr   r   ro  r  s                r   sample_inputs_logspacer    s     D FF5::u{{";;IAXE#*64#G 	isE4EKKC!GuqyA:*UE2E<L<LPUPgPg<e3,Z`?abbe3t*<u`fEghh	i aj
))   CCc              +     K   d}d}d}|t         j                  t         j                  fv rdnd}d}	t        t         j                  |      }
t        |||||	      D ]  \  }}}}\  }}|t         j                  k(  r|dk  s|dk  r*|d	k(  r)t        |t              r|j                  s|j                  sX||d
}|r8 |
|t        |t              rt         j                  nt         j                        }|r8 |
|t        |t              rt         j                  nt         j                        }|t        |||f|       t        ||||f|        t        d	d       y w)Nr  r  r  r  r  rs  r$  r   r   r   rV  r  r  r   )r   r  r  r   r   r   rx  r[  r   r   r   ry  rM   )r@  r   r   r   r   rl  rm  rn  r  rz  r   r   r   ro  r  r{  r|  r}  s                     r   &sample_inputs_logspace_tensor_overloadr  1  sI    D FF5::u{{";;IAXEGu||F3HELVUY[achj~E UAsE4!A/=EKKC!GuqyA:*UE2E<L<LPUPgPg#(F;U:eU;S%--Y^YdYdeE3z#u7MemmSXS^S^_C<e3,~NNe3t*<^TT#U& aj
))s   E$E&c           
   +   Z  K   t        | |||fi |E d {    ddg}ddg}ddg}t        |||      }t        t        |||      }	|D ]]  \  }
}} |	t        t        ffi | j
                  } |	t        t        ffi | j                  }t        ||ft        |
||             _ y 7 w)NrI  gHz>FTr   )rtolatol	equal_nanr  )	ra   r   r   r   rH   r  r  rM   r  )r@  r   r   r   r   rtolsatols
equal_nansr*  r   r  r  r  r  r  s                  r   sample_inputs_iscloser  N  s     /FE=[TZ[[[ JEJEJueZ0H{6m\H!) RdI1v;!:!:;1v;!:!:;#SF!%4di!PR 	R	R \s   B+B)BB+c              +   
  K   t        t        |t        j                  d      }t	        t         |d       |d      fddi      t        d       t	        t         |d       |d      fd	di      t        d
       y w)NFr   r   r  gٿr  z*rtol must be greater than or equal to zeror   r  z*atol must be greater than or equal to zero)r   r   r   r[  rN   rM   r?  )r@  r   r   make_float_args       r   error_inputs_iscloser  a  s     [u{{Z_`N
[!3>";M:OY_aeXfg ,!MO O [!3>";M:OY_aeXfg ,!MO O   BBc              +      K   t        t        |||      }t         |d             t         |d             t         |d             y w)Nr   r   r  r   r   r   s         r   sample_inputs_tr  m  sD     {6m\H
hv&
''
htn
%%
hrl
##s   AAc              +     K   t        t        ||      fd}t        t        ft        t        f}}t	         |       |      f       |j
                  rt	         |       ||      f       t	         dt        f       t        t              f       t	         t        df       dt              f       y w)Nr   c                 N     |       j                         j                        S rt  conjr  rO  r   r   s    r   make_arg_conjz'sample_inputs_mm.<locals>.make_arg_conjw  !    ~""$33MBBr   r   r   )r   r   rH   rG   rM   r   )	r   r   r   r   r   r  first_shapesecond_shaper   s	      `    @r   sample_inputs_mmr  t  s     {6m\HC "#AAK
h{+8L3I2K
LL(;/}\7R6TUU h1v&hq!n->
??
h1v&hq!n->
??s   C	Cc              +   v  K   |j                  d|j                  rdnd      }|j                  d|j                  rdnd      }ddg}d	d
g}||z   }	t        ||      }t        t        |||      }
|	D ]9  \  }}}}t         |
|       |
|       |
|      fi |j                  |       ; |j                  r|d}t         |
|       |
|d      j                  j                  |       |
|      fi | t         |
|       |
|       |
|d      j                  j                  |      fi | |j                  rvt         |
t        t               |
t        d       |
dt              fi | t         |
t               |
t        d       |
dt              fi |j                  d       y y w)Nr         @      @rD  beta      ?       @r?  )r5  r   r5  F)r   r   r   F)r   r   r5  T)r   r   r5  Tr  r  r:  r  r   Fr   r   T)ri  r   r  r   r   rM   with_metadatamHr  r   rH   rG   )r   r   r   r   r   	alpha_valbeta_val
tests_listtests_with_lhs_broadcastingr  r   shape_ashape_bshape_cr  r<  s                   r   sample_inputs_addmmr    s    

7e.>.>FCHIzz&E,<,<&#FH''J
 	%"# 99J	1F{%m\H7A ;3'#3WWW
 	

 -)9-
:	;; UOU%033BB=QUO
 	
 	
 UOUOU%033BB=Q
 	
 	
 (1a.(1a.(1a.SFSS(1+x1~x1~PP^^pt^uu s   F7F9c           	   +   b  K   |j                   rdnd}|j                   rdnd}t        t        |||      }t        j                  ddgd	      D ]\  \  }}	}
t        t        j                  ||	||
      j                         j                  |       |||
f       ||
|	f      ||       ^ y w)Nr  rD  r  r?  r   r   r   r   repeatr  r  )
r   r   r   r  r   rM   r   eyeto_sparse_csrr  )r   r   r   r   r   r  r  r   mnks              r   "sample_inputs_sparse_sampled_addmmr    s     &&FCE%%63D{6m\H $$aVA6 	
1aIIa67]_^M*aVaV
 	
	
s   B-B/c              +      K   t        t        |||      }g d}t        ddgddg|      D ]_  \  }}}	t        t	        j
                  ||      j                  ||      j                         j                  |       |||f      |	       a y w)Nr   )sumr  amaxaminr   r  r      r  )	r   r   r   rM   r   r  r  r  r  )
r   r   r   r   r   r   
reductionsr  r  reduces
             r   sample_inputs_sparse_mm_reducer    s     {6m\H0JAB< 
1fIIaORvUR+]_^M*aV
 	

s   BBc              +      K   t        t        ||d d |      }t         |t        t               |t                     y wNr   r   r   rM   rH   rG   selfr   r   r   r   r   s         r   sample_inputs_mvr    s2     {%DtcpqH
hq!nhqk
22   >A c              +      K   t        t        ||d d |      }t         |t        t        t               |t        t        t                     y wr  )r   r   rM   rG   rH   r  s         r   sample_inputs_bmmr    s:     {%DtcpqH
hq!Q'!Q):
;;s   AAc              +      K   t        t        ||      fd}t         t        f       t        f             |j                  r%t         t        f       |t        f             y y w)Nr   c                 N     |       j                         j                        S rt  r  r  s    r   r  z-sample_inputs_dot_vdot.<locals>.make_arg_conj  r  r   )r   r   rM   rH   r   )r  r   r   r   r   r  r   s      `  @r   sample_inputs_dot_vdotr    sb     {6m\HC huox
77 (A5/=!+?@@	 s   A0A4Fc           	   +     K   t        t        |t        j                        }t	        t         |d       |dt        j                        f      d       t	        t         |dd       |d      f      d       t	        t         |d	       |d      f      d
       |dk7  r-|s*t	        t         |d       |dd      f      d       y y y w)Nr  r   r   rV  r   z.dot : expected both vectors to have same dtyper   z1D tensors expectedr  zinconsistent tensor sizer  r$  -Expected all tensors to be on the same device)r   r   r   r   rN   rM   r\  )r   r   is_refr   r   s        r   error_inputs_dot_vdotr    s     V5==IJ
[Aj%--6X5Z[!QS S
[Aq!1A8HI!68 8
[Ajm5EF!;= =vZ]*Qu:U9WX%TV 	V  &s   CCc           	   +     K   t        t        |||      }t        ft        t        ft        fdddft        ft        t        ft        fdddff}dt        t        ft        fdddfdt        t        ft        fdddfdt        t        ft        fdddfdt        t        ft        fdddff}||z   }|D ]9  \  }	}
}}}}t	         ||	       ||
       ||      ft        ||	      |
       ; y w)Nr:  r   Fr?  rD  r   Tr   r  r  r  )r   r   rH   rG   rM   r  )r   r   r   r   r   r   r  test_cases_with_broadcastr7  rO  matvecr  r  r  s                  r   sample_inputs_addmvr    s    {%m\H4!Q!q!U34!Q!sC7J #'AaD!A"&Ac3!E"$q!fqdAq$!?"$q!fqdCd!C!# 22E :? b5c3e%5(4.x}/M!%4u!=P`b 	bbs   C*C,c              +   "  K   t        t        |||      }t        t        ft        t        t        ft        t        t        fdddfdt        t        t        ft        t        t        fdddft        t        ft        t        t        ft        t        t        fdddfdt        t        t        ft        t        t        fdddfdt        t        t        ft        t        t        fdddfdt        t        t        ft        t        t        fdddfg}|D ]  \  }}}	}
}}|j                  r:|
d	z  |d
z  }}t         ||       ||       ||	      ft        ||      |       t         ||       ||       ||	      ft        |
|      |        y w)Nr   r   Fr   TrD  r?  r   r  r  r  r  )r   r   rH   rG   r   rM   r  )r   r   r   r   r   r   r  r  batch1_shapebatch2_shaper  r  is_broadcastingbeta_complexalpha_complexs                  r   sample_inputs_addbmmr  	  sw    {6m\H q6Aq!9q!QiAu=!QQ1Iq!T:q6Aq!9q!Qic5A!QQ1IsC>1ay1a)Q481ay1a)S#t<J R\ aM\<uo*.&/5F;K-Lh{38L;QS[\hSi:j%)|=%Qdsu u(;/x7MxXdOe6f!%4u!=P_a 	aas   FFc           	   +   <  	K   t        t        |||      	t        t        ft        t        ft        t        ffdft        t        ft        dfdt        ffdfdt        t        dfdt        ffdfdt        t        fddfdfdt        t        dfdt        ffdfg}|D ]~  \  }}t        	fd|D              }t	        | j                  |	       t        	fd
|D              }t	        |d|j                  s|j                  rdndij                  |	        y w)Nr   Fr   r   T)r   r   r   Fr   c              3   V   K   | ]   }t        |t              r
 |d       n| " ywTr  Nrx  r  ru  argr   s     r   rw  z0sample_inputs_addcmul_addcdiv.<locals>.<genexpr>+  0      , :DC9OXc5UXX ,   &)r  c              3   V   K   | ]   }t        |t              r
 |d       n| " ywr  r  r  s     r   rw  z0sample_inputs_addcmul_addcdiv.<locals>.<genexpr>2  r  r  valueQ	@r   )r   r   rH   r  rM   r  r   r   )
r   r   r   r   r   r  
input_argsr  r   r   s
            @r   sample_inputs_addcmul_addcdivr    s7    {6m\HFQFQF+U3FQFQF+U31a)aV,d3'FB#T*Aq	Aq6*D1J )3 ;$
$  , *, ,4 ..@P.QQ
  , *, ,
!&!8!8E<L<LRS

-)9-
:	;;s   DDc              +   :  K   t        | |||fi |E d {    | j                  |      }t        t        ||      }t        j
                  t        j                  ft        j                  t        j                  ff}d}t        ||      D ]  \  \  }	}
}|	|vs|
|vrt        |      t        u r|	t        j                  ur6 |ddg|      } |ddg|	      } |ddg|
      }|t        |||ft        |             yt        |||f        y 7 w)	Nrw  )NTFr  r   r  r   rI  r   Q	r  yQ	@Gz@r   rV  r   )r  r  r   )r  supported_dtypesr   r   r   float64
complex128r  r   r   typecomplexrM   r  )r   r   r   r   r   r  r   typesvaluestype2type3r  arg1arg2arg3s                  r    reference_inputs_addcmul_addcdivr  8  s7    ,9179 9 9 //7{6OH 
(()	'E
F ")!7 7))-- K7"U---Ae,Ae,Ae, d$d>OPPd$66%7-9s   DDDDc              +     K   t         t         t        ft         t         t         ft         t         t        fdddfdt         t         t         ft         t         t        fdddft         t         t        ft         t         t         ft         t         t        fdddfdt         t         t         ft         t         t        fdddfdt         t         t         ft         t         t        fdddfdt         t         t         ft         t         t        fdddfg}t        t        |||d d       |D ]  \  }}}}	}
}t	         |       |       |      |
|		      j                  |
       |j                  sKt	         |       |       |      |
dz  |	dz  	      j                  |
        |j                  rt         t         t         ft         t        t         ft         t         t        fg}t        fd|D              }t	        |d   j                  dd      |d   j                  dd      j                         j                  |      |d   j                  dd      j                         j                  |      
dz  	dz  	       y y w)Nr   Fr   TrD  r?  r   r   r   r   r   r   r  r  r  r  c              3   .   K   | ]  } |        y wrt  r   ru  sr   s     r   rw  z(sample_inputs_baddbmm.<locals>.<genexpr>  s     1QXa[1   r   r   r   )rH   rG   r   r   rM   r  r   r  
transpose_	transposer  r  )r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   s                 @r   sample_inputs_baddbmmr
  c  s=    q!9q!Qi!QAq%@!QQ1Iq!T:q!9q!Qi!QCeD!QQ1IsC>1ay1a)Q481ay1a)S#t<J {6maelpqHT^ ?PlL%?O[!\"\"
 -)9-
:	; %&&V_v& m-=m>??$ a)aAYAq	21&11Gr1%Gb!$))+::=IGb!$))+::=I6"
 	
 s   E I?$DI?c           
   +      K   t        t        |||      }t        ft        t        ff}|D ]J  }t         ||       ||d      fi        t         ||       ||d      fd ||d      i       L y w)Nr   Fr  r  rQ  r  )r   r   r   r   r   _make_tensorr  r<  s           r   )sample_inputs_multilabel_soft_margin_lossr    s     ;vUR_`L 
	
AF
  W,u-\%W\5]4_hjkk,u-\%W\5]4_"*Le,T!UW 	WWs   A7A9c           	   +   V  K   t        t        |||d d       }t         |t        t               |t               |t                     t         |        |t               |t                    j                  d       |j                  rd\  }}n|j                  rd\  }}nd\  }}t         |t        t               |t               |t              ||       t         |        |t               |t              ||      j                  d       |j                  r |st        |||      }t        t        j                  t        j                  ggfi |t        j                  d	gfi |t        j                  d	gfi |d	d	      j                  d       t        t        j                  d	ggfi |t        j                  t        j                  gfi |t        j                  t        j                  gfi |d	d	      j                  d       y y y w)
Nr  Tr  )y?333333?y?333333?)r?  rD  r5  r  r   rI  )r   r   rM   rH   rG   r  r   r   r  r   r   mathr	   )	r   r   r   r   r   r   r  r  r}  s	            r   sample_inputs_addrr    s    F%}RV]aH hq!nhqk8A;
??
hj(1+x{
;
I
I[_
I
``,t		 	 tt
hq!nhqk8A;TQV
WW

 mTm*+ }V5VLL488*88LL#1.1LL#1.1
 --
.	/ LL3%3N3LL$((6~6LL$((6~6
 --
.	/ (5s   H'H)c              +      K   t        t        |||      }dt        t        t        ft        ff}|D ]  }t         ||              y wr}  r  r;  s           r   sample_inputs_zero_r    sH     {6m\H!QQD!E +(5/**+s   AA
c              +   @  K   t        t        |||      }t        |t        j                  d      }t        |d      }d |g dd      i ft        f |g dt              d	dift        f |dgdt              d	d
ift        t
        f |t        gdt
              ddift        t
        f |t        gdt
              ddift
        t        f |t
        gdt              dd ift
        t        f |t
        gdt              d |t        gdd      ift
        t        f |t
        gdt              ddift
        t        f |t
        gdt              ddift
        t        f |t
        gdt              ddiff
}|D ]  \  }	}
}t         ||	      |
f|        y w)Nr   Fr   r   r  r   r   r   r   r   pr   marginr  r  rQ        $      $@	reductionnoner  r  r  r   r   r   longrH   rG   rM   )r   r   r   r   r   r  make_targetmake_weightr(  r  targets              r   sample_inputs_multi_margin_lossr!    s    ;vUR_`L,ejjNK,e<K 
[+R0
{211-Qx8
{A3AA.a9
QaSaa08S/B
QaSaa08U2CD
QaSaa08T2BC
QaSaa08[!RV]`=a2bc
QaSaa0;2GH
QaSaa0;2GH
QaSaa0;2FGF (. T#VV,{36)FSSTs   FFc           	   +   d  K   t        | |||fi |E d {    t        t        |||      }t        |t        j                  d      }t        |d      }d |g dd      ft
        f |g dt
              ft
        f |dgdt
              ft        t
        f |t        gdt
              ff}d	}	d
}
d}d}t        ||	|
||      D ]d  \  \  }}}}}} ||      }|j                  dkD  r|j                  d      gndg}|r ||dd      nd }|||d}|||d<   t        ||f|       f y 7 w)Nr   Fr  r  r   r   r   r  r   )r   r  r  rv  Nr  r  r  r   r  r  )r  r  rQ  r  r  )r!  r   r   r   r  rH   rG   r   ndimrO  rM   )r   r   r   r   r   r  r  r  r(  psmarginsrU  r  r  r   r  r  rQ  r  rb  weight_shapes                        r   "reference_inputs_multi_margin_lossr(    s\    .w}_X^___;vUR_`L,ejjNK,e<K 
[+,
{211-.
{A3AA./
QaSaa01	F 
BGG.J?FvrSZ\ceo?p @;fq&&)[)+0::>

2'sBH\t#>dFf= "+F;%vi??@! `s   D0D-DD0c              +     K   t        t        |t        j                        }t	        t         |dd       |d      fddi      t        d       t	        t         |dd	       |d      fi       t        d
       t	        t         |d	       |d      fi       t        d       t	        t         |dd       |dd      fi       t        d       t	        t         |dd       |d      fi       t        d       t	        t         |dd       |d      fd |d      i      t        d       t	        t         |dd       |d      fd |dd      i      t        d       t	        t         |dd       |d      fd |d      i      t        d       t	        t         |dd       |d      fddi      t        d       y w)Nr  r   r   r  r   r  &abc is not a valid value for reductionr   r   UExpected non-empty vector or matrix with optional 0-dim batch size, but got: \[5, 0\]RExpected non-empty vector or matrix with optional 0-dim batch size, but got: \[0\]z5inconsistent target size, expected 5 but got \[5, 4\]z)expected scalar type Long but found FloatrQ  r   zweight must be one-dimensionalz2inconsistent weight size, expected 4 but got \[5\]r  r   z only p == 1 and p == 2 supportedr   r   r   r   rN   rM   
ValueErrorr?  r@  r   r   r   s       r   error_inputs_multi_margin_lossr0    s    V5==IJ
[Aq!1A8IS^`eRfg *8`b b [Aq!1A8IRTU ,!y{ { [Az!~6GPRS ,!vx x [Aq!1Aq9I8KTVW ,:rt t [Aq!1A8IRTU ,:eg g [Aq!1A8IS[]ghj]kRlm *8XZ Z
[Aq!1A8IS[]ghikl]mRno *8XZ Z
[Aq!1A8IS[]ghi]kRlm ,:oq q [Aq!1A8ISVXYRZ[ *8Z\ \s   GGc           
   +     K   dt         t         fddft         t         fddft         t         fddft         t         fddff}|t        j                  t        j                  t        j                  t        j
                  fv rdnd}|D ]6  }||d	z  nd }|D ]&  \  }	}
}t        |	|||||
      }t        ||
|       ( 8 y w)N)r   r"  Tr   TFr  r#  )Ng     @@g    .Art  r   r   )rH   r   r   r  	complex64r  r   rM   )r  r   r   r   r   r(  lowsr   r   r<  r   keepdimr(  s                r   sample_inputs_logsumexpr5    s     
Qt
Qu
Q
QF  %uX]XhXh(iiovD //sQwt#) 	/E3Ev #$*79A ag..		//s   B<B>c              +   <  K   t        | |||fi |E d {    t        j                  g d|||      }t        |dd       t        j                  d|||      }t        |dd       t        j                  t	        d            }t        |dd       y 7 w)N)r   r   rI  r:  r   Fr   r   T)r5  r   r   rM   r[  )r@  r   r   r   r   r(  s         r   reference_inputs_logsumexpr7  -  s     &r65-R6RRR 	]%m\A
aE
""RuV=QA
aE
"" 	U5\"A
aD
!! Ss   BBBBc           
   +     K   di ft         t         fi fdt         dfi ft         f||dft         fdt        j                  ift         fddift         ft        j                  ddfg}t        j                  j	                         r|j                  t         fddif       |D ]$  \  }}t        |||d d |      }t        |fi | & y w)	Nr   r   r   r   r   r  rZ  r   rH   r   doublerZ  is_availableappendr   rM   )r  r   r   r   r   r(  r<  r(  s           r   sample_inputs_like_fnsr=  <  s     	R
Q
QB
&12 &'
% !
78
F zz th/01 'vU6 t&35 !&v&&	's   CCc              +   V  K   t        | |||fi |E d {    d}t        t        |||      }|D ]r  }t         ||             t         ||      j	                  dd             t         ||d             t         ||d      j	                  dd             t y 7 w)N)r   r"  r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r:  r   r   Tnoncontiguous)r=  r   r   rM   r	  )r@  r   r   r   r   r7  r   r<  s           r   reference_inputs_like_fnsrC  Q  s     %b&%Q&QQQE {%m\H P(5/**(5/33Ar:;;(5=>>(5=GG2NOO	P Rs   B)B'BB)c              +   6  K   t        t        |||      }t        |t        j                  d      }g  |g dd      i ft        g |t        gdt              i ft
        t        g |t
        t        gdt              i ft
        t        g |t
        t        gdt              ddift
        t        g |t
        t        gdt              dd	ift
        t        g |t
        t        gdt              dd
iff}|D ]  \  }}	}t         ||      |	f|        y w)Nr   Fr  r   r   r  r  r  r  r  r  r  )
r   r   r   r   r   r  r  r(  r<  r   s
             r   $sample_inputs_multilabel_margin_lossrE  `  s    ;vUR_`L,ejjNK 
[+R0
k1#11-r2
QaV3R8
QaV3k65JK
QaV3k65JK
QaV3k55IJF "( Nvv,u-VIfMMNs   DDc              +   V  K   t        | |||fi |E d {    t        t        |||      }t        |t        j                  d      }t        t        j
                  |t        j                  d      }g  |g dd      ft        g |t        gdt              ft        t        g |t        t        gdt              fg  |d      fdg |g d      fd	d
g |g dg dg dg dg      ff}d}	t        ||	      D ](  \  \  }
}}i }|||d<   t         ||
      |f|       * y 7 w)Nr   Fr  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  )
rE  r   r   r   r  r   rH   rG   r   rM   )r   r   r   r   r   r  r  make_target_tensorr(  r  r<  r   r  s                r   'reference_inputs_multilabel_margin_lossrI  q  s;    3GVUMd]cddd;vUR_`L,ejjNK fEJJ^cd 
[!,-
k1#2A./
QaV!45	#$
 !89:
Q#%6IZ\k$lmn	F /J&-fj&A N" "+F;,u-VIfMM	N# es   D)D&DD)c           	   +     K   t        t        |t        j                        }t	        t         |dd       |dd      fddi      t        d       t	        t         |dd	       |dd      fi       t        d
       t	        t         |d	       |d	      fi       t        d       t	        t         |dd       |d      fi       t        d       t	        t         |dd       |d      fi       t        d       y w)Nr  r   r   r  r   r  r*  r   r   r+  r,  z;inconsistent target size: \[4\] for input of size: \[5, 4\]r   z:inconsistent target size: \[\] for input of size: \[5, 4\]r-  r/  s       r   #error_inputs_multilabel_margin_lossrK    s    V5==IJ
[Aq!1Aq9I8KU`bgThi *8`b b [Aq!1Aq9I8KTVW ,!y{ { [Az!~6GPRS ,!vx x [Aq!1A8IRTU ,!_a a [Aq!1B8JSUV ,!^` `s   DDc                 T    | j                         j                  | j                        S rt  )r  r  r   )r   s    r   get_independent_tensorrM    s    <<>(()=)=>>r   c              +   ^  K   d}d}t        | |||fi |D ]  }|j                  j                  d|       t        ||j                  j
                  g|j                  i |j                   t        |||j                  j
                  g|j                  i |j                    y w)Nr   r  r   )r=  r   
setdefaultrM   rb  r<  r   r  r   r   r   r   r   r   rl  s           r   sample_inputs_randintrQ    s     
CD(vumVvV X  62$ 2 2RV[[RFMMRR#tV\\%7%7W&++WWWX   B+B-c              +     K   d}d}t        | |||fi |D ]l  }t        |j                  |g|j                  i |j                   t        t        |j                        ||g|j                  i |j                   n y w)Nr   r  )r=  rM   rb  r   r   rM  rP  s           r   sample_inputs_randint_likerT    s     
CD(vumVvV LL [[ mm	 	 "6<<0 [[	
 mm 	   BBc           
   +     K   t        t        |||      }dt        ft        t        ft        t        t        ff}d}d}|D ]C  }	t        ||      D ]2  \  }
}|
|d}t	         ||	       ||	d       ||	d      f|       4 E y w)	Nr   r   )rI  r  r  r  r  )r  r  Fr  r  r   r   rH   r   rM   )r   r   r   r   r   r  r  r&  r  r<  r  r  s               r   !sample_inputs_margin_ranking_lossrY    s     ;vUR_`L 		
	
A	
Aq		F G(J -!(*!= 	-FI &Y?Fl51$0e$L$0e$L$N%+- -	--s   BBc              +   <  K   t        | |||fi |E d {    t        t        |||      }dD ]  }|j                  r |d      }t	        d      |d<    |d      }t	        d      |d<    |d      }	t	        d      |d<   t        |||	fd|i	        |d      }t	        d
      |d<    |d      }t	        d
      |d<    |d      }	t	        d
      |d<   t        |||	fd|i	        |d      } |d      } |d      }	t        |||	fd|i	        y 7 w)Nr   rW  r  r	   r   r   r  r  r  r   r   r  r   r   )r   r   r   )rY  r   r   r   r[  rM   )
r@  r   r   r   r   r   r  inp1inp2r   s
             r   $reference_inputs_margin_ranking_lossr_    sE    0VUM\U[\\\V5P]^J, V	""f%DElDGf%DElDG'FElDGd$i@XYY f%DElDGf%DElDG'FElDGd$i@XYY &!&!F#$dF^[)<TUU1V ]s   DDDDc           
   +     K   t        t        |t        j                        }t	        t         |dd       |dd       |dd      fddi      t        d       t	        t         |dd       |dd       |d      f	      d
       y w)Nr  r   r   r  r   r  is not a valid valuer   r   z.margin_ranking_loss : All input tensors shouldr   r   r   r   r   rN   rM   r.  r/  s       r    error_inputs_margin_ranking_lossrc    s     V5==IJ
[Aq!1Aq9I:VWYZK[8]grtyfz{ *8NP P [Aq!1Aq9I:VW>8[\!QS Ss   BB)
is_stridedc             +   |  K   t         j                  j                  j                         rt         j                  nt         j
                  }dddi ft        t        fddi fdt        dfddi ft        fdd||d	ft        fd
t        fd|ift        fdt        t        t        fddift        fdt        t        t        f|dd	fg}t         j                  j                         r|j                  t        fddddif       |D ]:  \  }}	}
}t        |||d d |      }|rt        ||	|
fi | ,t        ||	fi | < y w)Nr   r  r   r   r   r   r   r   r   r5  )r  r  r   r[  r   )r   r      r   r  r   r   r   )r  r   rZ  r   )r   backendsmpsr;  halfr:  rH   rF   rG   rZ  r<  r   rM   )r  r   r   r   rd  r   other_dtyper(  r  r	  stridesr(  s               r   sample_inputs_new_fnsro    sF     % 2 2 ? ? A%**u||K 
RR
Q$
QIy"-
vv&AB uqdWk23
zAq!9x&78
y1a){e%LM
F zz tVVh-?@A6< 92\7F5 t&35 awA&AAa8889   D:D<c              +      K   dd||dft         fd||dft         t         fd||dft         t         t         fd||dfg}|D ]  \  }}}t        ||fd|i|  y w)Nr   r   r   r  r   r   r   r   )rH   rM   )r@  r   r   r   r   r(  r<  rn  s           r   sample_inputs_empty_stridedrt    s      
R5F34
tu78
Q5F;<
QI&AB	F #) Qw%PPPPQr"  c              +   @   K   d}|D ]  }t        ||||        y wN)r   r"  r   r   r   r   )r   r   r   )r   r   r   r   r   r  )r@  r   r   r   r   r7  cases          r   sample_inputs_emptyry  #  s1     E  Y$vU-XXY   c           	   +      K   d}|D ]@  }t        j                  t        t        |                  D ]  }t	        |||||        B y wrv  )r  permutationsry  rM  rM   )r@  r   r   r   r   r7  rx  layouts           r   sample_inputs_empty_permutedr~  ,  sY     E  e,,U3t9-=> 	eFdF6Vcdd	eer  c              +      K   t        t        dd      t        d       t        t        dd      t        d       t        t        dd	      t        d
       y w)Nr  )r#  r   zMNumber of dimensions in size does not match the length of the physical_layoutr   )r   Dimension out of ranger5  r   r   zDuplicate dim not allowed)rN   rM   r?  r   r   r   s      r   error_inputs_empty_permutedr  6  sa     
Dy)c 
 Dw', 
 F+/    AA!c              +   @   K   d}|D ]  }t        ||||        y w)N)r   r   r   r  )r@  r   r   r   r   valsrU  s          r   sample_inputs_scalar_tensorr  G  s/      D Y$vU-XXYrz  c           
   +      K   d ddddddt         t        t        f
}t        ||      D ]2  \  }}|	|||d}|t	        |d|	       "t	        ||f|	       4 y w)
Nr   r   r   r   r   r  r   r   r  )rF   rG   rH   r   rM   )	r@  r   r   r   r   rN  r  r  _kwargss	            r   sample_inputs_eyer  P  su     1aAq!Q1-Eu% 	<19 $emT9ab99aqd7;;	<r]  c              +      K   |t         j                  d}t        t        dd|      d       t        t        dd|      d	       t        t        d
d|      d       y w)Nr  r   r   r  z'n must be greater or equal to 0, got -1r   )*   z'n must be greater or equal to 0, got -7r   )r  z'm must be greater or equal to 0, got -3)r   r   rN   rM   )r   r   r   r  s       r   error_inputs_eyer  _  sl     %--8G
BR0= 
 BU73= 
 AE'2= r  c              +      K   d }t        | |||fi |D ]X  }d|j                  v r|j                  d   n|}t        |j                  g|j                   ||      i |j                   Z y w)Nc                 :    t        g | d      j                         S rS  rT  rV  s    r   rW  z'sample_inputs_new_full.<locals>.get_valt  rX  r   r   )ro  r   rM   rb  r   )r  r   r   r   r   rW  rl  	use_dtypes           r   sample_inputs_new_fullr  s  s     A (fe]UfU M /6.FFMM'*E	LLM!;;M(/	(:M>DmmM 	M	Mrq  c              +   D  K   d }d ||      i ft         t         f ||      i fdt         df ||      i ft         f ||      ||dft         f |t        j                        dt        j                  ift         f ||      ddift         f |t        j                        t        j                  ddfg}t        j                  j	                         r!|j                  t         f ||      ddif       |D ]&  \  }}}t        |||d d |	      }	t        |	|fi | ( y w)
Nc                 :    t        g | d      j                         S rS  rT  rV  s    r   rW  z(sample_inputs_full_like.<locals>.get_val  rX  r   r   r   r   r   r   r  rZ  r   r9  )
r  r   r   r   r   rW  r(  r<  r[  r(  s
             r   sample_inputs_full_liker  ~  s#    A 
WU^R 
Q$
QGENB'
wu~&AB wu||$w&=>
wu~%01
wu||$&NO
F zz tWU^h-?@A%+ 3!z6U6 t&35 !Z2622	3s   DD c              +     K   dgdi fdgdi fddgdi fdgdt        d      fdgdt        d      fddgdt        d      fddgdt        d      fg}|D ]&  \  }}}t        |||dd |      }t        ||fi | ( y w)	Nr   r  F)replacementTr   r   r   )r  r   rM   )	r  r   r   r   r   r7  r<  num_samplesr(  s	            r   sample_inputs_multinomialr    s     
a
q"
R!R
a%()
a$'(
QDT*+
QDU+,E ', 4"{FU6D&35 ![3F33	4   A=A?c              +   t   K   fd}|D ]%  \  }}} ||      }	 ||      }
t        |	|
fi | ' y w)Nc                 J    t        | t              rt        | dd       S | S )Nr   r   )rx  rk  r   )value_or_shaper   r   r   s    r   get_value_or_make_tensorz=sample_inputs_normal_common.<locals>.get_value_or_make_tensor  s0    nd+~U6#$4-:< < r   r  )r  r   r   r   r7  r   r  value_or_mean_shapevalue_or_std_shaper  r   s    ```       r   sample_inputs_normal_commonr    sO      <A /7/'(;<&'9:$.v../s   38c                 f    g g i fdgdgi fg dg di fddgdi fg dg di fg}t        | ||||fi |S )Nr   r   r   r   r   r  r   )r   r   r   )r  )r  r   r   r   r   r7  s         r   !sample_inputs_normal_tensor_firstr    s^     
R
qc2	Ir"
Qb	Ir"E 'tVUM5[TZ[[r   c              +      K   t        ddddg||       t        ddg d|t        j                  |       t        dt        d	dg||d
d |             y w)Ng?333333?r   r   r   ri  )r   r}  r   g@r   r   r   )rM   r   stridedr   r  r   r   r   r   s        r   "sample_inputs_normal_tensor_secondr    sY     
c3AeF
CC
c3	u}}U[
\\
c;1vU6qW[kxy
zzr   c           	   +   l   K   dgg ddgg dg}|D ]   }t        |||dd|      }t        |       " y w)Nr   r   r   r   r   r   r   r   rM   )r  r   r   r   r   r  r<  r(  s           r   sample_inputs_bernoullir    sT     	

	
A	F  U6A&35 !n	   24c              +      K   t        j                  d|      j                  d      }d}t        t	        t        j
                  |      d|i      |       y w)Nr   r$  r   unsupported operationoutr  r   )r   r  expandrN   rM   	rand_like)r   r   r   r   err_msgs        r   error_inputs_bernoullir    sL     

4'..t4A%G
[!3UAJG!(* *r   c           
   +      K   t         t         t         fdft         t         t         fdfdf}dD ]E  }|D ]>  \  }}t        |||d d |      }	|r|	j                         dkD  rd|	d<   t        |	|       @ G y w)Nr   r   r   r   ru  r   r  )rH   r   r   rM   )
r  r   r   r   r   r(  large_numberr<  r   r(  s
             r   sample_inputs_logcumsumexpr    s     
QA
QAF & &  	&JE3Ev $4*79A !!a%%	&&   A3A5c           
   +   X   K   t        t        t        t        f||d d |             y wr  rM   r   rH   r  s        r   sample_inputs_tracer    s-     
QF%4"/	12 2s   (*c           	   #   p   K   t        t        t        dt        j                  |            d       y w)Nr   r   r   r   zexpected a matrixr   )rN   rM   r   r   r   )r@  r   s     r   error_inputs_tracer    s'     
[YemmTZ![\j}
~~r  c              +     K   t        t        |||      }t        t        t        fdft        t        t        fdft        t        t        fdft        t        t        ft        d      ddfff}|D ]  \  }}t	         ||      |        y w)	Nr:  )r   r   r4  )r   r   r4  r   r   r   r4  r   )r   r   rH   r[  rM   	r  r   r   r   r   r   r7  r<  r   s	            r   sample_inputs_renormr    s     {%m\H!Qi%!Qi&!Qi#!Qi%,3/0E  6t(5/556s   B
Bc           
   +      K   t        t        |||      }ddddddt        t        fdft        t        t        fd	ff}|D ]  \  }}t	         ||      |
        y w)Nr:  )r   )r   r   )r   r   r   )r   )r   r   )r   r   )r   r  )r   r  r#  r  r   r-  r  s	            r    sample_inputs_transpose_swapdimsr    so     {%m\H"!! !ff!Qi $E  6t(5/556r]  c                 R    | j                   dk  r| S t        j                  | ||      S r   )r$  npswapaxes)r.  dim0dim1s      r   _numpy_ref_transposer    s%    vv{;;q$%%r   c                     t        t        |||      dt        t        ft        t        t        ft        t        t        ft        t        t        t        ff}fd|D        S )Nr:  r   c              3   @   K   | ]  }t         |              y wrt  r  ru  r<  r   s     r   rw  z(sample_inputs_adjoint.<locals>.<genexpr>       =UK(=   )r   r   rG   rH   r  r   r   r   r   r  r   s         @r   sample_inputs_adjointr    sF    {%m\H!Q!QQ1I1a|DF=f==r   c                 p    t        t        |||      t        t        ft        t        ff}fd|D        S )Nr:  c              3   @   K   | ]  }t         |              y wrt  r  r  s     r   rw  z"sample_inputs_T.<locals>.<genexpr>!  r  r  )r   r   rG   rF   r  s         @r   sample_inputs_Tr    s0    {%m\H!fq!fF=f==r   c           	   #      K   t        t        |t        j                        }|rOt	        t         |t                    d       t	        t         |t        t        t                    d       y y w)Nr  zeThe use of `x\.T` on tensors of dimension other than 0 or 2 to reverse their shape is not supported\.r   )	r   r   r   r   rN   rM   rG   rH   rF   )r  r   has_ndims_errorr   s       r   error_inputs_Tr  #  si     {6GH Xa[1'SU 	U
 XaA%67'SU 	U r  c              #      K   t        t        |||      }ddg}ddg}t        |||      D ],  \  }}}	d}
 |g |||
      } |g ||	|
      }||f . yw)z
    This function produces two tensors of shape (*, m, k) and (*, n, k) with k <= min(m, n).
    Their matrix product could be used to generate tensor of shape (*, m, n) of rank k.
    r   r   r  r   r   r   N)r   r   r   )r   r   r   r   r   batchesrO  batchr  r  r  r.  r/  s                r   %sample_inputs_singular_matrix_factorsr  4  s      {6m\H4jGq6Dwd3 q!^u^a^^$^u^a^^$d
	r   c              +     K   d }t        | |||      D ]E  \  }}|j                  ^ }}	}
|j                  d   }t        |||
d       j                  |       G t        | |||      D ][  \  }}|j                  ^ }}	}
|j                  d   }t	        g ||	||||      }t        |||
|      j                  |       ] y w)Nc                 0    | \  }}}||j                   z  |fS rt  r  )usvUrH   Vs       r   fnz%sample_inputs_svd_lowrank.<locals>.fnF  s    1a144x{r   r   )qrG   output_process_fn_gradr:  )r  r<  rM   r  r   )r   r   r   r   r   r  r.  r/  r  r  r  r  rG   s                r   sample_inputs_svd_lowrankr  D  s      8P]^ VAww1GGBK !Q!t,::RT:UUV 8P]^ SAww1GGBK%AeFR_`!Q!q)77r7RR	Sr  c              #   \   K   t        |       }	 t        t        ||            }|sy | wrt  )iterr  r   )iterablerO  itchunks       r   
chunk_iterr  ]  s3     	hB
fR&'	 s   *,c              +      K   t        | |||fi |}t        |d      D ]E  \  }}|j                  d= |j                  d= d|j                  d<   d|j                  d<   | | G y w)Nr   rG   FcenterT)r  r  r   )r   r   r   r   r   rk  s1s2s           r   sample_inputs_pca_lowrankr  e  st      (XQWXGWa( BIIcNIIcN#		("		(   A%A'c                     | j                   t        j                  k(  r2t        j                  | j	                  t        j
                              S t        j                  |       S rt  )r   r  r\  sincastyper   r   s    r   np_sinc_with_fp16_as_fp32r  q  s>     	ww"**wwqxx

+,,wwqzr   c                 
   t         ddft         t         t         fft         dt         ft         t         t         fft         dft         t         t         ffdt         t         t         ffdt         fddt         ffddf}fd|D        S )Nr   r   r  r   r   r   r   c              3   Z   K   | ]"  \  }}t        t        |d d       |       $ y wr  rM   r   )ru  rO  r<  r   r   r   s      r   rw  z-sample_inputs_broadcast_to.<locals>.<genexpr>  s:      ) dE 	E&d]jk	
)   (+rH   )r   r   r   r   r   r  s    ```  r   sample_inputs_broadcast_tor  z  s~    
QQ1I
QQ1I
Q!Q	1ay
Q!QJ) (	) )r   c              +      K   t        t        |||      d}|D ]+  ^}}t         |      t        fd|D                     - y w)Nr:  ))r   r   r   r   r  )r   r   r   c              3   .   K   | ]  } |        y wrt  r   r  s     r   rw  z2sample_inputs_broadcast_tensors.<locals>.<genexpr>       5Xahqk5Xr  r   )r   r   rM   r  )	r   r   r   r   r   r  r<  other_shapesr   s	           @r   sample_inputs_broadcast_tensorsr
    sN     {%m\HGJ * Z(5/5X<5X0XYYZs   AA
c           	   +   P  K   t        | |||fi |E d {    t        t        |||      }t        t        |||d      }d}|D ][  \  }}	}
}t         ||       ||	       ||
       ||      f       t         ||       ||	       ||
       ||      f       ] y 7 w)Nr:  Tr   r   r   rB  ))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   rM   )r@  r   r   r   r   r  r  r7  r.  r/  r0  ds               r   "reference_inputs_broadcast_tensorsr    s     .r65-ZSYZZZ5}UA5}dhiAE
  9
1a!A$adAaD!A$%788!A$adAaD!A$%7889 [   B&B$BB&c              +   6  
K   t        t        |||      
dt        fdt        fdt        fft        dft        dft        dffddt        ft        fff}|D ]  ^}}t         
|      t	        
fd|D                     |t
        j                  k(  s|t
        j                  k(  sS|t
        j                  k(  rt
        j                  nt
        j                  }t        t        |||      }	t         |	|      t	        
fd|D                      y w)	Nr:  r   r   r   )r   r  r   c              3   .   K   | ]  } |        y wrt  r   r  s     r   rw  z+sample_inputs_block_diag.<locals>.<genexpr>  r  r  r   c              3   .   K   | ]  } |        y wrt  r   r  s     r   rw  z+sample_inputs_block_diag.<locals>.<genexpr>  s     EhVWhqkEhr  )
r   r   rH   rM   r  r   	complex32r2  r   r  )r   r   r   r   r   r  r<  r	  non_complex_dtypemake_arg_non_complexr   s             @r   sample_inputs_block_diagr    s     {%m\H
Q!Q!Q!
Q!Q!Q!
Q!	 J !+ j(5/5X<5X0XYYEOO#u'?16%//1Iu}}#*;>OX^n{#| 259Eh[gEh@hiijs   B%D)A0Dc              +     K   d}t         t         dft         t         dz   dfft         t         ft         t         fft         t         t         ft         t         t         ffddddt         dffddd	d
dd|||dz   df|||dz   dff|dd|fd||ffdd|f|d||fff}t        t        |||      }dD ]@  }dddddddt        d      fD ](  }	|D ]!  \  }
}t	         ||
       ||      |	|       # * B y w)Nr   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  rw  )r   r   r   r  r   )use_mm_for_euclid_distdonot_use_mm_for_euclid_distrI  r  r  r  r4  r        @r   )rH   r   r   r[  rM   )r   r   r   r   r   small_Sr  r   cmr  t1_sizet2_sizes               r   sample_inputs_cdistr(    sB    G
QQAqM"
Q!Q
QQ1I	!Q
7GaK	+gw!Q-OP
1a	!Aw#89
Q7Aw89#J( {6m\HH O b"b#sCu> 	OA$. O !(7"3Xg5F2NNO	OO   C)C+c                 H    | j                         } | j                  |       | S rt  )copyfill)r.  r  s     r   _fill_npr-    s    	AFF5MHr   c                 @    |t         j                  u rd}nd}d|id|ifS )NTr   r  )r   r  )r   r   rb  r  s       r   _fill_sample_kwargsr/    s-    

ew.//r   c              +      K   t        | |||fi |E d {    t        t        |||      } |t        t        f      }t	        ||j                         f       y 7 HwNr   r   )ra   r   r   rH   rM   r  )r@  r   r   r   r   r   r  s          r   sample_inputs_comparison_opsr2    s[     /FE=[TZ[[[ {6m\H
Aq6
C
c
// \s   A AA	A c              +      K   t        t        |||      }d}|D ]P  \  }}t        |      D 	cg c]
  }	 ||       }
}	t        dt        |      dz
        D ]  }t	        |
|f        R y c c}	w w)Nr   ))rf  r   ))r   r   r   r   r   ))r   r   r   r   r   r   r   )r   r   ry  rM  rM   )r   r   r   r   r   r   r7  r<  num_tensorsr  tensorsr   s               r   sample_inputs_stackr6    s     {6m\HE
 $ 4{,1+,>?q8E???SZ!^, 	4CgSF33	44?s   +A3A.7A3c           	   +     K   t        t        |||      }t        j                  g d      t        j                  g d      gddft        j                  g d      t        j                  g d      gddft        j                  g d      t        j                  g d      gddft        j                  g d      t        j                  g d	      t        j                  g d
      gddff}|D ],  \  }}}	|D 
cg c]
  }
 ||
       }}
t	        |||	f       . t        j                  g d      t        j                  g d      t        j                  ddg      t        j                  g d      t        j                  g d      g}d\  }}	t        |      D ]3  }g }|D ]  }
|j                   ||
              t	        |||	f       5 y c c}
w w)Nr   r   r   r   )r   r      )r   r   i)  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   i  r5  )r   r   r   SizerM   ry  r<  )r   r   r   r   r   r   same_ndim_casesrN  r   
num_chunksrO  r5  different_ndim_casemax_dims                 r   sample_inputs_chunk_catr@    s     {6m\H 

9%

9% 1		
 

;'

;' 1		
 

9%

9% !		
 

<(

<(

<( !	
'O6 #2 ;sJ.34d8D>44'j(9::;
 	

9

< 

Aq6

9

; GZW~ ;' 	+DNN8D>*	+'j(9::	; 5s   C9G;G
CGc              +   ^  K   t        t        |t        j                        }t        j                  ddg      t        j                  dg      gdd}}}|D cg c]
  } ||       }}t        t        |||f      d       t        j                  ddg      t        j                  dg      gd	d}}}|D cg c]
  } ||       }}t        t        |||f      d
       t        j                  g d      t        j                  ddg      gd	d}}}|D cg c]
  } ||       }}t        t        |||f      d       t        j                  dg      t        j                  dg      gdd}}}|D cg c]
  } ||       }}t        t        |||f      d       t        j                  dg      t        j                  dg      gdd}}}|D cg c]
  } ||       }}t        t        |||f      d       d\  }}t        t        g ||f      d       t        j                  dg      t        j                  dg      gdd	}}}|D cg c]
  } ||       }}t        t        |||f      d       y c c}w c c}w c c}w c c}w c c}w c c}w w)Nr  r   r   r   r   r   zK_chunk_cat expects non-negative dim when input tensors have different ndimsr   r   z3_chunk_cat expects dim < ndim for all input tensorsr  zG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr   z&_chunk_cat expects positive num_chunksr#  z0_chunk_cat expects a non-empty input tensor listz#_chunk_cat expects non-empty tensor)r   r   r   r   r;  rN   rM   )	r   r   r   r   rN  r   r=  rO  r5  s	            r   error_inputs_chunk_catrB  ,	  s    {6GH $jj!Q0%**aT2BCR
3E*/0$x~0G0
G3
"34a  $jj!Q0%**aT2BCQ
3E*/0$x~0G0
G3
"34I  $jj3UZZA5GH!Q
3E*/0$x~0G0
G3
"34]  $jj!.

A40@A1b
3E*/0$x~0G0
G3
"34<  $jj!.

A40@A1a
3E*/0$x~0G0
G3
"34<  OC
Bc:./F  $jj!.

A40@A1a
3E*/0$x~0G0
G3
"349 a 1 1 1 1 1 1sS   AJ-J'AJ-:J	AJ-J,AJ->JAJ-J#.A3J-!J(0=J-c           
   +     K   t        t        |||      }t        t        ft        t        fddift        t        ft        t        fddift        t        ft        t        fddifddddifddddifdt        t        fddifdt        ft        t        fddifd	d	i ff}|D ]#  \  }}}t	         ||       ||      g|
       % t	         |dt
        j                        gd	       y w)Nr   r   r   r   r   r   r   r"  r   r  r   memory_formatr   )r   r   rH   rG   rM   r   channels_last)	r   r   r   r   r   r   r7  input_shape1input_shape2s	            r   sample_inputs_cat_concatrI  g	  s    {6m\H Q!Q%%
Q!Q%$
Q!Q%$	Ir{+	teQZ 	1vqz"
Q!Q%$	tR	(E /4 [*lF8L18L3IJSYZZ[ xE<O<OPQX\
^^r)  c              +   `  K   t        t        |t        j                        }t	        t         |t        t        f       |t        t        f      gd |dt        f      j                  dt        z  t        f      i      d       t	        t        g ddi      d	       t	        t         |t        t        t        t        f       |t        d
t        dz
  t        f      gddi      d       t	        t         |t        d
t        dz
  t        f       |t        t        t        t        f      gddi      d       t	        t         |t        dz
  d
f       |t        d
t        dz
  t        f      gddi      d       t	        t         |t        d
t        dz
  t        f       |t        dz
  d
f      gddi      d       t        j                  d
|      }t        j                  d|      }d}t	        t        ||fd
|d      |       t	        t        ||fd
|d      |       t        j                  d|      }t	        t        ||fd|d dd d f   i      |       t        j                  |      j                  dk(  rRt        d|t        j                        }t        ddt        j                        }	t	        t        ||	f      d       t	        t         |t        df       |t        ddf       |t        ddf      g      d       t	        t         |t        dt        f       |t        ddf       |t        t        df      gddi      d       t	        t         |t        ddf      d f      t        d       t	        t         |d       |d      g      d       t        d|t        j                        }
t        d|t        j                        }t	        t        |d|
i      t        d       y w)Nr  r  r   r   r  r  r   r   znon-empty list of Tensorsr   z/Sizes of tensors must match except in dimension+Tensors must have same number of dimensionsr$  )r   r   z7the written-to tensor refer to a single memory locationr   r  rZ  r   r  r  zSizes of tensors must matchzgot Noner   r   z(zero-dimensional.*cannot be concatenatedr5  z invalid combination of arguments)r   r   r   r   rN   rM   rH   r  rF   r&  randnr   r  rG   r   r:  )r   r   r   r   r   r   r  zx_cuday_cpur  s              r   error_inputs_catrQ  {	  s    {6GH [(Aq6"2HaV4D!E).!Q0@0G0GQPQ
0S(TV!8: :
 [UAJ7!<> > [(Aq!Q<"8(Aq!a%QRCS:T!U_dfg^hi!RT T
[(Aq!a%+;"<h1aQR|>T!U_dfg^hi!RT T [(AE1:"6!QAqAQ8R!S]bde\fg!NP P
[(Aq!a%+;"<hAqz>R!S]bde\fg!NP P 	Q'AF6*AGG
[!Q!0DE!(* *
[!Q!0DE!(* * 	F6*A
[!Q"1"a%0AB!(* * ||F  F*VF%--HF5Ffe_5%TV 	V [(Aq6"2HaAY4GSTVWYZR[I\!]^!NP P [(Aq!9"5xAq	7JHVWYZ\]U^L_!`).
4!>@ @
 [(Aq!9"5t!<=)!+- - [(2,!=>!KM M 	F6>AF6?A
[E1:69!CE Es   P,P.c              +     K   t        | |||fi |E d {    t        t        |||      } |d      } |ddt        j                        } |dt        j
                        j                  dd	d
      }t        |||fddi        |d      } |d      }t        |||f       t        |||f       y 7 w)Nr   r  rg  T)rB  r   r   r   r   rV  r   r   r   r   r  r"  )rI  r   r   r   r:  r\  permuterM   )	r@  r   r   r   r   r   r.  r/  r0  s	            r   reference_inputs_catrU  	  s     'FE=SFSSS{6m\H 	A$ellCA%--088AqAA
q!Qi

33 	AA
q!Qi
  
q!Qi
  ! Ts   B>B<B'B>c                     d t        j                  | }t        fd|D              }t        j                  j
                  |d| i\  }}t        |   S )Nc                 d    t        | t        j                        rt        j                  |       S | S rt  )rx  r  ndarrayr   
from_numpyr  s    r   _maybe_torchz0_elementwise_type_promo_np.<locals>._maybe_torch	  s&    a$##A&&r   c              3   .   K   | ]  } |        y wrt  r   )ru  r.  rZ  s     r   rw  z-_elementwise_type_promo_np.<locals>.<genexpr>	  s     ;AQ;r  type_promotion_kind)pytreearg_tree_leavesr  primsutilselementwise_dtypesr;   )r\  r   	flattenedtransformedresult_dtyper  rZ  s         @r   _elementwise_type_promo_npre  	  sZ    
 &&-I;;;Kkk44	1/1OL! %\22r   c                     t        d | D              }t        |      dk(  rFt        | t        j                  j
                  j                        }t        j                  d|      S t        j                  ||      S )Nc              3   ^   K   | ]%  }|j                   d k(  r|j                  dk(  r"| ' yw)r   r   N)r$  rO  )ru  r.  s     r   rw  z_cat_np.<locals>.<genexpr>	  s$     M!!1Ms   #--r   r\  rV  axis)
r  rM  re  r_  r`  ELEMENTWISE_TYPE_PROMOTION_KIND	NO_OPMATHr  emptyconcatenate)	input_seqr   r(  np_dtypes       r   _cat_nprq  	  sc    MiMMF
6{a- % K K U UW xx**>>&s++r   c                 :   t        | |t        j                  j                  j                        }t        | t        j                        r| j                  |      } t        |t        j                        r|j                  |      }t        j                  | |      S )Nrh  )
re  r_  r`  rk  DEFAULTrx  r  rX  r  floor_divide)r.  r/  r   s      r   _floor_divide_npru  	  so    &		!KKGGOOQE !RZZ HHUO!RZZ HHUO??1a  r   c              +      K   t        t        |||      }t        ft        ft        fft        t        ft        t        ft        t        fff}|D ]*  \  }}}	 ||       ||       ||	      f}
t        |
       , y wNr:  r  )r   r   r   r   r   r   tensor_shapesr  r  s3r5  s              r   "sample_inputs_hstack_dstack_vstackrz  	  s     {%m\H taT
Q!Q!Q 	M $ #
BB=(2-">'""#   A;A=c              #   :  K   t        t        t        j                  |d      }t        ft        t        t        t        ft        fff}|D ]5  \  }}} ||       ||       ||      f}t        t        |      d       7 t        t        d      d       y w)NFr:  rK  r   r   zexpects a non-empty TensorList)r   r   r   int32rH   rN   rM   )r@  r   r   rx  r  r  ry  r5  s           r   !error_inputs_hstack_dstack_vstackr~  
  s     {%++fTYZH
1a|aT"M $ j
BB=(2-">W-;hiij [_2R
SSs   BBc           	   +      K   t         fdft         t         fdft         t         fdft         t         fdft         dt         fdft         t         t         fdff}|D ]"  \  }}t        t        ||||      |f       $ y w)Nr   r   r   r:  r   rH   rM   r   )r   r   r   r   r   
shape_dimsr<  r   s           r   sample_inputs_unbindr  
  s      4)q61+q61+q62,q!9a.q!9a.J ! '
s+e54AC #v' 	''   A:A<c              #      K   t        t        t        j                  |d      }t	        t         |d      d      t        d       t	        t         |d      d      t        d	       y w)
NFr:  r   r"  r   z5Dimension specified as 0 but tensor has no dimensionsr   r  r  )r   r   r   r}  rN   rM   
IndexError)r   r   r   s      r   error_inputs_unbindr  
  s[     {%++fTYZH
["D9j!XZ Z
[$d;
!9; ;   A-A/c                 p    t        fdt        j                  | | j                           D              S )z&A numpy implementation of torch.unbindc              3   @   K   | ]  }|j                          y wrt  )squeeze)ru  r  r   s     r   rw  z#reference_unbind.<locals>.<genexpr>(
  s     HA3Hr  )r  r  splitr<  )r(  r   s    `r   reference_unbindr  &
  s)    H!QWWS\3)GHHHr   c              +   
  K   t        t        |||d d       }t         |t        t        f      dt        t        t        fdt        d|             t         |t        t        f      dt        t        t        dz  fdt        d|             t         |t        f      dt        j                  g t        j                  |             t         |t        f      dt        j                  g g gt        j                  |             t         |d      dt        j                  dgt        j                  |             t         |d      dt        j                  dt        j                  |             y w)	Nr  r   r   Tr$  r   r   r   )
r   r   rM   rG   rH   gather_variabler   r   r  ry  r   s         r   sample_inputs_gatherr  *
  sD    {6maelpqH
!Q	A1d6:< < !Q	AFQ4?A A
 !	Ru{{6:< < !	b"XU[[@B B
 	aSF;= = 	Qekk&9; ;s   FFc           	      "   t        |dk(  rdn|      D ]z  }t        |dk(  rdn|      D ]c  }t        |dk(  rdn|      D ]L  }	|||	g}
t        d| j                  |      dz         |
|<   t        j                  |      d| | t        |
      <   N e | y )Nr   r   r   )ry  slicerO  r   randpermr  )idxr   dim_sizeelems_per_rowr  r  orv  jr  iis              r   _fill_indicesr  G
  s    q1a( KC1Hq!, 	KAq1a0 KAY388C=1#453!&!9!M!JE"IK	KKr   c              +   Z  K   t        j                  d|t         j                        }t        j                  d|t         j                        }t	        d|t         j                        }t        t        |d|f      d       |j                  t         j                        }t        t        |d|f      d	       t        j                  d|t         j                        }t        j                  d|t         j                        }t        j                  d
|t         j                        }t        t        |d|fd|i      d       t        j                  d|t         j                        }t        j                  d|t         j                        }t        t        |d|f      d       t        j                  d|t         j                        }t        j                  d|t         j                        }t        t        |d|f      d       t        j                  |      j                  dk(  rht        j                  d|t         j                        }t        j                  d|t         j                        }t        t        |d|f      d       t        j                  d|      j                  d      }t        j                  d|      }t        j                  g d|t         j                        }	t        t        |d|	ft!        |            t"        d       t        t        |d|	ft!        |            t"        d       t        t        |	j%                         d|	dd  ft!        |	d d             t"        d       y w)N)r   rf  r  )r  r?  r  r   r   z"Size does not match at dimension 0r   Expected dtype int64 for indexr   r  r  z!Expected out tensor to have dtyper  z4Index tensor must have the same number of dimensionsr   r   r  ))r      r?  z'index 23 is out of bounds for dimensionr   r$  r   r  r   r   r   r  r  r   )r   r   r   r  r   rN   rM   r  r}  rm  r  r   r  r  r  ry  r  r?  r  )
r   r   r   srcr  bad_srcbad_idxr  r   inds
             r   error_inputs_gatherr  O
  s     ,,'emm
LC ,,'ejj
IC &u}}EG
[3y9!EG G ffU[[!G
[Aw<8!AC C ,,'emm
LC
,,'ejj
IC
++fV5==
AC
[As8UCLI!DF F
 ,,'emm
LC
,,vfEJJ
?C
[As84!WY Y ,,vfEMM
BC
,,'ejj
IC
[As84!WY Y
 ||F  E)ll+F%--Pll,V5::NS3y9%NP 	P 	

4'..t4A
**T&
)C
,,yu{{
CC
[As9Ta[I ,!8: : [As9Tc]K ,!8: : [As12w=RUVXWXRYIZ[ ,!8: :s   N)N+c              +      K   t        j                  d|      j                  d      }t        j                  d|      }t        j                  g d|t         j                        }t        t        ||ft        |            t        d	
       t        t        ||ft        |            t        d	
       t        t        |j                         |dd  ft        |d d             t        d	
       y w)Nr   r$  r   r  r  r  r  r  r  r   r   r   )
r   r  r  r   ry  rN   rM   r  r?  r  )r   r   r   r   r  r  s         r   error_inputs_taker  
  s     

4'..t4A
**T&
)C
,,yu{{
CC
[C6$1+F ,!8: : [C6$3-H ,!8: : [CG:dsSVTVxFXY ,!8: :s   C<C>c              +     K   t        d|t        j                        }t        j                  d|t        j                        }t        j
                  d|t        j                        }t        t        |d||f      d       t        d|t        j                        }t        j                  d|t        j                        }t        j
                  d|t        j                        }t        t        |d||f      d	       t        d|t        j                        }t        j                  d|t        j                        }t        j
                  d
|t        j                        }t        t        |d||f      d       t        d|t        j                        }t        j                  d|t        j                        }t        j
                  d|t        j                        }t        t        |d||f      d       t        j                  |      j                  dk(  rt        d|t        j                        }t        j                  d|t        j                        }t        j
                  d|t        j                        }t        t        |d||f      d       y y w)N)r   r   r  )r#  r   r  r   r   z,Expected self.dtype to be equal to src.dtyper   r  )r   r   r   zCIndex tensor must have the same number of dimensions as self tensor)r   r   r   ))"   r   r   zBIndex tensor must have the same number of dimensions as src tensorr  z5index 34 is out of bounds for dimension 0 with size 3)r   r   r   r   r  r&  r:  rN   rM   r}  r   r  )r   r   r   r  r  dsts         r   $error_inputs_scatter_and_scatter_addr  
  s
    
fV5==
AC
,,'ejj
IC
++fV5<<
@C
[AsC=9!OQ Q fV5==
AC
,,'ekk
JC
++fV5==
AC
[AsC=9!AC C fV5==
AC
,,'ejj
IC
++iemm
DC
[AsC=9!fh h iemm
DC
,,(uzz
JC
++fV5==
AC
[AsC=9!eg g
 ||F  E)&u}}Ell,V5::Nkk&u}}ES3}=%\^ 	^	 *s   J>K c              +   x   K   t        j                  d|      }t        t        |d      t        d       y w)Nr   r$  )r4  r   r  r   z-needs at least 2 dimensions, got 0 dimensionsr   r   rM  rN   rM   r?  r   r   r   zero_ds       r   error_inputs_renormr  
  s3     [[F+F
[m<!PR R   8:c           	   +   Z  K   t        j                  d|      }t        t        |||f      t        d       t        j
                  dd|      }t        j
                  dd|      }t        j
                  d	d|      }d
}d
}t        t        |||||f      t        d       y w)Nr   r$  r   z%input must have at least 2 dimensionsr   r   r   r   r   r   r   Tz?tau.shape\[-1\] must be less than or equal to input.shape\[-1\])r   rM  rN   rM   r?  full)	r   r   r   r  tensor_0tensor_1tensor_2bool_3bool_4s	            r   error_inputs_ormqrr  
  s     [[F+F
[vv.>?L!HJ J zz'1V4Hzz$&1Hzz'1V4HFF
[8VV0TUbn!ce e   B)B+c              +      K   t        j                  d|      }t        t        |d      t        d       t        j                  ddd|      }t        t        |d      t        d       y w)Nr   r$  r"  r   z1D or 2Dr   r   r  r  s       r   error_inputs_diagr  
  s`     [[F+F
[d3!+- -[[Aq0F
[d3!+- -   A0A2c              +   $  K   t        j                  dd|      j                         }t        j                  d|      t        j                  d|      j	                  ddd      g}|D ]"  }t        t        ||f      t        d       $ y w)Nr   r$  r  r   r   z'weight' must be 2-Dr   )r   r  r  r   reshaperN   rM   r?  )r   r   r   indicesrU  rQ  s         r   error_inputs_embeddingr  
  s     jjAf-224GS(S(00Aq9G
  =V7*=,%;= 	==s   BBc              +   l   K   t        t        t        j                  dddd|            d       y w)Nr   r   r   r   r$  zexpects a tensor with <= 2r   )rN   rM   r   rM  r  s      r   error_inputs_tr  
  s/     
EKK1a6:;0 r  c           	   +   b  K   t        j                  dddt         j                  |      }t        t	        |d      d       t        j                  ddt         j
                  |      }t        t	        |d      d	       t        j                  ddt         j                  |      }t        j                  ddt         j                  |      }t        t	        |dt        |
            d       t        j                  dt         j                  |      }t        t	        |d      d       t        j                  dt         j                  |      }t        t	        |d      d       t        j                  dt         j                  |      }t        t	        |d      d       t        j                  dt         j                  |      }t        t	        |d      d       ddt        dfdt         dfddt        ff}d}d}t        j                  |      j                  dk(  rdnd}t        j                  |      j                  dk(  r|D ]  }	d|	d}|D ]5  }
t        t	        t        j                  |
      |      |	du r|n|       7 t        j                  d|      }t        t	        ||      |       t        j                  dd|      }t        t	        ||      |       d|dd d f<   t        t	        ||      |        y y w) Nr   r   r   r   r  r   zprob_dist must be 1 or 2 dimr   z9multinomial only supports floating-point dtypes for inputr  r  z#multinomial expects Long tensor outr"  z#cannot sample n_sample <= 0 samplesr  )r   Fz"cannot sample n_sample > prob_disti  r   z"number of categories cannot exceed)r  rK  r  r  z>probability tensor contains either `inf`, `nan` or element < 0z invalid multinomial distributionr  rv  F)r  r  r  Fr$  )r   rm  r:  rN   rM   r  r  r   r	   r   r  r   r&  )r   r   r   r   r   r(  r   r   rep_argrepr<  s              r   error_inputs_multinomialr  
  s    Aq!5<<?A
[.!?A A 	Aq

6:A
[.!\^ ^ 	AqV<AAqV<A
[dqkB!FH H 	AU\\&9A
[.!FH H 	AU\\&9A
[/!FH H 	AU\\&9A
[5!EG G 	HELL@A
[.!EG G b#r]R#rNRSMJFOH1H$||F388EAmxG||F  E) 	3C%&s;F U U\\%-@!P9<X8U UU Af-A[6:)13 3 Aq0A[6:)13 3 AadG[6:)13 3)	3 *s   L-L/c              +     K   t         j                  t         j                  t         j                  fD ]  }t        j                  g dg dg dg||      }d}dg}t        t        |t        ||d      	      t        d
       t        t        |t        d      	      t        d       d}d}t        t        |t        ||d      	      t        d       d}t        j                  g dd      t        j                  g dd      g}t        t        |t        ||d      	      t        d       t        t        |t        d      	      t        d       t        j                  dgdgdgg      }t        t        |t        d      	      t        d       t        j                  ddgddgg      }t        t        |t        d      	      t        d        y w)Nr   r   r   r   )r  r  r  r  r?  r   r   )spacingr   
edge_orderr  z<torch.gradient expected spacing to be unspecified, a scalar r   r   )r  z;torch.gradient only supports edge_order=1 and edge_order=2.r  z0dim 1 appears multiple times in the list of dimsr#  r%  r  r$  metaz=torch.gradient expected each tensor to be on the same device,r    r   z:torch.gradient expected each dimension size to be at leastr   )
r   r  r   r2  r   rN   rM   r  r?  r  )r   r   r   r   r(  r   r  coordinatess           r   error_inputs_gradientr  5  s    **emmU__= $cLL)Y	:6QVW%QtGYZ/[\$0%ce 	e Qtq/AB$0%bd 	d QtGYZ/[\$0%WY 	Y ||Ie<ell9]c>deQtKS]^/_`$0%df 	f Qt{;$.B@ 	@ LL1#sQC)Qtq/AB$0%ac 	c LL1a&1a&)*Qtq/AB$0%ac 	cE$cs   G1G3c              +      K   t        | |||t        ddd            E d {    t        t        |||      }t	         |t
                     t	         |t
              d       y 7 Hw)	NrI  r  TlowerupperrE  r  r   F)rE  )rc   r  r   r   rM   rH   r   s         r   sample_inputs_rrelur  \  sh     .Bb[_9`b b b {6m\H
hqk
""
hqkE
22bs    A-A+A	A-c              +      K   t        t        t        f|t        j                        }t	        t        |ddd      d       y w)Nr  r  r   )r  r  r  z;Lower bound should be less than or equal to the upper boundr   )r   rH   r   r   rN   rM   )r   r   r   rb  s       r   error_inputs_rrelur  d  s<     AvU]]CE
[s/KL!^` `s   AAc           	   +     K   t        j                  d|      j                  d      }t        j                  d|      }t        j                  g d|      }t	        t        ||ft        |            t        d	       t	        t        ||ft        |            t        d	       t	        t        |j                         |ft        |            t        d	       y w)
Nr   r$  r   r  )TFTTFFr  r  r  r   )	r   r  r  r   rN   rM   r  r?  r  )r   r   r   r   r   masks         r   error_inputs_masked_selectr  i  s     

4'..t4A

4'A<<?OD
[$!E ,!8: : [$!E ,!8: : [TGDTNS ,!8: :s   C'C)c              +      K   t        j                  t        gt        ggggggggggggggggggggggggg|      }|dk(  r*t        t	        |t        d            t        d       y y w)Nr$  rZ  r   r  r  z0CUDA Tensors cannot have more than 25 dimensionsr   )r   r   r	   rN   rM   r  r?  r   r   r   r   s       r   error_inputs_medianr  z  s     cU #u-& ,' +( *) )* (+ ', &- %. $/ #0 "1 !2  3 4 5 6 7 8 9 : ; < =EK	MAQt~>$0%WY 	Y 	   A+A-c           	   +   .  K   t        j                  d|      j                  d      }t        j                  d|      }t        j                  ddgt         j                  |      }t        t        |d|ft        |      	      t        d
       y w)N)r   r   r$  )r   r   )r   r   r   r   r   r  r  r  r   )	r   r  r  r   ry  rN   rM   r  r?  )r   r   r   r   r   r  s         r   error_inputs_index_selectr    sq     

6&)008A

6&)A
,,1vU[[
@C
[!S4A;G ,!8: :   BBc           
   +      K   t        j                  ddgddgddgg      }t        j                  ddg      }t        t        |dt        j                  ddg      |f	      t        d
       y w)Nr  r        @r        @       @r   r   r   zsource tensor shape must match self tensor shape, excluding the specified dimension. Got self.shape = \[3, 2\] source.shape = \[2\]r   )r   r   rN   rM   r?  )r   r   r   resultsources        r   error_inputs_index_addr    sn     \\B8b"XBx89F\\2r(#F
[q%,,1v2F.OP ,"jk ks   A.A0c              +      K   d}t        j                  dd|      t        j                  dd|      g}|D ]"  }t        t        ||f      t        d       $ y w)	Nr   r   r   r$  r   r   r  r   )r   rM  rN   rM   r  )r   r   r   r   srcsr  s         r   error_inputs_logcumsumexpr    s\     
CKK1V,ekk!Qv.NOD ?Sv6$.%=? 	??r]  c           
   +     K   t        t        |||d d       }t         |t        t        f      t	        t        t        fdt        d|      d       t         |t        t        f      t	        dt        dz  fdt        d|      d       t         |dt        f      t	        t        t        dz  fdt        d|      d       t         |t        t        f      t	        t        t        dz  fdt        d|             y w)Nr  r   Tr$  r   r   )r   r   rM   rH   r  r   s         r   sample_inputs_take_along_dimr    s     {6maelpqH
!Q/1a&!QVLaQ Q !Q/1a1f+q!T&QSTV V !Q/1a1f+q!T&QSTV V !Q/1a1f+q!T&QS Ss   DDc              +   l  K   t         dt         f}d}d}| j                  dv r.t        t        t	        j
                  ||            |       n;| j                  dv r-t        t        t	        j
                  ||            |       dgd	z  }d
}t        t        t	        j                  ||      ddi      |       t        t        t	        j                  ||      ddi      |       | j                  dv rSddg}	d}
t	        j                  t         t         t         t         |      }|	D ]  }t        t        |d|i      |
         t	        j                  t        t        t        j                  |      }t	        j                  t        t        j                  |      }t	        j                  t        t        j                  |      }t	        j                  t        t        j                  |      }|rd}nd}d}| j                  dv rt        t        |d|d      |       n-| j                  dv rt        t        |d||fd      |       d}d| j                  vrt        nt        }t        t        t	        j
                  ||      ddi      ||       y w)Nr   r  zOcannot compute aminmax over an empty dimension as the operation has no identity)r  r  
_refs.amax
_refs.aminr$  r   )aminmaxr   A   z-only tensors with up to 64 dims are supportedr   r   r  @   r  )r   r  zin the list of dimsr   zzAttempting to cast from torch.float32 to out tensor with dtype torch.int32, but this can't be cast because it is not safe!zgExpected the dtype for input and out to match, but got Float for input's dtype and Int for out's dtype.z?Expected out tensor to have dtype float, but got double insteadrL  refsr   )rH   r  rN   rM   r   r  rM  rF   r   rm  r:  rY  r  r?  )r   r   r  r   r<  err_msg_amax_aminerr_msg_aminmaxrN  r   dimsr   r   r   input5
max_values
min_valuesillegal_valueserr_msg_amax_amin2err_msg_aminmax2r   r   s                        r   error_inputs_aminmax_amax_aminr     sN     1IE#gO||CCUZZf%EFTeff		$UZZf%EFTcdd C"HE>H
[U6!BESU;W!)+ +
[U6!BESU;W!)+ + ||CC (KK1a62 	XC[E3<@hWW	X [[AU]]6BFQemmFCJQell6BJ[[%))FCN
 \KX||CCVAn4UV%79 	9		$VAzS]F^4_`%57 	7 H%W\\9|J
[E&!A5RS*U *B Bs   J2J4c           	   +     K   t         t         t         fi ft         t         t         fddift         t         t         fdddfdddifdi fddddft         dt         fddiff}|D ]   \  }}t        t        ||||      fi | " y w)Nr   r   T)r   r4  r   r   r:  r  )r   r   r   r   r   r  r<  s          r   sample_inputs_aminmaxr    s     
QB
QUAJ
QA$/0	eQZ	R	Q4()
QUAJ&J $ vU6W 	s   BBc              +      K   t        j                  d|      }d}t        t        ||f|      t        d|        y w)Nr   r   r$  r   r  z#order must be non-negative but got r   )r   r  rN   rM   r?  )r   r   r   r(  r  s        r   error_inputs_diffr    sD     

6&)A
A
[!v> ,#Fqc!JL Lr=  c              +   N  K   t        t        |||      }dt        fdd d ft        dfdd d ft        dfdd d ft        t        fdd d ft        t        fdd d ft        t        fddt        fdt        fft        t        fdd dt        fft        t        t        fdd d ft        t        t        fdd d ft        t        t        fdt        dt        ft        dt        fft        t        t        fdt        t        dft        t        dfft        t        t        fdt        t        t        ft        t        t        fff}|D ]e  \  }}}	}
|	dn|	|   }|
dn|
|   }||   |z   |z   }t	        |      D ]3  } ||      }|	r ||	      nd }|
r ||
      nd }t        |||||       5 g t         |t        t        t        f      t        dz   d       t         |t        t        t        f      t        dz  dz   d |t        t        t        f       |t        t        t        f             y w)Nr:  )r   r   NNr   r   r   r   )r   r   rH   rI   ry  rM   )r   r   r   r   r   r   r  rO  r   size_prependsize_appendprepend_sizeappend_sizer  r  input_tensorprependr<  s                     r   sample_inputs_diffr    s    {%m\H 	
q$
QD$
QD$
QD$
QD$
QQFQF#
QD1a&!
b"q$%
b"q$%
b"q2q"+Ar{3
b"q2r1+B{3
b"q2r2,R58J 1; E,c<)1qS8I'/ak#6F9|+k9x 	EA#D>L0<h|,$G.9Xk*tFlAsGVDD		E	E hB|,a!eQ
77
hB|,a!eaiHb"b\<RT\^`bdfh]iTj
kks   H#H%c              +     K   t        t        |||      }dt        ft        t        ft        t        t        ft        dt        ft        dt        ff}t        |t	        dd      ddgddg      D ]a  \  }}}	}
 ||      }|	r ||      nd }t        ||||
        ||dz   f      }t        j                  |      \  }}t        ||||
       c y w)	Nr:  r   r   r   r   FTrQ  density)r   r   rH   r   ry  rM   r   sort)r   r   r   r   r   r   rN  rO  bin_ctweightedr  r  r  bins_tensorsorted_bins_bins_indicess                   r   sample_inputs_histogramr  "  s     {%m\H!1v1ay1a)aAY?E+25%1+t}W\^bVc+d 
A'fh~*2,!.A 	A 
}-%*ZZ%<"],!.A 	A
A   CCc              +     K   t        t        |||      }t        t        ft        t        t        ft        dt        ft        dt        ff}d}t        ||ddgddg      D ]`  \  }}	}
} ||      }|	d |d    }|
r ||d d       nd }t	        ||||       |D cg c]  } ||dz          }}t	        ||||       b y c c}w w)	Nr:  r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   FTr   r  rX  )r   r   r   r   r   r   rN  bin_ct_patternsrO  bin_ct_patternr  r  r  r  r  ctr  s                    r   sample_inputs_histogramddr  3  s     {%m\HVaAYAq	Aq!95EIO3:5/TY[_S`chjnbo3p 
A/nh~	b*/7cr+T,!.A 	A 399BxQ'99,!.A 	A
A :s   BCC-Cc              +      K   g d}t        t        t        j                  |d      }d}t	        t         |dd      |      |       y w)Nr  Fr:  zThistogramdd: The size of bins must be equal to the innermost dimension of the input.r   r   r   r   r   r   r[  rN   rM   )r   r   r   invalid_binsr   msgs         r   error_inputs_histogramddr#  E  s?     "L{%++fTYZH
`C
[!Q>C
PPr  c              +   F  K   t        t        |||      }dt        ft        t        ft        t        t        ft        dt        ft        dt        ff}t        |ddgddg      D ]:  \  }}}	t	         ||      ||	       dD ]  }
t	         ||      |
||		        < y w)
Nr:  r   r   r   r   r  )minmax)r   r   r  )binsr%  r&  rX  )r   r   r   r   r   r   rN  rO  r%  r&  r'  s              r   sample_inputs_histcr(  K  s     {%m\H!1v1ay1a)aAY?E!%!SAr7; Kc3(4.cs;;  	KDhtn4ScJJ	KKs   BB!c              +   R  K   t        t        |||      }t        t        t        fddg      D ]u  \  }}t        j                  d||f||      }|r	 ||f      nd }	t        |j                         j                               }
d|
dz  |
d|
z  fD ]  }t        ||	|        w y w)Nr:  FTr   r   r   )rU  	minlength)r   r   r   rH   rG   r   randintrY  r&  rU  rM   )r   r   r   r   r   r   rO  r  r  r  max_valr*  s               r   sample_inputs_bincountr-  X  s     {%m\H!1a&5$-8 Jh}}QtgU6R-5$)4l&&(--/0W\7AK@ 	JImyJ J	JJ   B%B'c              +     K   t        t        |||      }dt        ft        ft        ft        t        ft        ft        t        t        ft        ft        dt        ft        ft        dt        ft        ff}|r|dz  }t        |ddgddg      D ]8  \  \  }}	}
} ||      } ||	      j	                         }t        |||
|       : y w)	Nr:  r   r   r   )))      ))r1  r0  ))    r2  r  ))r2  r   r2  !   FT	out_int32right)r   r   rH   r   msortrM   )r   r   r   r   reference_inputs_moder   r   rN  r  nbr5  r6  r  
boundariess                 r   sample_inputs_bucketizer;  e  s     {%m\H!WtQi1a&!1ay!n1ay!nPQSTVWyZ[n]ERR/6uudmeUY]/[ <+b9e,b\'')
,
$-U< 	<	<s   CC
T)r8  c           	   +      K   t        t        t        j                  |d      }t	        t         |t        t        t        f       |t        t        f            d       y w)NFr:  z%boundaries tensor must be 1 dimensionr   )r   r   r   r[  rN   rM   rH   r   r   r   r   s       r   error_inputs_bucketizer>  v  sJ     {%++fTYZH
[1a)!4h1v6FG!HJ Jr2  c           	   +     K   t        t        |||      }dt        fdt        ft        t        ffdfdt        t        ft        t        ffdfdt        t        t        ft        t        t        ffdft        fddff}t	        |ddgddgddg      D ]  \  \  }}}	}
}} |||
	      }|D ]  } |||
	      }|	r|j                         }t        j                  |      d
k(  r |}t        |t        j                  ||
      }nt        j                  |      \  }}|rdnd}t        ||||       t        ||||       t        |||||       t        |||||         y w)Nr:  )r"  )r"  Fr   F)r  r  F)r   r   r   )r@  Fr   TrA  r   )r   r   rB  r6  leftr4  )r5  side)r5  r6  sorter)r5  rC  rD  )r   r   rG   rF   r   rU  r  prodr   ry  r  rM   )r   r   r   r   r   r   rN  rO  input_sizes	is_scalarrB  r5  r6  unsorted_tensor
input_sizerb  boundary_tensorrD  rC  s                      r   sample_inputs_searchsortedrK  {  s    {%m\H 	
QD1a&!5)"
Q1a&E"(
QaAYL%(
udE LSt}udmeT]L eG&{Iy% #4}E% 	eJZ}EE

wwt}!"1$TV[hi*/**_*E'#7Dou	QVWWou	PTUUou	QV_effou	PT]cdd	e	es   E%E'c           	   +     K   t        t        |||d d       }t        fd d dft        fdd dft        t        fd d dft        t        fddgd dft        t        fddgddfdddgddff}|D ]   \  }}}	}
 ||      }t        ||	||
	       " d
}|D ]`  \  }}}	}
 ||      }g }|D ]9  }t	        j
                  ||      }|j                  |j                  |             ; t        ||	||
	       b y w)Nr  r   r  r   g @r#  r   r   r   r  )r   r  r  ))r   r   r   ))r  r  g      @)r  r         @r   r   r   )rN  ))r  r  r  )r  rO  r  r#  r   r$  )r   r   rH   rM   r   r   r<  r  )r   r   r   r   r   r   test_cases_floatrO  r  r   r  r(  test_cases_tensorr  coordinates_tensor_listcoordsr.  s                    r   sample_inputs_gradientrU    s>    {6maelpqH
tT1
r4
QtQ
Q#sT1%
Q#sVQ'	RHfa( +; N&gsJTN!g*MMN /@ 	^*k3
TN"$! 	8F VF3A#**144;7	8 !.ER\]]	^rq  c              +     K   t        t        |||      }ddgft        dd      ft        dd      dgfg dg dg dgfg d	g d
g dgft        d       t        d       ddggft        d       ddgt        d       gfddgt        d       t        d       gfddgddgt        d       gfddggfddgt        d       gfddgt        gfg dg dt	        j
                  g d      gft        dt        |      ft        t        f      fg}|D ]&  }t         |t        t        t        f      |       ( t         |t        t        t        t        f      t        d       ddgt        d       ddggf       y w)Nr:  r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r$  r   )
r   r   r  Ellipsisr   
LongTensorindex_variablerH   mask_not_all_zerosrM   )r   r   r   r   r   r   	test_argsr   s           r   sample_inputs_getitemr_    s    {%m\H
Q		q!
1+q	
Y		*,
Y		*,
+uT{QF	+-
+1vuT{	+-a&%+uT{	+-a&1a&%+	&(a&a&%+	 a&(	
Y 0 0 ;	<>	1V	,.	QD	!#I$  :(Aq!9-D99: h1a|,U4[1a&%PT+XY[\W]4^3`
aas   E5E7c           	   +     K   t        t        |||      }dD ]  }t         |t        t        f      t	        |rdndt        |      f ||rdndt        f      |       |r)t        j                  t        t
        j                        nt        t        f      }t         |t        t        f      |f |t        f      |        y w)Nr:  rv  r   r   r$  )
accumulaterV  )	r   r   rM   rH   r\  r   r&  r  r]  )r   r   r   r   r   r   ra  r  s           r   sample_inputs_index_putrb    s     {%m\H# O
aWAAfEG:a1a01!# 	# 4>u{{1EJJ/CUWXVZC[aVth!:O 	OOs   C
Cc              +     K   fd}fd}t         |              t        dd      }ddg}t        |||      D ]  \  }	}
}t        j                  k(  r"t        j
                        j                  dk(  st         |       |	|
       t        j
                        j                  dk(  sst         |       |	|
|	        t        
      }t        t        j                  di |       t        t        j                  di |d       t        t        j                  di |dd       t        t        j                  di |       t        t        j                  di |d       t        t        j                  di |dd       t         |       d       t         |       dd       t         |       ddd	       y w)Nc                      t        j                  t        t        z  t        z  t         j                        j	                  t        t        t              } | j                        j                        } | S Nr   )r   r  rH   ry  viewr  r  resr   r   r   s    r   small_3d_uniquez+sample_inputs_sort.<locals>.small_3d_unique  sO    nnQUQYekk&INNqRSUVWffUm**=9
r   c                      t        j                  t        t        z  t        z  t         j                        } | j	                        j                        } | S re  )r   r  rF   ry  r  r  rg  s    r   large_1d_uniquez+sample_inputs_sort.<locals>.large_1d_unique  s>    nnQUQYekk&IffUm**=9
r   r  r   TFrZ  r  )r   
descendingstabler:  r   )rm  )r   rm  r   rA  )	rM   ry  r   r   r  r   r  r  r   )r   r   r   r   r   ri  rk  r  flagr   rl  rm  
tensor_opts    ```         r   sample_inputs_sortrp    s    
 o'
(( Q<D%=D#*4t#< 	RZ#V(<(A(AV(K o/jAA<<$$-!sz&R R	R E&NJ
ell3
3
44
ell3
3Q
77
ell3
3Q
== ell44
55
ell44a
88
ell44a
>> o'
55
o'Qt
<<
o'Q4
MMs   B0G"6D,G"c              +     K   t        t        |||      }dt        ft        t        ft        t        t        ff}|D ]?  }t         ||       |d      j	                          |d      j	                                A y wNr:  r   )r   r   rH   rM   rU  )r   r   r   r   r   r   rN  x_sizes           r   sample_inputs_thresholdrt    so     {%m\H!1v1ay)E V(6*HRL,=,=,?"ARARATUUVr  c              +   |  K   t        t        |||      }dt        ft        t        ft        t        t        ft        dt        ft        dt        ff}t        |ddgddgddgg d      D ]  \  }}}	}
}d|v r|j	                  d      |ur!||t        |       k  s|t        |      k\  rAt        ||	|
|      }t        j                  ||||	      }t        |fi |  ||t        j                  d
      j                  |      j                  |      }t        |fi | t         ||      fi |  y w)Nr   r   r   r   FT)Nr   r   r   r   r   )sortedreturn_inversereturn_countsr   r:  r  )r   r   rH   r   indexrM  r  r   r&  rM   r  r  r  )r   r   r   r   r   r   rN  r<  rv  rw  rx  r   r  s                r   sample_inputs_uniquerz    s:    {6m\H!1v1ay1a)aAY?E EE4=5$-%H_`59v~}c :%++a.3 ?s5zk 1SCJ5FVNR_ehi ++e5}]',V,, 5

%HRY~~m4 	',V,, (5/4V44-5rp  c               /      K   t        | i |D ]1  }|j                  d   r|j                  j                  d       | 3 y w)Nrv  )rz  r   pop)r   r   sample_inputs      r    sample_inputs_unique_consecutiver~  5  sG     ,d=f= ""8,##H-s
   A"Ac              +      K   t        t        |||      }d}|D ]4  \  }}t         ||      |f       t         ||dd        |f       6 y w)Nr   )))r   r  r  r  )r   r  r  r   )r  r   r   r   r   	r   r   r   r   r   r   r7  r  output_sizes	            r   !sample_inputs_adaptive_avg_pool1dr  ;  sc     {6m\HE %* J [(;/{nEE(;qr?3;.II	J   AAc              +      K   t        t        |t        j                        }t	        t         |d      d      d       t	        t         |d      d      d	       y w)
Nr  r   r   r  $'output_size' should contain one intr   r  r  :elements of output_size must be greater than or equal to 0r  r=  s       r    error_inputs_adaptive_avg_pool1dr  L  s\     {6GH [)!4"E!GI I [)!4%H!]_ _   A"A$c              +      K   t        t        |||      }d}|D ]4  \  }}t         ||      |f       t         ||dd        |f       6 y w)Nr   )))r   r  r  r  )r   r  ))r   r  r  r  )Nr  )r   r  r   r   )r   N)r  NN)r  r   r   r   r   r  s	            r   !sample_inputs_adaptive_avg_pool2dr  X  sc     {6m\HE %* J [(;/{nEE(;qr?3;.II	Jr  c              +     K   t        t        |t        j                        }t	        t         |d      d      t        d       t	        t         |d      d      d	       t	        t         |d
      d      d	       y w)Nr  r   r  $Input dimension should be at least 3r   r   r   r   r   r   zoutput_size must be 2r   r   r   r   r  rb  r=  s       r    error_inputs_adaptive_avg_pool2dr  k  s     {6GH [&!1vF *8^` ` [,!7RH!8: : [,!7WM!]_ _r  c              +      K   t        t        |||      }d}|D ]4  \  }}t         ||      |f       t         ||dd        |f       6 y w)Nr   )))r   r  r  r  r  )r   r  r   )r   r  r   r   r  NNN)r  r  )r   r   r  r  r   )r   r  N))r   r   r  r  r   )r   Nr   )r  Nr   r   r   r   r   r  s	            r   !sample_inputs_adaptive_avg_pool3dr  {  sc     {6m\HE %* J [(;/{nEE(;qr?3;.II	Jr  c              +     K   t        t        |t        j                        }t	        t         |d      d      t        d       t	        t         |d      d      d	       t	        t         |d
      d      d	       y w)Nr  ri  r  $Input dimension should be at least 4r   r  r   zoutput_size must be 3r   r  r   r   r   r  rb  r=  s       r    error_inputs_adaptive_avg_pool3dr    s     {6GH [)!4)L *8^` ` [,!7RH!8: : [/!:
S!]_ _r  c              +      K   t        t        |||      }d}t        |d      D ]B  \  }}t         ||d         |d   |f       t         ||d   dd        |d   |f       D y w)Nr   ))r   r   r   r   )r  r   ru  r   r   r   r   r   r   rM   	r   r   r   r   r   r   r7  r  
return_idxs	            r   !sample_inputs_adaptive_max_pool1dr    s     {6m\HE &e]; Q
(6!9-VAY
4KLL(6!9QR=1J8OPP	Q   A(A*c              +      K   t        t        |t        j                        }t	        t         |d      d      d       t	        t         |d      d      d	       y w)
Nr  r   r   r  r  r   r  r  /Trying to create tensor with negative dimensionr  r=  s       r    error_inputs_adaptive_max_pool1dr    s\     {6GH [)!4"E!GI I [)!4%H!RT Tr  c              +      K   t        t        |||      }d}t        |d      D ]B  \  }}t         ||d         |d   |f       t         ||d   dd        |d   |f       D y w)Nr   )))r   r   r   r   r5  )r   r   r   r   )Nr   )r  r  )r   r   r   r   r   N)r  r  )r  r   ru  r   r   r   r  r  s	            r   !sample_inputs_adaptive_max_pool2dr    s     {6m\H	E &e]; Q
(6!9-VAY
4KLL(6!9QR=1J8OPP	Qr  c              +     K   t        t        |t        j                        }t	        t         |d      d      t        d       t	        t         |d      d      d	       t	        t         |d
      d      d	       y w)Nr  r   r  r  r   r  r   internal errorr   r   r  r  rb  r=  s       r    error_inputs_adaptive_max_pool2dr    s     {6GH [&!1vF *8^` ` [,!7RH!13 3 [,!7WM!RT Tr  c              +      K   t        t        |||      }d}t        |d      D ]B  \  }}t         ||d         |d   |f       t         ||d   dd        |d   |f       D y w)Nr   ))r   r   r   r   r   r  )r  r  )r   r   r   r   r   )r   r   N))r   r   r   r   r   )r   Nr   )r  r  ru  r   r   r   r  r  s	            r   !sample_inputs_adaptive_max_pool3dr    s     {6m\HE &e]; Q
(6!9-VAY
4KLL(6!9QR=1J8OPP	Qr  c              +     K   t        t        |t        j                        }t	        t         |d      d      t        d       t	        t         |d      d      d	       t	        t         |d
      d      d	       y w)Nr  ri  r  r  r   r  r   r  r   r  r  r  rb  r=  s       r    error_inputs_adaptive_max_pool3dr    s     {6GH [)!4)L *8^` ` [,!7RH!13 3 [/!:
S!RT Tr  c                   &    e Zd ZddZd Zd Zd Zy)_TestParamsMaxPoolBaseNc                 R    dgdd gddgddgdgddgd| _         g ddgdd	gg| _        y )
Nr   r   TFr   r   )kernel_sizer
  	ceil_modepaddingdilationreturn_indices)r   r   Nr   )r   r  r  s    r   __init__z_TestParamsMaxPoolBase.__init__  sK    3$i1v#Um
 CF
r   c              #      K   t        | j                   D ]\  }|d   |dd  }|t        j                  f t	        | j                        dk(  s:t	        |      dk(  sI|t        j
                  f ^ y w)Nr   r   r   )r   r  r   contiguous_formatrM  rF  r  r<  s     r   
_gen_shapez!_TestParamsMaxPoolBase._gen_shape  sp     dkk* 	1EQxab	00004;;1$UqU0000	1s   AA5A5A5c              #      K   | j                   j                         }t        | j                   j                          D ]  }t	        t        ||              y wrt  )r   keysr   r  r  rN  )r  r  r  s      r   _gen_kwargsz"_TestParamsMaxPoolBase._gen_kwargs"  sK     {{!t{{1134 	*Fs4())	*r   c              #   p   K   t        | j                         | j                               E d {    y 7 wrt  )r   r  r  r  s    r   gen_input_paramsz'_TestParamsMaxPoolBase.gen_input_params'  s&     4??,d.>.>.@AAAs   ,646returnN)__name__
__module____qualname__r  r  r  r  r   r   r   r  r    s    
 	1*
Br   r  c                         e Zd Zd fdZ xZS )_TestParamsMaxPool1dc                     t         |           | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   y )Nr  r   r
  r  r  r   r  )superr  r   r  	__class__s    r   r  z_TestParamsMaxPool1d.__init__,  sf    M"tf,"H$'I4&(JD6)r   r  r  r  r  r  __classcell__r  s   @r   r  r  *  s    * *r   r  c                         e Zd Zd fdZ xZS )_TestParamsMaxPool2dc                    t         |           | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  j	                  d	g       y )
Nr  r   r   r
  r  r  r  r  r   r   r  r  r   r  r<  r  s    r   r  z_TestParamsMaxPool2d.__init__5  sz    M"vh."H&)I6(*JF8+A3r   r  r  r  s   @r   r  r  3         r   r  c                         e Zd Zd fdZ xZS )_TestParamsMaxPool3dc                 "   t         |           | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  dxx   dgz  cc<   | j                  j	                  dg       | j                  j	                  dg       y )	Nr  )r   r   r   r
  r   r   r   r  r  r   r   r  r  s    r   r  z_TestParamsMaxPool3d.__init__@  sx    M"yk1"H),JI;.A3A3r   r  r  r  s   @r   r  r  >  r  r   r  c              +   *  K   t        t        ||d      }t        t        t        t        d} || j
                            }|j                         D ]>  \  \  }}	} ||      j                  |	      j                  |      }
t        |
|       @ y w)NFr   )nn.functional.max_pool1dnn.functional.max_pool2dnn.functional.max_pool3d max_pool2d_with_indices_backwardrD  r  )
r   r   r  r  r  r  r  r  r  rM   )r   r   r   r   r   r   params_generator_type_dictparams_generatorr<  rE  r  s              r   sample_inputs_max_poolr  I  s     {6eTH %9$8$8,@	" @1',,?A*:*K*K*M .&uo  } =LL][#f--.s   BBr   r"  r   )r  r
  r  r  r  c           
         t        j                  j                  j                  || ||||dd\  }}t        j                  |      }	|| }t        j
                  j                  j                  j                  |	g|| ||||| }
|
S )NT)r  r
  r  r  r  r  )	r   r]  r^  max_pool2d_with_indices	ones_likeopsatenr  r  )r  r
  r  r  r  r   r   r  r  grad_outout_bs              r   max_pool2d_backwardr  X  s    88&&>>	;vwQYen  @DELCs#H~IINN;;CCUU$U&,U.5U7?UAJULSUELr   c              +     K   dD ]  }t        t        |t        j                  |      } |d      }t	        t        |ddddd	      d
       t	        t        |ddddd	      d       t	        t        |dddddd	      d       d}t	        t         |d|      ddi	      |       t	        t        t        j                  g ||      ddi	      |       t	        t         |d|      ddi	      |       t	        t         |d|      ddi	      |       d}t	        t         |d      ddd	      |       d}t	        t         |d      ddddd	      |       d}t	        t         |d      d dddd	      |       d!}t	        t        |ddi	      |       d"}t	        t        |ddd	      |        y w)#Nru  r   r   r   1   r   rf  r   Tr  r
  r  r  r  pad must be non-negativer   r   3pad should be at most half of effective kernel sizer   r   )r  r  r
  r  r  zPExpected 2D or 3D \(batch mode\) tensor with optional 0 dim batch size for inputr   r  r  rw  )r   r  )r   r  r   z+stride must be greater than zero, but got 0rN  r   )r  r
  z-dilation must be greater than zero, but got 0)r  r
  r  r  z Invalid computed output size: -2ri  r   z%kernel_size must be greater than zeroz stride must be greater than zero)r   r   r   r[  rN   rM   r   )r   r   r   r   r   r   	error_msgs          r   error_inputs_max_pool1dr  b  sJ     ' =0;vU[[XefZ QqB[]qu/vw%?A 	A QqB[\pt/uv%Z\ 	\ Q01qAZ[os tv%Z\ 	\
 h	Xb%NXeghWij%.0 	0 U\\"VS`%a-:A,>@%.0 	0
 Xg]%S-:A,>@%.0 	0
 Xj%V-:A,>@%.0 	0
 B	Xi%8QR^_A`a%.0 	0 D	Xi%8<=WXfg,hj%.0 	0
 7	Xi%8<=WXfg,hj%.0 	0
 <	Qq/AB%.0 	0 7	QqA/NO%.0 	0y=0s   G"G$c           
   +     K   t        t        |t        j                  d      } |d      }t	        t        |ddddd	      d
       t	        t        |ddddd	      d
       t	        t        |ddddd	      d       t	        t        |ddddd	      d       d}t	        t         |d      ddi	      |       t	        t         |d      ddi	      |       y w)NFr   r  r   rf  r   Tr  r  r  r   r  r   r  zPExpected 3D or 4D \(batch mode\) tensor with optional 0 dim batch size for input)r   r   r  r  r   )r   r   r  r   r   r   r   r   r   r   r  s         r   error_inputs_max_pool2dr    s    {6TYZHA
[1WYmq+rs!;= = [6R\^rv+wx!;= = [1WXlp+qr!VX X [6R\]qu+vw!VX X bG
[*!5)6(:<!(* *
 [-!8)6(:<!(* *   C-C/c           
   +     K   t        t        |t        j                  d      } |d      }t	        t        |ddddd	      d
       t	        t        |ddddd	      d
       t	        t        |ddddd	      d       t	        t        |ddddd	      d       d}t	        t         |d      ddi	      |       t	        t         |d      ddi	      |       y w)NFr   r   r   r  rf  r   rf  r   Tr  r  r  r   rg  r   r  z>Expected input\'s non-batch dimensions to have positive length)r   r   r   r  r  r   )r   r   r   r   r   r   r  s         r   error_inputs_max_pool3dr    s!    {6TYZH A
[1WYmq+rs!;= = [9PR79T,S T!;= =
 [1WXlp+qr!VX X [9PR78D,R S!VX X
 PG
[-!8)6(:<!(* *
 [/!:)6(:<!(* *r  c           
   +      K   t        t        dd|||      }ddddfdd	ddfd
dddfddddfddddfddddfdi fdddiff}|D ]  \  }}t         ||      |        y w)Nr   r   r   r   r   r   r   )r   r   r   r   r  r   )r  r   r   r   r   r   r  )r   r   r   r   r4  r   )r   r   r   r   rK  rI  r   r  r   -C6?r  r   )r  r   r   r   r   r   r7  r  s           r   sample_inputs_normalizer    s     {6^klH '3"Q4G%H&2"Q4G%H&2#a4H%I&2#a4H%I&2"R4H%I&(A*>%?&2B%7&2UDM%B&DE  % @V(;/??@s   A$A&c           	          t        j                  |      }|d   }	|d   }
t        j                  |      }|d   }|d   } | |||	||||      } | |||
||||      } | |||z   |	|
z   ||||      }||z
  d||z
  |z
  z  z   S )N).r   ).r                 ?)r   r   )r  rI  rQ  grad_outputr
  r  r  groupsgrad_output_grad_output_rgrad_output_iweight_weight_rweight_ir.  r/  r0  s                    r   complex_convr    s     %%k2L (M (M  (GvHvH
:x6RA
:x6RA
:x(*MM,I6SZ\dflmAER1q519%%%r   r   c	           
         |J t         j                  j                  j                  t         j                  j                  j
                  t         j                  j                  j                  t         j                  j                  j                  t         j                  j                  j                  t         j                  j                  j                  i}	t         j                  j                  j                  dt         j                  j                  j                  dt         j                  j                  j                  di}
t        j                  |       t        j                  |      }} t        | j                        |
|   k(  }|s| j                  d      } |Et        j                  |      }| j                  dz
  }t        |      D ]  }|j                  d      } | } ||j!                  d      |j!                  d      d |||||      }|j                  }|	|   }|j"                  j$                  rt'        ||||||||      }n ||||||||      }|||z   }|s|j)                  d      S |S )	Nr   r   r   r   r   r   r  r
  r  output_paddingr  r  )r   r]  r^  conv_transpose1dgradconv1d_inputconv_transpose2dconv2d_inputconv_transpose3dconv3d_inputrY  rM  r<  	unsqueezer$  ry  r  r   r   r  r  )rb  rQ  rR  r
  r  r  r  r  r  grad_fn_mapbatched_dim_map
is_batchedunsqueeze_dimsr  r  conv_transpose_outputrI  grad_fnr  s                      r   conv_transpose_refr!  
  s    >>88&&779S9S88&&779S9S88&&779S9SUK xx**;;Qxx**;;Qxx**;;Q@O
 $$U+U-=-=f-E6EU[[!_R%88J"%a~& 	%A>>!$D	% K{~~f5vyy7H$&,gn&,xA ',,J"oG||7JVWV^`fgj&+vwRXYDj!+3;;q>44r   c              +   R  K   t        t        |||      }dddddddd	fd
d
dddddddfdddddddddfddd ddddd	fddd i ff}|D ]Z  \  }}}	}t         ||       ||      |	 ||	      n|	f|       t         ||dd         ||      |	 ||	      n|	f|       \ y w)Nr   r   r   r   rN  r   r  r   r   r   r
  r  r  r  r   r   r   rr  r  r   r   r   r   r   )r   r  r   r  r   
r   r   r   r   r   r   r7  r  rQ  rR  s
             r   sample_inputs_conv_transpose1dr(  ;  s"    {6m\H
 
ItQ$!	L	N	ItTTQ\`	a	c	It!qASW	X	Z	It!qA	F	H	It		>E .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
r.  c              +   `  K   t        t        |||      }dddddddd	fd
ddddddddfdddddddddfddd ddddd	fddd ddifddd i ff}|D ]Z  \  }}}	}t         ||       ||      |	 ||	      n|	f|       t         ||dd         ||      |	 ||	      n|	f|       \ y w)Nr   r   r   r   r   r   r   r   r   r   r   r   r  r   r$  )r   r   r   r   r   r   r   r   rr  r  r   r5  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'  s
             r   sample_inputs_conv_transpose2dr0  Z  s0    {6m\H
 
|TqFa	P	R	|TvSTbh	i	k	|T!qASY	Z	\	|T!qA	F	H	|THa=9	|T2.>E .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
r   c              +   R  K   t        t        |||      }dddddddd	fd
ddddddddfdddddddddfddd ddddd	fddd i ff}|D ]Z  \  }}}	}t         ||       ||      |	 ||	      n|	f|       t         ||dd         ||      |	 ||	      n|	f|       \ y w)Nr   )r   r   r   r   r   )r   r   r   r   r   r   ri  r   r  r   r$  )r   r   r   r   r   )r   r   r   r   r   rr  )r   r   r   r   r   r   r   rM  r  )r   r   r   r   r   )r   r   r   r   r   r   r:  )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r  r   r   r   r  r   r'  s
             r   sample_inputs_conv_transpose3dr4  x  s$    {6m\H
 
/4!yTU	V	X	/4)y\]kt	u	w	/4!qAS\	]	_	/4!qA	F	H	/4		>E .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
r.  c              +   H  K   t        t        |||      }dddddddfd	d
ddddddfddd dddfddddddddfddd i ff}|D ]Z  \  }}}	}t         ||       ||      |	 ||	      n|	f|       t         ||dd         ||      |	 ||	      n|	f|       \ y w)Nr   r#  rN  r   r  r   r   r
  r  r  )r   r   r  r   r   r   r   r
  r  r  r  r   )r   r   r   validr
  r  r%  )r   r   r   r   same)r   r   r   r  r   r'  s
             r   sample_inputs_conv1dr<    s    {6m\H
 
Ita%PQ	Ita1Z[%\]	It%IJ	ItSTbf%gh	ItR(E .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
s   B B"c           	   +     K   t        t        |t        j                        }t        t        |t        j                        }t        t        |t        j
                        }t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      fd	d
i      d       t        t         |d       |d       |d      fdd
i      d       t        t         |d       |d       |d      fdd
i      d       t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      fddd      d       t        t         |d       |d       |d      fddi      d       t        t         |d       |d       |d      fddd      d       t        t         |d       |d       |d      fddd      d       y w)Nr  r&  r   r   r   r   r   should be the samer   r   r   r   r
  r  r  $non-positive stride is not supportedr  !negative padding is not supportedr  $dilation should be greater than zeror   z,weight should have at least three dimensionsr%  ri  r  r;  r   r  r  /expected weight to be at least 3 at dimension 0r  r   $non-positive groups is not supportedr   r   r   r   r  ry  r  rN   rM   r   r   r   r   make_int_argmake_complex_args         r   error_inputs_conv1drK    sn    {6GH;vU[[IL{6AQAQR L+<	3JHUYN2[\(* *
 HY'x	/BDTUYDZ.[\(* *
 HY'x	/BHTN.S$e,	.;ac c
 HY'x	/BHTN.S%u-	/<_a a
 HY'x	/BHTN.S&.	0=ce e [)!4HV<LhW[n;]^!OQ Q HY'x	/BHTN.S'-;	=J{} }
 HY'x	/BHTN.S$a=	*7hj j
 HY'x	/BHTN.S'-<	>Kqs s
 HY'x	/BHTN.S'-;	=Jpr rs   IIc           	   +     K   t        t        |t        j                        }t        t        |t        j                        }t        t        |t        j
                        }t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      f      d       t        t         |d       |d	       |d
      fddi      d       t        t         |d       |d       |d
      fddi      d       t        t         |d       |d       |d
      fddi      d       t        t         |d       |d       |d
      fddi      d       t        t         |d       |d       |d      fddi      d       t        t         |d       |d       |d      fddd       d       t        t         |d!       |d"       |d      fdd#d       d$       t        t         |d       |d       |d      fdd%d       d$       y w)&Nr  )r   r   r   )r   r   r   r   r   r   r?  r   r   r   r   r   )r   r   r   r   r   r
  r  r  rA  r.  )r   r   r   r   r  rB  )r   r   r   r   )r   r   r   r   r  rC  r@  r;  z5Expected 3-dimensional input for 3-dimensional weight)r   r   r   r   )r   r   r   r   r  r  r   rE  rD  r,  )r   r   r   r   r   rF  r   rG  rH  s         r   error_inputs_conv2drN    s    {6GH;vU[[IL{6AQAQR L+<3MxX\~2^_(* *
 HY'x/EGWX\G].^_(* *
 H\*(<2H(SW.1Y$e,	.;ac c
 H\*(<2H(SW.1Y%u-	/<_a a
 H\*(<2H(SW.1Y&.	0=ce e H\*(92ExPT~1V%v.	0=tv v
 H\*(<2H(SW.1Y$a=	*7hj j
 H\*(<2H(SW.1Y'-;	=J{} }
 H\*(<2H(SW.1Y'-<	>Kqs s
 H\*(<2H(SW.1Y'-;	=Jpr rs   I	Ic              +     K   t        t        |||      }dddddddfd	d
ddddddfddddddddfddddddddfddd ddddfddddddfdddddddfdddddifdd d!ddifdd d ddifdddddd"fddddd#d$fd%d&dddd'fd(d)d*ddifdd+d i ff}|D ]Z  \  }}	}
}t         ||       ||	      |
 ||
      n|
f|,       t         ||dd         ||	      |
 ||
      n|
f|,       \ y w)-Nr   r*  r+  r   r   r   r   r6  )r   r   r  r  )r   r   r   r   r  r  r  r-  r8  )r   r   r   r   )r   r   r   r   r   r5  )r   r   r   r   )r   r   r   r   r9  r:  r;  r   )r
  r  r  )r   r   r   r   r/  rr  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   )r   r   r   r   jit_fail_sampler   r   r7  r  rQ  rR  s              r   sample_inputs_conv2drR  +  s    {6m\H
 
|T!q9	;	|T&A6R	T	|TQ!H	J	|TQ!H	J	|TQ!4	6	|TW-	/	|TV;	= 
|THa=9	|THa=9	|THa=9	|Ta6+JK	|TaF+KL	|TaV+LM	|THa=9	|T2.1E6 .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
   C0C2c              +     K   t        t        |||      }dddddifdddddifd	d
dddifddd ddifddd ddifddd dddfddd dddfddd ddifdddddifdddddddff
}|D ]Z  \  }}}	}t         ||       ||      |	 ||	      n|	f|       t         ||dd         ||      |	 ||	      n|	f|       \ y w)Nr   r   r   r   r   r   r  r   r  r;  r
  ri  )r   r   r   r   r   )r   r   r   r   r   r  r   )r   r   r   r   r  )r   r   r   r   r   r9  )r   r   r  r  rh  )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   r7  r  rQ  rR  s
             r   sample_inputs_conv3drV  X  sW    {6m\H
 
/4)V1DE	/4(I1FG	/4*aA	?D9g2FG	_dY4GH	_dTU4VW	_dTU4VW	?D9g2FG	/4(A?	/4IST`a1bcE .3 
)VT6(;/V".HTND7
  	
 (;qr?3V".HTND;
  	
s   C Cc           
   +     K   t        t        |t        j                        }t        t        |t        j                        }t        t        |t        j
                        }t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      f      d       t        t         |d       |d       |d      fdd	i
      d       t        t         |d       |d       |d      fdd	i
      d       t        t         |d       |d       |d      fdd	i
      d       t        t         |d       |d       |d      fddi
      d       t        t         |d       |d       |d      fddi
      d       t        t         |d       |d       |d      fddd
      d       t        t         |d       |d       |d      fddd
      d       t        t         |d       |d       |d      fd ddd!
      d"       y w)#Nr  rU  )r   r   r   r   r   r   r   r?  r   r
  r  r  rA  r  rB  r  rC  )r   r   r   r   r   r.  r;  z5Expected 4-dimensional input for 4-dimensional weight)r   r   r   r   r   )r   r   r   r   r   r  r  r   rE  rD  r   rF  )      r  r   r  )r  r  r  r   r  r  r   r6  z8padding='same' is not supported for strided convolutionsrG  rH  s         r   error_inputs_conv3drZ  w  s    {6GH;vU[[IL{6AQAQR L1o9VX`aeXf8gh(* *
 H_-Xo5NP`aePf4gh(* *
 H_-Xo5NPXY]P^4_$e,	.;ac c
 H_-Xo5NPXY]P^4_%u-	/<_a a
 H_-Xo5NPXY]P^4_&.	0=ce e H_-Xl5KXVZ^4\%v.	0=tv v
 H_-Xo5NTN5$-5qM	;EG G H_-Xo5NTN5$8>!,L	NEG G H_-Xo5NTN5$8>!,L	N:< < H./x7PTN7$78VWX,Y	[NP Ps   I
Ic              +     K   t        t        |||      }ddddifddddifdd	dd
ifdd	dd
ift        t        t        fd	ddiff}|D ]m  \  }}}t        |      d	kD  r|d	   nd}	 ||	      }
 ||	      }|
d g}|d g}t	        j
                  ||      D ]!  \  }}||d|}t         ||      |fi | # o t         |d      d       y w)Nr   r   r   r   r   r   r4  r   r   r   r  r  r   rf  r   r   r   rQ  rR  r   r   r   )r   r   rH   rM  r  r   rM   )r   r   r   r   r   r   r7  r  
num_groupsrP  r  bias_tensorrU  rV  rQ  rR  s                   r   sample_inputs_group_normrb    s,    {6m\H 
A}%	A~&	UTN#	UTN#
QA}%,E ,1 K'Z%(%5%9;q>q *x( !$'t$%--gv> 	KLFD  F
 h{3ZJ6JJ	KK$ hv&T
22s   CCc              +   t  K   t        | |||fi |E d {    t        t        |||      }ddddifddddifddddiff}|D ]o  \  }}}t        |      dkD  r|d   nd}	 ||      }
 ||	      } ||	      }|d g}|d g}t	        j
                  ||      D ]  \  }}||d	|}t        |
|fi |  q y 7 w)
Nr   )r   r   r  r  r   r   rf  r   r   r   r_  )rb  r   r   rM  r  r   rM   )r   r   r   r   r   r   r7  r  r`  rP  r  r  ra  rU  rV  rQ  rR  s                    r   reference_inputs_group_normrd    s)    '9179 9 9 {6m\H 
!ed^, 
!ed^, 
!ed^,,E ,1 B'Z%(%5%9;q>q, *x( !$'t$%--gv> 	BLFD  F
 lJA&AA	BB#9s   B8B6B!B8c              +   j  K   t        t        |||      }t        t        ||d      }t        t        t        fdddft        t        t        fddddfdd	d
ifdd	difddddfddddff}|D ]M  \  }}|d   }	 ||	      }
 ||	      } ||	d      } ||	d      }|||
|d|}t         ||      d|       O 	d g}d d g}t	        ||      D ]H  \  }} ||	d      } ||	d      }t         |      d||| ||      nd | ||      nd d       J t         |d      i        y w)Nr   Fr4  rD  )rF  r   T)rF  r   use_input_statsrG  rF  rH  rI  rJ  rK  r   r   rL  )rS  rT  rQ  rR  r   r  r   r  )r   r   rH   rM   rN  )r   r   r   r   r   r   rO  r7  r  rP  rQ  rR  rS  rT  
new_kwargsrU  rV  weight_channelsbias_channelss                      r   sample_inputs_instance_normrj    s    {6m\H%,[udi%j" QS12
QSTJK	Z&'	Z%&	D56	D56&E  % 
Vq>(#!5hAF4X1E(&	

 

 [!
 	

. GD\F*-gv*> 
&5hAF4X1E[! ,*7F7R(?3X\3@3L/RV		
 		

 hy)"
55s   D1D3c              +     	
K   t        t        |d      	fd
fd}dt        j                  dt        j                  fdfd	
fd	} |d
d       |dd       |dd       |dd       |dd      t	          	d       t        j
                  dt        j                              z         ddi      t	          	d       t        j                  dt        j                              z         ddi      t	          	d        |dd            z         ddi      g}|E d {    y 7 w)NFr   c                  T    t        j                  dd| t         j                        S )Nr   r   r  )r   r+  r  )r<  r   s    r   make_bool_maskz2sample_inputs_safe_softmax.<locals>.make_bool_mask:  s    }}Q5uzzJJr   c                 x    t        j                  | |ft         j                        }d|| dz
  <   d|| dz
  <   |S )Nr   Fr   r   )r   onesr  )rowscolsmask_two_rowsr   s      r   rr  z1sample_inputs_safe_softmax.<locals>.mask_two_rows=  s?    

D$<uzz&Q"'dQh"'dQhr   r  r  c                 D    t        j                  |  t        d      d      S )Nr  rI  )r   wherer[  )r  s    r   convert_to_float_maskz9sample_inputs_safe_softmax.<locals>.convert_to_float_maskC  s    {{D5%-55r   c                 &    | j                        S rt  )r  )r   r   s    r   with_requires_gradz6sample_inputs_safe_softmax.<locals>.with_requires_gradF  s    $$]33r   c                 ^     |  } |       }| |      z   }t         |      d|i      S )Nr   r  r  )	
mask_shaper   r  r  masked_inputru  r   rm  rw  s	        r   generate_input_from_maskz<sample_inputs_safe_softmax.<locals>.generate_input_from_maskI  s>    z*
+#&;D&AA-l;UCLQQr   r  r   r  r  r   r  r   r[  )r   r   r   r   r   r   r  r   r   r   r   )r   r   r   TensorrM   r&  r  ro  )r   r   r   r   r   rr  r{  rk  ru  r   rm  rw  s    ` `    @@@@r   sample_inputs_safe_softmaxr~  7  sK    {6eTHK6ELL 6U\\ 64R 	!2 Q/ 15 A. 2 'KKejjH 1:	
 	 'JJvUZZG 1:	
 	 #8q!9L#MM 1:		
A&GN s   D;EE	Ec              +      K   t        t        |||      }ddddifddddifddi fd	d
i fddi ff}|D ]/  \  }}} ||      }	 ||      }
t         ||      ||	|
f|       1 t         |d	      d       y w)Nr   r   r   r4  r7  r5  r  r   r   r  r#  r  r  r   r   )r   r   r   r   r   r   r7  r  normalized_shaperQ  rR  s              r   sample_inputs_layer_normr  x  s     {6m\H 
Is|,	FUDM*	tR	r	r2E 27 
-%v*+()[!"FD1
 	
	
 hv&W
55r   c              +   4  K   t        t        |||      }d}|D ]z  \  }}}	 ||      }
 ||      }t         ||      ||
||	f       t         ||      |d ||	f       t         ||      ||
d |	f       t         ||      |d d |	f       | y w)Nr   ))r   r   r4  )r7  r5  r  )r   r   rf  )r   r  rf  )r#  r   rf  r   r   )r   r   r   r   r   r   r7  r  r  r   rQ  rR  s               r   sample_inputs_native_layer_normr    s     {6m\H3E /4 
*%s*+()[!"FD#6
 	
 [!"D$4
 	
 [!"FD#6
 	
 [!"D$4
 	
!
   BBc              +      K   t        t        |||d      }ddddifddddifd	d	i fd
di fdd	i ff}|D ]&  \  }}} ||      }	t         ||      ||	f|       ( t         |d
      d       y w)N  r   r   r   r   r   r   r4  r7  r5  r  r   r   r  r#  r  r  r   r   )
r   r   r   r   r   r   r7  r  r  rQ  s
             r   sample_inputs_rms_normr    s     {6mbfgH 
Is|,	FUDM*	tR	r	r2E 27 
-%v*+[!"F+
 	

 hv&W
55r  c              +      K   t        t        |t        j                  d      }d}t	         |d      d      }t        ||       d}t	         |d	      d
      }t        ||       y w)NFr   z<Expected at least 2 dimensions for input tensor but receivedr   r   r   r   zZExpected number of channels in input to be divisible by num_groups, but got input of shape)r   r  r   r  r   r   r   r   rM   rN   )r   r   r   r   r   r  r   r  s           r   error_inputs_group_normr    sf     {6V[\H NH	Xa[t	,B
RX
.. lH	Xi(t	4B
RX
..r  c              +     K   t        t        |t        j                  d      }d}d}t	         ||      d      }t        ||       d} |d      }d	}	t	         ||      ||d d
f      }
t        |
|	        |d      }d}t	         ||      |d |d
f      }t        ||       d}t	         |d      d      }t        ||       y w)NFr   r   6Expected normalized_shape to be at least 1-dimensional)r   NNrf  r   r   r   7Expected weight to be of same shape as normalized_shaperf  z5Expected bias to be of same shape as normalized_shapeGiven normalized_shape=r7  )r   NNrf  r  )r   r   r   r   r  r   r  r  rQ  r   r  rR  r   ry  err_msg4s4s                   r   error_inputs_native_layer_normr    s     {6V[\HKGH	$:
B RX
.. fFHH	%5vtT$J
B RX
..FDFH	%5tT4$H
B RX
..(H	"<
B RX
..r  c              +   D  K   t        t        |t        j                  d      }d}d}t	         ||      d      }t        ||       d} |d      }d	}	t	         ||      ||d
f      }
t        |
|	       d}t	         |d      d      }t        ||       y w)NFr   r   r  )r   Nrf  r   r   r   r  rf  r  r7  )r   Nrf  r  )r   r   r   r   r  r   r  r  rQ  r   r  r  r  s                r   error_inputs_rms_normr    s     {6V[\HKGH	$4
B RX
.. fFHH	%5vt$D
B RX
.. )H	"6
B RX
..s   BB c              +     K   t        t        |||      }ddddddfdddddfddddd	fddddd
fddddifddddifddddifddi fddddddfddddddfddddddff}|D ]  \  }}}t         ||      |f|        y w)Nr   r\  r   iUMu>r4  g      ?)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   r7  r  rO  s	            r   !sample_inputs_local_response_normr    s     {6m\H 
A$?@	A$/0	AT23	A45	A'(	A}%	AT{#	Ar	A$?@	A$?@	A$?@2E &+ N!T6(;/tgfMMNrU  c                 `    dt        t        |||dd      fdt        d      D        S )Nr   r  r  c              3   P   K   | ]  }t         d z  d z  f              ywr   Nr  ru  r  Nr   s     r   rw  z*sample_inputs_hardswish.<locals>.<genexpr>2  s'     GaK!a%Q01Gs   #&r   r   r   ry  )r  r   r   r   r   r  r   s        @@r   sample_inputs_hardswishr  -  s1    	A{6%2DHG5A;GGr   c           	   +     K   ddgddgg}g dgdgddgg}t        t        |||dd      }t        j                  dd	g||      D ]H  \  }\  }	}
} |||	gz         } ||
|	g      }|st	        ||       1 ||
g      }t	        |||       J t	         |dd
dd
d       |dd             t	         |dd
dd
d       |dd       |d             y w)Nr   r   r  r   r   r   r  TFr   r   r   r  r   rM   )r  r   r   r   r   features_optionsbatch_optionscreate_tensorhas_biasin_featout_featbatch_shaper  rQ  rR  s                  r   sample_inputs_linearr  4  s    AA'
	
	
	
A	&M Ke*7RaIM tUm-=}M	62%7H{$[G9%<='23lF33hZ(,55	6 mAq!Q2M!Q4G
HH
mAq!Q2M!Q4GWXIY
ZZs   CCc              +   B  K   g dg dg}g dgdgddgg}t        t        |||dd      }t        j                  d	d
g||      D ]X  \  }\  }	}
}} |||	gz         } |||
gz         } |||	|
g      }|st	        |||       @ ||g      }t	        ||||       Z y w)Nr  )r  r  r  r   r  r   r   r   r  TFr  )r  r   r   r   r   r  r  r  r  in_feat1in_feat2r  r  input_tensor1input_tensor2rQ  rR  s                    r   sample_inputs_bilinearr  N  s     !9-
	
	
	
A	&M Ke*7RaIM tUm-=}M	F=08Xx+%kXJ&>?%kXJ&>?(H=>m]FCChZ(-EE	Fs   BBc              +   f  K   dgddgddgg dg dg}g dgdgddgg}t        t        |||dd	      }t        j                  ||      D ]e  \  }}	t	        |      t	        |	      z   }
t        |
      D ];  } ||	|z         }|j                  |      }|dkD  s%|dz  dk(  s.t        ||       = g y w)
Nr   r   r  )r   r   r  )r   r   r   r  r   r   r   r  )r   r   r  r   rM  ry  rO  rM   )r  r   r   r   r   r  r  r  featuresr  r$  r   r  r  s                 r   sample_inputs_glur  d  s     aVaVYE
	
	
	
A	&M Ke*7RaIM "+!2!23C]!S 5+8}s;//; 	5C(x)?@L#((-H!|1 1!,44		55s   BB1B1B1c              +     K   d\  d}d}d}d}	| dv rd}	g dg dd	gd
gd
gdgg dd}
dfd	}| dv r|t         j                  k(  ryt        t        ||||t         j                  k(  rdnd       }d
}t         j                  t         j
                  fD ]+  }t         | |d|      |       |d|d      d | d       - t        t        |||      }|	D ]  }|
|    D ]~  }t         | |||             |||d      d | |       t         | |||             |||d      d | |       dD ])  }dD ]"  }t         | |||            d || ||       $ +   y w)Nr5  r   r   r   rt  )linearbilinearbicubic	trilinear)TFNr   r   r   )nearestnearest-exactr  r  r  r  areac                 N    |rt        g| g|z  z         S t        | g|z        S rt  r  rO  rankwith_batch_channelCr  s      r   r<  z(sample_inputs_interpolate.<locals>.shape  s1    !QD6D=122dVd]##r   r  r  r0  r    rD     F)scale_factormodealign_cornersr   rv  )333333?rD  )rO  r  r  r  recompute_scale_factorT)r   r  r   r   r  rF  rM   )r  r  r   r   r   r   DrH   rF   align_corners_optionsranks_for_moder<  r   r  rE  r  r  r  r  r  s                     @@r   sample_inputs_interpolater  w  s    DAq	A	A	A-4== 3"#C3SN$
 &&5EKK+?',$
 #55u7J7JK 	MsD)Gc4'!# 	 {6m\H. "4( 	Dq$(au%!+  q$(au%!+  +8 	&$. L% q$0!%1!&3/E 		s   E E$c           
   +   *  K   t        | ||||fi |E d {    | dv rqt        t        ||||t        j                  k(  rdnd       }t        j
                  t        j                  fD ]$  }dD ]  }t         |d|      dd | d|	        & y y 7 zw)
Nr  r0  r  ru  r   r   Y    rD  r  r  F)r  r  r  	antialias)r  r   r   r   r  r  rF  rM   )	r  r  r   r   r   r   r   rE  aas	            r   reference_inputs_interpolater    s     (tVUM\U[\\\&&',$
 $55u7J7JK 		M# !-]K!%"'  		 ' ]s   BBA;Bc           	   +   ~  K   d\  d}d}d}g ddgd}	dfd	}
t        t        |||	      }|	|    D ]  }t         | |
||             |
||d
             t         | |
||             |
||d
             t         | |
||            d       t         | |
||            d        y w)Nr5  r   r   r   r   r   )r  r  c                 v    |rt        j                  g| g|z  z         S t        j                  | g|z        S rt  )r   r;  r  s      r   r<  z%sample_inputs_upsample.<locals>.shape  s9    ::q!f677zz4&4-((r   r   FrO  r  )r  rD  r  r   )r  r  r   r   r   r   r  rH   rF   r  r<  r   r  r  r  s                @@r   sample_inputs_upsampler    s     DAq	A	A	A CN
)
 {6m\Ht$ F(5D>2q$9NOO(5D>2q$9NOO(5D>2EE(5D>2EE	Fs   B9B=c              +     K   t        | ||||fi |E d {    | dv ret        t        ||||t        j                  k(  rdnd       }t        j
                  t        j                  fD ]  }t         |d|      d        y y 7 nw)N)r  r0  r  r  rD  r  )r  r   r   r   r  r  rF  rM   )r  r  r   r   r   r   r   rE  s           r   reference_inputs_upsampler    s     %dD&%YRXYYY~',$
 $55u7J7JK 	M)G 	  Zs   BBA/Bc              +   >  K   d}d}d}d}	d}
d}t        t        j                  ||||	g      |||      }t        |t        j                  |
|
g      dd        t        |t        j                  ||g      dd        t        |d dd	d
g       t        |d dddg       t        |t        j                  |
|
g      dd d        t        |t        j                  |
|
g      dd	d
       t        |t        j                  |
|
g      dd	d
       y w)Nr   r   r  r   r   r   F)r  r  scale_factorsr  g?Tr  r  )r  r  scales_hscales_w)r   r   r;  rM   )r  r  r   r   r   r   r  r  HWrH   rF   r  s                r   sample_inputs_upsample_aar    s    	A	A
A
A	A	Auzz1aA,7ecpqL
l

Aq60BRWgk
ll
l

Aq60BRWgk
ll
lEZ]_bYc
dd
lDY\^aXb
cc
l

Aq60BRWbfqu
vv
l

Aq60BRWbeps
tt
l

Aq60BRVador
ss   DDc              +      K   d}t        d|      D ]/  }dD ](  }t        t        |dz  |dz  f|||dd      |       * 1 y w)	Nr   r   )r  tanhr   r  r   r  approximate)ry  rM   r   )r  r   r   r   r   r  r  r  s           r   sample_inputs_gelur    sa     	A1a[ )+ 	)KQUAEN6*7RaI') )	))s   AAc           	   +   x   K   t        t        t        dt        j                  |      ddi      d       y w)Nr   r   r  asdfr  z#approximate argument must be eitherr   rN   rM   r   r   r[  r  s      r   error_inputs_gelur     s5     
[Ru{{6!R\ikq[rs!FH Hr  c                 r    t         t         t         fdft         t         t         fdfddf}fd|D        S )Nr   r   Tr   r"  r   )r   Tc              3   Z   K   | ]"  \  }}t        t        |d d       g|  $ y wr  r  )ru  r  r   r   r   r   s      r   rw  z;sample_inputs_max_min_reduction_with_dim.<locals>.<genexpr>-  sF      C #d	 \v)-D3@B     Cr  r  )r   r   r   r   r   args_for_reduction_with_dims    ```  r   (sample_inputs_max_min_reduction_with_dimr  &  sE    
QD
QK!	#C 'B	C Cr   c              +      K   t        t        |||d d       }t         |t        t        t        f             t         |d             y w)Nr  r   r   r   s         r   &sample_inputs_max_min_reduction_no_dimr  3  sA     {6maelpqH
h1ay)
**
hrl
##   AAc              +   "  K   t        | ||      E d {    |j                  s|j                  r\t        j                  dt        j
                  dg| ||       t        j                  t        j
                  dgddgg| ||       y y 7 yw)Nr   r   r   r   r   )rR   r   r   r   r   r	   )r   r   r   r   s       r   _generate_nan_reduction_inputsr  8  s|     )&%GGG522llAuyy"-fEYfggllUYYNQF3F%_lmm 3 Hs   BBA:Bc                       fd}|S )Nc              ;     K   t        |||      D ]r  }t        |j                         j                  |             t	        |j
                        D ]-  }t        |j                         j                  |      fi | / t y wrt  )r  rM   r  r  rS   r$  )r   r   r   r   r   r(  supports_multiple_dimss         r   r  z'sample_inputs_nan_reduction.<locals>.fnC  s{     /}M 	UAaggi66}EFF4QVV=ST U!!'')":":="ITVTTU	Us   BBr   )r  r  s   ` r   sample_inputs_nan_reductionr  ?  s    U Ir   c           	   +     K   dt        d||dd|      f}ddg}|D ]  }t        |||      D ]  }|j                         j                  |      }	t	        |	|       t        |j                  d	      D ]`  }|j                  d
d       |j                  dd       |D ]5  }
|
|d<   |j                         j                  |      }	t	        |	|fi | 7 b   y w)Nr4  r  r   r   r   r  midpointFr  r   r4  interpolation)r   rR   r  r  rM   rS   r$  rO  )r   r   r   r   r   test_quantilestest_interpolations	quantilesr(  rb  r  s              r    sample_inputs_reduction_quantiler  L  s     ;t5QUVfstuN#Z0# B	+FE=I 	BAGGI,,];EeY//4QVVTYZ B!!%+!!)U3%8 BM.;F?+GGI44]CE%eYA&AAB	B		BB   CCc               /   l   K   t        | i |D ]"  }|j                  j                  dd       | $ yw)zSample inputs for count_nonzeror4  N)rT   r   r|  )r   r   rl  s      r   %sample_inputs_reduction_count_nonzeror  ^  s:      *4:6: )T*r  c                 \    dt        t        |||      fdt        d      D        S )Nr  r   c              3   D   K   | ]  }t         f              y wrt  r  r  s     r   rw  z+sample_inputs_leaky_relu.<locals>.<genexpr>h  s     ?aK!Q()?    r   r  )r   r   r   r   r   r  r   s        @@r   sample_inputs_leaky_relur  e  s)    
A{6m\H?5A;??r   c              +   ,  K   t        t        |||      }d}|D ]Q  \  }}dD ]G  }	t         ||      |d|	       t         ||      |d|	       t         ||      |d|	       I S t         |d	      d
ddt        d||d             y w)Nr   ))r   r   r  r  r   )r  r-  )r  r   r   )r   r   r  r  r   )rM  r   )r   r   r   r   r-  rv  r   r  r  r5  )r4  r4  output_ratior  )r   r   r   r   r  Tr>  F)r  r  _random_samplesr   
r   r   r   r   r   r   r7  r  r  r  s
             r   #sample_inputs_fractional_max_pool2dr  j  s     {6m\H%E %*  [+ 	N%-	  %"-	  %'-	 %	4  #IfEY^_ s   BBc              +      K   t        t        |||      }d}|D ]Q  \  }}dD ]G  }	t         ||      |d|	       t         ||      |d|	       t         ||      |d|	       I S y w)	Nr   )))r   r   r   r   r   ri  ))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   )r   r   r   )r   r   r   r   r   r  rv  r   r  r:  )r4  r4  r4  r  r   r  s
             r   #sample_inputs_fractional_max_pool3dr    s     {6m\H+E %*  [+ 	N%-	  %%-	  %,-	 %	r  c           
   +      K   t        t        |||      }d}|D ]%  \  }}}	}
}}}t         ||      ||	|
|||f       ' t         |d      d       y w)Nr   ))r  r   r   r   TFr   )r  r-  r5  r   TFr   )r  r  r   r5  TTr   )r  r   r  r   TFr   )rM  r   r   r"  FTr   )r  r-  r   r  TTNr   r  r   r   )r   r   r   r   r   r   r7  r  r  r
  r  r  count_include_paddivisor_overrides                 r   sample_inputs_avgpool2dr     s     {6m\HFE fk oa[&'9>OQa(;/ +VWiIZ\lmo 	oo h|,F
<<s   AAc              +     K   t        t        |||      }ddi fddt        dddd	      fdd
t        dddd	      fddt        dddd	      fdd
t        dddd	      fddt        ddd      fddt        ddd      fddt        dd      fddt        dd      fg	}|D ]  \  }}}t         ||      |f|        y w)Nr   )r   r   r  r   )r   r   r  r   r   TF)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   r7  r  r  s	            r   sample_inputs_avgpool1dr$    s     {6m\H 
D"	At1a4SXYZ	D$dDD\`ab	D$dDE]abc	D$dDE]abc	D$dDEJK	D$dDDIJ	D$de<=	D$dd;<
NE -2 U([&(;/{nVTTUs   B?Cc              +   z  K   t        t        |||      }ddi fddt        ddddd	      fd
dt        ddddd	      fd
dt        ddd      fddt        ddddd	      fddt        ddddd	      fddt        ddddd 	      fddt        ddddd 	      fg}|D ]  \  }}}t         ||      |f|        y w)Nr   )r   r   r   r   r   ri  )r   r   r   r   r   r   r   TF)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  r7  r  r   r   )r   r   r   r   r   r  r  r2  r  r  r  r#  s	            r   sample_inputs_avgpool3dr&    s,    {6m\H 
)R(	!TA49AO 	P	)TIY]<@ST&V 	W	)TIY^%_`	)TIY^<ATU&W 	X	)TAQV<@SU&W 	X	)TAQU<@SW&Y 	Z	)TAQV<@SW&Y 	ZNE" -2 U([&(;/{nVTTUs   B9B;c           	   +      K   t        j                  g dt         j                        }t        t	        |dddd      d	       t        t	        |ddd
d      d	       y w)Nr  rV  r   rf  r   r  r
  r  r  r  r   r   r  )r   r  r   rN   rM   r  s       r   error_inputs_avg_pool1dr)    s`     

:U]]3A
[1WY+Z[!;= = [1WX+YZ!VX Xr  c           	   +     K   t        j                  g dt         j                        }t        t	        |dddd      d	       t        t	        |d
ddd      d	       t        t	        |dddd      d	       t        t	        |d
ddd      d	       t        j
                  ddd      }t        t	        |ddd      d	       y w)Nr  rV  r   rf  r   r(  r  r  r   r  r   r  r   r   r   r  r  divisor must be not zeror   r  r   rN   rM   r&  r  s       r   error_inputs_avg_pool2dr.    s     

:U]]3A
[1WY+Z[!;= = [6R\^+_`!;= = [1WX+YZ!VX X [6R\]+^_!VX X 	Aq!A
[6WX+YZ!;= =   CCc           	   +   >  K   t        j                  g dt         j                        }t        t	        |dddd      d	       t        t	        |d
ddd      d	       t        t	        |dddd      d	       t        t	        |d
ddd      d	       t        j
                  dddd      }t        t	        |ddd      d	       t        j                  g dt         j                        }t        t	        |dddd      d	       y w)Nr  rV  r   rf  r   r(  r  r  r   rg  r   r  r   ri  r   r+  r,  r  znon-empty 4D or 5Dr-  r  s       r   error_inputs_avg_pool3dr1    s    

>7A
[1WY+Z[!;= = [9PR_a+bc!;= = [1WX+YZ!VX X [9PR_`+ab!VX X 	Aq!QA
[9Z[+\]!;= = 	

:U]]3A
[1WX+YZ!57 7r  c           	   +     K   t        t        |||      }|g}t        j                  |      j                  dk(  rJt        j
                  j                         r*t        j                  d      t        j                  d      gn|}t        j                  t        j                  g}t        |ddgddg|      D ]G  \  }}}	}
d|
i}t         |t        t        t        t        f      |t        j                  ||	f|       I t        ddgddg|      D ]E  \  }}	}
d|
i}t         |t        t        t        t        f      t        j                  ||	f|       G t        |ddgddg|      D ]e  \  }}}	}
d|
i} |t        t        t        t        ft        j                  |      }t         |t        t        t        t        f      |||	f|       g y w)	Nr   r  zcuda:0TFrE  r  r   )r   r   r   r   r  rZ  r;  preserve_formatrF  r   rM   rH   r  )r   r   r   r   r   r   devicesmemory_formatsr9  cpmem_fothers               r   sample_inputs_tor9  4  s    {6m\HhG||F  E)CH::CZCZC\5<<&X(>?bi++U-@-@AN
 ")4-$P^!_ gBU
 (Aq!Q<0rSU7V_eff	g !$u~N _BU
 (Aq!Q<0r27NW]^^	_ ")4-$P^!_ WBU
 !Q1U]]6J(Aq!Q<0r2vVVWs   GGc              +   R  K   fd}t         |t        t        t        f      d       t         |t        t        t        f      dd       t         |t        t        t        f      dd       t         |t        t        t        f      ddd       t         |t        t        t        f      ddd       t         |t        t        t        f      dddd       t         |t        t        t        f      dddd       t         |d      d       t         |d      dd       t         |d      dd       t         |d      ddd       t         |d      ddd       t         |d      dddd       t         |d      dddd       y w)	Nc                 "    t        |       S rw  r   )rO  r   r   r   s    r   get_tensor_inputz,sample_inputs_topk.<locals>.get_tensor_inputV  s    4uV=YYr   r   r   r   Tr   r   r   )rM   rH   rG   )r   r   r   r   r   r<  s    ```  r   sample_inputs_topkr=  U  ss    Z &1ay11
55
&1ay11a
88
&1ay11b
99
&1ay11a
>>
&1ay11b$
??
&1ay11at
DD
&1ay11b$
EE
&r*A
..
&r*Aq
11
&r*Ar
22
&r*Aq$
77
&r*Ar4
88
&r*Aq$
==
&r*Ar4
>>s   F"F'c              +   v   K   t        t        |||      }t         |t               |t                     y wNr   r  r   s         r   sample_inputs_outerr@  i  s+     {6m\H
hqk8A;
//r  c              +      K   t        t        |||      }t        t        t        ft        ft        dt        fdt        t        ff}d}t        |||      D ]#  \  }}	}
t	         ||       ||	      |
f       % y w)Nr   r   r   r   r   rX  )r   r   r   r   r   r   rN  r%  size_xsize_yr  s              r   sample_inputs_distrD  m  sz     {6m\HAYq!QiaV4E	B$UE26 H(6*(62BA1FGGHr  c              +     K   d| j                   v }d| j                   v }d| j                   v }|rHt        t        j                  ||      }	t        t        j                  t        j
                        }
nGt        t        ||      }	|s|r+t        t        j                  t        j
                        }
nfd}
ddt        t        fg}|r|t        j                  k(  rd	}nd
}nd}|r |	d      j                          |	d      f}nd}t        |||      D ]  \  }}} |	|      }g }|j                  dk(  rdnd}|j                  |        |
|j                  dk7  r|j                  |   nd      }|j                  |       |s|r|j                   |	|             n|r|j                  |       t        |      }|i nd|i}t!        |||        y w)N	index_add
index_copy
index_fillr   r  c                 B    t        | ft        j                  d|       S Nr   r   r   r   r   r   r   ry  )r  r   s    r   make_idxz%sample_inputs_index.<locals>.make_idx  s    "A4ekkqWXYYr   r   r   ru  r  rt  r   r   r   r   r  r  )r  r   r   ro  r&  ry  r   r  rH   r  rU  r   r$  r<  r<  r  rM   )r   r   r   r   	referencer   addr+  r,  r   rM  r  alphasr  r<  r  r  r(  r   r   r  s    `                   r   sample_inputs_indexrQ  w  s    

%C7<<'D7<<'D 5::fEQ^_5;;vU[[I;vUR_`3u~~fEKKPHZ $AF
EJJ"FF 4.%%'"6&vvv> 7ueUO FFaKbQCqvv{qwws|:C 3KK(KKT{}7E*:!$v66)7s   GGc              +     K   t        t        ||      }fd}ddt        t        ft        t        fft        t        t        ft        t        t        ffg}d}| j                  }	|	dv sJ t        ||      D ]o  \  }
}|
\  }}t        |      dk\  rdnd	} |t        |      d	k7  r||   ndt        |      d	k7  r||   nd      }|| ||      |	f}t         ||      |d
|i       q |r|	dk(  rt        j                  d	dgd	d	gddgg||      }t        j                  dd	gd	d	gddgddgg||      }t        j                  g dt        j                        }t        |d	|||	fd
di       y y y w)Nr   c                 B    t        | ft        j                  d|      S rJ  rL  )r  r  r   s     r   rM  z,sample_inputs_index_reduce.<locals>.make_idx  s    A4ekkqqQQr   r  )r   r   ru  )rE  r  r  r  r   r   r   include_selfr  rE     r     r:  r   )r   r   r   r   r   T)r   r   rH   rG   variant_test_namer   rM  rM   r   r   r  )r   r   r   r   r   r   rM  r  include_selfsr  r<  rT  
self_shape	src_shaper   r  r   rb  r  s    `                 r   sample_inputs_index_reducer[    s    {6m\HR 1v1v&6!QQ1I8NOF!M&&F5555&v}= 	B| %
Iz?a'aQY1)<y~!*-j/Q*>z#AGS(9-v6(:.#"0<!@B 	B	B 6) q"g1vBx8fdqrllQFQFQFQF;5QWgtull<uzz&I% !3V4"0$!79 	9 *}s   E6E9c              +     K   t        t        ||      }fd}t        t        ft        t        ft        t        ft        t        ft        t        t        ft        t        fg}t        g |d      j	                         }|D ]&  }	|	\  }
}}t        |
      }t        |      D cg c]  } |||||       }}t        |      D cg c]'  \  }}|	t        j                  |dk\  ||
|   k        ) }}}t        j                  t        j                  |      }t         ||
      |||       t        |      D cg c]*  \  }}|	t        j                  |dk\  ||
|   dz
  k        , }}}t        j                  t        j                  |      }t         ||
      |||       ) y c c}w c c}}w c c}}w w)Nr   c                 v    dg|z  }| ||<   t        | ft        j                  d|      j                  |      S Nr   r   rK  r   r   ry  rf  r  r  r   r  
view_shaper   s        r   rM  z4sample_inputs__unsafe_masked_index.<locals>.make_idx  <    S3Y

1A4ekkqqQVVWabbr   r  r   r   r   )r   r   rH   rG   rU  rM  ry  	enumerater   logical_and	functoolsr  rM   )r   r   r   r   r   r   rM  r7  r[  r0  rY  r   idx_sizer   r  r  rv  r  masksr  s    `                  r   "sample_inputs__unsafe_masked_indexrh    s    {6m\Hc QA
QA
QAqE RuU;@@BJ 
K%&"
D(*o=B3ZH8HdC3HHPYZaPbvfafifu""3!8S:a=-@Avv 1 159(:.gzJJT]^eTfz&!Sjmjy""3!8S:a=13D-DEzz 1 159(:.gzJJ
K Iv {s8   B"F?%F.7F?
F3!F33AF?>
F9	$F9-AF?c              +     K   t        t        ||      }fd}t        t        ft        t        t        fft        t        ft        t        t        dz   fft        t        t        ft        t        t        dz
  t        dz   ffg}|D ]1  }|\  }	}
}t	        |	      }t        |      D cg c]  } |||   |
||       }}t        |      D cg c]'  \  }}|	t        j                  |dk\  ||	|   k        ) }}}t        j                  t        j                  |      } ||      }t         ||	      |||       t        |      D cg c]*  \  }}|	t        j                  |dk\  ||	|   dz
  k        , }}}t        j                  t        j                  |      }t         ||	      |||       4 y c c}w c c}}w c c}}w w)Nr   c                 v    dg|z  }| ||<   t        | ft        j                  d|      j                  |      S r^  r_  r`  s        r   rM  zCsample_inputs__unsafe_masked_index_put_accumulate.<locals>.make_idx  rb  r   r   r   )r   r   rH   rG   rM  ry  rc  r   rd  re  r  rM   )r   r   r   r   r   r   rM  r7  r0  rY  r   	idx_sizesr   r  r  rv  r  rg  r  r  s    `                  r   1sample_inputs__unsafe_masked_index_put_accumulaterl    s    {6m\Hc QQF
QQAJ
QA1q5!a%()E  G&'#
D)*oAFsLA8IaL$Q7LLPYZaPbvfafifu""3!8S:a=-@Avv 1 159)$(:.gvFFT]^eTfz&!Sjmjy""3!8S:a=13D-DEzz 1 159(:.gvFFG Mv
 {s8   B&G)F=>G
G!G:AG
G$G<AGc                     t         t         t         fdft         t         t         fdft         t         t         fdfddddf}t        t        |||d d       fd	|D        S )
Nr   r   r  r  r  r  ))i  r   r   r   r   r   r   c              3   H   K   | ]  \  }}t         |      g|   y wrt  r  )ru  r  r   r   s      r   rw  z%sample_inputs_mode.<locals>.<genexpr>   s,      ,"d .66 ,   ")rH   r   r   )r   r   r   r   r   r   r   s         @r   sample_inputs_moderq    sl    
QB
QE
QK!	D {%%24IH,&*, ,r   c              +     K   t        t        |||      t        t        dt        j                  |d      d}t        j                  ||z  |t        j                        d | }|| dz
  g}t        |d      D ]4  \  }}t         ||f      |j                          |f      |f	       6 d
dg}	fd|	D        }
fd|	D        }fd|	D        }t        |
||d      D ]a  \  }}}}t        |j                         j                  |      |j                         |j                         j                  |      |f	       c g d}fd|D        }
 dd      } d      }t        |
d      D ]_  \  }}t        |j                         j                  |      |j                         |j                         j                  |      |f	       a y w)Nr:  r   Fr   r   r   r   r   r  r   ru  rb  r   r   r   c              3   .   K   | ]  } |        y wrt  r   ru  rO  r   s     r   rw  z$sample_inputs_put.<locals>.<genexpr>6       7$x~7r  c              3   2   K   | ]  } |d         ywr   r   Nr   ru  rO  rM  s     r   rw  z$sample_inputs_put.<locals>.<genexpr>7       ?$x1%%?   c              3   .   K   | ]  } |        y wrt  r   rv  s     r   rw  z$sample_inputs_put.<locals>.<genexpr>8  rw  r  r"  r   r   r  c              3   .   K   | ]  } |        y wrt  r   rv  s     r   rw  z$sample_inputs_put.<locals>.<genexpr>A       4$x~4r  r"  rz  )	r   r   r   ry  r  r   rM   r  r  )r   r   r   r   r   rH   r  idx_listaccscalar_sizestgt_genidx_gensrc_gentgtr  	tgt_sizesr   rM  s                   @@r   sample_inputs_putr  %  s    {%m\H{V[`aH	A ..QvU[[
A"1
ECcTAXHHm4 &S!Q 0 #		 (! # %& 	&& :L7,7G?,?G7,7G%gwO &S#s		 : := I #		 #		 : := I # %& 	&& )I4)4G
4a
 C
4.CG]3 &S		 : := I #		 #		 : := I # %& 	&&s   GGc              +   l  K   t        t        |||      t        t        dt        j                  |d      d} |f||z        }|| dz
  fD ]  }t	         ||f      |f        d	d
g}fd|D        }	fd|D        }
t        |	|
      D ]@  \  }}t	        |j                         j                  |      |j                         f       B g d}fd|D        }	 dd      }|	D ]=  }t	        |j                         j                  |      |j                         f       ? y w)Nr:  r   Frs  r   rz  r   rt  r   r   c              3   .   K   | ]  } |        y wrt  r   rv  s     r   rw  z%sample_inputs_take.<locals>.<genexpr>W  rw  r  c              3   2   K   | ]  } |d         ywry  r   r{  s     r   rw  z%sample_inputs_take.<locals>.<genexpr>X  r|  r}  r  c              3   .   K   | ]  } |        y wrt  r   rv  s     r   rw  z%sample_inputs_take.<locals>.<genexpr>_  r  r  r"  )r   r   r   ry  rM   r   r  r  )r   r   r   r   r   rH   ry  r  r  r  r  r  	src_sizesr   rM  s                @@r   sample_inputs_taker  J  s4    {%m\H{V[`aH	A aTQ(Evz" ?!Q 0v>>? :L7,7G?,?GGW- /S		 : := I #		~/ 	//
 )I4)4G
4a
 C /		 : := I #		~/ 	//s   D0D4c              +      K   t        t        ||d d |      }t         |d      g dg d       t         |d      g dg d       y w)Nr   )r   r   r   r   r$  )r   r   r   r   )r   r   r   r  )r  r   r   r   r   r   s         r   sample_movedim_moveaxisr  f  sD     {%DtcpqH
h|,lL
II
h|,o?O
PPr  c              +      K   t        | |||fi |E d {    t        t        |||      }d}|D ]  \  }}}	t         ||      ||	f        y 7 <w)Nr   )r  )r   r   r  r   r   r   )r  r  rP  )r   r   r   r   r   r   r  r   r   r   r   )r  r  r   r   r   r  )r   r   r   r   r   rG  )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   rM   )
r   r   r   r   r   r   r   r<  r  destinations
             r   reference_movedim_moveaxisr  k  sm     &w}WPVWWW{6m\HD& '+ G"v{(5/0EFFG1 X   AA=Ac              +     K   t        t        |t        j                        }t	        t         |ddddd      d      d	
       t	        t         |ddddd      d      d
       t	        t         |ddddd      d      d
       t	        t         |ddddd      d      d
       t	        t         |ddddd      d      d
       t	        t         |ddddd      d      dt               t	        t         |ddddd      d      dt               t	        t         |ddddd      d      dt               t	        t         |ddddd      d      dt               y w)Nr  r   r   r   r   r   ))r   r  r  r   zmovedim: Invalid source or destination dims: source \(\[3, -3\] dims\) should contain the same number of dims as destination \(\[1, 0, -1\] dims\)r   )r  r?  zmovedim: Invalid source or destination dims: source \(\[3, -3, 4\] dims\) should contain the same number of dims as destination \(\[1, 0\] dims\))r   r   r  r   r   r   z2movedim: repeated dim in `source` \(\[0, 4, -5\]\))r  r  z7movedim: repeated dim in `destination` \(\[0, 4, -5\]\)))r   r   r  r  z2movedim: repeated dim in `source` \(\[1, 0, -4\]\))r   r   r   r   r   zKDimension out of range \(expected to be in range of \[-5, 4\], but got -6\)r   r   )r  r  )r  r   )r   r  )r   r   r   r   rN   rM   r  r   r   r   r   s       r   error_movedim_moveaxisr    s    {6GH HQ1a+2GHB  HQ1a+2FG>  HQ1a+2IJI  HQ1a+2IJN  HQ1a+2JKI  HQ1a+2IJb  HQ1a+2IJb  HQ1a+':b  HQ1a+':b s   E:E<c              +      K   t        t        |||      }d}d}|rd}d}| j                  dv }t        ||      D ]3  \  }	}
|rt	        |	      t	        |
      k  r t         ||
      |	       5 y w)Nr:  )	r   r"  r   r^  r  r5  r:  rW  )r   r   r   r   )r   r"  r  r  r  )r   r   r   )r   r"  r^  r  r5  r  r  )r   r"  r  r  )r  _refs.repeat)r   r   r  r   rM  rM   )r   r   r   r   r   r   rep_dimsr  is_repeat_oprep_dimr<  s              r   sample_repeat_tiler    s     {%m\H^H8F M)<<#==L!(F3 4 CL3u:5(5/7334rq  c          	   +   ~  K   t         t         t         fdddft         t         t         fdddft         t         t         fdddft         t         t         fdddft         t         t         fdddff}|D ]N  \  }}}	}
t        |||d d |      }t        |||	|
       |s,t        ||t        j                  |	      |
       P y w)Nr   r   r   r   r   )rH   r   rM   r   r   r   r   r   r   	is_narrowr   shapes_and_argsr<  r   r   lengthr   s               r    sample_inputs_narrow_narrow_copyr    s     
QAq!
QB1
QAq!
QB1
QAq!O &5 H!sE6U%Dt+8:&#uf55fc5<<+>GGHs   BB=&B=c             +     K   t        | |||fd|i|E d {    t        fdddft        fdddft        fdddft        fdddft        fddt        ft        fdt         t        ft        t        fdddft        t        fd	ddft        t        fdddft        t        fdddft        t        fddt        ft        t        fdt         t        ft        t        t        fdddft        t        t        fdddft        t        t        fddt        ft        t        t        fdt         t        ft        t        t        fdddft        t        t        fdddft        t        t        fddd
ff}|D ]N  \  }}}	}
t	        |||d d |      }t        |||	|
       |s,t        ||t        j                  |	      |
       P y 7 w)Nr  r   r   r   r   r  r   r   r   r   r   )r  rG   rH   rF   r   rM   r   r   r  s               r   #reference_inputs_narrow_narrow_copyr    s    /uajuntuuu q!Q
r2q
q!Q
q"a
r1a
q1"a QAq
QR
QAq
QQ
QAq
QaR QAq!
QBA
QAq!
QBA
QAq!
QAq!
QBA1O6 &5 H!sE6U%Dt+8:&#uf55fc5<<+>GGH; vs   F>F;E<F>'F>c          
   #     K   t        t        |t        j                        }t	        t         |d      ddd      t        d       |sZ|sXt        j                  |      j                  dk(  r6t	        t         |t        t        t        f      ddd      t        d	       n5t	        t         |t        t        t        f      ddd      t        d
       t	        t         |t        t        t        f      ddd      t        d       t	        t         |t        t        t        f      dt        dz   d      t        d       t	        t         |t        t        t        f      dt         dz
  d      t        d       t	        t         |t        t        t        f      ddt        dz         t        d       |sP|sNt        j                  |      j                  dk(  r,t	        t         |t        f      ddd      t        d       n+t	        t         |t        f      ddd      t        d       |rt	        t         |t        t        t        f      d |t        t        j                        d      t        d       t	        t         |t        t        t        f      d |dt        j                        d      t        d       y y w)Nr  r   r   r   z0narrow\(\) cannot be applied to a 0-dim tensor\.r   r  r   zVExpected dim < static_cast<int64_t>\(self_sizes.size\(\)\) to be true, but got false\.zJDimension out of range \(expected to be in range of \[-3, 2\], but got 3\)r  zKDimension out of range \(expected to be in range of \[-3, 2\], but got -4\)zIstart out of range \(expected to be in range of \[-10, 10\], but got 11\)zJstart out of range \(expected to be in range of \[-10, 10\], but got -11\)r   z<start \(0\) \+ length \(11\) exceeds dimension size \(10\)\.r   z<start \(0\) \+ length \(-1\) exceeds dimension size \(10\)\.z)narrow\(\): length must be non-negative\.rV  z(start must be an 0-dim integral Tensor\.r  )r   r   r   r   rN   rM   r?  r   r  rG   rH   rF   r  rY  r  )r   r   r  r  r   s        r   error_inputs_narrow_narrow_copyr    ss    {6GH ["q!Q7 ,!TV V
 VV(<(A(AU(JXq!Qi%8!QB$0%~@ 	@ Xq!Qi%8!QB$.%rt 	t [1a)!4b!Q? *!oq q
 [1a)!4aQB *!mo o [1a)!4a!aC *!np p
 [1a)!4aAEB ,!`b b VV(<(A(AU(JXqd^Q2>$0%df 	f Xqd^Q2>$0%QS 	S Xq!Qi%8!Xauyy=Y[\]$0%PR 	R
 Xq!Qi%8"hrQVQ[Q[>\^_`$0%PR 	R s   KKc              +     K   ddi fddddifddi fdd i fddi fddi fddddifdd d	d
ifdd d	difg	}t        t        ||d d |      }|D ]6  \  }}}	 ||      }
| ||      }t        |
|fi |	 )t        |
fi |	 8 y w)Nr5  r   r   r  r  r   r   r  dxr  r   r  r   r   r   r   r   r   r   y_shape_x_shape_and_kwargsr   y_shapex_shapekwargy_tensorx_tensors               r   sample_trapezoidr  R  s     		%$	tR	tR 
		%%	tdC[!	c{#" {%Dt%24H#= 1%G$(Hh:E::h0%001   B Bc              +     K   ddi fddddifddi fdd i fddi fddi fddddifdd d	d
ifdd d	difg	}t        t        |||d d       }|D ]6  \  }}}	 ||      }
| ||      }t        |
|fi |	 )t        |
fi |	 8 y w)Nr5  r   r   r  r  r   r   r  r  r  r   r  r  r   r  s               r   sample_cumulative_trapezoidr  k  s      
	%$	tR	tR 
		%%	tdC[!	c{#" {6%24IH#= 1%G$(Hh:E::h0%001r  c           	   +   f   K   g d}|D ]$  \  }}t        |||d d |      }t        ||       & y w)N)	)r  r   )r  r   )r  r   )r  r   )r  r  r  )r   r   )r   r   )r   r   r   r  )	r   r   r   r   r   shapes_and_axesr<  rj  r   s	            r   sample_unsqueezer    sF     
O ' (tU%Dt+8:&$''(s   /1c              +      K   d}d}d}d}d}	t        |||||	      }
t        t        |||      }|
D ]!  \  }}}}} ||      }t        |||||       # t         |d      d       y w)N))r   r   r   r   )r   r   r   r   )r   r   r5  )r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rM   )r   r   r   r   r   r  kernel_sizes	dilationspaddingsrn  r7  r   r<  r  r  r  r
  r   s                     r   sample_inputs_nn_unfoldr    s     )F&LIHGFL)XwGE{6m\H9> J5{Hgv%&+x&IIJ
 h|,f
55r  c           
   +      K   t         dt         dfdfddt         dt         dfdft         dt         dfdft         dt         dfdft         dt         dfdfd	f}|D ]%  \  }}t        |||d d |
      }t        ||       ' y w)Nr   r   r   r   )r   r"  r   r  r  r  r  r   r   rH   r   rM   )	r   r   r   r   r   r  r<  r   r   s	            r   sample_inputs_squeezer    s     
Q1r
Q1t
Q1u
Q1t
Q1u	O ' -tU%Dt+8: &t,,	-s   A<A>c           	   +      K   dt         dt         dfdft         dt         dfdft         dt         dfdft         dt         dfdfdf}|D ]$  \  }}t        |||d d |      }t        ||       & y w)	Nr  r   r   r  r  r   r  r   r  )	r   r   r   r   r   r  r<  r  r   s	            r   sample_inputs_squeeze_multipler    s     
Q1t
Q1u
Q1v
Q1wO ' (tU%Dt+8: &$''	(r  c                       j                   dk(  r S t        |t              rt         fd|D              }t        |t              r j
                  |   dk7  r S t        j                   |      S )Nr   c              3   H   K   | ]  }j                   |   d k(  s|  ywr   Nr<  )ru  r.  r   s     r   rw  z_squeeze_ref.<locals>.<genexpr>  s     81
aQ8s   ""r   )r$  rx  r   r  rY  r<  r  r  )r   rj  s   ` r   _squeeze_refr    s\    vv{$!888$!!3::ar   c              +   ^  K   |dv sJ |dv rd}n |dk(  rd}n|t         j                  k(  rd}nd}t        t        |||      }|dk(  rt	         |d	      d
       |dv r"|D ]  \  }}	t	         ||      |	|f        y dD ]$  }
|D ]  \  }}	t	         ||      |	||
f        & y w)N)constantreflect	replicatecircular)r  r  )r  r   r  r#  r   r   r   r   r  r#  rX  r   rX  r#  rX  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  r  r  )r  r  )r  r  r  r  r  )rX  r  )r  r   )r  r#  r  )r  r  )r  r   )r  r#  r  r  )r  r   )r  r#  )r  r  r  r  ))r9  r   r  )r  r  r  r  r  r  r  r  r   rX  )r   r   )r  r  r  )r  r  )r   r  r   r   rM   )r   r   r   r   r  r   r7  make_inpr<  pad	pad_values              r   sample_inputs_nn_padr    s     CCCC''
 
	
6 EJJ
E
	E {6m\Hz(9-I>>33 	AJE3huoS$K@@	A " 	PI# P
s!(5/dI8NOOP	PrR  c              +   x   K   d}t        t        |||      }|D ]  \  }}t         ||      |df        y w)N)))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  r   r   r  ))r  r   r   r   )r   r   r   r  r   r  r   r   )	r   r   r   r   r   r7  r  r<  r  s	            r   'sample_inputs_nn_pad_replicate_negativer  +  sJ     E {6m\H D
s(5/k0BCCDr  c              /      	K   t        | ||g|ddi|}ddlm}  ||      	d	fd	}|D ].  } ||j                  g|j                  i |j
                   0 y w)Nr  r  r   )dtype_to_typec                 N    |t        | |f      S t        | | |      f      S )Nr   r  )rb  r  r  r  scalar_types       r   drop_mode_argumentz9sample_inputs_constant_pad_nd.<locals>.drop_mode_argumentD  s.    =uC622uCU1C+DEEr   r  )r  torch._prims_commonr  rb  r   r   )
r   r   r   r   r   
nn_samplesr  r  rl  r  s
            @r   sample_inputs_constant_pad_ndr  9  s}      &gvu At A+5A9?AJ
 2&KF  N MMv}}MMNs   AAc              +     K   t        t        |||      }t         |d      d       t         |d      d       t         |d      dd       t         |d      t        j                  d|	      d       y w)
Nr   r   r   )repeatsr  r   )r  r   r   r$  )r   r   rM   r   aranger   s         r   sample_inputs_repeat_interleaver  M  sn     V5P]^J
jna
00
j+Q
77
j+QA
>>
j+U\\!F5SYZ
[[r  c           	   +     K   fd}t         |d      dd       t         |d      dd       j                  rt         |d      d       dD ]1  }t         |d      d	|d
       t         |d      dd|d       3  |ddd      }t         |d      t        d|d             t         |d      t        d|d|             j                  st         |d      d|dd       y y w)Nc                 $    t        | fd|S r?  r   )r<  r   r   r   r   s     r   mtzsample_inputs_stft.<locals>.mtW  s*    5 Bu)6B:@B 	Br   rI  r  T)n_fftreturn_complexFr  rv  r  )r  r  r  )r  rI  r   r   )r  
hop_lengthr  r  r4  r  r  )r   rI  )r  windowr  r  r  )r   rI  )r  r  onesidedr  )rM   r   r  )r   r   r   r   r   r  r  r  s    ```    r   sample_inputs_stftr  V  s    B bgR
==
bgR
>>"S',, >"R&&NN"Y-ra!'> 	>>
 %F

8T6$W]^` `

8T6$W]^` `yMFU! 	! s   D Dc           
   +     	K   t        t        ||      		fd}t         |d      t        d             t         |d      t        dd	
             t         |d      t        dd
             dD ]C  }t         |d      t        d|             t         |d      t        dd|             E  	ddd      }t         |d      t        d|j                               t         |d      t        d|d d d|d             j                  s|n|j
                  }t         |d      t        d|d d |             y w)Nr   c                 <    j                   r| n| dz   } |fi |S )Nr  )r   )r<  r   
real_shaper   r   s      r   r  zsample_inputs_istft.<locals>.mts  s&    #..UEDL

-f--r   )r  r   r  r  r  r|  r   F)r  r  )r   r   Trv  )r  r  r   )r  r  )r   r  r  r   r   )r  r  r  r4  r  r  )r  r  r  r  )r  r  r  r  )r  r  
win_lengthr  r  )r  r   r   )r  r  r  )r   r   rM   r  r   real)
r   r   r   r   r   r  r  r  real_windowr   s
     `      @r   sample_inputs_istftr  p  sI    {6m\H. bk$R.
99
bjA)F
GG
bjB)F
GG ^"[/$R2OPP"Z.B1U[1\]]^ bbs+F
bodu?O?O/Q R R
b&t&QU0W X X !& 0 0&fkkK
bnT+bq/Z`-a
bbs   EE!c              +   ~  K   t        t        ||dd      }g d}g d}ddg}t        |t        ||      ||      D ]~  \  }	\  }
}}} |g |	|
|      }t        j                  |      \  }}|j                  |       |j                  |       |r|
|fn||
f} |g |	||      }t        |||||	        y w)
Nr   r   r   r   r   r   )r   r"  r  r  )r   r   r   TFr  )rB  r	  )r   r   r   r   geqrfr  rM   )r   r   r   r   r   r   r  nstfr  r  r  rB  r	  rb  
reflectorstauother_matrix_shaper8  s                      r   sample_inputs_ormqrr    s     E&bqQJ(G	B
B*1'72r?BPR*S R&v1tY>U>A>q>*++e,
C!!-0=)'+aV!Q8U8%78V*c5tyQQRs   B;B=c           	   +      K   t        | ||d      }|D ]I  }|j                  }t        |j                  |||d d       |_        |j	                  |      f|_        | K y w)NFr  rn  )r   rb  r   r<  r  r   )r   r   r   r   r   cholesky_inverse_samplesrl  
psd_matrixs           r   sample_inputs_cholesky_solver    st     De  + \\
":#3#35_lrv  ~B  C!00?A	r  c              +      K   t        t        |||      }d}t        |dd      D ].  \  }}}	|t        |	z   t        fz   }
 ||
 }t	        |d|f       0 y w)Nr:  )r   r   r   ru  )r   r   r   r   r   Tr   )r   r5   r   rH   rM   )r   r   r   r   r   r   batch_shapesr  	get_infos
size_deltar<  rb  s               r   sample_inputs_lur!    sq     K"6PH &L.5lMSf.g 9*Y
q:~q11% %tY&7889s   AAc              +      K   d }t        | |||fi |D ]]  }t        j                  j                  |j                        \  }}|j                  |       t        ||      j                  |       _ y w)Nc                     | d   | d   fS )Nr   r   r   )rc  s    r   out_fnz'sample_inputs_lu_unpack.<locals>.out_fn  s    ay&)##r   r  )r   r   linalg	lu_factorrb  r  rM   r  )	r   r   r   r   r   r$  	lu_samplelu_datapivotss	            r   sample_inputs_lu_unpackr*    su     $ -Wfe]]V\] X	,,00A}-'6*88PV8WWXs   A4A6c              +      K   t        t        |||      }d}|D ];  }t         |d      |       t         |t        t        t        f      |       = t         |d      d       y w)Nr   )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  s           r   sample_inputs_rollr-    sg     {6m\H_D 9(9-C88(Aq!9-C889
 hrl
00s   A,A.c              +     K   t        t        |t        j                        }d}t	         |t
        f      d      }t        ||       d}t	         |t
        t
        f      dd      }t        ||       d}t	         |t
        f      dd	      }	t        |	|t        
       d}
t	         |d      dd      }t        ||
t        
       y w)Nr  z`shifts` requiredr   r   z shifts and dimensions must alignr  r   zout of ranger   r  zDimension specified as 0)r   r   r   r   rM   rH   rN   r  )r   r   r   r   r   r  r   r  r   ry  r  r  s               r   error_inputs_rollr/    s     {6GH"H	Xqd^R	(B
RX
..2H	Xq!f%vq	1B
RX
..H	Xqe_a	+B
RX*
EE*H	Xb\1a	(B
RX*
EEr  c              +     K   t        t        |||      }t        j                  t	        dd      g d      }t         |t        t        t        f             |D ]&  }t         |t        t        t        f      |       ( y w)Nr   r  r   )r#  r   r   r   r   )r   r   r  r   ry  rM   rH   r,  s           r   sample_inputs_rot90r2    sl     {6m\HU2q\+DED
h1ay)
** 9(Aq!9-C889rU  c              +   R  K   t        t        |t        j                        }d}t	         |t
        t
        f      d      }t        ||       d}t	         |t
        f            }t        ||       d}t	         |t
        t
        f      d      }	t        |	|       y w)	Nr  zexpected total rotation dimsr"  r  r   zexpected total dims >= 2z&expected rotation dims to be differentr  )r   r   r   r   rM   rH   rN   )
r   r   r   r   r   r  r   r  r   ry  s
             r   error_inputs_rot90r5    s     {6GH-H	Xq!f%D	1B
RX
..)H	Xqd^	$B
RX
..7H	Xq!f%F	3B
RX
..r.  c           
   +   r  K   t        t        t        t        t        f|||      }t        t        t        f|||      }t         |              t         |       d       t         |       ddd       t         |       ddd       t         |       ddd       t         |       dd	
       t         |       dt        dz  
       t         |       d dd       t         |       d d 
       t         |       dd       t        t        ddd|||      d       y w)Nr   r   r  T)r   unbiasedr4  r   Fr   g?)r   
correctionr   )r   r8  r4  )r8  r4  r   r   r   r  r  )r   r   r   r   r   	tensor_nd	tensor_1ds          r   sample_inputs_std_varr;    s    aAYvU&35IaT&&35I ik
""
ikq
))
ikq4
FF
ikq4
FF
ikq5%
HH
ikt
<<
iktQ
??
ikt4
HH
ikt
==
ika
>>
k!Q&Ubcik
lls   D5D7c              +      K   t        t        |||      }t         |t        t        f      d       t         |t        f      d       y w)Nr   TFr   r   s         r   sample_inputs_std_var_unbiasedr=    sD     {6%24H h1v&
--
htne
,,r  c              +   D   K   g d}|D ]  }t        ||| |        y w)N)r  r   r  r5  r:  r   )r   r   r   r   r  r<  s         r   _generate_correlation_inputsr?    s-     +F Z%uV=YYZs    c                 *    d t        |||      D        S )Nc              3   2   K   | ]  }t        |        y wrt  r  ru  r(  s     r   rw  z)sample_inputs_corrcoef.<locals>.<genexpr>  s     _qKN_s   )r?  r   r   r   r   r   s        r   sample_inputs_corrcoefrD    s    _$@P]$^__r   c              +      K   t        | |||fi |E d {    |j                  rt        t        d|||      d       y y 7 -w)Nr   r:  r  )ra   r   rM   r   rC  s        r   sample_inputs_copysignrF    sN     /`Y_```+auVS`achii  as   AA.Ac           	   +     K   t        |||      D ]  }t        |       |j                         dk  r|j                         n|j	                  d      }t        |ft        j                  |dd      }t        |ft        j                  |dd|      }t        t        |      d |gd |g      D ]4  \  }	}
}t        |j                         j                  |      |	|
|       6  y w)Nr   r   r  r  r   r   )r8  fweightsaweights)r?  rM   
ndimensionrh  rO  r   r   rY  r[  r   ry  r  r  )r   r   r   r   r   r(  num_observationsrH  rI  r8  fwaws               r   sample_inputs_covrN    s     )&%G O!n()(:1779q	 02%))FXY`bc 02%++fZ[bc  tA  B")%0@*AD(CSVZ\dUe"f 	OJBaggi66}E)3b2O O	OOs   C%C'c           
   +     K   t        j                  t        |      }t        t	        t        j                  t        t        t        |            d       t        t	        |t        j                  t        t        |            d       t        t	        |t        j                  t        t        |            d       t        t	        |t        j                  t        |            d       t        t	        |t        j
                  d	d	g|            d
       t        t	        |t        j
                  d	g|            d       t        t	        |t        j                  d	|            d       t        t	        |t        j
                  g d|            d       t        t	        |t        j
                  g d|            d       y w)Nr$  z.expected input to have two or fewer dimensionsr   )rH  z1expected fweights to have one or fewer dimensions)rI  z1expected aweights to have one or fewer dimensionsz(expected fweights to have integral dtyper   z.expected aweights to have floating point dtypez(expected fweights to have the same numelz(expected aweights to have the same numel)r   r   r  r  r  zfweights cannot be negative)rK  rh  g      r  g      zaweights cannot be negative)r   r  rH   rN   rM   r   )r   r   r   r.  s       r   error_inputs_covrP  )  s    

1V$A
EJJq!Qv67DF F A

1a ?@GI I A

1a ?@GI I A

1V <=>@ @ AaVF CDDF F AaS @A>@ @ A

1V <=>@ @ A-B6 RS13 3 A-Fv VW13 3s   G-G/c              +   z   K   t        t        |||      }g d}|D ]  \  }}t         ||      |f        y w)Nr   ))r  )r   r   r   r   )r  )r   r   r   r   r  )r  )r   r   r   r   r   r   	r   r   r   r   r   r   r7  r<  r   s	            r   sample_inputs_permuterS  H  sE     {6m\H+E
  9t(5/889r`  c              +   P  K   t        | |||fi |E d {    t        t        |||      }d}|D ]o  \  }}t        j                  |      D ]R  }	 ||      j                  |	      }
t        |
|f        ||d      j                  |	      }
t        |
|f       T q y 7 w)Nr   )r  )r   r"  )r   r?  )r   r#  )rs  )r   r   r   )r  r  )r  r  )r  r  r   TrA  )rS  r   r   r  r|  rT  rM   )r@  r   r   r   r   r   r7  r<  permutationr  r.  s              r   reference_inputs_permuterV  S  s     $RPPPP{6m\H	E $ 6{''4 	6A''*Aa{n55d3;;A>Aa{n55	66! Qr  c           	   +   x   K   t        t        t        dt        j                  |      ddi      d       y w)Nr   r   lambdr  r  z:lambda must be greater or equal to 0, but found to be -0.5r   r  r  s      r   error_inputs_softshrinkrY  l  s5     
[TV!T^egk]lm!]_ _r  c              +      K   t        t        |||      }dD ]"  }t         |t        t              d|i       $ t	        | |||      E d {    y 7 w)Nr   rI  r4  rX  r  r   r   rM   rH   rc   r   r   r   r   r   r   lbdas          r   sample_inputs_softshrinkr_  p  sV     {6m\H  B(1a.'4AAB /w}UUU   AAAAc              +      K   t        t        |||      }dD ]"  }t         |t        t              d|i       $ t	        | |||      E d {    y 7 w)Nr   )r  rI  r4  rX  r  r\  r]  s          r   sample_inputs_hardshrinkrb  z  sV     {6m\H
   B(1a.'4AAB /w}UUUr`  c              +      K   t        t        |||      }dD ]&  \  }}t         |t        t              ||d       ( t	        | |||      E d {    y 7 w)Nr   ))r4  r  )rI  rI  min_valr,  r  r\  )r   r   r   r   r   r   r,  re  s           r   sample_inputs_hardtanhrf    s]     {6m\H 4 [(1a.WQX1YZZ[ /w}UUUs   AAAAc           	   +      K   t        t        t        dt        j                  |      ddd      t
        d       y w)	Nr   r   r4  r  rd  r  z&min_val cannot be greater than max_valr   )rN   rM   r   r   r[  r.  r  s      r   error_inputs_hardtanhrh    s8     
[TV!Tily}]~ *8`b br  c              +     K   fd}t        t        ||      } |d      } |d      } |d      }	 |d      }
 |d      } |d      } |d	      } |d
      } |d      }t         ||      gd       t         ||       ||      gd       t         ||	      gd       t         ||	       ||
      gd       t         ||	       ||      gd       t         ||       ||      gd       t         ||       ||      gd       t         ||       ||
      gd       t         ||      gd       t         ||      gd       t         ||       ||      gd       y w)Nc                 B    | j                         j                        S rt  )r  r  )r(  r   s    r   r0  zsample_inputs_einsum.<locals>.c  s    wwy''66r   r   r   rr  r5  r  r   r#  r-  r   r   r   r   zi->zi,j->ijzij->iz	ij,kj->ikzij,Ab->ijAbzaij,ajk->aikzaij,jk->aikz	ijk,ik->jziji->jz	i...->...z...ik, ...j -> ijr   )r   r   r   r   r   r0  r   r   r   ABr  r  Er  Is      `            r   sample_inputs_einsumrp    s|    7 {6m\HAAAAAAAAA qtfe
$$
qtQqTlI
.. qtfg
&&
qtQqTlK
00
qtQqTlM
22 qtQqTlN
33
qtQqTlM
22
qtQqTlK
00 qtfh
'' qtfk
**
qtQqTl$7
88s   E:E=c              +      K   t        t        |||      }t        t        t        ft        dt        ff}d}t	        ||      D ]  \  }}	t         ||      d|	i        y w)Nr:  r   )r  r"  r^  r  r   r  r  )r   r   rH   rG   r   rM   )
r   r   r   r   r   r   rN  all_dimsrO  r  s
             r   sample_inputs_fliprs    sb     {%m\HAYAq	"E3HeX. A
d(4.&$@@As   A A"c                 |    t         t        t         ft         dt        fg}t        t        |||      fd|D        S )Nr   r:  c              3   F   K   | ]  }t         |d d               y w)Nr  r  r  s     r   rw  z.sample_inputs_fliplr_flipud.<locals>.<genexpr>  s     R%KDt<=Rs   !)rH   rG   r   r   )r   r   r   r   r   r  r   s         @r   sample_inputs_fliplr_flipudrv    s9    	
Aq		
Aq	F {%m\HR6RRr   c           	   +   p   K   t        t        t        dt        j                  |            d       y w)Nr   r   zInput must be >= 2-d.r   r  r  s      r   error_inputs_fliplrrx    s*     
[TV!TU!8: :r  c           	   +   p   K   t        t        t        dt        j                  |            d       y w)Nr   r   zInput must be >= 1-d.r   r  r  s      r   error_inputs_flipudrz    s*     
[Ru{{6!RS!8: :r  c           	   +   x  K   t        t        ||d d |      }t        t        t        j                  |d d d      }t        t
        t        f}t         ||       ||       ||      f       t         ||       ||dd         ||dd        f       t         ||       |t        dt        f      f       t         ||      d  ||      f       t         ||       ||      d f       t         ||       ||      d f       t         ||       ||       ||      f       y w)Nr   Fr   r   )r   r   r   r}  rH   rG   rM   )r   r   r   r   r   r   make_integral_argr<  s           r   sample_inputs_clampr}    s    {%DtcpqH5;;vSW^brwx1IE
huoXe_huo,N
OO
huoXeABi-@(5QRQS9BU,V
WW
huoXq!Qi-@,B
CC
huoT8E?,C
DD
huoXe_d,C
DD
huo->u-Et,L
MM
huoXe_>OPU>V,W
XXs   D8D:)supports_scalarsc          	   +     K    || |||fi |E d {    t        t        |||      }t        t        dd||      }| j                  |      }	d}
|
D ]p  \  }}}t         ||       ||       ||      f       t         ||d       ||      j	                  dd	       ||d      j	                  dd	      f       r |rfd
ddd |        |       fg}
t
        j                  |	v r|
j                  dt        dd      dfg       |
D ]  \  }}}t         ||      ||f        t
        j                  |	v rpt
        j                  |	v r^ |dt
        j                        } |dt
        j                        } |d      }|||f|||ff}
|
D ]  \  }}}t        |||f        |j                  s|j                  rx|j                  rt        d      nt        t        d      t        d            } |d      }||d<   ||d<    |d      }||d<   ||d<    |d      }||d<   t        |||f       y y 7 /w)Nr   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   TrA  r   r   )r   r   r   )r   r  r   )r-  r  r   rf  )r   r   r   r   r   r  rV  r  r	   )rh  r   r  r  )r   r   r  rM   r	  r   r2  extendr  r[  r  r   r   )r@  r   r   r   sample_inputs_funcr~  r   r   make_scalar_tensorr  r7  r.  r/  r0  r	   s                  r   $reference_inputs_elementwise_ternaryr    s    !"fe]MfMMM{6m\H be[hi**62	E  q1a(1+Xa[(1+,FGG(1D9 ( 5 5a <hqX\>]>g>ghikm>noq 	qq ')+=+?@	
 ??..LLGAqM2.   	8GAq!hqkA77	8
 {{&&5::9I+IRuzz*V5;;/V 1I1I

  	.GAq!aq!f--	. %"2"2#55eEl75<QVW\Q];^UO!!UO!!UO!!1a&)) #3q Ns   IIH/Ic                 .    t        j                  | |      S rt  )r  maximum)r.  r%  s     r   _clamp_min_numpyr  (      ::ar   c                 .    t        j                  | |      S rt  )r  minimum)r.  r&  s     r   _clamp_max_numpyr  ,  r  r   c                     |t        j                  | |      S |t        j                  | |      S t        j                  |t        j                  | |            S rt  )r  r  r  )r.  r%  r&  s      r   _clamp_numpyr  0  sJ    
{zz!S!!
{zz!S!!::c2::a-..r   c              +     K   fdfd}t        d      D ]'  }t         t        t        t        f      |f       ) dD ]  }t         |      d        t         |ddg      d	       t         |dd
g      d	       t         |dd
g      d	       t         |dd
g      d	di       y w)Nc                 &    t        | dd      S Nr   r   r   r   r<  r   r   r   s    r   r   z'sample_inputs_cumprod.<locals>.make_arg:      5f"2]jkkr   c                    t        |       dk(  sJ  dt        fz        }|j                  | d   dd      j                  | d   dd      j                          |j                  | d   dd      j                  | d   dd      j                          |j                  | d   dd      j                  | d   dd      j                          |S )Nr   r   r   r   r   )rM  rH   narrowzero_)
dim_selectr  r   s     r   
prod_zerosz)sample_inputs_cumprod.<locals>.prod_zeros>  s    :!###!qd(#jmQ*11*Q-AFLLNjmQ*11*Q-AFLLNjmQ*11*Q-AFLLNr   r   r   )r   r   r"  r"  r   r   r   r   r   r  )ry  rM   rH   )	r   r   r   r   r   r  r   rO  r   s	    ```    @r   sample_inputs_cumprodr  9  s     l Qx <(Aq!9-SF;;< ! 5(4.t445 j!Q(t
44
j!Q(t
44
j!Q(t
44 j!Q(tWe<L
MMs   B>Cc              +   L   K   t        t        t        df|||             y w)Nr   r:  r  rC  s        r   sample_inputs_view_as_complexr  S  s!     
k1a&fTab
ccs   "$c                 \    t        t        |||      t        t        fdf}fd|D        S )Nr   r   c              3   @   K   | ]  }t         |              y wrt  r  rv  s     r   rw  z-sample_inputs_view_as_real.<locals>.<genexpr>Y  s     :DK':r  )r   r   rH   )r   r   r   r   r   rN  r   s         @r   sample_inputs_view_as_realr  V  s+    {6m\HVRLE:E::r   c              +     K   t        t        t        j                  |      }|rd}d}d}nd}d}d}t	        t         |t        t               |t        t        t        j                              t        |	       t	        t         |t        t               |t        t        t        j                              t        |	       t	        t         |t        t        t        j                         |t        t        t        j                         |t        t        t        j                        
      t        |	       y w)Nr   z^Expected both inputs to be Half, Float or Double tensors but got torch.float32 and torch.int32zbExpected object of scalar type torch.float32 but got scalar type torch.float64 for second argumentzRExpected out tensor to have dtype torch.complex128 but got torch.complex64 insteadzNExpected both inputs to be Half, Float or Double tensors but got Float and IntzSExpected object of scalar type Float but got scalar type Double for second argumentz`Expected object of scalar type ComplexDouble but got scalar type ComplexFloat for argument 'out'rV  r   r  )r   r   r   r   rN   rM   rG   rH   rY  r?  r  r2  )r   r   r  r   r   error_floaterror_dtype	error_outs           r   error_inputs_complexr  [  s     {%--GHvzh	fkv	
[!Q!Qeii1PQ ,+G G [!Q!Qemm1TU ,+G G [!Qemm!DhqRS[`[h[hFi%-a%//%JL ,)E Es   EEc              +   ~   K   t        t        |||      }t        t        f}t         ||       ||             y wr?  r  )r   r   r   r   r   r   r<  s          r   sample_inputs_logaddexpr  q  s4     {6m\HFE
huox
77   ;=c              +   l  K   fdfd}t        |       D ]:  }t        |j                  j                         j	                               | < t        |       D ]  }d|j
                  d<   |  t         |              t         d      d       t         d      dddi       t         d	      d       t         d	      dddi       t        t        j                  g d
              d      }|j                          t        |j                         j	                               t        |j                         j	                        d       t        |j                         j	                        dddi       y w)Nc                 &    t        | dd      S r  r   r  s    r   r   z$sample_inputs_prod.<locals>.make_argw  r  r   c                  2     dt         fz        } d| d<   | S )Nr   r   r#  r  )r  r   s    r   prod_single_zeroz,sample_inputs_prod.<locals>.prod_single_zero{  s!    !qd(#tr   Tr4  rN  r   r   r  r  )r  r   r   r   r:  r   r"  )	r  rM   rb  r  r  r   r   r   r  )	r   r   r   r   r   r  rl  zeror   s	    ```    @r   sample_inputs_prodr  v  s    l
 (N &,,,,.==mLMM (N #'i  &(
))
hy)
55
hy)i=N
OO
hv&T
22
hv&T9d:K
LL
ell=f\ij
kk B<DJJL
djjl11-@
AA
djjl11-@t
LL
djjl11-@'.0 0s   F.F4c              +   n   K   t        t        j                  d|            }d}t        ||       y w)Nrv  r$  zNegation, the `\-` operator, on a bool tensor is not supported. If you are trying to invert a mask, use the `\~` or `logical_not\(\)` operator instead.r   )rM   r   r   rN   )r   r   r   sir"  s        r   error_inputs_negr    s1     	U\\-?	@B4C RS
))s   35c              +   (  K   t        t        |||d d       }t         |t                      |t        t        f       |d       |d      f}d}t	        ||      D ]0  \  }}	t        |j                         j                  |      g|	  2 y w)Nr  r  r   r   )r   r  r  r   r  )r   r   rM   rG   r   r  r  )
r   r   r   r   r   r   r5  r   r   r  s
             r   sample_inputs_diagr    s     {6maelpqH
hqk
"" 	!QG )Dw- N&,,.77FMMMNs   BBc              +     K   t        | |||fi |E d {    t        t        |||      }d}t        t        ff}t        t        t
        ff}i }	t        dd      t        dd      t        dd      t        d	      f}
|
t        ddd
      fz   }t        ||	      }t        ||
      }t        ||      }t        |||      D ]-  \  }}d| j                  v r|dv rt         ||      |       / y 7 ߭w)Nr   )r"  r   r   r   )r  dim2r   r   rI  offsetr   )r  r  r  diagonalr  )r   r   r   rF   rG   rH   r  r   r   r  rM   )r   r   r   r   r   r   shapes1dshapes2dshapes3dkwargs1dkwargs2dkwargs3d	samples1d	samples2d	samples3dr<  s                   r   $reference_inputs_diagonal_diag_embedr    s#    09179 9 9 F%}NH HAyHAq	|HH 	!!"2"1 	C
H BQQ' H
 (+I(+I(+Iy)Y? @v%$??@C9s   C7C5C C7c              +   x  K   t        t        |||      }t        t        fddf}t        t        t        ff}d}d}	t        t	        ||      t	        ||	            D ][  \  }
} ||
      }t        |t              s|f}n|} |j                  | j                         } ||      }t        ||g|       ] y w)Nr:  r  r  )r   r  r  r   )r>  rs  )r   r   r   r   )
r   r   rG   r   r   rx  r  r  rO  rM   )r   r   r   r   r   r   	shapes_2d	shapes_3dargs_2dargs_3dr  r  input_	arg_tuplerZ  r  s                   r   sample_inputs_diagonal_scatterr    s     {%m\H Q(I QI%G0G!')W"=wyRY?Z[ 
:S+& #u%II#FOOY/446	y!&'8i'899
:s   B8B:c              +      K   t        t        |||      }t         |t        t        f            j	                  d        t         |t        t        f      d      j	                  d        y w)Nr   c                 "    | j                         S rt  to_denser  s    r   <lambda>z)sample_inputs_to_sparse.<locals>.<lambda>  s    WXWaWaWc r   r  r   c                 "    | j                         S rt  r  r  s    r   r  z)sample_inputs_to_sparse.<locals>.<lambda>  s    Z[ZdZdZf r   )r   r   rM   rH   r  r   s         r   sample_inputs_to_sparser    s^     {6m\H
h1v&
'
5
5Mc
5
dd
h1v&
*
8
8Pf
8
ggs   A2A4c              +     K   dx\  }}}d}|i fg |di fg |ddi fg |dddi fg|D 	cg c]  }	|t        |	      f c}	|D 	cg c]  }	|t        t        |f||      |	      f  c}	|t        d	      f}
t        j                  |
d
      D ]  \  \  }}}t        ||||      }|rd|v rt        |dd|||      }nt        |g|dd  d||t        j
                        }d|v rYt	        j                  ||d   k(        r>t        j                  t        t        t        |            |d   hz
        d      d   |d<   t        ||fi |  y c c}	w c c}	w w)Nr5  r  r  r  r   r   r   r  r  rQ  r  )ignore_indexrv  r   r  r   r  r   r   r   r   )r  r   r  r   r   r  allrandomrl  rv  setry  rM   )r   r   r   r   r   
batch_sizenum_classesr<  r  r  input_shape_and_kwargsr  probabilities_targetrb  r   s                  r   sample_inputs_cross_entropyr    s    &,,Je(J 
	5!b	5!Q	5	!	Q		B	L
 ?I	I5$+
,	IL (	

  &~fER'	

L  
!$%!L& 8A7H7HI_an7o 33f3KeS`a' +F !.k!"o. jjF 'EIIf~@V6V,W"MM&U;5G1HFSaLbKc1c*dfghijkq	%2622;3 
J	

s   0E(EE(#E#1C7E(c              +     K   | j                   \  }}|j                  s|j                  r+|t        j                  k7  r| j
                  nd}||z   }||z
  }t        t        |||||      }t         |t        t        t        f             t         |t        t        t        f      d       t         |d             t         |d      d       y w)NQ?r   r?  r   )
domainr   r   r   r\  _domain_epsr   r   rM   rH   )	r   r   r   r   r   r   r   
domain_epsr   s	            r   sample_inputs_logitr  1  s     IC
 %"2"2,1U]],BW((
Jj {%CdbopH
h1ay)
**
h1ay)3
//
hrl
##
hrlC
((r/  c              +      K   t        t        |||      }t         |t        f       |t        f      f       t         |t        f       |t        f      f       y wr1  )r   r   rM   rF   rH   r   s         r   sample_inputs_isinr  D  sP     {6m\H htnHaTN+<
==
htnHaTN+<
==r2  c              +     K   t        t        |||      }t         |t        t        f      t	        j
                  t        t        |      dkD   |t        t        f      f       t         |t        t        f      t	        j
                  t        f|      dkD   |t        t        f      f       t         |t        t        f      t               j                  |       |t        t        f      f       t         |t        f      t	        j
                  t        t        |      dkD   |t        t        f      fd       y w)Nr   r$  r   r   Tr  )r   r   rM   rH   r   rM  bernoulli_scalarr  r   s         r   sample_inputs_masked_scatterr  L  s     {6m\H
h1v&ekk!Qv.NQR.RT\^_ab]cTd-e
ff
h1v&ekk1$v.NQR.RT\^_ab]cTd-e
ff
h1v&.>.@.C.CF.KXWXZ[V\M]-^
__
htn!KK1V<q@(Aq6BRS'+- -s   EEc              +     K   t        t        |t        j                        }t        j                  t        j                  fD ]C  }t        t         |dd      t        j                  dd||       |dd      f      d       E y w)Nr  r   r   r   r   z+masked_scatter_ only supports boolean masksr   )r   r   r   r[  r  rN   rM   ro  )r   r   r   r   
mask_dtypes        r   error_inputs_masked_scatterr  V  sz     {6EH{{EKK0 U
Xa^5::aSYak;l;CAq>;K L%SU 	UUs   BB
c           	   +     K   t        t        |||      }t         |t        t        f      t	        j
                  t        t        |      dkD  df       t         |t        t        f      t	        j
                  t        t        |      dkD   |d      f       t         |t        t        f      t	        j
                  t        |      dkD  df       t         |d      t	        j
                  d|      dkD  df       t         |d      t	        j
                  d|      dkD   |d      f       t         |t        t        f      t	        j
                  d|      dkD  df       t         |t        f      t	        j
                  t        t        |      dkD   |d      fd       t         |t        f      t	        j
                  t        t        |      dkD  dfd       t	        j                  |      j                  d	k(  rOt         |t        t        f      t	        j
                  t        t        |      dkD  t        dd
|      f       y y w)Nr   r$  r   r  r   r   Tr  rZ  r  r  )r   r   rM   rH   r   rM  r   r  r   s         r   sample_inputs_masked_fillr  ]  s    {6m\H
h1v&ekk!Qv.NQR.RTV-W
XX
h1v&ekk!Qv.NQR.RT\]_T`-a
bb
h1v&ekk!F.Ka.OQS-T
UU
hrl%++b*H1*Lb)Q
RR
hrl%++b*H1*LhWYl)[
\\
h1v&ekk"V.Lq.PRT-U
VV
htn!KK1V<q@(2,O'+- - htn!KK1V<q@"E'+- - ||F  F*(Aq6* %Aq @1 D +BuE J LM 	M +s   I,I.c           
   +     K   t        t        |t        j                  d      }t	        t         |d       |d      dkD   |d      f      d	       t	        t         |d       |d      dkD  d
f      d	       t	        t        t        j                  dt        j                  |       |d      dkD  t        j                  d
|      f      d	       t        j                  |      j                  dk(  rrt	        t        t        j                  t        t        fd      t        j                  t        t        d      dkD  t        j                  dd      f      d	       y y w)NFr   r   r   r   r   r   zKonly supports a 0-dimensional value tensor, but got tensor with 1 dimensionr   r  z5value cannot be converted to type .* without overflowr   r   r$  rZ  r  zto be on same device)r   r   r   r[  rN   rM   ro  r  r   r   r  rM  rH   r  s       r   error_inputs_masked_fillr  t  s<    {6TYZH
[&!1"9I8TX>8Z[!np p [&!1"9I28NO!Y[ [ [AUZZ!O'/|a'7bQW9X&Y[!Y[ [ ||F  F*U[[!Q%F+0;;q!E+JQ+N+0;;r&+I+KL &=> 	> +s   E1E3c              +     K   t        t        |||d d       }t         |t        t        f      t	        j
                  t        t        |      dkD         t         |t        t        f      t	        j
                  t        f|      dkD         t         |t        f      t	        j
                  t        t        f|      dkD         t         |t        dt        f      t	        j
                  t        t        f|      dkD         t         |d      t	        j                  d|t        j                               t         |t        t        f      t	        j                  d|t        j                               t         |d      t	        j
                  t        t        f|      dkD         y w)Nr  r$  r   r   r   r  )r   r   rM   rG   r   rM  r   r  r   s         r   sample_inputs_masked_selectr    s4    F%}RV]acH h1v&Aq(H1(L
MM
h1v&QD(H1(L
MM
htnekk1a&&H1&L
MM
h1ay)5;;1vf+MPQ+Q
RR
hrlELL6$T
UU
h1v&QvUZZ(X
YY
hrlEKKAv$F$J
KKs   F=F?c              +      K   t        t        |||      }t         |t        t        f             t         |t        t        t        f             y wr?  r   r   s         r   sample_inputs_matrix_expr    s@     {6m\H
h1v&
''
h1ay)
**r   c              +   b  K   t        t        ||d d |      }t        ft        fft        t        ft        fft        ft        t        fft        t        ft        t        fft        dfdt        fft        t        t        ft        fft        t        t        ft        t        fft        t        dfdt        fft        ft        t        t        fft        t        ft        t        t        ffdt        ddfft        t        t        t        ft        t        t        t        fft        t        t        t        ft        fft        ft        t        t        t        fft        t        t        fdt        t        fff}|D ]4  \  }}	 ||      }
 ||	      }|st        |
|       't        ||
       6 y w)Nr   r   r  r   )r   r   rF   rH   rG   rM   )r   r   r   r   
is_rmatmulr   r   r  	lhs_shape	rhs_shaper  r  s               r   sample_inputs_matmulr    sd    {%D ?H4!,q6A4.4!Q.q6Aq6"q6Aq6"q!9qd#q!9q!f%q!9q!f%4!Q#q6Aq!9%Aq!9%q!Q<!Q1.q!Q<!&4!Q1&q!9q!Qi(J  !+ (	9y!y!c3''c3''(s   F-F/r   r   r   r   variantr  c             +   
  K   |dk(  rjdt         t        j                     dt        t        t        j                  t         t        j                     f   t        t        j                  df   f   fd}n~|dk(  rjdt         t        j                     dt        t        t        j                  t         t        j                     f   t        t        j                  df   f   fd}nt        d| d	      t        j                  g       }t        j                  d
g      }|g|g||g|||g||||gg}	t        j                  |	ddh      D ]5  \  }
} ||
D cg c]  }t        ||||       c}      }t        |d|i 7 y c c}w w)Nvariadicr5  r  .c                     | S rt  r   r5  s    r   make_inputsz+sample_inputs_meshgrid.<locals>.make_inputs  s	     Nr   rk  c                     | gS rt  r   r  s    r   r  z+sample_inputs_meshgrid.<locals>.make_inputs  s     9r   z?Unsupported variant, must be one of {"variadic", "list"}. Got "z".r   xyijr:  indexing)rk  r   r}  r  r   r.  r;  r  r   r   rM   )r   r   r   r   r  r   r  SCALARVECTORr  r  r	  r<  r   s                 r   sample_inputs_meshgridr	    s     *	ell+	05eELL<@<N=O 7P6;ELL#<M6N7O 1P	
 
F		ell+	05eELL<@<N=O 7P6;ELL#<M6N7O 1P	 9B ! 	! ZZ^FZZ_F				 	(*J &--j4,G 4 " eF-X "# 43(33	4"s   EFE>
'Fc              +   .  K   t        t        |||      }t        t        fdf}d}d }t        ||      D ]\  \  }	}
 ||
      }|j                  s|dz  }n%|dt        j                  |      j                  z  z  }t         ||	|      |
f       ^ y w)	Nr   r   r3  c                     | dz
  dz  S )Nr  r   r   r  s    r   compute_min_valz/sample_inputs_mvlgamma.<locals>.compute_min_val  s    B!|r   r   r   rL  r   )	r   r   rH   r   r   r   finfor   rM   )r   r   r   r   r   r   rx  r  r
	  r<  r  re  s               r   sample_inputs_mvlgammar	    s     {6m\HVRLM	B M2. Cq!!$&&qLGq5;;u-1111G(5g6aTBBCr  c           	      X   t        t        j                  d      dd      t        t        j                  dd      t        t        j                  d      ddt        j
                  t        j                  f      t        t        j                  d      ddt        j                  f      f}| r}|t        t        j                  d      d      t        t        j                  d      d	      t        t        j                  d      d
      t        t        j                  d      d      fz   }|S )NSkipped!TestUnaryUfuncstest_float_domains test_reference_numerics_extremaltest_reference_numerics_largedtypestest_reference_numerics_smallTestFwdGradientsTestBwdGradientsTestJit
TestCommon)rL   unittestskipexpectedFailurer   r\  r  )skip_redundantskipss     r   skips_mvlgammar	    s     	X]]:.0ACWXX--/@7	9X]]:.0A4"]]EJJ7	9 	X]]:.0A4"ZZM	+E z24FGz24FGz2I>z2LA	
 
 Lr   c                     t        dt        rt        nd d| |t        t        j
                  di      ft        t        j                  t        j                        t        t        j
                  t        j                        t        ddd||      S )Nmvlgamma)zspecial.multigammaln皙?T)refaliasesrW  r  
decoratorsr	  dtypesIfCUDAr  supports_forward_adsupports_fwgrad_bwgradpromotes_int_to_floatr	  r  )
ri   r:   reference_mvlgammar(   r   r\  r   rl  r  r	  rW  r  r	  r  s       r   make_mvlgamma_opinfor,	    sl    *4>0D";,=!'&78M&N%P!.uzz5>>!J'4U]]ENN'S-C.21504 %(57 7r   c              +   &  K   dfd	}t         |t        t        t        f      d       t         |t        t        t        f      d       t         |d      d       |r&t         |t        t        t        f      d       y y w)Nc                 &    t        | ||      S r  r   r<  r   r   r   r   r   s      r   _make_tensor_helperz9sample_inputs_cumulative_ops.<locals>._make_tensor_helper&      5f#D`mnnr   r   r   r   rV  r  )rM   rH   )r   r   r   r   supports_dtype_kwargsr   r0	  s    ```   r   sample_inputs_cumulative_opsr3	  %  sy     o )1a)4a
88
)1a)4a
88
)"-q
11 -q!Qi8!5II s   BBc              +     K   dt         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft         t         t         t         fd	ft         t         t         t         fd
ft         t         t         t         fdft         t         t         t         fdft         t         t         t         fdft        fdft        fdft        fdfdddddt         t         t         fdff}|D ]"  \  }}t        t        |||d d |      g|  $ y w)N)r   )r   r   r   )r   r   r   rk  r2  )r   r   r   )r   r   r   r  r:  rS  )r   r   r   )r   r   r   )r   r   r   )r   r   r   r  )r  )r   r   r  )r5	  )r   r   rY  )r  r  r  )r6	  r   )r6	  r@  r   )rH   rG   rM   r   )r   r   r   r   r   r  r<  	argumentss           r   sample_inputs_unfoldr8	  3  sN    
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
Q1y!
y
y
y
QI-J2 ' &y+e5*.T4AC & %& 	&&s   E/E1)	list_argsc             +   *  K   t        t        |||      }|r.t        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      fft        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      dfft        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      dfff}n,t        t        t        fdft        t        t        ft        dfff}|D ]  \  }}	t         ||      |	        y w)Nr   r   r   r   r  r   r   r   r   rH   r   r;  rY  rM   )
r   r   r   r   r9	  r   r   r7  r<  r   s
             r   sample_inputs_splitr<	  S  s;    {6m\HAYSQZSQZ!^1CSQZ$PQSTAYSQZSQZ!^1CSQZ$PQSTUWAYSQZSQZ!^1CSQZ$PQSUVX
 AYAYA

  6t(5/556s   FFc              +   j  K   t        t        |||      }t        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      fft        t        t        ft        j                  t        t        dz        t        t        t        dz        z
  dg      fft        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      dfft        t        t        ft        j                  t        t        dz        t        t        t        dz        dz  z
  t        t        dz        g      dfff}|D ]  \  }}t         ||      |        y w)Nr   r   r   r   r   r   r;	  rR  s	            r   sample_inputs_split_with_sizesr>	  f  sD    {6m\H!Qi%**c!a%j!c!a%j1n2Dc!a%j%QRTU!Qi%**c!a%j!c!a%j.!%DEGH!Qi%**c!a%j!c!a%j1n2Dc!a%j%QRTUVW!Qi%**c!a%j!c!a%j1n2Dc!a%j%QRTVWXE  6t(5/556s   F1F3c           
   +      K   fdfd}t         ||             t        t        t        t        t        f|d d              y w)Nc                 ~    t        t        j                  t        j                        v r| j	                         y y rt  )r   r   r\  r  r  )r(  r   r   s    r   
apply_gradz'sample_inputs_msort.<locals>.apply_gradt  s/    &u}}ennEE]+ Fr   c                     t        j                  t        t        z  t        z  t         j                  |      }|j	                  |       } |       |S re  )r   r  rF   ry  r  )r   r   rh  rA	  s      r   rk  z,sample_inputs_msort.<locals>.large_1d_uniquex  s:    nnQUQYekk&IffUm3
r   r   )rM   r   rH   rG   )r   r   r   r   r   rk  rA	  s     ``  @r   sample_inputs_msortrC	  s  sO     , oeV4
55
k1a)5&*0=? @ @s   AAc              +     K   t        t        |||      }t         |t        t        f       |t        t        f      d       t         |t        t        f       |t        f      d       t         |d       |d      d       t         |t        t        f       |d      d       t         |t        t        f       |t        f       |t        t        f             t         |t        t        f       |t        df       |t        f             t         |t        f       |t        t        f      d      j	                  d       t         |d       |t        t        f      d      j	                  d       t         |t        df       |t        t        f      d      j	                  d       t         |t        df       |t        t        f       |t        df            j	                  d       t         |t        t        f       |t        t        f       |t        t        f             t         |t        f       |t        t        f       |t        t        f            j	                  d       t         |t        f       |t        t        t        f       |t        t        f            j	                  d       t         |t        t        f       |t        t        t        f       |t        f            j	                  d       |j
                  r8t         |t        t        f       |t        t        f      d       t         |t        t        f       |t        t        f      d       t         |t        t        f       |t        f      d       t         |t        t        f       |t        t        f      d	       t         |d       |d      d       t         |d       |d      d
       t         |t        t        f       |d      d       t         |t        t        f       |d      d       y y w)Nr:  g?r   r   Tr  y        ?y333333??y@      "@yffffff@Mbp?r  )r   r   rM   rH   r  r   r   s         r   sample_inputs_lerprE	    s    {%m\H h1v&!Q(8#
>>
h1v&!
<<
hrlHRL#
66
h1v&c
::
h1v&!!Q8H
II
h1v&!Q(8(A4.
II
htnh1v&6
<
J
J\`
J
aa
hrlHaV$4c
:
H
HZ^
H
__
h1v&!Q(8#
>
L
L^b
L
cc
h1v&!Q(8(Aq6:J
K
Y
Y Z   h1v&!Q(8(Aq6:J
KK
htnh1v&6!Q8H
I
W
W X   htnh1ay&98QF;K
L
Z
Z [   h1v&!Q(;Xqd^
L
Z
Z [   (Aq6*HaV,<dCC(Aq6*HaV,<jII(Aq6*HaTNDAA(Aq6*HaV,<hGG(2,d;;(2,lCC(Aq6*HRL$??(Aq6*HRL&AA s   Q;Q=c           
   +      K   dddddgddgfff}|D ]0  \  }}}t        t        ||||      t        ||||      |       2 y w)	N)ri  ri  r   r  r  r   r   r   r:  r4  r  )	r  r   r   r   r   r7  r  r  r  s	            r   sample_inputs_tensordotrG	    sr     #	IAA/0E ,1 %'\4+kv4AC%l%4AC#	% 	%%   AAc              +      K   t        t        |||d d       }t        t        ft        t        fff}|D ]#  \  }} ||      }	 ||      }
t        |	|
       % y w)Nrn  )r   r   rH   rG   rF   rM   )r   r   r   r   r   r   r  r  other_shaperb  r8  s              r   sample_inputs_kronrK	    sp     5}RV]acH Q!QJ %/ ( [%%%''(r   c              +      K   t        t        |||      }t         |t               |t                     t         |        |t        t                     y wrw  r   r  s         r   sample_inputs_innerrM	    s@     {%m\H
hqk8A;
//
hj(1a.
11r   c              +   "  K   |d d ffd	}fd}t        j                  dt         j                        } |t        t        f      d |t        t        fdt               |t        t        f      ff |t        t        f      d |t        t        fdt               |t        t        f      ff |t        t        f      d |t        t        fdt               |t        t        f      ff |t        t        f      d |t        t        dz  fdt               |t        t        dz  f      ff |t        t        f      d |t        t        dz  fdt               |t        t        dz  f      ff |t        t        f      d |t        t        dz  fdt               |t        t        dz  f      ff |d      d|j                         j                          |d      ff |d      d|j                         j                         d	fff}|D ]}  \  }	}
t        |	g|
  rt        |	j                         j                         g|
d
di |j                  sQt        |	j                         j                         g|
d
di  y w)Nc                 &    t        | |||      S r  r   r<  r   r   r   r   r   s       r   _tensorz&sample_inputs_scatter.<locals>._tensor  r1	  r   c                 "    t        | ||      S Nr$  r  r<  	index_dimmax_indicesr   s      r   _gatherz&sample_inputs_scatter.<locals>._gather      uiVLLr   r   r   r   r   r   r   r#  r  rO  multiply)	r   r   r  rG   rH   detachr  rM   r   )r   r   r   r   r   rQ	  rX	  r  r  r   r   s    ` `       r   sample_inputs_scatterr\	    s    "4 oM <<F;D	!Q1gq!fa3WaV_EF	!Q1gq!fa3WaV_EF	!Q2w1vq!4gq!foFG	!Q1gq!q&k1a8'1a1f+:NOP	!Q1gq!q&k1a8'1a1f+:NOP	!Q2w16{Aq97AqAv;;OPQ	q$++---/=>	q$++---/56	J # U&(4((fmmo335KKUKK&&!&--/"7"7"9TDTTTUs   H J%9J0Jc           
   +   V  K   |d d ffd	}fd}t        j                  dt         j                        }t         |t        t
        f      d |t
        t
        fdt               |t
        t
        f             t         |t        t
        f      d |t
        t
        fdt
               |t
        t
        f             t         |t        t
        f      d |t
        t
        fdt
               |t
        t
        f             t         |t        t
        f      d |t        t
        dz  fdt               |t        t
        dz  f             t         |t        t
        f      d |t        t
        dz  fdt
               |t        t
        dz  f             t         |t        t
        f      d |t        t
        dz  fdt
               |t        t
        dz  f             t         |d      d|j                         j                          |d             y w)	Nc                 &    t        | |||      S r  r   rP	  s       r   rQ	  z*sample_inputs_scatter_add.<locals>._tensor  r1	  r   c                 "    t        | ||      S rS	  rT	  rU	  s      r   rX	  z*sample_inputs_scatter_add.<locals>._gather  rY	  r   r   r   r   r   r   r   )r   r   r  rM   rG   rH   r[	  r  )r   r   r   r   r   rQ	  rX	  r  s    ` `    r   sample_inputs_scatter_addr`	    s    "4 oM <<F;D
gq!foq'1a&!Q*?!Q
QQ
gq!foq'1a&!Q*?!Q
QQ
gq!for7Aq61a+@'1a&/
RR
gq!foq'1a1f+q!*DgqRSWXRXkFZ
[[
gq!foq'1a1f+q!*DgqRSWXRXkFZ
[[
gq!for7AqAv;1+EwPQSTXYSY{G[
\\
gbk1dkkm&9&9&;WR[
IIs   H%H)c              +     K   t        t        |||      }t        t        |      }t        j                  dt        j
                  |      }t        t        fd |t        t        fdt              t        t        fft        t        fd |t        t        fdt              t        t        fft        t        fd |t        t        fdt              t        t        fft        t        fd |t        t        dz  fdt              t        t        dz  fft        t        fd |t        t        dz  fdt              t        t        dz  fft        t        fd |t        t        dz  fdt              t        t        dz  ffdd|j                         j                         dff}| j                  }	t        |g d	      D ],  \  \  }
}}}}t         ||
      || ||      |	fd
|i       . |r|	dk(  rt        j                  ddgddgddgg|||      }t        j                  g dg dg dg|||      }t        j                  g dg dg dgt        j
                  |      }t        |d|||	fd
di       y y y w)Nr:  r$  r   r   r   r   r   r   )FTFrT  r  rE  rU     rV  r$  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   T)r   r   r  r   r   r  rG   rH   r[	  r  rW  r   rM   )r   r   r   r   r   r   gatherr  r  r  	inp_shaper   ry  rZ  rT  rb  r  r  s                     r   sample_inputs_scatter_reducere	     s6    {%m\H_V4F<<F;D
QFAq61a(1a&1
QFAq61a(1a&1
QVQFAq)Aq62
QFAqAv;1-16{;
QFAqAv;1-16{;
QVQQKA.AF<	Q##%r*J &&F<CJPd<e A8*C	L(9- #UHY,?H"0,!?A 	AA 6) q"g2wB8fdqrllL,EU[aq~llL,EUZZ`fg% !3V4"0$!79 	9 *}s   I6I8lengths)r  c             +     K   |d d ffd	}t         fdg ddft         fdg ddft         fdg ddft         t         fdg ddft        t         t         fdg ddft         t         fdt        t               D cg c]  }g d c}dft         t         fdg dg dg d	g d
g dgdft         t         t         fdt        t               D cg c]  }g d c}dft         t         t         fdg dg dg d	g d
g dgdff	}g d}	t        ||	ddg      D ]  \  }
}}|
\  }}}}t	        j
                  |t        j                        }|||d}|dk(  r||d<   nj|dk(  rVt        |j                        }d||<   t	        j                  |j                  |      |f|      j                  |      }||d<   nt        d| d      t         ||      |f|        y c c}w c c}w w)Nc                 &    t        | |||      S r  r   rP	  s       r   rQ	  z-sample_inputs_segment_reduce.<locals>._tensor(  r1	  r   r   )r   r   r   r   FT)r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r&  r  r%  r  rE  r   r   )rj  unsafeinitialrf	  offsetsz0mode most be one of 'offsets' or 'lengths' got 'z'.r  )rH   rG   ry  r   r   r   r  rk  r<  cat	new_zeroscumsum_r?  rM   )r   r   r   r   r  r   rQ	  r  r  r  r   r  rj	  rd	  r   rf	  ri	  	lengths_tsample_input_kwargszeros_shape	offsets_ts    ` `                 r   sample_inputs_segment_reducers	  '  s    "4 o
 q,&
q,%
q,&
QL%(
QA-
Q584a\4e<
Q\<|\Z\ab
QAeAh77?
QAlL,P\]_deJ 7J!(Z!Q!H 6fg*.'	3LL

6J	'*fQ9-6	*Yy/K K		9#6#6{#CY"OQTU]]^abI-6	*!QRVQWWYZ[['), &y!46 	66 57s    A3G 7GAG GDG c              +      K   t        t        ||d d |      }t         |t        t        t        f             t         |d             t         |t        t        t        fd             y w)Nr   r   TrA  r   r   s         r   sample_inputs_ravelru	  M  s[     {%d-IH
h1ay)
**
hrl
##
h1ay=
>>r  c              +     K   t        t        j                  g dg dg||      d       t        t        j                  g dg dg||      d       t        t        j                  g dg dg||      d       t        t        j                  d||      d       dd	|j                  z  |j                  rd
ndz
  z  d
z
  }t        t        j                  |d
z
  ||      d
|f       t        t        j                  g d||      d       t        t        j                  t        d|      ||      d       t        t        j                  g ||      d       t        t        j                  g dg dg||      d       t        t        j                  g dg dg dg||      d       t        t        j                  d||      d       t        j                  g dg dg      }t        j                  g dg dg      }t        j                  ||dd      \  }}	}
t        t        j                  |	||      |j                         t        t        j                  |
||      |j                         t        j                  g dg dg      }t        j                  g dg d g      }t        j                  ||d!      \  }}	}
t        t        j                  |	||      |j                         t        t        j                  |
||      |j                         y w)"N)r   r  rU  )r   r   r  r  r  )r      @)rw	  r   r   r   r  r   r   )   )   %   )r  r   iU  )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  r   r  )r   r   r  r   )r  rh  r  r  T)assume_uniquer  )r   r   r   r   r   )r   r  r  r  r   )r   r   r  r  )r  rh  r  r  )r  )
rM   r   r   itemsize	is_signedr%  r  arrayintersect1dr<  )r   r   r   r   r   r,  r.  r/  r  i1i2s              r   sample_inputs_unravel_indexr	  T  s    
$	 	  j*-fEJ  j*-fEJ  QvU3  !enn$U__!DEIG
Wq[u=	
G  \&>  Sw'eD  Re4  !34	 	  !35GH	 	  QvU3
  	,./A
,/0Aq!4MIAr2
ell2fEBAGG
LL
ell2fEBAGG
LL
/?34A
,/0Aq!D9IAr2
ell2fEBAGG
LL
ell2fEBAGG
LLs   MMc              +   \  K   t        t        |||      }t        t        fdft        t        fdft        t        fdft        t        fdft        t        fdft        t        t        fdft        t        t        fdfddt        t        fdff}|D ]  \  }}t	         ||      |        y w)Nr:  r   r  r  r   r   r-  rR  s	            r   sample_inputs_tril_triur	    s     {%m\H!fb\!fd_!fb\!fe_!fd_!Qi_!Qi!QlB"E  6t(5/556s   B*B,c              +      K   t        t        |t        j                        }t	        t         |d            d       y w)Nr  rr  z,input tensor must have at least 2 dimensionsr   r  r=  s       r   error_inputs_tril_triur	    s1     {6GH [$0>l
mmr+  c              +   P   K   d}|D ]  }t        |d   |dd  ||d        y w)N)r  )r   r   )r   r   )r      r   )r   r	  r  )r   r	  r  r   r   r   r  r  )r   r   r   r   r   	args_listr   s          r   sample_inputs_trilu_indicesr	    s?     I  ]$q'QR5TZ9[\\]s   $&c              +      K   t        t        |||      }t         |t        t        t        f             t         |d             y wrr  r  r   s         r   sample_inputs_clone_contiguousr	    s;     {%m\H
h1ay)
**
hrl
##s   A
Ac              +     K   t        | |||fi |E d {    d}t        t        |||      }|D ]+  }t         ||             t         ||      j	                  dd             t         ||d             t         ||d      j	                  dd             t         ||      dt
        j                  i       t         ||      j	                  dd      dt
        j                  i       t         ||d      dt
        j                  i       t         ||d      j	                  dd      dt
        j                  i       . d	}|D ]`  \  }}	}
t         |d
      j                  ||	|
             t         |d
      j                  ||	|
      dt
        j                  i       b t         |d      dt
        j                  i        |d      j                  dddd      }t        |dt
        j                  i       t         |d      dt
        j                  i        |d      j                  ddddd      }t        |dt
        j                  i       y 7 pw)N)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   TrA  rE  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   i  r   r   r   r   )r   r   r   r   r   r   )r	  r   r   rM   r	  r   r  
as_stridedrF  rT  channels_last_3d)r@  r   r   r   r   r  r   r<  strided_casesrn  r  r.  s               r   !reference_inputs_clone_contiguousr	    sg     .b&%YRXYYYF {%m\H 	C(5/**(5/33Ar:;;(5=>>(5=GG2NOO(5/?ED[D[2\]](5/33Ar:OUZUlUlCmnn(5=X]XoXoFpqq(5=GG2NXgin  jA  jA  XB  C  	C	CM #0 @w(3.33E7FKLL(3.33E7FKUdfkf}f}T~@
 h|,ouGZGZ5[
\\&&q!Q2A
a%2E2E F
GG h/%J`J`8a
bb!))!Q1a8A
a%2H2H I
JJ[ Zs   JJI0Jc           	   +     K   t        t        |||      }dt        fdft        t        fdft        t        fdt        fft        t        ft        t        fft        t        t        ft        dt        ffg}|D ]X  \  }}t         ||      |f       |dk(  r"t         ||      t	        |      f       t         ||      g |       Z y w)Nr:  r  r   r  r   r   r   )r   r   rH   rM   rk  )	r   r   r   r   r   r   sample_shapesr  r	  s	            r   sample_inputs_sum_to_sizer	    s     {%m\H 	
t
Q
Q!Q
Q!Q
QQ1IM &3 H!\(;/|oFF2(;/tL7I6KLL(;/6F6FGGHr  c              +   f  K   t         t        t         f}d}t        t        ||t        j
                        t         t         f      }t        ||       t         dz   t        t        t         f}d}t        t        ||t        j
                        t         dz   df      }t        ||       y w)Nzis not expandable to sizer  r   r   r   )rG   rH   rM   r   r   r   rN   )r   r   r   r<  r  r  s         r   error_inputs_sum_to_sizer	    s     1IE)G	[vU]]KSTVWRX	YB
RW
--UAq!E)G	[vU]]KSTWXSXZ[R\	]B
RW
--s   B/B1c              +   2  K   t        t        ||      }t        t        t        ft        t        z  t        ffddf}|D ]U  \  }}| j                  dk(  r|f}	n&| j                  dk(  r ||d      f}	nt	        d      t         |||      |		       W y w)
Nr   r  )r   r  resize_
resize_as_Fr  z>sample_inputs_resize_ops is being used with incorrect operatorr   )r   r   rH   r  r.  rM   )
r   r   r   r   r   r   r7  r<  args_or_shaper   s
             r   sample_inputs_resize_opsr	    s     {%?H!Qi!a%$E
 !& S}<<9$!$D\\\)U%8;D]^^(5FTRRSs   BBc              +     K   t        t        |||      }t        t        t        ft        t        z  t        fdft        t        z  t        ft        t        t        fdft        t        z  t        ft        dt        fdft        t        z  dz  t        ft        dfdft        ft        fdfddf}|D ]K  \  }}}	|j                  d      r|	s|j                  d      r
 ||d	      }t	         ||      |f
       M y w)Nr:  Tr   Fr   )r   r   F)r   r   T
tensor_argr  r   )r   r   rH   ri  rM   )
r   r   r   r   r   r   r7  r.  r/  is_tensor_supporteds
             r   sample_inputs_view_reshaper	  $  s     {%m\H QQUAJ%
a%aAY%
a%aQZ'
a%!)Q!R%(
tT	E &+ 	2!1!::l#,? ::l#%0A(1+QD11	2s   C=C?c              +   @  K   t        | |||fi |E d {    d}d}t        t        |||      }|D ]  \  }}	}
|j                  d      r|
s|j                  d      r=t	         ||       ||	d      f       t	         ||	       ||d      f       it	         ||      |	f       t	         ||	      |f        |D ]K  \  }}	}
|j                  d      r|
s|j                  d      r
 ||	d      }	t	         ||      |	f       M y 7 w)N)))}   )   r   T))r	  r	  r   r   r   r   r   r   r   r   T))r   r2  )r   r   r   r   r   r   r   T))r   rh  rh  r   T))r   r   rh  r	  T))r   r   r   r   )r	  r   T)r   r   r   r-  T)r  )r   r   r   r   r   T))r   r   r  )r  r   r   Tr   r   F)r   r   r   r   r	  T))r   r   r   r   r   r  Tr	  )r  )r   r   r   r   r   r   T)r   r   F))r   r  F))r   r  r  r   r   )r   r   r   r   r   Fr:  r	  Fr  r   )r	  r   r   ri  rM   )r@  r   r   r   r   r7  irreversible_casesr   r.  r/  r	  s              r   reference_inputs_view_reshaper	  =  s0    )"fe]UfUUUE&
 {%m\H%* 6!1!::l#,?::l#hqk!51Q0STThqk!51Q0STThqk55hqk556 &8 	2!1!::l#,? ::l#%0A(1+QD11	2Q Vs   DDDDc              +     K   d}t        t        t        j                  |d      }|D ]  \  }}}|j	                  d      r|s|dk(  rd}ng|dk(  rd}n_d	j                  t        t        |            }	t        |      t        u r|n$t        j                  t        j                  |d
      }
d|	 d|
 }|j	                  d      r
 ||d      }t        t         ||      |f      t         |        y w)N))r  r   F))r   r   r   r   F))r   r   r   r   T)rw  )r   r   r   T)rw  )r   r   r   F)rw  r   r   r   F)r   rP  F)r  rP  FFr:  r	  r	  z"only one dimension can be inferredr  zcannot reshape tensor of 0 elements into shape \[0, -1\] because the unspecified dimension size -1 can be any value and is ambiguous, r   z	shape '\[z!\]' is invalid for input of size r  r   r   )r   r   r   r   ri  joinmapstrr  rY  re  r  operatormulrN   rM   	Exception)r@  r   r   r7  r   r.  r/  r	  r   r<  rO  s              r   error_inputs_view_reshaper	  q  s     E {%--V[\H%* 2!1!::l#,?>K&[CK
 IIc#qk*EQ31I,<,<X\\1a,PD&ug-NtfUK ::l#%0AXa[t<%02 	2+2s   C4C6c              +   $  K   t         t         t         t         ft         t         t         ft         t         ft         fdf}t        t        |||      }|D ]  }t         ||              t        |D cg c]
  } ||       c}       y c c}w w)Nr   r:  rH   r   r   rM   r   r   r   r   r   r  make_tensor_partialr<  s           r   sample_inputs_atleast1d2d3dr	    s{     !QlQ1I1vub:F!+U6Yfg 6-e4556
vFe*51F
GGFs   A0B2BBc              +      K   t         ddft         ddfft         t         dffddt         fff}t        t        |||      }|D ]   \  }}t         ||       ||      g       " y w)Nr   r   r   r   r   r:  r	  )	r   r   r   r   r   r7  r	  shape1shape2s	            r   sample_inputs_column_stackr	    s{     
QQ1I
q!fQF|"E "+U6Yfg V.v68KF8STUUVr1  c              +      K   t         t         t         ft         t         ft         fdf}t        t        |||      }|D ]:  }t         ||             t	        |      dkD  s%t         ||      dd       < y w)Nr   r:  r   r   )	start_dimend_dim)rH   r   r   rM   rM  r	  s           r   sample_inputs_flattenr	    st     !Qi!Q!,F!+U6Yfg S-e455u:>1%8ArRRSs   AA:!A:c              +   L  K   t        | |||fi |E d {    d}t        t        |||      }|D ]m  \  }}}	t         ||      ||	f       t         ||d      j	                  dd      ||	f       t         ||      j	                  dd      ||	f       o y 7 w)N))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	  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   TrA  r   r   )r	  r   r   rM   r	  )
r@  r   r   r   r   r7  r   r<  r   r   s
             r   reference_inputs_flattenr	    s     $RPPPPE  {%m\H" Puc(5/>>(5=GG2NV[]`Ubcc(5/33Ar:%OOP) Qs   B$B"BB$c              +   z   K   d}t        t        |||      }|D ]  \  }}}	t         ||      ||	f        y w)N)
)rP  r   rP  )rP  r   r	  )rP  r   ri  )rP  r   r  )r   r   r   r   r5  )r	  r   r5  )r	  r   )r   r   ))r   r   rh  r   rg  )r   r   r   r   )r	  r   )r   r   r   r   r:  r   r   )
r   r   r   r   r   r   r	  in_shaper   rN  s
             r   sample_inputs_unflattenr	    sP     
D "+U6Yfg $ L#u-h7sElKKLr`  c              +     K   t        t        |||      }t        t        t        fdft        t        t        fdft        t        t        fdft        t        t        fdft        fdff}|D ]  \  }}t         ||      |        y w)Nr:  r   r  r   r   r1  r^  r   r  rR  s	            r   sample_inputs_selectr	    s     {%m\H!Qi !Qi!!Qi"!Qi!dF^	E  6t(5/556   BBc              +     K   t        t        |||      }t        t        t        ft        t        fdft        t        t        ft        t        fdft        t        t        ft        t        fdft        t        t        ft        t        fdft        fddff}|D ])  \  }}}	 ||      }
 ||      }t        |
|g|	       + y w)	Nr:  r   r  r	  r1  r   r^  r   r  r   r   r   r   r   r   r7  r  rZ  r   r  r  s               r   sample_inputs_select_scatterr	    s     {%m\H!Qi!Q(!Qi!Q)!Qi!Q*!Qi!Q)dB	E ). 5$Y+&y!&|d|445rn  c              +     K   t        t        |||      }t        t        t        ft        t        t        fddt        dfft        t        t        ft        dz  t        t        fdt        dz  t        dfft        t        t        ft        dz  t        t        fdt        dz  t        dfft        t        t        ft        t        t        fddt        dfft        t        t        ft        t        dz  t        fdt        dz  t        dfft        t        t        ft        t        dz  t        fdt        dz  t        dfft        t        t        ft        t        t        fddt        dfft        t        t        ft        t        t        dz  fdt        dz  t        dfft        t        t        ft        t        t        dz  fdt        dz  t        dfff	}|D ])  \  }}}	 ||      }
 ||      }t        |
|g|	       + y w)Nr:  r   r   r   r   r   )r   r   rF   rM   r	  s               r   sample_inputs_slice_scatterr	    s    {%m\H!Qi!QaAq\2!Qi!q&!Q1a1fa*;<!Qi!q&!Q1a1fa*;<!Qi!QaAq\2!Qi!Q!VQ1a1fa*;<!Qi!Q!VQ1a1fa*;<!Qi!QaAq\2!Qi!QQ1a1fa*;<!Qi!QQ1a1fa*;<	E ). 5$Y+&y!&|d|445s   G;G=c           
   +     K   t        t        |||      }t        ddft        t        t        fft        dt        ft        t        t        fft        dt        fdt        dfft        dt        fdt        t        fft        dft        t        t        ffdt        t        t        ffdt        fddt        ffddf	}|D ]  }|\  }}	t         ||      |	f        y w)Nr:  r   r   r   r  r  r   r  
r   r   r   r   r   r   r7  rx  r<  r   s
             r   sample_inputs_expandr	    s     {%m\H!Qi!Q#!Qi!Q#!Qi"a%!Qi"a$!fq!Qi Q1I!fq!Qi 	E  9t(5/889r  c              +     K   t        t        |||      }d}d t        j                  g}t	        j
                  ||      D ]   \  }}	t         ||      |	rd|	ini        " t         |d      dt        j                  i       y w)Nr:  r   r5  rE  r  r   r   r   r   r   r   r   r  r  r   rM   rF  
r   r   r   r   r   r   r  memory_format_optionsr<  rE  s
             r   sample_inputs_conversionr	  #  s     {%m\HF!5#:#:; ) 1 1&:O P \}(5/ER/=!AXZ\ 	\\ h|,ouGZGZ5[
\\r  c              +     K   t        t        ||dd|      }d}d t        j                  g}t	        j
                  ||      D ]   \  }}	t         ||      |	rd|	ini        " t         |d      dt        j                  i       y w)Nr      r   r	  rE  r  r	  r	  r	  s
             r   sample_inputs_byter	  /  s     {%AC_lmHF!5#:#:; ) 1 1&:O P \}(5/ER/=!AXZ\ 	\\ h|,ouGZGZ5[
\\s   B	Bc              +      K   t        t        ||      }t        ddft        t        t        ffddf}|D ]%  \  }}t         |||       ||d      f       ' y w)Nr   r   r  )r   r  r  Fr   r  )	r   r   r   r   r   r   r7  r<  shape_others	            r   sample_inputs_expand_asr	  ;  sr     {%?H!Qi!Q#E
 $ N{(5F (E JLN 	NNr]  c              +     K   t        t        ||      }fd}t        t        ft        t        ft        t        fdft        dt        ft        t        ft        t        dfdfdt        dt        fdt        t        dfdfdt        t        fddfdf}|D ]+  \  }}	}
}t         ||       ||	       ||
      f|	       - y w)
Nr:  c                    t        | t        j                  d      }|j                         dk(  r|S |j                         dk(  r|j	                  d       |S |j                         dk(  rd }d| ||j                        <   |S |S )NFr:  r   r   Tc                 &    t        d | D              S )Nc              3   H   K   | ]  }t        j                  d |        ywr   N)r  	randrange)ru  max_idxs     r   rw  zTsample_inputs_where.<locals>.make_bool_mask.<locals>.random_index.<locals>.<genexpr>X  s     OgV--a9Os    "r  r  s    r   random_indexzAsample_inputs_where.<locals>.make_bool_mask.<locals>.random_indexW  s    OOOOr   )r   r   r  rh  fill_r  r<  )r<  mask_tr	  r   s      r   rm  z+sample_inputs_where.<locals>.make_bool_maskK  s     U%**VSXY<<>QM\\^q LLM::<1P 26F<-.Mr   Fr   T)r   r   r   Fr   )r   r   r  Tr  )r   r   rG   rM   )r   r   r   r   r   r   rm  r7  r<  ry  rJ	  r  s    `          r   sample_inputs_wherer	  H  s     {%m\H( !fq!fq!fe,!Qi!Q!QD1 !QiaAY-1a&"d#$E =B =8z;(8(5/ .z :H[<QR+;= 	==s   C Cc              +     K   t        | |||fi |E d {    t        t        t        j                  ||      }t        t        |||      } |dd      } |dd      } |d      j                  dd      }	t        |||	f	       |t        j                  urt        j                  nt        j                  }
 |dd      } |dt        j                  
      } |d      }	t        |||	f	        |dd      } |d      j                         } |d      j                         }	t        |||	f	       |j                  s|j                  rk|j                  rt        d      }nt        t        d      t        d            } |d      } |dd      }||d<    |d      }	||	d<   t        |||	f	       dD ]$  }t        |||	f	       t        |||f	       & y 7 ׭w)Nr:  )r  r   TrA  )r  r   )r   r  r   r   r   r   rV  r   r	   )r   r  r   r  r  r^  )r   rI  y               @F)r	  r   r   r   r  r	  rM   r:  r  rU  r   r   r[  r  )r@  r   r   r   r   	make_condr   r0  r.  r/  rm  r	   scalars                r   reference_inputs_wherer	  m  s    "2vumNvNNN5::fTabI{%m\H 	'.A-A&&q"-A aq!f
%% #(u||";%,,K'.A

+AA
aq!f
%% 	'.AAA
aq!f
%% %"2"2"",C %,e5Cj!WD1$V$!1a&)) & /&1v..!1f+../[ Os   G/G,GG/c           
   +   `  K   t         f}d}t        d|fd      D ]  }t        t        |            dk(  st	        t        ||d   t        j                        t        |t        j                  |d   	      t        ||d   t        j                        f
      }t        ||        y w)Nr  r  r   r  r   r   r  r   r   r   r   )
rH   r   rM  r  rM   r   r   r   r  rN   )r   r   r   r<  r  r4  r  s          r   error_inputs_wherer	    s     DE=GE6?15 6s7|![wqzW#.uEJJwWXz#Z(wqzW#YZB RW556s   3B.A8B.c              +   <  K   t        t        |||      }dt        ft        t        ft        t        t        ft        dt        ft        dt        ff}g }|D ]v  }t        j                  ||||      }	|j                  |	        ||      j                  d      }
t        |t        j                  |d      }d|
|<   |j                  |
       x t        |ddg      D ];  \  }}t        |j                         j                  |      t        |             = y w)	Nr:  r   r   r   FT)as_tupler  )r   r   rH   r   r&  r<  r  r  r   rM   r  r  )r   r   r   r   r   r   rN  r(  r<  r&  mixedr	  r  r	  s                 r   sample_inputs_nonzeror	    s     {%m\H!1v1ay1a)aAY?EF 	Ev][e ..u5U%**VSXYfe	 %VeT]; :'--/88G!%x!8: 	::s   DDc              +   ^  K   t        t        |||      }dt        ft        t        ft        t        t        ft        dt        ft        dt        ff}g }|D ]v  }t        j                  ||||      }	|j                  |	        ||      j                  d      }
t        |t        j                  |d      }d|
|<   |j                  |
       x ddt        t        t        g}t        ||      D ];  \  }}t        |j                         j                  |      t        |             = y w)Nr:  r   r   r   Fr  r  )r   r   rH   r   r&  r<  r  r  rI   rG   r   rM   r  r  )r   r   r   r   r   r   rN  r(  r<  r&  r	  r	  nonzero_sizesr  nonzero_sizes                  r   sample_inputs_nonzero_staticr	    s	    {%m\H!1v1ay1a)aAY?EF 	Ev][e ..u5U%**VSXYfe	 2q!$M!(!? :'--/88G!%<!8: 	::s   D+D-c              +      K   t        t        |||      }t        t        t        fdft        t        t        ft        dfft        t        t        ft        dfff}|D ]  }|\  }}	t         ||      |	        y w)Nr:  r  r   r   r   r  r	  s
             r   sample_inputs_chunkr	    sz     {%m\H!Qi!Qi!Q !Qi!R!#E  6t(5/556r  c              +      K   t        | |||fi |E d {    t        t        |||      }d}|D ]  \  }}}	t         ||      ||	f        y 7 <w)Nr:  ))rU  r  r  rb	  r   )r
  r  r   ))rU  rh  r   )r  rh  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   rM   )
r@  r   r   r   r   r   r7  r<  chunksr   s
             r   reference_inputs_chunkr
    si     "2vumNvNNN{%m\HE  $ ?vs(5/>>?+ Or  c           
   +   .  K   |d d ffd	t         t         t         fdft         t         t         fdft         t         t         fdft         t         t         fdft         t         t         fdft         fdft         fdfd	d
dg
}fd|D        E d {    y 7 w)Nc                 &    t        | |||      S r  r   rP	  s       r   rQ	  z'sample_inputs_kthvalue.<locals>._tensor  r1	  r   r  r  )r   r   r  )r   r   Tr  r  )r   r   )r   r?  )r   )r   r   Tc              3   H   K   | ]  \  }}t         |      g|   y wrt  r  )ru  r   r   rQ	  s      r   rw  z)sample_inputs_kthvalue.<locals>.<genexpr>  s#     SGFO3d3Srp  r  )r   r   r   r   r   r  rQ	  s    ` `  @r   sample_inputs_kthvaluer	
    s     "4 o QD
QG
QH
QM"
QN#
w
}J T
SSSs   BBBBc           	   +     K   t        dt        j                  |      }t        j                  d|t        j                        }t        t        |d||f      d       d	}t        t        t        j                  d
d
|      dd      |       t        t        t        j                  d
d
|      d      |       t        t        t        j                  d
|      d      |       y w)Nr  r   r   r  r   r  r  r   z,selected number k out of range for dimensionr   r$  r   r   )	r   r   r   rm  r  rN   rM   rM  r   )r   r   r   r(  r  k_out_of_range_errs         r   error_inputs_kthvaluer
    s     BemmF;Akk"V5::>G
[AAw<8!8: : H
[Q&!A1aH!35 5
[Q&!A1E!35 5
[a!?C!35 5rS  )trainvalid_input_dimc             +   
  K   t        t        |||      }|r
d |D        }nt        t        ft        fdf}g d}	||gnddg}
t        ||	|
      D ]  \  }}}t	         ||      ||        t	         |             y w)Nr   c              3   0   K   | ]  }t         f|z    y wrt  r  )ru  rv  s     r   rw  z(sample_inputs_dropout.<locals>.<genexpr>!  s     3a!3s   r   )rI  r4  r  TF)r  rE  rX  )r   r   r   r   r
  r
  r   r   r7  p_valstraining_valsrx  r  rE  s                 r   sample_inputs_dropoutr
    s     {6m\H3?3Q!r"F  %0UGtUmM$UFMB Ba(4.AAAB
htn
%%r  c              +     K   t        t        |||      }t        t        |t        j                  d      }t        t        t        t        ft        fdf}g d}t        ||      D ]   \  }	}
t         ||	       ||	      |
       " y w)Nr   Fr   )rI  r  r  )r   r   r   r  rH   r   rM   )r   r   r   r   r   r   	make_maskr7  
scale_valsrx  scales              r   sample_inputs_dropout_backwardr
  -  sy     {6m\HF%**TYZIAq\A4$E Juj1 Be(4.)D/5AABr  c              +   ~  K   fdddfd
}fd}t        j                  ddgt         j                        }d	D ]  }d
D ]  }	|r|	dv r |t        fdt              }
 |||
      }t         t        t        f      |
f||	|d        |t        fdt        d      }
 |||
      }t         t        t        f      |
f||	|d        |t        fdt        d      }
 |||
      }t         t        t        f      |
ft        j                  g dt         j                        |	|d        |t        t        fdt              }
 |||
      }t         t        t        f      |
f|	|d        |t        t        fdt        d      }
 |||
      }t         t        t        f      |
f|	|d        |ddt              }
d|
d<   d|
d<    |||
      }t         t        t        f      |
fd||	|d        |ddt              }
d|
d<   d|
d<    |||
      }t         t        t        f      |
fd|	|d        |ddt              }
 t        t        f      }t        j                  g dt         j                        } |||
      }t        ||
f|	|dd       r |ddt              }
 t        t        f      dz  } |||
      }t        ||
fd|	|d         |ddt              }
 t        t        f      dz  } |||
      }t        ||
fdd|	||d!       |	d"k7  s |ddt              }
d#|
d<   d#|
d$<    t        t        f      } |||
      }t        ||
fd|	|d%        |ddt              }
 t        t        f      } |||
      }t        ||
fd||	|d&        |ddt              }
d#|
d<   d#|
d#<   d|
d<    t        t        f      dz  } |||
      }t        ||
fdddd||	|d'         y w)(Nc                 "    t        |       S r?  r   r  s    r   r   z/sample_inputs_embedding_bag.<locals>.make_input8      5uMZZr   FrA  c                B    t        | t        j                  |||      S )N)r   r   r   r   rB  r   r   r  )r<  r   r   rB  r   s       r   make_long_inputz4sample_inputs_embedding_bag.<locals>.make_long_input;  s"    5uzzsQU)68 	8r   c                 .    | r |j                         S y rt  r  )rn  r  r   s     r   make_per_sample_weightz;sample_inputs_embedding_bag.<locals>.make_per_sample_weight?  s     cii((r   r   r   r  ru  )r  r  r&  )r  r&  r  )rk	  r  per_sample_weightsr  T)r   r   rB  rY  )r  r!
  r  r   r   )padding_idxrk	  r  r!
  r   r   r  r  )r"
  r  r!
  )r   r   r   )r  rk	  include_last_offsetr   r  )max_normr  r!
  )r$
  	norm_typer  rk	  r!
  r&  r   r#  )scale_grad_by_freqr  r!
  )sparserk	  r  r!
  )r'
  r&
  r"
  r$
  rk	  r  r!
  )r   r   r  rH   rG   rM   )r   r   r   r   r   r
  r 
  rk	  generate_per_sample_weightr  r  r!
  rU  offsets_r   s    ```          @r   sample_inputs_embedding_bagr*
  7  s    [ <A 8 llAq6&

CG&3 sg"* r	gD)do.E "1$AA6C!78RTW!Xj!Q0v18$<N&PQ Q "1$AATJC!78RTW!Xj!Q0v18$<N&PQ Q
 "1$AATJC!78RTW!Xj!Q0v16iPV^c^h^h1i.2<N&PQ Q "1a&aa8C!78RTW!Xj!Q0v.2J\%]_ _ "1a&aatLC!78RTW!Xj!Q0v.2J\%]_ _
 "$AA6CCFCF!78RTW!Xj!Q0v57G.2J\&^` ` "&aa8CCICI!78RTW!Xj!Q0v56<N&PR R "%QQ7C !Q(G||IfEJJOH!78RTW!XgSF.2x`d%eh h ! &f!!<$aV,q0%;<VX[%\"!'68$@R*TV V &e;$aV,q0%;<VX[%\"!'68s267@R*TV V
 5= *&aa@C !CI !CI(!Q0G)?@Z\_)`&%gSFDHRVDV.XZ Z *%QQ?C(!Q0G)?@Z\_)`&%gSF8<6:Rd.fg g *%QQ?CCFCFCF(!Q014G)?@Z\_)`&%gSF8<TXij:<6:Rd.fg g_r	gsgs   KP=BP=C%P=c           	   +     K   fd}fd} |ddt               }t         |t         t        f      |f        |t        fdt               }t         |t         t        f      |f        |t        t        fdt               }t         |t         t        f      |f       s |ddt              }d|d	<   d|d
<   t         |t        t        f      |fddi        |ddt              }d|d	<   d|d
<   t         |t        t        f      |fddi        |ddt              } |t        t        f      dz  }t        ||fddi        |ddt              } |t        t        f      dz  }t        ||fddd        |ddt              }d|d	<   d|d<    |t        t        f      }t        ||fddi        |ddt              } |t        t        f      }t        ||fddi        |ddt              }d|d	<   d|d<   d|d<    |t        t        f      dz  }t        ||fddddd       y y w)Nc                 "    t        |       S r?  r   r  s    r   r   z+sample_inputs_embedding.<locals>.make_input  r
  r   c                @    t        | t        j                  ||      S )NrK  r
  )r<  r   r   r   s      r   r
  z0sample_inputs_embedding.<locals>.make_long_input  s    5uzzsQUVVr   r   r   r  r   r   r   r  r  r"
  r  r   r   r$
  r  )r$
  r%
  r   r#  r&
  Tr'
  r   r?  )r'
  r&
  r"
  r$
  )rG   rM   rH   )	r   r   r   r   r   r   r
  r  rU  s	    ```     r   sample_inputs_embeddingr.
    si    [W "!!
,C
j!Q(v
77 1$AA
.C
j!Q(v
77 1a&aa
0C
j!Q(v
77
 f!!4D	D	*aV,C6=RSBTVVf!!4D	D	*aV,C6=RTBUWW f!!4aV$q('
B7GIIf!!4aV$q('BUX7Y[[ f!!4D	D	aV$'8Ld7SUU f!!4aV$'$7GHHf!!4D	D	D	aV$q(',012"DE 	EU s   IIc                     fddt         ft        t        t         ff}d}fdt        j                  ||      D        S )Nc                &    t        | ||      S )Nr   r   r/	  s      r   r   z)sample_inputs_one_hot.<locals>.make_input    s    5u#D`mnnr   r   )r   r  c           	   3   x   K   | ]1  \  }}t         |d |dk(  rdn|dz        t        |             3 yw)r   r   r  r   r  )r  r  N)rM   r  )ru  r<  r  r   s      r   rw  z(sample_inputs_one_hot.<locals>.<genexpr>   sR      
 E; 	&",R+2B
 K0	
 	

s   7:)rH   rF   rG   r  r   )r   r   r   r   r   r  num_classessr   s    ```   @r   sample_inputs_one_hotr3
    sE    o 1$Aq	"FL
 #,"3"3FL"I
 
r   c              +   X  K   |j                  d|      }t        t        |||      }dt        ft	        d      ft        ft	        d      ft        ft	        d      ft        t        fd ft        t        t        fd ff}|D ]$  \  }}t         ||       |||      f|	       & y w)
Nrhs_requires_gradr   )r   Nr  r  r  r  r  r  )ri  r   r   rH   r  rM   )	r   r   r   r   r   r5
  r  shapes_and_kwargsr<  s	            r   sample_inputs_lossr7
     s     

#6F;vUR_`L
 	
tf%&
te$%
tf%&
Q
QD + )v,u- ,UBS TV!') 	))s   B(B*c           
   +   &  K   t        t        |||dd      }d}d}d}d}	d}
dD ]i  }|dk(  rg |d	n|}t        j                  ||
|	      D ]?  \  }}}t	         |||gt
        g|z         ||gt
        g|z  |      |||
       A k y w)Nr   r   r  r   )r  r  rv  r&  border
reflectionr5  r  )r  padding_moder  )r   r   r  r   rM   rH   )r   r   r   r   r   r  r  num_channelsmodesalign_cornersspadding_modesr   modes_r  r<
  r  s                   r   sample_inputs_grid_samplerB
  '   s      ;vUR_!+L JL#E"N5M (+q$5$)$e1:1B1B6=Zh1i 	-D,j,C!sCDj:A39:c:;)+ 		rc  c              +     K   d}d}d}d}d}	d}
d}t        j                  t        j                  d            }t        j                  |      t        j                  |      }}d	\  }}t        j                  ||z  |d
g| ||z  d
ggg||      }|j                  |dd      j                         }t        j                  ||z  |z  |z  |      }|j                  ||||      j                  t         j                        }|j                  |      }|j                  |       t        j                  |	||
      D ]G  \  }}}t         j                  j                  j!                  |||||f|      }t#        |||||       I y w)Nr   r   r  r  )r  r  r  rv  r9
  g     F@)gGz?gq=
ףp?rI  r   r$  rV  )rO  r  )r   deg2radr   cossinr  
contiguousr  r  r  r  r  r  r   r]  r^  affine_gridrM   )r   r   r   r   r   r  r=
  heightwidthr>
  r?
  r@
  r.  casar  r  thetar   r  r<
  r  grids                          r   reference_inputs_grid_samplerO
  A   s    JLFE.E"N5M 	ell4()AYYq\599Q<BFBLL	b"c
b2gs  F$E LLQ*557EZ,.7%?OA			*lFE:==ekkJA	5A]#-6->->umUc-d 

)lMxx""..\65AQ^ / 
 
 	
	

s   FFc           
   +      K   t        t        |||dd      }d}d}d}d}	d}
t        j                  ||
|	      D ]>  \  }}}t	         |||t
        t        f       ||t        dz   t        df      |||       @ y w)Nr   r   r  r   r  rv  )r   r   r  r   rM   rH   rF   rG   )r   r   r   r   r   r  r  r=
  r>
  r?
  r@
  r  r<
  r  s                 r   sample_inputs_grid_sampler_2drQ
  g   s      ;vUR_!+L JLE"NM-6->->umUc-d 
)lM*lAq9:*a!eQ23
 	

s   A9A;c              +     K   t        t              }fd}t        t        ft        ff}d}t        ||      D ]H  \  }	}
t	         ||	       ||	       ||	      ft        |
t        j                  dd                   J y w)Nr   c                     t        |       dk(  rdn| d   f} t        j                  dd| t        j                        }|dz  dz
  }|j	                        j                         j                        }|S )Nr   r   r   r   r  rV  )rM  r   r+  r  r  r  r  )r<  r(  r   r   r   r   s      r   r  z8sample_inputs_cosine_embedding_loss.<locals>.make_target   sj    %jAoE!H<MM!QfEJJGEAIE"**,;;MJr   r  r  r  r   r   )r  r  r  )r   r   rH   r   rM   r  r  uniform)r   r   r   r   r   r   r  r  r  r  r&  s    ```       r   #sample_inputs_cosine_embedding_lossrV
  }   s     V5P]^J !fqd^F(J
+ 
1qMQ-Q0!FNN2q,AB
 	

s   BBc           	   +   0  K   d}d}d}d}fd}	d}
d}t         t        j                  f}t        |
||      D ]  \  }}} |	|||f      }t        j                  d|||ft        j
                  	      }t        j                  |f|t        j
                  	      }t        j                  d
||ft        j
                  	      }|t         u r$|dv r |j                         }|j                         }t        ||||ft        ||              y w)Nrf  r   r   r   c                     t        |       }|j                  d      j                        j                         j	                        }|S )Nr  r   r  )r   log_softmaxr  r[	  r  )r  r(  	log_probsr   r   r   s      r   make_log_probsz.sample_inputs_ctc_loss.<locals>.make_log_probs   sM    &6MM!$''vU'CJJL[[jw[x	r   rT
  ru  r   r   r  )r  r  )r  zero_infinityr  )
rk  r   r}  r   r+  r  r  tolistrM   r  )r   r   r   r   r   input_lengthr  num_chartarget_lengthr[
  r  zero_inflengths_typer&  rN  ltrZ
  targetsinput_lengthstarget_lengthss    ```                r   sample_inputs_ctc_lossrg
     s    LEHM
 )JH%,,'LJ,? @1b"L%#BC	--8e]-C5::^de

E9l%**U[\r=5)5::^de :!.)002M+224N)7M>*S\`kl|}\~@s   DDc              +   V  	
K   dd   t        t        ||      t        t        |d      
dfd			
fd} |       D ]  \  }}}t        ||f|        t        j                  dd	gt        j
                  
      }t               |fddi       y w)Nr5  r   r   Fc                     t        |       dkD  r| d   g| dd  nd}|r&t        j                  |t        j                        S t	        |dt        |       dkD  r| d   n| d   t        j                        S )Nr   r   r   r   r  r  )rM  r   r&  r  r   )r<  r&  r  r   s      r   r  z+sample_inputs_nll_loss.<locals>.make_target   ss    &)%j1nU1X"ab	"";;quzzBBq#$03E
QE!HE!H&,%*ZZ	1 1r   c            	   3     K   
	f
dz   f} d}t        ||       D ]5  \  }} |       |      t        |      f  |       |      t                |      f  |       |      t         d      |      f  |       |      t         d      |      f  |      }	dz  }|j                  |      j                         r|d	k(  r|j	                  d        |      |t        	dz  |
      f  |      |t        	dz  |              f |d	k7  s |       |d      t        d|
      f 8 y w)Nr   rT
  r  r  r   rL  rz  r   r  )r  r  )r  r  rQ  T)r&  )r   r  eqr  r	  )r  r  r  r  r(  ignorer   r  r  r  r<  s         r   gen_shape_kwargsz0sample_inputs_nll_loss.<locals>.gen_shape_kwargs   s]    +8,
#J7 	kLIqQ-Q	1JJJQ-Q[]V_1```Q-Q[Q=O[d1eeeQ-Q[a=P\e1fffAA A%FttF|!i6&9
Q-DkQ6FR[$\\\Q-DkQ6FR[dodq$rrr F" m[$%?ST`iAjjj	ks   D,E1$Er  r   r   r  r  r  )r   r   rM   r   r   r  )r   r   r   r   r   rm
  rb  r   r   r  r  r  r<  s    `      @@@@@r   sample_inputs_nll_lossrn
     s     E(KV5P]^J+{6^cdK	1k k* "2!3 @vv%vi??@ \\2q'&

CF
j'viQS@T
UUs   B!B)c              +     
K   t        t        ||      
t        
dd      }d
fd}g ddt        ft        t        ft        t        t        ffD cg c]  }|d f c}D cg c]  }t        t        ft        |	      f c} |       D cg c](  }t        t        ft        | 
t        fd
            f* c}D cg c]9  }t        t        ft        | 
t        t        f       
t        fd
            f; c}}	|	D ]&  \  }}t	         
||       |||      f|       ( y c c}w c c}w c c}w c c}w w)Nr  r   r   r  r  c                      g } ddt         ft         t         t         ffD ]>  }| j                  D cg c]!  }t         t         ft        | |            f# c}       @ | S c c}w )Nr   r   r  rQ  )rH   r  r  )r   r<  r  maker  s      r   make_weight_shape_kwargszPsample_inputs_binary_cross_entropy_with_logits.<locals>.make_weight_shape_kwargs   sb    QFQ!Q0 	qEMMdnoW`QFD9T%[$QRop	q ps   &A!
r   r   r  rL  r  
pos_weight)r  rQ  ru
  r  r  )r   r   rH   r  rM   )r   r   r   r   r   	make_probrs
  r<  r  r6
  rr
  r  s             @@r   .sample_inputs_binary_cross_entropy_with_logitsrw
     sM     ;vU;D!!,I(J&($q!fq!Qi%H	IE5$-	I?I	J)Aq64),
-	J 
"	# ^h	hPYAq64)aTq8IJ
K	h	
 s}	}enAq64)D!QLTSTRV\]M^_
`	} + 
vm4E?A
 	

 
J	J	h	}s7   AE
D6 E
'D;E
-E E
>EAE
c              +   :  K   t        t        j                  g d|||             t        j                  g dg dg dg dg dgt        j                  |      }t	        t
        t
        f|||      }d	||<   t        |       t	        t
        t
        f|||d
      }d	||<   t        |       t	        t
        d	f|||      }t        |       t        t        j                  t
        f|||             t        t	        d|||             y w)N)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   Tr  r   )rM   r   r   r  r   rH   r&  )r   r   r   r   r   r  r(  s          r   sample_inputs_argwherery
     s     
ell<uV[hi
jj<<((((	* 27F	LD
 	QF%mTAAdG
a.QF%mcghAAdG
a.QF%mTA
a.
ekk1$eFR_`
aa
k"E&P]^
__s   DDc               #      K   t         ft         t         ft         t         t         ff} d}t        | |      E d {    y 7 w)NrT
  )rH   r   )r  r  s     r    _generate_sample_shape_reductionr{
  !  s3     dQFQ1I&F(Jvz***s   5?=?c              +      	
K   t        t        |||      	t        t        d|||      d 
	
fd} |       D ]  \  }}}}t        |||f|        y w)Nr   r   r   r   r   r   c              3   :   K   |  g | d d d | d d  y w)Nr   r   r   r  s    r   	gen_shapez2sample_inputs_gaussian_nll_loss.<locals>.gen_shape!  s-     cr
ACRjs   c               3     K   t               D ]  \  } }t         |        |             D ]  \  }} |        |       |      t        |      f  |        |       |      t        d|      f  |        |       |      t        t        j                  dd      |      f  |        |       |      t        dt        j                  dd      |      f   y w)Nr  T)r  r  ư>MbP?)r   r  )r  r   r  )r{
  r   r  r  rU
  )r  r&  t_sv_sr  r
  make_vars       r   rm
  z9sample_inputs_gaussian_nll_loss.<locals>.gen_shape_kwargs!  s     46 	DAq#IaL)A,? S"1o|C'8(3-XYIZZZ O\#%6da0 
 !O\#%6V^^D$71E 
 !O\#%6dtT(BaP 	s   C0C3r  r   )r   r   r   r   r   rm
  rb  r   varr  r
  r
  s            @@@r   sample_inputs_gaussian_nll_lossr
  !  sg     ;vUR_`L{F%WdeH" '7&8 F"vsF%vsofEEFs   AAc           
   +     K   t        t        |t        j                        }t	        t         |ddd       |ddd       |dd      d	      t        d
       t	        t         |ddd       |ddd       |dd            t        d       t	        t         |ddd       |ddd       |dd            t        d       y w)Nr  r  r   r   )r  r   r   r   rL  r   r  zabc is not validr   )r  r   r   zvar is of incorrect sizez]The size of tensor a \(3\) must match the size of tensor b \(2\) at non-singleton dimension 2r-  )r   r   r   _makes       r   error_inputs_gaussian_nll_lossr
  3!  s     KemmDE [r1a%Aq/5YZC[glm *8JL L [r1a%Aq/5YZC[\ *8RT T [r1a%Aq/5YZC[\ ,#BD Ds   C	Cc              +      K   t        t        |||      }t               D ]"  \  }} ||       ||      t        |      f $ y w)Nr   r  )r   r   r{
  r  )r   r   r   r   r   r  r  r&  s           r   _generate_sample_inputs_nn_lossr
  D!  sI     ;vUR_`L02 B11o|Aq0AAABrH	  c              +   4  K   t        | |||fi |D ]S  \  }}}t        j                  |      dkD  }d||<   d|| <   t        j                  dd      |d<   t        ||f|       U t        t        |||      }	t         |	d	       |	d	      f
       y w)Nr4  r   r   r  r  r  r   r   r   )r
  r   r  r  rU
  rM   r   r   )
r   r   r   r   r   rb  r   r  r  r  s
             r   "sample_inputs_hinge_embedding_lossr
  J!  s     ;GVUTalekl <vqv&,tunnR+(%vj;;< ;vUR_`L
l2&l2.>-A
BBr  c           	   +      K   t        t        |t        j                        }t	        t         |dd       |dd      fddi      t        d       y w)	Nr  r   r   r  r   r  ra  r   rb  r/  s       r   !error_inputs_hinge_embedding_lossr
  W!  sP     V5==IJ
[Aq!1Aq9I8KU`bgThi *8NP Pr  c              +   h  K   t        | |||fi |E d {    t        t        |||      }dD ]  }|j                  r |d      }t	        d      |d<    |d      }t        j                  |      dkD  }	d||	<   d||	 <   t        ||fd	|i
        |d      }t	        d      |d<    |d      }t        j                  |      dkD  }	d||	<   d||	 <   t        ||fd	|i
        |d      } |d      }t        j                  |      dkD  }	d||	<   d||	 <   t        ||fd	|i
        y 7 w)Nr   rW  r[  r	   r   r4  r   r   r  r  r   r   r  )r   r   )r
  r   r   r   r[  r   r  rM   )
r@  r   r   r   r   r   r  r  r   r  s
             r   %reference_inputs_hinge_embedding_lossr
  ]!  sb    1"fe]]V\]]]V5P]^J, P	""V$C5\CF'F??6*S0DF4LFD5Mc	;	:RSS V$C5\CF'F??6*S0DF4LFD5Mc	;	:RSS  F#v&,tu#VI{I6NOO7P ^s   D2D/DD2c              +      K   t        | |||fi |D ]0  \  }}}t        j                  dd      |d<   t        ||f|       2 y w)Nr
  r  deltar  )r
  r  rU
  rM   )r   r   r   r   r   rb  r   r  s           r   sample_inputs_huber_lossr
  ~!  sS     ;GVUTalekl <vq^^D!,'
%vj;;<rH	  c           
   +   &  K   t        t        |t        j                        }d}t	        t         |dd       |dd      fddi      t        |       d	D ]5  }d
}t	        t         |dd       |dd      fd|i      t        |       7 y w)Nr  z"is not a valid value for reductionr   r   r  r   r  r   rP  z:huber_loss does not support non-positive values for delta.r
  r-  )r@  r   r   r   errr
  s         r   error_inputs_huber_lossr
  !  s     V5==IJ
.C
[Aq!1Aq9I8KU`bgThi *= =  CJZ1%5Z1=M<OY`bgXhi$0cC 	CCrc  c              +   \  	K   t        t        |||      		fd} |       D ]  \  }}}t        ||f|        |j                  rbt        j
                  t        j                  fD ]>  }t         	|       	|      f       t         	|       	|      f       @ y y w)Nr   c               3     K   t               D ]  \  } }dD ]  }dD ]  } |       } |       } | d      } | d      }|s |j                          |j                          |j                          |j                          ||t        |||      f ||t        ||t        j                  dd      |      f    y w)Nru  r   rL  )	log_inputr  r  g:0yE>r
  )r
  r  r   r  )r{
  abs_r  r  rU
  )	r  r&  lifr	  r	  t1t2r  s	           r   rm
  z8sample_inputs_poisson_nll_loss.<locals>.gen_shape_kwargs!  s     46 	DAq# & A%aB%aB
 &aQ/B%aQ/B		GGIGGI BrQ? 
 Br!'d!;'(* )	r{  r  rV  r   )r   r   rM   r   r   r  ry  )
r   r   r   r   r   rm
  rb  r   r  r  s
            @r   sample_inputs_poisson_nll_lossr
  !  s     ;vUR_`L< "2!3 Avv%vj@@A **ekk* 	XAl7|RS?T>VWWl3<e;T:VWW	X s   B)B,c           	   +      K   t        t        |t        j                        }t	        t         |dd       |dd      fddi      t        d       t	        t         |dd       |d      f	      d
       y w)Nr  r   r   r  r   r  r*  r   r   (Attempting to broadcast a dimension of length|The size of tensor a \(5\) must match the size of tensor b \(4\) at non-singleton dimension 1)r   rb  r   r   r   rr
  s       r   error_inputs_poisson_nll_lossr
  !  y     ;vU]]CD [a41:-(%02 *!IK K
 [a48+>#24 4r{  c           	   +      K   t        t        |t        j                        }t	        t         |dd       |dd      fddi      t        d       t	        t         |dd       |d      f	      d
       y wNr  r   r   r  r   r  r*  r   r   (Attempting to broadcast a dimension of length|The size of tensor a \(4\) must match the size of tensor b \(5\) at non-singleton dimension 1)r   rb  r
  s       r   error_inputs_soft_margin_lossr
  !  r
  r{  c              +     K   t        t        t        t        f|||      }g dD cg c]  }t	        |       c}t	        d      dD cg c]  }t	        |       c}}	|	D ]J  } |       }
 |        |       f}|r!t
        j                  j                         |d<   t        |
||	       L y c c}w c c}w w)
Nr   )r
  r  r  r  T)swapr  r  distance_functionr  )	r   r   rH   rG   r  r   r]  PairwiseDistancerM   )r   r   r   r   with_distancer   rr
  r  r  kwargssrb  r   s               r   !sample_inputs_triplet_margin_lossr
  !  s     ;AvUR_`D,=	>&$f
	>$ 6M	M	$
#	MG  ;*/((*C*C*EF&'%d6::; 
?	Ms   $B>B4B>B9AB>c              +     K   t        t        |t        j                        } |dd       |dd       |dd      ft	        d      t
        df |dd       |dd       |dd      ft	        d      t
        d	f |dd
       |dd       |dd      fi t        df |dd       |dd
       |dd      fi t        df |dd       |dd       |dd
      fi t        df |d       |dd       |dd      fi t        df |dd       |d       |dd      fi t        df |dd       |dd       |d      fi t        dff}|D ]$  \  }}}}}t        t        |||      ||       & y w)Nr  r   r   r   r  r*  rK  r
  z'margin must be greater than 0, got -1.0r   r
  r
  zThe anchor, positive, and negative tensors are expected to have the same number of dimensions, but got: anchor 1D, positive 2D, and negative 2D inputszThe anchor, positive, and negative tensors are expected to have the same number of dimensions, but got: anchor 2D, positive 1D, and negative 2D inputszThe anchor, positive, and negative tensors are expected to have the same number of dimensions, but got: anchor 2D, positive 2D, and negative 1D inputsr  r   )	r   r   r   r   r  r.  r?  rN   rM   )	r   r   r   r   rk  rb  r   r   r   s	            r    error_inputs_triplet_margin_lossr
  !  s    V5==IJ
 
Aq	Jq!,jA.>?			=	?
 
Aq	Jq!,jA.>?	T		>	@
 
Aq	Jq!,jA.>?		+	- 
Aq	Jq!,jA.>?		+	- 
Aq	Jq!,jA.>?		+	- 
A*Q*Jq!,<=		$	& 
Aq	JqNJq!,<=		$	& 
Aq	Jq!,jn=		$	&[3Gj 9@ I4tVZUfE$.KI 	IIs   E&E(c              +   |  K   t        t        |t        j                  |      }t        t        |t        j                  |      }t        t        |t        j
                  d      }d\  }}	}
g } |||
f      } ||
|	f      j                         j                         j                         } |d      } |d      }|j                  t        ||||              |||
f      } ||
|	f      j                         j                         j                         } |d      } |d      }|j                  t        ||||              |||
f      } ||
|	f      j                         j                         j                         } |d      } |d      }|j                  t        ||||             |E d {    y 7 w)Nr   F)r  r2  r   r   )
r   r   r   float8_e4m3fnfloat8_e5m2r[  r(  rG
  r<  rM   )r   r   r   r   r   make_mat_e4m3make_mat_e5m2
make_scalerG   r  Krk  mat1mat2scale1scale2s                   r   sample_inputs_scaled_mmr
  #"  s    Ke>Q>QanoMKe>O>O_lmMV5;;V[\JGAq!G!Q D!Q ""$//1335DFFNN;tT66:;!Q D!Q ""$//1335DFFNN;tT66:;!Q D!Q ""$//1335DFFNN;tT66:;s   F2F<4F:5F<c              +   P  K   t        t        |||      }d\  }}}}	}
|||
f}|||
f}||	||
f}||	||
f}|	||
f||	||
ff}||f||f|g}g }ddg}ddg}t        ||ddg|      D ]=  \  }}}}|\  }}|j                  t	         ||       ||       ||      ||             ? t	         |||	||
f       |||	||
f       |||	||
dz   f            }|j                  t	         |||	||
f       |||	||
f       |||	||
f       |||f      dd	             |E d {    y 7 w)
Nr   )r   r   r   r   r  TFrI  r4  )	is_causal	dropout_pr  )	attn_maskr
  r
  )r   r   r   r<  rM   )r   r   r   r   r   rr
  r  seq_qseq_kv	num_headshead_dimdim_3_q_shapedim_3_kv_shapedim_4_q_shapedim_4_kv_shapebroadcast_tuple
qkv_shapesrk  gqa_optionscausal_options	qkv_shaper
  r
  _enable_gqashape_qshape_kvdiff_v_head_dims                              r   *sample_inputs_scaled_dot_product_attentionr
  >"  s    ;vU-XD0=-E5&)XE8,MVX.NIuh7MY9N!5(3eYPX5YZO .1M>3RTcdJG-KE]N8?c
K9A 	4	9i%{MNN
 		 "eYx01eY12eY156O NN%E845%FH56%FH56E6?+	 s   DD&D$D&c              +     K   t        t        |||      }d\  }}}d}	d}
|||	|f}|||
|f}||fg}g }ddg}d dg}t        |dd	gd
dg||      D ]v  \  }}}}}|\  }}|j                  t	         ||      j                  dd       ||      j                  dd       ||      j                  dd      d d d d d ||||d              x t	         |||	||f       |||
||f       |||
||dz   f      d d d d d d|d d       }|j                  t	         |||	||f       |||
||f       |||
||f       ||||	|
      d d d d |d|d d              t        j                  dddt        j                  |      }d|d<   d|d<   |j                  t	         |d      j                  ddd      j                  d       |d      j                  ddd      j                  d       |d      j                  ddd      j                  d      d t        j                  dddt        j                  |      |ddd
d|d d              |E d {    y 7 w)Nr   r   r   r  r  r2  r   r   r  TFrI  r4  )
rR  cu_seqlens_qcu_seqlens_kmax_seqlen_qmax_seqlen_kr
  custom_mask_typecompute_log_sumexpr
  seqlen_kr  r   r   r  r   >   )r2  r   r  )r  r  B   )r   r   r   r<  rM   r	  r   r  r}  rf  r  )r   r   r   r   r   rr
  r  r
  r
  r
  r
  r
  r
  r
  rk  
mask_typesscalesr
  
_is_causalr
  	mask_typer
  r
  r
  r
  r
  s                             r   )sample_inputs_efficient_attention_forwardr
  p"  s    ;vU-XD!(E9hEFIuh7MY9N .12JGQJC[F>EuSz:v?G :	:y)U%{M##Aq)N$$Q*N$$Q*&,
 	* "eUIx01eVY12eVY156(O" NN%	845%H56%H56eYv6,	
& <<JVTLLLONN""2q!,66q9NAq)33A6NAq)33A6aQekkRXY%,	
$ s   III
Ic              +     K   t        t        |||      }d\  }}}d}	d}
|||	|f}|||
|f}||fg}g }d dg}t        |ddgdd	g|      D ]s  \  }}}}|\  }}|j                  t	         ||      j                  d
d       ||      j                  d
d       ||      j                  d
d      d d |	|
||d|             u |E d {    y 7 w)Nr   r
  r  r2  r  TFrI  r4  r   r   )	cum_seq_q	cum_seq_kmax_qmax_kr
  r
  return_debug_maskr
  )r   r   r   r<  rM   r	  )r   r   r   r   r   rr
  r  r
  r
  r
  r
  r
  r
  r
  rk  r
  r
  r
  r
  r
  r
  r
  s                         r   %sample_inputs_flash_attention_forwardr
  "  s    ;vU-XD!(E9hEFIuh7MY9N .12JGC[F29uSz63; .	9i%{M##Aq)N$$Q*N$$Q*#
 	" s   CCC
Cc           
          t        t        |||      d}dg|}|d f|d f|t        d      f|t        d      f|t        d      f|t        d      f|t        d	
      fg}fd|D        S )Nr   r   r   T)r4  r  r		  rK  r  )r   c              3   Z   K   | ]"  \  }}t         |       |      f|        $ yw)r  Nr  )ru  r<  r   rr
  s      r   rw  z2sample_inputs_pairwise_distance.<locals>.<genexpr>"  s1      IVPVDKtE{nVDDr  )r   r   r  )	r   r   r   r   r   r<  batched_shaper6
  rr
  s	           @r   sample_inputs_pairwise_distancer
  "  s    ;vU-XDEKKM			T"#	T*+	s	t	Zk r   c              +      K   t        t        |||      fddD        E d {    fddD        E d {    y 7 7 w)Nr   c              3   D   K   | ]  }t         d       |        yw))r   r  r   r   upscale_factorNr  )ru  r
  r   s     r   rw  z.sample_inputs_pixel_shuffle.<locals>.<genexpr>#  s(       	H\*>JJr  r  c              3   D   K   | ]  }t         |      d         yw)r   r
  Nr  r  s     r   rw  z.sample_inputs_pixel_shuffle.<locals>.<genexpr>#  s'       	HUOA66r  )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   s        @r   sample_inputs_pixel_shuffler
  #  sR     {6m\H$  
  	   "A>AA A Ac              +      K   t        t        |||      fddD        E d {    fddD        E d {    y 7 7 w)Nr   c              3   D   K   | ]  }t         d       |        yw))r   r   r   r   downscale_factorNr  )ru  r
  r   s     r   rw  z0sample_inputs_pixel_unshuffle.<locals>.<genexpr>#  s)       	H\*=MNNr  r  c              3   D   K   | ]  }t         |      d         yw)r   r
  Nr  r  s     r   rw  z0sample_inputs_pixel_unshuffle.<locals>.<genexpr>#  s'       	HUOa88r  r
  r
  r   s        @r   sample_inputs_pixel_unshuffler  #  sR     {6m\H &  
  	r
  c              +   f   K   t        t        |||      g d}fd|D        E d {    y 7 w)Nr   )))r   r   r  r  r   ))r   r   r  r  r   ))r   r  r   r   r   c              3   L   K   | ]  \  }}t         |      |f         yw)r   Nr  )ru  r<  r  r   s      r   rw  z0sample_inputs_channel_shuffle.<locals>.<genexpr>(#  s-      E6 	HUO6)44s   !$r
  )r   r   r   r   r   shapes_groupsr   s         @r   sample_inputs_channel_shuffler  #  s5     {6m\HM*  s   &1/1c              +     K   t        t        ||      }t        |dd      }d}g ddt        ft        t        ft        t        t        ffD 	cg c]  }	|	d f c}	|D 
cg c]  }
t        t        ft        |
      f c}
|D 
cg c]+  }
t        t        ft        |
 |t        t        f      	      f- c}
}|rC|j	                  |D 
cg c](  }
t        t        ft        |
 |t        fd
            f* c}
       |D ]*  \  }	}t         |r|n||	|       ||	|      f|       , y c c}	w c c}
w c c}
w c c}
w w)Nr  r
  r   r  r  r   r   r  rq
  r   rL  rt
  r  r  )r   r   rH   r  r  rM   )r   r   r   r   logitsr   rr
  rv
  r  r<  r  r6
  s               r   "sample_inputs_binary_cross_entropyr  -#  s>    ;vU;D $Q/I(J&($q!fq!Qi%H	IE5$-	I?I	J)Aq64),
-	J U_	_yAq64)D!QLA
B	_   `jkS\q!fdY4!;LMNk	
 + 
v*VTEOE?A
 	

 
J	J	_
 ls7   AED.ED3>E0D85E
-D=7AEc              +   Z  K   dt         t         t         t         fg}ddg}ddg}t        |||      D ]w  \  }}	}
t        ||||      }||
z   j                         j	                  |      }t        |||	|
       t        ||||      }t        ||||      }t        |||	|
       y y w)Nr   {Gz?gؗҜ<r   r4  r   )r  r  )rH   r   r   r[	  r  rM   )r   r   r   r   r   r	  r  r  r  r  r  r(  closer.  r/  s                  r   sample_inputs_allcloser  H#  s     !q!Qi(M5ME3KE u= 	64&]ST!!#22=A!UD99 &]S&]S!QT55	6r  c              +   .  K   t        | |||fi |E d {    |j                  rlt        t        d||      }t	         ||       |t
        j                        f       t	         |t
        j                         ||      f       y y 7 }w)Nr   rw  rV  r   )r7
  r   r   r   rM   r   r:  r   r   r   r   r   rr
  s         r   sample_inputs_l1_lossr  X#  s     !'65-R6RRR {Bv]S$U+4ell3K2MNN$U\\2$U:K9MNN  Ss   BBA>Bc           	   +      K   t        t        |t        j                        }t	        t         |dd       |dd      fddi      t        d       t	        t         |dd       |d      f	      d
       y wr
  rb  r
  s       r   error_inputs_l1_lossr  a#  sy     ;vU]]CD [a41:-(%02 *!IK K
 [a48+>#2 r{  c              +     K   t        | |||fi |E d {    t        t        t        t        f|||      }t	         |dd       |dd      ft        d             t	         |        |       ft        d             y 7 sw)	Nr   r   r   r  r   r   )r  r  )r7
  r   r   rH   rM   r  r  s         r   sample_inputs_smooth_l1_lossr  q#  s~     !'65-R6RRR;AvUR_`D dqq)"11E0GPTZ[P\
]]
dfDF9Tq\
BB Ss   BB	A4Bc           	   +      K   t        t        d||      fd}fd}d}d}t        ||d      D ]<  \  }	}
} ||	      }|r ||	      n ||	      }t        ||ft	        |
|      	       > y w)
NrI  r}
  c                     t         j                  j                  j                   |       d      }|j	                         |S Nr   )r   r]  r^  rY
  r  r<  r  r   r   s     r   make_logz&sample_inputs_kl_div.<locals>.make_log#  s6    hh!!--huorB=)
r   c                     t         j                  j                  j                   |       d      }|j	                         |S r  )r   r]  r^  r_  r  r  s     r   rv
  z'sample_inputs_kl_div.<locals>.make_prob#  s6    hh!!))(5/2>=)
r   )r  r5  )r  r  	batchmeanr  ru  )r  
log_targetr  )r   r   r   rM   r  )r   r   r   r   r   r  rv
  r  r  r<  r  r  rb  r   r   s      `          @r   sample_inputs_kl_divr  {#  s      {6VcdH

 F5J(/
M(R j$y*$.%Ie4D%viy]g8hiijs   A2A6c              +      K   t        t        |||      fdt        j                  dt        fd      D        E d {    fdddd	d
t        d      fD        E d {    y 7 &7 w)Nr   c              3   J   K   | ]  \  }}t         ||f              y wrt  r  )ru  r  r  r   s      r   rw  z&sample_inputs_pdist.<locals>.<genexpr>#  s#     `DAqJ1v./`s    #r   r   r  c              3   l   K   | ]+  }t         t        t        f      t        |              - yw)r		  r  N)rM   rH   r  )ru  r  r   s     r   rw  z&sample_inputs_pdist.<locals>.<genexpr>#  s(     oaJ1v.tayAAos   14rI  r  r  r  r   )r   r   r  r   rH   r[  r   s        @r   sample_inputs_pdistr   #  sf     V5P]^J`I<M<MqRSf]^<_```oCQTVY[_afglamKnooo aos#   =A+ A' A+!A)"A+)A+r   c                    t         j                  j                  j                  }|dk(  r || d      | j                  d   z  }n$|t        d      k(  r || d       }n || d|      }|j                  | j                        S )Nr   hammingr   r   c                 N    t        j                  | |z
        j                         S rt  )r  r   r&  )r   r   s     r   r  z!reference_pdist.<locals>.<lambda>#  s    266!a%=+<+<+> r   	minkowskir		  )scipyspatialdistancepdistr<  r[  r  r   )rb  r  r(  rc  s       r   reference_pdistr)  #  sq    MM""((EAvui(5;;q>9	
eEl	u>?ukQ/==%%r   c              +      K   t        t        |||      }t         |d             t         |d             t         |d             t         |d      d       t         |d      d       y w)Nr   r   r  r   r   r  r   r   r   s         r   sample_inputs_diagflatr+  #  sj     V5P]^J
jn
%%
j&
''
j(
))
j&q
11
j&r
22r   c              +     K   t         j                  j                  j                  t         j                  j                  j                  t         j                  j                  j
                  d}dddd}|j                         D ci c]  \  }}|d|j                    }	}}|| j                     }
|| j                     }t        j                  |       }|	| j                     |_        t        ||||fi |D ]  }|j                  j                         |
dz   k7  r$|j                  d   dk7  r7|j                  d   sG ||j                  fi |j                  \  }}|j                         j                  |      }|j                  d   |j                  d	   |j                  d
   |j                  j!                         d}t#        ||f|        y c c}}w w)N)nn.functional.max_unpool1dnn.functional.max_unpool2dnn.functional.max_unpool3dr   r   r   znn.functional.r  r  r  r
  r  )r  r
  r  r  r  )r   r]  r^  
max_pool1d
max_pool2d
max_pool3ditemsr  r  r+  r  rb  r   r   r[	  r  rO  rM   )r   r   r   r   r   unpool_name_to_pool_method_dictunpool_name_to_dimr  vunpool_to_pool_name_dictpool_dimpool_methodpool_op_inforl  poolr  r  r  s                     r   sample_inputs_max_unpoolr<  #  s    &+hh&9&9&D&D&+hh&9&9&D&D&+hh&9&9&D&D'# '(&'&' NmMrMrMtuTQ^AJJ<#@ @uu!',,/H1',,?K99W%L0>L(vum^W]^ J <<A- ==$) ==)*'FFMD'++-..}=C%}}]; --1!==3  &||002M c
=II7J  vs   BG!G"BG!BG!c              +      K   t        | |||fi |D ]E  }|j                  d   }|j                         j                         |j                         k(  sB| G y wNr   )r<  r   uniquerh  )r   r   r   r   r   rl  r  s          r   sample_inputs_max_unpool_gradr@  #  sX     *7FE=[TZ[ ++a." >>!!#w}}6L's   AAAc              +     K   t        t        |||      }|rd}d}d}d}	t        f}
t        f}d}d}d}n!d}d}d}d	}	t        f}
t        t        f}d
}d}d}t	        j
                  ||||	|
|||      D ]  \  }}}}}}}}d }|dk(  r
 |||      }n|dk(  r ||r|nd|z  ||      }|r ||||      } ||||      } ||||      }n |||      } |||      } |||      }|rd } |||      } |||      } |||      }n ||dz  |      }d }d }d } ||      } ||      }  ||dz        }! |||      }" ||      }#||||||!|| d||"|#f}$|||||dkD  rdnd|d}%t        ||$|%        y w)Nr   r   r  r  r  r  )2drv  r   r   r[  )NrB  3drB  rC  r   r   FrI  T)q_proj_weightk_proj_weightv_proj_weightr
  rE  use_separate_proj_weightr  )r   r   rI   rH   r  r   rM   )&r   r   r   r   r   r   bszis_batchedsuse_separate_proj_weights	emb_sizessrc_lenstgt_lensheadsdropoutsr
  r  rG  r
  emb_sizesrc_lentgt_lenr
  r
  r
  r  r  r6  in_proj_weightrD  rE  rF  bias_kbias_vin_proj_biasout_proj_weightout_proj_biassample_argsr  s&                                         r   *sample_inputs_multi_head_attention_forwardrZ  #  s,    V5P]^J$,!	55
#$1!	57'
mvm~m~.
IxQY[`bjn /Ei
,i7GU^`i 	"7G4I$":C1	#I7T[\I7C2A7C2A7C2A7H-A7H-A7H-A#!N&x:M&x:M&x:M'1h?N M M MH%H%!(Q,/$Xx8"8,q(I~&&%
 ,++#!*Se)A
 !+mDD_/Es   E.E0r  r   r  )r  r   i,  )rB  	same_sizer   r   c                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Zy)ForeachRightmostArgTypeN)	r  r  r  enumauto
TensorList
ScalarListScalarr}  r   r   r   r]  r]  E$  s6    JJTYY[FTYY[Fr   r]  c                   <     e Zd ZU eed<   eed<   ddd fd
Z xZS )ForeachSampleInputref_argsdisable_fastpathFN)rf  re  c                \    t        |   |i | |xs | j                  | _        || _        y rt  )r  r  r   re  rf  )r  rf  re  r   r   r  s        r   r  zForeachSampleInput.__init__T$  s-    $)&) -DII 0r   )r  r  r  r
   __annotations__r  r  r  r  s   @r   rd  rd  L$  s    
 M/4t 1 1r   rd  c                   b    e Zd Z	 ddededededdf
dZdedededdfdZd	 Zd
 Zd Z	d Z
d Zy)foreach_inputs_sample_funcarityrightmost_supports_scalarrightmost_supports_scalarlistrightmost_supports_tensorr  Nc                 F    || _         | j                  |||       d| _        y )Nru  )rk  _set_rightmost_arg_types_intersperse_empty)r  rk  rl  rm  rn  s        r   r  z#foreach_inputs_sample_func.__init__[$  s,     
%%%'DF_	
 #0r   c                 T   t         j                  g| _        | j                  dkD  r|r)| j                  j	                  t         j
                         |r)| j                  j	                  t         j                         |r*| j                  j	                  t         j                         y y y r   )r]  r`  _rightmost_arg_typesrk  r<  rb  ra  r}  )r  rl  rm  rn  s       r   rp  z3foreach_inputs_sample_func._set_rightmost_arg_typesh$  s     &=%G%G$H!::>())001H1O1OP,))001H1S1ST())001H1O1OP ) r   c           
      H   |t         j                  k(  rt        d |||fi |gS |t         j                  k(  r$t	        d|||d   |j                  dd            gS |j                  dk(  xr" |t        j                  t        j                  fv fd}rdnd	}	|t         j                  k(  r(g }
|
j                  t        |      D cg c]  }t        j                  d
|	      dz    c}       |s|j                  r-|
j                  t        |      D cg c]	  } |        c}       |s|j                   r|
j                  t        |      D cg c]  }t#         |        |              c}       |
j                  g dt        |dz
        D cg c]  }d c}z          |
j                  g dt        |dz
        D cg c]  }d c}z          |
S |t         j$                  k(  rg }|j                  t        j                  d|	dz                |s|j                  r|j                   |              |s|j                   r%|j                  t#         |        |                    |j                  d       |S t'        d|       c c}w c c}w c c}w c c}w c c}w )Nr   rB  r   F)r   r   rB  r   _foreach_powc                  L    t        j                          } r	| dkD  rdS dS d| z
  S )Nr4  r  r  )r  )r  should_use_simpler_scalarss    r   sample_floatzFforeach_inputs_sample_func._sample_rightmost_arg.<locals>.sample_float$  s+    A)#gs.3.Qwr   r   r  r   r   )r   r        @      @r   r  )Tr   r  ry  r   TInvalid rightmost_arg_type of )r]  r`  rn   r}  r   ri  r  r   r\  r  ra  r<  ry  r  r+  r   r   r  rb  AssertionError)r  r   rightmost_arg_typer   r   r4  allow_higher_dtype_scalars_foreach_inputs_kwargsrx  r   scalarlist_listr  scalarsrw  s                @r   _sample_rightmost_argz0foreach_inputs_sample_func._sample_rightmost_argw$  sR    !8!C!CC)${eNdeff!8!?!??64_E488%P  
 &,[[N%B%ouQVQ^Q^`e`n`nPoGo"	 /qA!8!C!CC O""{I[#\AFNN1d$;a$?#\])U-D-D&&k@R'S1'ST)U-=-=&&Y^_jYk'lTU(O'lm&&';ER]`aRaLb>cqs>c'cd&&'ARWXcfgXgRhDiQSDi'ij""!8!?!??GNN6>>!TAX67)U-D-D|~.)U-=-=w|~|~FGNN4 N=>P=QRSS% $] (T'l>cDis    JJJ	J
	J
c                    | j                   dk(  rdj                  v r|t               v ryj                  t        j
                  t        j                  fv ryj                  t        j                  j                  fv ry|t        t        j                        v S | j                   dk  s|t        j                  k(  ry dj                  v r|t        t        j                        v ryt        fddD              r|t        t        j                        v ry|t        j                  k(  rPd	j                  v xr |t        t        j                        v }d
j                  v r|t        j                  k(  rd}|S |t        j                  k(  rd	j                  v xr |t        t        j                        v }t!        |t              rF||t        j                  k(  z  }j                  t        j"                  t        j$                  fv rd}|S t!        |t&              r||t        j                  k(  z  }|S t!        |t(              r ||t        t        j                        v z  }|S t!        |t*              r||t               vz  }|S t-        d| d|       |t        j.                  k(  r@j                  t        j0                  k(  xr |t        t        j                        v }t3        |d         t5        fd|D              }|s|t               vS t!        |d   t              r3d
j                  v sdj                  v r|t        j                  k(  rd}|S t!        |d   t&              r||t        j                  k(  z  }|S t!        |d   t(              r ||t        t        j                        v z  }|S t!        |d   t*              r||t               vz  }|S t-        d|       t-        d|       )Nr   foreach_absTFr   foreach_powc              3   :   K   | ]  }|j                   v   y wrt  )r  )ru  foreach_namer   s     r   rw  zFforeach_inputs_sample_func._should_disable_fastpath.<locals>.<genexpr>$  s"      
  +
r  )foreach_clamp_maxforeach_clamp_minforeach_maximumforeach_minimumforeach_divforeach_addzInvalid scalar of type z - r   c              3   6   K   | ]  }t        |        y wrt  )rx  )ru  r6  elmt_ts     r   rw  zFforeach_inputs_sample_func._should_disable_fastpath.<locals>.<genexpr>$  s     M!
1f 5Ms   foreach_mulzInvalid scalarlist of rz  )rk  r  r   r#	  r   r   negref_inplacer}  r  r   r  r]  rx  r`  rb  rx  rO  r	  rY  r[  r  r{  ra  divr  r  )r  r   rightmost_argr|  r   rf  has_same_typer  s    `     @r   _should_disable_fastpathz3foreach_inputs_sample_func._should_disable_fastpath$  s   ::?+0Hzzeii33!!ell&8&8%::.uzz:::::>/3J3Q3QQFKK'E5G

5S,S 
$t
 
 )%**55!8!C!CC,;gI[\a\f\fIg@g+0C#' ###:#A#AA,;gI[\a\f\fIg@g-. EUZZ$77 ::%))UYY!77',$ $# M3/ EUZZ$77  $# M51 E-?

-K$KK 
 $#	 M73 E$@@  $# %'>?Q>RRUVcUd%eff#:#E#EE%zzUYY6b5DVW\WaWaDb;b-*+FM}MMM MO33-*D1!V[[0MV[[4PV[_d_i_iVi',$ $# M!,c2 EUZZ$77  $# M!,e4 E-?

-K$KK 
 $#	 M!,g6 E$@@  $# %'=m_%MNN !#ABTAU!VWWr   c                    i }|t         j                  k(  rN|j                  rB|t        t        j
                        v rd|d<   n!|j                  rt        dd      |d<   nd|d<   | j                  dkD  r| j                  ||||      |d<   |S )Nr   r  r  r   rf  )
r]  r`  supports_alpha_paramr   r   r  r   r  rk  r  )r  r   r  r|  r   r   s         r   _sample_kwargsz)foreach_inputs_sample_func._sample_kwargs$  s    !8!C!CCHcHc*5::66"#w!!")!Q-w"&w::>)-)F)Fv}^prw)xF%&r   c           
   +   d  K   d|vsJ t         j                         D ci c]  \  }}||j                  ||       }}}||d<   |j                  dd      }	| j                  D ]=  }
t	        j
                  |      }d|d<   t        d ||t        fi |}| j                  dkD  rt        | j                  dz
        D cg c]  }t        d ||t        fi | }}|j                   | j                  |t        j                  ||t        fd|	i|d	          | j                  ||d
   t        j                  |      }nTg }i }|j                  t         j"                  t         j$                  fv rd|d<   n|t'        t         j(                        v |d<   t+        |g|i | @ y c c}}w c c}w w)Nnum_input_tensorsr   r}  FT	zero_sizer   r   r   r   rf  )_foreach_inputs_default_kwargsr3  r|  rs  r+  deepcopyrn   NUM_SIZE0_TENSORSrk  ry  r<  r  r]  r`  r  r#	  r   r   r  r   r  rd  )r  r   r   r   r   r   r  r6  r~  r}  _rightmost_arg_typezero_size_foreach_inputs_kwargsrb  r  r   s                  r   sample_zero_size_tensor_inputsz9foreach_inputs_sample_func.sample_zero_size_tensor_inputs$  s    "&000B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/%+ZZ0Le%T"#'#<#< 	=.2mm<R.S+;?+K8)$?PtTstEzzA~ #4::>2 *$?PtTst  .D../::) 4N : 	 ,,DH&=&H&H%Q ::%))UYY!7716F-.16:LUZZ:X1XF-.$U<T<V<<9	= "js   F0F%B F0=F+CF0c              +   2  K   d|v }|r|j                  d      nt        }t        |t              sJ t        j                         D 	ci c]  \  }}	||j                  ||	       }
}}	||
d<   d|
d<   |j                  dd      }t        j                  || j                  | j                        D ]R  \  }}}|r|t        |      k7  st        |      dk(  r'||
d<   t        d |||fi |
}g }| j                  dkD  rt        | j                  d	z
        D cg c]  }t        d |||fi |
 }} | j                  ||||||fi |
}|D ]  }|j!                  |       | j#                  ||||      }|}|t$        j&                  t$        j(                  fv r#|d d
 t        |      D cg c]  }|d
   	 c}gz   }t+        |g|d|i|}| |j                           0t+        |g|d| j-                  |d d |      i U y c c}	}w c c}w c c}w w)Nr  r   Fr  r}  r  intersperse_empty_tensorsr   r   r   re  rf  )r|  foreach_num_tensorsrx  rk  r  r3  r  r   rs  rq  r&  r	  rn   rk  ry  r  r<  r  r]  rb  r}  rd  r  )r  r   r   r   r   r   num_input_tensors_specifiedr  r  r6  r~  r}  r4  r|  r  rb  r   r  rightmost_arg_listr  re  rl  s                         r   __call__z#foreach_inputs_sample_func.__call__%  s    &9V&C#?ZFJJ':;`s+T222B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/.3{+%+ZZ0Le%T" KTJ[J[!4#<#<d>U>UKW  	FK+-F(kSAR=S.SWZ[aWbfkWkB["#>?)fe[L4JLEDzzA~ #4::>2  *fe[T<RT 
 &@T%?%?.{Lf&.,&." &8 MKK.!00HZ\abF#H).E.L.LNeNlNl-mm#'95CU0Vab0V/W#W/ZZxZSYZF LHHJ ) &*%B%B64QUW\%] 9 	 "j  1Ws-   AH	H&B0HH,A9H%H
1A&Hr  )r  r  r  rY  r  r  rp  r  r  r  r  r  r   r   r   rj  rj  Z$  s     +000 $(0 (,	0
 $(0 
0Q#'Q (,Q $(	Q
 
Q0Td:Xx!=F*r   rj  c                   D     e Zd Z	 d
dededededdf
 fdZd Zd	 Z xZS )foreach_max_sample_funcrk  rl  rm  rn  r  Nc                 8    t         |   ||||       d| _        y )Nr  )r  r  rq  )r  rk  rl  rm  rn  r  s        r   r  z foreach_max_sample_func.__init__C%  s#     	 9;XZst"*r   c                     g S rt  r   )r  r   r   r   r   r   s         r   r  z6foreach_max_sample_func.sample_zero_size_tensor_inputsM%      	r   c                      yNFr   r  r   r  r|  r   s        r   r  z0foreach_max_sample_func._should_disable_fastpathP%  s    r   r  )	r  r  r  rY  r  r  r  r  r  r  s   @r   r  r  B%  sG     +0++ $(+ (,	+
 $(+ 
+r   r  c                       e Zd Zd Zd Zy)foreach_norm_sample_funcc           	   +     K   d|vsJ t         j                         D ci c]  \  }}||j                  ||       }}}||d<   dddddt        d      t        d	      fD ]e  }	t	        d ||t
        fd
di|}
d}|	ddt        d      fv r,|t        t        j                  t        j                        v rd}t        |
|	|       g y c c}}w w)Nr  r   r   r   r   r   r   r   r  r  TFordrf  )r  r3  r|  r[  rn   r  r   r   rl  r  rd  )r  r   r   r   r   r   r  r6  r~  r  rb  rf  s               r   r  z7foreach_norm_sample_func.sample_zero_size_tensor_inputsU%  s     "&000B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/q!RU5\5=A 	XC)$?P{\`{dz{E#q!U5\**u8J5::W\WeWe8f/f#( $UFVWW	X "js   CC	BCc              +     K   |j                  dt              }t        |t              sJ t        j                         D ci c]  \  }}||j                  ||       }	}}||	d<   |j                  dd      }
t        |ddddd	t        d
      t        d      f|t               v rdt        j                  fz   nt        j                  fd      D ]  \  }}}}|t        d
      t        d      fv s|dk  r|r(||	d<   t        d |||fddi|	}d}|ddt        d
      fv r,|t        t        j                  t        j                        v rd}t!        ||||        |st        d      gt        d      dgdt        d      gdddt        d      t        d      dt        d      t        d      ddg
ddt        d      t        d      ddgdt        d      t        d      ddgg}|D ]h  }t        j"                  ||      }d}ddt        d
      fv r,|t        t        j                  t        j                        v rd}t!        |g||       j y y c c}}w w)Nr  r   r}  Fr   r   r   r   r   r   r  rt  ru  r  r  T)r  rf  r   r	   r  r  r  r  r  rO  r$  r  )r|  r  rx  rk  r  r3  r   r[  r   r   r  r  rn   r   rl  r  rd  r   )r  r   r   r   r   r   r  r  r6  r~  _allow_higher_dtype_scalarsr4  r  	out_dtyper  rb  rf  
nan_inputsr   s                      r   r  z!foreach_norm_sample_func.__call__`%  sr    "JJ':<OP+T222B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/&,jj1Mu&U#FM1b"eElE&M:-2mo-EGu''))EMMK[	G
 	iBKi)B eeFm44aE^B["#>?)${vV[v_uvE#q!U5\**u8J5::W\WeWe8f/f#( $UFV^ghh!	i& uus#eEl#c3eeElCuuUZ|]acfgc5<utSAeElE%L$<J $ ZLLv6#' 1au..5<Nuzz[`[i[i<j3j',$(!#HXYYZ / "js   A IIG;IN)r  r  r  r  r  r   r   r   r  r  T%  s    	X(Zr   r  c                   F     e Zd Z	 	 	 ddededef fdZd Zd Zd Z xZ	S )	foreach_pointwise_sample_funcrk  rl  rm  c                 (    t         |   |||       y rt  )r  r  )r  rk  rl  rm  r  s       r   r  z&foreach_pointwise_sample_func.__init__%  s     	 9;XYr   c                 v    |t        t        j                        v xr |j                  t        j                  fv S rt  )r   r   r  r#	  addcmulr  s        r   r  z6foreach_pointwise_sample_func._should_disable_fastpath%  s,    *5::66Y6::%--IY;YYr   c           	   +     K   d|vsJ t         j                         D ci c]  \  }}||j                  ||       }}}||d<   t        d ||t        fddi|}	t        d      D 
cg c]  }
t        d ||t        fddi| }}
d|v r|d= |j                  | j                  ||d   t        j                  |             t        |	g|i | y c c}}w c c}
w w)Nr  r   r  Tr   r  r   )r  r3  r|  rn   r  ry  updater  r]  r`  rd  )r  r   r   r   r   r   r  r6  r~  rb  r  r   s               r   r  z<foreach_pointwise_sample_func.sample_zero_size_tensor_inputs%  s    "&000B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/%dFE;LwX\w`vw 1X
 "$7HsTXs\rs
 
 y!d))&$r(<S<^<^`efg 8888 "j
s   CC*C'CACc           
   +     K   d|v }|r|j                  d      nt        }t        |t              sJ t        j                         D 	ci c]  \  }}	||j                  ||	       }
}}	||
d<   |j                  dd      }t        j                  || j                  d      D ]U  \  }}}||
d<   t        d |||fddi|
}t        dt        |t        j                  k(        z
        D cg c]  }t        d |||fddi|
 }} | j                  |||||fd|rdn|d	|
}|D ]  }i }|t        j                  k(  r|j                  |       n-|t        j                   t        j"                  fv r||d
<   n||d<   |j%                  | j'                  ||||             t)        |      dk(  sJ dt)        |             t+        |g|i |}| |t        j                  k(  s|j                           X y c c}	}w c c}w w)Nr  r   r}  Fru  r  r  r   )r  r}  r  r  z
len(args)=)r|  r  rx  rk  r  r3  r  r   rs  rn   ry  rY  r]  r`  r  r<  r}  ra  r  r  rM  rd  )r  r   r   r   r   r   r  r  r  r6  r~  r}  r4  r|  r  rb  r  r   r  r  rl  s                        r   r  z&foreach_pointwise_sample_func.__call__%  sJ    &9V&C#?ZFJJ':;`s+T222B`BfBfBh!i$!Q!VZZ1%5"5!i!i2?/%+ZZ0Le%T"JSJ[J[!4#<#<mKM 	FK+-FB["#>?)${vV[v_uvE q3'9=T=_=_'_#``a &dFE;rRWr[qrD  "<!;!;"	"  4M5Sm	" )	" "4 %)@)K)KKKK.',C,J,JLcLnLn+oo(5F9%&3F7Od11&-I[]bcd4yA~6*#d)6~+ECDCFC%)@)K)KKHHJ%		 "js&   AH	G;&BH)HC#H%!H)r   FF)
r  r  r  rY  r  r  r  r  r  r  r  s   @r   r  r  %  sC     */.3	ZZ $(Z (,	ZZ9'r   r  expTestMetatest_dispatch_meta_inplacer	  #test_dispatch_symbolic_meta_inplacetest_meta_inplace)r  dtypesIfHpubackward_requires_resultsupports_autogradsupports_inplace_autogradr'	  r%	  acos)r  r  r  r  r'	  r%	  asinatanrE
  coshloglog10log2tanga2U0*3?gh㈵>r  r  TestForeachtest_parityrZ  )device_typer  g{Gzt?r  rF
  sinhr  test_dispatch_meta_outplace$test_dispatch_symbolic_meta_outplacetest_meta_outplace*test_unary_op_tensors_on_different_devicesr  r	  sqrt)r  r  r  r  r'	  r  r%	  rsqrt)r  r  r  r'	  r  r%	  ceiltest_autodifferferfcexpm1floorlog1proundr   
reciprocalsigmoidtruncr   r  )r  r  r  r  r'	  r(	  r%	  r  )r  r  r  r  r'	  supports_outsignlgammaz2In-place lgamma not supported for integral tensors)r  r  r  r'	  r%	  foreach_unary_op_dbrO  /test_dispatch_symbolic_meta_inplace_all_strides)r  r  r  r  r  r'	  r%	  sub0test_dispatch_symbolic_meta_outplace_all_strideszDconsistently fails internally and causes other tests to appear flakyc                     t         xr | d    S NrB  r7   r  s    r   r  r  *      )2[F?D[@[ r   )r	  	active_ifr	  c                     t         xr | d    S r  r  r  s    r   r  r  *  r  r   r  	clamp_min.test_binary_op_scalar_with_overlapping_tensors	clamp_maxr  r  )r  r  r  r'	  r  r%	  powflakyzfailed starting on ROCm 6.2)r  r	  r  'test_binary_op_with_scalar_self_supportc                     | d   S )Nis_fastpathr   r  s    r   r  r  |+  s    )> r   )	r  supports_scalar_self_argr  r  r  r  r'	  r%	  r  r+  )r  r  r'	  r  r  foreach_binary_op_dbr  r   addcdivforeach_pointwise_op_dbr&  test_foreach_reduce_large_inputnormforeach_reduce_op_dblerpr   foreach_other_op_dbc                     | j                   t        j                  k(  rBt        j                  | t        j                        j                  t        j                        S t        j                  |       S NrV  )r   r  bool_r  r  r  r  s    r   reference_signr
  Q,  sF    ww"((
 wwq)00::771:r   c                 N   | j                   t        j                  t        j                  fvrt	        |       S | t        j
                  |       z  }|j                  dk(  r2| dk(  r+t        j                  t        dd      | j                         S |S | dk(  }t        dd      ||<   |S Nr   rV  )	r   r  r2  r  r
  r   r$  r~	  r  )r   r  r  s      r   reference_sgnr  [,  s     	wwr||R]]33a  rvvay=C
xx1}F 88GAqM99
 FD1CIJr   c                     | j                   t        j                  t        j                  fv rddt        j                  |        z   z  S t
        j                  j                  |       S r   )r   r  r2  r  r  r%  specialexpitr  s    r   reference_sigmoidr  q,  sI    ww2<<//Q^$%==q!!r   c           	          t        j                  | dk  | t        j                  t        j                  |             z
  t        j                  t        j                  |                     S r>  )r  rt  r  r  r  s    r   reference_logsigmoidr  x,  sL    88	A	BHHRVVAY	"&&!*	 r   c                     | dz  dz   }t        j                  |dd       }t        j                  |dkD  d|      j                  | j                        S )Nr   r4  r   r   )r  cliprt  r  r   )r   intermediater   s      r   reference_hardsigmoidr  ,  sG    q53;L
a&A88AE1a ''00r   c                    | j                   j                  dk(  rKt        j                  | t	        d      k(  t        j
                  t	        d      | j                         |       } t        j                  j                  |       }| j                   t        j                  k(  r|j                  t        j                        }|S )Nr
  r  r   rV  )r   kindr  rt  r[  r~	  r%  r  gammalnr\  r  )r   r  s     r   reference_lgammar  ,  s     	ww||sHHQ%-'%,agg)NPQR
--


"Cww"** jj$Jr   c                     | j                   t        j                  k(  r=t        j                  j                  | |      j                  t        j                        S t        j                  j                  | |      S rt  )r   r  r\  r%  r  multigammalnr  )r   r  s     r   r*	  r*	  ,  sO    ww"**}}))!Q/66rzzBB==%%a++r   c                     | |z  |k  }| j                         }t        j                  dt        j                  || |   z        z         |z  ||<   |S r   )r+  r  r  r  )rb  r  	threshold
non_linearrc  s        r   reference_softplusr!  ,  sP    *JZZ\FBFF4%
2C+C$D DELF:Mr   r  r  c                8    d }d }|dk(  r ||       S  ||       S )Nc                 F    | t         j                  j                  |       z  S rt  )r   r  cdf)Xs    r   	_gelu_refz!reference_gelu.<locals>._gelu_ref,  s    5::>>!$$$r   c                     t        j                  dt         j                  z        }|| dt        j                  | d      z  z   z  }d| z  dt        j
                  |      z   z  S )Nr   gHm?r  r4  r  )r  r  pir  powerr  )r%  M_SQRT_2_PIZs      r   _tanh_gelu_refz&reference_gelu.<locals>._tanh_gelu_ref,  sS    iiDGG,1x"((1c*:::;Qw#
*++r   r  r   )r%  r  r&  r,  s       r   reference_gelur-  ,  s+    %,
 fa  |r   r   r.  r  c                    |dk(  r!t        t        j                  |       dz         }| j                  d      t        j                  d| j
                  t        j                        |z  z   }t        j                  | j
                  |f| j                        }t        j                  ||d        |j                  g | j                  d S )Nr   r   r   rV  )rY  r  r  r  r  rO  ry  r&  r   putr<  )r.  r  idcsone_hots       r   reference_one_hotr2  ,  s    b"''!*q.)99R=299Qbhh?+MMDhh,AGG<GFF7D!7??(AGG(R((r   r  c                 ~    | |z
  dz  }|dk(  rt        j                  |      S |dk(  rt        j                  |      S |S )Nr   r  r  )r  r  r  )rb  r   r  ses       r   reference_mse_lossr5  ,  sA    
&.Q	BFwwr{	e	vvbz	r   rf  r  r  c                 &    t        | ||||      d   S r>  )reference_native_layer_norm)r  r  rQ  rR  r   s        r   reference_layer_normr8  ,  s    &s,<fdCPQRSSr   c                    t        j                  |      }| j                  d|      }|j                  dd      }|j	                  ddd      }||z
  t        j
                  ||z         z  }	|||	|j                  d      z   }	nC|||	|j                  d      z  }	n*|(|&|	|j                  d      z  |j                  d      z   }	| j                  t        |      z
  }
| j                  d |
 dt        |      z  z   } |	j                  | j                   |j                  |      dt        j
                  ||z         z  j                  |      fS )Nr   Trj  keepdimsr   rj  ddofr;  r   r  )	r  rE  r  r  r
  r  r$  rM  r<  )r  r  rQ  rR  r   feature_sizeinp_viewr  r
  Yrj  
stat_shapes               r   r7  r7  ,  s@   77+,L{{2|,H==b4=0D
,,BQ,
6C	DBGGC#I..A~$*R  		r""		 0r""T\\"%5588c*++D5D!D3/?+@$@@J199cii $,,z":S2773QT9CU=U<^<^_i<jjjr   c                 x   |2t        j                  t        | j                              j                  }t        j                  |      }| j                  d|      }t        j                  |dz  j                  dd      |z         }||z  }|||j                  d      z  } |j                  | j                   S )Nr   r   Tr:  )r   r	  r<   r   r   r  rE  r  r  r  r<  )r  r  rQ  r   r>  r?  rmsr@  s           r   reference_rms_normrD  ,  s    
{kk.syy9:>>77+,L{{2|,H
''8Q;$$"t$<sB
CC3Ar""199cii  r   r`  c           	         | }t        j                  | j                        dk7  r!| j                  | j                  d   |df      }|j	                  dd      }|j                  ddd      }||z
  t        j                  ||z         z  }|j                  | j                        }|^t        |j                        dkD  rAt        j                  |dgt        | j                  dz
        D 	cg c]  }	|	dz   	 c}	z         }||z  }|^t        |j                        dkD  rAt        j                  |dgt        | j                  dz
        D 	cg c]  }	|	dz   	 c}	z         }||z   }|S c c}	w c c}	w )Nr   r   Tr:  r<  r   )r  rE  r<  r  r  r
  r  rM  expand_dimsry  r$  )
r  r`  rQ  rR  r   r?  r  r
  r@  r  s
             r   reference_group_normrG  ,  sC   H	wwsyyQ;;		!j"=>==b4=0D
,,BQ,
6C	DBGGC#I..A			#))Aqww<!^^FQCeCHHWXLFY2Zs372Z,Z[FJqww<!>>$%STBU.V3sQw.V(VWDHH 3[
 /Ws   ,E(E-c                    |s|dk(  rdnd}t        | j                        dk(  r<t        j                  | |||      }|r|j	                  t        j
                        S |S | j                  d   dk(  r||j                         }t        j                  | j                         |j                         ||      }|r|j	                  t        j
                        n|}|j                  |j                        S |j                  }t        j                  | j                  d d       }t        d|      }	| j                  |d      |j                  |d      }} ||j                  |d      }|	D 
cg c]  }
| |
   	 }}
|	D 
cg c]  }
||
   	 }}
|	D 
cg c]  }
|||
   nd  }}
t        |||      D cg c]  \  }}}t        j                  ||||      ! }}}}|r-|D 
cg c]!  }
|
j	                  t        j
                        # c}
n|}t        j                  |      j                  |      S c c}
w c c}
w c c}
w c c}}}w c c}
w )Nr6  rB  r   )rC  rD  r   r   )rM  r<  r  searchsortedr  r}  flattenr  rE  ry  rN  stack)sorted_sequenceboundaryr5  r6  rC  rD  ret
orig_shape
num_splitssplitsrv  split_sequencesplit_boundarysplit_sorters_seqr/  s_sort	split_rets                     r   reference_searchsortedrX  -  s   7fD
?  !Q&oooxd6R'0szz"((#9c9			q	!Q	&^^%Fooo5579I9I9KRV_ef&/cjj"S{{8>>** ^^
WW_223B78
q*%$3$;$;J$KXM]M]^hjlMm^^J3F6<=/!,==/56!(1+66MSTf&8q	tCTT 03>>S_/`b b+%F __UADH b	 b?H;AQXXbhh';i	xx	"**:66 >6Tb;s   -H1?H6H;4$I "&Ic                      d d dd fd
}|S )Nr  )size_averager  r  c                    ||t        d       | |fi |}|dk(  rt        j                  |      S |dk(  rt        j                  |      S |S )NzbThe keyword arguments 'size_average' and 'reduce' are deprecated and not supported by this wrapperr  r  )r?  r  r  r  )rb  r   rZ  r  r  other_kwargsrc  r  s          r   wrapperz1loss_reference_reduction_wrapper.<locals>.wrapper#-  sb    #v'9t  E62\2776?"%66&>!Mr   r   )r  r]  s   ` r    loss_reference_reduction_wrapperr^  "-  s    /3DF  Nr   c                     | |z
  }t        j                  |      }||k\  }t        j                  |       }||   d|z  z
  ||<   ||    dz  d|z  z  || <   |S )Nr4  r   )r  r   
empty_like)rb  r   r  diffabs_diffabove_thresholdlosss          r   reference_smooth_l1_lossre  2-  sp    6>Dvvd|H$&O==D$_5d
BD!?"23q8AHED/	Kr   c                 f    t        |       t              dt        j                  ffd       }|S )z>Forwards unbiased/correction kwargs as NumPy's equivalent ddofr   c                     d|v rd|v rJ d|v rt        |j                  d            |d<   nd|v r|j                  d      |d<    | g|i |S )Nr7  r8  r=  )rY  r|  )r   r   r   gs      r   r]  z"reference_std_var.<locals>.wrapperB-  sf    &(\V-CDD J!78F6NV##ZZ5F6N$T$V$$r   )r}   r   nptNDArray)r
  r]  rh  s     @r   reference_std_varrk  >-  s5    !!$A
1X%3;; % % Nr   r(  c              +      K   dddif dddif d|v r`d|v r[dddif ddd	if t        j                  | j                        |j                  d         j	                         }dd|d
z  if yyyw)z:Generates unbiased/correction kwargs for std/var operatorsr   r7  TFr   r4  r8  r   r   r   N)r   r   r<  ri  rE  )r(  r   rh  s      r   generate_std_var_kwargsrm  O-  s     
D!
""
E"
## 9.L!$%%L!$%%QWW%fjj&78==?L%1*-.. /s   A6A8c           	   +     K   |rd}nd}t        t        t        dt        j                  |      g       |       |rd}nd}t        t        t        dt        j
                  |      g t        j                        |       y w)	Nzvmean\(\): could not infer output dtype. Input dtype must be either a floating point or complex dtype. Got: torch.int64zomean\(\): could not infer output dtype. Input dtype must be either a floating point or complex dtype. Got: Longr  r   r   zymean\(\): could not infer output dtype. Optional dtype must be either a floating point or complex dtype. Got: torch.int64zrmean\(\): could not infer output dtype. Optional dtype must be either a floating point or complex dtype. Got: LongrV  )rN   rM   r   r   ry  r   )r   r   r  r   r   r   s         r   error_inputs_meanro  ]-  s     (! K	VLbQ 
 (! 	vF++	  r	  c           	         | j                   }t        |      }||fD ]2  }|dk(  r|dv r| |cxk  r|k  rn t        d|  d|dz
   d|        |dk\  r|n||z   }|dk\  r|n||z   }|dk(  r|}||k  rt        d      t	        j
                  t        j                  |||dz    d      }|d | |fz   ||dz   d  z   }t        j                  | |      S )Nr   r  z4Dimension out of range (expected to be in range of [r	  r   z], but got z?flatten() has invalid args: start_dim cannot come after end_dim)
r<  rM  r  r?  re  r  r	  r	  r  r  )rb  r	  r	  r	  in_rankr  flatten_bit_dim	out_shapes           r   reference_flattenrt  }-  s   {{H(mG }A!w,G8q3J73JSU\T\S]]_`gjk`k_llwxywz{||} !Ag7W+<G&!^	91DI!|\]]&&x||XiRS5TVWXO)$'99HWq[\<RRI::eY''r   c              +   ~   K   t        t        t        f|||             t        t        d|||             y wrr  r  rC  s        r   sample_inputs_alias_copyrv  -  s6     
k1$eFR_`
aa
k"E&P]^
__r  )absolutez.In-place abs not supported for complex tensorsr	  test_inplace_gradtest_inplace_gradgradr	  test_inplace_forward_mode_ADTestSparseUnaryUfuncstest_inplacer	  r	  r	  test_out_arg_all_dtypes)r$	  r#	  r	  r&	  r  r	  r(	  assert_autodiffedsupports_sparsesupports_sparse_csrsupports_sparse_cscsupports_sparse_bsrsupports_sparse_bscr'	  )arccosr  r
  test_reference_numerics_normalr	  r	  test_fn_gradtest_method_gradtest_forward_mode_AD)r$	  r#	  r  r	  r&	  r  r~  r'	  r(	  r)	  r%	  r	  acosh)arccoshr  r"	  c                 v    | j                         s| dk  S t        j                  | t        j                        S )Nr   rV  )r   r   
zeros_liker  r  s    r   r  r  .  s+    AE UM]M]^_glgqgqMr r   	conditionsafe_val)r$	  r#	  r  r	  r&	  r  r%	  r  r'	  r(	  r)	  r	  reference_numerics_filter)r  c                    |dk(  rt        j                  | |      S t        j                  | t        j                  ||            S r   r  rO  rZ	  rb  r8  r  s      r   r  r  
.  s8    QVZ[Q[u9M r{{5%'@A r   TestBinaryUfuncstest_reference_numericsTestNNCOpInfotest_nnc_correctnessr	  test_numpy_refs'test_reference_numerics_extremal_values)
r#	  r	  r  r~  r  r(	  r'	  supports_two_python_scalarsr%	  r	  rU  c                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  rU  r  r   r   s      r   r  r  ).  s$    +;ELL<M<Ms+dUY+d]c+d r   r	  test_variant_consistency_jitTestNormalizeOperators"test_normalize_operator_exhaustiveTestCompositeCompliancetest_operatorTestFakeTensortest_fake_autocast	test_fake)
r@  r#	  method_variantr	  r  r  r  error_inputs_funcr  r	  r  test_variant_consistency_eagerTestMathBitstest_neg_viewtest_conj_viewtest_neg_conj_viewTestLazyOpInfotest_dispatched_to_lazytest_correctness test_correctness_with_reusing_irtest_out_warning)r	  r  r  r  is_factory_functionr  r  r	  cauchyc                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  cauchy_r  s      r   r  r  e.  %    +;ELL<P<PRU+gX\+g`f+g r   zoutput is non-deterministictest_compare_cpuzTest expects tensor inputTestVmapOperatorsOpInfotest_vmap_exhaustivetest_op_has_batch_rulez(make_traced() doesn't set seed properly!test_python_ref_executor
TestDecomp
test_quick)	r@  inplace_variantr	  r  r  #allow_cow_input_materialize_forwardr  r  r	  exponentialc                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  exponential_r  s      r   r  r  .  s%    +;ELL<U<UWZ+l]a+lek+l r   )
r@  r  r	  r  r  r  r  r  r  r	  	geometricc                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  
geometric_r  s      r   r  r  .  s%    +;ELL<S<SUX+j[_+jci+j r   
log_normalc                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  log_normal_r  s      r   r  r  .  s%    +;ELL<T<TVY+k\`+kdj+k r   normalin_placec                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  normal_r  s      r   r  r  .  r  r   test_noncontiguous_samples)rW  r@  r  r	  r  r  r  r  r  r  r	  rU
  c                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  uniform_r  s      r   r  r  .  s%    +;ELL<Q<QSV+hY]+hag+h r   )r@  r  r  r	  r  r  r  r  r  r  r  r	  r  test_type_promotiontest_errors)r#	  r	  r  r'	  supports_rhs_python_scalarr(	  r  r	  )rZ	  )r}  )r$	  r	  r  r~  r'	  r(	  r  error_inputs_sparse_funcsample_inputs_sparse_coo_funcsample_inputs_sparse_csr_funcsample_inputs_sparse_csc_funcsample_inputs_sparse_bsr_funcsample_inputs_sparse_bsc_funcc                V    t        j                  | t        j                  ||            S rt  )r  subtractrZ	  r  s      r   r  r  K/  s    UBKKX]_dLe9f r   )r  r
  #test_complex_half_reference_testingtest_comprehensive$test_reference_numerics_small_values)r#	  r$	  r	  r  r~  r'	  r(	  r  r  r%	  r	  addmmTestSchemaCheckModeOpInfotest_schema_correctness)
r	  dtypesIfROCMr&	  r  r~  r'	  r(	  gradcheck_nondet_tolr  r	  
decomposedz	aten::addzaten::mmr  )rW  r	  r&	  r  r~  r'	  r(	  r  autodiff_nonfusible_nodesr  r	  addmv~jth?TestInductorOpInfo)r	  r&	  r'	  r(	  r%	  r  addbmmc                 L   t        j                  t        j                  t        j                  || j                        |       t        j                  t        j                  ||j                        t        j
                  t        j                  ||      d                  S )NrV  r   ri  )r  rO  rZ	  asarrayr   r  matmul)rG   batch1batch2r  r  s        r   r  r  /  ss    "&&RZZX\dedkdkMlnoApACRZZX]ekeqeqMrMOVVTVT]T]^dflTmtuMvBx;y r   g'eRC>ga2U0*S?gC8
!?test_numpy_ref_mpsTestConsistencytest_output_matchgiUMu>test_outg~jtx?test_dtypes)r  r  )
r#	  r	  r&	  r  gradcheck_fast_moder'	  r(	  r%	  r	  r  baddbmm)
r	  r&	  backward_dtypesIfCUDAr  r  r'	  r(	  r%	  r  r	  dot)	r	  r&	  r  r~  r  r  r'	  r(	  r	  vdot)r	  r&	  r  r  r  r'	  r(	  r	  bmm)	r	  r&	  r  r~  assert_jit_shape_analysisr'	  r(	  r	  r  mv)r	  r&	  r  r~  r'	  r(	  r  addr)r	  r'	  r(	  r	  r  r  )r  )r	  r  r~  r'	  r(	  r	  r  reference_inputs_func)r	  r  r'	  r(	  r	  r  r  r$	  )arcsinr#	  r  r  r  r  r  r  r'	  r(	  r)	  r	  r&	  r  r~  r%	  gh㈵?gh㈵?g-C6
?r	  z&Skipped! sparse backward not supportedtest_sparse_fn_gradasinh)arcsinhr  )arctanatan2)arctan2test_jit_alias_remapping)r$	  r	  r  r'	  r(	  r)	  r  r	  atanh)arctanhg;On?allcloseTestCudaFuserOpInfo)r	  r#	  r  r'	  r  r	  r  broadcast_to)r#	  r	  r  r'	  r(	  check_batched_forward_gradr  r  z1.20.0)
r@  r#	  r	  r  supports_gradgradr~  r  supports_scriptingr  r	  broadcast_tensors)
r#	  r	  r  r  r  r  r'	  r(	  r	  r	  
block_diag)r	  r  r'	  r(	  r	  r	  r  bitwise_not)r#	  r	  r  operator_variantr  bitwise_left_shiftrL  z%Some inputs produce undefined outputs)
r@  r	  r&	  r  r  inplace_operator_variantr  supports_one_python_scalarr  r	  bitwise_right_shiftcombinations)r@  r	  r'	  r(	  r	  r  r  cartesian_prod)r@  r	  r  r'	  r(	  r	  r  r	  cdist)r	  r  r
  r~  r  c              #   H   K   | ]  }|t         j                  k7  s|  y wrt  r   r  rB  s     r   rw  rw  1       0aqPQUZU`U`P`0a   "")r#	  r	  r  r'	  r(	  r	  r  r  r  r  r  r~  cholesky)r	  r  gradcheck_wrapperr%	  cholesky_inverse)
r	  backward_dtypesr  r(	  r'	  check_batched_gradgradr  r  r%	  r	  cholesky_solvec                      t        | ddi|S Nr  r   rq   r  s     r   r  r  1      5WY]5ocd5ohn5o r   )r@  r	  r  r  r'	  r(	  r  r%	  r  )r	  r  r  r  r'	  r(	  r  unsafe_chunk)r	  r  r	  r  r'	  r(	  r  r  test_numpy_ref)	r#	  r	  r  r  r  r'	  r(	  r  r	  rG
  c                 &     | j                   |i |S rt  )rG
  r   r   r   s      r   r  r  1  s    t)Fv)F r   zaten::contiguous)
r@  r	  r  r  r'	  r(	  autodiff_fusible_nodesr  r  r	  sum_to_sizec                 &     | j                   |i |S rt  )r*  r(  s      r   r  r  1  s    )G)G r   )r@  r	  r  r  r'	  r(	  r  r	  clamp)r  )
r$	  r#	  r	  r  r  r  r~  r'	  r(	  r	  positive)
r#	  r	  r  r'	  r(	  r  r  r  r  r  r  )r#	  r	  r  r  r'	  r(	  r	  r  conj_physical_conj_physicalz2Skipped! conj_physical_ not implemented for sparse)decomp_aten_namer#	  r	  r'	  r(	  r  r  r  r  r  r	  resolve_conj)r	  r  r  r'	  r(	  r  resolve_negr   )r	  r'	  r  r(	  r  test_conjugated_samplesr   )r	  r  r'	  r(	  r  r  r	  r  rk  test_binary_ufuncs_mixed_dtype)r	  r'	  r(	  r  r  r	  copysign)r  r	  r  r)	  r  r'	  r(	  corrcoef)r	  r  r'	  r(	  r	  r	  r  )r	  r  r  )r	  r  )r#	  r	  r&	  r  r~  handles_large_floatsr'	  r(	  r)	  r%	  r	  )	r#	  r	  r&	  r  r~  r'	  r(	  r)	  r	  covtest_fn_gradgradzBarely failstest_fn_fwgrad_bwgradgMb?gǺV?)r	  r  r  r  r'	  r(	  r	  cross)r	  r  r  r(	  r  r'	  cumsum)r	  r  r'	  r(	  r	  r  cumprod)r	  r  r'	  r(	  r	  r  r  cummax)r2	  )r	  r  r'	  r(	  r	  r  cumminrD
  gffffff?)r#	  r%	  r	  r'	  r(	  r  r  r  r  r  r)	  ra  c                     t        j                  | |||t         j                  n||t         j                        S |      S rt  )r  ra  _NoValue)rb  r  r   r  r<  s        r   r  r  3  s=    wwuaW_bkk'bhbpSUS^S^} v|} r   )
r@  r#	  r	  r  r'	  r(	  r  r  r	  r	  )divideno_rounding_mode)r$	  rW  r	  r&	  r  r  r'	  r)	  r(	  r  r~  r  trunc_roundingc                     ddiddifS )Nrounding_moder  r   r   r   rb  s      r   r  r  -3      )73ow5OP r   test_working)r$	  rW  r	  r  r  r  r'	  r(	  r  r~  r  r%	  r	  floor_roundingc                     ddiddifS )NrF  r  r   rG  s      r   r  r  K3  rH  r   true_divide)r	  r&	  r'	  r)	  r(	  r  r  equalc                 (    | |k(  j                         S rt  )r  )rb  r8  s     r   r  r  p3  s    Ue^$8$8$: r   )r	  r  r#	  r  r  supports_tracingr	  )	r#	  r	  r&	  r  r	  r~  r'	  r(	  r)	  r  c                 $    | j                  |      S rt  )r  r  s     r   r  r  3  s    $++e"4 r   )	r@  r	  r  r  r'	  r(	  r  r  r	  	expand_asc                 $    | j                  |      S rt  )rQ  )r  r8  s     r   r  r  3  s    $.."7 r   )r@  r	  r  r'	  r(	  r  r  r	  expand_copy)r	  r  r'	  r(	  r  r  r	  diag)	r#	  r	  r&	  r  r'	  r(	  r	  r  r  
diag_embed)r	  r  r  r'	  r(	  r  r  r  r  diagonal_backward)aten_backward_namer	  r  r'	  r(	  r  r  r  diagonal_copy)r	  r'	  r(	  r  r  r  diagonal_scatter)r	  r  r'	  r(	  r  
alias_copy)r	  r  r'	  r(	  r  rk
  )r#	  r	  r  always_returns_boolr  r  r	  fmax)r@  r	  r  r'	  r(	  r  r	  fminfmodr  test_contig_vs_every_othertest_non_contig)
r#	  r	  r&	  r  r  r'	  r(	  r~  r  r%	  	remainder
TestOpInfoxlagMb@?)r#	  r	  r&	  r  r  r'	  r(	  r~  r  r  r  r  r%	  c                 2    t        j                  |       d   S r>  )r  modfr  s    r   r  r  J4  s    A r   )r#	  r	  r&	  r  r~  r'	  r(	  r  r  r  r  r  r	  stftz0Skipped! stft does not match the native function)r%	  r	  r  r  r'	  r(	  r	  check_batched_gradr  r  r  istftz1Skipped! istft does not match the native functiontest_backward)r	  r  r  r'	  r(	  r	  rg  r  r  r%	  r	  c              #   H   K   | ]  }|t         j                  k7  s|  y wrt  r  rB  s     r   rw  rw  4  r  r  flip)r@  r	  r  r  r'	  r(	  r  fliplr)r@  r	  r  r  r'	  r(	  r  flipudzsparse.sampled_addmm)r  r   r\  z!cusparseSDDMM was added in 11.2.1TestTags	test_tags"test_fake_crossref_backward_no_amp)r	  r  r  r%	  r	  z	sparse.mmr  test_fn_fail_gradgrad)	r	  rW  r  r  r
  r'	  r  r%	  r	  i0)z
special.i0r  r4  )	r#	  r$	  r%	  r	  r'	  r(	  r)	  r  r	  rt  )r#	  r	  r  r  r  r  r	  frexptest_batch_vs_slicingtest_contig_vs_transposedtest_non_contig_expandtest_variant_consistencyr  )r@  r#	  r	  r  r%	  r'	  r(	  r	  )zspecial.log1p)r   N)r#	  r$	  r  r	  r  r%	  r'	  r(	  r  r  r  r  r  r~  r)	  ge)greater_equal)r#	  r$	  r	  r  r[  r  r	  r  )r	  r  r%	  r  r	  gt)greaterimag)r#	  r	  r  r'	  r(	  r	  r	  gradient)	r	  r  r'	  r(	  r	  r	  r  r  r  isin)r	  r  r  kthvalue)r	  r  r'	  r(	  r  r  le)
less_equal)r#	  r$	  r	  r[  r  r	  linspace)r	  r  r  r  r  r  r  r	  tensor_overload)	r	  r  r  r  r  r  r  rW  r	  logspacer	  c                 2    t        j                  |       dk  S r
  r   r   r  s    r   r  r  E6      PUPYPYZ[P\_bPb r   )r#	  r  r	  r&	  r  r  r~  r'	  r(	  r)	  r%	  r	  r  c                 2    t        j                  |       dk  S r
  r  r  s    r   r  r  V6  r  r   )r#	  r  r%	  r	  r  r~  r'	  r(	  r)	  r	  r  c                 2    t        j                  |       dk  S r
  r  r  s    r   r  r  f6  r  r   )r#	  r  r	  r  r~  r'	  r(	  r)	  r%	  r	  r  ldexp)
r	  r  r'	  r(	  r  r)	  r  r  r	  r%	  	logaddexp)r	  r&	  r  r'	  r(	  r  r	  
logaddexp2)r	  r  r'	  r(	  r  logical_not)r#	  r%	  r	  r  r  r	  rc
  )less	lu_unpack)r@  r	  r  r'	  r(	  r	  r  lu)	r@  r	  r  r'	  r(	  r	  r  r%	  r	  lu_solvezTests different backward paths'test_floating_inputs_are_differentiable)r@  r	  r'	  r	  r(	  r  r	  r%	  masked_fill)r	  r  r  r  r'	  r(	  r	  r  masked_scatter)	r	  r  r  r  r'	  r(	  r	  r  r	  masked_selecttest_non_standard_bool_values)r	  r  r'	  r(	  r  r  r	  
matrix_exp)zlinalg.matrix_exp)
r	  r$	  r  rg  r  r'	  r(	  r	  r	  r  r  )zlinalg.matmul)r  z67470!)r$	  r	  r&	  r  r~  r  r  r'	  r(	  r	  r  r%	  r	  reduction_with_dim)rW  r	  r  r  r(	  r	  r'	  reduction_no_dim)rW  r	  r  r  r'	  r(	  r  r	  r.  r   )r	  r  r  r'	  r(	  r  r  	nanmedianvar_meangH׊>Mb`?)r	  r  r  r  r'	  r	  r(	  r%	  r7  )	rW  r	  r  r  r  r'	  r	  r(	  r%	  std_meanmeshgridvariadic_tensorsr  )r  TestOperatorSignatures(test_get_torch_func_signature_exhaustive)
rW  r#	  r	  r  r  r	  r  r(	  r'	  r	  list_of_tensorsrk  )rW  r	  r  r  r	  r~  r  r  r(	  r'	  r	  r%  )rW  r	  r  r  r(	  r'	  r	  )rW  r	  r  r'	  r(	  r  r	  quantile)r	  r  r'	  r(	  r	  nanquantile)r  binary)
r$	  rW  r	  r  r'	  r(	  r~  r#	  r  r	  )r	  r  r'	  r(	  r#	  r  r	  )r  rd  )r#	  r	  r  r  r[  r  
logical_orlogical_xor)r#	  r	  r  r  r[  r  r	  bitwise_and)r#	  r	  r  r  r  r  r  r	  
bitwise_orbitwise_xor	heavisidec                     | j                   t        j                  k(  rF|j                   t        j                  k(  r)t        j                  t        j                  | |            S t        j                  | |      S rt  )r   r  ry  r  )r.  r/  s     r   r  r  8  sY    892888KPQPWPW[][c[cPca!34 ikiuiuvwyzi{ r   )r#	  r	  r  r  r  r	  lcm)r#	  r	  r  r  gcd)r#	  r	  r  r  r	  isclose)r#	  r	  r  r  r  r  r  r	  r_  )zspecial.softmaxznn.functional.softmax_softmax_backward_data)r$	  	aten_namerW  r	  r  r  r  r~  r'	  r(	  r  
with_dtype)r  )
r$	  rW  r  r	  r  r  r~  r'	  r(	  r  )	r@  r  r	  r  r~  r'	  r(	  r  r	  znn.functional.softminsoftmin)r  r	  r  r  r~  r'	  r(	  r  )rW  r  r	  r  r~  r'	  r(	  r  znn.functional.cross_entropyz9FP16 corss_entropy cases have not been enabled on MPS yet)r	  r  r  r'	  r(	  r%	  r	  znn.functional.normalize)r	  r  r'	  r(	  r  c                 b    t        j                  | ||      t        j                  | ||      fS )Nr:  )r  r  r  )r   r   r4  s      r   r  r  '9  s7    27713QX3Y[][b[bcdkn  zA  \B  3C r   )r#	  r	  r  r%	  r  r  r  r	  z&Errors when storage_offset is includedzNumerous errors)r	  r  r  r'	  r(	  "check_inplace_batched_forward_gradr  r	  partial_viewsTestProxyTensorOpInfo(test_make_fx_symbolic_exhaustive_inplacezTest changes in memory layoutz)Modifies input strides and storage_offset)	rW  r	  r  r  r'	  r(	  r  r  r	  as_strided_copyTestDTensorOpstest_dtensor_op_db)r	  r  r'	  r(	  r  r  r	  as_strided_scatterz*Works for int64, fails for everything elsez3Fails in most cases, passes on LAZY for some reasonzFails on cuda + rocmz%Passes on complex128 and float64 onlyz-Expected: new_empty_strided is not comparable)r	  r  r'	  r(	  r  r  r  r	  native_layer_normzUnsupported on MPS for now)
r  r#	  r	  r  r  r  r(	  r  r  r	  native_batch_normtest_forward_ad)
r  r	  r  r'	  r(	  r  r  $allow_cow_input_materialize_backwardr  r	  _native_batch_norm_legit_batch_norm_with_update)
r@  r  r	  r'	  r(	  r  r  r  r  r	  znn.functional.cosine_similaritycosine_similarityg{Gz?)r  r	  r  r'	  r(	  r%	  r  z!nn.functional.adaptive_avg_pool1d)r	  r  r  r'	  r(	  r  r  r  z!nn.functional.adaptive_avg_pool2d)	r	  r  r%	  r  r'	  r(	  r  r  r  z!nn.functional.adaptive_avg_pool3d)r	  r&	  r  r%	  r  r  r'	  r(	  r  r  r  z!nn.functional.adaptive_max_pool1d)r	  r  r'	  r(	  r	  r  r  r  z!nn.functional.adaptive_max_pool2d)	r	  r%	  r  r'	  r(	  r	  r  r  r  z!nn.functional.adaptive_max_pool3dznn.functional.avg_pool1d
avg_pool1d)r  r  r  r'	  r(	  r	  r&	  r  r  r  r  znn.functional.avg_pool3d
avg_pool3d)r  r  r'	  r(	  r	  r&	  r  r  r  r  r	  z.nn.functional.binary_cross_entropy_with_logits binary_cross_entropy_with_logits)
r  r  r'	  r(	  r  r	  r  r  r  r	  znn.functional.relureluc                 6    t        j                  | dk  d|       S r>  r  rt  )r.  s    r   r  r  :  s    bhhqAvq!, r   )r  r#	  r  r  r  r  r  r  r	  r  r  r  r(	  r'	  znn.functional.conv_transpose1dr  r  )r  gkNuϵ>)r#	  r  r$	  r	  r&	  r  r'	  r(	  r  r  r%	  r	  r  r  )r  g{Gz?gMbp?TestDtypeCustomRulestest_custom_rules)r  r$	  r#	  r	  r  r&	  r  r  r'	  r(	  r  r  r%	  r	  r  znn.functional.conv_transpose3dr  )r  g-C6*?g
ףp=
?r?  zSkipped for ROCm!)r  r$	  r#	  r	  r&	  r  r'	  r(	  r  r  r  r%	  r	  r  )conv1dr  )r$	  r  r	  r&	  r  r  r  r'	  r(	  r  r  r%	  r	  supports_expanded_weightr  )conv2dr  r  r  r  r  r  r  gQ?zWorks on some configs!r  r  )conv3dr  gh㈵>TestOperatorstest_vjpvmap)r$	  r  r	  r&	  r  r  r  r  r  r'	  r(	  r%	  r	  r  r  znn.functional.group_norm
group_norm)r  )r  r$	  r#	  r	  r  r'	  r(	  r  r%	  r  r  r  znn.functional.instance_normrS  rT  )	r	  r  r  r'	  r(	  r  r%	  r  r  znn.functional.layer_norm
layer_normlayer_norm_backward)r  zBug in MPS backend!)r  rW  r$	  r#	  r	  r  r'	  r(	  r  r%	  r  r  znn.functional.rms_normrms_norm)r  )	r  r$	  r#	  r	  r  r'	  r(	  r  r  z!nn.functional.local_response_norm)r	  r&	  r  r'	  r(	  r%	  r  constant_pad_nd)r'	  r(	  r	  r  r  r	  znn.functional.padr  )rW  r  r  r'	  r(	  r	  r  r  r  )rW  r'	  r(	  r	  r  r	  r  r  r  replicate_negativezNot fully supported on MPSr  )	rW  r	  r  r'	  r(	  rg  r	  r	  r  znn.functional.hardswish	hardswishhardswish_backwardzaten::hardswish)r  rW  r  r~  r  r	  r
  r'	  r(	  r  r  znn.functional.unfoldim2colzInternal assert failed!)	r  r	  r&	  r  r  r'	  r(	  r  r	  znn.functional.interpolateinterpolater  )	r  rW  r  r(	  r'	  r	  r  r	  r  r  test_vmapjvpall_has_batch_ruletest_vmapvjp_has_batch_ruler  r  )r  rW  r(	  r  r'	  r	  r&	  r  r  r  r	  r  r  )r  rW  r  r'	  r(	  r	  r&	  r  r  r  r	  r  r  )
r  rW  r  r'	  r(	  r	  r  r  r	  r  r  )r  rW  r  r'	  r(	  r	  r&	  r  r  r	  r  znn.functional.upsample_bilinear)
r  r'	  r(	  r	  r&	  r  r  r  r	  r  _upsample_bilinear2d_aa)r@  r  r  r'	  r(	  r	  r&	  r  r  r  r	  znn.functional.soft_margin_loss)r5
  )r	  r  r'	  r  r  znn.functional.upsample_nearest)r  r'	  r(	  r	  r  r  r	  r  z!nn.functional.margin_ranking_loss)r	  r  r  r  r  r'	  r(	  znn.functional.multi_margin_loss)r	  r&	  r  r
  r  r  r  r%	  z$nn.functional.multilabel_margin_loss)r	  r&	  r  r
  r  r  r  znn.functional.leaky_relu
leaky_reluleaky_relu_backwardc                 Z    t         j                  j                  j                  | |d      S NTinplace)r   r]  r^  r  )r   negative_slopes     r   r  r  t=  s&    xx""--a-N r   zaten::leaky_relu)r$	  r  rW  r  r	  r  r  r~  r
  r  r'	  r(	  r  z)nn.functional.multilabel_soft_margin_lossg_LU?)r  r	  r  r'	  r(	  r%	  r	  znn.functional.avg_pool2d
avg_pool2d)	r  r  r'	  r(	  r	  r&	  r  r  r	  z#nn.functional.fractional_max_pool2dc                 f    t        t        j                  j                  j                  | g|i |S rt  )rC   r   r]  r^  fractional_max_pool2drb  r   r   s      r   r  r  =  -     3 3 I I5bSWb[ab r   )r  r  r'	  r(	  r@  r	  r	  r  r  r%	  r	  z#nn.functional.fractional_max_pool3dc                 f    t        t        j                  j                  j                  | g|i |S rt  )rC   r   r]  r^  fractional_max_pool3dr  s      r   r  r  =  r  r   )r  r  r'	  r(	  r@  r	  r	  r  r  r  r%	  r	  r  r0  zWorks on some configs)r  r  r  r'	  r(	  r	  r  r	  r&	  r	  r  r  r  r1  )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  r2  )r  r  r  r'	  r(	  r	  r  r	  r&	  r  r  r  r-  max_unpool1dtest_quick_core_backward)	r  r  r'	  r(	  r  r  r	  r  r	  r  )	rW  r  r  r'	  r(	  r  r  r	  r  r.  max_unpool2d)
rW  r  r  r'	  r(	  rg  r  r  r	  r  r/  max_unpool3d)	r  r  r'	  r(	  r  r  r	  r  r	  znn.functional.linear)r  r  r
  r  r	  r  r&	  r  r  r'	  r(	  r	  r  r%	  znn.functional.bilinear)r  r  r  r	  r&	  r%	  r	  r  r'	  r(	  r  znn.functional.gluglu)r  r  r  r	  r'	  r(	  r  znn.functional.eluelu_backwardc                     t        j                  d|       t        j                  d|t        j                  |       dz
  z        z   S NrI  r   r  r  r  r  r   r  r  s      r   r  r  >  s6    JJr1

2uq	A/F GG r   c                     ddiddifS Nr  r  r   rG  s      r   r  r  >      s^gs^, r   c                 Z    t         j                  j                  j                  | |d      S r  )r   r]  r^  elur   r  s     r   r  r  >  s&    HH##Aud#; r   )rW  r#	  r	  r'	  r(	  r  r~  r
  r  r  r  r%	  znn.functional.prelu_prelu_kernel_backwardc           	         t        j                  d|       t        j                  d|       | j                  dk(  r|z  z   S |j	                  t        d| j                        D cg c]  }|dk(  r|j                  nd c}      z  z   S c c}w )NrI  r   r   )r  r  r  r$  r  ry  rO  )r   rQ  rv  s      r   r  r  >  s    JJr1

2q 1vv{V!r r (.^cdeghgmgm^n7oYZqAvST8T7o(p!r r 7os   #B)rW  r#	  r	  r'	  r(	  r  r~  r
  r  r  r  r  r  r%	  znn.functional.celuc           	          t        j                  d|       t        j                  d|t        j                  | |z        dz
  z        z   S r  r  r  s      r   r  r  >  s<    JJr1

2uq5y8IA8M/N OO r   c                     ddiddifS r  r   rG  s      r   r  r   ?  r  r   c                 Z    t         j                  j                  j                  | |d      S r  )r   r]  r^  celur  s     r   r  r  ?  s&    HH$$Qt$< r   )r#	  r	  r'	  r(	  r  r~  r
  r  r  r  r%	  rrelu_with_noise_backwardc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  rrelur  s      r   r  r  ?  s+    UXX0066OOO r   c                 j    t        t        j                  j                  j                  | g|ddi|S Nr  Tr  r  s      r   r  r  ?  s1    UXX0066]]d]V\] r   c                 :    t        ddd      t        ddd      fS )NrI  r  Tr  )r  rG  s      r   r  r  ?  s"    "t4d2X\6]^ r   zDifferent noise)rW  r@  r  r	  r&	  r  r'	  r(	  r  r  r  r  r%	  r	  'skip_correctness_check_compile_vs_eagerznn.functional.seluc           	          dt        j                  d|       t        j                  ddt        j                  |       dz
  z        z   z  S )Ng2֫?rI  g,x?r   r  r   r  s     r   r  r  9?  sF    -

2q!BJJr3TXZX^X^_`XadeXe3f$gg r   c                 X    t         j                  j                  j                  | d      S r  )r   r]  r^  selur  s    r   r  r  D?       %(("5"5":":1d":"K r   g;On?)
r#	  r	  r'	  r(	  r  r~  r
  r  r  r%	  ztorch._scaled_mmzRequires CUDA SM >= 8.9)r  r	  r&	  r  r'	  r  r%	  r	  z$torch.ops.aten._safe_softmax.default)
r	  r  r  r~  r'	  r(	  r  *supports_cow_input_no_materialize_backwardr%	  r	  z*nn.functional.scaled_dot_product_attentionc                  d    t        t        j                  j                  j                  g| i |S rt  )rC   r   r]  r^  scaled_dot_product_attentionr  s     r   r  r  r?  s+     3 3 P PbSWb[ab r   )r  r   Skippedz0output is non-deterministic (when dropout_p > 0)zThis is z=test_cow_input does not work with efficient attention on ROCMtest_cow_input)	r@  r  r	  r  r'	  r(	  r	  r%	  r	  z'torch.ops.aten._flash_attention_forwardz-This platform doesn't support Flash Attention)
r  r	  r&	  r  r  r(	  r'	  r	  r%	  r	  z+torch.ops.aten._efficient_attention_forwardz1This platform doesn't support efficient attentionz?Efficient attention on ROCM doesn't support custom_mask_type==2)r  r	  r&	  r  r  r(	  r'	  r	  skip_cow_input_backwardr%	  r	  znn.functional.silusilu_backwardc                 :    | dt        j                  |        z   z  S r   r  r  r  s     r   r  r  ?  s    Q!bffaRj.%9 r   c                 X    t         j                  j                  j                  | d      S r  r   r]  r^  silur  s    r   r  r  ?  r  r   z
aten::silu)rW  r#	  r	  r'	  r  r(	  r~  r  r  r%	  r	  r  c                 :    | dt        j                  |        z   z  S r   r  r  s     r   r  r  ?  s    RVVQBZ  r   c                 X    t         j                  j                  j                  | d      S r  r  r  s    r   r  r  @  r  r   )rW  r#	  r	  r&	  r'	  r  r~  r  r  r%	  r	  znn.functional.hardsigmoidhardsigmoid_backwardr  )rW  r#	  r	  r  r~  r
  r'	  r  r  r%	  r	  znn.functional.logsigmoidlog_sigmoidlog_sigmoid_backward)r  rW  r#	  r	  r  r~  r'	  r(	  r
  r%	  r	  znn.functional.mishmish_backwardc                 D    | t        j                  t        |             z  S rt  )r  r  r!  r  s    r   r  r  R@  s    a"''"4Q"788 r   )rW  r#	  r	  r'	  r(	  r  r~  r
  r  r  r%	  znn.functional.softsignc                 8    | t        j                  |       dz   z  S r   r  r   r  s    r   r  r  a@  s    a266!9q=) r   )r#	  r	  r&	  r'	  r(	  r  r~  r
  r  r%	  r	  znn.functional.tanhshrinkc                 2    | t        j                  |       z
  S rt  )r  r  r  s    r   r  r  s@  s    a"''!*n r   gMb?ga2U0*C?z#Fails on some jobs works on others!c                     | j                         rt        | t        j                  dz  z        S | j	                  dt
        j                        S Ny              ?FrV  r   r   r  r(  
new_tensorr   r  r  s    r   r  r  @  s@    $%LLN ".a477T>.B!C 89URWR\R\8] r   )r#	  r	  r'	  r(	  r  r~  r
  r  r%	  r	  r  znn.functional.thresholdc                 h    t        j                  | |k  ||       j                  | j                        S rt  )r  rt  r  r   r   r  r  s      r   r  r  @  s)    i(J(Q(QRSRYRY(Z r   c                 \    t         j                  j                  j                  | ||d      S r  )r   r]  r^  r  r-  s      r   r  r  @  s(    HH))!Yt)L r   c                 b    t         j                  d      ddt         j                  d      ddfS )Nz	0x1.3ap-3r
  )r  r  )r[  fromhexrG  s      r   r  r  @  s5    %--P[B\=?5ABG--P[B\=?5A4B r   )
r#	  r	  r  r'	  r(	  r~  r
  r  r  r  z!nn.functional.triplet_margin_loss)r  r  r	  r  r'	  r(	  z/nn.functional.triplet_margin_with_distance_loss)r
  )r  r  r	  r  r'	  r(	  r	  	nextafter)r	  r  r  r  c                 &     | j                   |i |S rt  )r  r(  s      r   r  r  @  s    daddD&;F&; r    test_make_fx_symbolic_exhaustive)r@  r	  r'	  r(	  r  r  r	  topk)r	  r'	  r(	  r  r  znn.functional.batch_norm
batch_norm)
r  r	  r  r'	  r(	  r  r  r  r  r	  without_cudnn)rW  r  r	  r&	  r  r'	  r(	  r  r  r%	  r	  r  z"nn.functional.binary_cross_entropybinary_cross_entropy_backward)rW  r  r	  r&	  r  r  r  r'	  r(	  r%	  r	  igamma)ztorch.special.gammainc)r	  r$	  r&	  r  r  r	  igammac)ztorch.special.gammaincc)r	  r$	  r&	  r  r  r	  znn.functional.softshrink
softshrinksoftshrink_backward)r  rW  r	  r'	  r(	  r~  r  r  znn.functional.hardshrink
hardshrinkhardshrink_backwardzaten::hardshrink)r  rW  r	  r~  r  r'	  r(	  r  znn.functional.hardtanhhardtanhhardtanh_backwardzaten::hardtanh)r  rW  r	  r  r  r~  r  r  r  r'	  r(	  r  znn.functional.gelugelugelu_backwardz
aten::gelu)r  rW  r#	  r  r  r~  r  r	  r
  r'	  r(	  r  r	  znn.functional.relu6relu6zaten::relu6)r  r	  r  r~  r  r'	  r(	  r  mm)r	  r&	  r~  r'	  r(	  r  r	  r  )r@  r	  r'	  r(	  r	  r  mvlgamma_p_1c                     ddiddifS )Nr  r   r  r   rG  s      r   r  r  B      c1XPSUVxDX r   r+	  mvlgamma_p_3r  c                     ddiddifS )Nr  r   r  r   rG  s      r   r  r  B  rF  r   mvlgamma_p_5r  c                     ddiddifS )Nr  r   r  r   rG  s      r   r  r  	B  rF  r   ne)	not_equalr  )r  )r  r  )r	  r  r'	  r(	  r  r  r  r	  narrow_copy)	r	  r  r'	  r(	  r  r  r  r  r	  	view_copyc                 J    t        j                  | |      j                         S rt  )r  r  r+  )r   newshapes     r   r  r  ;B  s    2::a#:#?#?#A r   )	r	  r#	  r  r'	  r(	  r  r  r  r	  )negative)r$	  r#	  r	  r  r'	  r(	  r  r  r  r  r  r~  dist)r@  r	  r  r  r'	  r	  r(	  r  outer)ger)r@  r$	  r	  r'	  r(	  r	  r  ormqr)	r@  r	  r  r'	  r(	  r  r  r%	  r	  rT  )r#	  r	  r  r~  r)  r  r  r'	  r(	  supports_varargsr  r  permute_copy)
r	  r  r~  r  r'	  r(	  rV  r  r  r	  test_scalar_support$test_reference_numerics_large_values)r	  r&	  r#	  r  r  r  r  r'	  r(	  r~  r  r  r  r%	  r	  float_power)r#	  r	  r)	  r  r'	  r(	  r  r  r  r%	  r	  qr)r@  r	  r  r'	  r(	  r  r%	  rad2degr  roll)r#	  r	  r  r  r'	  r(	  r  r%	  rot90)r	  r  r  r  r'	  r(	  r  )zspecial.roundc              #   H   K   | ]  }|t         j                  k7  s|  y wrt  r  rB  s     r   rw  rw  7C  r  r  )r#	  r$	  r	  r'	  r(	  r	  r  r  r  r  r  r~  
decimals_0c                     ddiddifS )Ndecimalsr   r   rG  s      r   r  r  IC      
AQ[]^P_>` r   rb  r  )
r#	  rW  r$	  r	  r  r  r'	  r(	  r~  r  
decimals_3c                     ddiddifS )Nrb  r   r   rG  s      r   r  r  UC  rc  r   )r#	  rW  r$	  r	  r&	  r  r  r	  r'	  r(	  r~  r  decimals_neg_3c                     ddiddifS )Nrb  r  r   rG  s      r   r  r  oC  s    
B?OR\^`Qa>b r   r  )r#	  r	  r&	  r~  r7  r  r  r  r  r  r'	  r(	  r)	  r	  r%	  r  )zspecial.sinc)r#	  r$	  r	  r7  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	  sgn)r#	  r	  r  r  r'	  r(	  r  r  r  r  r  r	  r  )r	  r  r'	  r(	  r  r)  r  r~  split_with_sizesr9	  )r0  rW  r	  r  r'	  r(	  r  unsafe_split)	r	  r  r'	  r(	  r  r)  r  r~  r	  )r	  r  r)  r  r  r'	  r(	  r~  split_with_sizes_copytest_out_requires_grad_error)r	  r  r  r'	  r(	  r	  __radd__)r@  r	  r  r	  r~  r'	  r(	  r  __rdiv__z	aten::mulzaten::reciprocal)r@  r	  r)	  r  r  r  r	  r'	  r(	  r~  r  __rmul____rand__)r@  r	  r  r  r'	  r	  __ror____rxor____rmatmul__)r@  r	  r&	  r~  r  r  r  r'	  r(	  r	  r%	  r	  __rmod__zaten::remainder)r@  r	  r&	  r  r  r'	  r(	  r  r	  r~  r  __rpow__z	aten::pow)
r@  r	  r  r  r'	  r(	  r  r	  r~  r  __rsub__z
aten::rsub)	r@  r	  r'	  r(	  r  r  r	  r~  r  rsub)r	  r'	  r(	  r  r  r~  r  selectselect_backward)rW  r	  r  r  r'	  r(	  r  select_scatterr  )	r@  r	  r  r  r'	  r(	  r  r  r  slice_scatter)r	  r  r  r'	  r(	  r  signbit)r#	  r	  r  r  r  r  r  r  c                 @    t        | t        j                  dz  z        S )Nr4  )r   r  r(  r  s    r   r  r  
E  s    <TWWs]8K+L r   )r#	  r	  r&	  r%	  r~  r'	  r(	  r  r  r  r  r  r)	  r	  r  rW  tanh_backward)znn.functional.tanhr  c                     | j                         rt        | t        j                  dz  z        S | j	                  dt
        j                        S r)  r*  r  s    r   r  r  ,E  sA    /0||~ -9dggn9M,N CD<<PU]b]g]g<Ch r   tensor_split)r#	  r	  r&	  r  r'	  r(	  r	  r  hsplit)r	  r  r'	  r(	  r	  r  r  vsplitdsplittriangular_solvec                      t        | ddi|S r"  r#  r  s     r   r  r  _E  r$  r   r  gTqs*>)	r@  r	  r  r  r'	  r(	  r  r%	  r	  )fixc              #   H   K   | ]  }|t         j                  k7  s|  y wrt  r  rB  s     r   rw  rw  E  r  r  )r$	  r#	  r	  r'	  r(	  r  r	  r  r  r  r  r~  exp2)zspecial.exp2)r$	  r#	  r	  r'	  r(	  r)	  r	  )zspecial.expm1)r$	  r#	  r	  r'	  r(	  r  r  r  r  r  r)	  r~  r	  
nan_to_numc                     |t         j                  u r]i t        j                  t         j                        j                  t        j                  t         j                        j                  dfS i i fS )N)posinfneginf)r   r  r	  r&  r%  rG  s      r   r  r  E  sf     u~~- @BJO++V[VdVdJeJiJiJO++V[VdVdJeJiJi@k?l  578 r   )r#	  r	  r&	  r'	  r(	  r  r	  r  )r#	  r	  r~  r'	  r(	  r)	  r	  c                 R    t        j                  t        j                  |             S rt  )r  r  r  r  s    r   r  r  E  s    rwwqz!: r   )
r#	  r  r	  r&	  r%	  r~  r'	  r(	  r)	  r	  gQ?)r#	  r  r  r	  r&	  r~  r'	  r  r  r  r  r(	  r)	  r%	  r	  square)r#	  r	  r%	  r'	  r(	  r	  )r	  r&	  r  r'	  r(	  r~  angle)r#	  r	  r&	  r%	  r  r  r'	  r(	  r  r  r  r  supports_complex_to_floatr	  isfinite)r#	  r	  r  r  isinf)	r#	  r	  r  r  r  r  r  r  r  isposinfisneginfisrealisnaneinsumc                 .    t        j                  ||       S rt  )r   r  )r5  equations     r   r  r  ]F  s    Xw(G r   )
r@  r	  r&	  r  r  r'	  r(	  r	  r  r	  svd)r@  r	  r  r  r'	  r(	  r	  rg  r  r%	  r	  svd_lowrankc                  "    t        d g| i |S )Nc                 H    t        j                  | |j                  z  fi |S rt  )r   r  mTr.  r/  r   s      r   r  z<lambda>.<locals>.<lambda>F      e&7&7ADD&KF&K r   rB   r  s     r   r  r  F      &6K''' r   zSee comment above)r@  r	  r  r  rg  r  r	  r(	  r'	  r  r%	  r	  pca_lowrankc                  "    t        d g| i |S )Nc                 H    t        j                  | |j                  z  fi |S rt  )r   r  r  r  s      r   r  z<lambda>.<locals>.<lambda>F  r  r   rB   r  s     r   r  r  F  r  r   g{Gz?	test_grad)r@  r	  r  r  r	  rg  r  r'	  r(	  r  r%	  r	  polar)r	  r'	  r  r  r	  	polygammac                 0    t        j                  || fi |S rt  r   r  r   r  r   s      r   r  r  F  s    U__Q-LV-L r   polygamma_n_0c                     ddiddifS )Nr  r   r   rG  s      r   r  r  F  s    Qx#q>R r   c                 V    | dk  | | j                         z
  j                         dk  z  S Nr   r  r  r   r  s    r   r  r  F  s1    QRUXQX^_bcbibibk^k]p]p]ruy]yPz r   )r@  rW  r#	  r	  r&	  r'	  r(	  r)	  r  r	  r  r  c              #     K   | ]  t        d d d t        rt        ndt        t        j
                  t        j                        t        t        j
                  t        j                  t        j                        dddt        t        t        t        j                  t        dd      i      d      t        t        t        j                  t        d	d
      t        j                  t        dd      i      ddt              ft        t        j                  d      d      t        t        j                  d      d      t        t        j                  d      d      t        t        j                  d      d      t        t        j                  d      d      t        t        j                  d      dd      t        t        j                  d      dd      ffdt!        d d              yw)r  c                 0    t        j                  || fi |S rt  r  r  s      r   r  z<genexpr>.<lambda>F  s    uq!/Nv/N r   polygamma_n_NTr  r
  r  r	  r  r   r
  r  rx  r	  r	  r	  r	  r  r	  r	  r	  c                     didifS )Nr  r   )r   r   rb  n_s      r   r  z<genexpr>.<lambda>G  s    #rSRTI@V r   c                 V    | dk  | | j                         z
  j                         dk  z  S r  r  r  s    r   r  z<genexpr>.<lambda>G  s1    STWZSZ`adedkdkdm`m_r_r_tw{_{R| r   r   r  )r@  rW  r#	  r	  r&	  r'	  r(	  r)	  r  r%	  r	  r  r  )ri   r:   r   r   r   r  r  rl  r   rL   r*   r   r+   r8   r	  r	  rP   )ru  r  s    @r   rw  rw  F  s      @ A [N)5bT':0:,)%**ennE"/

EJJ"W)-,0+/(?%&7QU\`Ha8b&cevw%&7RU\`Ia9>QU\`Ha9c 'd&79Y0:<! &hmmJ&?AST%hmmJ&?AST%hmmJ&?K%hmmJ&?AYZ%hmmJ&?N%hmmJ&?ARTvw%hmmJ&?ARTst
 $W/=H|GH0J=K K  s   G7G:r  ravelunravel_index)r#	  r	  r  r  r  r  )r	  r  r  r  r  r'	  r(	  
reshape_asc                 $    | j                  |      S rt  )r  r   r8  s     r   r  r  :G  s    q||E2 r   )r	  )	r@  r	  r  r  r  r  r'	  r(	  r	  rf  c                 $    | j                  |      S rt  )rf  r   r<  s     r   r  r  FG  s    qvve} r   )
r@  r	  r  r'	  r(	  r  r  r  r  r	  view_asc                 $    | j                  |      S rt  )r  r  s     r   r  r  VG  s    qyy/ r   )	r@  r	  r  r'	  r(	  r  r  r  r	  
atleast_1d)r	  r  r  r'	  r(	  r	  r  r	  
atleast_2d)r	  r  r  r'	  r(	  r	  r	  r  
atleast_3drJ  )r	  r#	  r  r'	  r(	  r	  r  r  	unflatten)r@  r	  r  r'	  r(	  r  column_stack)r	  r'	  r(	  r	  r  pinverse)r@  r	  rg  r  r'	  r(	  r  r  r  r%	  r	  rc	  )r	  r&	  r  r  r'	  r(	  r  rH  test_fake_crossref_backward_amp)rN  )r	  r  r'	  r(	  r	  r	  r  r  rG  )r	  r  r'	  r(	  r	  r  r  r  index_select)	r	  r  r  r  r  r'	  r(	  r  r  rF  )
r	  r  r'	  r(	  r	  r  r  r  r	  r  c              #      K   | ]o  }t        d |t        t        j                  t        j                        t        t        t        j                  t        dd      i      dd      fdt               q yw)	index_reducer  r  r  r  r  T)rW  r	  r	  r  r  N)	rQ   r   r   r\  r  rL   r*   r+   r[  )ru  reduction_types     r   rw  rw  G  sr      	G " ^-!%--@/TX@Y0Z[24HJ  :	 	 	GrB  )r  rE  r  r  _unsafe_masked_index)r	  r  r  r  r'	  r(	  r  r	  #_unsafe_masked_index_put_accumulater  )	r	  r  r  r  r'	  r(	  r%	  r  r	  __getitem__)
r	  r  r  r'	  r(	  r  r  r@  r	  r  	index_put)	r	  r  r  r'	  r(	  r	  r  r  r	  r  )r	  r&	  r  r'	  r(	  r	  r?  z+Output order is undefined when sorted=False)r	  r  r  r  r	  unique_consecutiver/  )r	  r  r'	  r(	  r	  r  r  take)r	  rg  r'	  r(	  r  r  scatter)r	  r'	  r(	  r  r  r  c                 &     | j                   |i |S rt  )r  r(  s      r   r  r  yH  s    jajj$&A&&A r   )r@  r	  r  r  r	  r  c                 &     | j                   |i |S rt  )r  r(  s      r   r  r  H      faffd&=f&= r   )r@  r	  r  r  r  r	  bytec                 &     | j                   |i |S rt  )r  r(  s      r   r  r  H  r  r   z2Overflow when downcasting signed type is undefinedcharc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  H  r  r   r:  c                 &     | j                   |i |S rt  )r:  r(  s      r   r  r  H  s    hahh&?&? r   )r@  r	  r  r  r'	  r(	  r	  r[  c                 &     | j                   |i |S rt  r  r(  s      r   r  r  H      gaggt&>v&> r   rl  c                 &     | j                   |i |S rt  )rl  r(  s      r   r  r  H  r  r   rY  c                 &     | j                   |i |S rt  )rY  r(  s      r   r  r  H  s    eaeeT&<V&< r   r  c                 &     | j                   |i |S rt  )r  r(  s      r   r  r  H  r  r   shortc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  H  r  r   cdoublecfloatchalfc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  I  r  r   r`  z&Expected: empty_like is not comparable)r	  r  r  r  r  r	  r  )r	  r  r  r  r  r  r  r  r  r  r	  r  )r	  r  r  r  r	  rM  c                  <    t        t        j                  g| i |S rt  )rC   r   rM  r  s     r   r  r  nI  s    &6u{{&TT&TV&T r   )r	  r@  r  r  r  r	  
randn_likec                 >    t        t        j                  | g|i |S rt  rC   r   r  r  s      r   r  r  I  !     0 0#GGG r   z5Expected: randn_like is not comparable between dtypes)r	  r@  r  r  r  r  r  r  r  r  r  r	  r  c                 >    t        t        j                  | g|i |S rt  r  r  s      r   r  r  I  r  r   r+  c                  <    t        t        j                  g| i |S rt  )rC   r   r+  r  s     r   r  r  I  s    ??? r   test_multiple_devicesrandint_likec                 >    t        t        j                  | g|i |S rt  )rC   r   r  r  s      r   r  r  I  s!     2 2CI$I&I r   	full_likerm	  c                 &     | j                   |i |S rt  )rm	  r(  s      r   r  r  I      d)Ef)E r   )r@  r	  r  r  r	  r  new_onesc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  I      T)DV)D r   ro  )r@  r  rV  r  r	  r  r  r	  r&  )r@  r  r  r	  r  r  r	  r  	new_emptyc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  +J  r  r   z%Expected: new_empty is not comparablenew_empty_stridedc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  KJ  s    )<)<)<d)Mf)M r   test_make_fx_exhaustivetest_make_fx_fake_exhaustiveempty_stridedc                 >    t        t        j                  | g|i |S rt  )rC   r   r  r  s      r   r  r  xJ  s!    +;E<O<OQT+fW[+f_e+f r   z!Expected: empty is not comparable)r@  r	  r  r  r  r	  rm  )r	  r  r  r	  r  )r	  r  r  r  r  r	  empty_permutedz*Expected: empty_permuted is not comparablescalar_tensor)r	  r  r  r  r	  new_fullc                 &     | j                   |i |S rt  )r  r(  s      r   r  r  K  r  r   multinomialc                 >    t        t        j                  | g|i |S rt  )rC   r   r   r  s      r   r  r  K  s!     1 13HHH r   c                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  r   r  s      r   r  r  K  s%     8 8#OOO r   )r@  r  r	  r  r  r  r	  r  c                 >    t        t        j                  | g|i |S rt  rC   r   r  r  s      r   r  r  0K  s    cCDCFC r   zGradients are incorrect!)r@  r  r	  r&	  r  r  r	  number_meanc                 @    t        t        j                  || g|i |S rt  r  )r   r  r   r   s       r   r  r  MK  s!    dCI$I&I r   TestEagerFusionOpInfoTestDeviceUtilstest_device_mode_ops)rW  r@  r  r	  r&	  r  r  r	  	bernoullic                 >    t        t        j                  | g|i |S rt  )rC   r   r
  r  s      r   r  r  lK  s    FtFvF r   c                 R    t        t        j                  j                  | g|i |S rt  )rC   r   r}  r
  r  s      r   r  r  pK  s%     6 6MdMfM r   )
r@  r  r  r	  r  r'	  r(	  r  r  r	  scatter_add)r	  r  r  r'	  r(	  rK  )r	  r  r~  r'	  r(	  r	  
_chunk_cat)r	  r  r  r  r  hstackhypot)r	  r&	  r'	  r(	  r  	histogram)r	  r&	  r  r  r	  histogramdd)r	  r&	  r  r  r  r	  histc)r	  r&	  r  r  r  r	  bincount	bucketizezExpected failure!)r	  r&	  r  r  r  r  r	  rI  )r	  r&	  r  r  r#	  r	  rl	  )concatrn  )r#	  r$	  r	  r  r  r  r  r'	  r(	  r	  r~  r	  unbind)r	  r#	  r  r  r'	  r(	  r
  r  unbind_copy$test_make_fx_symbolic_exhaustive_out)
r	  r#	  r  r  r'	  r(	  r
  r  rg  r	  vstack)	row_stack)r$	  r	  r  r  r'	  r(	  r	  dstack)r	  r  r  r'	  r(	  r	  unfoldc                       | j                   | S rt  )r  r   r   s     r   r  r  CL  s    xqxx r   )r@  r	  r  r  r  r'	  r(	  r  r	  r	  r  unfold_copy)	r	  r  r  r  r'	  r(	  r  r	  r  r7  )r	  r&	  r  r'	  r(	  r  movedim)moveaxis)	r$	  r	  r  r'	  r(	  r	  r  r  r  renormzInconsistent accuracy)r	  r  r  r'	  r(	  r	  r  c                 $    | j                  |      S rt  r  )r   r  s     r   r  r  L  s    QXXd^ r   )	r@  r#	  r	  r  r  r'	  r(	  r  r	  r  )r#	  r	  r  r~  r)  r  r  r'	  r(	  r  r	  r  multiple)r#	  rW  r	  r  r~  r)  r  r'	  r(	  r  r	  r  squeeze_copy)
r#	  r	  r  r~  r'	  r(	  r  r	  r  r	  r,  r  zNo fill_ op)
r#	  r  r  r  r'	  r(	  r	  r	  r  r	  r	  c                 @    | j                         j                  |      S rt  )r  r	  r  s     r   r  r  L  s    qwwy007 r   zAllowed exception)	r@  r  r  r  r	  r  r  r	  r  r	  c                 J    t        j                  | j                         |      S rt  )r   r	  r  r  s     r   r  r  L  s    u//	5A r   zAllowed exemption)r@  r  r  r	  r  r  r	  r  take_along_dim)	r	  r&	  r  r'	  r(	  r	  r  r  r%	  tile)r#	  r	  r  r  r'	  r(	  r  trapzgH}M?g"uq?)r	  r  r'	  r(	  r	  r%	  r  	trapezoidcumulative_trapezoid)r	  r'	  r(	  r	  r  r%	  r  r  )r	  r  r'	  r(	  r	  r  r  r~  r)  r  r  unsqueeze_copy)r	  r  r'	  r(	  r	  r  r  r~  r)  r  r  r	  xlogy)zspecial.xlogy)r$	  r	  r)	  r'	  r(	  r  r  r  c                 H    t        j                  | j                               S rt  )r   r  r  r  s    r   r  r  `M  s    AGGI. r   )r@  r  r  r	  r  r  r'	  r(	  r
  r	  r  	logsumexp)zspecial.logsumexp)r$	  r	  r~  r'	  r(	  r  r  r  trace)r	  r&	  r  r  r  r'	  r(	  r  r	  )swapdimsr  )	r#	  r$	  r  r	  r  r'	  r(	  r  r  transpose_copy)r  r	  r  r'	  r(	  r  r  r	  Tc                     | j                   S rt  )r5  r  s    r   r  r  M  
     r   )r@  r	  r  r'	  r(	  r	  r  r  r  c                     | j                   S rt  )r  r  s    r   r  r  M  r7  r   )r@  r	  r  r'	  r(	  r	  r	  r  r  c                     | j                   S rt  )r  r  s    r   r  r  M  
     r   )r@  r	  r  r  r'	  r(	  r	  r  r  c                     | j                   S rt  r  r  s    r   r  r  M  r:  r   )adjoint)
r@  r$	  r	  r  r  r'	  r(	  r	  r	  r  tril)r	  r'	  r(	  r  r  triutriu_indicesc                 Z    t        j                  t        j                  | ||      |      S r  )r  r~	  r?  hwofsr   r   s        r   r  r  M  "    BHHR__]^`cefMgotDu r   )r	  r  r#	  r  r  r	  tril_indicesc                 Z    t        j                  t        j                  | ||      |      S r  )r  r~	  rF  rA  s        r   r  r  M  rE  r   kron)r	  r&	  r  r  r'	  r(	  r  r%	  inner)r	  r&	  r  r'	  r(	  r	  r  	tensordot)r	  r&	  r  r'	  r(	  r	  r  r	  	to_sparsec                       | j                   | S rt  )rK  r  s     r   r  r   N  s    {q{{D1 r   r  z*csr.to_sparse(1) not implemented. Skipped!TestSparseCSRtest_sparse_csr_consistency)r@  r  r	  r  r  r  r  r  rg  r  r	  logcumsumexpgמY?)r	  r  r  r'	  r(	  r	  r  r  )zspecial.expitznn.functional.sigmoidsigmoid_backwardc                     | j                         rt        | t        j                  dz  z        S | j	                  dt
        j                        S )Nr  FrV  r*  r  s    r   r  r  jN  sA    /0||~ -9dggl9K,L CD<<PU]b]g]g<Ch r   )r$	  rW  r#	  r%	  r	  r	  r&	  r'	  r(	  r)	  r~  r  digamma)zspecial.psizspecial.digamma)r#	  r$	  r%	  r	  r&	  r'	  r(	  r)	  )zspecial.erf)r#	  r$	  r%	  r	  r	  r~  r  r  r  r  r  r  r'	  r(	  r)	  )zspecial.erfc)r#	  r$	  r%	  r	  r~  r'	  r(	  r)	  erfinv)zspecial.erfinvz1.4.0)r#	  r$	  r%	  r	  r&	  r  r  r  r  r'	  r(	  r)	  r  r	  znn.functional.smooth_l1_loss)
r#	  r  r	  r  r&	  r  r  r'	  r(	  r	  znn.functional.l1_lossc                 2    t        j                  | |z
        S rt  r&  rb  r   s     r   r  r  N  s    266%RX.CY r   )r#	  r  r  r	  r  r'	  r(	  r	  )zspecial.gammalnc                     | dk  S r
  r   r  s    r   r  r  N  s    PQTWPW r   )
r#	  r$	  r%	  r	  r&	  r'	  r(	  r)	  r	  r  logdet)r	  r  r'	  r(	  r  r%	  rY
  )zspecial.log_softmaxznn.functional.log_softmax_log_softmax_backward_data)r$	  r  rW  r	  r  r'	  r(	  r~  )rW  r$	  r  r	  r  r'	  r(	  r~  logitlogit_backwardr#  )zspecial.logit)
rW  r#	  r  r$	  r'	  r(	  r)	  r%	  r	  r  rt  c                 2    t        j                  || |fi |S rt  )r   rt  )r  r  r8  r   s       r   r  r  O  s    u{{9dTY7d]c7d r   c                 0    t        j                  || |      S rt  r  r  r  r8  s      r   r  r  O  s    bhhy$.N r   )
r@  r#	  r  r  r  r'	  r(	  r%	  r	  r	  nonzerononzero_static)r	  r  r  r  r%	  r	  jiterator_unaryz8template <typename T> T unary(T x) { return x * x + x; }c                     | | z  | z   S rt  r   r  s    r   r  r  GO  s    a!eai r   test_reference_numerics_hardr	  )r@  r#	  r	  r  r  r%	  r	  jiterator_binaryzKtemplate <typename T> T binary(T x, T y, T alpha) { return x + alpha * y; }c                    |dk(  rt        j                  | |      S t        j                  | t        j                  ||            S r   r  r  s      r   r  r  rO  s5    UaZRVVE5-A r{{5%89 r   r  )r  r  )	r@  r#	  r	  r  r  r  r  r%	  r	  !jiterator_4inputs_with_extra_argszttemplate <typename T> T binary(T i0, T i1, T i2, T i3, T alpha, T beta) { return alpha * i0 + beta * i1 + i2 + i3; }c                $    || z  ||z  z   |z   |z   S rt  r   )rr  r	  r	  i3r  r  s         r   r  r  O  s    urzD2I7MPR7RUW7W r   r  g)r  r  r  )r@  r#	  r	  r  r  r  r%	  r	  jiterator_binary_return_by_refz
            template <typename T>
            void binary_return_by_ref(T i0, T i1, T& out0) {
                out0 = i0 + i1;
            }
            )num_outputsgzGڿjiterator_2inputs_2outputsz
            template <typename T>
            void binary_2outputs(T i0, T i1, T& out0, T& out1) {
                out0 = i0 + i1;
                out1 = i0 - i1;
            }
            c                    | |z   | |z
  fS rt  r   )rr  r	  r  s      r   r  r  O  s    Rb'9 r   )r  )r  r	  r&	  r  r	  r'	  r(	  r	  r  )
rW  r  r%	  r  r	  r'	  r(	  r	  r&	  r	  r  )rW  r  r	  r&	  r'	  r	  r(	  r	  r   )	rW  r  r	  r&	  r'	  r	  r(	  r  r	  )r  r  r'	  r(	  r	  r  r)  r  r	  r~  r  t_copyznn.functional.dropoutc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  dropoutr  s      r   r  r  UP  s+    UXX0088%Q$Q&Q r   c                 n    t        t        j                  j                  j                  | g|i |ddiS r
  rn  r  s      r   r  r  hP  s1    UXX0088%_$_&_Z^_ r   )	r@  r	  r	  r'	  r(	  r	  r  r  r  native_dropout_backwardzFails with ASAN)r@  r  r	  r&	  r  r  r	  znn.functional.dropout2dc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  	dropout2dr  s      r   r  r  P  +    UXX00::ESDSFS r   rf  )r
  c                 n    t        t        j                  j                  j                  | g|i |ddiS r
  rs  r  s      r   r  r  P  1    UXX00::EaDaFa\`a r   )	r@  r	  r	  r'	  r(	  r  r	  r  r  znn.functional.dropout3dc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  	dropout3dr  s      r   r  r  P  ru  r   r  c                 n    t        t        j                  j                  j                  | g|i |ddiS r
  ry  r  s      r   r  r  P  rw  r   znn.functional.alpha_dropoutc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  alpha_dropoutr  s      r   r  r  P  s,    UXX00>>WWPVW r   c                 n    t        t        j                  j                  j                  | g|i |ddiS r
  r}  r  s      r   r  r  P  s2    UXX00>>eePVe`de r   )
r@  r	  r  r'	  r(	  r  r  r	  r  r	  z#nn.functional.feature_alpha_dropoutc                 f    t        t        j                  j                  j                  | g|i |S rt  rC   r   r]  r^  feature_alpha_dropoutr  s      r   r  r  P  -    UXX00FF_PT_X^_ r   
with_trainc                 n    t        t        j                  j                  j                  | g|i |ddiS r
  r  r  s      r   r  r  P  3    UXX00FFmPTmX^mhlm r   )
r@  rW  r	  r	  r  r'	  r(	  r  r  r  c                 f    t        t        j                  j                  j                  | g|i |S rt  r  r  s      r   r  r  P  r  r   without_train)r
  c                 n    t        t        j                  j                  j                  | g|i |ddiS r
  r  r  s      r   r  r  P  r  r   )
r@  rW  r	  r	  r  r'	  r(	  r  r  r  znn.functional.one_hot)r#	  r  r	  r  znn.functional.embeddingembedding_dense_backwardc                 X    t        j                  j                  j                  || fi |S rt  )r   r]  r^  	embeddingrQ  r  r   s      r   r  r  P  s#    )<)<)F)FsF)]V\)] r   TestExpandedWeightFunctionaltest_expanded_weight_forward)rW  r@  r	  r  r  r  r'	  r(	  r	  r  r  znn.functional.embedding_bagc                 X    t        j                  j                  j                  || fi |S rt  )r   r]  r^  embedding_bagr  s      r   r  r  Q  s$    )<)<)J)J3PV)aZ`)a r   )
r@  r	  r&	  r  r  r	  r  r  r
  r  z*nn.functional.multi_head_attention_forwardc                 f    t        t        j                  j                  j                  | g|i |S rt  )rC   r   r]  r^  multi_head_attention_forwardr  s      r   r  r  %Q  s-    UXX00MMufW[f_ef r   zHSkipped - baddbmm decomp does not have enough precision for 16-bit float)	r@  r	  r  r	  r  r
  r'	  r(	  r  znn.functional.softplussoftplus_backwardc                     ddddddfS )Nr   r?  r  r  r   rG  s      r   r  r  PQ  s    QR4P[\kmRn3o r   r  )rW  r#	  r  r  r'	  r(	  r	  r%	  znn.functional.mse_lossmse_loss_backwardc                     | |z
  dz  S )Nr   r   rU  s     r   r  r  bQ  s    EFNWXCX r   )rW  r#	  r  r  r'	  r(	  r	  r	  znn.functional.grid_samplegV瞯<)r	  r  r  r  r
  r  grid_sampler_2d)r	  r  r  r
  r  r	  argwhere)r#	  r	  r  r  r  r	  r  TestReductionstest_result_dtype)identityr  rd  r	  r#	  r	  rx  r  	propagatetest_dim_emptytest_dim_empty_keepdim)
nan_policyr'	  r	  r(	  r	  r#	  r	  r  r  argmax)supports_keepdims)r  r  r  rd  r	  r#	  argmin)r  r  rd  r	  r#	  count_nonzerotest_dim_default_keepdimtest_dim_none_keepdimtest_dim_single_keepdimtest_dim_multi_keepdimtest_dim_multi_unsorted_keepdimtest_dim_offbounds_keepdim)r  r  r  rd  r	  r  r#	  r	  test_ref_small_inputtest_ref_extremal_values)r  r'	  r(	  r  r~  r  r)	  r	  r#	  r  r	  nanmeanomittest_ref_duplicate_values)r  r~  r)	  r'	  r	  r(	  r	  r&	  r  r#	  r	  r   )r  r  complex_to_realr'	  r(	  r~  r)	  r	  r	  r&	  r  r#	  generate_args_kwargsr	  )rW  r  r  r  r'	  r(	  r~  r)	  r	  r	  r&	  r  r	  r
  test_ref_large_input)r  r  r~  r)	  r  r'	  r(	  r	  r	  r&	  r  r#	  r  r	  rE  test_dim_nonetest_reduction_all)r  r  r  r  r  r'	  r(	  promotes_int_to_int64r  r	  r&	  r  r#	  r	  r  r  r  r  r  r  r  r  r  r  nansum)r  r  r  r  r'	  r	  r(	  r	  r&	  r  r#	  r	  znn.functional.ctc_loss)r	  r  r  r	  z#nn.functional.cosine_embedding_loss)r	  r  r'	  r(	  r%	  r  znn.functional.nll_lossz4FP16 nll_loss cases have not been enabled on MPS yet)r	  r  r  r'	  r(	  r  r	  znn.functional.gaussian_nll_loss)r	  r  r  r'	  r(	  r  r  r	  z"nn.functional.hinge_embedding_loss)r	  r  r'	  r(	  r  r  r  znn.functional.huber_losshuber_loss_backward)rW  r	  r  r'	  r  r  r	  znn.functional.pdist)r#	  r  r	  r  r
  r	  znn.functional.poisson_nll_loss)r	  r  r'	  r(	  r  r  argsortrepeat_interleave)r	  r  r  r  r'	  r(	  r	  r	  znn.functional.pairwise_distancec                 v    t        j                  t        j                  | |z
  |z         |z  d|      d|z  z  S )Nr   r:  r   )r  r  r   )r.  r/  r  r   r4  s        r   r  r  S  s7    FF266!a%#+&!+"wGAPQER r   )r#	  r  r	  r  r'	  r(	  r	  znn.functional.pixel_shuffle)r  r	  r  r'	  r(	  r	  znn.functional.pixel_unshuffleznn.functional.channel_shufflezoutput grad 0)r  r	  r  r'	  r(	  r  r  r	  znn.functional.kl_div)r  r	  r  r  r'	  r(	  diagflatc                 0    t        j                  | |      S )N)r  )r  r  )rb  r  s     r   r  r  S  s    BKK$@ r   )r#	  r  r	  r&	  r  r'	  r(	  r	  scatter_reduce)rW  r	  r'	  r(	  r  )rW  r	  r&	  r  r  r	  )rW  r	  r  r&	  r'	  r(	  r  )rW  r	  r&	  r  r'	  r	  r(	  r  _segment_reducesegment_reduce)r  rW  r	  r  r
  r  r	  rk	  op_dbz	_refs.abs)torch_opinfo_namer	  z
_refs.acosz_refs.acoshz
_refs.asin)r  r%	  r	  z_refs.asinhz
_refs.lerp)r  z
_refs.onesz_refs.zerosz_refs.cauchyz8TODO: RuntimeError: no _refs support for torch.rand_liketest_python_refz"Expected: cauchy is not comparabletest_python_ref_torch_fallback)r  r%	  z_refs.exponentialtest_python_ref_metaz'Expected: exponential is not comparable)r  r  r%	  z_refs.geometricz%Expected: geometric is not comparablez_refs.log_normalz&Expected: log_normal is not comparablez_refs.normalz"Expected: normal is not comparable)r  torch_opinfo_variant_namer  r%	  z_refs.normal_)r@  r  r  r  r%	  z_refs.arangez_refs.linspace)r  r  r	  z_refs.logspacez_refs.meshgrid)r  r  z_refs.take_along_dimz_refs.toz
_refs.triuz
_refs.trilz_refs.triu_indices)r  validate_view_consistencyr	  z_refs.tril_indicesz_refs.movedim)r$	  r  z_refs.bucketizez_refs.equalz
_refs.atanz_refs.atanhz_refs.bitwise_notz
_refs.ceilz
_refs.itemtest_python_ref_errorsz_refs.conj_physicalz	_refs.cosz
_refs.coshz_refs.digammaz	_refs.erfz_refs.erfinvz
_refs.erfcz	_refs.expz_refs.expm1z
_refs.exp2z
_refs.fill)r  r  z_refs.floorz_refs.frexpz
_refs.fracz
_refs.imagz_refs.isfinitez_refs.isinfz_refs.isposinfz_refs.isneginfz_refs.isnanz_refs.isrealz_refs.i0z_refs.lgammaz_refs.special.multigammalnr!	  )r  r  r	  r%	  z	_refs.logz_refs.log1pz_refs.log10z
_refs.log2z_refs.logsumexpz_refs.log_softmaxz_refs.nan_to_numz	_refs.negz_refs.positivez
_refs.realz_refs.reciprocalz_refs.roundz_refs.rsqrtz_refs.sigmoid)z_refs.special.expit)r  r$	  handles_complex_extremal_valuesr7  r%	  r	  z
_refs.signz	_refs.sgn)r  r  r7  r	  z_refs.signbitz	_refs.sinz
_refs.sincz
_refs.sinhz_refs.softmaxz
_refs.sqrtz_refs.squarez	_refs.tanz
_refs.tanhz_refs.truncz_refs.special.log_softmax)r  r  r  z_refs.special.softmaxz_refs.special.logitz!_refs.nn.functional.alpha_dropoutz#Expected: dropout is not comparablez_refs.nn.functional.celuz#_refs.nn.functional.channel_shufflez_refs.nn.functional.thresholdz_refs.nn.functional.dropoutz_refs.nn.functional.eluz_refs.nn.functional.hardtanhz_refs.nn.functional.geluz_refs.nn.functional.layer_normz_refs.nn.functional.gluz%_refs.nn.functional.pairwise_distancez_refs.nn.functional.pdist)r  r  r	  z_refs.nn.functional.leaky_reluz_refs.nn.functional.log_softmaxz!_refs.nn.functional.pixel_shufflez#_refs.nn.functional.pixel_unshufflez$_refs.nn.functional.poisson_nll_lossz_refs.nn.functional.preluz_refs.nn.functional.reluz_refs.nn.functional.relu6z_refs.nn.functional.mishz_refs.nn.functional.seluz_refs.nn.functional.softmaxz_refs.nn.functional.softminz_refs.nn.functional.softplusz_refs.nn.functional.l1_lossz'_refs.nn.functional.margin_ranking_lossz_refs.nn.functional.mse_lossz"_refs.nn.functional.smooth_l1_lossz(_refs.nn.functional.hinge_embedding_lossz_refs.nn.functional.nll_loss)r  r  r  r	  z_refs.nn.functional.huber_lossz_refs.nn.functional.tanhshrinkz_refs.nn.functional.hardshrinkz_refs.nn.functional.softshrinkz	_refs.add)r  r  r  r%	  r	  z_refs.atan2z_refs.bitwise_andz_refs.bitwise_left_shiftz_refs.bitwise_right_shiftz-Skipped some inputs produce undefined outputsz_refs.bitwise_orz_refs.bitwise_xorz_refs.copysignz	_refs.div)r  r  r  r  r	  )r  r  r  r  r%	  z_refs.eqz_refs.float_powerz_refs.logaddexpz_refs.logaddexp2z_refs.floor_divide)r  r  r  r  r	  z
_refs.fmax)r  r  z
_refs.fminz
_refs.fmod)r  r  r  r	  z	_refs.gcdz_refs.gez_refs.gtz_refs.heaviside)r  r  r	  z_refs.hypotz_refs.igammaz_refs.igammacz_refs.isclosez	_refs.lcmz_refs.lez_refs.logical_andz_refs.logical_notz_refs.logical_orz_refs.logical_xorz_refs.ltz_refs.maximumz_refs.minimumz	_refs.mul)r  r  r  r	  z_refs.nez_refs.nextafterz	_refs.powz_refs.remainderz
_refs.rsubz	_refs.subz_refs.true_dividez_refs.addcdivz_refs.addcmulz_refs.clamp_minz_refs.clamp_maxz_refs.clampz'_refs.nn.functional.triplet_margin_lossz_refs.xlogy)r  r  z_refs.special.xlog1pyzspecial.xlog1pyz_refs._conversions.bfloat16)r  r  z_refs._conversions.boolz_refs._conversions.bytez_refs._conversions.charz_refs._conversions.complex)r  )r  r  r	  z_refs._conversions.polarz_refs._conversions.doublez_refs._conversions.floatz_refs._conversions.halfz_refs._conversions.intz_refs._conversions.longz_refs._conversions.shortz_refs._conversions.chalfz_refs._conversions.cfloatz_refs._conversions.cdoublez_refs.clonez_refs.alias_copyz_refs.atleast_1dz_refs.atleast_2dz_refs.atleast_3dz_refs.as_strided)r  r	  r	  z_refs.as_strided_copy)r  r  r	  r	  )r  r  r	  r	  z_refs.as_strided_scatterz_refs.block_diagz_refs.broadcast_shapesz_refs.broadcast_tensorsz_refs.broadcast_toz	_refs.catz_refs.chunkz_refs.column_stackz
_refs.conjz_refs.constant_pad_ndz_refs.contiguousz_refs.deg2radz_refs.dsplitz
_refs.diagz_refs.diagonalz_refs.diagonal_copyz_refs.diagonal_scatter)r  r  r  z_refs.diag_embedz_refs.dstackz_refs.expandz_refs.expand_asz_refs.expand_copyz_refs.flattenz
_refs.flipz_refs.fliplrz_refs.flipudz_refs.hstackz_refs.narrow)r  r  z_refs.narrow_copy)r  r  r  r	  z_refs.nn.functional.group_normz_refs.native_layer_normz_refs.permutez_refs.permute_copyz_refs.rad2degz_refs.ravelz_refs.renormr  z_refs.reshapez_refs.reshape_asz
_refs.rollz_refs.rot90z_refs.select_scatterz_refs.stackz_refs.squeezez_refs.squeeze_copyz_refs.tensor_splitz_refs.hsplitz_refs.vsplitz	_refs.dot)r  r  r  r	  z
_refs.vdotz_refs.transposez_refs.transpose_copyz_refs.tz_refs.t_copyz_refs.T)r  z_refs.unbind_copyz_refs.unfoldz_refs.unfold_copyz_refs.unsqueezez_refs.unsqueeze_copyz
_refs.viewz_refs.view_asz_refs.view_copyz_refs.vstackz_refs.unflattenz_refs.unbindz	_refs.allr  r  z	_refs.anyz_refs.count_nonzeroz
_refs.meanz	_refs.stdz_refs.std_meanz	_refs.sumz_refs.cumsumz_refs.cumprodz_refs.sum_to_sizez
_refs.prod)r  r  r  r	  z	_refs.varz_refs.var_meanz
_refs.addrz_refs.tracez
_refs.normz_refs.emptyzCan't check result for emptyz_refs.empty_likez!Can't check result for empty_likez_refs.randnc                  <    t        t        j                  g| i |S rt  )rC   r  rM  r  s     r   r  r  _  s    #3DJJ#P#P#P r   )r  r@  r	  z	_refs.eyez_refs.new_emptyz Can't check result for new_emptyz_refs.new_empty_stridedz)Expected: empty_strided is not comparablez_refs.empty_stridedz_refs.new_fullz_refs.new_onesz_refs.new_zerosz_refs.masked_fillz_refs.wherec                 0    t        j                  || |      S rt  )r  rt  r]  s      r   r  r  
`  s    $**Ye*L r   )r  r@  r  r	  z_refs.index_selectz_refs.index_copyz_refs.index_addz_refs.index_fillz_refs.allclosez
_refs.stftz_refs.istftzLExpected: unfold_backward() got an unexpected keyword argument 'input_sizes'z_refs.view_as_complexz_refs.split_with_sizesc              #   B   K   | ]  }t        |t              s|  y wrt  )rx  rb   )ru  r@  s     r   rw  rw  i`  s     \bJr?<[r\s   zmasked.c                     t        | t              s| f} t        j                  j                  | t        j
                  |d|dS )Nr   r  )rx  r  r   testingr   r  )r<  rW	  r   s      r   r\  r\  t`  s6    eU#==$$e5::fRSZeffr   c                    t        |       dk(  sJ |dk  sJ d|z
  }t        j                  | t        j                  |d}t	        | |         D ]>  }|j                  ||      j                  t        j                  ||      d | |           @ |r1|j                  |d      j                  |j                  |d             |S )Nr   r   r   r$  r   )rM  r   r&  r  ry  rx  copy_r  )r<  rV	  rW	  	duplicater   	batch_dimry  rv  s           r   r  r  y`  s    u:??q==IIKKejj@E5#$ KY"((NN;v67Hi8HI	KK Y"((i)CDLr   c                  h    t        j                  dt         j                        j                         S r  )r   r   r  
bernoulli_r   r   r   r  r  `  s     <<,7799r   c                     t        |       dkD  sJ 	 t        j                  |       j                  d      }|j	                         dkD  r|S :r>  )rM  r   rM  r{  r  )r<  r  s     r   r]  r]  `  sF    u:>>
U#&&q)::<!M r   c                    | |||dfS )NTr   op_namevariant_namer  r	  s       r   xfailr  `  s    \;==r   c                    | |||dfS r  r   r  s       r   r	  r	  `  s    \;>>r   c           	         t         }|D ]  }|\  }}}}}	|D 
cg c]"  }
|
j                  |k(  r|
j                  |k(  r|
$ }}
t        |      dk\  s
J d|        |D ]  }t	        |j
                        }|	r0t        t        j                  | |||      }|j                  |       n4t        t        j                  d      | |||      }|j                  |       t        |      |_          d }|S c c}
w )Nr   zCouldn't find OpInfo for r  r	  c                     | S rt  r   r  s    r   wrappedzskipOps.<locals>.wrapped`  r  r   )r  r  rW  rM  rk  r%	  rL   r	  r	  r<  r	  r  )test_case_namebase_test_nameto_skipall_opinfosr  r  r  r  r	  expected_failurer  matching_opinfosr@  r%	  	decoratorr  s                   r   skipOpsr  `  s   K .GLD{F4D'2 Z! vv0Q5H5HL5X  Z Z#$)N-Fug+NN)" 	.Bbmm,J()A)A)75@Q	 !!),(z)B)75@Q	 !!),!*-BM	..(N)Zs   'C2)r   r  )r   r   r   r   r   Nrt  r  r  r  )r   r   r  )r  )NNrf  )FFrB  N)r  rP  r  )r  )r  )r  )r  )r  r  )znn.functional.conv_transpose2d)znn.functional.conv1d)znn.functional.conv2d)znn.functional.conv3d)r
  )r  )r  F)znn.functional.rrelu)r  )rF
  )r  )r  )r  )r  )r  )r  r
  F)r  (  re  r   r   r  r   r   r   r+  r	  r  r	  r  r^  r   r  r  numpy.typingtypingri  r   r	   r
   r   collections.abcr   torch.testingr   $torch.testing._internal.common_dtyper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   *torch.testing._internal.common_device_typer   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   #torch.testing._internal.common_cudar,   r-   r.   r/   r0   r1   r2   r3   r4   $torch.testing._internal.common_utilsr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   torch.testing._utilsrC   torch._refs_refsr  torch._refs.nn.functionaltorch._refs.specialtorch._refs.linalgtorch._prims_primsr_  torch.utilsrD   r]  	packagingrE   #torch.testing._internal.opinfo.corerF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   #torch.testing._internal.opinfo.refsrv   rw   rx   ry   rz   r{   $torch.testing._internal.opinfo.utilsr|   r}   r~   torch.testing._internalr   1torch.testing._internal.opinfo.definitions.linalgr   r   r   r   r   r   r   r   r   r   r   r   2torch.testing._internal.opinfo.definitions.specialr   r   r   2torch.testing._internal.opinfo.definitions._maskedr   1torch.testing._internal.opinfo.definitions.sparser   r   r   r   r   r   r%  r   scipy.spatialscipy.specialr   r   r   r   r   r   r   r   r   r  r  r  r  r,  r1  r8  r=  rA  rX  rd  rm  rp  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r*  r0  r4  r8  r<  r@  rC  rE  rG  rL  rP  r\  r_  rb  rp  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r!  r(  r0  r5  r7  r=  rC  rE  rI  rK  rM  rQ  rT  rY  r_  rc  ro  rt  ry  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/  r2  r6  r@  rB  rI  rQ  rU  re  rq  ru  rz  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;  reference_inputs_bucketizer>  rK  rU  r_  rb  rp  rt  rz  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(  r0  r4  r<  rK  rN  rR  rV  rZ  rb  rd  rj  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.  r1  r9  r=  r@  rD  rQ  r[  rh  rl  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r*  r-  r/  r2  r5  r;  r=  r?  rD  rF  rN  rP  rS  rV  rY  r_  rb  rf  rh  rp  rs  rv  rx  rz  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	  rk  r	  r	  r	  r,	  r3	  r8	  r<	  r>	  rC	  rE	  rG	  rK	  rM	  r\	  r`	  re	  rs	  ru	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r	
  r
  r
  r
  r*
  r.
  r3
  r7
  rB
  rO
  rQ
  rV
  rg
  rn
  rw
  ry
  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@  rZ  r  r  r  Enumr]  rd  rj  r  r  r  r   r	  r  r2  r}  r  r  r\  r	  r  rh  r  ry  r  r  r  r  r
  r  r  r  r  r  r*	  r!  r-  rj  rY  r2  r5  r  r8  r7  rD  rG  rX  r^  re  rk  r}  rm  ro  rt  rv  r   rl  r  r  r  r  r  rX  rU  r  r  r  int16r  r  r  r  r  
sparse_coo
sparse_csr
sparse_csc
sparse_bsr
sparse_bscr  r  r  r   r  r  r  r  libNumpyVersion__version__broadcast_arraysr  invertr  lshiftilshiftr  rshiftirshiftr  r  r  r   r[  r-  r  rE
  r  radiansra  rA  r  rT  rM  r\  r]  r^  ra  modimodr  r  rk  rl  rm  r  rr  rs  r  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  rd  r  r  r  and_iandr  or_iorr  xorixorr  r  r  r  r  r  r  r]  r^  r  r  r:  r  r  r
  hardsigmoidmishr  rL  rQ  rR  rS  rU  r	  r)  rZ  r[  degreesr  r]  r  rF
  r  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  r  r|  r  r(  r  array_splitr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  uint16uint32uint64ro  r&  r  float8_e4m3fnuzr
  float8_e5m2fnuzr*  r	  r	  r  rR  r  r  rS  parserY  rZ  	jiterator_create_jit_fn_create_multi_output_jit_fnrO  rq  r  r  r  rx  r  r  r  r  r  r  r  r   r
  r  r  r  definitionsr  	_internalcommon_utilsmarkDynamoStrictTestxfailIfTorchDynamopython_ref_dbops_and_refsrx  unary_ufuncsbinary_ufuncsbinary_ufuncs_and_refsspectral_funcsr  sparse_unary_ufuncsr  sparse_csr_unary_ufuncssparse_reduction_opsshape_funcsreduction_opsr#	  reference_filtered_opsr  
startswithreference_masked_opssparse_masked_reduction_opsr\  r  r  r]  r  r  )r@  s   0r   <module>r>     s  % $ , ,              $ %    
   
  
    2       ) 1 1 1 1 1 1 1 1 1 1 1 1 1d  
 +    
  'P<044,4"A"	NO"Ec,	K"Y*+B 6epE$l^ b+M6^7l(0Tf
A	AAB.j21$E&x8&tm=A	9	9	=	:KH&&0*&*:R&	O$@$)vV
"
3<AVb(a(;6)7V$
NW*/X+T,@6\</$"'*PN"N2`*?	X&-*V<S MR 96
QYe"Y<(	M304"/
\{
*&"2	66&>>U" S2
)"Z9j"O>
0043;l8v_(CEJ!&3	,	!
#T' ;I;:K?:B:$$^LRe-	=;3z%cN3`
:":k?S$8Bt Ll@A"A$QKJ< %%<TXY J
!eF^:b2O"+NZV58J"	_J&_ J(_ Q$	TQ*T Q(T #B #BJ*1 *	 1 	 	 1 	 . ,.b$QUaf @0F*<*@@"&, ?@<=.5b><>69rx:rz*Z>>PB3B"BJ76r?B6D
B6.//>/4N*H[4F,5&GR0F0&t&)HC$
nB$@
+Z%N="U&U0X=*76WB?(0H;7z%9NK8G8,$#&J/8Q
G8?B4*H"$HL;R|1214(&6"-&("NP`DN(\!4c0R"		9X
1F$9/m(-Z`jO3>	962_V	VVb
"9JAS::Y ty E*P/N4d;
E,8
#0J*N'@T:2h43n)&>-UM.>*L"+
(8"4F "4ELL "4 "4*."4'*"49=k9J"4JC267"J&@ MR 6&
6@$0Bd
%
(2
U8J %9N QZ #6L?7Mt6n]($0KfH*	.S(2222h(2VHVSP4L$65 5&9$
]
]
N"=J0/f6:*:.	6?2T&5  !%d&"BCgL?ED()(4$
L
,
(@<,V^
8`*+
F>D"BCPPB<

C(XT44; :Ix6/d\|@&
66 O Cj,p&30Jd,HE\  &4r2h- 38uUYcg!h dii 1 1e eP8 $4Z9 4ZnC$> CLQ%5aF /!%"& ((,)%**6	 ((5)%**6	 ((#)%**6	
Q%< 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
=Q%t 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
uQ%l 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
mQ%d 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
eQ%\ 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
]Q%T 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
UQ%L 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
MQ%D 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
EQ%| 5aF ?!%"&  ((,)%**6	 ((5)%**6	 ((#)%**6	 !%e)D
 "	)
'}Q%L	 5aF ?!%"& ((,)%**6	 ((5)%**6	 ((#)%**6	 !__cu5&AB "'
$M	Q%V
 5aF ?"& ((,)%**6	 ((5)%**6	 ((#)%**6	
W
Q%N 5aF ?"& ((,)%**5	 ((5)%**5	 ((#)%**5	
OQ%F 5aF ?"& ((,

}	 ((-

}	 ((5

}	 ((6

}	 ((#

}	 (($

}	 ((<"

}K,
4GQ%p 5aF ?"& !%((,)%**5	 ((5)%**5	 ((#)%**5	
qQ%j 5aF"& !%((,)%**5	 ((5)%**5	 ((#)%**5	
kQ%b 5aF UZZX"& ((,(4	 ((-(4	 ((5(4	 ((6(4	 ((#(4	 (($(4	 (("((*K,
4cQ%L 5aF ?"& ((,)%**5G	 ((-$	 ((5)%**5G	 ((6$	 ((#)%**5G	 (($$	 (("((*K,
4MQ%v 5aF ?"& ((,)%**5G	 ((-$	 ((5)%**5G	 ((6$	 ((#)%**5G	 (($$	 (("((*K,
4wQ%` 5aF /"& !%((,)%**5	 ((5)%**5	 ((#)%**5	
aQ%Z 5aF ?"& ((,(4	 ((-(4	 ((5(4	 ((6(4	 ((#(4	 (($(4	 (("((*K,
4[Q%D 5aF ?"& ((,)%**5	 ((5)%**5	 ((#)%**5	
EQ%| 5aF ?"& ((,(4	 ((-(4	 ((5(4	 ((6(4	 ((#(4	 (($(4	 (("((*K,
4}Q%f 5aF ?"& ((,)%**5G	 ((-)%**5G	 ((5)%**5G	 ((6)%**5G	 ((#)%**5G	 (($)%**5G	 (("((*K,
4gQ%P 5aF ?"& !%((,)%**5	 ((5)%**5	 ((#)%**5	
QQ%J 5aF N"& !%((,)%**5	 ((5)%**5	 ((#)%**5	
KQ%D 5aF UZZX"& ((,(4	 ((-(4	 ((5(4	 ((6(4	 ((#(4	 (($(4	 (("((*K,
4EQ%n 5aF ?"& #((5$	 ((,$	 ((-!

} ((5!

} ((6!

} ((#!

} (($!

} ((,!

} 11:?R[h[jko8
AoQ%r  5aF ?"& s Q%D! 5aF ?"& ((,$	 ((-$	 ((5$	 ((6$	 ((#$	 (($$	 (("((*K,
4E!Q%n" 5aF"& '[\^h>GYZ_ZdZdGeg '[\^h,5G

5SU((,$);EJJ)GG	 ((-$	 ((5$);EJJ)GG	 ((6$	 ((#$);EJJ)GG	 (($$	 (("((*W2
9o"Q% T&\ Qh$ 5atTJ u{{[!"&  11:?ST11:?R 9%**ennV[VcVc df 11:?[!&/11:?d!&/11:?p . 03DUZZQVQ_Q_afananpup}p}3~ ~@
, 5atD ?!"& 11:?[\11:?de11:?RS11:?\]11:?ef11:?ST11:?pq11:?qr'mn&u?O?O>Q#[]
, 5atTJ ?"&  11:?[!&/11:?d!&/11:?R\a\f\f[hi11:?p!&/'mn&u?O?O>Q#[]
* 5atTJ u{{\a\f\fg"&  11:?[ 25:: >@11:?d 25:: >@11:?R 25:: >@11:?p 25:: >@

& 5atD u{{\a\g\ginisisuzuu  A"& 11:?[ 1%** =?11:?d 1%** =?11:?R 1%** =?11:?\ 1%** =?11:?e 1%** =?11:?S 1%** =?11:?p 1%** =?11:?q 1%** =?(("((* ((@$	1
&N 5atD u{{\a\g\ginisisuzuu  A"& 11:?[ 1%** =?11:?d 1%** =?11:?R 1%** =?11:?\ 1%** =?11:?e 1%** =?11:?S 1%** =?11:?p 1%** =?11:?q 1%** =?(("((* ((@$	1
&P 5atD L"'!11:?[ 1%** =?11:?d 1%** =?11:?R 1%** =?11:?\ 1%** =?11:?e 1%** =?11:?S 1%** =?11:?p 1%** =?11:?q 1%** =?(("((* ((@$	1
&P 5atD L!"'11:?[ 1%** =?11:?d 1%** =?11:?R 1%** =?11:?\ 1%** =?11:?e 1%** =?11:?S 1%** =?11:?p 1%** =?11:?q 1%** =?(("((* ((@$	1
&N "!%5atD u{{\a\f\fhmhrhrs"& 11:?[ejeoeodqr11:?d!&/11:?R\a\f\f[hi11:?S]b]g]g\ij11:?\!&/11:?e!&/11:?\!&/11:?e!&0w/[`jojyjyi{|;<")(* ((9"

}>-
> "&Q)T 5aF!"'{e& d6l eP	 8D$G ?"& 11:?\fkfpfpers11:?e!&/11:?S]b]g]g\ij11:?q!&/ 11:?[ejeoeodqr11:?d!&/11:?R\a\f\f[hi11:?p . 03DUZZ3P PR
. 8D$G ?"&  11:?[ 25:: >@11:?d 25:: >@11:?R 25:: >@11:?p . 03DUZZ3P PR 11:?\ 25:: >@11:?e 25:: >@11:?S 25:: >@11:?q . 03DUZZ3P PR#
142 o. 4n 21eUC L"&  ((((%//:	 ((1((%//:	 ((6((%//:	 (($((%//:	 ((-((%//:	5 
(R 3AueD ?"& 11:?[\((-)%**5	 11:?de((6)%**5	 11:?RS(($)%**5	 11:?pq((1")%**5/
&UQ/ d?+ Qh 5atD ?"& ((,)%**5	 ((-)%**5	 ((6)%**5	 ((5)%**5	 ((#)%**5	 (($)%**5	 ((A)%**5	 ((B)%**5	W1
9;. T/* ;z,"10, &, ) )3 ) )Tckk TU3Z TkS[[ kE#J k"	!CKK 	!5: 	!ckk s 07:  "	 "	"/u|| /@("`G[5)vv3EJJPUP[P[\ 9%**ejjRWR`R`bgbmbm n+EMM5>>J#MHMM2b$cew$7@PR#MHMM2b$cew$;U]]DTV#MHMM2b$cew$BEMMK[]#MHMM2b$ce|$2EMM5<<Y^YdYd;eg $MHMM*$=?PRq,1JJ<>S
 $MHMM*$=?PRk,1LL%--+HJ#H$<$<jJ],1MM5<<+UW#H$<$<jJf,1MM5<<+UW#H$<$<jJo,1MM5<<+UW#H$<$<jJ{,1MM5<<+UW/4 +/%)#''+'+'+'+'+O'-G[T 6'yy!3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n+EMM5>>J%)'+*.)-0%--27..$27//42I  J L $MHMM*$=?PRr06Zdf#MHMM*$=?PRt06Zdf $MHMM*$=?PRq06.8: $MHMM*$=?PRq06.8: $MHMM*$=?QSa,1MM?jR#MHMM*$=?QSe,1MM?jR#MHMM*$=?QSf,1MM?jR#MHMM*$=?QSi,1MM?jR#MHMM*$=?QSq,1MM?jR+T$UUG[` 7(zz#3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n+EMM5>>J0%..$1GHJ-2'+*.)-#MHMM*$=?PRr06Zdf#MHMM*$=?PRt06Zdf#MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt06.8: $MHMM*$=?PRq06.8: $MHMM*$=?PRq06.8:!* .<!s !.#C#$aG[h E67 B4UZZ5:]]EKKQ ,U]]ENNEKK X&*'<+/(,04$-u{{CTPQ<R.ST.0IK  %X%=%=%4%;-2ZZM; %]X]]:%>%1%6-2-=-=,?A %]X]]:%>%7%N-2__e>N>N,OQ#iG[h 6dzz+ENNEMM5;;X]XbXbc#EMM2".0 H44iA_$)MM5??#CE H446NPtuH446OQ`aH446FH\]H446FTiG[V 8>#EMM5>>5;;PUPZPZ["#02 H446NPtu H44lDdeH44noVH44nFVWH44nFZ[ H446FHabMHMM*57GI[\MHMM*57GIkl
 H44oG]^ H44iA_inivivhxy H44lDVW7$WG[` 8g <<//$U]]ENNC"01s20 H44lDdeH44noV H44iA_` MHMM*GH,Xjk H446NPtu MHMM*EFHacyzMHMM*EFHac{|MHMM*TUWce  AH44lLQ)aG[^ =l <<44$U]]ENNC#EMM5>>B"01s75 H44lDdeH44noV H44iA_` MHMM*GH,Xjk H446NPtu H446OQghH446OQijH44lLQMHMM*GH,Xjk'_G[\ ;j <<22$U]]ENNEJJPUP[P[]b]h]hjojujuw|  xC  xC  D#EMM5>>B"01s53 H44lDdeH44noV H44iA_` MHMM*GH,Xjk H446NPtu MHMM*EFHacyzMHMM*EFHac{|H44lLQ%]G[X	 <k <<33$U]]ENNC#EMM5>>B"01s64 H44lDdeH44noV H44iA_` MHMM*GH,XjkH446NPtu MHMM*EFHacyzMHMM*EFHac{|H44lLQ!Y	G[P
 8'g <<//0O#EMM5>>B"01s20 MHMM*EFVrs H44lDdeH44noVH44nFVWH44nFZ[H44lLQH44iA_`MHMM*GH,XjkH446NPtuMHMM*EFHacyzMHMM*EFHac{|%Q
G[N 9h <<000O#EMM5>>B"$01s31 H446NPtuH44lDdeH44noVH44nFVWH44nFZ[H44iA_`H44lLQMHMM*GH,XjkOG[B K((U]]ENNS ,U]]ENNEKKY^YcYc d(,/4+/+/U+C %X%=%=%7%:179
 %X%=%=?OQjk$X%=%=|][
CG[h K((U]]ENNS ,U]]ENNEKKY^YcYc d(,/4+/+/U+C %X%=%=%7%:179
 %X%=%=?OQjk$X%=%=|][
iG[N E)4U[[%--QVQ_Q_afakakl ,U]]ENN K&*(,+/04-D29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2lnOG[j E67f)4U^^U]]TYT_T_` ,U]]ENN K&*(,+/'<04$-u}}ctRS>T/4~~sSW?X/4TX@Y/[ \ /0I	K
 %-u{{CTPQ<R.ST(*O]bd %-u{{CTPQ<R.ST(*>ES %-u{{CTPQ<R.ST(,EK " %]X]]:%>%7%>-2[[N< %]X]]:%>%7%K-2[[N<	7$kG[t 7 ,EMM5>>J6u}}ennU6u}}ennU#EMM5>>B!#"& 41  8==,., ??E,<,<=	?uG[^ 7)+EMM5>>J6u}}ennU#EMM5>>B!#"& 4&1:%>%&9K  8==,., ??E,<,<=	? MHMM*5H^(-u}}6FH
_G[L 7+ENNEMMJ*5==%//5K[K[+0>>;#"&$ejj#4d2K%LM')=5R
 23MG[d 8y ,ENNEMMJ6u}} a:E :?8H]_a $EMM5>>B##"&$emmSgG5T&+oosG7T&V W!24
 $emmSgG5T&+oosG7T&V W!57 $emmSd5N%OP$&
 $emmSgE5R%ST- $ejj#4d2K%LM')=5R%0 MHMM*5|]`f  wB  sB  CH44lDVWMHMM*5|Eef 3W+4eG[| 9+ENNEMMJ*5==%//5K[K[+0>>;!3EMM "WITXfenn5Eln"W49OO"WEJEUEU"W $EMM5>>B##"&$eoosG7T%UV!AvW $eoosG7T%UV!#3I	 4  8==,., ??E,<,<=	?+}G[v 5+EMM5>>J6u}}ennU#EMM5>>B!42#"&  8==,., ??E,<,<=	?wG[X 6+EMM5>>J6u}}ennU#EMM5>>B42#"&  8==,., ??E,<,<=	?YG[x 5+EMM5>>J6u}} a:E :?8H]_a $EMM5>>B!%)#"& MHMM*5|]`f  wB  sB  C-u}}ctRV>W.XY(*6 0!1yG[Z 4+EMM5>>J6u}}ennU#EMM5>>B!#"&.0[G[j 6+EJJV#"& MHMM*5|Ee#<UZZY^YfYf#gi
 1 46kG[B 9+EMM5>>J#EMM5>>B!#"& H44lDde <!(3Hh"jkCG[\ 90O#EMM5>>B#"& H44(<> <!(3Hh"jk]G[x  ('(yy( "( $(	(
 (,( (,( (,( (,( (,( +/( *.( 4EJJ

ENN[( !:%++uzzSXS]S]_d_m_m n(  ,EMM5>>J( &*(" $,emmSeRW=X-YZ,& $,emmSdQU=V-WX/1ESY $,eoosTY?Z-[\,.P^c )%..$)?@!(@ $MHMM*$=?PRt06.8: $MHMM*$=?PRq06.8: $MHMM2Z$[$;=RT	?(yG[L  !(!zz! 4EJJ

ENN[! !:%++uzzSXS]S]_d_m_m n	!
  ,EMM5>>J!  1%..$1GHJ! .3! (,! +/! $(! (,! (,! (,! (,! *.!" $MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRr05u||U]]>[]#MHMM*$=?PRt06.8: $MHMM*$=?PRq06.8: $MHMM2Z$[$;=RT!!MG[P  'yy 4EJJ

ENN[ !:%++uzzSXS]S]_d_m_m n	
  ,EMM5>>J &* (, +/ $( (, (, (, (, *.  1%..$1GHJ" $MHMM*$=?PRt,1LL%--+HU]Ukakn#MHMM*$=?PRq,1LL%--+HU]Ukakn#MHMM*$=?PRq,1LL%--+HU]Ukakn#MHMM2Z$[$;=RT	!QG[D G((U^^UZZP ,U]]ENN K(,+/*./4 %X%=%=yJdeEG[\  (((zz( "( 4EJJ

ENN[	(
 !:%++uzzSXS]S]_d_m_m n(  ,EMM5>>J( )%..$)?@#,emmSdQU=V-WX//'-	(  .3!(" (,#($ +/%(& $('(( (,)(* (,+(, (,-(. (,/(0 *.1(4 $MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt06emm?\.8: $MHMM*$=?PRq06~.8: $MHMM2Z$[$;=RT3(]G[n :0O{{"$4MHMM*5yB`aMHMM*5H^_MHMM*57LM
 oG[F >+EJJu~~V#"&&+8:GG[X $$&(ff&9&9"..&IX&Ur""[_"EMM#34"""#< H446NPtu MHMM*5|]SMHMM*5|EabMHMM*5|EefMHMM*5yB`a
YG[B ""+EJJu~~V#EMM5>>B=!C#"&&+ H446NPtu
 H44iA_inivivhwxCG[j <+EJJu~~W\WbWbc#"&&+ H446NPtu
 H44iA_inivivhwx 7!8kG[L =~~,UZZ8+EJJ7$,OO%*,MG[X (//)+!/!1 ,U[[%**ejj Q%-__-5-=-=&+/3+/A;$]X]]:%>@RTij$]X]]3Z%[]ik}~YG[v )00)+!/!1 ,U[[%**ejj Q%-__-5-=-=&+/3+/A;$]X]]:%>@RTij$]X]]3Z%[]ik}~wG[T >  +EJJu~~V#"&&+8:UG[f ""+EJJu~~V#"&&+:H44noVH44nFVWH446NPtu H44%'Eu}}N^`gG[J 7 """13KG[V 6ww'

ENNC+EMM5>>5;;X]XbXbc'+*.#H$<$<$3$:+00aN<L0a+ac $('+'+'+'+%)#+WG[z :,.;>(*;<	?{G[D  ,.57#"&#"&CV(*;< H44lJORSE G[`  "",.:"'#"&o(*;<>a G[r  7+EJJW\WbWbc#EMM5>>5;;O1!7#"&s G[B! >+EJJW\WbWbc1&+!7#"&C!G[R! 7ww+EJJW\WbWbc#EMM5>>5;;PUPZPZ\a\f\fg<!B#"& H44lDTUH44lDXY	S!G[p! <F+EJJW\WbWbc<!B#"&#5"6%)H446NPtuq!G[J" =G+EJJu~~V75#"& H446NPtuH44iA_initithvwK"G[d" 7

;#EMM5>>5;;PUPZPZ\a\f\fg1!()Mbu!v!#"& H44+2$)JJ=2 H44(02e"G[P# :{{3EJJPUP[P[\ %'+*.#''+'+'+'+Q#G[h# 6ww3EJJ49JJM+EMM5;;G#''+*..3 %
'i#G[~# ?$4ww3EJJ49JJM'+*.#''+'+'+'+
 $MHMM*$=yJhrwrr  rC  D#MHMM2f$g$;^M#G[f$ >+EJJ

ENNS#EMM5>>B8#"&g$G[v$ =+EJJ

ENNTYT_T_`#EMM5>>B8#"&w$G[F% >/#"&8#(G%G[V% $UZZ0#"&; H44lD`aMHMM*5H^hmhrhrgtuH44jBtuW%G[t% I-ejj9(,+//4&: %X%=%=?QShi$]X]]:%>jfkl$X%=%=zKkl	o
pu%G[J& J'=(UZZP ,U]]ENN K*.(,(,+/1K&G[\& :+EJJG4#"&&+  8==,., ??E,<,<=	? ]&G[|& 5vv3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n+EMM5>>J%)(-'+*.)-0%..$1GHJ#MHMM*$=?PRq,1LL%--+IW\hrt $MHMM*$=?PRq,1MM+;Q#MHMM*$=?PRt,1LL%--+HT^`#MHMM*$=?PRt05,1LL%--+HT\^ $H$<$<>OQp06,1KK>ZQ}&G[v' 6?H3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n+EMM5>>J%)'+*.)- $MHMM*$=?PRq05uzzlL#MHMM*$=?PRq,1MM?<#MHMM*$=?PRt,1LL%--+HT^`#MHMM*$=?PRq,1LL%--+HT^`#MHMM*$=?PRt05,1LL%--+HT\^ $MHMM*$=?PRq05,1LL%--+HT\^ $H$<$<>OQp06,1KK>ZQ'w'G[v( 5+EJJG/-#"&  8==,., ??E,<,<=	? H446H.YH446HJ\]H446HJ`aMHMM.9;MOfg H44iA_`-u}}ctRX>Y.Z[02FTY[+w(G[t) 7+EJJG#EMM5>>5;;O1"&#%u)G[B* 8+EJJG#EMM5>>5;;O#"& H44lJO ;	<C*G[V* 9+EMM5>>J#EMM5>>B#"& H44lJO
 4$&W*G[n* 8

EJJG%&BZ_`#"& 46o*G[~* 8

EJJG%&BZ_`#"& 46*G[N+ 9zz0%..$27--2G  H J'

EJJO'+*.#''+'+'+'+)-/O+G[h+ 6jj  !b"++bkk  ,EJJu~~V##"&0.&+!i+G[L, E'&84UZZU^^\!:5::uzzSXSaSachcncn!o ,U]]ENNEKKY^YcYc d(,(,*.+/04&*+/T+BEM,G[h, E'&6(U^^D ,U]]ENNEKKY^YcYc d#Q )-(,+/04&*+/T+B %X%=%=?QShi  %X%=%=P^_ %]X]]:%>@R%3-2]],<>%i,G[d- E'&6(U^^D ,U]]ENNEKKY^YcYc d#Q )-(,+/04&*+/T+B %X%=%=?QShi  %X%=%=P^_ %]X]]:%>@R%3-2]],<168%e-G[b. M4UZZU^^\!:5::uzzSXSaSachcncn!o(,*.+/04+/T+BDc.G[r. 7+EJJu~~V#EMM5>>5;;PUPZPZ\a\f\fg:1"!s.G[D/ 5?G3EJJ

ENN[ 9%**ejjRWR`R`bgbmbm n+EMM5>>J $MHMM*$=?PRt05u||U]]>[gqs
 &*'+*.)-/E/G[`/ 84+EJJ

ENNS#EMM5>>5;;O2#"&%)H446NPtua/G[x/ ;7+EJJ

ENNS#EMM5>>5;;PUPZPZ\a\f\fg#"&5H446NPtux
y/G[N0 =+EJJ

ENNS2#"&%)H44iA_inivivhxy	O0G[b0 6ww+EJJV1%++uzz5::W\WeWef#EMM5>>B#"&&+0.	0c0G[v0 <+EJJW\WbWbc##"&?!E=	?w0G[J1 :1+EJJW\WbWbc#"&?!E=?K1G[\1 ?+EJJW\WbWbc#"&?!E=?]1G[j1 +EJJV#"&<>k1G[v1 <+EJJW\WbWbc6#"&w1G[B2 D4UZZQVQ^Q^`e`k`kl ,U]]ENNEKKY^YcYcejeoeo p(,&+'CC2G[T2 Fzz(

S ,U]]ENNEKKY^YcYcejeoeo p(,+//4 %]X]]:%>@RTij
U2G[j2 Fzz(

S ,U]]ENNEKKY^YcYcejeoeo p(,+//4 %]X]]:%>@RTij
k2G[@3 F(G!.u}}enn!M ,U]]ENNEKK X(,(,+/&*,:D+A$]X]]:%>@R%A-2^^,=? %]X]]:%>@R%6-2^^,=? %]X]]:%>@R%>-2^^,=? %]X]]:%>@R%K-2[[N< %]X]]:%>@R%3-2]],<168% !A3G[D4 K(G!.u}}enn!M ,U]]ENNEKKY^YcYcejeoeo p(,(,+/&*%-\\-5]]/3,:D+A$]X]]:%>@R%A-2^^,=? %]X]]:%>@R%6-2^^,=? %]X]]:%>@R%>-2^^,=? %]X]]:%>@R%K-2[[N< %]X]]:%>%;-2^^,=? %]X]]:%>Z_inisishuv %]X]]:%>@R%3-2]],<> %- %s4/H/  10(.9$ 2E4G[j5 6.,U^^U]]K 25==%.. Q+EMM5>>J%)'+*.#''+'+'+'+#MHMM*$=?PRt,1NNEMM5==Z_ZgZg+hj $H$<$<oOe,1NNEMM5==+Y[	k5G[R6 6MHMM*\]%'EG
 -.0##"&&+#"' 4!S6G[v6 7/1##"&&+#"'MHMM*]^%'EG
  H446H.YH446OQ`aw6G[d7 7xx'

ENNC+EMM5>>5;;X]XbXbc'+*.#H$<$<$3$:+00aN<L0a+ac $('+'+'+'+%)#+e7G[H8 6jj+EJJ

ENNS#EMM5>>5;;PUPZPZ\a\f\fg0#"&I8G[X8 8ll+EJJ

ENNS90#"&Y8G[h8 8ll+EJJ

ENNS90#"&i8G[x8 !,.!@ 7 9W D  H#:#<#FI=? $	' MHMM*5|EabMHMM*5|ZPMHMM*5z;OMHMM*5|EWXMHMM*5|EefMHMM*57PRabMHMM*57PRabMHMM*5~GWXMHMM*5~G[\MHMM*5~WMHMM*5yB`aMHMM*5yB`a MHMM*57IKbcMHMM*57I>Z MHMM*57IK]^MHMM*57IKabMHMM*5zC`aMHMM*5zCijMHMM*5zCWXMHMM*5zCuvMHMM*57GImnO(1y8G[\: ;$U^^U]]C%!"$<i MHMM*5|EabMHMM*5z;OMHMM*5|EefMHMM*57PRabMHMM*57PRabMHMM*5~GWXMHMM*5~G[\MHMM*5~WMHMM*5yB`aMHMM*5yB`aMHMM*57IKbcMHMM*57I>ZMHMM*57IK]^MHMM*57IKabMHMM*57IKbcMHMM*5zC`aMHMM*5zCijMHMM*5zCWXE#,]:G[v; 4,6 @}}'')<@*0%..$27--2G  H J'

EJJO'+*.)-&9#MHMM*$=?PRq,1JJ=:w;G[T< N((U^^D ,U]]ENNEKKY^YcYcejeoeo p&++/T+B04 %]X]]:%>	Kij$]X]]:%>@R-2^^,=? %]X]]:%>@RTz-2ZZM; %]X]]:%>@RT}-2]],<>$%6sPT[_G`7a%b%79RTU<G[B= 7kkxx,UZZH+EMM5>>J '+*. $MHMM*$=?PRij#MHMM*$=?PRno#MHMM*$=?PRmn#MHMM*$=?PRjk#MHMM*$=?PRlm#MHMM*$=?PRkl
 $MHMM*$=?PRq.8:#MHMM*$=?PRq.8:#MHMM*$=?PRt.8:#C=G[|=  /xx-$3EJJ

ENN[+EMM5>>J0%..$1GHJ'+*.#''+'+'+'+%))-/}=G[\> D((.(U^^U]]S ,U]]ENNEKK X(,&+]>G[n> 7,.;57HI" H44lMRH44lJO	
o>G[D? D

((U^^U]]S ,U]]ENNEKKY^YcYc d(,&+E?G[V? 6ww+EKK8 %'+*. /4 $H$<$<>OQjkW?G[p? :0U[[16ekk16M #"&&+H446NPtu
 MHMM*5yB`jojwjwy~  zI  zI  jJ  KMHMM*5H^_MHMM*57LM	 &+42+4q?G[\@ 6

;"02]@G[d@ :>#EMM5>>5;;O#"&424e@G[r@ D+(U^^U]]S(,&+s@G[BA :+ENNEMMJ#EMM5>>5;;O#"24 H446NPtuH44lDdeH44noVH44nFVWH44nFZ[ H44iA_inivivhxy H44lDVW
 MHMM*5yB`$)LL?H%CAG[|A :+ENNEMMJ#EMM5>>5;;O#"2D. H446NPtuH44lDdeH44noVH44nFVW H44iA_inivivhxy H44lDVW
 MHMM*5yB`$)LL?H#}AG[vB :+EJJG#EMM5>>B#"24 H446NPtuH44lDdeH44noVH44nFVWH44nFZ[H44iA_inivivhxy H44lDVW H44lL$)KKekk#JX^`H44lDX$)KKekk#JX^` MHMM*5yB`$)LL?H/!wBG[zC :+EJJG#EMM5>>B#"2D. H446NPtuH44lDdeH44noVH44nFVWH44iA_inivivhxy H44lDVW H44lL$)KKekk#JX^`H44lDX$)KKekk#JX^` MHMM*5yB`$)LL?H-!{CG[~D 5vv#3EJJ

ENN[ 9%**ejjRWR`R`bgbmbm n)G

TYTbTbdidodo)p+EMM5>>J%)'+*.)-0%..$1GHJ#MHMM*$=?PRt05u||U]]>[.8: .<Fbmn-o%qDG[dE 7xx#0%..$1GHJ3EJJ

ENN[+EMM5>>J%)'+*.)-#MHMM*$=?PRt05u||U]]>[.8: .<Fbmn-o!qeEG[FF 6ww#3EJJ

ENN[+EMM5>>J%)'+*.)-0%..$1GHJ#MHMM*$=?PRt,1LL%--+HJ
 .<Fbmn-oqGFG[fF G4UZZU^^\(,(,+/.3*.!%/4
 %X%=%=|Mmn$X%=%=~O_`$X%=%=~_$X%=%=~Ocd %- %%e1L/  )e	 'gFG[\G K9%..%--X!3ENNEMM!R ,U]]ENN K(,+//4 %X%=%=?QShv|}
]GG[rG <$U^^UZZ@#EMM5>>B#"&57sGG[~G =~~0%..$27--2G  H J3EJJ

ENN[+EMM5>>5::W\WaWab%* $MHMM*$=?PRl+DUZZQVQ_Q_+`b#MHMM*$=|Mm+DUZZQVQ_Q_+`bGG[jH D%(U^^U]]S ,U]]ENNEJJX]XcXc d(,&+kHG[|H ;oo,.##"&#%57}HG[NI 4hh,.##"&&+.57HI H44iA_`H44lJOH44lDVWOIG[@J :nn,.#&+"&4MHMM*5|Z(-u}}oGMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oGMHMM*JK(*SUW )*HI#KAJG[dJ =+EJJ

ENNTYT_T_`#EMM5>>5::uzz[`[f[fg75#"&&+eJG[vJ +EJJ

ENNS#EMM5>>5::uzz[`[f[fg:8#"&&+wJG[NK ?+EJJ

ENNS#EMM5>>5;;O#"&97 MHMM*5|Ed$)JJ<>KOKG[fK <0O)6#"'#"&&+ MHMM*57KMa$)JJ<UD
 !gKG[JL 8%+EMM5>>J6u}} a:E :?8H]_a $EMM5>>B!%)##"&&+%&:uM MHMM*5|]`f  wB  sB  C-u}}ctRS>T.UV(*FTZ&46 -u}}ctRS>T.UV(*&&46
 -u}}cqt>T.UV(*F(-/ $}}ct$&?D(A&   !562 H44lJOMHMM(3(*F(-uzzmE MHMM*5|(-uzzmE MHMM*5H^(-uzzmEM3KLG[rM 51u~~uzzJ#EMM5>>5;;OF"&#%sMG[DN 5/u~~uzzJ#EMM5>>5;;O#"&D	ENG[XN 8>#EMM5>>5;;O#"&0%&=V[\^YNG[jN ;>#"&%&=V[\^kNG[xN :0U^^L#EMM5>>B3#&+"&-u}}ctRV>W.XY(*>FT-u}}ctRV>W.XY02FTZ\yNG[VO :'0U^^L#EMM5>>B<#&+"&-u}}ctRV>W.XY(*>FT-u}}ctRV>W.XY02FTZ\WOG[vO :0U^^L#EMM5>>B3#&+"&-u}}ctRV>W.XY(*>FTwOG[PP :'0U^^L#EMM5>>B<#&+"&$}}ct$&?}}ct$&?&   '% $}}ct$&?}}ct$&?&  ('%QPG[LQ :/{{+ENNEJJV#EMM5>>B%&<jQ MHMM*5yB`a MHMM*57OQuvMHMM*57OQ{| "&#&+/.MQG[|Q :. ,ENNEJJV#EMM5>>B%&<fM
 H446NPtu	 "%'"&#&+).}QG[fR 51u~~uzzJ#EMM5>>5;;OF"&#gRG[xR 5/u~~uzzJ#"&DyRG[JS : ">#"& ',-KSG[\S = ">#"& ',-]SG[nS "U]]ENNEJJG L #JJ#( 119>XY113EG\jpq	
oSG[PT U]]ENNEJJG L #JJ#( 113EG\jpq
QTG[hT "U]]ENNEJJG L #JJ#( 119>XY11+.%+-	
iTG[PU U]]ENNEJJG L #JJ#( 11+.%+-
QUG[pU M4UZZU^^\ ,U]]ENNEKKY^YcYcejeoeo p&+(,/46qUG[~U L4UZZU^^\ ,U]]ENNEJJX]XbXb c&+(,/46UG[LV M4UZZU^^\ ,U]]ENNEJJX]XbXb c&+(,/4MVG[^V M-ejj9 ,UZZ 8%-]]-5]]&+/3 %X%=%=?Q%:P_VG[xV L-ejj9 ,UZZ 8%-\\-5\\&+/3 %X%=%=%7%:179yVG[VW M-ejj9 ,UZZ 8%-\\-5]]&+/3 %X%=%=%7%:179WWG[tW K )U]]ENNS ,U]]ENNEKK X&+/4 %X%=%=%7%:< %X%=%=zKkl$]X]]:%>%7%NP
uWG[\X E-/&+/4	6]XG[fX E-/&+/4$X%=%=%7%K-2ZZM;=	>gXG[zX I

4UZZPUP^P^_'<&:&+!&/4$X%=%=%1%6@P@P?RT %X%=%=%7%:< %X%=%=zKkl$]X]]:%>%7%NP{XG[jY 9@6$UZZ@#EMM5>>B;%)!#"&kYG[BZ 9@)+EJJu~~V#EMM5>>B%&CPTU!#"&
CZG[XZ  99>>00*!%..%--@> #119>\fkfsfseuv
YZG[zZ "$UZZ@;%*"#"&{ZG[L[ ")+EMM5>>J%&CPTU"#"&M[G[^[ %!%--@6 #!5==#4d2K"LM.!	
 ((."	 'bc!&5B
_[G[Z\ $0U^^L5#"&	([\G[d\ 9 C

EMM5>>J#EMM5>>5;;PUPZPZ[,."3;=e\G[t\ <+EJJu~~W\WbWbc#EMM5>>5;;PUPZPZ\a\f\fg#"&.36 H44lD`aMHMM*RS(*JL MHMM*RS(*OQ MHMM*RSUceuvMHMM*RSUcetuMHMM*;<>PQMHMM*;<>PQu\G[d] <,+EJJu~~W\WbWbc#EMM5>>5;;PUPZPZ\a\f\fg#"&.3D H44lD`aH44lDijH44lDdeH44lDVWH44iA_`H446HJa$)OOU5E5E#FHH446HJ`aH446HJhiH446HJ]^H446HJabH446MFHH44oG]^MHMM*IJN[MHMM*UVXd;= H44jBUVH44jB^_H44jBghH44jBst5%e]G[p^ +EJJu~~W\WbWbc#"&.36 H44lD`aMHMM*RS(*JL MHMM*RS(*OQ MHMM*RSUceuvMHMM*RSUcetuMHMM*;<>PQMHMM*;<>PQH446FH\]q^G[`_ +EJJu~~W\WbWbc#"&.3><MHMM*VWYe  hD  EMHMM*_`bn  qQ  RMHMM*@A<QvwH446H.YH446HJ`aMHMM*QRTfh  AMHMM*YZ\hj~BCa_G[D` (*$UZZ@#EMM5>>B%)"&=; MHMM*57IKab H446HJ\]H44iA_`MHMM*FGWkl-u}}cuSX>Y.Z[(*>ESE`G[p` ($U]]ENNC#EMM5>>B#"&%)011v12A= H44lDVdijH44lJ\bc MHMM*57IKabH44iA_`H44lDVWMHMM*57GI]^MHMM*57GU-u}}ctRV>W.XY57HJ!q`G[la %/$U]]ENNC#EMM5>>B#"&%)011v12AD H44lDVdijH44lJ\bc MHMM*57IKabH44iA_`H44lDVW-u}}ctRV>W.XY57HJmaG[bb $iinn44.$U]]ENNC#"&%)011v12AC H44lDVdijH44lJ\bc MHMM*57IKabH44iA_`-u}}ctRV>W.XY57HJ H44lD`ntuH44&(Zhnp MHMM*57OQuvH44lJOH44lDVW+!cbG[fc ,($UZZ@#"&$emmSf45P%QR''%	 >?gcG[Dd .$UZZ@#EMM5>>5==Q#"& 4=?AEdG[Vd .$UZZ@#EMM5>>5==Q H44iA_`
 #"& 4=?'AWdG[~d .$UZZ@*5::u~~F#EMM5>>5==Q H44iA_`  $#"& 4=?1AdG[pe .$UZZ@#"&&+ 4=?	AqeG[Df .$UZZ@ H44iA_`
 #"&&+ 4=?)AEfG[nf .$U^^UZZ@ H44iA_` #"&&+ 4=?-AofG[\g %!!#"&$U[[%--P*5==%..I#EMM5>>5==Q 4457]gG[tg %!!#"&$U[[1*5==%..I#EMM5>>5==Q 445 H44lJ\abugG[Rh 84 #!%**enn= N1Ij).'	
ShG[zh ,    UZZ8 N;# "{hG[Zi + )ehh.A.A.R.RS'(0emmU^^\6u}}ekk7<~~G<#"&%) 4$emmSe'5R%UV!AvW $ekk3Dt3L%OP!FH $ekk3F3P%ST!57 $ejj#4d2K%NO')=5R  MHMM*5yB`$)OO#57 H44oG]$)OOU5E5E#FH H44iA_$)KK>3 H44lDT$)KK>3 W+ [iG[rj  0 '( )ehh.A.A.R.RS0emmU^^\#EMM5>>B6u}}ekk7<~~G<##"&%) 4$emmSe'5R%UV!AvW $emmSe%5P%ST!=6S $ekk3Dt3L%OP!FH $ejj#4d2K%NO')=5RS  MHMM*5yB`aH44oG]$)OOU5E5E#FH H44lDT$)KK>3 H44lDT$)LL%--#@BMHMM*FGWklH446LNa$)OOU5E5E#FH$ a0 sjG[Tl +'( )ehh.A.A.R.RS0emmU^^\6}}ekk5>>;<#"&%)# 4$emmSd5N%QR')=6S $emmSe'5R%*__cwW6U&W X!AvW $emmSe%5P%ST,o6S $emmSgG5T%*__cwW6U&W X!=6S $emmSe%5P%ST,.?V') $eoos47P%QR!#3I $ekk3Dt3L%OP!FH $ejj#4d2K%NO')=5R3S> MHMM*5yB`aH44lDT$)KK>3 H44lDT$)LL%--#@BMHMM*FGWklH44oG]$)OOU5E5E#FHMHMM*=>Ns$)OO#4P" {= UlG[Pn  % 0emmU^^\6u}}ekk7<~~G#EMM5>>B20#"&%) 4$ekk3Dt3L%MN!F $emmSd5N%OP')=6	 MHMM*5yB`a H446L/%JZJZ8[] H44o2EOOUM]M];^` %)K% QnG[\o  & & &  1emmU^^\&  7u}}ekk7<~~G	&  $EMM5>>B&  &&:;&  1&  !5&   $&   $&  #'&  &*&   $ekk3Dt3L%MN!F $emmSd5N%OP')=	& 8 MHMM*BCYPno H446L/%JZJZ8[] H44o2EOOUM]M];^`3& J %)K& L M& ]oG[jp  0 0ennemm\6u}}ekkSXSaSab#EMM5>>B20 4##"&$ekk3Dt3L%MN!F
 $emmSd5N%*__ct$6O&Q R!=
 $eoos47P%QR!#3 $emmSd5N%OP"N $emmSd5N%OP')='6 MHMM*5yB`aH44o2EOOUM]M];^` MHMM*5|EWX
 %)a0 kpG[Lr %!"#$U]]ENNC#"&4 H44iA_inivivhxy$emmSe%5P%QR'$		
 7!<$(-+MrG[zr ($U]]ENNC#EMM5>>B#"&0>/N H44iA_inivivhxy
 :$(+{rG[Xs %!3"#$UZZ@#"&%)$emmSe%5P%QR!2 MHMM*?@,Pde 7$(%+YsG[~s # !0U^^L#"&42	5sG[Rt .$U[[%--P*5==%..I#"& H44iA_inivivhxy
 @BStG[jt #"&+EJJ

S; ++_)5::-AktG[Du '&##"&+EJJ

S%&:L	EuG[Xu &#"&+ENNEJJG%&:K
 MHMM*5yB`jojwjwiyz	 !5YuG[tu (#"&+EJJG%&:M
 MHMM*5yB`jojwjwiyz	 !5uuG[Pv 1#"&+EJJGE
 MHMM*5yB`jojwjwiyzMHMM*FGIZ[ !5QvG[pv '+EJJ

S%&:L#"&#&+
 MHMM*5yB`jojwjwiyzMHMM*YZ\hj~ #qvG[Tw $ 2!!5$U^^UZZ@!#"&&7%8:UwG[lw !0U^^UZZX6uzz5>>SXS]S]^5##"& MHMM*CDiQopmwG[Jx &"&!"&#$U[[%**ennM%&?K
 H44iA_`	 KxG[hx &",!"&#$UZZM%&?Q
 H44iA_`H44oGghH44oGdeH446OQij H446GH +ixG[Ty &"%!"&#$UZZ@%&?J
 H44iA_`	 UyG[ry &"'"&!#$U[[%**ennM*5::u~~F 4%&?L!()Ez!R
 H44iA_`	 #syG[Vz &"&!#"&$U[[%**ennM*5::u~~F%&?K!()Ey!Q 4
 H44iA_`	 #WzG[zz &"(!#"&$UZZ@ 4%&?M
 H44iA_`	 {zG[Z{ &"#!#"&$UZZ@*5::u~~F%&?H 4
 H44iA_`	 ![{G[|{ ,!#"&$U[[%**ennM*5::u~~F 4%&<jI!()BJ!O
 H44iA_`	 }{G[\| $iinn44.!#"&$U[[1*5::u~~F 4%&?LH44iA_`H446FH\]H446JL`aH44noV	]|G[~| (!%**enn= "#5O7|G[P} +!#"&$U[[%**ennM 4%&<iH
 H44iA_`	 Q}G[l} +UZZ8<:B #%m}G[~} )'F:@8!5==#4d2K"LM.
}G[`~ .'F?E=	a~G[t~ %!36$U^^U]]CO!!!#"&&8%9;u~G[R 3!%**enn=D #!5==#4d2K"LM.
 !5==#4f2M"NO$$"	
"  j)."	
)!SG[V@ %!!#"&$U[[%--P*5==%..I45H44lJ\bcW@G[n@ 0!#"&c ',$U^^U]]CA H446NPtu H44iA_`b MHMM*GH,Xjkn%oo@G[VA 0!#"&c ',$U^^U]]C 4A
 H446NPtu H44iA_`b MHMM*GH,Xjkn+oWAG[DB %!!#"&&+%*$U^^U]]C*5==%..I MHMM*ABO2ENN;LN
 MHMM*5z;O 54-6EBG[rB %!#"'#"&&+%)u~~>*5==%..I446sBG[RC  ! $("'#"&&+%*$U^^U]]C4 MHMM*5|ZPH44lDVWH446NPtuH44iA_`!SCG[DD %!##"&&+%*>*5==%..I 444!6EDG[fD '#!#"&%*$U]]ENNC6 MHMM*57I>ZMHMM*57IK]^MHMM*57IKa+3|6MHMM*57PRc(-/MHMM*5|E_`gDG[VE '##!#"&%*$U]]ENNC;	=WEG[jE '#!#"&%*$U]]ENNC6 MHMM*57IKa+3|6MHMM*57IK]^MHMM*57I>ZMHMM*57PRcdMHMM*5|E_`kEG[XF '####"&#%*$U]]ENNC;=YFG[rF '###"&%*$U]]ENNC6 MHMM*57IKa+3|6MHMM*57IK]^MHMM*57I>ZMHMM*57PRcdMHMM*5|E_`sFG[bG '##!#"&%*$U]]ENNC;	=cGG[vG !!!2+EMM5>>J6u}}ennU6u}}ennU!?u~~!^ !5#"&&+$( H44lJO#wGG[`H #!4u~~>*5== g@K~U^^,<ceg -u}}cuSZ>[.\]02FTY[ MHMM*5|]`f  wB  sB  CMHMM*5H^hmhvhvgxy  $#"&)aHG[JI #/$U^^U]]C#"&KIG[\I )H!%..%--@ #-< !MM3E#@NNCU$A#  "v!]IG[RJ 3r "%..%--@ #7,.4
 119>\]	a%SJG[BK P!%..%--@ #-= !MM3E#@NNCU$A#  "vCKG[rK )6P^!%..1'u~~F* #_.,!MM3E#@NNCU$A#  "v 113KMqr119>\] 113E79 '89;LNef'89;LNjk'89;LNfg'89;LNij'DE|Ughj 15Q)sKG[FM  "%..%--@ #K!MM3Dv#>NNCT$?#  "vGMG[tM 2} ]e&9&9%;;!;@.B[\] z2L-%+- z24OQj!&!4!4 68
uMG[ZN .UZZD5"& #38119>\]
[NG[xN 4cE!%--@!##( !2]]CU67"9:FI L z24Mlrsz2L-%+7N7PT[7[]z2LB^!& 02 z2I?]^z24FH^_z24FH_%*, z24FHZ%*, z2J@]%*,z2J@f%*, z24M%*, z24LNrsy1<AUV'YZ\hj|}z24HJ^_z24OQj%+U^^4EU`Q`b 'fg24D%+U^^U]]TYTaTa4b#1#Y6Y[K(]5yNG[dP 1@} "%--0%--8$!#(#DDFuvw 113Lokqr11<A]kqr119>\jpq113Lokqr
ePG[PQ 5D} "%--?%--G$!#( $ >>@st~'hik
 113Lokqr11<A]kqr119>\jpq113Lokqr
%QQG[FR *9!%..%--@ #K!MM3Dt#<NNCT$=#  "v z24EGg!&UD
 $0./GRG[JS #!"_!K!MM3Dt#<NNCT$=#  "v z24EGg!&1 11<Oz2*,K!&%-- @B z2*,K!& 24 z2*,N!& 245)"6KSG[PT #1!!%..%--@  3 3 ? ?N!5==#5u2M"NOQbpvy|
 113EG^_11*,N%+$25	8QTG[~T "1 !%**enn= # !5==$"MN!#BD !5==$"MN!#BD !5==$"MN!#EG

 11<ASafg
/TG[vU *8!%..%--@ # 3 3 8 8$G!5==#5u2M"NOQbehwUG[VV  )(G.u}}ennejjY #!5==#5w2O"PQSdgj z24EGf!&EJJ 79;WVG[zV "$(U^^D #z24EGg%*ELL%--3PR!5>>3E3P"QRTeh*EOOSeRW=X,1NNCUQX<Y,[ \*,N\bd
 'LM*,K!&%2B2B CPX[ 'LM*,N!&%2B2B CQV$,$:
=	
 #1_#="{VG[@X !ZUZZ8M #B 3#AXG[fX +<:(U^^D #gXG[xX 9"#DTXY:(U^^D # ((.
 (((4
yXG[fY K-ennejjI&+/46gYG[nY ;(

S #+ j).!	 j)$ j)'2
 j)(4)
"oYG[tZ 6>#"&%)02uZG[D[ %!$U]]ENNC#"&%)011v12A6 H44oG]^MHMM*5H^(-u~~u}}6UW-u}}cuSX>Y.Z[57HV[]E[G[j[ %,!-*5==%..I#"&011v12A.-u}}cuSX>Y.Z[%'EG 78k[G[J\ ,:=!%--@'u~~F! # j)%
 j)& j)) "	 !5==#4d2K"LM. 11:?\]11:?ef11:?qr7
> ((.
Q0K\G[p] H-ennemmL7!/!1/4&+ %X%=%=y%?Aq]G[B_ I-ennemmL8!/!1&+/4 %X%=%=y%?A
C_G[V` -)&;,U^^U]]K'+*.%*&>%<>W`G[h` -)&;,U^^U]]K%)&>'+*..@-ACi`G[z` +'&9,UZZekkSXS^S^`e`j`jlqlzlz{#0U^^#L);EMM5>>)Z%)&<%: %'+*..>-?A{`G[Ta -!+~.!!0$U^^UZZ@!#"&&2^ MHMM*5|ZPMHMM*FGWkl	UaG[za ($'

ENNC#5ejj%..#Q%) %'+*..;_>{aG[Lb 4+EMM5>>J6u}}ennU!#"&.  8==,., ??E,<,<=	?MbG[jb 6jju~~uzzJ#"& H44lDVW
  8==,% ==*% 1)3kbG[Tc > )-/'XZUcG[\c > )-/'XZ]cG[dc > )-/'XZecG[lc D*4UZZQVQ^Q^_(,&+mcG[|c 8+EJJW\WbWbc#"&%&FRVW!()LX\!]$%DPT]bc H446OQ`aH446OQ`aH446OQbcH44nFVWH44noV}cG[\d =+EJJW\WbWbc$"'"%&FRWX!()LX]!^$%DPU^cd H44lJOH44lDVWH44jBV(.0H44jB_(.0H44jBh(.0H44jBtu]dG[Je ;+EJJVA#"&!86 ++Z9kKeG[je 5){{3EJJPUP[P[\%5'+*.#''+'+'+'+%)+keG[Df 6jj0U^^L## ',"&02EfG[\f 7kk+EJJu~~V#"&&+14]fG[nf 7kk,.#$"'1/+->? H44lJOofG[Jg 9||+EJJu~~W\WbWbc!"$%'%)#"& 3!9;KgG[dg >+EJJu~~W\WbWbc!%)#"&!3!9H44iA_inivivhxyegG[~g  <4UZZP!:5::u~~W\WbWb!c %C5::u~~$^*HY^YcYcejepep*q(,.3(,+/&*/3+/A;+/A;$%6RV]dIe7f%g%79RT$%6RV]dIe8=8H8H#SW^eJf8h &i%79NP  %X%=%=?QSy-2ZZekkSXS^S^,_a$X%=%=?QSy-2[[%++u{{,SU %]X]]:%>l-2__,>.Z %]X]]:%>Nb-2__,>@$]X]]:%>Ns-2__,>.Z$]X]]:%>@RTk-2__,>@$]X]]:%>@RTe-2__,>@$]X]]:%>@RTm-2__,>@$]X]]:%>@RTz-2__eoouO_O_,`b$]X]]:%>@RTz-2__eoouO_O_,`b$]X]]:%>@RT}-2__eoouO_O_,`b?!7<gG[xi M4UZZQVQ[Q[\*.(,(,+//3+/A;+/A;$%6RV]dIe8=8H8H#SW^eJf8h &i%79NP  %]X]]:%>@RTij$]X]]:%>	Kij$]X]]:%>@RTz-2__e>N>N,OQ$]X]]:%>@RTz-2__e>N>N,OQ$]X]]:%>@RT}-2__e>N>N,OQ %X%=%=zK^-2^^U]]EMM,Z\%"yiG[~j 4hh,.;#"&"'+->?AjG[Pk 9zz0%..$27--2G  H J'

EJJO'+*.#''+'+'+'+)-/QkG[jk 6ww3EJJPUPZPZ\a\g\gh %'+*..3 $H$<$<>OQjkkkG[Bl GG(U^^UZZQVQ\Q\]+ #-)+
ClG[Xl (U^^UZZP,  #.
YlG[rl 7xx-'

ENNC'+*.#H$<$<$3$:+00aN<L0a+ac $MHMM*$=$3$:,1NN+<>	 $('+'+'+'+%)+slG[`m 7xx%1-,UZZH!`&-.MZdfgYh&i'+*.%*',
.amG[vm 7xx%1-,U^^< 25::u~~ N!`&-.MZdfgYh&i $MHMM*$=|L#MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=~N#$5u~~sPT[`Ga6b$c$57Y068 $$5u~~sPT[`Ga6b$c$57W068 (,*.%*',3.wmG[jn 7xx%5-,U^^< 25::u~~ N!b&-.MZdfhYi&j $MHMM*$=|L#MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=~N (,*.%*','.knG[Ro  Lvv3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)(-#''+'+'+'+'+*.)- $MHMM*$=?PRq,1MM+;Q#MHMM*$=?PRt,1LL%--+IW\hrt#MHMM*$=?PRq,1LL%--+IW\hrt#MHMM2Z$[$;=RT
  1%..$1GHJ3LSoG[Fp 60,3EJJ

ENN[(-'+*.)-/GpG[Vp 6?H3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+*.#''+'+'+'+)-0%--1FGI#MHMM*$=?PRt05u||U]]>[/7/E:H $MHMM*$=?PRq05u||U]]>[/7/E:H $MHMM*$=?PRq,1MM+;= $MHMM*$=?PRq05uzzlL#MHMM2Z$[$;=RTWpG[Pq 6%'

ENNEJJO -ejj%..%** U'+*.#''+'+'+'+ $MHMM*$=?PRt,1NNEMM5==Z_ZgZg+hjQqG[pq 5$3EJJPUPZPZ\a\g\gh#A%..RWR\R\#])GX]XbXbdidodo)p'+*.#''+'+'+'+ $MHMM*$=?PRt,1NNEMM5==Z_ZgZg+hj#MHMM2Z$[$;=RT	qqG[Vr 7+ENNEJJ

TYT_T_`%&9UK#"&"$%'!#WrG[hr 7 /(+ENNEJJ

S%&9TJ#"&	irG[~r >+ENNEJJ

TYT_T_`%&9UK#"&"$%'!&+	-rG[Rs +ENNEJJ

TYT_T_`<"$%'#"&!#SsG[ds "+ENNEJJ

TYT_T_`<#"& H44lDbc	esG[xs J||,,4U^^UZZQVQ[Q[\!&$X%=%=?WY}~$X%=%=yJhj
 '+(,+//:m>ysG[Rt J||,,4U^^UZZQVQ[Q[\*.,:D+A(,!& %X%=%=?QShi$X%=%=?WY}~$X%=%=yJhj	 )-+/&*/:<N.O#RStG[vt J||,,4U^^UZZQVQ[Q[\!&$X%=%=?WY}~$X%=%=yJhj '+(,+//:m>wtG[Nu J||,,-ejj9!&&+(,$X%=%=?WY}~OuG[`u I||++-ejj9!&&+(,$X%=%=?WY}~auG[ru J||,,-ejj9!&&+(,$X%=%=?WY}~suG[Dv =ll&&+ENNEMMJ6u}} a:E :?8H]_a "%&:tL##"&&+ MHMM*5|]`f  wB  sB  C-uU\@].^_*,<>-u}}cuSZ>[.\](*FH-uUZ@[.\](*>F&46
 H446NPtuH44iA_aMHMM(3(*F(-uzzmE
 MHMM*5|QV`e`j`j_lmMHMM*5H^(-uzzmE3&EvG[Rw J||,,-ennejjJ!.u~~uzz!J(,!&(,+//3$X%=%=?WY}~$X%=%=yJhj '+/@.A'DSwG[zw J||,,4U^^UZZP %>ennejj$Y!&(,+//3$X%=%=?WY}~$X%=%=yJhj$]X]]:%>@RS$]X]]:%>@RS '+/:m%>{wG[`x J||,,4U^^UZZP(,+/!&/3$X%=%=?WY}~$X%=%=yJhj '+/;n?axG[zx F4U^^UZZP(,+/!&.3&*'<>{xG[Jy 8/+ENNEJJ

TYT_T_`2%)#"&KyG[Zy 

EJJG:#"&[yG[fy 7iinn""))+ENNEJJ

TYT_T_`1##"&#%*	gyG[zy ?

EJJG9##"&{yG[Jz 9zz'

ENNEJJO#''+'+'+'+%*-KzG[\z  (avv3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n+0%//3EX]C^1_`02T+1 3 5 &*'+*.#''+'+'+'+)-#MHMM*$=?PRt05u||U]]>[/7/E:H $MHMM*$=?PRq05u||U]]>[/7/E:H $MHMM2Z$[$;=RT $(8==4//#(=="2'-, .<!LW[W^W^.`O(a]zG[n{  #$ww#$&5#$ 3#$  1%..$1GH+#4eoosPU\aGb5c#d#46X/5 79	#$ 4EJJ

ENN[#$ !:%++uzzSXS]S]_d_m_m n#$ &*#$ .2#$ (,#$ +/#$ $(#$  (,!#$" (,##$$ (,%#$& (,'#$( *.)#$, $MHMM*$=?PRt05u||U]]>[/7/E:H $MHMM*$=?PRq05u||U]]>[/7/E:H $MHMM2Z$[$;=RT	+#$@ .<"j !.#A#$o{G[v| >~~+EJJV1%**ennemm\#"& H446OQ`aH446OQ`aH446OQbc	 9;w|G[R} 8+EOOUZZY^YfYfg#"&&+203S}G[d} 8+EOOUZZY^YfYfg#"&&+203e}G[v} 8+EOOUZZY^YfYfg#"&&+203w}G[H~ $$,.8"'#"&o  $emmSd5N%OP$&9u H44lJOH446HJa#=#?AMHMM*5|Z(-u}}oGMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oG!I~G[B 7$xx'

ENNC'+*.#'#H$<$<$3$:+00aN<L0a+ac (,'+'+'+%)#+CG[f 6-?H3EJJ

ENN['+*.)-#MHMM*$=?PRq,1MM?< $MHMM*$=?PRt05u||U]]>[gqs	gG[B@ 7.?I3EJJ

ENN['+*.#''+'+'+'+)-%)#MHMM*$=?PRq06@P@P?QS#MHMM2Z$[$;=RTC@G[h@ <}}'

EJJO -ejj%**enn U'+*.#'#MHMM2Z$[$;=RT"<=i@G[LA <?N3EJJ

ENN[%)'+*.)- $MHMM*$=?PRt,1LL%--+HJMAG[dA 7:#3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n0%**d1CDF%)'+*.)-#MHMM*$=?PRt,1LL%--+HJ
 $H$<$<>OQp,1KK>;eAG[JB  ww#'#3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+'+'+'+'+*.)-(%..$)?@#,ekk3Dq;Q-RS,.MO $MHMM*$=?PRq05u||U]]>[.68 $MHMM2Z$[$;=RT)KBG[BC 8yy3EJJu~~^0%//4Y]1^_a'+*. $MHMM*$=?PRq,1LL%--+HJ $MHMM*$=?PRt06emm?\^#H$<$<jJ],1JJ<9#H$<$<jJf,1JJ<9#H$<$<jJo,1JJ<9#CCG[vC 60L6u{{EJJPUP^P^_0#"&!#wCG[DD 7xx3EJJPUP]P]^ 9%++uzz R0%--27..$2H  I K#A%..RWR_R_#`)G)T'+*.'+'+'+'+-1 $H$<$<>OQp,1NNEMM5==Z_ZgZg+hkEDG[lD :{{3EJJPUP]P]_d_j_jk %%*	,mDG[vD 7xx3EJJPUP]P]_d_j_jk %#''+'+'+'+%*	,wDG[JE :{{'

ENNEMMR#''+'+'+'+%*,KEG[\E :{{'

ENNEMMR#''+'+'+'+%*,]EG[nE 8yy3EJJPUP]P]_d_j_jk %%*	,oEG[xE 7xx3EJJPUP]P]^ %#''+'+'+'+%*	,yEG[LF 8 H+EJJG6uzz5>>R!?

ENN![#"&&+2H446NPtu MHMM*5yB`aMFG[tF 5ii,./##"&&+#"'57H-X  8==,., ??E,<,<=	?
 MHMM*5|Z(-u}}oGMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oGuFG[jG = -.##"'&+"&#7+->#$5u}}cu[`Fa7<QV]bHc7e %f$02NP $MHMM2E$F$6$;,1,<,<+=? H446NPtuH44iA_`MHMM*GH,XjkH446QSl$)OOU5E5E#FHH&?ARS	9%kGG[vH = -.#&+#"'#"&7+->#$5u}}cu[`Fa7<QV]bHc7e %f$02NP $$5u}}cu[`Fa6b$c$3[B
 $MHMM2E$F$6$;,1,<,<+=? $,emmSdQU=V-WX/1ESY[& H446NPtuH44iA_`H446QSl$)OOU5E5E#FHMHMM*GH,XjkA(wHG[HJ G)+(,+/A;/4 %]X]]:%>@RTij$X%=%=zKkl %X%=%=?QSjk
IJG[rJ ;L%4.8*d'

EJJO -ejj%**enn U'+*.)-&=#H$<$<>VX|} "S-;FzEF.HIsJG[TK @ A UKG[VL 7xx+EJJu~~W\WbWbc#"&&+1	WLG[jL ?$&"9kLG[xL 9+EJJu~~W\WbWbc8!>6#"&yLG[JM <2+EJJu~~W\WbWbc%&@TR!()FSW!X$%>4P#"&H446NPtuKMG[bM 6,+EOOUZZX]XfXfg#"&%)8!>6H446NPtu H44jBtu	cMG[BN 9/+EOOUZZX]XfXfg#"&%&@TR!()FSW!X$%>4PH446NPtuH44jBtuCNG[^N <+EOOUZZX]XfXfg##"&&+9 H446NPtuH44iA_inivivhwx_NG[DO <+EOOUZZX]XfXfg##"&&+H446NPtuH44iA_inivivhwx :EOG[bO <+EOOUZZX]XfXfg##"&&+H446NPtuH44iA_inivivhwx :cOG[@P 9+EJJu~~W\WbWbc #"&&+3!9
APG[VP ;oo+EJJu~~W\WbWbc#"&5WPG[fP >+EJJu~~W\WbWbc#"&&+8;gPG[tP :nn,.#"'#"& 4=57HIMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oGuPG[VQ 8+EJJu~~V1%**emmU^^\2 4#"&0WQG[hQ <+EJJu~~W\WfWfg#"&&+ H446FHlmH446FHij	 2!()<!MOiQG[FR <+EJJu~~W\WfWfg#"&&+1!()<!M 4	6GRG[ZR >+EJJu~~W\WbWbc!?u~~_d_j_j!k1!()<!M6#"&%) 4	6[RG[nR ;+EJJu~~W\WbWbc#"&&+1!()<!M3 H44+2$)JJ=2 !5#6oRG[RS	G &F	GSSG[fS !+EMM5>>5::V%*##"&@MHMM*5H^_Hl4N$)MM#3zKgSG[@T 0+EMM5>>5::V%*##"&$emmSd5N%OP')=5 PHl4N$)MM#3zKATG[dT =+EJJu~~W\WbWbc##"&%*#ll&&H446NPtuMHMM*5yB`ntux 45eTG[BU ;+EJJu~~W\WbWbc%)#"&&+5MHMM)46H.bgboboap(.>;eNehCUG[^U 6

EMM5>>J%ejj%--P0#"&H44lDc$)JJ<VSaOac	_UG[rU 8

EMM5>>5<<Y^YeYeglgsgst2" H446NPtuH44iA_`MHMM*WXZfhz{	
sUG[HV 

EMM5>>J>" H446NPtuH44iA_`	IVG[\V 5+EJJu~~V#"&&+"'/1]VG[lV 6+EJJu~~V##"&0.0mVG[zV 9+EJJ

ENNS#"&3AC{VG[FW A(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]z2OE[\
GWG[dW =(UZZQVQ\Q\]3113KMqr119>\]
eWG[|W =(UZZP-113KMqr119>\]'[\^jl~	
}WG[XX =(UZZQVQ\Q\]3113KMqr119>\]'[\^jl~	
YXG[tX ?(UZZQVQ\Q\]3 #113KMqr119>\]
uXG[NY >(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]
OYG[jY =(UZZP3 113EF113EF113KMqr119>\]
kYG[HZ <(UZZP3113KMqr119>\]'[\^jl~	
IZG[bZ =(UZZQVQ\Q\]3113KMqr119>\]'[\^jl~	
cZG[|Z >(UZZP3113KMqr119>\]'[\^jl~	
}ZG[V[ <<(UZZQVQ\Q\]3 #113KMqr119>\]z2OE[\	
W[G[r[ <<(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]z2OE[\
s[G[P\ >(UZZQVQ\Q\]3 113EF113EF113KMqr11<Aa%*, 119>\]11>CS%*, 11>?%*, 11>CWX'
Q\G[H] <+EJJ

ENNTYT_T_`4!:" MHMM*546Z\ MHMM*5|EabMHMM*5yB`aMHMM*5~GWXMHMM*5~WMHMM*5~G[\MHMM*5H^_MHMM*57LMMHMM*5|EjkMHMM*5|EdeMHMM*RSUn+-MHMM*GH,Xjk1I]G[H^ <+EJJ

ENNTYT_T_`4"$@)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)hI^G[b^ ;+EJJ

ENNTYT_T_`4"c^G[p^ 70U^^U__]T1" MHMM*EFVrsMHMM*EFHacyzMHMM*EFHac{|H44lJ\abH44lDVWH446NPtuH44lDdeH44noVH44nFVWH44nFZ[H44iA_`H44lLQ%q^G[d_ <0U^^U__]H4"$@)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)hH446NPtuH44iA_`MHMM*ab(*OQMHMM*GH,Xjke_G[N` ;$UZZRWRaRachcscstH4"H446NPtuH44iA_`MHMM*ab(*OQMHMM*GH,XjkO`G[l` 9

ENN;@3" MHMM*EFVrsMHMM*EFHacyzMHMM*EFHac{|H44lJOH44lDVWH446NPtuH44lDdeH44noVH44nFVWH44nFZ[H44iA_`MHMM*5|E\$)MM5;;#?>['m`G[fa >

ENN;J8"H446NPtuH44iA_`MHMM*GH,Xjk	gaG[@b ;+EJJ

ENNS5"AbG[Nb ;E+EJJ

ENNTYT_T_`3H446NPtu #$ObG[`b :D+EJJ

ENNTYT_T_`3H446NPtu #$abG[rb 6jj" #+EJJ

ENNTYT_T_`6 H44lDdeH44noVH44nFVWH44nFZ[ MHMM*5yB`a H44lDVWsbG[\c 7kk"#+EJJ

ENNTYT_T_`6 H44lDdeH44noVH44nFVWH44nFZ[ MHMM*5yB`a H44lDVW]cG[Dd 6jj"#+EJJ

ENNTYT_T_`0 H44lDdeH44noVH44nFVWH44nFZ[MHMM*5yB`aH44lDVWH44oG]glgqgqfstEdG[ld ;E+EJJ

ENNTYT_T_`3H446NPtuMHMM*5yB`aMHMM*5|EefMHMM*5|EabMHMM*5~GWXMHMM*5~WMHMM*5~G[\MHMM*5H^_MHMM*57LMMHMM*5|EdeMHMM*QRTm+-MHMM*QR(*OQMHMM*GH,Xjk14 #?$mdG[le M+EJJ

ENNTYT_T_`%&;M" H446NPtuMHMM*57GI[\MHMM*57GIklMHMM*YZ(*JLMHMM*YZ(*FHMHMM*YZ*,<>MHMM*YZ*O=MHMM*YZ*,@BMHMM*YZ(*IKMHMM*YZ(*OQMHMM*YZ5HMHMM*YZ(*>@MHMM*YZ(,8MHMM*YZ%'EGMHMM*YZ35NPMHMM*YZ35SUMHMM*YZ35WYMHMM*YZ+-CEMHMM*GH,XjkK&,meG[Fg ?f+ENNEJJ

S"9 H446NPtuH44iA_`MHMM*5|EabMHMM*5|EefMHMM*5|EdeMHMM*5~G[\MHMM*5~WMHMM*5~GWXMHMM*5|EWXMHMM*MNPikz{MHMM*MNP`a H44jB_`H44jBhiH44jBtu)GgG[~g 7+EJJ

ENNTYT_T_`1"H446NPtuMHMM*5yB`aMHMM*5|EefMHMM*5|EabMHMM*5~GWXMHMM*5~WMHMM*5~G[\MHMM*5H^_MHMM*57LMMHMM*5|EdeMHMM*MNPi+- H446NPz{MHMM*MN(&( MHMM*MN(.0 MHMM*MN,.MHMM*MN(*OQMHMM*GH,XjkE#	'gG[Ni 5.uzz5::u~~V/-"H446NPtu
 H446NPz{H44iA_`MHMM*5|EabMHMM*5|EefMHMM*5~GWXMHMM*5~G[\MHMM*5~WH44lDVWH44oG]$)$7$79N9NPUPaPachcxcx#y{%OiG[Dj +EJJ

ENNTYT_T_`:8"H446NPtuMHMM*5yB`aMHMM*5|EefMHMM*5|EabMHMM*5~GWXMHMM*5~WMHMM*5~G[\MHMM*5H^_MHMM*57LMMHMM*5|EdeMHMM*VWYr+- H446NPz{MHMM*VW(&( MHMM*VW(.0 MHMM*VW,.MHMM*VW(*OQMHMM*GH,XjkE#)EjG[Xk ?+EJJ

ENNTYT_T_`9"H446NPtuH446NPz{H44iA_`MHMM*5|EabMHMM*5|EefMHMM*5~GWXMHMM*5~G[\MHMM*5~WYkG[|k :D+EJJ

ENNTYT_T_`4H446NPtu #$}kG[Nl =IP$U^^UZZ@75H446NPtu MHMM*5|ZPH44iA_`H44lDVWMHMM*GH,Xjk	m #'$OlG[vl 8D  $U^^UZZ@*5>>5::F?H446NPtuH44lJOH44iA_`H44lDVWMHMM*DEGYZMHMM*DEGYZMHMM*GH,XjkMHMM*5|EYZMHMM*5|\R MHMM*5zCuv#xywlG[lm 8*J  $U^^UZZ@*5>>5::F@H446NPtuH44iA_`MHMM*5|EabMHMM*5|EefMHMM*5|ZPMHMM*5|EWXMHMM*57PRabMHMM*5~WMHMM*57IJMHMM*57IJMHMM*5|EWXMHMM*57NOMHMM*5GMHMM*5|EYZMHMM*5|\RMHMM*57GU[\MHMM*57HJ`a+c dmmG[nn ;G  N$U^^UZZ@#"&53 H446HJ`aH446NPtuH44iA_` H44lJOH44lDVWMHMM*GH,XjkmnonG[`o =+EJJ

ENNS7A#"&aoG[no 7+EOOUZZX]XfXfg1!#"& H44nFVWH44noVooG[Fp <+EOOUZZX]XfXfg53"GpG[Tp 8+EOOUZZX]XfXfg@>#"&UpG[bp G-ennejjI!3EJJ!O(,+//46cpG[np ; "(*5" H44iA_`MHMM*5|QVWopG[Rq = "(*75" H44lM_ef H44iA_`SqG[lq 7$U^^U]]C*5::u{{EKKQVQ\Q\^c^i^ij1"
 H44lJ\bc	mqG[Dr :$&4" MHMM*5yB`a	ErG[Xr ;u~~>%ennemmD5!;3" MHMM*=>	Kij
YrG[nr >>%ennemmD8"% MHMM*=>	Kij
orG[Ds 5,+EJJu~~W\WfWfg6!5-##"&&+! H44lDXY H44iA[\H44oG]^ H446HJ\]EsG[zs 8+EOOUZZX]XfXfg20#"&!	{sG[Nt =+EOOUZZX]XfXfg20#"&!# ++*9OtG[tt 8!+EOOUZZX]XfXfg@>#"& H44iA[\_
`utG[Ju 8+EOOUZZX]XfXfg@>#"&&+KuG[\u 8.+EJJu~~W\WbWbc9%--X##"&"'&+H446NPtuH446NPz{
 3#4]uG[@v =+EJJu~~W\WbWbc9%--X##"&"'&+24AvG[Xv 7

EMM5>>J%ejj%--P"'#"&13YvG[fv 9 +EJJu~~W\WbWbc#"&&+5!;3
5gvG[|v 80O20#"& MHMM*ABLRf(-u}}6FH}vG[Xw (3gg25::u}}enn]&*$&*)-%7"8#;#;=UW{|YwG[rw 9+EJJu~~W\WbWbc!"$%'%)#"&.3&+35swG[Px 9'+EJJu~~W\WbWbc!"$%'#"&.3&+<>QxG[nx >+EJJu~~W\WbWbc!#"&.3&+3++1 ==*	oxG[Vy )"#BwX\o^ ##((%**emmUZUcUcd 119>\]}57LM}5G
WyG[|y 97 <<// +EJJu~~V" H44lMRH446NPtuMHMM*=>@Y[jk	 7!8}yG[^z <A <<22+EJJu~~V" H44lMRMHMM*=>@Y[jk
 78_zG[xz +EJJu~~V1%**emmU^^\%*#"&&+: 4 H44jBtuyzG[T{ &gg25::u}}enn]&*$&*)-%79U{G[f{ 7+EMM5>>J#"&&+$ejj#4f2M%NO')=6 /0g{G[B| ;+EMM5>>J#"&&+$ejj#4f2M%NO')=6 /0C|G[^| !+ENNEMMJ#"&&+$emmSd5N%OP')= :<_|G[z| ;+EJJu~~W\WbWbc#"&&+.3%)!"$%'.0{|G[V} +EJJu~~W\WbWbc#"&&+.3%)!"$%'.H446FH\]++1 ==*	W}G[D~ G.(UZZP*.(,+//3+/D>;E~G[V~ 7. <<--+EJJu~~V##"&!H44iA_` 23W~G[t~ ;)+EJJ

ENNS!#"&$5!;=u~G[F 7')1%++uzz5::W\WeWef/%*#"&13GG[X ;#+%)+EJJ

TYT_T_`#"&.3>
@YG[n %)+EJJ

TYT_T_`#"&.3>H446FH\]++1 ==*	oG[R@ 3+EJJ

TYT_T_`#"& H446NPtuH44iA_`c .+-S@G[j@ 3+EJJ

TYT_T_`#"&&+ H446NPtuH44iA_`c ./k@G[DA 4+EJJ

TYT_T_`##"& H446NPtuH44iA_`c 45EAG[^A 4+EJJ

TYT_T_`##"&&+ H446NPtuH44iA_`c 45_AG[~A 6+EJJ

ENNTYT_T_`#"&357AG[JB 6+EJJ

ENNTYT_T_`#"&357KBG[VB >"EKK#=>9 !Eu" MHMM*5|EabMHMM*5|EefMHMM*5yB`aMHMM*5~WWBG[pB >"EKK#=>9 !Eu" MHMM*5|EabMHMM*5|EefMHMM*5yB`aMHMM*5~WqBG[JC 6+EJJ

ENNS1%**ejj%..Y#%*#"&0 H44jBtuKCG[dC 7+EMM5>>J6u}}ennU6uzz5>>R#"&&+1	eCG[xC ;+EMM5>>J6u}}ennU6uzz5>>R#"&&+5 MHMM*57OQ{|yCG[VD ;15+EJJu~~V)+!3EMM5>>!R###"' MHMM"-|=YZMHMM*5|]SH446NPtuMHMM*=>@Y[jkMHMM*=>@Y[jkMHMM*=>
KXMHMM*VW+-JL MHMM*5|Ed$)JJ<>KWDG[RE >0L9%..I!?!O#"& H44lDVdjk H446HJ`jojzjzi{|H446HJakpk{k{j|}$}}ct$&?&  ('%  96/8SEG[BF 9E&8,6(D0%--27//427..$2H  I K
 $MHMM*$=?PRt,1OOU]]+KY_a#MHMM*$=?PRq,1KK%--+Xfln	o 4EJJu~~^ 9%//5::W\WaWachcqcq r'+*.)-%)-;"j !.#)$CFG[rF 90:u}},,>0%--1FGI'

EJJO -ejj%**enn U'+*.)-/sFG[DG  /,6u}}((D,0%--27..$2H  I K $MHMM2Z$[$;=RT
 (

EJJO%)-1#''+'+'+'+'+*.)-)/EGG[nG 6-7u}}))T-0%--27..$2H  I K'

EJJO%)'+*.)-	/oGG[BH 8/9u}}++t/0%--27..$27--2G  H J (

EJJO -ejj%**enn U'+'+'+'+'+*.)-! $MHMM*$=?PRt.8.v]W]]5K\K\=]`m`g`m`mnu`v=vx#MHMM*$=?PRq.8.v]W]]5K\K\=]`m`g`m`mnu`v=vx#MHMM*$=?PRq.8.v]W]]5K\K\=]`m`g`m`mnu`v=vx!CHG[tH )':$U]]ENNC-enn=*5==%..I!3EMM5>>!R#"& H44iA_`cduHG[PI ,-YZ0.-emmU^^L # ((.'		
QIG[xI 8+5'400%--1FGI'

EJJO -ejj%**enn U'+*.)- $MHMM*$=?PRt,1MM5==+IU_a#MHMM*$=?PRq,1MM5==+IU_a	 .<FWbc-d#fyIG[\J )+ #B%'89;]JG[pJ D7!%--@8 #	 qJG[DK &D(U]]ENNTYT_T_`"#@TR #	 EKG[XK 7&6.8u}}**d .'+*.)-0%..$27--2G  H J'

EJJO&9;YKG[pK 7 eN1!7/#"&HlMBE H446NPtuMHMM*5yB`a
 ,EJJ

ENNTYT_T_`%bqKG[VL 9+EJJW\WbWbc3"H446NPtuH44lJOH44iA_`H44lDVWH446NPz{MHMM*5|Ed$)JJ<>K	WLG[zL +EJJW\WbWbc:"iH44lJOH44lDVWH446FH\]H446JL`aH446OQijMHMM*5|Ed$)JJ<>K{LG[`M ::../ij(

S*EMM3EPU;V+WX*,NP*EMM3EPU;V+WX*,JL*EMM3EPU;V+WX*,LN*EMM3EPU;V+WX*,KM

 11>?S11>CST11>CWX v.0I?[z24EGi!&.z24EGe!&.z24EGg!&. z24EGf!& 1^M 119>\]z24IJ+
%)aMG[tN ::..Yab / d*+ :(

S"#:qPUV#(: 11>?S11>CST11>CWX v.0I?[119>\]z24IJ
uNG[hO +::.. C! /  -.AW(

S"#:qPT[`a: 11>?S11>CST11>CWX v.0I?[119>\]z24IJ
iOG[ZP (::;;  <  LL(

S"#:qPUV#(: 11>?S11>CST11>CWX v.0I?[119>\]z24IJ
#[PG[XQ $::;;  <  %&9(

S"#:qI: 11>?S11>CST11>CWX v.0I?[119>\]z24IJ
#YQG[^R --emmU^^U[[Y3EMM5>>R !#( # 119>\!& 024_RG[@S 6"457HI"' ',#"&,.24 H44iA_$)OOU]]#DFHASG[bS 6"40O6u}}ennU# ',"& $emmSd5N%OP$&  8==,., ??E,<,<=	? H44iA_$)OOU]]#DFHcSG[ZT 1-emmU^^U[[Y3EMM5>>R #(#!!5==#4d2K"LM$&: 119>\!& 02	
[TG[FU 3-#"&&+.3"$%'+EJJu~~V!+-GUG[bU 8-#"&&+.3"$%'+EJJu~~V!+-cUG[~U R!%--@113KMqr 119>\] z2NOagh'DE|Ugh	j !##(0`+aUG[lV !99>>1199+U]]ENNEJJG'u~~F9z2I?]^z24DF_`'89;KM_kyz/0 2(	
mVG[XW !T!%--@ 113KMqr119>\]'DE|Ugh	j
 !##("#8&Qb!cYWG[|W !T!%--@ 113KMqr119>\]'DE|Ugh	j
 !##("#8&Qb!c}WG[`X %X!%--@* #0#(f 113KMqr 11<ASagh119>\]`baXG[NY -`&!%--@ 113KMqr119>\] 113EG]^113EGef'DE|Ugh	j ! #"#8V\]n/oOYG[@Z -`)(U]]ENNS 113KMqr119>\]` + #"#8FnoAZG[bZ /0cZG[pZ !5 ^!%..%--@2-.C0 # 119>\]113KMqrz2LBTUz2NOagh':;=VXgh z2779
  "&=qZG[p[ % b!%..%--@'F0?6 119>\]113KMqr':;=VXgh
 2-.C+q[G[^\ 4g!%..%--@E z2LB^hmhuhugwx*EMM3Dq;Q+RSUacwx z24HJ^_z24FH^_'DE|Ugh 119>\]113KMqrz24MO`az24M_hi$6	 hi6	8/98  # O(_\G[p]  .o"#BWXgiNjk #!%..%--@!JJD 9NNCT$=
 "#
q]G[V^  .,-XY- #!%--@
 119>\fkfsfseuw	
W^G[v^ #!%--@4:"$w^G[H_ !%--@8"<1Eu}}^c^k^kNl#-/

I_G[^_ KK(U]]ENNS1 z2LBa!&H
__G[x_ ZZ(U]]ENNS%bff- 113CEXbgbmbmano
y_G[P` ZZ(U]]ENNS%bff- 113CEXbgbmbmano
Q`G[h`  #(#U]]ENNEJJG%bgg. 113CEUV113CE]^

 9i`G[Fa  #(#U]]ENNEJJG%bgg. 113CEUV113CE]^

 9GaG[da $"&[[U]]ENN;%bii5IeaG[va $[[U]]ENN;%bii5IwaG[Fb [[(U]]ENNS@%b&6&67 z24DF`az24DF]^z24DF_`z24DF^_z24DF^_z24DFghz24DFbcz24DFVW
GbG[rb  # "&"-emmU^^L%bgg.+ z2L*Z`jojwjwixyz24DF`az24DFVWz24DF^_z24DF\!&1z24DF`%+U__4EG
sbG[pc " #(#!%--@3EMM5>>SXS^S^_6dS%bjj1 z2I?]^z24DFVWz24DF^_z24DF\!&1z24DFa%+U]]OEz24DF`%+U__4EG
qcG[hd  #"#(-ejj%..I3EJJO0bff%4 z24DF`az24DFVWz24DF^_z24DF\!& 02z24DFa!& 02
idG[`e $ #"#(-ejj%..I3EJJO9 z24DFVWz24DF^_
aeG[Hf " ##(-ejj%..I3EJJO0bff%4 z24DF`az24DFVWz24DF^_z24DF\]z24DFabz24DF\]
IfG[@g $ #"#(-ejj%..I3EJJO9 z24DFVWz24DF^_
AgG[hg $  #"1(U^^U]]S.uzz5==%..Z_ZeZef- z24DF`az24DFVWz24DF^_z24DoVz24DF]^z24DF\!& @Bz24DFa!&emmU__ MO z2OEY!&1
!!igG[lh   	
 !  $ # )U]]ENNS /uzz5==%..Z_ZeZef &bff- "C '..PY^YiYi&j '..PY^YiYi&j '..PY^YiYi&j '..PY^YiYi&j  '..PY^YiYi&j!& z24DF`az24DFVWz24DF^_z24DF\!&1z24DFa!&1z2OEY!&1
#mhG[li " #(#UZZG.uzz5==%..Z_ZeZef6dS%bii0 z2I?]^113CEUV113CE]^ z24DF\!&1

miG[^j  1 (("'	 ((""'	 j).'	 '8907>S1
!_jG[bk -UZZD #!5==#4d2K"LM$&:
 ?ckG[~k  !%--@1 #"& z2I?]glgtgtfvxj)) "	 ']^!&5B
kG[vl )!%**enn=  #:8 113Lo^113LN_`113Lo^
 z2I?]glgtgtfvx
wlG[dm ,!%**enn= #=;C	emG[xm "0!%--@ 31 z2I?]glgtgtfvx
ymG[Xn .'CDlThi

YnG[nn (UZZ8 #97onG[@o UZZG"5::u}}ennM-j).'	 ((/

|",,
AoG[po (U]]ENNTYT_T_`<U]]ENN\a\g\gh: ##(j).u7	
qoG[Vp )
 ;(G #j).u7	
WpG[|p %6(U]]ENNS #j).u7	
}pG[\q '8(U]]ENNS #j).u7	
]qG[|q '8(U]]ENNS #-.C./-A 113DE113CEYZ11:?qr	
}qG[\r /!%--@ ? #]rG[nr @1(U^^U]]S.uzz5==%..Y ##(orG[Fs  U]]ENNEJJG #7	GsG[Zs   U]]ENNEJJG"5==%..A ?7 113EG]^113EGef113EG^_	
[sG[zs   U]]ENN; ?"5==%..A #7{sG[Rt  U]]ENNEJJG"5==%..A ? #(#7
StG[ht  U]]ENNEJJG"5==%..A ? #(#7
itG[~t "#!%--@7 j)."		
tG[fu "#!%--@"#?iP j)."		
guG[tF| G[Pv 			!	! !B0 " z24E8!&H
		B0 " z24E9%+U]]O#-/ z24E;%+U]]O#-/
 z24E8%+U]]O#-/
 z24E8%+U]]O#-/
B0L "!z24E9%+U]]O#-/ z24E;%+U]]O#-/ z24E;%*ELL%--3PR z24E8%*ELL%--3PR z24E;%+U]]O#-/ z24E8%+U]]O#-/
 z24E8%+U]]O#-/1
 MB0N " !5==#5u2M"NO!v7 !5??CU4O"PQ!#ESX u~~t45	
 z24E;%+U]]O#-/ z24E8%+U]]O#-/	
OB0~ "!%u~~t&<=?z24E;%*ELL%--3PR z24E8%*ELL%--3PR z24E8%*ELL%--3PR z24E9%*ELL%--3PR z24E;%+U]]O#-/ z24E8%+U]]O#-/#
	B0t  uB0|   11>?S11>CST11>CWX	
	}B0P ! 11>?S11>CST11>CWX	
	QB0d " 'ab%*, 'KL%#% 'KL%+- 11<A[\'KL%9; 'DE|Ugh11>?S#
eB0R ' 11<AW!&U[[%++u{{TYT_T_ `bz2L-P 'ab%*,
 'PQ%#% 'PQ%+- 11<A[\'PQ%9; 'DE|Ugh11>?S/
	SB0N % z2L-P11<AW!&U[[%++u{{TYT_T_ `b11<Aa!&U[[%++u{{TYT_T_ `b 'ab%*, 'NO%3I
 'NO%#% 'NO%+- 'NO%9; 'DE|Ugh11>?S7
	!OB0R & 'ab%*, 'OP%3I
 'OP%#% 'OP%+- 'OP%9; 'DE|Ugh11>?S)
	SB0H " 'ab%*,
 'KL%#% 'KL%+- 'KL%9; 'KLl\pq'DE|Ugh'QRT`b|}11>?S11>CST11>CWX+
	IB0@	 ""/ 'ab%*,
 'KL%#% 'KL%+- 'KL%9; 'KLl\pq'DE|Ugh'QRT`b|}11>?S11>CST11>CWX+
A	B0z	 <<"", 'ab%*,
 'KL%#% 'KL%+- 'KL%9; 'KLl\pq'DE|Ugh'QRT`b|}11>?S11>CST11>CWX+
{	B0v
 " 11>?S11>CST11>CWX	
	w
B0J $ 11>?S11>CST11>CWX 11<Aa!&U[[%++u{{TYT_T_ `nsu11<AR!&U[[%++u{{TYT_T_ `nsu
 11<Aa!&ejj%++u{{TYT_T_ `%+- 11<AR!&ejj%++u{{TYT_T_ `%+- 11<A[!&ejj%++u{{TYT_T_ `%+-+
KB0D $"3 11>?S11>CST 11<Aa!&U[[%++u{{TYT_T_ `nsu11<AR!&U[[%++u{{TYT_T_ `nsu
 11<Aa!&ejj%++u{{TYT_T_ `%+- 11<AR!&ejj%++u{{TYT_T_ `%+- 11<AR!&u}}eoo_d_o_oqvqq  !A%+- 11<AR!&u}}eoo_d_o_oqvqq  !A%*, 11<A[!&ejj%++u{{TYT_T_ `%+-7
	#EB0L $ 11>?S11>CST11>CWX 11<Aa!&ekk5;; G%+- 11<AR!&ekk5;; G%+- 11<A[!&ekk5;; G%+-
MB0v $"3 11>?S11>CST 11<Aa!&ekk5;; G%+- 11<AR!&ekk5;; G%+- 11<A[!&ekk5;; G%+- ((,8IMM5==%--$$ennejj%++ # ((,8IMM5==%--OOU%5%5u~~KKekk5::u{{
 "#1 
	%wB0B $"4CB0L *11%*,
MB0^ _B0f  gB0n  oB0v ("' z2LB^_z2LBbcz2I?]^z2NOT
wB0N ("' z2LB^_z2LBbcz2I?]^z2NOT
OB0f $"3gB0p #qB0z %
 11<A[\	
	{B0N ! 11<AWY
OB0^ " %u~~t&<=?z24E;%*ELL%--3PR z24E8%*ELL%--3PR z24E8%*ELL%--3PR z24E;%+U\\5==4Q#-/ z24E8%+U\\5==4Q#-/
	_B0N "!%u~~t&<=?z24E8%*ELL%--3PR z24E;%*ELL%--3PR z24E8%*ELL%--3PR z24E;%+U\\5==4Q#-/ z24E8%+U\\N#-/
	OB0~ "'B0F " GB0R   11<AWX11<AYZ	]SB0d ")eB0l "%u~~t&<=?z24E8!&u}} >E#-/
 z24E8!& 0fF z24E;!&u}} =U z24E;%*!&u}} =S 113D8%+!&*F'
	mB0f "  z24E8%*EJJ<A z24E8!&1 z24E;!&u}} =U z24E8!&u}} =U z24E;%*!&u}} =S z24E8%*!&u}} =S 113D8%+!&*F3
!gB0j "#kB0r "sB0z ""%u}}d',~~t',}}d'< = ?
 j)+<2$bu7H7H)IMGMMZaLb)bd j)+</$bu7H7H)IMGMMZaLb)bd j)+</$bu7H7H)IMGMMZaLb)bd
{B0f " gB0n " z24E;%*ELL%--3P\fh
	oB0B "!CB0J " z24E8!&1 z24E;%*ELL%--3P\fh
KB0d " eB0n "!oB0z "! z24EGi#-/
	{B0N " j)+<2u}}emmTV
	OB0b " cB0j "$kB0t "!uB0~ "$B0H "$IB0R "!SB0\ ""]B0f "%u~~t',}}d'< = ? z2*8!&/
gB0~ ""%u}}d&;<> z24E;!& >*V z24E8!& >*V
	B0Z "$$"000==RRTe8:00==PPRc8:
[B0r "$$"0	sB0~ "$$"0	B0J "%u~~t&<=?z24E;%*ELL%--3P#-/
	
KB0` "!aB0h "!%u~~t&<=?z24E;%*ELL%--3P#-/
	
iB0~ " %u~~t&<=?z24E;!&u}} =?
		B0R %SB0^ '"._B0h "&iB0p "qB0x "$yB0@ " AB0H "& z24E;!&u}} =?
	IB0\ "! *ENNCTPU<V+WX*,N%+- *ENNCTPU<V+WX*,L%+-	
]B0x "!%uzz4&89;z24E;!&u}} =? 113D8!&0

	yB0X "#((-"%u}}d',',~~t'= > @
 z24E;!&%-- @fV z24E8!&eoou}} M[ac
YB0@ "  z24E;!&!&!01

AB0V "(-" z24E;!&!&!01
WB0r "#sB0z "%u~~t&<=? z24E8!& 0fF z24E;!&u}} >E#-/ z24E8!&u}} >E#-/
	{B0`  " %u~~t',}}d'< = ? z24E8!&0
a B0x  " %u}}d&;<>z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
= z24E8!& 02 z24E8%*EJJ<A
	y B0d! #".e!B0n! " u~~t45!5;;A0F"GH!#BD
 z24E8%*ELL%--3P#+-
 z24E8!& 13

o!B0X" ""%uennd&STV z2LB\fkfufuewxz24E8!&u}} =? z24E;%+U\\5==4QS

	Y"B0x" "!5??CU4O"PQ!#ESY[
 z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
=	
y"B0^# " !5??CU4O"PQ!#ESY[
 z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
=	
_#B0D$ "!E$B0P$ #'".	Q$B0\$ #".	]$B0n$ "!o$B0|$ +7'LM%*, 'LM%9; 'LM%3I 'LM'(* 'LM%+-!
}$B0l% "".m%B0v% -9w%B0@& "'3A&B0J& %1'LM%*, 'LM%9; 'LM%#% 'LM%+- 'LM')+ 'LM'-/ 'LM'(* 11<A[\'DE|Ugh1
K&B0F' "!-!MM3E#@NNCU$A#  "v	G'B0`' "&2a'B0j' ".k'B0r' (4 z2LBS!& 0eE
	s'B0F( !-G(B0P( /;Q(B0Z( #/ 11<ARS ((0'!
	[(B0|( (4}(B0F) )'".	G)B0R) +7S)B0Z) -9[)B0b) .:c)B0j) "#/k)B0r) "".s)B0|) "#/})B0F* "".!5==#5u2M"NO!$'	G*B0X* "".!MM3Dv#>NNCT$?#  "v	Y*B0r* %#".	s*B0~* %1".	*B0J+ "&2K+B0R+ %1S+B0Z+ 1=[+B0b+ &2c+B0j+ ,8k+B0r+ 2>s+B0z+ &2  #( ((,8R`f
{+B0Z, (4 [,B0h, "(4z24E9%*ELL%--3PR !5>>3E3P#(??CU4O#Q R!#ESY[	
 'LM*,K!&%2B2B C$,/ 'LM*,N!&%2B2B C%*$,$:
	=
i,B0Z- "(4[-B0b- "(4c-B0p- #$(#'!5;;A0F"GH"$=?
 z2+B!&%2B2B CE
q-B0T. #!U.B0\. #'].B0d. #". 'NOQ]_qr
e.B0t. ##/ 'VWYegyz
u.B0D/ #&E/B0L/ #'M/B0T/ #$ z24FH]^11:?_`	
	U/B0h/ #"4$(#' j)<9S%:J:JL ((,8I)v ((,8X)v
i/B0^0 #"2$(#' 113EG\]
_0B0v0 #"2$(#' 113EG\] ((!(!
w0B0`1 #a1B0h1 #' 113EG\]z24F?!&%2B2B CE z24F?!&%2B2B CE z24FB!&%2B2B CE
i1B0L2 #% 11<AR`e!&%2B2B CE11<Aaot!&%2B2B CE	

M2B0b2 &c2B0j2 #(#6$(#' z2LBS!& 13z2LBb!& 13 z24F!& 13 z24F?!&/ z24FB!& 02 *EMM3Dt;T+UV+-FH 11:?_`'
k2B0f3 # #(g3B0p3 # #(q3B0z3 #  .5#'z2LBS!& 1uFz2LBb!& 1uFz24F5!& 13 z24F*!& 13 z24F2!& 13 z24F?!&0
{3B0j4 #11+?!&/
	k4B0~4 #4B0F5 #G5B0N5 #%#( z2+BD
	
O5B0d5 #!#(e5B0n5 #"o5B0v5 ##w5B0~5 ## 113EG\]11:?_`z2+BD	
5B0V6 #W6B0^6 #_6B0f6 #'g6B0n6 "'o6B0v6 #&w6B0~6 #'6B0F7 #G7B0N7 ##11<AYZ
O7B0\7 ##11<AYZ
]7B0j7 #$(#' ((,8R) ((,8I)v ((,8X)v
k7B0`8 #a8B0h8 #%i8B0p8 #!5??CT4P"QR"$=? !5??CT4P#(#3#3Sd5Q#S T"$9;	
 ((,8R) ((,8I)v ((,8X)v
 113E?!&U[[%++u{{ SU 113E?!&ekk5;; GI z24F2!& 24 z24F?!&%//5CSCS TV z24F?!&%//5CSCS TV z24FB!&%//5CSCS TVG&
3q8B0X: #%z2LBS!& 1uFz2LBb!& 1uFz24F2!& 13 z24F?!&0
Y:B0x: # 
 11<AR!&EC 11<Aa!&EC	
	y:B0V; #$(#'!5==#4a2H#(>>3Dt3L#(??CT4M#O P #$=	?
 !5;;A0F"GHCQVX !5;;A0F"GH2G !5;;A0F"GHl?
" z2+2!&0 z2+?!&0	
- W;B0X< #'$(#' ((,8R) ((,8I)v ((,8X)v
Y<B0T= #U=B0\= # z2LBS!& 0eEz2LBb!& 0eE	
]=B0x= #% 11<AYZ
y=B0H> #% 11<AYZ
I>B0X> !Y>B0`> 1= z2LBS!&EC	
a>B0z> #!#'{>B0J? #+#'K?B0Z? "%$ #([?B0j? "!  #(k?B0z? "!  #('[\^jl~

{?B0P@ "!  #('[\^jl~

Q@B0f@ #$#!"6tD 113EG\]11:?_`
		g@B0z@ #"! 113EG\]11:?_`
{@B0LA "#" #(MAB0\A ""! #(]AB0lA "!  #(mAB0|A "  #('[\^jl~

}AB0RB "!  #('[\^jl~

SBB0hB ""! #('[\^jl~

iBB0~B ""! #(BB0NC "#" #(OCB0^C "$# #(_CB0nC !oCB0|C &}CB0FD &"'GDB0PD &"'QDB0ZD &"'[DB0dD &(U]]ENNS 'OPR`bqr'OPR`brs'OPR`bvw	
eDB0|D +(U]]ENNS 'OPR`bqr'OPR`brs'OPR`bvw11<ARS
}DB0ZE &"1(U]]ENNS 'OPR`bqr'OPR`brs'OPR`bvw11<AST
[EB0vE "."'	wEB0BF &CFB0JF  ,KFB0RF !-SFB0ZF ([FB0bF  11<AYZ
cFB0rF !sFB0zF ({FB0BG " CGB0JG +KGB0RG &SGB0ZG "#%u~~t',}}d'< = ?[GB0fG "gGB0nG  oGB0vG $wGB0~G )GB0HH  ,"'IHB0VH &WHB0`H "11<AYZ
aHB0nH "oHB0vH %wHB0~H 'HB0HI #IIB0PI  QIB0XI "YIB0`I "aIB0hI " 11<AYZ
iIB0xI "!"ATZ^_yIB0BJ '!"AU[_` 11<ARS
	CJB0VJ (4"'WJB0`J !-z2LBS%*EMM3CEz2LBb%*EMM3CE
	aJB0tJ #uJB0|J (}JB0FK "#%u~~t',}}d'< = ?GKB0RK !SKB0ZK "[KB0bK ""'cKB0lK #mKB0tK &uKB0|K  "'}KB0FL !"'GLB0PL *QLB0XL !"'YLB0bL #cLB0jL (kLB0tL #",uLB0~L ( 11<ARS
LB0NM "OMB0VM "WMB0^M !"7E"' 11<AR\a\k\kmrm}m}[~

_MB0tM  !"7E"' 11<AR\a\k\kmrm}m}[~

uMB0JN %KNB0RN *SNB0\N ]NB0dN "eNB0nN !.$GoNB0xN 'yNB0@O "AOB0HO 'IOB0RO %SOB0ZO *[OB0dO  eOB0lO #mOB0tO %uOB0~O " 11<AYZ
OB0NP %OPB0VP "WPB0dP  ((*:<O}&
	ePB0xP  !"@N ((*:<LN((*:<TV	
	yPB0PQ  !"@N ((*:<LN((*:<TV	
	QQB0hQ  ((*:<O}&
	iQB0|Q ) j)+;*, j)+;=TVj)+;=VXj)+;=UWj)+;=UWj)+;13 z24DFVW#
}QB0jR  !"3DA ((*:<LN((*:<TV	
kRB0DS  ((*:<LN((*:<TV j)+;=S') j)+;+')
	ESB0nS $oSB0vS  11<Lz24DFVWj)+;=UW j)+;=S( j)+;+( j)?<P(
	wSB0fT " 11<L
	gTB0xT # 11<L
	yTB0JU '"'KUB0TU  # 11<L((*:<LN((*:<TV j)+;=Su79
UUB0zU  ((*:<LN((*:<TV j)+;=SU	
	{UB0XV $"'YVB0hV  11<ART
iVB0vV !wVB0~V   #(VB0TW !'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'EFVpq'DE|Ugh1
UWB0PX &'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'JK\[uv'DE|Ugh1
QXB0LY !P 'QR%35 'BC\Sop'BC^Ude'BC^Uef'BC^Uij

	MYB0lY  z2NDTUz2NDXYz2NOT	
	mYB0@Z %'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'IJLZtu'DE|Ugh1
AZB0|Z !-'RS%*, 'RS%9; 'RS')+ 'RS'-/ 'RS'(* 'RS%35 'DE|Ugh'
}ZB0p[ )'RS%*, 'RS%9; 'RS')+ 'RS'-/ 'RS'(* 'RS%35 'DE|Ugh'
q[B0b\ $c\B0j\ $k\B0r\ %s\B0@] '11<AYZ
A]B0N] !L11<AYgmn
O]B0`] ( 11<ARS 11<AYZ]	
a]B0v] & 11<ARS
	w]B0H^ % 11<ARS11<AYZ
		I^B0\^ & 11<ARSV	]^B0r^ $s^B0@_   ((,8I
	A_B0T_ ! ((,8I lm*)9)9:	
U_B0t_ +u_B0|_  ,}_B0F` ##11 1 }$)LrZN-KL*Nj_.MN\L\\ +Pz">N/O"P$)cbZN-KPRPbPbrc (-k"B1OTVTjTj2k %*erj_.MRTRdRde (JbJr=,IrJ*Nj_.MN'4K8J"K %;]rrww?Q?QR[?\] ,@bbBGGDVDVW`Darb .:ell5.A g
 >C<5<<X]K^ 
:>4 >?$t ?c MNPckeJNK]bs   F `NF0`NF=`N"G`N"G-`N'G=`N'H
`N,H`N,H(`N,H5`N1I`N1I`N1I `N6I0`N6I>`N6J`N;J`N;J(`O J8`O K`OK`OK%#`O
L	`O
L#`OL:`O