
    PhD             -       Ҍ  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mZ d dlmZmZmZmZmZ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@mAZAmBZB d d
lCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO d dlPmQZR d dlSZd dlTZd dlUZd dlVmWZX d dlYmZZ[ d dl\m]Z] d dl^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ eHrd dlmZ d dlZd dlZ	ddZd Zd 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 Z	dd[Zd\ Zd] Zd^ 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dZdtduZ	ddvZdw Zdx Z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-	ddZ.	ddZ/	ddZ0d Z1	ddZ2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@ddZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZ	ddZ[d Z\d Z]d Z^d Z_d Z`d Zad Zbd Zc	ddÄZd eeddĬū      ZedƄ ZfdǄ ZgdȄ ZhdɄ Zidʄ Zjd˄ Zkd̄ Zld̈́ Zmd΄ Zndτ ZodЄ Zpdф Zqd҄ Zrdӄ ZsdԄ ZtdՄ Zudք Zvdׄ Zwd؄ Zxdل Zydڄ Zz G dۄ dܫ      Z{ G d݄ dސe{      Z| G d߄ de{      Z} G d de{      Z~d ZdddddZddZd Zd Zd Zd Zd Z	 	 	 	ddZd Zd Zd Zd Zd Zd Z	ddZd Zd Zd Zd Zd Zd 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̐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Ɛd0 Zǐ	dΐd1ZȐd2 Zɐd3 Zʐd4 Zːd5 Z̐d6 Z͐d7 Zΐd8 Zϐ	d̐d9ZА	d̐d:Zѐ	d̐d;ZҐ	d̐d<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ߐ	d̐dIZ	d̐dJZ	d̐dKZ	d̐dLZdM ZdN ZdO ZdP ZdQ ZdZdRdSZ	dΐdTZ	dΐdUZ	dϐdVZdW ZdX ZdY Z	d̐dZZd[ Zd\ Zd] Z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 	d̐dkZdlejdmej                  dnej                  doedpedqeef   fdrZds Z	d̐dtZdu Z		dАdvZ
dw ZdZdxdyZdz 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 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 Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7ddd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 ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQ	d̐dZRdÄ ZSdĄ ZTdń ZUdƄ ZVdǄ ZWdȄ ZXdɄ ZYdʄ ZZ	d̐d˄Z[d̄ Z\d̈́ Z]d΄ Z^dτ Z_dЄ Z`dф Za	dѐdӄZbdԄ ZcdՄ Zddք Zedׄ ZfdؐZgeNsdِdgng dۢZhdZdZdddܜZi G d݄ dej                        Zk G d߄ def      Zl G d d      Zm G d dem      Zn G d dem      Zo G d dem      Zp ed emddZdZ      dĐ       ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ             ed emddZdZ      d ee e8ej                   e9dd      i      ddd      f       ed emddZdZ      d ee e8ej                   e9dd      i      ddd      f       ed emddZdZ             ed  emddZdZ             ed emddZdZ       e$        e$              ed emddZdZ       e!ej                         e!ej                        dĐ       ed emddZdZ       e#ej                         e#ej                  ej                               ed emddZdZ       eej                         eej                  ej                               ed emddZdZ       eej                         eej                  ej                               ed emddZdZ       e!ej                         e!ej                  ej                        dĐ       ed	 emddZdZ       e#ej                         e#ej                  ej                               ed
 emddZdZ       e!ej                         e!ej                               ed emddZdZ       e#ej                         e#ej                  ej                               ed emddZdZ       eej                         eej                  ej                               ed emddZdZ       eej                         eej                        dĐ       ed emddZdZ       eej                         eej                        dĐ       ed emddZdZ       e#ej                         e#ej                  ej                               ed emddZdZ       e"ej                  ej                         e"ej                  ej                  ej                        d ee e
j                  d      dd e              ee e
j                  d      dd e              ee e
j                  d      dd e             f       ed emddZdZ       e"ej                  ej                        dZ       ed emddZdZ       eej                  ej                  ej                         eej                  ej                               ed emddZdZ       e#ej                  ej                  ej                         e#ej                  ej                         ee e
j                  d      dd e%ej                               ee e
j                  d      dd e%ej                               ee e
j                  d      dd e%ej                              f      gZveej   ewd<    ed emddddī       e"ej                  ej                  ej                         e"ej                  ej                  ej                        d eee
j                  dd        eee
j                  dd       eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd! e#ej                  ej                  ej                              f"       ed# emdddī       e"ej                  ej                  ej                         e"ej                  ej                  ej                        d eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f"       ed' e"ej                  ej                  ej                         e"ej                  ej                  ej                         emddddī       eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd! e#ej                  ej                  ej                              f(       ed) e"ej                  ej                  ej                         e"ej                  ej                  ej                         emddddī       eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd e#ej                  ej                  ej                               eee
j                  dd! e#ej                  ej                  ej                               eee
j                  dd$ej                  fd*+       eee
j                  dd%ej                  fd*+       eee
j                  dd ej                  fd*+       eee
j                  dd&ej                  fd*+      f(       ed, emdddī       e#ej                         e#ej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f       ed- emdddī       e#ej                         e#ej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f       ed. emdddī       e#ej                         e#ej                  ej                        dZdZ eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f/       ed0 emdddī       e#ej                         e#ej                  ej                        dZdZ eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f/       ed1 e#ej                         e#ej                  ej                        dZd emdddī      d eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      fddĐ2
       ed3 emddZdZ       e"ej                  ej                        dZdZdZ4      g
Zyeej   ewd5<    ed6 epd7ddī       e$        e"ej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f       ed8 epd7ddī       e$        e"ej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f9      gZzee   ewd:<    ed; enddZdZ       e!ej                  ej                         e!ej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd        eee
j                  dd!       eee
j                  dd&      f      gZ{ee   ewd<<    ed= eod>ddZ       e!ej                  ej                         e!ej                  ej                         e!ej                  ej                        ?      gZ|ee   ewd@<   dA Z}dB Z~dC ZdD ZdE ZdF ZdG Z	dҐdHZdIdJdKZ	dӐdMej                  dNedqej                  fdOZ	dԐdQZdR Z	dՐdTej                  dUee   fdVZdTej                  dUee   fdWZ	dՐdTej                  dXefdYZ	d֐dZZd[ Ze	dאd]       Zd^ Zd_ej$                  fd`Z	d̐daZ	dؐdbZg  eddcej,                   e"ej                  ej                  ej.                         e"ej                  ej                  ej                  ej.                         ee e
j                  d      dddeej0                  f       ee e
j                  d      dddfej0                  f       ee e
j                  d      dgdhej0                  f       ee e
j                  d      didjej0                  ej2                  ej.                  f       ee e
j                  dk      dldmej4                  geJn       ee e
j                  dk      dldoej2                  ej0                  g       eee
j                  ddej0                  ej2                  ej.                  f       eee
j                  ddej0                  ej2                  ej.                  f       eee
j                  ddej0                  ej2                  ej.                  f       eee
j                  dd!ej0                  ej2                  ej.                  f      f
ddddddddĐp       eddqej6                  dr e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        dddd e6ej                  dsej                  dej                  dsi      f ee e
j                  dk      dldtdej0                  geFu       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldmdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dddyej0                  geFn       ee e
j                  dk      dddzej0                  geFn       ee e
j                  dk      dddeej0                  geFn       ee e
j                  dk      dgd{ej0                  geFn       ee e
j                  dk      dgdhej0                  geFn      f|       ed}d~ej8                  d e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                         e6ej                  di      fdZddd ee e
j                  dk      dldtdej0                  geFu       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  dk      dldmdej0                  geFu      f eid dҐ             e{dddd e"ej                  ej                  ej                  ej.                        deddd ee e8ej.                   e9dsd       i      dd      f eee
j                  ddej                  f       ee e
j                  dk      ddej:                  f       ee e
j                  dk      ddej                  ej:                  f      f
       ejdd ej                  j<                  d e"ej                  ej                  ej.                  ej                        dZdZee eee
j                  ddej>                  ej                  f       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f
       ejd e#ej                  ej                        ddZdee eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       eee
j                  dd       eee
j                  ddej>                  f       eee
j                  dd      f       ejdd ej$                  j@                   eej                  ej                        dZdZee eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd      f		       ejdd ej$                  jB                   eej                  ej                        dZdZee eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f		       ejdd ej$                  jD                   eej                  ej                  ej4                  ejF                  ejH                  ejJ                  ejL                        dZdZee eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd      f	       ejdd ej$                  jN                   eej                  ej                        dZdZee eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd      f	       ejddd ej$                  jP                   e!ej                  ej                        dZdZee ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  d      dd       ee e
j                  d      dd      f
       ejdd dej$                  jR                   e!ej                  ej                        dZdZdZee eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       e{d-e e#ej                  ej                  ej                        ddZd edZ       eee
j                  ddd       eee
j                  dd       eee
j                  ddë      fī       e{d,e e#ej                  ej                  ej                        ddZd edZ       eee
j                  ddd       eee
j                  dd       eee
j                  ddë      fī       e{d'd e"ej.                  ej                  ej                  ej                        dddde eeejV                  ƫ       eeejX                  ƫ       eeejZ                  ƫ       eeej\                  ƫ       eeej^                  ƫ      ǫ       e{d#dddȄd e"ej                  ej                  ej.                        ddded ee e8ej                   e9dsd       ej                   e9dSd      ej`                   e9dSdʐ      i      dd       ee e8ej.                   e9dsd       i      ddːd*       ee e8ej.                   e9dd       i      dd̐d*       ee e8ej.                   e9dd       i      ddd*      f ee e
j                  dk      ddejL                  f       ee e
j                  dk      ddejL                  f      fΫ       ejd e"ej                  ej                         e!ej                  ej                         e!ej                  ej                        dddeKe ee e
j                  dk      dАdej                  ej:                  f      fҫ
       ejdϐd e"ej                  ej                         e!ej                  ej                        dddeKdԐdg eedd֫       ee e
j                  dk      dАdej                  ej:                  f       ee e
j                  dk      ddd*ej                  fx      f׫       ejd e"ej                  ej                         eej                  ej                  ej:                  ej                        dd ee e8ej                   e9dSdِ      i      dڐd̐d*      ge۫       ejdܐ	dِd݄ e"ej                  ej                         e!ej                  ge<seErej                  gng  ddd ee e8ej>                   e9dސdސ      ej                   e9dSdߐ      i      dd       ee e8ej>                   e9dd      ej                   e9dSdߐ      i      dd       ee e8ej>                   e9dSdS      i      dd       ee e8ej>                   e9ddS      i      dd       ee e8ej                   e9dd      i      dڐd̐d*      g ee e
j                  dk      ddde<        eee
j                  dd       ee e
j                  dk      dd      fe
       ejd e"ej                  ej                         eej                  ej                  ej:                  ej                         eej                  ge<seErej                  gng ej                  ej:                   ddd ee e8ej                   e9dSdߐ      i      ddd       ee e8ej                   e9dSdߐ      i      ddd      ge ee e
j                  dk      dАdej                  ej:                  f      f
       ejd e"ej                  ej                         e!ej                  ej                        deedd ee e
j                  dk      dАdej                  ej:                  f      f	       ejd e"ej                  ej                         e!ej                  ej                        eedd ee e
j                  dk      dАdej                  ej:                  f      f       ejd e"ej                  ej                         e!ej                  ge<seErej                  gng  dddd ee e
j                  dk      ddde<        ee e8ej>                   e9dSdS      i      dd      fe	       ejd e"ej                  ej                         e!ej                  ej                        ddde       ejd e"ej                  ej                  ej                        dd ee e
j                  dk      dd e"ej                  ej                  ej                              feeK       ejd6 e"ej                  ej                        ddd eee
j                  dd      fe  eee             ejd8 e!ej                  ej                        dd eee
j                  dd      fe  eee             e	di dddejb                  ddrddēddēddēd dēddēddēddēddēd e"ej                  ej                  ej                        d e"ej.                  ej                  ej                  ej                        ddēd ee e8ej                   e9dSdʐ      i      dld       e6ej                  dsi      gd	 ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  d
      did      f e	dېdejd                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                         e6ej                  di      fdZdddddddd ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldtd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  d
      did      fd e	dܐdejf                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        ddddddddd e6ej                  dsi      f ee e
j                  dk      dldmeEdej                  ej:                  g       ee e
j                  dk      dldveEdej:                  g       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej2                  ej0                  geFu       ee e
j                  dk      dldwdej2                  ej0                  geFu       ee e
j                  d
      did      fd e{dd e#ej                  ej                  ej                        ddddZ eee
j                  dd      f       e	di dddejh                  ddrd e"ej                  ej                  ej                        d e"ej.                  ej                  ej                  ej                        d e6ej                  dsi      fddZddēddēddēddēddēd dēddēddēd	 ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej2                  ej0                  geFu       ee e
j                  dk      dldwdej2                  geFu       ee e
j                  d
      did       ee e
j                  dk      dldveEdej:                  g      f ejd e!ej                  ej                        ejj                  dZdZe\ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d      fdZ       ejdejl                   e"ej                  ej                  ej                        dZdddZe4       ejdejn                  ejp                  js                  ejt                        dk\  rejn                  nd eej>                  f      dZdZdZdZdZe eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      f        ejd!ejv                   e"ej                  ej                  ej                        e5e6dZdddZ eee
j                  dd       eee
j                  ddej>                  g      f"
       ejd# e"ej                  ej                  ej                  ej.                        dZdddZ eee
j                  dd       eee
j                  ddej>                  g      fe7$       ed%ejx                   e%ej                        ejz                  dZ&       e{d'ej|                   e)        e)       ej~                  ej                  dZd ed (       ee e
j                  dk      dd«       ee e
j                  d)      dd      f*
       e{d+ej                   e)        e)       ej                  ej                  dZd ed (       ee e
j                  dk      dd«       ee e
j                  d)      dd      f*
       ejd,ej                   e"ej                  ej                  ej                        dddZdZeǐ-       ejd.ej                   e"ej                  ej                  ej                        dZdddZe eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  ddej>                  f      f/	       ejd0 e       dZdZdZe81       edej                   e#ej                  ej                        dd eee
j                  dd eǐd2  e)       D                    fddddddĐ3       ejd4 e        eee0e3g5       ejd6 e         e        ddddeee0e3g eee
j                  dd      f7       ejd8ej                   e        edZddĐd9 e0e3g:	       ejd; e"ej                  ej                  ej                  ej.                        e4e5dddZ<       ejd= e"ej                  ej                  ej                  ej.                        e4dZe5dddZ>       ejd?ej                   e"ej                  ej                  ej                  ej.                        eedddZ eee
j                  dd@       eee
j                  dd      fA	       ejdBdC  e"ej                  ej                  ej                  ej.                        eeddĐdDgddZ eee
j                  dd      fE       ejdFdG  e"ej                  ej                  ej                        eedddZ eee
j                  dd       eee
j                  ddej                  f      fH	       ejdIdJe e#ej                  ej                        e eee      ddd eee
j                  ddej                  f      fK
       edLej                   e"ej                  ej                  ej.                        dZdddddddĐM       edNej                   e"ej                  ej                  ej                  ej.                        ddddZdZO       edPdQej                   e"ej                  ej                  ej                  ej.                        ddddddd ee e
j                  dk      ddej>                  f       ee e
j                  dR      didj      fS       ejdT e"ej                  ej                  ej                        edddZU       ejdV e"ej                  ej                  ej                  ej.                        edddZU       ejdW e       ddZdĐedZX       ejdY eej                        dZdddZe eee
j                  dd       ee e
j                  dk      ddej                  f       eee
j                  dd&      fZ       e{d[ eej                        dddZe eee
j                  dd«       ee e
j                  dk      ddd\       eee
j                  dd]      f^       e{d_ e#ej                  ej                  ej                        ddddĐ`       ejda e"ej                  ej                        edddZ ee e
j                  dk      dАdej                  ej:                  f      fdZb       edej                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        ddZddd e6ej                  dsi      f ee e
j                  dk      dldwej2                  ej0                  fd*eFc       ee e
j                  dk      dldwej0                  fd+       ee e
j                  dk      dldvej2                  ej0                  geFn       ee e
j                  dk      dldvd*ej2                  ej0                  geGu       eee
j                  dldwdej.                  feFu      fd       ed eej                         e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        dddd ee e
j                  dk      dldwd*ej4                  gx       ee e
j                  dk      dldwej0                  g       ee e
j                  dk      dldvej2                  ej0                  geFn       ee e
j                  dk      dldwej2                  ej0                  geFn       ee e
j                  dk      dldvd*ej2                  ej0                  geGu       ee e
j                  dk      dldwd*ej2                  ej0                  geGu       eee
j                  dldwdej.                  feFu      fe	       ejdf e"ej                  ej                        eېedZdd ee e
j                  dk      dАdej                  ej:                  f       eee
j                  dddy       eee
j                  dddg       eee
j                  dgd{       ee e
j                  dh      dgdi       eee
j                  dd      fj       ejdk e"ej                  ej                        edddĐl       ejdm e"ej                  ej                        dd eee
j                  dd      fe
n       ejdo e"ej                  ej                        dd eee
j                  dd      fedZp       ejdq e#ej                  ej                  ej                         ee
dZr      dddeKs       ejdt e#ej                  ej                  ej                         ee
dZr      dddeKs       eduej                   e6ej                  dvej                  dvi      f e#ej                  ej                  ej                        ddddddddĐw       ejdxej                  ddLej                  ej                  fdy e"ej                  ej                  ej                        dddĐe^e]dZdz       e{d)d{d| e"ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                        dddddd edĐ      }       e{d)d{d~ e#ej                  ej                         eez ed            ddddd edĐ       eee
j                  dd«      f eee
j                  dd      f       e{d)d{d e#ej                  ej                         eez ed	            ddddd edĐ       eee
j                  dd«      f eee
j                  dd      f       e{d e"ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                        dddd edĐ             ejd e"ej                  ej                  ej                        d edZdZd       ed eej                         e"ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                         ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx      fddddĐ	       ejdd  e"ej                  ej                  ej                        e,ddddZ eee
j                  dd      f	       ejdd  e"ej                  ej                  ej                        ddĐe.dZ eee
j                  dd      f       ejdej                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        dddZeeO	       ejd e"ej                  ej                  ej                  ej.                        dZdddeee	       ejdd e"ej                  ej                  ej                  ej.                        dZddeee	       ejd e"ej                  ej                  ej                  ej.                        ddeee       ejd e"ej                  ej                  ej                        dZddĐe       e{dej                   e"ej                  ej                  ej                  ej.                        ddZe;d       e{dej                   e#ej                  ej                  ej                        dddZ ee e
j                  dk      dd«      f       e{dej                   e#ej                  ej                  ej                        dddZ ee e
j                  dk      dd«      f       e{dej                   e#ej                  ej                         e#ej                  ej                        ddddddi ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddejL                  f      f
       e{dej                   e#ej                  ej                         e#ej                  ej                        ddddej                  ej                  dĐddi ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddejL                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  fx      f       edd  eej                  ej                         eej                  ej                        dddddddd ee e
j                  dk      dldvej                  ej                  ej>                  ej                  f       eee
j                  ddej                  ej>                  ej                  f      f       ejde4 ee e
j                  d      dd      g e        eddddZdZdZdZeK       ejd e       eddddZdZdZdZ ee e
j                  d      dd      fe4 eee
j                  dddy       eee
j                  dd      f       ed	ej                   e#ej                  ej                        dd eee
j                  dd eǐd  e)       D                    fddddddĐ3       ejdej                   e"ej                  ej                  ej                        edddZ       ejdej                   e"ej                  ej                  ej                        eedddZ       ejdej                   e"ej                  ej                  ej                        eedddZ       ejd e        de e5 eA       dk\  xs  eB       dk\   d      e7g ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dgdi       ee e
j                  dk      dddy       ee e
j                  dk      dddg       ee e
j                  dk      dgd{      f       ejd eej                        dddZdZdZee,g ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dgdi       ee e
j                  dk      dddy       ee e
j                  dk      dddg       ee e
j                  dk      dgd{       ee e
j                  dk      ddd      f«
       edeHr eej                  j                        ndd e6ej                  dej                  di      f e#ej                  ej                  ej                         e       ddde ee e
j                  dk      dldwej4                  f      fǫ       e{dȐeB e#ej                  ej                        dZ edĐ      d ee e
j                  dk      dd       ee e
j                  dk      dej                  f       ee e
j                  dk      ddej4                  f       ee e
j                  dk      ddej                  f       ee e8ej                   e9dʐd      i      dd      fɫ       edej                  ej                   eej                  ej                         eej                        g dd ee e
j                  dk      dld˫       ee e
j                  dk      dld       ee e
j                  dk      dld̫       ee e
j                  dk      dldͫ       ee e
j                  dk      dldΫ       ee e
j                  dk      dldo       ee e
j                  dk      dldmeFϫ       ee e
j                  dk      dldweFϫ       ee e
j                  dk      dldveFϫ      f	Ы	       ed
ej                  dѐd e"ej                  ej                  ej                         e6ej                  di      fdddddddddĐӫ       e{dej                  d e#ej                  ej                  ej                        ddZd֫       ejd e        ee1e3gdZ eee
j                  dd       eee
j                  dd      fث       e{dej                  d e#ej                  ej                  ej                        ddZd֫       edej                   e(ej.                        dZdddZ eee
j                  dldo      fܫ       ejd e!ej4                  ejF                  ejH                  ejJ                  ej                  ej                        dZdddZ eee
j                  dd       ee e
j                  dk      ddej>                  ej                  f       ee e
j                  dk      dd       ee e
j                  dk      d      fdZeheSޫ
       ejd e&        e#ej                        dZe       ejd e#ej                  ej                         e#ej                        ddĐe6e7       e{dej                  d e#ej                  ej                  ej                        ddZd֫       ejd e"ej                  ej                        dddZee eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  ddej>                  f       eee
j                  dd       ee e
j                  dk      ddej2                  fd+      f       ejd e"ej                  ej                        dddZeed eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  ddej>                  f       eee
j                  dd       ee e
j                  dk      ddej2                  fd+      f	       ejd e"ej                  ej                        dddZee eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  ddej>                  f       eee
j                  dd       eee
j                  ddejF                  ejH                  ejJ                  fd+       eee
j                  ddejF                  ejH                  ejJ                  fd+       ee e
j                  dk      ddej2                  fd+      f
       ejd e"ej                  ej                        dddZeed eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  ddej>                  f       eee
j                  dd       eee
j                  ddejF                  ejH                  ejJ                  fd+       eee
j                  ddejF                  ejH                  ejJ                  fd+       ee e
j                  dk      ddej2                  fd+      f		       edej                  d e"ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                         e!ej                  ej                  ej.                        dddd e6ej                  di      f ee e
j                  dk      dldvd*ej2                  ej0                  geFu      f eid d             edej                  d e6ej                  di      f e"ej                  ej                  ej                        dddd ee e
j                  dk      dldvd*ej2                  ej0                  geFu      f eid d             edej                  d e"ej                  ej                  ej                        dddd e6ej                  di      f ee e
j                  dk      dldvej2                  ej0                  g      f eid d             e{d e"ej                  ej                  ej                        ddddZdddZ eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f ee e8ej                   e9dSdS      i      dd*      g       e{d e!ej                  ej                         eej                  ej                         eej                  ej                        dddZ eee
j                  ddd      f       ejd eej                  ej                         eej                         eej                        ddĐe       edej                   e6ej                  dvej                  di      f e"ej                  ej                  ej                        dZ ee e
j                  dk      dld e"ej                  ej                               ee e
j                  dk      dd e"ej                  ej                              f       e{dej                  d e#ej                  ej                  ej                        ddZd֫       ejdej                   e        ddde3feҐ       ejdej                   e        ddddZee1e3g eee
j                  dd       eee
j                  dd       eee
j                  dd      f
       ejdej                   e        ddZde ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  d       dd      fe3e1g	       ejd e"ej                  ej                  ej                  ej.                        eedddZdZ       ejd e"ej                  ej                  ej                        eedddZdZd	       ejd e"ej                  ej                  ej                        ddĐeeU ee e
j                  dk      ddej                  geEn      f	       ejd
 e!ej                  ej                        de dZdZdddZ ee e
j                  dk      dڐdej                  gd*+      fdZ       ejdd e"ej                  ej                         e!ej                  ge<seErej                  gng  ddddddZ eedZ       ee e
j                  dk      ddde<        ee e8ej>                   e9dd       i      dddeE       ee e8ej>                   e9dd       i      dddeE       ee e8ej>                   e9d dS      i      ddd*       ee e8ej>                   e9dSdS      ej                   e9dSdS      i      dd̐d      g eee
j                  dd       ee e
j                  d      ddd*ej                  fx       ee e
j                  dk      ddej                  fx       ee e
j                  dk      ddd*ej                  fx      f       ejdd e#ej                  ej                  ej                        edddĐ       ejdd e#ej                  ej                  ej                        dddĐed       ejd e#ej                  ej                         e#ej                        dZddĐeV eemdZ             ejd e#ej                  ej                         e#ej                        dZdd eemdZ             ejd e!ej                  ej                        edZddZd ee e8ej                   e9dd      i      dd̐d      f       ejdd e!ej                  ej                        edZddZd ee e8ej                   e9dd      i      dd̐d      f 	       ejd! e!ej                  ej                        edZddZd ee e8ej                   e9dd      i      dd̐d      f       ejd!d e!ej                  ej                        edZddZd ee e8ej                   e9dd      i      dd̐d      f 	       ejd"d#ej                   e"ej                  ej                  ej                         eed$%       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d&d'      gdZdddZ(
       ejd"d) e"ej                  ej                  ej                         eed*%       eee
j                  dd      gddZg dddZ+       ejd,d e#ej                  ej                  ej                        eddd-       ejd,d e#ej                  ej                  ej                        dddĐed       ejd. e       edddZ/       ejd0 e       edddZ/       e{dd1d2 e#ej                  ej                  ej                        dddej                  dZ eee
j                  dd       eee
j                  ddd      f3
       e{d0 e#ej                  ej                  ej                        ddej                  dZ eee
j                  ddd      f4       e{d,d5d2 e#ej                  ej                  ej                        dddej                  dZ eee
j                  dd       eee
j                  ddd      f3
       e{d. e#ej                  ej                  ej                        ddej                  dZ eee
j                  ddd      f4       e{d6ej                   e"ej                  ej                  ej                        dZddZ7       e{d8ej                   e"ej                  ej                  ej                        dZddZ7       e{d9ej                   e"ej                  ej                  ej                        dZddZd:       e{d;ej                   e%ej                        ej                  ej                  dZd eee
j                  ddd      f<       e{d=ej                   e%ej                        ej                  ej                  dZd eee
j                  ddd      f<       e{d>ej                   e%ej                        ej                  ej                  dZd eee
j                  ddd      f<       e{d?d@  e#ej                  ej                  ej                        dZdZ eee
j                  dd«       eee
j                  dd]       ee e
j                  dk      dd      fA       e{dBej                   e%       dZdZC       e{dDej                    e%       dZdZ eee
j                  ddej4                  f      fA       e{dEej                   e"ej                  ej                  ej                        eedZdZdZ eee
j                  ddej:                  f       eee
j                  dd«       eee
j                  dd]       ee e
j                  dk      dd      fF	       ejdGdHdGdI eej                  ej                        edddddĐJ       ejdGdHdKdG e"ej                  ej                  ej                         eedĐL      ddddĐM
       ejdIej                  j                  j                  dI eej                  ej                        eddddZ eee
j                  ddd*       eee
j                  ddej>                  f      fN
       ejdOdP eej                  ej                        edZdZdddZQ	       ejdOdKdP e"ej                  ej                         eedĐL      dZdddZR	       ejdS eej                         eej                  ej                        edZdd ee e8ej>                   e9dSdʐ      i      ddd*      f eee
j                  ddd      fT	       ejdU e!ej                  ej                        eddĐV       ejdW	dސdX e#ej                  ej                  ej                        e.fdZe\e[Y       ejdZ e"ej                  ej                  ej                  ej.                        dZdddZe eee
j                  dd       ee e
j                  d[      dd       ee e
j                  d[      dd˫       ee e
j                  d[      dd       ee e
j                  d[      dd       ee e
j                  d\      dg       ee e
j                  d\      dd      f]       ejdZd^ e"ej                  ej                  ej                  ej.                        dZdddZe eee
j                  dd       eee
j                  dd_       eee
j                  dd       eee
j                  dd˫       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dgdiej                  ej:                  f       eee
j                  dgd{       eee
j                  dgdh       eee
j                  ddde       eee
j                  dddf       eee
j                  d`da       eee
j                  dd       ee e
j                  db      d       ee e
j                  dc      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd!      fd	       ejde e"ej                  ej                  ej                  ej.                        dZdddZee ee e
j                  df      dd       ee e
j                  dg      dd       ee e
j                  dh      dd˫       eee
j                  dddy       eee
j                  dgd{       ee e
j                  di      dgdi       ee e
j                  dj      dd̫      fk	       ejdldle eej                         eej                  ej                        dZddĐee ee e
j                  dk      dgd{       eee
j                  dddg       eee
j                  dd       ee e
j                  dm      dd      fn       ejdodo eej                  ej                        ddde eee
j                  ddd*       eee
j                  ddd       ee e
j                  dk      dgd{       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e8ej>                   e9dpdp      i      dd_      fq       ejdrdr eej                  ej                        ddde eee
j                  ddd*       eee
j                  ddd       ee e
j                  dk      dgd{       eee
j                  dd       eee
j                  dd       ee e8ej>                   e9dpdp      i      dd_      fq       ejdsdt eej                  ej                        dZddeɐu       ejdv eej                  ej                        dZddeKepeow       ejdx eej                  ej                         eee
j                  dd      fdZddeKereqy	       ejdz eej                  ej                         eej                  ej                         eee
j                  dd      fddZddeKetes{       ejd| eej                  ej                        dZdddZeKeveu}	       ejd~ eej                  ej                         eee
j                  dd      fdZdddZeKexew
       ejd eej                         eej                  ej                         eee
j                  dd      fdZdddZeKezey       ejddddZdd eejJ                  ej                         eej                  ej                        eKee       ejddddd eejJ                         eej                  ej                        eKee eee
j                  ddd*      f       ejddddddZ eej                  ej                        eKeD ee e
j                  dk      ddej>                  f      f
       eddd dddddd e#ej                  ej                        edZddĐ       ejd eeej
                  j                  j                        dd e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                        edddeK ee e8ej>                   e9dd      i      ddd       ee e8ej.                   e9dd      i      dd˫       ee e8ej                   e9dd      i      dd       ee e8ej                   e9dʐd      i      dڐd̐d*      f ee e
j                  dk      ddej                  f       eee
j                  ddej                  ej:                  f       eee
j                  ddej                  f       eee
j                  dd@ejJ                  f      fdZ       ejddd eeej
                  j                  j                         e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                        eddddeK ee e8ej>                   e9dd      i      ddd       ee e8ej>                   e9ddp      i      ddd       ee e8ej.                   e9dd      i      dd˫       ee e8ej                   e9dʐd      i      dڐd̐d*      g ee e
j                  dk      dd       eee
j                  ddej                  ej:                  f       eee
j                  dd@ejJ                  f       eee
j                  dd@ej                  ej0                  f       ee e
j                  dm      dd       eee
j                  ddej                  ej:                  f      fdZ       ejddd eeej
                  j                  j                         e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                        eddddeK ee e8ej                   e9dd      i      dڐd̐d       ee e8ej>                   e9dd      ej                   e9ddސ      i      ddd       ee e8ej>                   e9dd      i      ddd       ee e8ej>                   e9dd      ej                   e9ddސ      i      ddd       ee e8ej>                   e9dd      i      dd_de@       ee e8ej                   e9dd      i      ddd       ee e8ej.                   e9dd      i      dd˫       ee e8ej                   e9dʐd      i      dڐd̐d*      g ee e
j                  dk      dd       eee
j                  dd@ejJ                  f       eee
j                  dd@ej                  ej0                  f       ee e
j                  dm      dd       eee
j                  ddej                  ej:                  f       ee e
j                  d      ddej`                  geEn      fdZ       ejddd e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                        eedddeK ee e8ej.                   e9dsd      i      dd˫       ee e8ej                   e9ddʐ      i      dڐd̐d      f ee e
j                  dk      dd       eee
j                  ddej                  ej:                  f       eee
j                  ddej                  ej:                  f      fddZ       ej	dߐdd e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                         ee      eeKdddd ee e8ej.                   e9dd      i      dd˫      f ee e
j                  d      dd       eee
j                  ddej                  ej:                  f       eee
j                  ddej                  ej:                  f      fddZd ejddd e!ejJ                  ej                  ej                         e!ej                  ej.                  ej                        eeeKddd ee e8ej.                   e9dd      i      dd˫      f ee e
j                  dk      dd       eee
j                  ddej                  ej:                  f       eee
j                  d       ee e
j                  dk      dd      fddZ       ejddde eej                  ej                        dZddĐe eee
j                  ddej>                  f      geedĐ       ejd eej                  ej                        dZdd eee
j                  ddej>                  f       eee
j                  dd_eEϫ      gedĐ       ejdddde eej                         eej                  ej                        dZddd ee e8ej>                   e9dSdʐ      i      dd       ee e
j                  d      dd      gedĐ       ejd eejJ                  ej                         eej                  ej                        dZdd eee
j                  ddej>                  f      ge       ejddd e"ej                  ej                  ej                        edZ eee
j                  ddej                  f      f       ejddÐdddd e"ej                  ej                  ej                         eeɐdÐ      dZī	       ejdddd e"ej                         e"ej                  ej                         eeɐdŐ       ee e
j                  dk      ddej>                  f      feKdZƫ
       ejdddd e"ej                         e"ej                  ej                         eeɐdǐ       ee e
j                  dk      ddej>                  f      feKdZƫ
       ejdddd e"ej                         e"ej                  ej                        e ee e
j                  dk      ddej>                  f       ee e
j                  dɫ      d      feKdZƫ
       ejdd e"ej                  ej                  ej                         eeɐdʐ      dddZdZ ee e
j                  dk      ddej>                  f       ee e
j                  dj      dd̫      fdZ˫
       ejd̐d͐dddĐe eej                  ej                        ddddZdgЫ       ejdѐd e!ej                  ej                         e!ej                  ej                        eddddZ ee e
j                  dӫ      dd      fԫ
       ejdՐd֐dddd eejL                  ej                         eej                  ej                  ejL                         eed׫       eee
j                  dd      fdZث       ejdՐd֐dddd eejL                         eej                  ej                  ejL                         eed٫       eee
j                  dd       eee
j                  dڐd۫       eee
j                  dڐdܫ       eee
j                  dd       eee
j                  d      fdZث       ejdՐd֐dddd eej                         eej                  ej                         eedݫ       eee
j                  dd      fdZث       ejdՐd֐dddd eejL                  ej                         eej                  ej                        eK eedޫ       eedޫ       eee
j                  dd      fdZ߫       ejdՐd֐dddd eejL                  ej                         eej                  ej                         eed       eed      eK eee
j                  dd      fdZ       ejdՐd֐dddd eej                         eej                  ej                        eK eed       eee
j                  dd      fdZ       ejdՐd֐dddd eej                  ej                         eej                  ej                         eed      eK eee
j                  dd      fdZ       ejdddd eejL                  ej                         eej                  ej                        eK eedޫ       eedޫ       eee
j                  dd      fdZ       ejdej                  j                  j                  dddd eejL                         eej                  ej                        eK eedޫ      dZ eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dڐd̫       eee
j                  dd      f       ejd eej                  ej                        dZd ee=dZ      eQ       ejdddd eejL                  ej                         eej                  ejL                  ej                        eK eed׫       eee
j                  dd      fdZ
       ejd e#ej                  ej                        dZeeeddĐ       ejd e        eej                  ej                        dZdZeee ee e8ej>                   e9dd      i      dd      f	       ejd e        eej                  ej                        dZdZeee       ejdddde eej                  ej                        	ddddddZddĐdg       ejddZ eej                  ej                        edd ee e8ej>                   e9dd      i      dd      f ee e
j                  dk      ddd      f        ejddddd eejJ                  ej                         eej                  ej                        ee eee
j                  ddd      f
       ejdddZddĐd dZ e        eej                        dZe eee
j                  dd       eee
j                  dd      f ee e
j                  d      dd      f       ejdddZddĐd dZ e        eej                        dZeKe eee
j                  dd       eee
j                  dd      f ee e
j                  d      dd      f	       ejd
dddZdddZdZ eej                  ej                         eej                  ej                         ee e
j                  d      ddej                  f       ee e
j                  dk      dd      fee       ejddddZdZdddZd e#ej                  ej                         eej                  ej                        ee       ejdeddddddZdddZdZ eej                  ej                        e ee e
j                  dk      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f       ejddddZdddZdZ e#ej                  ej                         eej                  ej                        eKee       ejddddddZdZ e        eej                        ed ee e
j                  dk      dddy       ee e
j                  dk      dddg       ee e
j                  dk      dgd{eG ϫ       ee e
j                  dk      dd_d*      f       ejdddddddZdZ e        eej                        ee       ejddddddZdZ e        eej                        ed ee e
j                  dk      dgd{eG ϫ       ee e
j                  dk      dddg       ee e
j                  dk      dddy       ee e
j                  dk      dd_      f       ejdddddddZdZdZ e        eej                        ee       ejddddddZdZ e        eej                        ed ee e
j                  dk      dgd{eG ϫ       ee e
j                  dk      dddg       ee e
j                  dk      dddy       ee e
j                  dk      dd_      f        ejdddddddZdZ e        eej                        ee       ejd!dddĐe e"ej                  ej                         e!ej                  ej                         e!ej                  ej                         e!ej                  ej                        eKdddZd eee
j                  dd      f"       ejd#ddĐe e#ej                  ej                         eej                  ge<seErej                  gng   ee e8ej                   e9dpdʐ      i      dڐd̐d*      f ee e
j                  dk      ddde<        ee e
j                  dk      ddej                  f      fddddZ$       ejd%d&dĐe eej                  ej                        dddZ'       ed(d)	dd* eej                  ej                        ddddZddZd+ 	dאd, ee e8ej                   e9dʐdߐ      ej                   e9dʐdߐ      i      dld      g-       ed.d/d0  eej                  ej                        ddddZddZeeee eee
j                  dd      g1       ed2	dd3 eej                  ej                        ddddZddZd4 	dאd5 ee e8ej                   e9dʐdߐ      ej                   e9dʐdߐ      i      dld      g6       ed7d8d9 d:  eej                         eej                  ej                        edddZd;  ee| ed<d\dĐ=      >      eT ee e8ej                   e9dʐdߐ      ej                   e9dʐdߐ      i      dld      f eee
j                  dd       eee
j                  dd       eee
j                  dgdh       ee e
j                  d?      dld˫       ee e
j                  d?      dld       ee e
j                  d?      dldͫ       ee e
j                  d?      dld̫       ee e
j                  d      dd      f@       edA	d̐dB eej                  ej                        ddddZddZdC  ee e8ej                   e9dsdD      ej                   e9dsdD      i      dld      gE       ejdFeT e'        e'       ej                  fz   ddZdZ e5e> xs eEdG      gdH	       ejdIdJ eU eej                  ej                        dZdZddZ ee e8ej>                   e9dpdK      i      d      g ee e
j                  dk      ddd       ee e
j                  dk      ddd eA       dLk\         ee e
j                  dk      ddej>                  f       ee e
j                  dk      dd       ee e
j                  dk      dgd{       ee e
j                  dk      dgdid*       ee e
j                  dk      dddgd*       ee e
j                  dk      dd$d*       ee e
j                  dk      dd%d*       ee e
j                  dk      ddd*       ee e
j                  dk      dd       ee e
j                  dM      dd̫       ee e
j                  dN      dd       ee e
j                  dO      dڐd̫       ee e
j                  dk      dАdѐdej                  fe= u      fP
       ejdQeW e'       e=s e*ej                        n e*ej                  ej                        dZddZdZdZ e5e; dR      g eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd      fS       ejdTeV e'       e=s e*ej                  ej>                        n* e*ej                  ej>                  ej                        dZddZdZdZ e5eEdU      g eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd       eee
j                  ddd      fS       edVdW	d̐dX eej                  ej                        dddddZdY  ee e8ej                   e9dʐdʐ      ej                   e9dd      i      dld      g ee e
j                  dk      dldtej2                  fd*+      fdZg[       edVd[	d̐d\ e        e       dZdZdZdZd]  ee e8ej                   e9dʐdʐ      ej                   e9dd      i      dld      g ee e
j                  dk      dldtej2                  f       eee
j                  dd       ee e
j                  dk      dldwej                  ej0                  f       ee e
j                  dk      dldmej                  f       ee e
j                  dk      dldvej                  f      f^       ed_d`e eej                  ej                        ddZdZddZ eej
                  j                  j                  dĐa       ee e8ej                   e9ddʐ      i      dld      g eee
j                  dddf       eee
j                  dldvdeE      gb       edcdddee eej                  ej                        ddZddd ee e6ej                  dsej                  di      dldm       ee e6ej                  dsej                  di      dldw       ee e6ej                  dsej                  di      dldv      g eee
j                  ddd*      ff       edgdhdi  eej                  ej                        ddddZddZ eej
                  j                  j                  dĐa       ee e8ej                   e9dsdʐ      i      dl      gj       edkdl  e"ej                  ej                         e"ej                  ej                  ej                        ddddZddZ ee e8ej                   e9dʐd      i      dl      g ee e
j                  dk      dldmej                  ej4                  f      fm       edndo  e"ej                  ej                        ddddZddZ ee e
j                  dk      dldtd*ej2                  ej0                  gx       ee e8ej                   e9dsdp      i      dl       ee e8ej                   e9dqdS      ej                   e9dsdp      i      dldvd      g ee e
j                  dr      dldwej                  ej:                  feGn       ee e
j                  dr      dldvej                  ej:                  fd*eGxs eFc      f eids d       t       edudv  e#ej                  ej                        dw dddZddZdx ely       ejdzeReS e"ej                  ej                        dZddĐ{       ejd| eeRdĐ}      eS e"ej                  ej                        dZdd eee
j                  dd       eee
j                  dd      f~       e{d eej                  ej                         eej                        dZdZ       ejdd  e"ej                  ej                  ej                        dddZe ee e
j                  dk      ddd*       ee e
j                  dk      dd        ee e
j                  dk      d`d       ee e
j                  dk      dd      f       ejd e#ej                  ej                        dddĐe       ejdd eej                  ej                        dZddde eee
j                  dd       ee e
j                  dk      ddd*ej                  ej                  fx       eee
j                  dd_deE       ee e8ej>                   e9dpdS      i      dd_d*      f	       ejddd e'        eej                  ej                        dZdde-e/g ee e8ej>                   e9dʐd      i      dd      fe̐       ejdde[ e        eej                  ej                        dZdZddd ee e
j                  dk      d       ee e
j                  dk      dd       ee e8ej>                   e9dʐdʐ      i      dd       eee
j                  dd$       eee
j                  dd%       eee
j                  dd&      f eee
j                  dd      f       e{d eej                  ej                        d e       dZdZ eee
j                  dd      f       e{d eej                  ej                        d e       dZdZ eee
j                  dd      f       eddd eej                  ej                        dddZeeߐ	       eddd eej                  ej                        dĐeddĐdg	       eddd eej4                  ejF                  ejH                  ejJ                  ej                  ej                         e#ej                  ej                         eej                  ej                        dĐedZddĐdg       ejdddeHrendeddĐe eej                  ej                        dddĐdg ee e
j                  dk      dd       ee e
j                  dm      dd      f       edd e#ej                  ej                         eej                  ej                        ddZddĐdg	       ejd e"ej                  ej                         e!ej                  ej                        ddde ee e
j                  dk      dАdej                  ej:                  f      f       ejdej                   e#ej                  ej                  ej                        dd eee
j                  dd      fe       e	dd e       d        e	dd e       d        e	dd e       d        e{dej                   d e"ej                  ej                  ej                        ddZd֫       ejd e"ej                  ej                  ej                  ej.                        dZdd eedĐ       eedĐ       eeddZ       eee
j                  dd       eee
j                  dd       eee
j                  dd_       eee
j                  dd       eee
j                  dd      f	       ejd e"ej                  ej                  ej                  ej.                        ddZdZdZ eedZ       eedZ       eedZdZ       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd d       eee
j                  dd$d       eee
j                  dd%d       eee
j                  dd&      f
       ejd e#ej                  ej                  ej                        d ddddĐe!e#ë	       eddej"                   e"ej                  ej                  ej.                        eddddddddĐū       ejdej$                   e!ej                  ej                        ddZddZdĐeǫ	       ejdej&                  d e"ej                  ej                  ej                        dddZeʫ       ejdej(                   e        ddZdZeϐeNe2e3g eee
j                  dd      f̫
       ejdej*                   e"ej                  ej                  ej                  ej.                        dZdg g ddddĐeݐeސΫ       e{	d e"ej                  ej                         e"ej                  ej                  ej.                        ej,                   e!ej                  ej                         e!ej                  ej                  ej.                        ddZdddd ed (       ed (       ee e8ej                   e9ddސ      i      dd       ee e8ej                   e9ddސ      ej:                   e9ddސ      i      ddϫ      f eee
j                  ddej4                  ejF                  ejH                  ejJ                  g       eee
j                  ddejF                  ejH                  ejJ                  g       ee e
j                  dk      ddej`                  feEn       ee e
j                  dk      ddej`                  feEn       ee e
j                  dk      ddej`                  feEn       ee e
j                  dk      ddej`                  f       ee e
j                  dk      ddej`                  f       ee e
j                  dk      ddej`                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f      fdќ e{dej.                   e"ej                  ej                  ej                        ddddd ed (       ed (       ee e8ej                   e9ddސ      ej:                   e9ddސ      i      ddϫ      f ee e
j                  dk      dd«       ee e
j                  dk      dd       ee e
j                  dk      ddej                  ej:                  g       ee e
j                  dk      ddej                  ej:                  g       ee e
j                  dk      ddej                  ej:                  g       eee
j                  ddej                  ej                  ej>                  g      fӫ       ejdej0                   e        edddZe2e3gի       edej2                   e6ej                  dvej                  dvi      f e#ej                  ej                  ej                        ddddddddĐw       edej4                   e"ej                  ej                  ej                  ej.                        dZdddZ eee
j                  dldo      fܫ       ejdej6                   e"ej                  ej                  ej                  ej.                        edZddĐee.f٫	       ejd e"ej                  ej                  ej                        eddZddĐeՐ۫       edej8                  d e#ej                  ej                        dd eee
j                  dd eǐd݄  e)       D                     ee e
j                  dk      ddej                  f      fddddddĐޫ       edej8                  dߐd eej                  ej                        d  ee|dd i>      dddZdZ       edej8                  dd eej                         eej                  ej                        d  ee|dd>i>       ee e
j                  dk      d       ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d       ee e8ej                   e9dʐdp      i      dldvd       ee e8ej                   e9dʐdp      i      dldtd      fdddZdZ       edej8                  dd eej                         eej                  ej                        d  ee|ddi>       ee e
j                  dk      d       ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d      fdddZdZ       e	dej:                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        ddZdddddddd ee e
j                  dk      dldwej0                  fd+       ee e
j                  dk      dldvej2                  ej0                  fd*eFc       ee e
j                  dk      dldwej2                  ej0                  fd*eFc       ee e
j                  d
      did      f e6ej                  dsi      fd ede3d e"ej                  ej                  ej                        dZddd e6ej                  dsej                  dsi      f ee e
j                  dk      dldmej2                  g      f
       ed  eej<                         e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        ddddddddd e6ej                  dsi      f ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwej0                  f       ee e
j                  dk      dldwd*ej4                  gx       ee e
j                  d
      did      f       ede} e#ej                  ej                  ej                         e#ej                  ej                  ej                        ddddddd ee e
j                  dk      dldvej                  ej                  ej>                  ej                  g      f       ede~ e"ej                  ej                  ej                  ej.                         e!ej                  ej                         e!ej                  ej                  ej.                        ddddddd ee e
j                  dk      dldvej                  ej                  ej>                  ej                  g       ee e
j                  d
      did      f       ejd e"ej                  ej                  ej                  ej.                         eedZx      dddZg g dĐ	       ejddd e"ej                  ej                  ej                         eedĐx      dddZ       ejd e"ej                  ej                  ej                  ej.                         eedZx      dddZg g ddZ
       ejd e"ej                  ej                  ej                  ej.                        eg g dZdddĐ	       e{dej$                  j>                   e"ej                  ej                  ej                        dZ eee
j                  dd       eee
j                  dd      fdddĐdg	       e{dej$                  j@                   e"ej                  ej                  ej                        dĐddiddZ eee
j                  dd«       eee
j                  dd       eee
j                  dd      fdddĐddg       e{dej$                  jB                   e"ej                  ej                  ej                        dZ eee
j                  dd       eee
j                  dd      fdddĐdg	       e{d ej$                  jD                   e%ej                        dZdZd eee
j                  dd      f       e{dej$                  jF                   e%ej                        dZdZd eee
j                  dd      f       e{dej$                  jH                   e%ej                        dZdZd eee
j                  dd      f       ejdej$                  jJ                   e"ej                  ej                         e!ej                  ge<seErej                  gng  d eedĐ      ddZdddZ ee e
j                  dk      ddde<        ee e8ej                   e9dSdߐ      i      dd       ee e8ej>                   e9dSdߐ      i      dd       ee e8ej                   e9dSdS      i      dd̐deE      f eee
j                  dd       eee
j                  dd       ee e
j                  d      ddd*ej                  fx       ee e
j                  dk      ddej                  fx       ee e
j                  dk      ddd*ej                  fx      f       e{dej$                  jL                   eej                  ej                         e#ej                  ej                        ddZddd eee
j                  dd       eee
j                  dd      fdĐdg       e{d	ej$                  jN                   e"ej                  ej                         e"ej                  ej                        dZddd eee
j                  dd       eee
j                  dd       ee e
j                  dk      dg       ee e
j                  dk      dd      fdĐd
g       e{dej$                  jP                   e"ej                  ej                        dddZd eee
j                  dd       eee
j                  dd      fdĐdg
       e{d e"ej                  ej                        dddZdZdeܐ       ejdd e"ej                  ej                  ej                  ej.                        e)ddddZ       ejd e#ej                  ej                  ej                        e*dddZU       ejdej                  j                  jR                  j$                   e"ej                  ej                  ej                  ej.                        eddddZdZdZ
       ejd e#ej                  ej                  ej                        e+ddddZ       edejT                   e#ej                  ej                  ej                        ddddddZ	       e	dejV                   e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                         ee e8ej                   e9ddS      i      dldvd      fddddddddd ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu       ee e
j                  d
      did      f eid ejX                        d e	di dejZ                  ddddd e6ej                  dsi       ee e8ej                   e9dd      i      dldvd      fd e"ej                  ej                  ej                        d e"ej.                  ej                  ej                  ej                        ddēd dēddēddēddēddēddēd dēddēddēd	 ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu       ee e
j                  d
      did      fd! eid" d        ejd#ej\                   e"ej                  ej                  ej                         e"ej                  ej                  ej                        dZdd eee
j                  dd       eee
j                  dd       eee
j                  dd_      fe$	       ejd% e"ej`                  ej                  ej                  ej                        dZdddZee&       ejd' e"ej`                  ej                  ej                  ej                        dZdddZee&       ejd( e"ej`                  ej                  ej                  ej                        dZdddZee&       ejd)ej^                   e        edZddĐd* e0e3g eee
j                  dd       eee
j                  dgdi e               ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx      f+
       edd,ej`                   e#ej                  ej                        ddd eee
j                  dd eǐd-  e)       D                    fdddddĐ.       ed/d0 eejb                         e"ej                  ej                  ej                        ddd ee e
j                  dk      dldwej0                  g       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx      f1       edd2 eejd                         e"ej                  ej                  ej                        ddddddddd ee e
j                  dk      dldwdej:                  gx       ee e
j                  d
      did      f3       ed4ejf                   e#ej                  ej                  ej                         e#ej                  ej                  ej                        ddd ee e
j                  d
      did      fd5 6	       ed eejh                         e"ej                  ej                  ej                        dddd ee e
j                  dk      dldvej2                  ej0                  g      f7       ed8d9 d e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                         e6ej                  di      fdddd ee e
j                  dk      dldvej2                  ej0                  f       eee
j                  dldwej.                  f      f:       e	dejj                  dĐd e"ej                  ej                  ej                         e"ej.                  ej                  ej                  ej                        dddddddd e6ej                  d;i       ee e8ej.                   e9dsd       i      dldw      f ee e
j                  dk      dldwd*ej2                  ej0                  feGu       ee e
j                  d
      did      fd< ed=ejl                   e"ej                  ej                  ej                         e6ej                  dej                  di      fdd ee e
j                  dk      dldwej2                  ej0                  g       ee e
j                  dk      dldvdej2                  ej0                  gx       eee
j                  ddej                  g       eee
j                  ddej                  g       eee
j                  ddej                  g      f>       ejd= e!ej                  ej                         e!ej.                  ej                  ej                        edddĐ?       ed@ejn                   e"ej                  ej                  ej                         e"ej.                  ej                         e6ej                  dsej                  dsi      f e!ej                  ej                         e!ej.                        ddddddd eee
j                  dldmej                  ej                  ej>                  ej                  f      fA       edBejp                   e"ej                  ej                  ej                  ej.                        dZdZC       edDejr                   e"ej                  ej                  ej                  ej.                        dZddddddZE
       edFejt                   e#ej                  ej                  ej                        ddddddZ	       edGejv                   e#ej                  ej                  ej                        ddddddZ	       edHejx                   e"ej                  ej                  ej                  ej.                        dZdZC       edIejz                   e"ej                  ej                  ej                        dZddddddZE
       ejdJdK  e"ej                  ej                         e!ej                  ej                         e!ej                  ej                        dZdddZe eee
j                  dd       ee e
j                  dk      dd      fL       ejdMej|                   e        eddddZdZdZe1e3e?g ee e
j                  dk      dАdej                  ej:                  f       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddNdej>                  geEu       ee e
j                  dk      ddOdej>                  geEu      fP       ejdQdR  e       ddZdZdZdZddĐe0e2e3e? ee e8ej>                   e9dʐdʐ      i      ddd      g eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eeeMdd_      fS       ejdTdU  e       ddZdZdZdZddĐe2e2e3e? ee e8ej>                   e9dʐdʐ      i      ddd      g eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      fV       e{dW e       d ed (      dZ ee e
j                  dk      dd«       eee
j                  dd]       eee
j                  dgdi      fX       edYdZ d[eHrend e#ej                  ej                  ej                         e#ej                  ej                        ddde eee
j                  dd      fd\ ]       edYd^ d_eHrend e#ej                  ej                         e#ej                  ej                        ddde ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      dldv       ee e
j                  dk      dldw      fd`  eida d      b       edYdc ddeHrend e#ej                  ej                         e#ej                  ej                        ddde ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      dldv      fde  eidf d      b       edYdg dheHrend e#ej                  ej                         e#ej                  ej                        ddde ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      dldv      fdi  eidj d      b       edYdk dleHrend e6ej                  dmej>                  dmi      f e#ej                  ej                         e#ej                  ej                        ddde ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      d       ee e
j                  dk      dldv      fdn  eido d      p       ejdqej~                   e"ej                  ej                  ej                  ej.                        dZdddZe       ejdrej                   e%       dZdZes       ejdt e"ej                  ej                  ej                  ej.                        e!e"e#dZddĐu       ejdvdw  e"ej                  ej                  ej                  ej.                         ee!dĐx       ee"dĐx       ee#dĐx      dZdd eee
j                  dd      fy
       ejdzd{  e"ej`                  ej                  ej                  ej                        dZdddĐe!e"e# eee
j                  dd       eee
j                  dd&      f|       ejd}d~  e"ej`                  ej                  ej                  ej                        dZdd ee!dĐx       ee"dĐx       ee#dĐx       eee
j                  dd       eee
j                  dd&      f
       ejd e"ej`                  ej                  ej                  ej                        ddZdddZe$ eee
j                  dd       eee
j                  ddej>                  g      f	       ejd e"ej`                  ej                  ej                  ej                        ddZdddZ eee
j                  dd       eee
j                  ddej>                  g      fe$	       ejd e"ej`                  ej                  ej                  ej                        ddZdddZ eee
j                  dd       eee
j                  ddej>                  g      fe$	       ejd e"ej                  ej                  ej                  ej.                        edZdddZe&e'	       ejdej                   e"ej                  ej                  ej                  ej.                        dZddĐe(       ejd e"ej                  ej                  ej                  ej.                        dddZ eee
j                  dd      fe%       ejdej                   e        dZdZddeKdZee1e3g ee e
j                  dk      ddd\ej>                  gx       ee e
j                  dk      ddd\ej>                  gx      f       ejd e"ej                  ej                  ej                         e"ej                  ej                  ej                        eHeKddĐeJ       ejd e"ej                  ej                  ej                  ej`                        dZdddZ eee
j                  ddO       eee
j                  ddN      fe eedĐ      	       ejd e"ej                  ej                  ej                  ej`                        ddddZe eedĐ      eK	       ejd e"ej                  ej                  ej                  ej.                         e!ej                  ej                  ej.                        e eedĐ      eWdddeK
       ejd e"ej                  ej                  ej                  ej.                        ddddZe eedĐ      eX eee
j                  ddej                  f      feK       ejd e#ej                  ej                        dĐe       ejd e"ej                  ej                  ej                  ej.                        ddZdddZdZej$                  j                   eee
j                  dd       ee e
j                  dk      ddd      fei       ejd e"ej                  ej                  ej                  ej.                        dZddddZdZej eee
j                  dd       ee e
j                  dM      dddyej                  gdeExr eOc      f
       ejd e#ej                  ej                  ej                         e#ej                  ej                        ekddd       ejd e#ej                  ej                  ej                         e#ej                  ej                        emdZdZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       ejd e#ej                  ej                  ej                         e#ej                  ej                        endZdZ eee
j                  dd       eee
j                  dd      f       ejd e"ej                  ej                  ej                        dZdddZdZe       ejd e"ej                  ej                  ej                        dZddĐeeK       ejd e"ej                  ej                  ej                        ddĐeeL       edd  e"ej                  ej                  ej                  ej.                        dZe- eee
j                  dg       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd      f       edd  e"ej                  ej                  ej                  ej.                        dZe-dZ eee
j                  dd       eee
j                  dd      f       edd  e"ej                  ej                  ej                        dZe-dZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       edd  e"ej                  ej                  ej                  ej.                        dZe-dZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       edd  e"ej                  ej                  ej                  ej.                        dZe-dd eee
j                  dd       eee
j                  dd      f       edd  e"ej                  ej                  ej                  ej.                        dZe- eee
j                  dg       eee
j                  dd       eee
j                  dd       eee
j                  dd      f       edd  e"ej                  ej                  ej                        dZe-d eee
j                  dg       eee
j                  dd       eee
j                  dd       eee
j                  dd      f       edd  e"ej                  ej                  ej                        dZe-dZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       edd  e"ej                  ej                  ej                  ej.                        dZe-dZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       edd  e"ej                  ej                  ej                        dZe-dZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       edej$                  j0                   e"ej                  ej                  ej                  ej.                        dZe-dd eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd      f       edej$                  j2                   e"ej                  ej                  ej                  ej.                        dZe- eee
j                  dg       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd      f       edĐdń  e"ej                  ej                  ej                  ej.                        dZe- eee
j                  dg       eee
j                  dd       eee
j                  dd       eee
j                  ddd*       eee
j                  dd       eee
j                  ddd*       eee
j                  ddd*       eee
j                  dd      f       ejd e"ej                  ej                  ej                  ej.                        dZeedZ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      dd˫       ee e
j                  dk      dd       ee e
j                  dǫ      dd       ee e
j                  d      dd      fȫ       ejd e"ej                  ej                  ej                  ej.                        dZedZe eeejV                  ƫ       eeejX                  ƫ       eeejZ                  ƫ       eeej\                  ƫ       eeej^                  ƫ      dʫ       ejd e"ej                  ej                  ej                  ej.                        dZedZd̫       ejd e!ej                  ej                  ej`                        d΄ dedZ ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  ddd*       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      fϫ       ejd e!ej                  ej                  ej`                        dф dZedZe eeejV                  ƫ       eeejX                  ƫ       eeejZ                  ƫ       eeej\                  ƫ       eeej^                  ƫ       eee
j                  dd       eee
j                  dd       ee e
j                  dҫ      dd˫       ee e
j                  d      dd      fӫ       ejd eej                  ej                  ej`                  ej                  ej:                        dՄ dZedZ eee
j                  dd       eee
j                  dd       ee e
j                  dҫ      dd˫       ee e
j                  d      dd      fϫ       ejd e#ej                  ej                        dׄ dZedZ ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      ddej>                  ejJ                  geEn      fϫ       ejd e#ej                  ej                        dڄ dZedZ eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      fϫ       ejd e"ej                  ej                  ej                        dZedZd̫       ejdܐd݄  e"ej                  ej                  ej                  ej.                        dZe eee
j                  dd      fdZޫ       ejdߐd  e"ej                  ej                  ej                  ej.                        dZe eee
j                  dd      fdZޫ       ejdej                  dZdd e"ej                  ej                  ej                  ej.                        de eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       eee
j                  dd      f	       ejdej                  dZd e"ej                  ej                  ej                  ej.                        de eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       eee
j                  dd      f       ejdej                  dZd e"ej                  ej                  ej                  ej.                        de eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       eee
j                  dd       eee
j                  ddej                  f      f       ejdd  e"ej                  ej                  ej                  ej.                        dZe eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      dd       ee e
j                  d      dd       ee e
j                  d      dd˫       ee e
j                  d      dd      fdZޫ       ejdd  e"ej                  ej                  ej                  ej.                        dZ eedĬt      dZ eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      dd˫       ee e
j                  dj      dd       ee e
j                  dj      dd̫       ee e
j                  dj      dd       ee e
j                  dj      dd       ee e
j                  dj      d`d       ee e
j                  dj      d`d       ee e
j                  dj      d`d       ee e
j                  dj      dd       ee e
j                  d      dd      f       ejdd  e"ej                  ej                  ej                        dZdZe eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  d      dd       ee e
j                  d      d       eee
j                  dd$       eee
j                  dd%       eee
j                  dd&      f       ejd e"ej                  ej                  ej                  ej.                        edZ eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      dd       ee e
j                  d      dd       eee
j                  d&d'       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      d       ee e
j                  d      dd˫       ee e
j                  d      dd      f       ejd e"ej                  ej                         e"ej                  ej                  ej                        eeddZ eee
j                  dd       eee
j                  d&d'       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       eee
j                  dd      f	       ejd e"ej                  ej                  ej                  ej.                        eedZdZ eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      dd       ee e
j                  d      dd       eee
j                  d&d'       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      d       ee e
j                  d      dd˫       ee e
j                  d      dd      f       ejd e"ej                  ej                  ej                  ej.                        edZdZ eee
j                  dd       eee
j                  d&d'       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      f       ejdd  e"ej                  ej                  ej                  ej.                        dZe eee
j                  dd      fdZޫ       ejdd d  eej                  ej                         eej                        dĐe eR eee
j                  dd       ee e
j                  dk      dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      fdZ
       ejdd  d eej                  ej                         eej                  ej                        dĐe" eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dg       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  dk      dd̫       ee e
j                  dk      dd       ee e
j                  dk      dd&      f
       ejddd d eej                  ej                         eej                  ej                        dĐe# eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dg       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      d       ee e
j                  dk      dګ       ee e
j                  dk      dd̫       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      f	       ejdd	 dd
  eej                  ej                        dddĐe$e% eee
j                  dgd{       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      f       ejd e"ej                  ej                  ej                        eeLddĐ       ejd e"ej`                  ej                  ej                  ej                        e<ddd eee
j                  dd       eee
j                  dd      f       ejd e"ej`                  ej                  ej                  ej                        eCeDddĐ       e{d eej                  ej                         eej                  ej                        dddZ       ejd e        e       e_dZ eee
j                  dd       ee e
j                  dk      dd      f       ejd e        e       e`eadZ eee
j                  ddÐd       eee
j                  dd       eee
j                  dd      f       ejd eej                  ej                         eej4                  ejF                  ejH                  ejJ                        ebddZ eee
j                  ddd      f       ejd e%       ecdZdZ ee e
j                  dk      dd      f       ejd e#ej                  ej                         e#ej                  ej                        edeeefdZ ee e
j                  d      dd      f       ejd e#ej                  ej                         e#ej                  ej                        egdZe ee e
j                  d      dd      f       ejdeAd  e"ej                  ej                  ej                  ej`                        e=e?e>ddddZd eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dddg      f!       ejd" e"ej`                  ej                  ej                  ej                        eGeEeFddddZ#	       ejd$d% e"ej`                  ej                  ej                  ej                        eCeDdd eee
j                  dd      f&       ejd' e"ej`                  ej                  ej                  ej                        eCeDdddZ(       ejd)d*  e"ej                  ej                  ej                  ej.                         e!ej                  ej                        ddZdddZdZ eee
j                  dd       eee
j                  d&d'      fe+       ejd, e"ej                  ej                  ej                  ej.                         e!ej                  ej                        dddddZdZe-
       ejd. e#ej                  ej                  ej                         e#ej                  ej                        dZddĐed/       ejd0d1 e"ej                  ej                  ej                  ej.                        dZdddZeee2
       ejd3 e!ej                  ej                        e)eMdd ee e
j                  d4      dd̐d*ej                  fx      f5       ed6d7 ej                   e"ej                  ej                  ej                        ddZddĐe eee
j                  dd      f8
       ejd9e e"ej                  ej                  ej                  ej.                        dZdg g ddddZdZeƐ:       ejd9eȐd; e"ej                  ej                  ej                  ej.                        dZdg g dddZdZeǐ<       ed=e9de: ee|d>di>      dddZ e"ej`                  ej                  ej                  ej                        dZ eee
j                  dd       ee e
j                  d?      d       ee e
j                  d?      d      f@       ejdAdB dej$                  j                  dZ e"ej                  ej                  ej                        dZdZ eee
j                  dd       eee
j                  dd       ee e
j                  dC      dd      fe D
       ejdEdF dej$                  j                   e"ej                  ej                  ej                        dZdZ eee
j                  dd       ee e
j                  dG      dd      fe H	       ejdI e"ej                  ej                  ej                         e"ej                  ej                  ej                        dZdddZeZeK eee
j                  dd&      fJ
       edKej                   e"ej                  ej                  ej                        ddZddĐeL       ejdM e"ej                  ej                        dZdddZeN       ejdO e"ej                  ej                        dZdddZeN       ejdP e"ej                  ej                        dddZdZeÐQ       ejdR e"ej                  ej                  ej                  ej.                        dZdddZdZddg g eĐS       e{dTdU e#ej                  ej                  ej                        dddd eds(      V       ejdWdX dej$                  j                   e"ej                  ej                  ej                        ddZddd eee
j                  dd      feY       ejdZd[ e#ej                  ej                  ej                        ddddZe	e
\	       ejd] e$        e"ej.                  ej                  ej                  ej                        e(dZdZddĐe'^	       ejd_e+d`d e"ej                  ej                  ej                  ej.                        dZdddZe*a
       ejdbdc  e"ej                  ej                  ej                  ej.                        dZdd eee
j                  dd       eee
j                  dd      fe-e.d	       ejdedf  e"ej                  ej                  ej                  ej.                        dZdddZ eee
j                  dd       eee
j                  dd      fe-g	       ejdhdi  e"ej                  ej                  ej                  ej.                        ddZdd eee
j                  dd       eee
j                  dd      fe,j	       ejdkdl dm e"ej                  ej                  ej                  ej.                        ddZdddZ eee
j                  dd       eee
j                  dd      fe,n       ejdo e"ej                  ej                  ej                  ej.                        ddĐeep       ejdq e"ej                  ej                  ej                  ej.                        ddĐeep       ejdr eejH                  ejJ                  f      ed ej                  d*fdsdZdZ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      ft       ejdu eejH                  ejJ                  f      ed ej                  d*fdvdZdZ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      ft       ejdw e"ej                  ej                  ej                         e"ej                  ej                  ej                        ddZddĐe eee
j                  dd&      fx	       ejdy e"ej                  ej                         e!ej                  ej                         e!ej                  ej                        dddZez       ejd{ e"ej                  ej                         e!ej                  ej                         e!ej                  ej                        dddZe ee e
j                  dk      d&d'      f|	       ejd}d~ e e"ej                  ej                  ej                         e        eej                  ej                        dZdddZdZ ee e
j                  d      dd       ee e
j                  dk      dd       eee
j                  dd       ee e
j                  dC      dd       ee e
j                  dC      dd       ee e
j                  dC      dd       ee e
j                  d      dd       ee e
j                  dk      ddej                  geEn      f       ejd e!ej                  ej                         e!ej                         e!ej                        dd eee
j                  ddd       eee
j                  dgd{ej:                  g       eee
j                  dgdiej:                  g      fe&eY	       edddeHrend e6ej                  dsej                  dej                  dsi      f ee e
j                  dk      dldvej                  ej0                  g       ee e
j                  dk      dldwej.                  ej                  ej0                  g      f e"ej                  ej                  ej                         e"ej`                  ej                  ej                  ej                        dddd eid d              edeHrej                  j                  ndd e6ej                  di      f e#ej                  ej                  ej                         e#ej                  ej                        dddĐ	       e	deHrej                  j                  ndd e6ej                  dsej                  dsi      f ee e
j                  d
      did      f e#ej                  ej                  ej                        ddddddddddĐd edeHrej                  j                  ndd e6ej                  dsej                  dsi      f e#ej                  ej                  ej                        ddddĐ	       edeHrej                  j                  ndd e6ej                  dsej                  dsej>                  di      f e#ej                  ej                  ej                         e#ej                  ej                  ej                        dddddddĐdr ee e
j                  dk      dldveHxr3  e]j                  ejt                         e]j                  d      k  ϫ       ee e
j                  dk      dldweHxr3  e]j                  ejt                         e]j                  d      k  ϫ       ee e
j                  dk      dldmeHxr3  e]j                  ejt                         e]j                  d      k  ϫ      f       ejdee_ eej                  ej                         eej                         eej                         eej                        dZdd eee
j                  dd      f       ejd ed       e]e^ e!ej                  ej                        dZdd eee
j                  ddej>                  f      f	       edeHrendd e6ej                  dvi      f e#ej                  ej                  ej                         e#ej                  ej                        ddd ee e
j                  dk      dldvej>                  ej                  geFn       ee e
j                  dk      dldwej>                  ej                  geFn      f eid d             ejd e        dZddee0e3g       ejdddĐd eej                  ej                        edddĐ	       ejddKdd e"ej                  ej                  ej                  ej.                         eedĐL      dddĐ	       eddeHrej                  j                  ndddddd e6ej                  dej                  di      f e#ej                  ej                  ej                        e       ejdd d e/e0e1dZdd eee-ddë      f eee
j                  dd       ee e
j                  dk      dd      f e"ej                  ej                  ej                  ej.                               ejd e"ej                  ej                  ej                  ej.                        e2dZ eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  d&d'       ee e
j                  dk      ddej                  geEn      f       ejd e"ej                  ej                  ej                  ej.                        e3dZdZe,g eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dڐd̫       eee
j                  dd       ee e
j                  dk      ddej                  geEn      f       edej                  j                  j                  d      d  e"ej                  ej                  ej                        dZdZe- ee e8ej                   e9dsds      i      dldv       ee e8ej                   e9dsds      i      dld       ee e8ej                   e9dsds      i      dldt       ee e8ej                   e9dsds      i      dldm      g eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       ee e
j                  dk      dldvej                  g       ee e
j                  dk      dldej                  g       ee e
j                  dk      dldtej                  g       ee e
j                  dk      dldwej                  geEn       eee
j                  dd       ee e
j                  dk      d      f
       e{dej                  j                  j                  dd      ddd e"ej                  ej                  ej                         eeڐdҐd      dZdZdZe-g eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  dk      d      f
       ejdej                  j                  j                  ddd֫      ddd֜d e"ej                  ej                  ej                         eeڐd7dd      dZdZe-g eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  dk      d      f«	       e{dej                  j                  j                  ddū      dƄ  e"ej                  ej                  ej                         eeڐdҐdǐ      dZdZdZe-g eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  dk      d      f
       ejdej                  j                  j                  dɐdҐū      dddʄ e"ej                  ej                  ej                         eeڐdҐ˫      dZdZe-g eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  dk      d      f«	       ejd;e e!ej                  ej                        ddZdd eee
j                  ddej>                  f      f̫       ejd;dee1e3gdZdZdd e         e         eee
j                  ddej                  ej>                  f       ee e
j                  dk      ddNdej>                  geEu       ee e
j                  dk      ddOdej>                  geEu      fΫ       ejd;de e!ej                  ej                         e!ej                  ej                        ddZd ee e8ej                   e9dds      i      dd       ee e
j                  dk      dАdej                  ej:                  f       eee
j                  ddej                  ej>                  f      fЫ	       ejd;de e!ej                  ej                        ddZddZ ee e8ej                   e9ddʐ      i      dڐd̐d       eee
j                  ddej>                  f      fҫ	       ejd_edZdddZdZg g  e"ej                  ej                  ej                        dĐeQӫ       ejdԐdՄ  eej                  ej                         eee
j                  dd       eee
j                  dd       ee e
j                  dk      ddd       ee e
j                  d      dd      fdddZdZe8dք ׫
       ejdej                  j                  j                  j                  d e#ej                  ej                  ej                         eej                  ej                        dZe9 ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  d٫      ddeJϫ       ee e
j                  d٫      ddeJϫ      fګ       ejdېd܄  eej                  ej                         eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      fdddZdZ ee8dݐޫ      d߄ 
       ejdd  eej                  ej                         eee
j                  dd       eee
j                  dd       ee e
j                  d      dd      fdddZdZ ee8dޫ      d 
       ejdd  eej                  ej                        edddZe8dZd  eee
j                  dd       eee
j                  ddd       eee
j                  dd      f       ejdd d eej                  ej                         eee
j                  dd       eee
j                  dd       eee
j                  dgd{       eee
j                  dgdh       ee e
j                  d      dd      fddddZ ee8dĐd      d        ejdd d e"ej                  ej                  ej                         eee
j                  dd       eee
j                  dd      fedddZ ee8dZ      d        ejdedZ eejJ                  f      e<       ejddd  eej                  ej                        e;ePdd eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      ddd       ee e
j                  dG      dd      fddZ       ejdd  eej                  ej                         eej                  ej                         eej                        e: eee
j                  dd       eee
j                  dd       ee e
j                  dG      dd      feKdZdZ
       ejdd  eej                  ej                        ef ee e
j                  dk      ddej>                  f       ee e8ej>                   e9dd       i      dd̫       ee e
j                  dk      dڐd̫       ee e
j                  dk      dgd{       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd_       ee e
j                  dk      dd       ee e
j                  d      ddej                  ej                  f       ee e
j                  d      ddej                  ej                  f      fdZddddĐ
       ed ded  ee|d>dd>      dd eej                  ej                         ee e8ej                   e9dsds      ej                   e9dsds      i      dl      f	       ejdd ed       e=dZdd eej                         e        eej                  ej                         eej                  ej                         eee
j                  ddej>                  f      f       ejd	 e        eej                  ej                        dZe>e?dZd
       ejd e        eej                  ej                        dZe@dZd
       ejdej                   e"ej                  ej                  ej                        dZdZeE ee e
j                  dk      ddej                  geEn      f       endddZej                   e"ej                  ej                  ej                         eej                         eee
j                  ddejL                  g      f       enddZdZej                   e"ej                  ej                  ej                         eej                         eee
j                  ddejL                  g      f       enddddZd e#ej                  ej                  ej                         eej                         eee
j                  dd       eee
j                  dd      fe[	       enddddZd e#ej                  ej                  ej                         eej                         eee
j                  dd       eee
j                  dd      fe[	       enddZdZdejJ                   e#ej                  ej                         eej                  dZ             enddZdZejJ                   e#ej                  ej                         eej                  dZ             end d dZdZejJ                   e"ej                  ej                  ej                        e eej                         ee e
j                  dk      dd!       ee e
j                  dk      dd"       ee e
j                  dk      dd#       ee e
j                  dk      dd       ee e
j                  dk      dd$       ee e
j                  dk      dd%       ee e
j                  dk      dd&       ee e
j                  dk      dd      f'	       endPddddZddd e!ej                  ej                         eej                        e ee e
j                  dk      dd!       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(ej                  g       ee e
j                  dk      dd)dej                  gx      f*       end+d,ddddZd eej                  ej                         e!ej                  ej                  ej.                         edĐ       eej                         ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(ej                  g       ee e
j                  dk      dd-dej                  gx       ee e
j                  dk      dd)dej                  gx      f.       end/ddddddddZ e!ej                  ej                         e!ej                  ej                        e eej                        e ee e
j                  dk      dd!       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(ej                  f       ee e
j                  dk      dd-ej                  f      f0       end/dddZddddddZ e!ej                  ej                         e!ej                  ej                        e ee e
j                  dk      dd       ee e
j                  dk      dd      f1       end2ddddddddZ e!ej                  ej                         e!ej                  ej                        e eej                        e ee e
j                  dk      dd!       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(       ee e
j                  dk      dd-       ee e
j                  dk      dd3      f4       end2dddZddddddZ e!ej                  ej                         e!ej                  ej                        e ee e
j                  dk      dd       ee e
j                  dk      dd      f1       end5dddZddZdddeK e"ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                        ee ee e
j                  dk      dd!       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd6       ee e
j                  dk      dd"       ee e
j                  dk      dd(ej                  ej                  g       ee e
j                  dk      dd-ejL                  ej                  ej                  g       ee e
j                  dk      dڐd7ej                  g      f8       en	 	di d:d d;dd<dZddēddēd=dēd e"ej                  ej                  ej                        d e"ej                  ej                  ej                  ej.                        d eej                        d>ed? eeejV                  ƫ      d@ eeejX                  ƫ      dA eeejZ                  ƫ      dB eeej\                  ƫ      dC eeej^                  ƫ      d	 ee e
j                  dk      dd!       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(ej                  g       ee e
j                  dk      dd-ej                  g       ee e
j                  dk      dڐd7ej>                  g      f endDd d,ddddZd e#ej                  ej                  ej                         e"ej                  ej                  ej                  ej.                         edĐ       eej                         ee e
j                  dk      dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd(ej                  g      fE       ejdF e       dZeB eee
j                  dddyej                  f       eee
j                  dddgej                  f       ee e
j                  dk      ddej>                  f       ee e
j                  d٫      d`deJϫ      fG       ejdH e#ej                  ej                  ej                        dZddĐeA       ejdI eej                         eej                  ej                        dZeCddd ee e
j                  dk      ddej>                  f      fJ	       ejdK eej                  ej                        ddZddĐeGeH eee
j                  dd       eee
j                  dd_       eee
j                  dd       ee e
j                  dk      ddej>                  f      fL	       ejdM eej                  ej                        dZddĐeJeKeLN       ejdOdP eej                  ej                        dZdĐeMeN ee e
j                  dk      ddej>                  f      fQ       ejdRebea e       dZdZ ee e
j                  dm      dd      fS       ejdT e#ej                  ej                        dZddĐeOePU       ejdV e#ej                  ej                  ej                         e#ej                  ej                        ekdZdZ ee e
j                  dk      ddej>                  f      f       ejdW e"ej                  ej                  ej                  ej.                         e!ej                  ej                  ej.                        edZdddZ ee e
j                  dk      ddej>                  ej                  f      fX	       ejdY	ddZeX e"ej                  ej                        dZdd ee e
j                  dk      ddej>                  ej                  f      f[       ejd\eY e"ej                  ej                  ej                        dZdd ee e
j                  dk      ddej>                  ej                  f      f]       ejd^eZ e"ej                  ej                  ej                        dZdd ee e
j                  dk      ddej>                  ej                  f      f]       ejd_e` eej                  ej                        dZddĐ`       ejdaddbec e"ej                  ej                  ej                         e"ej                  ej                  ej                        dZdddZc	       ejddd9 e#ej                  ej                  ej                        ddĐee       ejddd5 e#ej                  ej                  ej                         e#ej                  ej                        e eee
j                  dgd{       eee
j                  dgdh       eee
j                  dgdi      ff       ejdddP e#ej                  ej                         e#ej                  ej                        ddĐeg       ejddd e#ej                  ej                  ej                         e#ej                  ej                        ddZdĐeh       ejddd e#ej                  ej                  ej                         e#ej                  ej                        ddZdĐeh       ejdidjd eej                  ej                        dZdZe ee e
j                  dk      ddd      fk       ejdidjdl eej                  ej                        dZdZ eedl       ee e
j                  dk      ddd      fk      Zeeej   ewdm<   eeej                  j                  z  Zeg  ednd ee e
j                  dk      dldmej4                  geJn      fo       edpd ee e
j                  dk      dldtdej0                  geFu       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldmdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvd*ej2                  ej0                  gx      fo       edqd} ee e
j                  dk      dldtdej0                  geFu       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu       ee e
j                  dk      dldmdej0                  geFu      fo       edrd ee e8ej                   e9dSdʐ      i      dld       e6ej                  dsi      g ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu      fs       edtd e6ej                  di      f ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldtd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej0                  geFu       ee e
j                  dk      dldwdej0                  geFu      fs       edud=v       edwd eee
j                  dd       eee
j                  dd       eee
j                  dd      fo       edxd eee
j                  dd       eee
j                  dd       eee
j                  dd      fo       edyd ee e
j                  dz      dd{       ee e
j                  d|      dd       ee e
j                  d|      dd       eee
j                  dd       ee e
j                  d|      dd}       ee e
j                  d      dd       eee
j                  dd      f~       eddd eee
j                  ddej4                  ejL                  ejF                  ejH                  ejJ                  f       ee e
j                  dk      dd       ee e
j                  dz      dd{       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd       ee e
j                  d      dd}       ee e
j                  d      dd       eee
j                  dd      f	       eddd ee e
j                  dk      dd       eee
j                  ddej4                  ejL                  ejF                  ejH                  ejJ                  f       eee
j                  dd}ej4                  ejL                  ejF                  ejH                  ejJ                  f       ee e
j                  dz      dd{       ee e
j                  d      ddd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd}       ee e
j                  d      dd       eee
j                  dd      f
       eddd ee e
j                  dz      dd{       ee e
j                  d      ddd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd}       ee e
j                  d      dd       eee
j                  dd      f       eddd ee e
j                  dz      dd{       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd}       ee e
j                  d      dd̫       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f
       edddd ee e
j                  dz      dd{       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd}       ee e
j                  d      dd̫       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f
       edej$                  jP                  dddZ ee e
j                  dz      dd{       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd}       ee e
j                  d      dd̫       ee e
j                  d      dd       ee e
j                  d      dd       eee
j                  dd       eee
j                  dd       eee
j                  dd      f
       edd eee
j                  dd       eee
j                  dd       eee
j                  dd      fo       edd eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd}ej4                  ejL                  ejF                  ejH                  ejJ                  fd*+       eee
j                  dd{ej4                  ejL                  ejF                  ejH                  ejJ                  fd*+       eee
j                  dd}ejL                  ej4                  ejF                  ejH                  ejJ                  fd+       eee
j                  dd{ejL                  ej4                  ejF                  ejH                  ejJ                  fd+       eee
j                  ddejL                  ej4                  ejF                  ejH                  ejJ                  fd+      fo       eddd eee
j                  dd       eee
j                  dd       eee
j                  dd}ej4                  ejL                  ejF                  ejH                  ejJ                  fd*+       eee
j                  dd{ej4                  ejL                  ejF                  ejH                  ejJ                  fd*+       eee
j                  dd}ejL                  ej4                  ejF                  ejH                  ejJ                  fd+       eee
j                  dd{ejL                  ej4                  ejF                  ejH                  ejJ                  fd+       eee
j                  ddejL                  ej4                  ejF                  ejH                  ejJ                  fd+      f       edd eee
j                  dd       eee
j                  dd       eee
j                  dd       eee
j                  dd}ejF                  ejH                  ejJ                  fd+       eee
j                  dd{ejF                  ejH                  ejJ                  fd+       eee
j                  ddejF                  ejH                  ejJ                  fd+      fo       eddd eee
j                  dd       eee
j                  dd       eee
j                  dd}ejF                  ejH                  ejJ                  fd+       eee
j                  dd{ejF                  ejH                  ejJ                  fd+       eee
j                  ddejF                  ejH                  ejJ                  fd+      f       edd"d#       eddI eee
j                  dd{      fo       eddv       eddqv       eddov       eddrdZ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      f       eddudZ ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      f       edd"d)       edd1d0       edd eee
j                  dd      fo       edd eee
j                  dd      fo       edd e6ej                  dsi      f ee e
j                  dk      dldmeEdej                  ej:                  g       ee e
j                  dk      dldveEdej:                  g       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej2                  ej0                  geFu       ee e
j                  dk      dldwdej2                  ej0                  geFu      fs       edd e6ej                  dsi      f ee e
j                  dk      dldmd*ej2                  ej0                  gx       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx       ee e
j                  dk      dldvdej2                  ej0                  geFu       ee e
j                  dk      dldwdej2                  geFu       ee e
j                  dk      dldveEdej:                  g      fs       edd%v       eddv       edd eee
j                  dd       eee
j                  dd      fo       eddPv       edd e6ej                  dsi      f ee e
j                  dk      dldwej2                  ej0                  fd*eFc       ee e
j                  dk      dldwej0                  fd+       ee e
j                  dk      dldvej2                  ej0                  geFn       ee e
j                  dk      dldvd*ej2                  ej0                  geGu       eee
j                  dldwdej.                  feFu      fs       edd ee e
j                  dk      dldwd*ej4                  gx       ee e
j                  dk      dldwej0                  g       ee e
j                  dk      dldvej2                  ej0                  geFn       ee e
j                  dk      dldwej2                  ej0                  geFn       ee e
j                  dk      dldvd*ej2                  ej0                  geGu       ee e
j                  dk      dldwd*ej2                  ej0                  geGu       eee
j                  dldwdej.                  feFu      fo       eddv       eddv       edd e6ej                  dsej                  dsej>                  di      f ee e
j                  dk      dldveHxr3  e]j                  ejt                         e]j                  d      k  ϫ       ee e
j                  dk      dldweHxr3  e]j                  ejt                         e]j                  d      k  ϫ       ee e
j                  dk      dldmeHxr3  e]j                  ejt                         e]j                  d      k  ϫ      fs       eddv       edd ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx      fo       eddv       edd/ ee e
j                  dk      dldwej0                  g       ee e
j                  dk      dldvd*ej2                  ej0                  gx       ee e
j                  dk      dldwd*ej2                  ej0                  gx      fo       edd=dĐ       edd	v       edd ee e
j                  dk      dldvej                  ej                  ej>                  ej                  f      fo       eddېv       eddBdĐ       eddDdĐ       eddFdĐ       eddGdĐ       eddIdĐ       eddHdĐ       edd e6ej                  dej                  di      f ee e
j                  dk      dldwej4                  f      fs       edd e6ej                  dvi      f ee e
j                  dk      dldvej>                  ej                  geFn       ee e
j                  dk      dldwej>                  ej                  geFn      fs       eddd e              eddd e              eddd e              edd e6ej                  di      f ee e
j                  dk      dldvd*ej2                  ej0                  geFu      fs       edd
v       edd e6ej                  di      f ee e
j                  dk      dldvd*ej2                  ej0                  geFu      fs       edd e6ej                  di      f ee e
j                  dk      dldvej2                  ej0                  g      fs       eddZv       edddK       edd4v       edÐdv       edĐdLv       edŐdאv       edƐd ee e
j                  dk      dldvej2                  ej0                  g      fo       edǐd ee e8ej                   e9dʐdp      i      dldvd       ee e8ej                   e9dʐdp      i      dldtd      fo       edȐd8 e6ej                  di      f ee e
j                  dk      dldvej2                  ej0                  f       eee
j                  dldwej.                  f      fs       edɐdddZdZ e6ej                  dsej                  dej                  dsi      f ee e
j                  dk      dldvej                  ej0                  g       ee e
j                  dk      dldwej.                  ej                  ej0                  g      f˫       ed̐d ee e
j                  dk      dldvej                  ej                  ej>                  ej                  g      fo       ed͐ddZdZ ee e
j                  dk      dldvej                  ej                  ej>                  ej                  g      fΫ       edϐdv       edАd e6ej                  dsi      f ee e
j                  dk      dldwej0                  fd+       ee e
j                  dk      dldvej2                  ej0                  fd*eFc       ee e
j                  dk      dldwej2                  ej0                  fd*eFc      fs       edѐd e6ej                  dsej                  dsi      f ee e
j                  dk      dldmej2                  g      fs       edҐd  e6ej                  dsi      f ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwej0                  f       ee e
j                  dk      dldwd*ej4                  gx      fs       edӐdGdK       edԐd e6ej                  d;i       ee e8ej.                   e9dsd       i      dldw      f ee e
j                  dk      dldwd*ej2                  ej0                  feGu       ee e
j                  dk      dldwej                  f      fs       edՐd= e6ej                  dej                  di      f ee e
j                  dk      ddej                  f       ee e
j                  dk      dldwej2                  ej0                  g       ee e
j                  dk      dldvdej2                  ej0                  gx      fs       ed֐d ee e8ej                   e9ddS      i      dldvd      g ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu      fs       edאd ee e8ej                   e9dd      i      dldvd      g ee e
j                  dk      dldvd*ej2                  ej0                  geGxs eFu       ee e
j                  dk      dldwd*ej2                  ej0                  geGxs eFu      fs       edؐdv       edِddKdZګ       edېdGdKdZګ       edܐdv       edݐd ee e
j                  dޫ      dd{       ee e
j                  dޫ      dd}       ee e
j                  dޫ      ddd       ee e
j                  dޫ      dd       ee e
j                  dޫ      dd      f~       edߐd2dĐ       eddudĐ       edd ee e
j                  dޫ      dd{       ee e
j                  dޫ      dd}       ee e
j                  dޫ      dd       ee e
j                  dޫ      dd       ee e
j                  dޫ      dd       ee e
j                  dޫ      dd       ee e
j                  dޫ      dd       eee
j                  dd       ee e
j                  d      dd      f	~       edd(d ee e8ej                   e9dʐdߐ      ej                   e9dʐdߐ      i      dld      g       edddĐ       eddv       edd ee e
j                  dk      dd{ej>                  fd*+      fo       edd%dĐ       eddYdĐ       eddRd eee
j                  dd{      f       edddĐ       edddKdZګ       eddTv       edd.v       edddĐ       edddĐ       eddgd ee e8ej                   e9dsdʐ      i      dl      g       eddAd ee e8ej                   e9dsdD      ej                   e9dsdD      i      dld      g       eddGdKdZګ       eddOdKdZګ       edd v       eddv       eddv       eddv       eddv       eddMv       eddIddZ eee
j                  ddd      f       eddOdĐ       eddn ee e
j                  dk      dldtd*ej2                  ej0                  gx       ee e8ej                   e9dsdp      ej                   e9dqdS      i      dldvd      g ee e
j                  dr      dldwej                  ej:                  feGn       ee e
j                  dr      dldvej                  ej:                  fd*eGxs eFc      fs       eddv       eddv       e	d ddd ee e8ej.                   e9dsd       i      dd      f ee e
j                  dk      ddej                  ej:                  f      f	       e	ddv       e	dd;v       e	dd' ee e
j                  d)      dd      fo       e	dd+ ee e
j                  	d      dd      fo       e	dd=v       e	dd>v       e	d	d_ ee e
j                  dk      dd«       eee
j                  dd]      fo       e	d
d)d|dd ee e
j                  dk      ddej`                  ej                  ej:                  f       eee
j                  dd{ej`                  fd+       eee
j                  dd}ej`                  fd+      f	       e	d
d)d~dd eee
j                  dd«      f	       e	d
d)ddd eee
j                  dd«      f	       e	ddv       e	dd eee
j                  dd«       ee e
j                  dk      ddej                  ej:                  g       ee e
j                  dk      ddej                  ej:                  g       ee e
j                  dk      ddej                  ej:                  g      fo       e	dd eee
j                  dd{d*ej                  ej:                  fx       eee
j                  dd}d*ej                  ej:                  fx      fo       e	ddv       e	dd edĐ      dd ee e
j                  dk      dd{ej                  f       ee e
j                  dk      dd}ej                  f       ee e
j                  dk      dej                  f       ee e
j                  dk      ddej4                  f       ee e
j                  dk      ddej                  f       ee e8ej                   e9dʐd      i      dd       eee
j                  dd]      f	       e	dddZ	       e	dddZ	       e	ddddid ee e
j                  dk      dd{ej                  fd*+       ee e
j                  dk      dd}ej                  fd*+       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddejL                  f      f	       e	ddD eee
j                  ddej4                  f      fo       e	ddԐv       e	ddِv       e	dd?dZ ee e
j                  dk      dd      f	       e	dddZ	       e	ddv       e	ddv       e	d dE eee
j                  dd«       eee
j                  dd]       ee e
j                  dk      dd      fo       e	d!dBv       e	d"dv       e	d#d6v       e	d$dv       e	d%d8v       e	d&d9v       e	d'dv       e	d(d0 eee
j                  dd      fo       e	d)d. eee
j                  dd      fo       e	d*d'dd eee
j                  ddej`                  f       eee
j                  dd{ej`                  fd+       eee
j                  dd}ej`                  fd+      f	+       e	d,dv       e	d-dv       e	d.d1 ee e8ej                   e9ddސ      i      dd       ee e8ej                   e9ddސ      ej:                   e9ddސ      i      ddϫ      f eee
j                  ddej`                  f       eee
j                  dd{ej`                  fd+       eee
j                  dd}ej`                  fd+       eee
j                  ddej4                  ejF                  ejH                  ejJ                  g       eee
j                  ddejF                  ejH                  ejJ                  g       ee e
j                  dk      ddej`                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f       ee e
j                  dk      ddej`                  ej                  ej:                  f      f	s       e	d/d ee e
j                  dk      dd{ej                  fd*+       ee e
j                  dk      dd}ej                  fd*+       ee e
j                  dk      ddej                  f       ee e
j                  dk      ddejL                  f      fo       e	d0d eee
j                  dd{ej.                  fd*+       eee
j                  dd}ej.                  fd*+      fo       e	d1d#dd ee e8ej                   e9dsd       ej                   e9dSd      ej`                   e9dSdʐ      i      dd       ee e8ej.                   e9dsd       i      ddːd*       ee e8ej.                   e9dd       i      dd̐d*       ee e8ej.                   e9dd       i      ddd*      f ee e
j                  dk      ddejL                  f       ee e
j                  dk      ddejL                  f      f	       e	d2ddd eee
j                  ddej`                  f       eee
j                  dd{ej`                  fd+       eee
j                  dd}ej`                  fd+      f	+       e	d3d8v       e	d4d6 ee e
j                  dk      dd{ej                  fd*+       ee e
j                  dk      dd}ej                  fd*+      fo       e	d5d, eee
j                  dd      fo       e	d6d- eee
j                  dd      fo       e	d7dIv       e	d8dzdZ ee e
j                  dk      dd{ejL                  fd*+      f       e	d9dTdĐ	:       e	d;	d<dĐ	:       e	d=ddZ	>       e	d?ddZ	>       e	d@ddZ ee e
j                  d      dd      f       e	dAddZ ee e
j                  d      dd      f       e	dBd[ eedĐ	C       eee
j                  dd«       eee
j                  dd]      f	D       e	dEdW eee
j                  dd«       eee
j                  dd]      fo       e	dFddZ	>       e	dGddZ	>       e	dHddZ	>       e	dIddZ ee e
j                  d      dd      f       e	dJddZ ee e
j                  d      dd      f       e	dKddZ ee e
j                  d      dd      f       e	dLddZ	>       e	dMddZ	>       e	dNddZ	>       e	dOd?v       e	dPddZ	>       e	dQddZ	>       e	dRddZ	>       e	dSdZ e"ej                  ej                  ej                         ee e
j                  d[      dd       ee e
j                  d[      dd       ee e
j                  d[      dd      f	T       e	dSdZd^ e"ej                  ej                  ej                         ee e
j                  d[      dd       ee e
j                  d[      dd       ee e
j                  d[      dd       eee
j                  dd      f	U       e	dVdedZ	>       e	dWdv       e	dXd!v       e	dYdv       e	dZd eee
j                  dd      fo       e	d[d;v       e	d\dv       e	d]dNv       e	d^dv       e	d_dBv       e	d`du e6ej                  dvej                  dvi      f~       e	dad(v       e	dbdv       e	dcdv       e	dddv       e	dedddZ	f       e	dgddĐ       e	dhd' eee
j                  dd      fo       e	didv       e	djdv       e	dkdv       e	dldv       e	dmdv       e	dndv       e	dod eee
j                  dd      fo       e	dpd eeddĐ      	q       e	drdd eedZdĐ      	s       e	dtddZ	>       e	dudl ee e
j                  dk      dd{d*ej>                  fx       ee e
j                  dk      dd}d*ej>                  fx      fo       e	dvd͐v       e	dwd e6ej                  dvej                  dvi      f~       e	dxdqv       e	dyd3v       e	dzd6dZ	>       e	d{dtv       e	d|dvv       e	d}ddZ	>       e	d~ddZ	>       e	dddZ	>       e	dd9v       e	dd9d;       e	dd# eee
j                  dd       eee
j                  dd{      fo       e	dd%v       e	dd'v       e	dd eedĐ	C      dZ eee
j                  dd{ej                  ej:                  g      f	       e	dd eedĐ	C      dZ eee
j                  dd{ej                  ej:                  g      f	       e	dd_v       e	dd_v       e	ddb ee.dĐ	      	q       e	dd)v       e	dd,dĐ       e	ddRv       e	ddzv       e	dd}v       e	dd$ eee
j                  dd      fo       e	ddv       e	dd"v       e	dd eee
j                  ddejL                  g      fo       e	dd ee[dĐ	C       eee
j                  dd       eee
j                  dd      f	D       e	dd ee[dĐ	C       eee
j                  dd       eee
j                  dd      f	D       e	dd eee
j                  ddejL                  g      fo       e	dd  ee e
j                  dk      dd!       ee e
j                  dk      dd"       ee e
j                  dk      dd#       ee e
j                  dk      dd       ee e
j                  dk      dd$       ee e
j                  dk      dd%       ee e
j                  dk      dd      fo       e	ddPd eedĐ	C       eee
j                  dd       eee
j                  dd      f	       e	dd/d eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd(ej                  f       ee e
j                  dk      dd-ej                  f      f       e	dd!v       e	dd9d eee
j                  dd       ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd(ej                  g       ee e
j                  dk      dd-ej                  g       ee e
j                  dk      dڐd7ej>                  g      f       e	ddmd eee
j                  dd      f       e	ddod eee
j                  dd      f       e	ddFdZ	>       e	dd5dd eee
j                  dd       eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd(ej                  ej                  g      f	       e	dd2d eee
j                  dd       eee
j                  dd       ee e
j                  dk      dd(      f       e	dddZ	>       e	dd eee
j                  dd{      f~       e	dd]v       e	dd;ddZ	f       e	dd ee e
j                  d      dd{       ee e
j                  d      dd}       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  	d      dd       ee e
j                  d      dd      f	o       e	dd ee e
j                  d      dd{       ee e
j                  d      dd}       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  	d      dd       ee e
j                  d      dd      f	o       e	dd͐	d  ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd      f	       e	dd ee e
j                  dk      dd       ee e
j                  dk      dd       ee e
j                  dk      dd      fo       e	dd ee e
j                  d      dd{       ee e
j                  d      dd}       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  d      dd       ee e
j                  	d      dd       ee e
j                  d      dd      f	o       e	dd ee e
j                  	d      dd{       ee e
j                  	d      dd}       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  d      dd      fo       e	dd ee e
j                  	d      dd{       ee e
j                  	d      dd}       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  	d      dd       ee e
j                  d      dd      fo       e	ddv       e	ddߐv       e	ddܐv       e	dd eee
j                  dd      fo       e	dd	d  eee
j                  ddd      f	       e	dd eee
j                  dd{       eee
j                  dd      fo       e	dd eee
j                  dd{      fo       e	dd eee
j                  dd{       eee
j                  dd      fo       e	dd eee
j                  dd{      fo       e	ddv       e	dd eee
j                  dd{      go       e	dd eee
j                  dd{      go       e	ddYv      Zgegej                  j                  z  Zgeeegz   ZhehD  cg c]  }  ei| e      s|  c} ZjehD  cg c]  }  ei| e{      s|  c} Zk eǐ	d ehD              ZlehD  cg c]  }  ei| e      s|  c} ZmeeD  cg c]  }  ei| e      s| j                  s|  c} ZoeeD  cg c]  }  ei| e      s| j                  s|  c} ZqeeD  cg c]  }  ei| en      s| j                  s|  c} ZrehD  cg c]  }  ei| e      s|  c} ZsehD  cg c]  }  ei| en      s|  c} ZtetD  cg c]  } | j                  |  c} ZvevD  cg c]#  } | j                  j                  	dë      s"| % c} ZyerD  cg c]#  } | j                  j                  	dë      s"| % c} Zz ej                  d*      f	dĄZ{dZ ej                  d*      f	dńZ|	dƄ Z}	dǄ Z~	ddddx	dȄZ	ddddx	dɄZt	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 (	      )wrapspartial)productchainisliceN)infnan)AnyDictListTuple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	all_typesempty_typescomplex_types_andintegral_typescustom_types)onlyCPUonlyCUDAonlyNativeDeviceTypesdisablecuDNNskipCUDAIfNoMagmaskipCUDAIfNoMagmaAndNoCusolverskipCUDAIfNoCusolverskipCPUIfNoLapackskipCPUIfNoFFT
skipCUDAIfprecisionOverrideskipCPUIfNoMklSparsetoleranceOverridetol)!PLATFORM_SUPPORTS_FLASH_ATTENTIONSM53OrLaterSM80OrLaterSM90OrLaterwith_tf32_off
TEST_CUDNN_get_torch_cuda_version_get_torch_rocm_version)4make_fullrank_matrices_with_distinct_singular_valuesTEST_WITH_ROCM
IS_WINDOWSIS_MACOS
TEST_SCIPYtorch_to_numpy_dtype_dictTEST_WITH_ASANGRADCHECK_NONDET_TOLfreeze_rng_stateslowTestTEST_WITH_SLOWTEST_WITH_TORCHINDUCTOR)_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      }C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\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   rL   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   tensorrL   rG   )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   rL   rG   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   float32rM   rL   rG   	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   rM   rL   rG   )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   dictrL   )r   r   r   r   r   r   
test_casesinput_shapeoutput_shapestrider  input_ts               r   sample_inputs_as_stridedr    s\     {6m\HJ >H9\6>;'^4'v(>vNN >H   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  
   rL   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  !  s\     {6m\H
J >H9\6>;'\*	'9lFSabb >H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   rM   rL   )r   r   r   r   r
  r  s         r   error_inputs_as_strided_scatterr  7  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   rL   )r   r   r   r   r   inputsrvalsproducts
input_datar%  r&  r
  s               r   sample_inputs_combinationsr+  C  s]     F Evuudm4H+3'
A',,z&Ubc'Q9IJJ ,4s   AAc              +      K   t        t        j                  |||      } |d      } |d      } |d      }t        |       t        ||       t        |||       y w)Nr   r!  r"  r#  )r   r   r   rL   )	r   r   r   r   r   r   abcs	            r   sample_inputs_cartesian_prodr0  R  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   rG   rF   rL   )r   r   r   r   r   r   casesr  s           r   sample_inputs_cosine_similarityr7  c  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   r6  shapes           r   sample_inputs_itemr<  x  s8     {%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)NFr9  z&elements cannot be converted to Scalarr   )
r   r   r   r   rF   rG   rE   rM   rL   RuntimeError)opr   r   r   r6  r;  s         r   error_inputs_itemr@    sh     {%--V[\H 

	
A	
Aq		E (\@B 	B s   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   FTr3  333333?)trainingmomentumr   r   r   r   333333)rC  rD  r           r!  rC  r   r   r   r         r  r   r   r   r  )TFFr   )NNNN)r   r   rG   lenrL   zip)r   r   r   r   r   r   make_arg_without_requires_gradr6  r  channelsweightbiasrunning_meanrunning_varweightsbiasesis_trainingrC  s                     r   sample_inputs_batch_normrV    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[!""	 )	
 		
 #D 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   rG   rF   r   floatfloat16r   nn
functionalsoftmaxrL   )r   r   r   r   r   r   r6  input_dtypesr;  r   input_dtypeinputoutputs                r   #sample_inputs_softmax_backward_datarb    s     F%}H q	
Q
QBE
 7L& 0'%,UL%A!k$$,,U;,O(5/63DD &B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   rC  TrD  r3  r   h㈵>r   r   r   r   rV  r`  numelr   r   getrL   r   r   r   r   r   samplessampler   rC  rD  r   s              r   sample_inputs_native_batch_normrk    s     &w}WPVWG <<1${{==$$Z6==$$Z5mmt,&,,d1gtAwQaRZ\dfi-jkk    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   rC  TrD  r3  r   rd  r   r   r   r   re  rh  s              r   &sample_inputs__native_batch_norm_legitrn    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        t        |||      }dt        ft        t        ft        t        t        ff}|D ]  }t	         ||              y wNr   r   r5  r:  s           r    sample_inputs_nn_activation_relurr    sR     {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   )rI  rG  皙?      ?r   r   r   rx  )rO  r   )sample_kwargsrb   r   r   rG   rF   r   r   rL   rK  r  )r   r   r   r   r   rv  r   r6  r;  rO  weight_tensorchannel_sizes               r   sample_inputs_prelur}    s;    %%feT:1=I.w}9BD D D {6m\H 


Q
Q	E (F!LLe[hiMhuo]4DEE ) $'u:?uQx(5/</1J0LMM  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N)r}  rg   )r?  r   r   r   r   s        r   reference_inputs_prelur  &  sC     "2vumNvNNN1"fe]]V\]]] O]s   626466c                     t        j                  t               | |      }|t         j                  k(  r"|j	                  t         j
                  d      }n|j                         }|j                         }d|id|ifS )Nr  cpur   rO  )r   randtuplebfloat16tor   r  numpy)r   r   r`  rO  
weight_cpu	np_weights         r   !sample_kwargs_prelu_scalar_weightr  *  sf    ZZe<FYYU]]5YA
ZZ\
  "Iv9 566r   c              #     K   t        t               |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   rO  ry  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   r   rM   rL   )r?  r   inprO  s       r   error_inputs_prelur  4  s     
egfEMM
BC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   D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r3  0_5r   1r   3r   neg_1r   neg_2)      neg_0_5)g      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).0r;  r   names       r   	<genexpr>z%sample_inputs_norm.<locals>.<genexpr>q  sP      ;-9)tT D!Ha{2T!"X=t||FT^?_`-9   46r   r  Texclude_zero)r   r   rG   	itertoolsr   rL   )r   r   r   r   r   r   r6  cases_nonzero_inputcases_posdimcases_negdimr;  r   r  s                r   sample_inputs_normr  H  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tT(5/4@@ P 1tT(5t<4dSS 1s   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   rG   rL   
r   r   r   r   r   r   r6  r;  r   r  s
             r   sample_inputs_norm_fror  {  sx     {6m\H QY
Q=)
Q%!Q!5)E #tT(5/4@@ #   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    sk     {6m\H Q5!
QUQFO]3E
 #tT(5/4@@ #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   rG   r   rL   r  s
             r   sample_inputs_norm_infr    s     {6m\H Q3$&!
Q#
Q#qK(
Q#r_-	E #tT(5/4@@ #   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   rG   rF   r   broadcast_shapesrL   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 !'	9y!y!$(>(>y)(TT#SF=MNN	!c)<)<)>(@AA !'s   B C#/Cc              +     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 ]l  \  }	}
 ||	      }g }t        |dz
        D ]  }|j                   ||
              |	t        j                  |	|
      k7  }t        |t        |      ||       n y w)	Nr   r  r   r   )r   r   r   )r   r  r   
num_inputsrz  r   r   r  )r   r   rG   rF   rg  rangeappendr   r  rL   r  )r?  r   r   r   r   r   r  r  rz  r  r  r  r   ir  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 &	9y!zA~&AKK+, '%)?)?	9)UU#E$KXhii !'s   D>E 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   )rG   rF   rL   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 
d#E$K00 s   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)r`   r   r   rG   lhs_make_tensor_kwargsrhs_make_tensor_kwargsr   boolrL   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   )rM   rL   r>  rY  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   rY  )r   r   r   s      r   to_floatz&sample_inputs_arange.<locals>.to_float  s8    $0dCi".uT{Dc4r   )rG  gA!         )rx  gC  @       @)rG  g       r  )rx        @r  c              3   :   K   | ]  \  }}} |||        y wr  r   )r  r   r   r   r  s       r   r  z'sample_inputs_arange.<locals>.<genexpr>"  s"     	K{);%d(5#t
${s   ))r   '  Nr   ry  r   )r   r   r   r  r   r   r   r   )r   int8uint8rL   )r?  r   r   r   r   int_samplesfloat_sampleslarge_samplesri  r   r   r   r  s               @r   sample_inputs_aranger    s     K&  	 
L{	KMM M)GUZZ--= #sD=<<cEV*LMMaev(VWW\e3&5TZ9[\\e3+Y_>`aa $ a.
af
%%s   CC	c           	   +      K   t        t        ||d      }t        ft        t        ff}|D ]  }t	        |t        |||              y w)NFr9  r`  r   )r   r   rF   rG   rL   r  )r?  r   r   r   r   r   r  r;  s           r   sample_inputs_randnr  <  sN     {%eTH 
	
AF
 dv]j.kll    A
Ac              +      K   t        t        ||d      }t        t        fddft        t        t        fddff}|D ]  \  }}}	t         ||      ||	f        y w)NFr9  r   r   r   r3  r   r  
r?  r   r   r   r   r   ri  r;  meanstds
             r   sample_inputs_normalr  G  sb     {%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   zerosrM   rL   r>  r?  r   r   tinvalid_stds        r   error_inputs_normalr   Q  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)NFr9  r   r3  r   r   r   r   r   rF   rG   rL   )
r?  r   r   r   r   r   ri  r;  mediangammas
             r   sample_inputs_cauchyr&  Z  sm     {%eTH
q#
QA
QBG
 !(vu(5/@@ !(   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_cauchyr*  e  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)NFr9  r3  r   r  r   r#  	r?  r   r   r   r   r   ri  r;  rates	            r   sample_inputs_exponentialr.  o  sb     {%eTH
s
Q
QCG
 t(5/88    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_exponentialr2  {  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)NFr9  皙?r3  rw  r   r#  r,  s	            r   sample_inputs_geometricr6    sb     {%eTH
s
Q
QCG
 t(5/88 r/  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_geometricr9    sC     RD(AH
AXK(I(T r3  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)NFr9  r   g      ?r3  r   r   r#  r  s
             r   sample_inputs_log_normalr;    sn     {%eTH
q$
Qa
QAsG
 $tS(5/s<< $r'  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_normalr=    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)	NFr9  id   r   r   r   r   r#  )
r?  r   r   r   r   r   ri  r;  hilos
             r   sample_inputs_uniformrB    sm     {%eTH
tS
QA
QAqG
 !r2(5/R99 !r'  c              +   d   K   t         ft        t        ff}|D ]  }t        |||d        y w)Nr   ry  )rF   rG   rL   )r?  r   r   r   r   sizessizes          r   sample_inputs_ones_zerosrF    s9      
	
AE $&'IJJ 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   )rF   rG   r   intr   rL   )
r?  r   r   r   r   rM  rD  fill_valuesrE  
fill_values
             r   sample_inputs_fullrR    sa     A 
	
AE 5>7599#56K#E;7j$
%GG 8   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_uniformrU    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   rx  zDreceived an invalid combination of arguments - got \(int, int, floatr   r  r   z1only supports 0-dimensional start and end tensors)rM   rL   r>  r   r   r   r  s      r   error_inputs_linspacerX    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@r\  r   r   r\  )r   r   r\  r   r   r  r   r   r   )listr   r   r
  rL   )r?  r   r   r   r   endsstartsnstepsr6  r   r   nsteps               r   sample_inputs_linspacerf    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)Nr[  r]  r`  TTTFFTFr   r   )r   r   r\  rj  r   r   rL  r  r   r   r   )r   r   r   ra  r   r
  
isinstancerY  r   int64rL   )r?  r   r   r   r   rb  rc  rd  is_start_end_tensorsr   r6  r   r   re  is_start_tensoris_end_tensortensor_optionss                    r   &sample_inputs_linspace_tensor_overloadrt    s     DFFGu||F%HH v/CDEIaHbbE?D;sE;O]EKKS1W	#(F;U:eU;S%--Y^YdYdeE3z#u7MemmSXS^S^_C%sEl>JJ @E 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   r^  r   r   r   r_  r   r   r   r   r  皙?Nr        @r{  r  r   r   r   r  r   r   r  r   )	r   r	  r
  r   rn  rY  r   r  rL   )r?  r   r   r   r   rb  rc  rd  basesr   r   re  r  s                r   sample_inputs_logspacer    s     D FF5::u{{";;IAXE#*64#GsE4EKKC!GuqyA:*UE2E<L<LPUPgPg<e3,Z`?abbe3t*<u`fEghh $H 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)Nrv  rx  ry  rz  r|  ri  r  r   r   r   rL  r  r~  r   )r   r	  r
  r   r   r   rn  rY  r   r  r   ro  rL   )r?  r   r   r   r   rb  rc  rd  r  rp  r   r   r   re  r  rq  rr  rs  s                     r   &sample_inputs_logspace_tensor_overloadr  $  sD    D FF5::u{{";;IAXEGu||F3HELVUY[achj~E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# F@& 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)NrG  gHz>FTr   )rtolatol	equal_nanr  )	r`   r   r   r   rG   r  r  rL   r  )r?  r   r   r   r   rtolsatols
equal_nansr)  r   r  r  r  r  r  s                  r   sample_inputs_iscloser  A  s     /FE=[TZ[[[ JEJEJueZ0H{6m\H!)dI1v;!:!:;1v;!:!:;#SF!%4di!P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   rY  rM   rL   r>  )r?  r   r   make_float_args       r   error_inputs_iscloser  T  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  `  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       y y w)Nr   c                 N     |       j                         j                        S r  conjr  rE  r   r   s    r   make_arg_conjz'sample_inputs_mm.<locals>.make_arg_conjj  !    ~""$33MBBr   r   )r   r   rG   rF   rL   r   )	r   r   r   r   r   r  first_shapesecond_shaper   s	      `    @r   sample_inputs_mmr  g  sr     {6m\HC "#AAK
h{+8L3I2K
LL(;/}\7R6TUU s   A8A<c              +   r  K   |j                  d|j                  rdnd      }|j                  d|j                  rdn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 | y y w)Nr         @      @rB  beta      ?       @r5  )r4  r   r4  F)r   r   r4  T)r   r   r4  Tr  r  r9  r  r   Fr   )	rg  r   r  r   r   rL   with_metadatamHr  )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  u  sg    

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

 -)9-
:	; 8B UOU%033BB=QUO
 	
 	
 UOUOU%033BB=Q
 	
 	
    D5D7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  rB  r  r5  r   r   r   r   repeatr  r  )
r   r   r   r  r   rL   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
 	
 7s   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   rL   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   rL   rG   rF   selfr   r   r   r   r   s         r   sample_inputs_mvr    s2     {%DtcpqH
hq!nhqk
22s   >A c              +      K   t        t        ||d d |      }t         |t        t        t               |t        t        t                     y wr  )r   r   rL   rF   rG   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 r  r  r  s    r   r  z-sample_inputs_dot_vdot.<locals>.make_arg_conj  r  r   )r   r   rL   rG   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                        }|s7t	        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   rL  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   rM   rL   rZ  )r   r   is_refr   r   s        r   error_inputs_dot_vdotr    s     V5==IJZ]*Qemm:\9^_%UW 	W
[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)Nr9  r   Fr5  rB  r   Tr   r  r  r  )r   r   rG   rF   rL   r  )r   r   r   r   r   r   r  test_cases_with_broadcastr6  rE  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 :?5c3e%5(4.x}/M!%4u!=P`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   TrB  r5  r   r  r  r  r  )r   r   rG   rF   r   rL   r  )r   r   r   r   r   r   r  r  batch1_shapebatch2_shaper  r  is_broadcastingbeta_complexalpha_complexs                  r   sample_inputs_addbmmr    sr    {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\M\<uo*.&/5F;K-Lh{38L;QS[\hSi:j%)|=%Qdsu u(;/x7MxXdOe6f!%4u!=P_a 	a R\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rn  r  r  argr   s     r   r  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   r  z0sample_inputs_addcmul_addcdiv.<locals>.<genexpr>  r  r  valueQ	@r   )r   r   rG   r  rL   r  r  r   )
r   r   r   r   r   r  
input_argsr  r   r   s
            @r   sample_inputs_addcmul_addcdivr    s2    {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-
:	; )3s   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)	Nrm  )NTFr  r   rx  r   rG  r   Q	r  yQ	@Gz@r   rL  r   )r  r  r   )r  supported_dtypesr   r   r   float64
complex128r  r   r   typecomplexrL   r  )r   r   r   r   r   r  r   typesvaluestype2type3r  arg1arg2arg3s                  r    reference_inputs_addcmul_addcdivr  "  s2    ,9179 9 9 //7{6OH 
(()	'E
F ")!7))-- K7"U---Ae,Ae,Ae, d$d>OPPd$66% "8-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   TrB  r5  r   r   r   r   r   r   r  r  r  r  c              3   .   K   | ]  } |        y wr  r   r  sr   s     r   r  z(sample_inputs_baddbmm.<locals>.<genexpr>j  s     1&QXa[&   r   r   r   )rG   rF   r   r   rL   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   M  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>? U_$ 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  rO  r  )r   r   r   r   r   _make_tensorr  r;  s           r   )sample_inputs_multilabel_soft_margin_lossr  t  s     ;vUR_`L 
	
AF
 ,u-\%W\5]4_hjkk,u-\%W\5]4_"*Le,T!UW 	W    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?)r5  rB  r4  r  r   rG  )r   r   rL   rG   rF   r  r   r  r  r   r   mathr	   )	r   r   r   r   r   r   r  r  rs  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rq  r  r:  s           r   sample_inputs_zero_r	    sC     {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   marginrx  r  rO        $      $@	reductionnoner  r  r  r   r   r   longrG   rF   rL   )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 (.#VV,{36)FSS (.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  rl  Nr  r  r  r   r  r  )r  r  rO  r  r  )r  r   r   r   r  rG   rF   r   ndimrE  rL   )r   r   r   r   r   r  r  r  r'  psmarginsrS  r  r  r  r  r  rO  r  r`  weight_shapes                        r   "reference_inputs_multi_margin_lossr    sW    .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?? @q! `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 FloatrO  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   rM   rL   
ValueErrorr>  r?  r   r   r   s       r   error_inputs_multi_margin_lossr'    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           
   +   D  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                  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    .Ar  r   r   )rG   r   r   r  r   rL   )r  r   r   r   r   r'  lowsr   r   r;  r   keepdimr  s                r   sample_inputs_logsumexpr+    s     
Qt
Qu
Q
QF  %(FFGD/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   r?  r9  r   Fr   r   T)r+  r   r   rL   rY  )r?  r   r   r   r   r  s         r   reference_inputs_logsumexpr-    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  rX  r   rG   r   doublerX  is_availabler  r   rL   )r  r   r   r   r   r'  r;  r  s           r   sample_inputs_like_fnsr2  &  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   r9  r   r   Tnoncontiguous)r2  r   r   rL   r  )r?  r   r   r   r   r6  r   r;  s           r   reference_inputs_like_fnsr8  ;  s     %b&%Q&QQQE {%m\H(5/**(5/33Ar:;;(5=>>(5=GG2NOO	  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_lossr:  J  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 "(vv,u-VIfMM "(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  )
r:  r   r   r   r  r   rG   rF   r   rL   )r   r   r   r   r   r  r  make_target_tensorr'  r  r;  r  r  s                r   'reference_inputs_multilabel_margin_lossr>  [  s5    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" "+F;,u-VIfMM	 'B# 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_lossr@  t  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 r  )r  r  r   )r   s    r   get_independent_tensorrB    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   )r2  r   
setdefaultrL   r`  r;  r   r  r   r   r   r   r   r   rj  s           r   sample_inputs_randintrF    s     
CD(vumVvV  62$ 2 2RV[[RFMMRR#tV\\%7%7W&++WWW W   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  )r2  rL   r`  r   r   rB  rE  s           r   sample_inputs_randint_likerI    s     
CD(vumVvVLL [[ mm	 	 "6<<0 [[	
 mm 	 W   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   )rG  rx  r  r  r  )r  r  Fr  r  r   r   rG   r   rL   )r   r   r   r   r   r  r  r  r  r;  r  r  s               r   !sample_inputs_margin_ranking_lossrN    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   rL  r  r	   r   r   r  r  r  r   r   r   r   r   )r   r   r   )rN  r   r   r  rY  rL   )
r?  r   r   r   r   r   r  inp1inp2r  s
             r   $reference_inputs_margin_ranking_lossrT    s>    0VUM\U[\\\V5P]^J,	""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 - ]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   rM   rL   r%  r&  s       r    error_inputs_margin_ranking_lossrX    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   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t        j                  ift         fdt         t        t        fddift         fdt        t        t         ft        j                  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   r4  )r   r  r   rP  r   )r   r      r   r  r   r   r   )r   r   rX  r   )
rG   r   r0  rE   rF   rX  r1  r  r   rL   )r  r   r   r   rY  r   r'  r  r  stridesr  s              r   sample_inputs_new_fnsr`    s%     
RR
Q$
QIy"-
vv&AB uqdWell34
zAq!9x&78
y1a)u||u%MN
F zz tVVh-?@A6<2\7F5 t&35 awA&AAa888 7=s   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   )rG   rL   )r?  r   r   r   r   r'  r;  r_  s           r   sample_inputs_empty_stridedrd     s      
R5F34
tu78
Q5F;<
QI&AB	F #)w%PPPP #)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   r6  cases          r   sample_inputs_emptyri    s*     E $vU-XX    c           	   +      K   d}|D ]@  }t        j                  t        t        |                  D ]  }t	        |||||        B y wrf  )r  permutationsr  rK  rL   )r?  r   r   r   r   r6  rh  layouts           r   sample_inputs_empty_permutedrn    sK     E ,,U3t9-=>FdF6Vcdd ? 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 ranger4  r   r   zDuplicate dim not allowed)rM   rL   r>  r   r   r   s      r   error_inputs_empty_permutedrt    sa     
Dy)c 
 Dw', 
 F+/    AA!c              +   @   K   d}|D ]  }t        ||||        y w)N)r   r   r   r  )r?  r   r   r   r   valsrK  s          r   sample_inputs_scalar_tensorry  0  s(      D$vU-XX rj  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  )rE   rF   rG   r   rL   )	r?  r   r   r   r   rD  r  r  _kwargss	            r   sample_inputs_eyer|  9  sp     1aAq!Q1-Eu%19 $emT9ab99aqd7;; &rS  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   rM   rL   )r   r   r   r{  s       r   error_inputs_eyer  H  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 rI  rJ  rL  s    r   rM  z'sample_inputs_new_full.<locals>.get_val]  rN  r   r   )r`  r   rL   r`  r   )r  r   r   r   r   rM  rj  	use_dtypes           r   sample_inputs_new_fullr  \  s     A (fe]UfU /6.FFMM'*E	LLM!;;M(/	(:M>DmmM 	M	 Vrg  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 rI  rJ  rL  s    r   rM  z(sample_inputs_full_like.<locals>.get_valh  rN  r   r   r   r   r   r   r  rX  r   r/  )
r  r   r   r   r   rM  r'  r;  rQ  r  s
             r   sample_inputs_full_liker  g  s    A 
WU^R 
Q$
QGENB'
wu~&AB wu||$w&=>
wu~%01
wu||$&NO
F zz tWU^h-?@A%+!z6U6 t&35 !Z2622	 &,s   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   rL   )	r  r   r   r   r   r6  r;  num_samplesr  s	            r   sample_inputs_multinomialr    s     
a
q"
R!R
a%()
a$'(
QDT*+
QDU+,E ',"{FU6D&35 ![3F33	 ',   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   )rn  ra  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   r6  r   r  value_or_mean_shapevalue_or_std_shaper  r  s    ```       r   sample_inputs_normal_commonr    sK      <A7/'(;<&'9:$.v.. <A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   r6  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   r^  )r   rm  r   g@r   r   r   )rL   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   rL   )r  r   r   r   r   r  r;  r  s           r   sample_inputs_bernoullir    sO     	

	
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outry  r   )r   r  expandrM   rL   	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   rk  r   r  )rG   r   r   rL   )
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  rL   r   rG   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   )rM   rL   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)	Nr9  )r   r   r3  )r   r   r3  r   r   r   r3  r   )r   r   rG   rY  rL   	r  r   r   r   r   r   r6  r;  r   s	            r   sample_inputs_renormr    s     {%m\H!Qi%!Qi&!Qi#!Qi%,3/0E t(5/55 s   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)Nr9  )r   )r   r   )r   r   r   )r   )r   r   )r   r   )r   rr  )r   rr  r"  r  r   r#  r  s	            r    sample_inputs_transpose_swapdimsr    sj     {%m\H"!! !ff!Qi $E t(5/55 rS  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 )Nr9  r   c              3   @   K   | ]  }t         |              y wr  r  r  r;  r   s     r   r  z(sample_inputs_adjoint.<locals>.<genexpr>       =fUK(f   )r   r   rF   rG   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 )Nr9  c              3   @   K   | ]  }t         |              y wr  r  r  s     r   r  z"sample_inputs_T.<locals>.<genexpr>
  r  r  )r   r   rF   rE   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   rM   rL   rF   rG   rE   )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        |||      }g d}g d}t        |||      D ]N  \  }}	}
t        t	        d|	|
            D ]/  } |g ||	|      } |g ||
|      }t        ||fi | 1 P 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   r   r  r   N)r   r   r   r  minrL   )r   r   r   r   r   r   batchesrE  batchr  r  r  r-  r.  s                 r   %sample_inputs_singular_matrix_factorsr    s      {6m\H(GDwd3q!s1a|$A5!Q(A5!Q(Aa-f-- % 4   A;A=c              +     K   t        | |||fi |D ]s  }|j                  j                  ^ }}}|j                  d   j                  ^ }	}
}	|d d}t	        |fi | t        g |||
|||      |d<   t	        |fi | u y w)Nr   )qrF   r9  rF   )r  r`  r;  r   rt   r   )r   r   r   r   r   rj  r  r  r  _r  rv  s               r   sample_inputs_svd_lowrankr  .  s     7P]hagh||))1;;q>''Aq 
	 6/Y// %^u^a^^5_lm	#6/Y//1 ir  c              #   \   K   t        |       }	 t        t        ||            }|sy | wr  )iterr  r   )iterablerE  itchunks       r   
chunk_iterr  I  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   rF   FcenterT)r  r  r   )r   r   r   r   r   ri  s1s2s           r   sample_inputs_pca_lowrankr  Q  so      (XQWXGWa(BIIcNIIcN#		("		( )   A%A'c                     | j                   t        j                  k(  r2t        j                  | j	                  t        j
                              S t        j                  |       S r  )r   r  rZ  sincastyper   r   s    r   np_sinc_with_fp16_as_fp32r  ]  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  rL   r   )r  rE  r;  r   r   r   s      r   r  z-sample_inputs_broadcast_to.<locals>.<genexpr>q  s<      ) (kdE 	E&d]jk	
 (   (+rG   )r   r   r   r   r   r  s    ```  r   sample_inputs_broadcast_tor  f  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)Nr9  ))r   r   r   r   r  )r   r   r   c              3   .   K   | ]  } |        y wr  r   r  s     r   r  z2sample_inputs_broadcast_tensors.<locals>.<genexpr>|       5X<ahqk<r  r   )r   r   rL   r  )	r   r   r   r   r   r  r;  other_shapesr   s	           @r   sample_inputs_broadcast_tensorsr  w  sG     {%m\HGJ *(5/5X<5X0XYY !+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)Nr9  T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   r   rL   )r?  r   r   r   r   r  r  r6  r-  r.  r/  ds               r   "reference_inputs_broadcast_tensorsr  ~  s     .r65-ZSYZZZ5}UA5}dhiAE
 
1a!A$adAaD!A$%788!A$adAaD!A$%788  [   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)	Nr9  r   r   r   )r   r  r   c              3   .   K   | ]  } |        y wr  r   r  s     r   r  z+sample_inputs_block_diag.<locals>.<genexpr>  r  r  r   c              3   .   K   | ]  } |        y wr  r   r  s     r   r  z+sample_inputs_block_diag.<locals>.<genexpr>  s     Eh[gVWhqk[gr  )
r   r   rG   rL   r  r   	complex32	complex64r   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 !+(5/5X<5X0XYYEOO#u'?16%//1Iu}}#*;>OX^n{#| 259Eh[gEh@hii !+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
  rg  )r   r   r   r  r   )use_mm_for_euclid_distdonot_use_mm_for_euclid_distrG  rx  r  r}  r3  r        @r   )rG   r   r   rY  rL   )r   r   r   r   r   small_Sr  r   cmr  t1_sizet2_sizes               r   sample_inputs_cdistr    s.    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 b"b#sCu>A$. !(7"3Xg5F2NN %/ ? I   C)C+c                 H    | j                         } | j                  |       | S r  )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   r`  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   )r`   r   r   rG   rL   r  )r?  r   r   r   r   r   r  s          r   sample_inputs_comparison_opsr    s[     /FE=[TZ[[[ {6m\H
Aq6
C
c
// \s   A AA	A c              +      K   t        t        |||      }d}|D ][  \  }}g }	t        |      D ]  }
|	j                   ||              t        dt	        |      dz
        D ]  }t        |	|f        ] y w)Nr   ))r[  r   ))r   r   r   r   r   ))r   r   r   r   r   r   r   )r   r   r  r  rK  rL   )r   r   r   r   r   r   r6  r;  num_tensorstensorsr  r   s               r   sample_inputs_stackr"    sz     {6m\HE
 ${{#ANN8E?+ $SZ!^,CgSF33 -	 $r  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   ry  r   memory_formatr   )r   r   rG   rF   rL   r   channels_last)	r   r   r   r   r   r   r6  input_shape1input_shape2s	            r   sample_inputs_cat_concatr)    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 /4 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   ry  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  rX  r   r  r  zSizes of tensors must matchzgot Noner   r   z(zero-dimensional.*cannot be concatenatedr4  z invalid combination of arguments)r   r   r   r   rM   rL   rG   r  rE   r  randnr   r  rF   r   r0  )r   r   r   r   r   r   r  zx_cuday_cpur  s              r   error_inputs_catr1    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  r\  T)r7  r   r   r   r   rL  r   r   r   r   ry  r!  )r)  r   r   r   r0  rZ  permuterL   )	r?  r   r   r   r   r   r-  r.  r/  s	            r   reference_inputs_catr5  <	  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 r  )rn  r  ndarrayr   
from_numpyr  s    r   _maybe_torchz0_elementwise_type_promo_np.<locals>._maybe_torchP	  s&    a$##A&&r   c              3   .   K   | ]  } |        y wr  r   )r  r-  r:  s     r   r  z-_elementwise_type_promo_np.<locals>.<genexpr>V	  s     ;AQr  type_promotion_kind)pytreearg_tree_leavesr  primsutilselementwise_dtypesr<   )r<  r   	flattenedtransformedresult_dtyper  r:  s         @r   _elementwise_type_promo_nprE  O	  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  rE  )r  r-  s     r   r  z_cat_np.<locals>.<genexpr>]	  s%     Mi!!1is   #--r   r<  rL  axis)
r  rK  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  DEFAULTrn  r  r8  r  floor_divide)r-  r.  r   s      r   _floor_divide_nprU  g	  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Nr9  r  )r   r   r   r   r   r   tensor_shapesr  r  s3r!  s              r   "sample_inputs_hstack_dstack_vstackrZ  r	  sz     {%m\H taT
Q!Q!Q 	M $
BB=(2-">'"" $r  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)NFr9  r+  r   r   zexpects a non-empty TensorList)r   r   r   int32rG   rM   rL   )r?  r   r   rX  r  r  rY  r!  s           r   !error_inputs_hstack_dstack_vstackr]  ~	  s     {%++fTYZH
1a|aT"M $
BB=(2-">W-;hii $ [_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   r9  r   rG   rL   r   )r   r   r   r   r   
shape_dimsr;  r   s           r   sample_inputs_unbindra  	  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)
NFr9  r   r!  r   z5Dimension specified as 0 but tensor has no dimensionsr   r  rp  )r   r   r   r\  rM   rL   
IndexError)r   r   r   s      r   error_inputs_unbindre  	  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r  )squeeze)r  r  r   s     r   r  z#reference_unbind.<locals>.<genexpr>	  s     H)GA3)Gr  )r  r  splitr;  )r  r   s    `r   reference_unbindrk  	  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         |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   rL   rF   rG   gather_variabler   r   r
  ro  r   s         r   sample_inputs_gatherrn  	  s    {6maelpqH
!Q	A1d6:< < !Q	AFQ4?A A
 !	Ru{{6:< <
 	aSF;= = 	Qekk&9; ;s   EE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   )r  slicerE  r   randpermr  )idxr   dim_sizeelems_per_rowr  r  or  jr  iis              r   _fill_indicesrx  	  s    q1a(C1Hq!,Aq1a0AY388C=1#453!&!9!M!JE"I 1 - )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   r[  r  )rr  r4  r  r   r   z"Size does not match at dimension 0r   Expected dtype int64 for indexr   r  r  z!Expected out tensor to have dtyperr  z4Index tensor must have the same number of dimensionsr   r   r  ))r      r4  z'index 23 is out of bounds for dimensionr   r  r   r  r   r   r   r  r  r   )r   r   r   r  r   rM   rL   r  r\  rM  r  r   r  r  r  ro  r  r>  r  )
r   r   r   srcrr  bad_srcbad_idxr  r   inds
             r   error_inputs_gatherr  	  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   ro  rM   rL   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   rz  )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  r0  rM   rL   r\  r   r  )r   r   r   r~  rr  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  )r3  r   rx  r   z-needs at least 2 dimensions, got 0 dimensionsr   r   r-  rM   rL   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   r-  rM   rL   r>  full)	r   r   r   r  tensor_0tensor_1tensor_2bool_3bool_4s	            r   error_inputs_ormqrr  F
  s     [[F+F
[vv.>?L!HJ J zz'1V4Hzz$&1Hzz'1V4HFF
[8VV0TUbn!ce es   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  U
  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  rx  r   r   z'weight' must be 2-Dr   )r   r  r  r   reshaperM   rL   r>  )r   r   r   indicesrS  rO  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   )rM   rL   r   r-  rs  s      r   error_inputs_tr  i
  s/     
EKK1a6:;0 r  c           	   +     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}|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 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)rx  rI  rx  rx  z>probability tensor contains either `inf`, `nan` or element < 0z invalid multinomial distributionr  rl  F)r  r  ry  Fr  )r   rM  r0  rM   rL   r  r  r   r	   r   r  r   r  )r   r   r   r   r   r'  r   r   rep_argrepr;  s              r   error_inputs_multinomialr  p
  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!"37E[e)<VL58E\xQ Q  KK&)Qv6%-/ 	/ KK1V,Qv6%-/ 	/ !Q$Qv6%-/ 	/) 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  r4  r   r   )spacingr   
edge_orderry  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   r  r   rM   rL   r  r>  rd  )r   r   r   r   r  r   r  coordinatess           r   error_inputs_gradientr  
  s    **emmU__=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 >s   G1G3c              +      K   t        t        t        f|t        j                        }t	        t        |ddd      d       y w)Nr  r  r   )lowerupperry  z;Lower bound should be less than or equal to the upper boundr   )r   rG   r   r   rM   rL   )r   r   r   r`  s       r   error_inputs_rrelur  
  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   rM   rL   r  r>  r  )r   r   r   r   r   masks         r   error_inputs_masked_selectr  
  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  rX  r   r  ry  z0CUDA Tensors cannot have more than 25 dimensionsr   )r   r   r	   rM   rL   r  r>  r   r   r   r   s       r   error_inputs_medianr  
  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   ro  rM   rL   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)Nrx  r        @r  g      @       @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   rM   rL   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   rp  r   )r   r-  rM   rL   rd  )r   r   r   r   srcsr~  s         r   error_inputs_logcumsumexpr    sW     
CKK1V,ekk!Qv.NODSv6$.%=? 	? rS  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   rL   rG   rm  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   ry  @   rr  )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 insteadr,  refsr   )rG   r  rM   rL   r   r  r-  rE   r   rM  r0  rO  rd  r>  )r   r   r  r   r;  err_msg_amax_aminerr_msg_aminmaxrD  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     sG     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C[E3<@hWW  [[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   r*  r   r   r9  r_  )r   r   r   r   r   r  r;  s          r   sample_inputs_aminmaxr  Z  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  rM   rL   r>  )r   r   r   r  r  s        r   error_inputs_diffr  j  sD     

6&)A
A
[!v> ,#Fqc!JL Lr3  c              +   R  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}g }|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)Nr9  )r   r   NNr   r   r   r   )r   r   rG   rH   r  rL   )r   r   r   r   r   r   r  sample_inputsrE  r   size_prependsize_appendprepend_sizeappend_sizers  r  input_tensorprependr  s                      r   sample_inputs_diffr  q  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 M0:,c<)1qS8I'/ak#6F9|+k9xA#D>L0<h|,$G.9Xk*tFlAsGVDD	 !	 1; hB|,a!eQ
77
hB|,a!eaiHb"b\<RT\^`bdfh]iTj
kks   H%H'c              +   z  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 ]I  \  }}}	}
 ||      }|	r ||      nd }t        ||||
        ||dz   f      }t        ||||
       K y w)	Nr9  r   r   r   r   FTrO  density)r   r   rG   r   r  rL   )r   r   r   r   r   r   rD  rE  bin_ctweightedr  r  r{  bins_tensors                 r   sample_inputs_histogramr    s     {%m\H!1v1ay1a)aAY?E+25%1+t}W\^bVc+d'fh~*2,!.A 	A 
}-,!.A 	A ,e   B9B;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)	Nr9  r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   FTr   r  rM  )r   r   r   r   r   r   rD  bin_ct_patternsrE  bin_ct_patternr  r  r  r  r{  ctr  s                    r   sample_inputs_histogramddr    s     {%m\HVaAYAq	Aq!95EIO3:5/TY[_S`chjnbo3p/nh~	b*/7cr+T,!.A 	A 399&BxQ'&9,!.A 	A 4q :s   BCC-Cc              +      K   g d}t        t        t        j                  |d      }d}t	        t         |dd      |      |       y w)Nr  Fr9  zThistogramdd: The size of bins must be equal to the innermost dimension of the input.r   r   r   r   r   r   rY  rM   rL   )r~   r   r   invalid_binsr   msgs         r   error_inputs_histogramddr    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)
Nr9  r   r   r   r   r  )r  max)r   r   r  )binsr  r  rM  )r   r   r   r   r   r   rD  rE  r  r  r  s              r   sample_inputs_histcr    s     {%m\H!1v1ay1a)aAY?E!%!SAr7;c3(4.cs;; Dhtn4ScJJ  <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)Nr9  FTr   r   r   )rS  	minlength)r   r   r   rG   rF   r   randintrO  r  rK  rL   )r   r   r   r   r   r   rE  r  r  r{  max_valr  s               r   sample_inputs_bincountr    s     {%m\H!1a&5$-8h}}QtgU6R-5$)4l&&(--/0W\7AK@ImyJ J A 9   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)	Nr9  r   r   r   )))      ))r  r  ))    r	  r  ))r	  r   r	  !   FT	out_int32right)r   r   rG   r   msortrL   )r   r   r   r   reference_inputs_moder   r   rD  r  nbr  r  r  
boundariess                 r   sample_inputs_bucketizer    s     {%m\H!WtQi1a&!1ay!n1ay!nPQSTVWyZ[n]ERR/6uudmeUY]/[+b9e,b\'')
,
$-U< 	<	 0\s   CC
T)r  c           	   +      K   t        t        t        j                  |d      }t	        t         |t        t        t        f       |t        t        f            d       y w)NFr9  z%boundaries tensor must be 1 dimensionr   )r   r   r   rY  rM   rL   rG   r~   r   r   r   s       r   error_inputs_bucketizer    sJ     {%++fTYZH
[1a)!4h1v6FG!HJ Jr1  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)Nr9  )r!  )r!  Fr   F)rr  rq  F)r   r   r   )r  Fr   Tr6  r   )r   r   r7  r  leftr  )r  side)r  r  sorter)r  r  r  )r   r   rF   rE   r   rK  r  prodr   ro  sortrL   )r   r   r   r   r   r   rD  rE  input_sizes	is_scalarr7  r  r  unsorted_tensor
input_sizer`  boundary_tensorr  r  s                      r   sample_inputs_searchsortedr#    sy    {%m\H 	
QD1a&!5)"
Q1a&E"(
QaAYL%(
udE LSt}udmeT]LG&{Iy% #4}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 &	L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   rx  )r   r  r  ))r   r   r   ))r{  r  g      @)r  r         @r   r   r   )r&  ))rx  r}  r  )r  r'  rx  r"  r   r  )r   r   rG   rL   r   r   r  r  )r   r   r   r   r   r   test_cases_floatrE  r  r   r  r  test_cases_tensorr  coordinates_tensor_listcoordsr-  s                    r   sample_inputs_gradientr-    s,    {6maelpqH
tT1
r4
QtQ
Q#sT1%
Q#sVQ'	RHfa( +;&gsJTN!g*MM +; /@*k3
TN"$!F VF3A#**144;7 " !.ER\]] /@ro  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)Nr9  r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r  r   )
r   r   rp  Ellipsisr   
LongTensorindex_variablerG   mask_not_all_zerosrL   )r   r   r   r   r   r   	test_argsr   s           r   sample_inputs_getitemr7  *  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	        dt        |      f |dt        f      |       |r)t        j                  t        t
        j                        nt        t        f      }t         |t        t        f      |f |t        f      |        y w)Nr9  rl  r   r  )
accumulaterL  )	r   r   rL   rG   r4  r   r  r  r5  )r   r   r   r   r   r   r9  r  s           r   sample_inputs_index_putr:  C  s     {%m\H#
aWAq02aV!	# 	# 4>u{{1EJJ/CUWXVZC[aVth!:O 	O $rl  c              +   ^  K   fd}fd}t         |              t        dd      }ddg}t        |||      D ]S  \  }	}
}t         |       |	|
       t        j                        j
                  dk(  s>t         |       |	|
|       U 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   rq  rG   ro  viewr  r  resr   r   r   s    r   small_3d_uniquez+sample_inputs_sort.<locals>.small_3d_uniqueT  sO    nnQUQYekk&INNqRSUVWffUm**=9
r   c                      t        j                  t        t        z  t        z  t         j                        } | j	                        j                        } | S r=  )r   rq  rE   ro  r  r  r?  s    r   large_1d_uniquez+sample_inputs_sort.<locals>.large_1d_uniqueY  s>    nnQUQYekk&IffUm**=9
r   r  r   TFr  )r   
descendingstabler9  r   )rE  )r   rE  r   r  )rL   r  r   r   r   r  r  r   )r   r   r   r   r   rA  rC  r  flagr   rD  rE  
tensor_opts    ```         r   sample_inputs_sortrH  S  su    
 o'
(( Q<D%=D#*4t#<Z/+S*==<<$$-!sz&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   A;F-D,F-c              +     K   t        t        |||      }dt        ft        t        ft        t        t        ff}|D ]?  }t         ||       |d      j	                          |d      j	                                A y wNr9  r   )r   r   rG   rL   rK  )r   r   r   r   r   r   rD  x_sizes           r   sample_inputs_thresholdrL  }  sh     {%m\H!1v1ay)E(6*HRL,=,=,?"ARARATUU 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   r9  r  )r   r   rG   r   indexrK  r  r   r  rL   r  r  r  )r   r   r   r   r   r   rD  r;  rN  rO  rP  r   r
  s                r   sample_inputs_uniquerR    s8    {6m\H!1v1ay1a)aAY?E EE4=5$-%H_` 	:v~}c :%++a.3 ?s5zk 1SCJ5FVNR_ehi ++e5}]',V,, 5

%HRY~~m4 	',V,, (5/4V44+ as   D:D<c               /      K   t        | i |D ]1  }|j                  d   r|j                  j                  d       | 3 y w)NrN  )rR  r   pop)r   r   sample_inputs      r    sample_inputs_unique_consecutiverV    sB     ,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   )rX  r   r   r   r   	r   r   r   r   r   r   r6  r  output_sizes	            r   !sample_inputs_adaptive_avg_pool1dr[    s\     {6m\HE %* [(;/{nEE(;qr?3;.II	 %*   AAc              +      K   t        t        |t        j                        }t	        t         |d      d      d       t	        t         |d      d      d	       y w)
Nr  r   r   rZ  $'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_pool1dra    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)rd  NN)rd  r   r   r   r   rY  s	            r   !sample_inputs_adaptive_avg_pool2drf    s\     {6m\HE %* [(;/{nEE(;qr?3;.II	 %*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`  rW  r  s       r    error_inputs_adaptive_avg_pool2drk    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)rm  r  )r   r   r  r  r   )r   r   N))r   r   r  r  r   )r   Nr   )ro  Nr   r   r   r   r   rY  s	            r   !sample_inputs_adaptive_avg_pool3drq    s\     {6m\HE %* [(;/{nEE(;qr?3;.II	 %*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 4r   ri  r   zoutput_size must be 3r   r  r   r   r   r`  rW  r  s       r    error_inputs_adaptive_avg_pool3dru    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   )rw  r   rk  r   r   r   r   r   r   rL   	r   r   r   r   r   r   r6  r  
return_idxs	            r   !sample_inputs_adaptive_max_pool1dr{  
  sy     {6m\HE &e];
(6!9-VAY
4KLL(6!9QR=1J8OPP	 <   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rb  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   r4  )r   r   r   r   )Nr   )r  r  )r   r   r   r   r   N)r  re  )r  r   rk  r   r   r   rx  ry  s	            r   !sample_inputs_adaptive_max_pool2dr  '  sy     {6m\H	E &e];
(6!9-VAY
4KLL(6!9QR=1J8OPP	 <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^  rh  r   ri  r   internal errorr   r   rj  r~  rW  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   rn  )r  r  )r   r   r   r   r   )r   r   N))r   r   r   r   r   )r   Nr   )r  rp  rk  r   r   r   rx  ry  s	            r   !sample_inputs_adaptive_max_pool3dr  L  sy     {6m\HE &e];
(6!9-VAY
4KLL(6!9QR=1J8OPP	 <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^  rs  r   ri  r   r  r   r  rt  r~  rW  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 Zd Zd Zd Zy)_TestParamsMaxPoolBasec                 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__r  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_formatrK  r&  r  r;  s     r   
_gen_shapez!_TestParamsMaxPoolBase._gen_shape  sk     dkk*EQxab	00004;;1$UqU0000 +s   AA5A5A5c              #      K   | j                   j                         }t        | j                   j                          D ]  }t	        t        ||              y wr  )r   keysr   r  r  rL  )r  r  r  s      r   _gen_kwargsz"_TestParamsMaxPoolBase._gen_kwargs  sF     {{!t{{1134Fs4()) 5r  c              #   p   K   t        | j                         | j                               E d {    y 7 wr  )r   r  r  r  s    r   gen_input_paramsz'_TestParamsMaxPoolBase.gen_input_params  s&     4??,d.>.>.@AAAs   ,646N)__name__
__module____qualname__r  r  r  r  r   r   r   r  r  p  s    
 	1*
Br   r  c                        e Zd Z 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  __classcell__r  s   @r   r  r    s    * *r   r  c                        e Zd Z 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__  sz    M"vh."H&)I6(*JF8+A3r   r  r  s   @r   r  r           r   r  c                        e Zd Z 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  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_backwardr$  ry  )
r   r   r  r  r  r  r  r  r  rL   )r   r   r   r   r   r   params_generator_type_dictparams_generatorr;  r%  r  s              r   sample_inputs_max_poolr    s     {6eTH %9$8$8,@	" @1',,?A*:*K*K*M&uo  } =LL][#f-- +N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    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       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)!Nrk  r   r   r   1   r   r\  r   Tr  r	  r  r  ry  pad must be non-negativer   r   )pad should be at most half of kernel sizezPExpected 2D or 3D \(batch mode\) tensor with optional 0 dim batch size for inputr   r  r  r   rm  )r   r  )r   r  r   z+stride must be greater than zero, but got 0r&  r   )r  r	  z-dilation must be greater than zero, but got 0)r  r	  r  r  z Invalid computed output size: -2r^  r   z%kernel_size must be greater than zeroz stride must be greater than zero)r   r   r   rY  rM   rL   r   )r   r   r   r   r   r   	error_msgs          r   error_inputs_max_pool1dr    s     ';vU[[XefZ QqB[]qu/vw%?A 	A QqB[\pt/uv%PR 	R 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 	0o 's   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   r\  r   Tr  ry  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!LN N [6R\]qu+vw!LN N 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  r\  r   r\  r   Tr  ry  r  r   r\  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!LN N [9PR78D,R S!LN N
 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   rx  r   )r  r   )r   r   r   r   r  )r   r   r   r   r3  r   )r   r   r   r   rI  rG  r   rw  r   -C6?ry  r   )r  r   r   r   r   r   r6  r  s           r   sample_inputs_normalizer  I  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   )fnr!  rO  grad_outputr	  r  r  groupsgrad_output_grad_output_rgrad_output_iweight_weight_rweight_ir-  r.  r/  s                    r   complex_convr  Z  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_inputr9  rK  r;  	unsqueezer  r  r  r   r   r  ri  )r`  rO  rP  r	  r  r  r  r  r  grad_fn_mapbatched_dim_map
is_batchedunsqueeze_dimsr  r  conv_transpose_outputr!  grad_fnr  s                      r   conv_transpose_refr  p  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   r&  r   r  r   r   r   r	  r  r  r  r   r   r   rb  r  r   r   r   r   r  )r   r  r   r  r   
r   r   r   r   r   r   r6  r  rO  rP  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;
  	 .3r  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   rb  r  r   r4  r   r   r  r5  r   r   r   r   r   ri  r  r   r   r   r   r  r   )r   r   r   r   )r   r   r   r   r  r   r  s
             r   sample_inputs_conv_transpose2dr    s+    {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;
  	 .3r   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   r^  r   r  r   r  )r   r   r   r   r   )r   r   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   r   r   r   r   )r   r   r   r   r   )r   r  r   r   r   r  r   r  s
             r   sample_inputs_conv_transpose3dr    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;
  	 .3r  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  r&  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;
  	 .3s   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  r^  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  ro  r  rM   rL   r~   r   r   r   make_int_argmake_complex_args         r   error_inputs_conv1dr"    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  r  r  )r   r   r   r   r  r  )r   r   r   r   )r   r   r   r   r  r  r  r  z5Expected 3-dimensional input for 3-dimensional weight)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   error_inputs_conv2dr%  T  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   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   r   r   r   r  r  r  r   )r	  r  r  )r   r   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   r   r  )r   r   r   r   r  r   )r   r   r   r   jit_fail_sampler   r   r6  r  rO  rP  s              r   sample_inputs_conv2dr)    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;
  	 .3   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	  r^  )r   r   r   r   r   )r   r   r   r   r   r  r   )r   r   r   r   r  )r   r   r   r   r   r  )r   r   r  r  r]  )r   r   r   r   r   )r  r  r   )r   r  r   r   r  )r   r   r   r   r  r   r  r   )r	  r  r  r  r   )
r~   r   r   r   r   r   r6  r  rO  rP  s
             r   sample_inputs_conv3dr-    sR    {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;
  	 .3s   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  r,  )r   r   r   r   r   r   r   r  r   r	  r  r  r  r  r  r  r  )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   r  r  r   r  )      r  r   r  )r  r  r  r   r  r  r   r  z8padding='same' is not supported for strided convolutionsr  r  s         r   error_inputs_conv3dr1    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   r3  r   r   r   r  r  r   rd  r   r   r   rO  rP  r   r   r   )r   r   rG   rK  r  r   rL   )r~   r   r   r   r   r   r6  r  
num_groupsrN  r{  bias_tensorrS  rT  rO  rP  s                   r   sample_inputs_group_normr9    s    {6m\H 
A}%	A~&	UTN#	UTN#
QA}%,E ,1'Z%(%5%9;q>q *x( !$'t$%--gv>LFD  F
 h{3ZJ6JJ ? ,1$ 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   rd  r   r   r   r6  )r9  r   r   rK  r  r   rL   )r   r   r   r   r   r   r6  r  r7  rN  r  r{  r8  rS  rT  rO  rP  s                    r   reference_inputs_group_normr;  ?  s    '9179 9 9 {6m\H 
!ed^, 
!ed^, 
!ed^,,E ,1'Z%(%5%9;q>q, *x( !$'t$%--gv>LFD  F
 lJA&AA ? ,1#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   Fr3  rB  )rD  r   T)rD  r   use_input_statsrE  rD  rF  rG  rH  rI  r   r   rJ  )rQ  rR  rO  rP  r   r  r   ry  )r   r   rG   rL   rL  )r~   r   r   r   r   r   rM  r6  r  rN  rO  rP  rQ  rR  
new_kwargsrS  rT  weight_channelsbias_channelss                      r   sample_inputs_instance_normrA  d  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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   r3  r  r4  r  r   r   r  r"  r  )r  r   r   )r~   r   r   r   r   r   r6  r  normalized_shaperO  rP  s              r   sample_inputs_layer_normrD    s     {6m\H 
Is|,	FUDM*	tR	r	r2E 27-%v*+()[!"FD1
 	
	 27 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   r3  )r  r4  r  )r   r   rd  )r   r  rd  )r"  r   rd  r   r   )r~   r   r   r   r   r   r6  r  rC  r   rO  rP  s               r   sample_inputs_native_layer_normrF    s     {6m\H3E /4*%s*+()[!"FD#6
 	
 [!"D$4
 	
 [!"FD#6
 	
 [!"D$4
 	
! /4   BB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   rL   rM   )r~   r   r   r   r   r  r   r  s           r   error_inputs_group_normrI    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	         ||      t               d d df      }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   z6Expected normalized_shape to be at least 1-dimensionalrd  r   r   r   z7Expected weight to be of same shape as normalized_shapez5Expected bias to be of same shape as normalized_shapezGiven normalized_shape=r  )r   NNrd  )r   r   r   r   rL   r  rM   )r~   r   r   r   r  r   r  rC  rO  r   r  rP  r   rY  err_msg4s4s                   r   error_inputs_native_layer_normrM    s     {6V[\HKGH	UWdD$$?
B RX
.. fFHH	%5vtT$J
B RX
..FDFH	%5tT4$H
B RX
..(H	"<
B RX
..s   CC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   r3  r   giUMu>r3  g      ?)r  r  r  )r  r  )r  r  r  r  r  r  r4  r  r   r   r   r   r  r   )	r~   r   r   r   r   r   r6  r  rE  s	            r   !sample_inputs_local_response_normrP    s     {6m\H 
A$?@	A$/0	AT23	A45	A'(	A}%	AT{#	Ar	A$?@	A$?@	A$?@2E &+!T6(;/tgfMM &+rJ  c                 `    dt        t        |||dd      fdt        d      D        S )Nr   rw  r  c              3   P   K   | ]  }t         d z  d z  f              ywr   Nr  r  r  Nr   s     r   r  z*sample_inputs_hardswish.<locals>.<genexpr>(  s(     G;aK!a%Q01;s   #&r   r   r   r  )r  r   r   r   r   rU  r   s        @@r   sample_inputs_hardswishrW  #  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 y w)
Nr   r   r  r   r   r   r  TFr   r   r  r   rL   )r  r   r   r   r   features_optionsbatch_optionscreate_tensorhas_biasin_featout_featbatch_shaper  rO  rP  s                  r   sample_inputs_linearra  *  s     AA'
	
	
	
A	&M Ke*7RaIM tUm-=}M 	3%7H{$[G9%<='23lF33hZ(,55 Ns   BB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  TFrY  )r  r   r   r   r   rZ  r[  r\  r]  in_feat1in_feat2r_  r`  input_tensor1input_tensor2rO  rP  s                    r   sample_inputs_bilinearrg  @  s     !9-
	
	
	
A	&M Ke*7RaIM tUm-=}M 	>08Xx+%kXJ&>?%kXJ&>?(H=>m]FCChZ(-EE N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   rK  r  rE  rL   )r  r   r   r   r   rZ  r[  r\  featuresr`  r  r   r  rs  s                 r   sample_inputs_glurj  V  s     aVaVYE
	
	
	
A	&M Ke*7RaIM "+!2!23C]!S+8}s;//;C(x)?@L#((-H!|1 1!,44	  "Ts   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)Nr4  r   r   r   r  )linearbilinearbicubic	trilinear)TFNr   r   r   )nearestnearest-exactrl  rm  rn  ro  areac                 N    |rt        g| g|z  z         S t        | g|z        S r  r  rE  rankwith_batch_channelCrU  s      r   r;  z(sample_inputs_interpolate.<locals>.shape|  s1    !QD6D=122dVd]##r   rm  rn  r  r   r   r   r     r$     F)scale_factormodealign_cornersr   rl  )333333?rB  )rE  r}  r~  r  recompute_scale_factorT)r   r
  r   r   r  r&  rL   )r~  r  r   r   r   r   DrG   rE   align_corners_optionsranks_for_moder;  r   rv  r%  r  r  r}  rx  rU  s                     @@r   sample_inputs_interpolater  i  s    DAq	A	A	A-4== 3"#C3SN$
 &&5EKK+?',$
 #55u7J7JKMsD)Gc4'!#  L {6m\H."4(Dq$(au%!+  q$(au%!+  +8&$.L% q$0!%1!&3/E  %/ +8 ) /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)
Nry  r  rz  rk  r   r   Y    r$  r{  r{  F)r}  r~  r  	antialias)r  r   r   r   r
  r  r&  rL   )	r~  r  r   r   r   r   r   r%  aas	            r   reference_inputs_interpolater    s     (tVUM\U[\\\&&',$
 $55u7J7JKM#!-]K!%"'   $ L ' ]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)Nr4  r   r   r   r   r   )rp  rm  c                 v    |rt        j                  g| g|z  z         S t        j                  | g|z        S r  )r   Sizeru  s      r   r;  z%sample_inputs_upsample.<locals>.shape  s9    ::q!f677zz4&4-((r   r   FrE  r  )r}  rB  r  r   )r~  r  r   r   r   r   r  rG   rE   r  r;  r   rv  rx  rU  s                @@r   sample_inputs_upsampler    s     DAq	A	A	A CN
)
 {6m\Ht$(5D>2q$9NOO(5D>2q$9NOO(5D>2EE(5D>2EE	 %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)rm  r  rz  r  r$  r  )r  r   r   r   r
  r  r&  rL   )r~  r  r   r   r   r   r   r%  s           r   reference_inputs_upsampler    s     %dD&%YRXYYY~',$
 $55u7J7JKM)G  L  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)rZ  r  scale_factorsr  g?Trw  rx  )rZ  r  scales_hscales_w)r   r   r  rL   )r~  r  r   r   r   r   rU  rx  HWrG   rE   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)r  rL   r   )r  r   r   r   r   rU  r  r  s           r   sample_inputs_gelur    sW     	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  asdfry  z#approximate argument must be eitherr   rM   rL   r   r   rY  r  s      r   error_inputs_gelur    s5     
[Ru{{6!R\ikq[rs!FH Hr  c                 v    g }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  )r  r  r   r   r   r   s      r   r  z;sample_inputs_max_min_reduction_with_dim.<locals>.<genexpr>   sJ      C 'B"d	 \v)-D3@B     'Br  r  )r   r   r   r   r   r'  args_for_reduction_with_dims    ```   r   (sample_inputs_max_min_reduction_with_dimr    sJ    F
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  &  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   )rQ   r   r  r   r   r	   )r   r   r   r   s       r   _generate_nan_reduction_inputsr  +  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r  )r  rL   r  r  rR   r  )r   r   r   r   r   r  supports_multiple_dimss         r   r  z'sample_inputs_nan_reduction.<locals>.fn6  so     /}MAaggi66}EFF4QVV=ST!!'')":":="ITVTT U Ns   BBr   )r  r  s   ` r   sample_inputs_nan_reductionr  2  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)Nr3  r  r   r   r   rl  midpointFr  r   r*  interpolation)r   rQ   r  r  rL   rR   r  rD  )r   r   r   r   r   test_quantilestest_interpolations	quantilesr  r`  r  s              r    sample_inputs_reduction_quantiler  ?  s     ;t5QUVfstuN#Z0#	+FE=IAGGI,,];EeY//4QVVTYZ!!%+!!)U3%8M.;F?+GGI44]CE%eYA&AA &9	 [	 J $   CCc               /   l   K   t        | i |D ]"  }|j                  j                  dd       | $ yw)zSample inputs for count_nonzeror*  N)rS   r   rT  )r   r   rj  s      r   %sample_inputs_reduction_count_nonzeror  Q  s5      *4:6:)T* ;r  c                 \    dt        t        |||      fdt        d      D        S )Nr  r   c              3   D   K   | ]  }t         f              y wr  r  rT  s     r   r  z+sample_inputs_leaky_relu.<locals>.<genexpr>[  s      ?;aK!Q();    r   rV  )r   r   r   r   r   rU  r   s        @@r   sample_inputs_leaky_relur  X  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 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  rl  r   rZ  r  r4  )r3  r3  output_ratior  r   
r   r   r   r   r   r   r6  r  r  r  s
             r   #sample_inputs_fractional_max_pool2dr  ]  s     {6m\H%E %* [+N%-	  %"-	  %'-	 % , %*rf  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   r^  ))r   r   r   r   r   r   ))r   r   r   r   r   r	  ))r   r   r   r   r   r	  ))r   r   r   r   r   r  )r   r   r   r   r   r   r   r   ))r   r   r  r   r   )r   r   r   )r   r   r   r   r   r  rl  r   r  r	  )r3  r3  r3  r  r   r  s
             r   #sample_inputs_fractional_max_pool3dr    s     {6m\H+E %* [+N%-	  %%-	  %,-	 % , %*rf  c           
   +      K   t        t        |||      }d}|D ]%  \  }}}	}
}}}t         ||      ||	|
|||f       ' t         |d      d       y w)Nr   ))r  r   r   r   TFr   )r  r  r4  r   TFr   )r  r  r   r4  TTr   )r  r   r  r   TFr   )r$  r   r   r!  FTr   )r  r  r   r  TTNr   r  r   r   )r   r   r   r   r   r   r6  r  r  r	  r  r  count_include_paddivisor_overrides                 r   sample_inputs_avgpool2dr    s{     {6m\HFE fka[&'9>OQa(;/ +VWiIZ\lmo 	o fk 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   r6  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([&(;/{nVTT -2s   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   r^  )r   r   r   r   r   r   r   TF)r	  r  r  r  r  )r   r   r   r   r   r  r  rO  r  )r   r   r   r   r   )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_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([&(;/{nVTT -2r  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  rL  r   r\  r   r  r	  r  ry  r  r   r   r  )r   r  r   rM   rL   r  s       r   error_inputs_avg_pool1dr    s`     

:U]]3A
[1WY+Z[!;= = [1WX+YZ!LN N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  rL  r   r\  r   r  ry  r  r   r  r   r  r   r   r   r  r  divisor must be not zeror   r  r   rM   rL   r  r  s       r   error_inputs_avg_pool2dr    s     

:U]]3A
[1WY+Z[!;= = [6R\^+_`!;= = [1WX+YZ!LN N [6R\]+^_!LN N 	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  rL  r   r\  r   r  ry  r  r   r\  r   r  r   r^  r   r  r  r  znon-empty 4D or 5Dr  r  s       r   error_inputs_avg_pool3dr    s    

>7A
[1WY+Z[!;= = [9PR_a+bc!;= = [1WX+YZ!LN N [9PR_`+ab!LN N 	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:0TFr%  r  r   )r   r   r   r   r  rX  r1  preserve_formatr&  r   rL   rG   r  )r   r   r   r   r   r   devicesmemory_formatsr  cpmem_fothers               r   sample_inputs_tor    s    {6m\HhG||F  E)CH::CZCZC\5<<&X(>?bi++U-@-@AN
 ")4-$P^!_BU
 (Aq!Q<0rSU7V_eff	 "` !$u~NBU
 (Aq!Q<0r27NW]^^	 O ")4-$P^!_BU
 !Q1U]]6J(Aq!Q<0r2vVV "`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   )rE  r   r   r   s    r   get_tensor_inputz,sample_inputs_topk.<locals>.get_tensor_inputA  s    4uV=YYr   r   r   r   Tr   r   r   )rL   rG   rF   )r   r   r   r   r   r  s    ```  r   sample_inputs_topkr  @  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  T  s+     {6m\H
hqk8A;
//s   79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   rM  )r   r   r   r   r   r   rD  r  size_xsize_yr  s              r   sample_inputs_distr  X  ss     {6m\HAYq!QiaV4E	B$UE26(6*(62BA1FGG 7rb  c              +     K   d| j                   v }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_select	index_add
index_copy
index_fillr   r  c                 B    t        | ft        j                  d|       S Nr   r   r   r   r   r   r   ro  )r  r   s    r   make_idxz%sample_inputs_index.<locals>.make_idxw  s    "A4ekkqWXYYr   r   r   rk  rt  r  r   r   r   r   r  r  )r  r   r   onesr  ro  r   rq  rG   r  rK  r   r  r  r;  r  rL   )r   r   r   r   	referencer   selectaddr  r  r   r  r  alphasr  r;  r  r  r  r   r   rr  s    `                    r   sample_inputs_indexr  b  s    w||+F

%C7<<'D7<<'D 5::fEQ^_5;;vU[[I;vUR_`3u~~fEKKPHZ $AF
EJJ"FF 4.%%'"6&vvv>ueUO FFaKbQCqvv{qwws|:C 3KK(KKT{}7E*:!$v66)  ?s   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}d}	t	        |||	      D ]p  \  }
}}|
\  }}t        |      dk\  rdnd	} |t        |      d	k7  r||   ndt        |      d	k7  r||   nd      }|| ||      |f}t         ||      |d
|i       r |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	||dfd
di       y y w)Nr   c                 B    t        | ft        j                  d|      S r  r  )r  r  r   s     r   r  z,sample_inputs_index_reduce.<locals>.make_idx  s    A4ekkqqQQr   r  )r   r   rk  )r  r  r  r  r   r   r   include_selfr     r     r9  r   )r   r   r   r   r   r  T)
r   r   rG   rF   r   rK  rL   r   r   r  )r   r   r   r   r   r   r  r  include_selfsreducesr;  r  r  
self_shape	src_shaper   rr  r   r`  r~  s    `                  r   sample_inputs_index_reducer    s    {6m\HR 1v1v&6!QQ1I8NOF!M.G'.v}g'N#|V %
Iz?a'aQY1)<y~!*-j/Q*>z#AGS(9-v6(:.#"0<!@B 	B (O  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   E"E%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r  r  )r  r  r   r   s      r   r  z%sample_inputs_mode.<locals>.<genexpr>  s-      ,&*"d .66&*   ")rG   r   r   )r   r   r   r   r   r   r   s         @r   sample_inputs_moder    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)Nr9  r   Fr   r   r   r   r   r  r   rk  r`  r   r   r   c              3   .   K   | ]  } |        y wr  r   r  rE  r   s     r   r  z$sample_inputs_put.<locals>.<genexpr>       7,$x~,r  c              3   2   K   | ]  } |d         ywr   r   Nr   r  rE  r  s     r   r  z$sample_inputs_put.<locals>.<genexpr>       ?,$x1%%,   c              3   .   K   | ]  } |        y wr  r   r   s     r   r  z$sample_inputs_put.<locals>.<genexpr>  r!  r  r!  r   r   r  c              3   .   K   | ]  } |        y wr  r   r   s     r   r  z$sample_inputs_put.<locals>.<genexpr>       4)$x~)r  r!  r$  )	r   r   r   ro  rq  r   rL   r  r  )r   r   r   r   r   rG   rr  idx_listaccscalar_sizestgt_genidx_gensrc_gentgtr~  	tgt_sizesr   r  s                   @@r   sample_inputs_putr4    s    {%m\H{V[`aH	A ..QvU[[
A"1
ECcTAXHHm4S!Q 0 #		 (! # %& 	& 5 :L7,7G?,?G7,7G%gwOS#s		 : := I #		 #		 : := I # %& 	& P )I4)4G
4a
 C
4.CG]3S		 : := I #		 #		 : := I # %& 	& 4s   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)Nr9  r   Fr  r   r$  r   r  r   r   c              3   .   K   | ]  } |        y wr  r   r   s     r   r  z%sample_inputs_take.<locals>.<genexpr>  r!  r  c              3   2   K   | ]  } |d         ywr#  r   r%  s     r   r  z%sample_inputs_take.<locals>.<genexpr>  r&  r'  r)  c              3   .   K   | ]  } |        y wr  r   r   s     r   r  z%sample_inputs_take.<locals>.<genexpr>  r+  r  r!  )r   r   r   ro  rL   r   r  r  )r   r   r   r   r   rG   rQ  rr  r.  r1  r0  r~  	src_sizesr   r  s                @@r   sample_inputs_taker:    s%    {%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<    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>  rj  r(  )r   r   r   r   r   r   r  r   r   r   r   )r?  r  r   r   r   rB  )r   r   r   r   r   r<  )r   r   r   r   r   )rC  )r  r   r  rw  r   )r   r   r   r   r   )rC  )r   r   r   r  rw  )rw  r   r   r   r   r   )r<  r   r   rL   )
r   r   r   r   r   r   r   r;  r  destinations
             r   reference_movedim_moveaxisrE    sf     &w}WPVWWW{6m\HD& '+"v{(5/0EFF '+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  rA  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@  r4  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   rw  r   r   r   z2movedim: repeated dim in `source` \(\[0, 4, -5\]\))rI  rH  z7movedim: repeated dim in `destination` \(\[0, 4, -5\]\)))r   r   r  rH  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   )rL  rJ  )rK  r   )r   rK  )r   r   r   r   rM   rL   rd  r   r   r   r   s       r   error_movedim_moveaxisrO  ;  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)Nr9  )	r   r!  r   r5  r  r4  r	  r/  )r   r   r   r   )r   r!  r  r  r  )r   r   r   )r   r!  r5  r  r4  r  r  )r   r!  r  r  )r  _refs.repeat)r   r   r  r   rK  rL   )r   r   r   r   r   r   rep_dimsr  is_repeat_oprep_dimr;  s              r   sample_repeat_tilerU  |  s|     {%m\H^H8F M)<<#==L!(F3 CL3u:5(5/733 4rg  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   )rG   r   rL   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!sE6U%Dt+8:&#uf55fc5<<+>GG &5s   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)NrX  r   r   r   r   rw  r   r   r   r   r   )r[  rF   rG   rE   r   rL   r   r   rW  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!sE6U%Dt+8:&#uf55fc5<<+>GG &5; 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\.rL  z(start must be an 0-dim integral Tensor\.r  )r   r   r   r   rM   rL   r>  r   r  rF   rG   rE   rd  rO  r  )r   r   rX  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)Nr4  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_trapezoidri    s     		%$	tR	tR 
		%%	tdC[!	c{#" {%Dt%24H#=%G$(Hh:E::h0%00 $>   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)Nr4  r   r   r  r  r   r   r  ra  r  r   r}  r  r   rb  s               r   sample_cumulative_trapezoidrl    s      
	%$	tR	tR 
		%%	tdC[!	c{#" {6%24IH#=%G$(Hh:E::h0%00 $>rj  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_unsqueezero  9  sA     
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   r4  )r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rL   )r   r   r   r   r   r  kernel_sizes	dilationspaddingsr_  r6  r   r;  r  r  r  r	  r   s                     r   sample_inputs_nn_unfoldrt  L  s     )F&LIHGFL)XwGE{6m\H9>5{Hgv%&+x&II :?
 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   rG   r   rL   )	r   r   r   r   r   rY  r;  r   r   s	            r   sample_inputs_squeezerx  ]  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)	Nrv  r   r   r  r  r   r  r   rw  )	r   r   r   r   r   rY  r;  r  r   s	            r   sample_inputs_squeeze_multiplerz  p  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;  )r  r-  r   s     r   r  z_squeeze_ref.<locals>.<genexpr>  s      81
aQs   ""r   )r  rn  r   r  rO  r;  r  ri  )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"  r0  r   r0  r"  r0  r   r   r   r   r   r   r   r   r  r   r   r   r   r  r  r   r   r   r   r   r   r   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  r  )r  r   )r  r"  r  )r  r  )r  r   )r  r"  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  )r   r   )r  r  r  )rx  r  )r   r  r   r   rL   )r   r   r   r   r~  r   r6  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JE3huoS$K@@   "I#
s!(5/dI8NOO $ "rG  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   r6  r  r;  r  s	            r   'sample_inputs_nn_pad_replicate_negativer    sC     E {6m\H
s(5/k0BCC 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  )r`  r  r~  r  scalar_types       r   drop_mode_argumentz9sample_inputs_constant_pad_nd.<locals>.drop_mode_argument  s.    =uC622uCU1C+DEEr   re  )r  torch._prims_commonr  r`  r   r   )
r   r   r   r   r   
nn_samplesr  r  rj  r  s
            @r   sample_inputs_constant_pad_ndr    sv      &gvu At A+5A9?AJ
 2&KF  MMv}}MM 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   rL   r   aranger   s         r   sample_inputs_repeat_interleaver    sn     V5P]^J
jna
00
j+Q
77
j+QA
>>
j+U\\!F5SYZ
[[rj  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>.mt  s*    5 Bu)6B:@B 	Br   r?  r  T)n_fftreturn_complexFr  rl  r   )r  r  r  )r  r?  r   r   )r  
hop_lengthr  r  r3  r  r  )r   r?  )r  windowr  r  ry  )r   r?  )r  r  onesidedr  )rL   r   r  )r   r   r   r   r   r  r  r  s    ```    r   sample_inputs_stftr  
  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>.mt'  s&    #..UEDL

-f--r   )r  r   r  r  ry  )r   r   r   F)r  r  )r   r   Trl  )r  r  r   )r  r  )r   r  r  r   r   )r  r  r  r3  r  r  )r  r  r  r  )r  r  r  r  )r  r  
win_lengthr  r  )r  r   r   )r  r  r  )r   r   rL   r  r   real)
r   r   r   r   r   r  r  r  real_windowr   s
     `      @r   sample_inputs_istftr  $  sB    {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  )r  r  )r   r   r   r   geqrfr  rL   )r   r   r   r   r   r   r  nstfr  r  r  r  r  r`  
reflectorstauother_matrix_shaper  s                      r   sample_inputs_ormqrr  <  s     E&bqQJ(G	B
B*1'72r?BPR*S&v1tY>U>A>q>*++e,
C!!-0=)'+aV!Q8U8%78V*c5tyQQ +Ts   B;B=c           	   +      K   t        | ||d      }|D ]I  }|j                  }t        |j                  |||d d       |_        |j	                  |      f|_        | K y w)NFr  r  )r   r`  r   r;  r  r   )r   r   r   r   r   cholesky_inverse_samplesrj  
psd_matrixs           r   sample_inputs_cholesky_solver  M  so     De  +\\
":#3#35_lrv  ~B  C!00?A	 +ru  c              +      K   t        t        |||      }d}t        |dd      D ].  \  }}}	|t        |	z   t        fz   }
 ||
 }t	        |d|f       0 y w)Nr9  )r   r   r   rk  )r   r   r   r   r   Tr   )r   r7   r   rG   rL   )r   r   r   r   r   r   batch_shapesr`  	get_infos
size_deltar;  r`  s               r   sample_inputs_lur  Y  sm     K"6PH &L.5lMSf.g*Y
q:~q11% %tY&788 /hs   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   )ra  s    r   out_fnz'sample_inputs_lu_unpack.<locals>.out_fnf  s    ay&)##r   output_process_fn_grad)r   r   linalg	lu_factorr`  r  rL   r  )	r   r   r   r   r   r  	lu_samplelu_datapivotss	            r   sample_inputs_lu_unpackr  e  so     $ -Wfe]]V\]	,,00A}-'6*88PV8WW ^s   A4A6c              +      K   t        t        |||      }d}|D ];  }t         |d      |       t         |t        t        t        f      |       = t         |d      d       y w)Nr   )rr  r   r5  r  rj  )r  r   r  ))r   r   r   rO  r  r   r   rP  r   r   r   r   r   r   r   r   r  s           r   sample_inputs_rollr  o  sb     {6m\H_D(9-C88(Aq!9-C88 
 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   rM  zDimension specified as 0)r   r   r   r   rL   rG   rM   rd  )r   r   r   r   r   r  r   r  r   rY  rK  rL  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   rw  r   )r"  r   r   r   r   )r   r   r  r   r  rL   rG   r  s           r   sample_inputs_rot90r    sg     {6m\HU2q\+DED
h1ay)
**(Aq!9-C88 rJ  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   rL   rG   rM   )
r   r   r   r   r   r  r   r  r   rY  s
             r   error_inputs_rot90r    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   unbiasedr*  r   Fr   g?)r   
correctionr   )r   r  r*  )r  r*  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lr  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  r4  r9  r   )r   r   r   r   r  r;  s         r   _generate_correlation_inputsr    s&     +F%uV=YY s    c                 *    d t        |||      D        S )Nc              3   2   K   | ]  }t        |        y wr  r  r  r  s     r   r  z)sample_inputs_corrcoef.<locals>.<genexpr>  s     _$^qKN$^s   )r  r   r   r   r   r   s        r   sample_inputs_corrcoefr    s    _$@P]$^__r   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   )r  fweightsaweights)r  rL   
ndimensionrf  rE  r   r   rO  rY  r   r  r  r  )r   r   r   r   r   r  num_observationsr  r  r  fwaws               r   sample_inputs_covr    s     )&%G!n()(:1779q	 02%))FXY`bc 02%++fZ[bc  tA  B")%0@*AD(CSVZ\dUe"fJBaggi66}E)3b2O O #g H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   )r  z1expected fweights to have one or fewer dimensions)r  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  rw  zfweights cannot be negative)rI  r^  g      r  g      zaweights cannot be negative)r   r  rG   rM   rL   r   )r   r   r   r-  s       r   error_inputs_covr    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   ))ri  )r   r   r   r   )ri  )r   r   r   r   r  )ri  )r   r   r   r   r   r   	r   r   r   r   r   r   r6  r;  r   s	            r   sample_inputs_permuter    s@     {6m\H+E
 t(5/88 rV  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   r4  )r   r"  )rc  )r   r   r   )r  r|  )r  rI  )r  rO  r   Tr6  )r  r   r   r  rl  r4  rL   )r?  r   r   r   r   r   r6  r;  permutationr  r-  s              r   reference_inputs_permuter     s     $RPPPP{6m\H	E ${''4A''*Aa{n55d3;;A>Aa{n55 5 $! Qr  c           	   +   x   K   t        t        t        dt        j                  |      ddi      d       y w)Nr   r   lambdr  ry  z:lambda must be greater or equal to 0, but found to be -0.5r   r  r  s      r   error_inputs_softshrinkr    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   rG  r3  r  ry  r   r   rL   rG   rb   r   r   r   r   r   r   lbdas          r   sample_inputs_softshrinkr	    sO     {6m\H (1a.'4AA  /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  rG  r3  r  ry  r  r  s          r   sample_inputs_hardshrinkr  )  sO     {6m\H
  (1a.'4AA   /w}UUUr
  c              +      K   t        t        |||      }dD ]&  \  }}t         |t        t              ||d       ( t	        | |||      E d {    y 7 w)Nr   ))r  r3  )r3  r  )rG  rG  )min_valr  ry  r  )r   r   r   r   r   r   r  r  s           r   sample_inputs_hardtanhr  5  sX     {6m\H A(1a.WQX1YZZ A /w}UUUs   AAAA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 r  )r  r  )r  r   s    r   r/  zsample_inputs_einsum.<locals>.cA  s    wwy''66r   r   r   rb  r4  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   r/  r   r   r   ABrx  r  Er  Is      `            r   sample_inputs_einsumr  @  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)Nr9  r   )rO  r!  r5  r  r   r  ry  )r   r   rG   rF   r   rL   )
r   r   r   r   r   r   rD  all_dimsrE  r  s
             r   sample_inputs_flipr  e  s[     {%m\HAYAq	"E3HeX.
d(4.&$@@ /s   A A"c                 |    t         t        t         ft         dt        fg}t        t        |||      fd|D        S )Nr   r9  c              3   F   K   | ]  }t         |d d               y w)Nr  r  r  s     r   r  z.sample_inputs_fliplr_flipud.<locals>.<genexpr>s  s      R6%KDt<=6s   !)rG   rF   r   r   )r   r   r   r   r   r  r   s         @r   sample_inputs_fliplr_flipudr  m  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_fliplrr  u  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_flipudr!  y  s*     
[Ru{{6!RS!8: :r  c           	   +     K   t        t        ||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       y w)Nr   r   r   r5  r   r   r   r   r   r   r;  s          r   sample_inputs_clampr$  }  s     {%DtcpqH1IE
huoXe_huo,N
OO
huoXeABi-@(5QRQS9BU,V
WW
huoXq!Qi-@,B
CC
huoT8E?,C
DD
huoXe_d,C
DDr  )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   Tr6  r   r   )r   r   r   )r   rx  r   )r  rx  r   r[  )r   r   r   r   r   r}  rL  r(  r	   )r]  r   r   r  )r   r   r  rL   r  r   r  extendr  rY  r  r  r   )r?  r   r   r   sample_inputs_funcr%  r   r   make_scalar_tensorr  r6  r-  r.  r/  r	   s                  r   $reference_inputs_elementwise_ternaryr,    sq    !"fe]MfMMM{6m\H be[hi**62	E 1a(1+Xa[(1+,FGG(1D9 ( 5 5a <hqX\>]>g>ghikm>noq 	q  ')+=+?@	
 ??..LLGAqM2.  GAq!hqkA77 
 {{&&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 r  )r  maximum)r-  r  s     r   _clamp_min_numpyr/        ::ar   c                 .    t        j                  | |      S r  )r  minimum)r-  r  s     r   _clamp_max_numpyr3    r0  r   c                     |t        j                  | |      S |t        j                  | |      S t        j                  |t        j                  | |            S r  )r  r2  r.  )r-  r  r  s      r   _clamp_numpyr5    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   )rK  rG   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  )r  rL   rG   )	r   r   r   r   r   r?  r   rE  r   s	    ```    @r   sample_inputs_cumprodr@    s     l Qx(Aq!9-SF;;  !(4.t44 ! 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   r9  r  r  s        r   sample_inputs_view_as_complexrB    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r  r  r   s     r   r  z-sample_inputs_view_as_real.<locals>.<genexpr>   s     :EDK'Er  )r   r   rG   )r   r   r   r   r   rD  r   s         @r   sample_inputs_view_as_realrE    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'rL  r   r}  )r   r   r   r   rM   rL   rF   rG   rO  r>  r  r  )r   r   r  r   r   error_floaterror_dtype	error_outs           r   error_inputs_complexrJ    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#  s          r   sample_inputs_logaddexprL    s4     {6m\HFE
huox
77s   ;=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 r8  r   r9  s    r   r   z$sample_inputs_prod.<locals>.make_arg  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   Tr*  r&  r   r   r  r  )r  r   r   r   r9  r   r!  )	r@  rL   r`  r  r  r   r   r   r=  )	r   r   r   r   r   rP  rj  zeror   s	    ```    @r   sample_inputs_prodrR    sx    l
 (N&,,,,.==mLMM O (N#'i  O &(
))
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)Nrl  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   )rL   r   r   rM   )r   r   r   sir  s        r   error_inputs_negrU  B  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   rL   rF   r   r  r  )
r   r   r   r   r   r   r!  r   r   r  s
             r   sample_inputs_diagrX  I  s     {6maelpqH
hqk
"" 	!QG )Dw-&,,.77FMMM .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	      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   r?  offsetr   )r\  r  rZ  diagonalr  )r   r   r   rE   rF   rG   r  r   r   r  rL   )r   r   r   r   r   r   shapes1dshapes2dshapes3dkwargs1dkwargs2dkwargs3d	samples1d	samples2d	samples3dr;  s                   r   $reference_inputs_diagonal_diag_embedrg  X  s    09179 9 9 F%}NH HAyHAq	|HH 	!!"2 	CH BQQ' H
 (+I(+I(+Iy)Y?v%$?? @?9s   C+C)CC+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)Nr9  r  rW  )r   r  r  r   )r  rc  )r   r   r   r   )
r   r   rF   r   r   rn  r  r]  rE  rL   )r   r   r   r   r   r   	shapes_2d	shapes_3dargs_2dargs_3dr  r  input_	arg_tupler  r~  s                   r   sample_inputs_diagonal_scatterro    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 r  to_denser  s    r   <lambda>z)sample_inputs_to_sparse.<locals>.<lambda>  s    WXWaWaWcr   r  r   c                 "    | j                         S r  rr  r  s    r   rt  z)sample_inputs_to_sparse.<locals>.<lambda>  s    Z[ZdZdZfr   )r   r   rL   rG   r  r   s         r   sample_inputs_to_sparserv    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)Nr4  r  r  r  r   r   r   r  r  rO  r  )ignore_indexrl  r   r{  r   r  r   r   r   r   )r  r   r  r   r   r  allrandomrj  rN  setr  rL   )r   r   r   r   r   
batch_sizenum_classesr;  r  r  input_shape_and_kwargsr  probabilities_targetr`  r  s                  r   sample_inputs_cross_entropyr    s    &,,Je(J 
	5!b	5!Q	5	!	Q		B	L
 ?I	Ij5$+
,j	IL (	

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

L  
!$%!L& 8A7H7HI_an7o3f3KeS`a' +F !.k!"o. jjF 'EIIf~@V6V,W"MM&U;5G1HFSaLbKc1c*dfghijkq	%2622; 8p 
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)NgQ?r   r5  r   )
domainr  r   r   rZ  _domain_epsr   r   rL   rG   )	r   r   r   r   r   r   r   
domain_epsr   s	            r   sample_inputs_logitr    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r  )r   r   rL   rE   rG   r   s         r   sample_inputs_isinr    sP     {6m\H htnHaTN+<
==
htnHaTN+<
==r1  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   rL   rG   r   r-  bernoulli_scalarr  r   s         r   sample_inputs_masked_scatterr    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   rY  r
  rM   rL   r  )r   r   r   r   
mask_dtypes        r   error_inputs_masked_scatterr    ss     {6EH{{EKK0
Xa^5::aSYak;l;CAq>;K L%SU 	U 1s   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(  rVt         |t        t        f      t	        j
                  t        t        |      dkD  t	        j
                  d      f       y y w)
Nr   r  r   r  r   r   Tr  rX  )r   r   rL   rG   r   r-  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*%++a62RUV2VX]XcXcdfXg1hii +s   I3I5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  rX  r  zto be on same device)r   r   r   rY  rM   rL   r  r  r   r   r  r-  rG   rN  s       r   error_inputs_masked_fillr    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   rL   rF   r   r-  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   rr  r   )r   r   rE   rG   rF   rL   )r   r   r   r   
is_rmatmulr   r   r  	lhs_shape	rhs_shaper  r  s               r   sample_inputs_matmulr  B  s_    {%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   variantreturnc             +   
  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variadicr!  r  .c                     | S r  r   r!  s    r   make_inputsz+sample_inputs_meshgrid.<locals>.make_inputsb  s	     Nr   ra  c                     | gS r  r   r  s    r   r  z+sample_inputs_meshgrid.<locals>.make_inputsh  s     9r   z?Unsupported variant, must be one of {"variadic", "list"}. Got "z".r   xyijr9  indexing)r   r   Tensorr   r   r%  r  r  r   r   rL   )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 "  eF-X "# 43(33	 H"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   r
  c                     | dz
  dz  S )Nrx  r   r   r  s    r   compute_min_valz/sample_inputs_mvlgamma.<locals>.compute_min_val  s    B!|r   r   r   rJ  r   )	r   r   rG   r   r  r   finfor   rL   )r   r   r   r   r   r   rX  r  r  r;  r  r  s               r   sample_inputs_mvlgammar    s     {6m\HVRLM	B M2.q!!$&&qLGq5;;u-1111G(5g6aTBB /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)rK   unittestskipexpectedFailurer   rZ  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        ddd||      S )Nmvlgamma)zspecial.multigammaln皙?T)refaliasesvariant_test_namer  
decoratorsr  dtypesIfCUDAr*  supports_forward_adsupports_fwgrad_bwgradpromotes_int_to_floatr  rz  )
rh   r;   reference_mvlgammar+   r   rZ  r   halfr  r  r  r  r  rz  s       r   make_mvlgamma_opinfor    sf    *4>0D";,=!'&78M&N%P!.uzz5>>!J'4U]]'C-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   rL  re  )rL   rG   )r   r   r   r   supports_dtype_kwargsr   r  s    ```   r   sample_inputs_cumulative_opsr    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   r  r  )r   r   r   )r   r   r   r  r	  r3  )r   r   r   )r   r   r   )r   r   r   )r   r   r   r  )i  )r   r   r  )r  )r   r   r0  )r  r  rO  )r  r   )r  r  r   )rG   rF   rL   r   )r   r   r   r   r   r  r;  	argumentss           r   sample_inputs_unfoldr    sI    
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   rG   r   r  rO  rL   )
r   r   r   r   r  r   r   r6  r;  r   s
             r   sample_inputs_splitr    s6    {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

 t(5/55 s   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  r  s	            r   sample_inputs_split_with_sizesr  	  s?    {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 t(5/55 s   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 r  )r   r   rZ  r  r  )r  r   r   s    r   
apply_gradz'sample_inputs_msort.<locals>.apply_grad  s/    &u}}ennEE]+ Fr   c                     t        j                  t        t        z  t        z  t         j                  |      }|j	                  |       } |       |S r=  )r   rq  rE   ro  r  )r   r   r@  r  s      r   rC  z,sample_inputs_msort.<locals>.large_1d_unique  s:    nnQUQYekk&IffUm3
r   r   )rL   r   rG   rF   )r   r   r   r   r   rC  r  s     ``  @r   sample_inputs_msortr    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)Nr9  g?r   r   Tr  y        ?y333333??y@      "@yffffff@Mbp?r  )r   r   rL   rG   r  r   r   s         r   sample_inputs_lerpr  (  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)r^  r^  r   r  r  r   r   r   r9  r  r  )	r  r   r   r   r   r6  r  r  r  s	            r   sample_inputs_tensordotr  Z  sm     #	IAA/0E ,1'\4+kv4AC%l%4AC#	% 	% ,1   AAc              +      K   t        t        |||d d       }t        t        ft        t        fff}|D ]#  \  }} ||      }	 ||      }
t        |	|
       % y w)Nr  )r   r   rG   rF   rE   rL   )r   r   r   r   r   r   r  r  other_shaper`  r  s              r   sample_inputs_kronr  f  sk     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_innerr  r  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>._tensorx  r  r   c                 "    t        | ||      S Nr  rm  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  r
  multiply)	r   r   r  rF   rG   r  detachrL   r  )r   r   r   r   r   r  r	  rQ  r  r   r   s    ` `       r   sample_inputs_scatterr	  w  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 #&(4((flln335KKUKK&&!&,,."7"7"9TDTTT #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   r  s       r   r  z*sample_inputs_scatter_add.<locals>._tensor  r  r   c                 "    t        | ||      S r  r  r  s      r   r	  z*sample_inputs_scatter_add.<locals>._gather  r	  r   r   r   r   r   r   r   )r   r   r  rL   rF   rG   r  r	  )r   r   r   r   r   r  r	  rQ  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[
\\
gbk1djjl&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)Nr9  r  r   r   r   r   r   r   )FTFr  r  r  r     r  r#  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   T)r   r   rm  r   r   r  rF   rG   r  r	  r  r   rL   )r   r   r   r   r   r   gatherrQ  r  r  	inp_shaper   rQ  r  r  r`  r~  rr  s                     r   sample_inputs_scatter_reducer	    s0    {%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8*C	L(9- #UHY,?H"0,!?A 	A =f 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        j                  dt         j                        }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   r  s       r   r  z-sample_inputs_segment_reduce.<locals>._tensor  r  r   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  r  r   )rJ  unsafeinitialr	  offsetsz0mode most be one of 'offsets' or 'lengths' got 'z'.r  )r   r   r  rG   rF   r  r   ra  r;  cat	new_zeroscumsum_r>  rL   )r   r   r   r   r~  r   r  rQ  r  r  r  r   r  r	  r	  r   r	  r	  	lengths_tsample_input_kwargszeros_shape	offsets_ts    ` `                  r   sample_inputs_segment_reducer	    s    "4 o <<F;D q,&
q,%
q,&
QL%(
QA-
Q5848a\84e<
Q\<|\Z\ab
QAeAh7hh7?
QAlL,P\]_deJ 7J!(Z!Q!H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 "I 57s    BHG<(AH,H7DHc              +      K   t        t        ||d d |      }t         |t        t        t        f             t         |d             t         |t        t        t        fd             y w)Nr   r   Tr6  r   r   s         r   sample_inputs_ravelr	    s[     {%d-IH
h1ay)
**
hrl
##
h1ay=
>>r  c              +     K   t        t        ||d d |      }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)#Nr   )r   r  r  )r   r   r  r  r	  )r      @)r 	  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  r]  r  r  T)assume_uniquer  )r   r   r   r   r   )r   r   r  r   r   )r   r   r   r   )r  r]  r  r   )r  )r   r   rL   r   r   itemsize	is_signedr  r  arrayintersect1dr;  )r   r   r   r   r   r   r  r-  r.  r  i1i2s               r   sample_inputs_unravel_indexr+	    s    {%d-IH
$	 	  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)Nr9  r   r  r  r   r   r#  r  s	            r   sample_inputs_tril_triur-	  4  s     {%m\H!fb\!fd_!fb\!fe_!fd_!Qi_!Qi!QlB"E t(5/55 s   B*B,c              +      K   t        t        |t        j                        }t	        t         |d            d       y w)Nr  rb  z,input tensor must have at least 2 dimensionsr   r  r  s       r   error_inputs_tril_triur/	  B  s1     {6GH [$0>l
mmr!  c              +   P   K   d}|D ]  }t        |d   |dd  ||d        y w)N)rr  )r   r   )r   r   )r      r   )r   r1	  r   )r   r1	  r~  r   r   r   r  r  )r   r   r   r   r   	args_listr   s          r   sample_inputs_trilu_indicesr3	  H  s8     I $q'QR5TZ9[\\ s   $&c              +      K   t        t        |||      }t         |t        t        t        f             t         |d             y wrJ  r  r   s         r   sample_inputs_clone_contiguousr5	  \  s;     {%m\H
h1ay)
**
hrl
##r  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   r9  r   r   Tr6  r%  ry  )))r   r   r   r   r   r   r   ))r   r   r   r7	  r   )r   r   r   )r   r   r   r   )r8	  )r   r   r   r   )r8	  )r   r   r   r   ))r  r   r   )r   r   r   r   i  r   r   r   r   )r   r   r   r   r   r   )r5	  r   r   rL   r  r   r  
as_stridedr&  r4  channels_last_3d)r?  r   r   r   r   r  r   r;  strided_casesr_  r\  r-  s               r   !reference_inputs_clone_contiguousr<	  b  sY     .b&%YRXYYYF {%m\H(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 M #0w(3.33E7FKLL(3.33E7FKUdfkf}f}T~ #0
 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)Nr9  r  r   r  r   r   r   )r   r   rG   rL   ra  )	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!\(;/|oFF2(;/tL7I6KLL(;/6F6FGG &3s   CC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   )rF   rG   rL   r   r   r   rM   )r   r   r   r;  r  rT  s         r   error_inputs_sum_to_sizerA	    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   rG   r  r%  rL   )
r   r   r   r   r   r   r6  r;  args_or_shaper   s
             r   sample_inputs_resize_opsrF	    s     {%?H!Qi!a%$E
 !&}<<9$!$D\\\)U%8;D]^^(5FTRR !&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)Nr9  Tr   Fr   )r   r   F)r   r   T
tensor_argr  r   )r   r   rG   rg  rL   )
r   r   r   r   r   r   r6  r-  r.  is_tensor_supporteds
             r   sample_inputs_view_reshaperJ	    s     {%m\H QQUAJ%
a%aAY%
a%aQZ'
a%!)Q!R%(
tT	E &+!1!::l#,? ::l#%0A(1+QD11 &+s   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))rM	  rM	  r   r   r   r   r   r   r   r   T))r   r	  )r   r   r   r   r   r   r   T))r   r]  r]  r   T))r   r   r]  rO	  T))r   r   r   r   )rM	  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   rR	  T))r   r   r   r   r   r  TrQ	  )r  )r   r   r   r   r   r   T)r   r   F))r   r  F))r   r   r  r   r   )r   r   r   r   r   Fr9  rH	  Fr  r   )rJ	  r   r   rg  rL   )r?  r   r   r   r   r6  irreversible_casesr   r-  r.  rI	  s              r   reference_inputs_view_reshaperT	    s&    )"fe]UfUUUE&
 {%m\H%*!1!::l#,?::l#hqk!51Q0STThqk!51Q0STThqk55hqk55 &+ &8!1!::l#,? ::l#%0A(1+QD11 &8Q 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)rg  )r   r   r   T)rg  )r   r   r   F)rg  r   r   r   F)r   r(  F)r  r(  FFr9  rH	  rW	  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   rg  joinmapstrr  rO  	functoolsr  operatormulrM   rL   	Exception)r?  r   r   r6  r   r-  r.  rI	  r   r;  rE  s              r   error_inputs_view_reshaper`	    s     E {%--V[\H%*!1!::l#,?>K&[CK
 IIc#qk*EQ31I,<,<X\\1a,PD&ug-NtfUK ::l#%0AXa[t<%02 	2+ &+s   C4C6c              +   (  K   g }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   r9  rG   r   r   rL   )	r   r   r   r   r   
input_listr  make_tensor_partialr;  s	            r   sample_inputs_atleast1d2d3dre	  B  s     J!QlQ1I1vub:F!+U6Yfg-e455 
vFve*51vF
GGFs   A2B4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   r9  rb	  )	r   r   r   r   r   r6  rd	  shape1shape2s	            r   sample_inputs_column_stackri	  J  st     
QQ1I
q!fQF|"E "+U6Yfg.v68KF8STUU  r'  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   r9  r   r   )	start_dimend_dim)rG   r   r   rL   rK  )r   r   r   r   r   r  rd	  r;  s           r   sample_inputs_flattenrm	  S  sm     !Qi!Q!,F!+U6Yfg-e455u:>1%8ArRR 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   )ro	  r   r   ))r   r   r   r   r   r   r   r   )r   r   r   )r   r   r   ))r   r   r   r   r   )r	  r   r   )rN	  r   r   )rN	  r   r   ))r   r   r   r   r   r   r   r   r   r   )rP	  r   r   ))r   r   r   r   r   ))r   r   r   r   r   r   r9  r   Tr6  r   r   )rm	  r   r   rL   r  )
r?  r   r   r   r   r6  r   r;  r   r   s
             r   reference_inputs_flattenrp	  [  s     $RPPPPE  {%m\H"uc(5/>>(5=GG2NV[]`Ubcc(5/33Ar:%OO #) Qs   B$B"BB$c              +   z   K   d}t        t        |||      }|D ]  \  }}}	t         ||      ||	f        y w)N)
)r'  r   r'  )r'  r   rV	  )r'  r   r^  )r'  r   r  )r   r   r   r   r4  )rr	  r   r4  )rr	  r   )r   r   ))r   r   r]  r   r\  )r   r   r   r   )rs	  r   )r   r   r   r   r9  r   r   )
r   r   r   r   r   r   rd	  in_shaper   rD  s
             r   sample_inputs_unflattenru	  u  sI     
D "+U6Yfg $#u-h7sElKK !%rV  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)Nr9  r   r  r   r   r  r5  r   r  r  s	            r   sample_inputs_selectrx	    s     {%m\H!Qi !Qi!!Qi"!Qi!dF^	E t(5/55 s   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)	Nr9  r   r  rw	  r  r   r5  r   r  r   r   r   r   r   r   r6  r  r  r   rm  r~  s               r   sample_inputs_select_scatterr{	    s     {%m\H!Qi!Q(!Qi!Q)!Qi!Q*!Qi!Q)dB	E ).$Y+&y!&|d|44 ).rl  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)Nr9  r   r   r   r   r   )r   r   rE   rL   rz	  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 ).$Y+&y!&|d|44 ).s   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)Nr9  r   r   r   r  r  r   r  
r   r   r   r   r   r   r6  rh  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 t(5/88 r  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)Nr9  )r   r4  r%  ry  )r   r   r   r   )r   r   r   r  r  r   rL   r&  )
r   r   r   r   r   r   r  memory_format_optionsr;  r%  s
             r   sample_inputs_conversionr	    s     {%m\HF!5#:#:; ) 1 1&:O P}(5/ER/=!AXZ\ 	\ !Q h|,ouGZGZ5[
\\r  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   r6  r;  shape_others	            r   sample_inputs_expand_asr	    sk     {%?H!Qi!Q#E
 ${(5F (E JLN 	N $rS  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)
Nr9  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 )NFr9  r   r   Tc                 &    t        d | D              S )Nc              3   H   K   | ]  }t        j                  d |        ywr   N)r~  	randrange)r  max_idxs     r   r  zTsample_inputs_where.<locals>.make_bool_mask.<locals>.random_index.<locals>.<genexpr>  s     OgV--a9s    "rt  r~  s    r   random_indexzAsample_inputs_where.<locals>.make_bool_mask.<locals>.random_index  s    OOOOr   )r   r   r  rf  fill_r  r;  )r;  mask_tr	  r   s      r   make_bool_maskz+sample_inputs_where.<locals>.make_bool_mask  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   rF   rL   )r   r   r   r   r   r   r	  r6  r;  
mask_shaper  r  s    `          r   sample_inputs_wherer	    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+;= 	= =B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)Nr9  )r  r   Tr6  )r  r   )r   r  r   r   r   r   rL  r   r	   )r   r  r   r  r  r5  )r   rG  y               @F)r	  r   r   r   r  r  rL   r0  r  rK  r  r   rY  r  )r?  r   r   r   r   	make_condr   r/  r-  r.  other_dtyper	   scalars                r   reference_inputs_wherer	    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+.. &Y 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   )
rG   r   rK  r  rL   r   r   r   r  rM   )r   r   r   r;  r  r  rT  s          r   error_inputs_wherer	  :  s     DE=GE6?15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)	Nr9  r   r   r   FT)as_tuplery  )r   r   rG   r   r  r  r  r  r   rL   r  r  )r   r   r   r   r   r   rD  r'  r;  r  mixedr	  r
  r	  s                 r   sample_inputs_nonzeror	  D  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)Nr9  r   r   r   Fr  ry  )r   r   rG   r   r  r  r  r  rH   rF   r   rL   r  r  )r   r   r   r   r   r   rD  r'  r;  r  r	  r	  nonzero_sizesr
  nonzero_sizes                  r   sample_inputs_nonzero_staticr	  Y  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)Nr9  r  r   r   r   r  r	  s
             r   sample_inputs_chunkr	  p  su     {%m\H!Qi!Qi!Q !Qi!R!#E t(5/55 rb  c              +      K   t        | |||fi |E d {    t        t        |||      }d}|D ]  \  }}}	t         ||      ||	f        y 7 <w)Nr9  ))r  r  r  r	  r   )r	  r  r   ))r  r]  r   )r  r]  r   )r	  r   r   )r	  r  r   )r   r   r  r   )r	  r  r   )r	  r   r   )r	  r   r   )r	  r   r   )r	  r   r   )r  r   r   r   )r	  r   r   rL   )
r?  r   r   r   r   r   r6  r;  chunksr   s
             r   reference_inputs_chunkr	  {  sd     "2vumNvNNN{%m\HE  $vs(5/>> $+ OrF  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   r  s       r   r  z'sample_inputs_kthvalue.<locals>._tensor  r  r   r  r  )r   r   r  )r   r   Tr  r  )r   r   )r   r4  )r   )r   r   Tc              3   H   K   | ]  \  }}t         |      g|   y wr  r  )r  r   r   r  s      r   r  z)sample_inputs_kthvalue.<locals>.<genexpr>  s$     S
GFO3d3
r  r  )r   r   r   r   r   r  r  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  rM   rL   r-  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 5r*  )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r  r  )r  r  s     r   r  z(sample_inputs_dropout.<locals>.<genexpr>  s     3?a!?s   r   )rG  r3  rx  TF)r  rC  rM  )r   r   r   r   r	  r	  r   r   r6  p_valstraining_valsrh  r  rC  s                 r   sample_inputs_dropoutr	    s     {6m\H3?3Q!r"F  %0UGtUmM$UFMBa(4.AAA C
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   )rG  rx  r  )r   r   r   r  rG   r   rL   )r   r   r   r   r   r   	make_maskr6  
scale_valsrh  scales              r   sample_inputs_dropout_backwardr	    sr     {6m\HF%**TYZIAq\A4$E Juj1e(4.)D/5AA 2r  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   r9  s    r   r   z/sample_inputs_embedding_bag.<locals>.make_input      5uMZZr   Fr6  c                B    t        | t        j                  |||      S )N)r   r   r   r   r7  r   r   r  )r;  r   r   r7  r   s       r   make_long_inputz4sample_inputs_embedding_bag.<locals>.make_long_input  s"    5uzzsQU)68 	8r   c                 .    | r |j                         S y r  r~  )rF  rr  r   s     r   make_per_sample_weightz;sample_inputs_embedding_bag.<locals>.make_per_sample_weight  s     cii((r   r   r   r  rk  )r  r  r  )r  r  r  )r	  r~  per_sample_weightsr  T)r   r   r7  r1  )r~  r	  r  r   r   )padding_idxr	  r~  r	  r   r   rr  r  )r	  r~  r	  )r   r   r   )r~  r	  include_last_offsetr   rx  )max_normr~  r	  )r	  	norm_typer~  r	  r	  r  r   r"  )scale_grad_by_freqr~  r	  )sparser	  r~  r	  )r	  r	  r	  r	  r	  r~  r	  )r   r   r  rG   rF   rL   )r   r   r   r   r   r	  r	  r	  generate_per_sample_weightr~  rr  r	  rS  offsets_r   s    ```          @r   sample_inputs_embedding_bagr	    s    [ <A 8 llAq6&

CG&3"*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_ + '4s   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   r9  s    r   r   z+sample_inputs_embedding.<locals>.make_inputX  r	  r   c                @    t        | t        j                  ||      S )Nr  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   rr  r  r	  r  r   r   r	  rx  )r	  r	  r   r"  r	  Tr	  r   r4  )r	  r	  r	  r	  )rF   rL   rG   )	r   r   r   r   r   r   r	  rr  rS  s	    ```     r   sample_inputs_embeddingr	  W  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  ry  N)rL   r  )r  r;  r  r   s      r   r  z(sample_inputs_one_hot.<locals>.<genexpr>  sW      
 #JE; 	&",R+2B
 K0	
 	
 #Js   7:)rG   rE   rF   r  r   )r   r   r   r   r   r  num_classessr   s    ```   @r   sample_inputs_one_hotr	    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  ry  r  r  r  r  )rg  r   r   rG   r  rL   )	r   r   r   r   r   r	  r  shapes_and_kwargsr;  s	            r   sample_inputs_lossr	    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   )rm  rp  rl  r  border
reflectionr4  rn  )r~  padding_moder  )r   r   r  r   rL   rG   )r   r   r   r   r   r  r  num_channelsmodesalign_cornersspadding_modesr   modes_r~  r	  r  s                   r   sample_inputs_grid_sampler	    s      ;vUR_!+L JL#E"N5M(+q$5$)$e1:1B1B6=Zh1i-D,j,C!sCDj:A39:c:;)+  2j	 rY  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  )rm  rp  rn  rl  r	  g     F@)gGz?gq=
ףp?rG  r   r  rL  )rE  r  )r   deg2radr   cossinr  
contiguousr  r  r  r
  r  r  r   r[  r\  affine_gridrL   )r   r   r   r   r   r  r	  heightwidthr	  r	  r	  r-  casar  r  thetar   r~  r	  r  grids                          r   reference_inputs_grid_sampler	    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^ / 
 
 	
	 .e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   rO  rl  )r   r   r  r   rL   rG   rE   rF   )r   r   r   r   r   r  r  r	  r	  r	  r	  r~  r	  r  s                 r   sample_inputs_grid_sampler_2dr	    s      ;vUR_!+L JLE"NM-6->->umUc-d)lM*lAq9:*a!eQ23
 	
 .e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  rL  )rK  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   rG   r   rL   r  r~  uniform)r   r   r   r   r   r   r  r  r  r  r%  s    ```       r   #sample_inputs_cosine_embedding_lossr	    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)Nr\  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_probs1  sM    &6MM!$''vU'CJJL[[jw[x	r   r	  rk  r   r   r  )r  r  )r  zero_infinityr  )
ra  r   r  r   r  r  r  tolistrL   r  )r   r   r   r   r   input_lengthr  num_chartarget_lengthr 
  r  zero_inflengths_typer%  r.  ltr	  targetsinput_lengthstarget_lengthss    ```                r   sample_inputs_ctc_lossr
  +  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)Nr4  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|  )rK  r   r  r  r   )r;  r  r  r   s      r   r  z+sample_inputs_nll_loss.<locals>.make_targetP  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   r	  ry  rz  r   rJ  r$  r   r  )r{  r  )r{  r  rO  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\  sV    +8,
#J7LIq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 8s   D,E1$Er  r   r   r  r{  r  )r   r   rL   r   r   r  )r   r   r   r   r   r
  r`  r  r   r  r  r  r;  s    `      @@@@@r   sample_inputs_nll_lossr
  I  s     E(KV5P]^J+{6^cdK	1k k* "2!3vv%vi?? "4 \\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  rx  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  rO  )rG   r)  r  )r   r;  r  maker  s      r   make_weight_shape_kwargszPsample_inputs_binary_cross_entropy_with_logits.<locals>.make_weight_shape_kwargs  sa    QFQ!Q0EMMdnodnW`QFD9T%[$QRdnop 1 ps   &A!
r   r   ry  rJ  r  
pos_weight)r  rO  r
  r  r  )r   r   rG   r  rL   )r   r   r   r   r   	make_probr
  r;  r  r	  r
  r  s             @@r   .sample_inputs_binary_cross_entropy_with_logitsr
  x  s^     ;vU;D!!,I(J&($q!fq!Qi%H	I%HE5$-%H	I?I	Jz)Aq64),
-z	J 
"	# ^h	h]gPYAq64)aTq8IJ
K]g	h	
 s}	}r|enAq64)D!QLTSTRV\]M^_
`r|	} +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   r9  )r   r   r   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   )rL   r   r   r  r   rG   r  )r   r   r   r   r   r  r  s          r   sample_inputs_argwherer
    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)Nr	  )rG   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)Nry  T)r  r  ư>MbP?)r   r  )r  r   r  )r 
  r   r  r~  r	  )r  r%  t_sv_sr  r$
  make_vars       r   r
  z9sample_inputs_gaussian_nll_loss.<locals>.gen_shape_kwargs  s     46DAq#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  @ 7s   C0C3r  r   )r   r   r   r   r   r
  r`  r  varr  r$
  r*
  s            @@@r   sample_inputs_gaussian_nll_lossr,
    s`     ;vUR_`L{F%WdeH" '7&8"vsF%vsofEE '9s   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   rJ  r   ry  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/
    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   ry  )r   r   r 
  r  )r   r   r   r   r   r  r  r%  s           r   _generate_sample_inputs_nn_lossr1
    sB     ;vUR_`L0211o|Aq0AAA 3r  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)Nr3  r   r   r  r  r  r   r   r   )r1
  r   r  r~  r	  rL   r   r   )
r   r   r   r   r   r`  r  r  r  r  s
             r   "sample_inputs_hinge_embedding_lossr4
    s     ;GVUTaleklvqv&,tunnR+(%vj;; m ;vUR_`L
l2&l2.>-A
BBrG  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  rV  r   rW  r&  s       r   !error_inputs_hinge_embedding_lossr6
    sP     V5==IJ
[Aq!1Aq9I8KU`bgThi *8NP Prs  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   rL  rP  r	   r   r3  r   r   r  r  r   r   r  )r   r   )r4
  r   r   r  rY  r   r  rL   )
r?  r   r   r   r   r   r  r  r  r  s
             r   %reference_inputs_hinge_embedding_lossr8
    s[    1"fe]]V\]]]V5P]^J,	""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 - ^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  )r1
  r~  r	  rL   )r   r   r   r   r   r`  r  r  s           r   sample_inputs_huber_lossr;
     sO     ;GVUTaleklvq^^D!,'
%vj;; mr  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   r(  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 *= = JZ1%5Z1=M<OY`bgXhi$0cC 	C rY  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)Nrk  r   rJ  )	log_inputr  r  :0yE>r'
  )rA
  r  r   r  )r 
  abs_r  r~  r	  )	r  r%  lifr)	  r*	  t1t2r  s	           r   r
  z8sample_inputs_poisson_nll_loss.<locals>.gen_shape_kwargs,   s     46DAq#&A%aB%aB
 &aQ/B%aQ/B		GGIGGI BrQ? 
 Br!'d!;'(* ) ' $ 7s   CCr  rL  r   )r   r   rL   r   r   r  ro  )
r   r   r   r   r   r
  r`  r  r  r  s
            @r   sample_inputs_poisson_nll_lossrH
  )   s     ;vUR_`L< "2!3vv%vj@@ "4 **ekk*Al7|RS?T>VWWl3<e;T:VWW + 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   rW  r   r   r   r
  s       r   error_inputs_poisson_nll_lossrL
  S   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   rW  rK
  s       r   error_inputs_soft_margin_lossrQ
  b   rM
  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&
  rx  r  )r  T)swaprx  ry  distance_functionr  )	r   r   rG   rF   r  r   r[  PairwiseDistancerL   )r   r   r   r   with_distancer   r
  r  r  kwargssr`  r   s               r   !sample_inputs_triplet_margin_lossrX
  q   s     ;AvUR_`D,=	>,=&$f
,=	>$ 6M	M5L	$
#5L	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	               t        df |dd       |dd       |dd      ft	               t        d	f |dd       |dd       |dd      ft	               t        d	f |d       |dd       |dd      ft	               t        d
f |dd       |d       |dd      ft	               t        df |dd       |dd       |d      ft	               t        dff}|D ]$  \  }}}}}t        t        |||      ||       & y w)Nr  r   r   r   ry  r!  r   rJ
  rP
  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>  rM   rL   )	r   r   r   r   ri  r`  r   r   r   s	            r    error_inputs_triplet_margin_lossrZ
     s    V5==IJ
 
Aq	Jq!,jA.>?			=	?
 
Aq	Jq!,jA.>?		+	- 
Aq	Jq!,jA.>?		+	- 
Aq	Jq!,jA.>?		+	- 
A*Q*Jq!,<=		$	& 
Aq	JqNJq!,<=		$	& 
Aq	Jq!,jn=		$	&Q.G` 9@4tVZUfE$.KI 	I 9@s   E+E-c              +     K   t        t        |t        j                  |      }t        t        |t        j                  |      }d\  }}}	g }
 |||	f      } ||	|f      j                         j                         j                         }|
j                  t        ||              |||	f      } ||	|f      j                         j                         j                         }|
j                  t        ||              |||	f      } ||	|f      j                         j                         j                         }|
j                  t        ||             |
E d {    y 7 w)Nr   )r  r	  r   )	r   r   r   float8_e4m3fnfloat8_e5m2r  r	  r  rL   )r   r   r   r   r   make_mat_e4m3make_mat_e5m2rF   rU  Kri  mat1mat2s                r   sample_inputs_scaled_mmrc
     s+    Ke>Q>QanoMKe>O>O_lmMGAq!G!Q D!Q ""$//1335DNN;tT*+!Q D!Q ""$//1335DNN;tT*+!Q D!Q ""$//1335DNN;tT*+s   EE%E#E%c              +   @  K   t        t        |||      }d\  }}}}	}
|||
f}|||
f}||	||
f}||	||
f}|	||
f||	||
ff}||f||f|g}g }t        |ddg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  TFrG  r3  )	is_causal	dropout_pr  )	attn_maskre
  rf
  )r   r   r   r  rL   )r   r   r   r   r   r
  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_shapesri  	qkv_shapere
  rf
  shape_qshape_kvdiff_v_head_dims                           r   *sample_inputs_scaled_dot_product_attentionrv
     s    ;vU-XD0=-E5&)XE8,MVX.NIuh7MY9N!5(3eYPX5YZO .1M>3RTcdJG+2uSz,3'	9i%{MNN
 	,3 "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              |E d {    y 7 w)Nr   r   r   r  r  r	  r   r   rx  TFrG  r3  )
rP  cu_seqlens_qcu_seqlens_kmax_seqlen_qrf
  custom_mask_typecompute_log_sumexpr	  causal_diagonalseqlen_kr  r   r   r   r   r  rL   r  )r   r   r   r   r   r
  r  rj
  rk
  rh
  ri
  rn
  ro
  rq
  ri  
mask_typesscalesrr
  re
  rf
  	mask_typer	  rs
  rt
  ru
  s                            r   )sample_inputs_efficient_attention_forwardr
     s    ;vU-XD!(E9hEFIuh7MY9N .12JGQJC[F=DuSz:v>G9	9iE%{M##Aq)N$$Q*N$$Q*&, 
 	>G( "eUIx01eVY12eVY156(O" NN%	845%H56%H56eYv6, 	
$ s   EEEE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   rx
  r  r	  rx  TFrG  r3  r   r   )	cum_seq_q	cum_seq_kmax_qmax_krf
  re
  return_debug_maskr	  r
  )r   r   r   r   r   r
  r  rj
  rk
  rh
  ri
  rn
  ro
  rq
  ri  r
  rr
  re
  rf
  r	  rs
  rt
  s                         r   %sample_inputs_flash_attention_forwardr
  B!  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*#
 	3;" 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)r*  r  r  rI  rx  )r   c              3   Z   K   | ]"  \  }}t         |       |      f|        $ yw)r  Nr  )r  r;  r   r
  s      r   r  z2sample_inputs_pairwise_distance.<locals>.<genexpr>q!  s1      ZkPVDKtE{nVDDZkr  )r   r   r  )	r   r   r   r   r   r;  batched_shaper	  r
  s	           @r   sample_inputs_pairwise_distancer
  b!  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  )r  r
  r   s     r   r  z.sample_inputs_pixel_shuffle.<locals>.<genexpr>w!  s(      $N 	H\*>JJ$r  r  c              3   D   K   | ]  }t         |      d         yw)r   r
  Nr  r  s     r   r  z.sample_inputs_pixel_shuffle.<locals>.<genexpr>{!  s+      
E 	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
  u!  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  )r  r
  r   s     r   r  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   r  z0sample_inputs_pixel_unshuffle.<locals>.<genexpr>!  s+      
E 	HUOa88
r  r
  r
  r   s        @r   sample_inputs_pixel_unshuffler
  !  sR     {6m\H &  
  	r
  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  rx  r   r   ry  r
  r   rJ  r
  r  r  )r   r   rG   r  r)  rL   )r   r   r   r   logitsr   r
  r
  r  r;  r  r	  s               r   "sample_inputs_binary_cross_entropyr
  !  sO    ;vU;D $Q/I(J&($q!fq!Qi%H	I%HE5$-%H	I?I	Jz)Aq64),
-z	J U_	_T^yAq64)D!QLA
BT^	_   `jk`jS\q!fdY4!;LMN`jk	
 +v*VTEOE?A
 	
 + 
J	J	_
 ls7   AED.ED3>E0D85E
-D=7AEc              +   ^  K   dt         t         t         t         fg}ddg}ddg}d}t        |||      D ]w  \  }	}
}t        |	|||      }||z   j                         j	                  |      }t        |||
|       t        |	|||      }t        |	|||      }t        |||
|       y y w)	Nr   {Gz?gؗҜ<r   r3  rB
  r   )r  r  )rG   r   r   r	  r  rL   )r   r   r   r   r   r>	  r  r  r   r  r  r  r  closer-  r.  s                   r   sample_inputs_allcloser
  !  s     !q!Qi(M5ME3KE
C u=4&]ST!!#22=A!UD99 &]S&]S!QT55 >rG  c              +   .  K   t        | |||fi |E d {    |j                  rlt        t        d||      }t	         ||       |t
        j                        f       t	         |t
        j                         ||      f       y y 7 }w)Nr   rm  rL  r   )r	  r   r   r   rL   r   r0  r   r   r   r   r   r
  s         r   sample_inputs_l1_lossr
  !  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rO
  rW  rK
  s       r   error_inputs_l1_lossr
  !  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  )r	  r   r   rG   rL   r  r
  s         r   sample_inputs_smooth_l1_lossr
  !  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)
NrG  r"
  c                     t         j                  j                  j                   |       d      }|j	                         |S Nr   )r   r[  r\  r	  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   r
  z'sample_inputs_kl_div.<locals>.make_prob!  s6    hh!!))(5/2>=)
r   )r  r4  )r  r  	batchmeanr  rk  )r  
log_targetr  )r   r   r   rL   r  )r   r   r   r   r   r
  r
  r  r  r;  r  r
  r`  r  r   s      `          @r   sample_inputs_kl_divr
  !  s      {6VcdH

 F5J(/
M(R$y*$.%Ie4D%viy]g8hii )S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r  r  )r  r  r  r   s      r   r  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  ry  N)rL   rG   r  )r  r  r   s     r   r  z&sample_inputs_pdist.<locals>.<genexpr>!  s+     oKnaJ1v.tayAAKns   14rG  rx  r  r  r   )r   r   r  r   rG   rY  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 r  )r  r   r  )r   r   s     r   rt  z!reference_pdist.<locals>.<lambda>"  s    266!a%=+<+<+>r   	minkowskir  )scipyspatialdistancepdistr;  rY  r  r   )r`  r  r
  ra  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  rZ  r  )r   r[  r\  
max_pool1d
max_pool2d
max_pool3ditemsr  r  r  r  r`  r   r   r	  r  rE  rL   )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_inforj  poolr  r  rz  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uMtTQ^AJJ<#@ @Mtu!',,/H1',,?K99W%L0>L(vum^W]^ <<A- ==$) ==)*'FFMD'++-..}=C%}}]; --1!==3  &||002M c
=II7 _  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   uniquerf  )r   r   r   r   r   rj  r  s          r   sample_inputs_max_unpool_gradr
  C"  sT     *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  )2drl  r   r   r  )Nr
  3dr
  r
  r   r   FrG  T)q_proj_weightk_proj_weightv_proj_weightrg
  rC  use_separate_proj_weightr  )r   r   rH   rG   r  r   rL   )&r~   r   r   r   r   r   bszis_batchedsuse_separate_proj_weights	emb_sizessrc_lenstgt_lensheadsdropoutsr
  r  r
  r
  emb_sizesrc_lentgt_lenrj
  rf
  rg
  r  r  r
  in_proj_weightr
  r
  r
  bias_kbias_vin_proj_biasout_proj_weightout_proj_biassample_argsrz  s&                                         r   *sample_inputs_multi_head_attention_forwardr
  Y"  s&    V5P]^J$,!	55
#$1!	57'
mvm~m~.
IxQY[`bjn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_ns   E.E0r  r   r{  )r{  r   i,  )r7  	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
  "  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)r
  r
  c                \    t        |   |i | |xs | j                  | _        || _        y r  )r  r  r   r
  r
  )r  r
  r
  r   r   r  s        r   r  zForeachSampleInput.__init__"  s-    $)&) -DII 0r   )r  r  r  r
   __annotations__r  r  r  r  s   @r   r
  r
  "  s    
 M/4t 1 1r   r
  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                 8    || _         | j                  |||       y r  )r  _set_rightmost_arg_types)r  r  r  r  r  s        r   r  z#foreach_inputs_sample_func.__init__"  s"     
%%%'DF_	
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_typesr  r  r
  r
  r  )r  r  r  r  s       r   r	  z3foreach_inputs_sample_func._set_rightmost_arg_types"  s     &=%G%G$H!::>())001H1O1OP,))001H1S1ST())001H1O1OP ) r   c           
        
 |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(  rt        |      D 	cg c]  }	t        j                  d
|      dz    c}	t        |      D 	cg c]	  }	 |        c}	t        |      D 	cg c]  }	t         |        |              c}	t        |      D 	cg c]  }	d c}	g dt        |dz
        D 	cg c]  }	d c}	z   g dt        |dz
        D 	cg c]  }	d c}	z   gS |t         j                  k(  r6t        j                  d|dz          |       dt         |        |             fS t!        d|       c c}	w c c}	w c c}	w c c}	w c c}	w c c}	w )Nr   r7  r   F)r   r   r7  r   _foreach_powc                  L    t        j                          } r	| dkD  rdS dS d| z
  S )Nr3  rx  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   Tr   r        @      @r   r}  Tr   r  r  r   Invalid rightmost_arg_type of )r
  r
  rm   r  r   rg  r  r   rZ  r  r
  r  r~  r  r  r
  AssertionError)r  r~   rightmost_arg_typer   r   r   _foreach_inputs_kwargsr  r   r  r  s             @r   _sample_rightmost_argz0foreach_inputs_sample_func._sample_rightmost_arg"  s   !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C6;K6HI6H4(1,6HI).{);<);A);<BGBTUBTQ8BTU$[121!12$U;?5K'L5K5K'LL*5q;Q-R;Qac;Q-RR  !8!?!??q$(+7	  =>P=QRSS J<U2'L-Rs$   : G)GG 2	G%
	G*0	G/c                 ,   | j                   dk(  rcd|j                  v r|t               v ry|j                  t        j
                  t        j                  fv ry|t        t        j                        v S | j                   dk  s|t        j                  k(  ry d|j                  v r|t               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        j,                  k(  xr |t        t        j                        v }t/        |d         t1        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_powforeach_divforeach_addzInvalid scalar of type z - r   c              3   6   K   | ]  }t        |        y wr  )rn  )r  r
  elmt_ts     r   r  zFforeach_inputs_sample_func._should_disable_fastpath.<locals>.<genexpr>%#  s     M}!
1f 5}s   foreach_mulzInvalid scalarlist of r  )r  r  r   r  r   r   negr   r  r
  r  r   r
  r
  rn  r
  r^	  rO  rY  r  r  r
  divr  r}  )r  r~   rightmost_argr  r   r
  has_same_typer  s          @r   _should_disable_fastpathz3foreach_inputs_sample_func._should_disable_fastpath#  s]   ::?+0Hzzeii33.uzz:::::>/3J3Q3QQFKK'E^5E,E!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   r
  )
r
  r
  supports_alpha_paramr   r   r  r   r  r  r%  )r  r~   r#  r  r   r   s         r   _sample_kwargsz)foreach_inputs_sample_func._sample_kwargs7#  s    !8!C!CCHcHc*5::66"#w!!")!Q-w"&w::>)-)F)Fv}^prw)xF%&r   c           
   +   @  K   d|vsJ t         j                         D ci c]  \  }}||j                  ||       }}}||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i |
d          | j                  ||d   t        j                  |d	      }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   T	zero_sizer   r   r   r   )r+  Fr
  )_foreach_inputs_default_kwargsr
  rT  r  r  deepcopyrm   NUM_SIZE0_TENSORSr  r  r  r  r
  r
  r(  r  r   r   r!  r   r  r
  )r  r~   r   r   r   r   r  r
  r  r  zero_size_foreach_inputs_kwargsr`  r  r   s                 r   sample_zero_size_tensor_inputsz9foreach_inputs_sample_func.sample_zero_size_tensor_inputsD#  s    "&000B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!i2?/"&";";.2mm<R.S+;?+K8)$?PtTstEzzA~ #4::>22 *$?PtTst2   .D.. 7 B BFESd;9;;<>? ,,DH&=&H&H%[_ - a ::%))UYY!7716F-.16:LUZZ:X1XF-.$U<T<V<<- #< "js   FFA.F+FCFc              +     K   d|v }|r|j                  d      nt        }t        |t              sJ t        j                         D 	ci c]  \  }}	||j                  ||	       }
}}	||
d<   d|
d<   t        j                  || j                  d      D ]Q  \  }}}|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                           /t)        |g|d| j+                  |d d |      i T y c c}	}w c c}w c c}w w)Nr*  r   Fr+  rk  r  intersperse_empty_tensorsr   r   r   r
  r
  )rT  foreach_num_tensorsrn  ra  r,  r
  r  r   r  r  r[	  rm   r  r  r  r  r(  r
  r
  r  r
  r%  )r  r~   r   r   r   r   num_input_tensors_specifiedr*  r  r
  r  r   r  r2  r`  r   r  rightmost_arg_listr#  r
  rj  s                        r   __call__z#foreach_inputs_sample_func.__call__`#  so    &9V&C#?ZFJJ':;`s+T222B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!i2?/.3{+ KTJ[J[!4#<#<mKMFK+-F(kSAR=S.SWZ[aWbfkWkB["#>?)fe[L4JLEDzzA~ #4::>2 3 *fe[T<RT2  
 &@T%?%?.{&.,&." &8MKK.!00HZ\abF#H).E.L.LNeNlNl-mm#'95CU0VCUabCU0V/W#W/ZZxZSYZF LHHJ &8 ) &*%B%B64QUW\%] 9KM "j 1Ws-   AG:	G*&BG::G0A8G:G5
A&G:r  )r  r  r  rO  r  r  r	  r  r%  r(  r0  r6  r   r   r   r  r  "  s     +0



 $(

 (,	


 $(

 


Q#'Q (,Q $(	Q
 
Q#TJ3Xj=8)r   r  c                       e Zd Zd Zd Zy)foreach_norm_sample_funcc           	   +   X  K   d|vsJ t         j                         D ci c]  \  }}||j                  ||       }}}||d<   dD ]Y  }	t        d ||t        fddi|}
d}|	dv r,|t        t        j                  t        j                        v rd}t        |
|	|       [ y c c}}w w)	Nr*  r   r   r   r   r   r   r+  Tr   Fordr
  )
r,  r
  rT  rm   r.  r   r   r  r  r
  )r  r~   r   r   r   r   r  r
  r  r<  r`  r
  s               r   r0  z7foreach_norm_sample_func.sample_zero_size_tensor_inputs#  s     "&000B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!i2?/$C)$?P{\`{dz{E#f}*<UZZ*X!X#( $UFVWW % "js   B*B$A-B*c           	   +     K   |j                  dt              }t        |t              sJ t        j                         D ci c]  \  }}||j                  ||       }	}}||	d<   t        |d      D ]X  \  }
}t        d |||
fddi|	}d}|dv r,|t        t        j                  t        j                        v rd}t        |||       Z y c c}}w w)	Nr*  r   r:  r+  FTr   r;  )rT  r3  rn  ra  r,  r
  r   rm   r   r   r  r  r
  )r  r~   r   r   r   r   r*  r  r
  r  r   r<  r`  r
  s                 r   r6  z!foreach_norm_sample_func.__call__#  s     "JJ':<OP+T222B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!i2?/ '(9;L MK)${vV[v_uvE#f}*<UZZ*X!X#( $UFVWW !N "js   A CCA6CN)r  r  r  r0  r6  r   r   r   r8  r8  #  s    	XXr   r8  c                       e Zd Zd Zy)foreach_lerp_sample_funcc                    |t         j                  k(  rt        d |||fi |gS |t         j                  k(  rt	        |      D cg c]  }t        j                  dd      dz    c}t	        |      D cg c]  }dt        j
                         z
   c}t	        |      D cg c]8  }t        dt        j
                         z
  dt        j
                         z
        : c}t	        |      D cg c]  }d c}g dt	        |dz
        D cg c]  }d c}z   g d	t	        |d
z
        D cg c]  }d c}z   gS |t         j                  k(  rt        j
                         gS t        d|       c c}w c c}w c c}w c c}w c c}w c c}w )Nr   r  r   rx  Tr  r   r}  r  r   r  )
r
  r
  rm   r
  r  r~  r  r  r
  r  )r  r~   r  r   r   r   r  r  s           r   r  z.foreach_lerp_sample_func._sample_rightmost_arg#  so   !8!C!CC)${eNdeff!8!C!CC383EF3Ea1%)3EF05k0BC0B1v}}&0BCPUVaPbcPb1v}}.fmmo0EFPbc$[121!12$U;?5K'L5K5K'LL*5q;Q-R;Qac;Q-RR  !8!?!??MMO$$=>P=QRSS GCc2'L-Rs$    E04E5!=E:-	E?
	F+	F	N)r  r  r  r  r   r   r   r?  r?  #  s    T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_funcr  r  r  c                 (    t         |   |||       y r  )r  r  )r  r  r  r  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 r  )r   r   r  r  addcmul)r  r~   r#  r  r   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   scalarsr   )r,  r
  rT  rm   r.  r  updater(  r
  r
  r
  )r  r~   r   r   r   r   r  r
  r  r`  r  r   s               r   r0  z<foreach_pointwise_sample_func.sample_zero_size_tensor_inputs#  s	    "&000B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!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<   t        j                  || j                        D ]J  \  }}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di|
}|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                           M y c c}	}w c c}w w)	Nr*  r   r+  Fr   rG  r  z
len(args)=)rT  r3  rn  ra  r,  r
  r  r   r  rm   r  rO  r
  r
  r  r  r  r
  rH  r(  rK  r
  )r  r~   r   r   r   r   r4  r*  r  r
  r  r   r  r`  r  r   r5  r#  rj  s                      r   r6  z&foreach_pointwise_sample_func.__call__#  s    &9V&C#?ZFJJ':;`s+T222B`BfBfBh!iBh$!Q!VZZ1%5"5Bh!i2?//8/@/@ARTXTmTm/n+K+)${vV[v_uvE q3'9=T=_=_'_#``aaA &dFE;rRWr[qra   "<!;!;*FE;"sRW"s[q"s!3%)@)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 "4 0o "j
s&   AG(	G&A*G(G#(CG(!G()r   FF)
r  r  r  rO  r  r  r%  r0  r6  r  r  s   @r   rB  rB  #  sC     */.3	ZZ $(Z (,	ZZ9r   rB  exp)backward_requires_resultacosasinatanr	  coshloglog10log2tanga2U0*3?gh㈵>)r  r  TestForeachtest_parityrX  )device_type)rK  r  r  g{Gzt?r  r	  sinhr!  )r  r  sqrt)r  r  rK  ceilerferfcexpm1floorlog1proundr   
reciprocalsigmoidtruncr   z.In-place abs not supported for complex tensorsTestMeta#test_dispatch_symbolic_meta_inplacer  test_dispatch_meta_inplacetest_meta_inplace)r  r  r  r  rQ  )r  supports_outsignlgammaz2In-place lgamma not supported for integral tensors)r  r  r  foreach_unary_op_dbr
  test_meta_outplace/test_dispatch_symbolic_meta_inplace_all_strides)r  r  r'  r  subtest_dispatch_meta_outplace$test_dispatch_symbolic_meta_outplace0test_dispatch_symbolic_meta_outplace_all_stridesr^	  )r  r  r*  r  r"  r  )r  rV  	clamp_min	clamp_maxr2  )r  r  r  supports_inplace_autogradr  r.  pow)	r  r  r'  supports_scalar_self_argr*  supports_autogradr  r  rK  r  )r  rg  r  rv  foreach_binary_op_dbrE  r   addcdiv)r*  r  r  r  foreach_pointwise_op_dbnormforeach_reduce_op_dblerpr   )r  r  dtypesIfROCMforeach_other_op_dbc                     | j                   t        j                  k(  rBt        j                  | t        j                        j                  t        j                        S t        j                  |       S NrL  )r   r  bool_rh  r
  r  r  s    r   reference_signr  %  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   rL  )	r   r  r  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  r  r  rJ  r
  specialexpitr  s    r   reference_sigmoidr  %  sI    ww2<<//Q^$%==q!!r   c           	          t        j                  | dk  | t        j                  t        j                  |             z
  t        j                  t        j                  |                     S r
  )r  wherer^  rJ  r  s    r   reference_logsigmoidr  %  sL    88	A	BHHRVVAY	"&&!*	 r   c                     | dz  dz   }t        j                  |dd       }t        j                  |dkD  d|      j                  | j                        S )Nr   r3  r   r   )r  clipr  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 )NrE
  r  r   rL  )r   kindr  r  rY  r'	  r
  r  gammalnrZ  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 r  )r   r  rZ  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  rP  rJ  )r`  r  	threshold
non_linearra  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 r  )r   rz  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}  r3  rx  )r  rX  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   rL  )rO  r  r  r  r  rE  ro  r  r   putr;  )r-  r  idcsone_hots       r   reference_one_hotr  &  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  )r`  r  r  ses       r   reference_mse_lossr  %&  sA    
&.Q	BFwwr{	e	vvbz	r   c                 "   t               5  t        j                  d        | |i |}t        |t        j                        r7|j
                  j                  dk(  rt        j                  j                          |cddd       S # 1 sw Y   yxY w)zWrapper to set seed manually for some functions like dropout
    See: https://github.com/pytorch/pytorch/pull/62315#issuecomment-896143189 for more details.
    r  lazyN)	r?   r   manual_seedrn  r  r   r  _lazy	mark_step)r?  r   r   ra  s       r   wrapper_set_seedr  /&  sg     
	"T$V$fell+0B0Bf0L KK!!# 
		s   A0BBrd  r  rC  c                 &    t        | ||||      d   S r
  )reference_native_layer_norm)r  rC  rO  rP  r   s        r   reference_layer_normr  ?&  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   rx  )	r  r  r  r  r+
  rX  r  rK  r;  )r  rC  rO  rP  r   feature_sizeinp_viewr  r+
  YrJ  
stat_shapes               r   r  r  C&  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   r7  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  r  r;  r  r  r+
  rX  rK  expand_dimsr  r  )
r  r7  rO  rP  r   r  r  r+
  r  rr  s
             r   reference_group_normr  T&  sO   H	wwsyyQ;;		!j"=>==b4=0D
,,BQ,
6C	DBGGC#I..A			#))Aqww<!^^FQCeCHHWXLFY2ZFYs37FY2Z,Z[FJqww<!>>$%STBU.VBU3sQwBU.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 )Nr  r  r   )r  r  r   r   )rK  r;  r  searchsortedr  r\  flattenr  r  r  rL  stack)sorted_sequenceboundaryr  r  r  r  ret
orig_shape
num_splitssplitsr  split_sequencesplit_boundarysplit_sorters_seqr.  s_sort	split_rets                     r   reference_searchsortedr  l&  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<=f/!,f=/56v!(1+v6MSTVf&8q	tCVT 03>>S_/`b/`+%F __UADH/` 	 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  )r`  r  r  r  r  other_kwargsra  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   rx  c                     | |z
  }t        j                  |      }||k\  }t        j                  |       }||   d|z  z
  ||<   ||    dz  d|z  z  || <   |S )Nr3  r   )r  r   
empty_like)r`  r  r  diffabs_diffabove_thresholdlosss          r   reference_smooth_l1_lossr  &  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 )Nr  r  r  )rO  rT  )r   r   r   gs      r   r  z"reference_std_var.<locals>.wrapper&  sf    &(\V-CDD J!78F6NV##ZZ5F6N$T$V$$r   )r|   r   r  r8  )rE
  r  r  s     @r   reference_std_varr  &  s5    !!$A
1X%2:: % % 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   r  TFr   r*  r  r   r   r   N)r   r   r;  rg  r  )r  r   rf  s      r   generate_std_var_kwargsr  &  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                        |       |rd	}nd
}t        t        t        dt        j                  |      g t        j                  t        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: LongrL  zNExpected out tensor to have dtype torch.float64, but got torch.float32 insteadz?Expected out tensor to have dtype double, but got float instead)r   r  )rM   rL   r   r   ro  r   r  )r   r   r  r   r   r   r   s          r   error_inputs_meanr  &  s     (! K	VLbQ 
 (! 	vF++	   cT
	VD--BemmFC		
  s   C+C-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   rj  z4Dimension out of range (expected to be in range of [rX	  r   z], but got z?flatten() has invalid args: start_dim cannot come after end_dim)
r;  rK  rd  r>  r\	  r  r]	  r^	  r  r  )r`  rk	  rl	  rt	  in_rankr  flatten_bit_dim	out_shapes           r   reference_flattenr  &  s   {{H(mGA!w,G8q3J73JSU\T\S]]_`ghi`i_jjuvwuxyzz   !Ag7W+<G&!^	91DI!|\]]&&x||XiRS5TVWXO)$'99HWq[\<RRI::eY''r   )absoluter  test_inplace_gradtest_inplace_gradgradr  test_inplace_forward_mode_ADTestSparseUnaryUfuncstest_inplacer  r  r  )r  	active_iftest_out_arg_all_dtypes)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_normal)rV  r  r  r  r  rV  r  test_fn_gradtest_method_gradtest_forward_mode_AD)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   rL  )r   r   
zeros_liker  r  s    r   rt  rt  v'  s-    AE,rUM]M]^_glgqgqMr,rr   )	conditionsafe_val)r  r  r  r  r  r  rs  r  r  r  r  reference_numerics_filter)r  c                    |dk(  rt        j                  | |      S t        j                  | t        j                  ||            S r   r  r
  r	  r`  r  r  s      r   rt  rt  z'  s=    QVZ[Q[u9M :Br{{5%'@A:Br   TestBinaryUfuncstest_reference_numericsTestNNCOpInfotest_nnc_correctnessr  test_numpy_refs'test_reference_numerics_extremal_values)	r  r  r  r*  r  r  supports_two_python_scalarsr  r  rK  c                 R    t        t        j                  j                  | g|i |S r  )r  r   r  rK  r  r   r   s      r   rt  rt  '  s"    +;ELL<M<Ms+dUY+d]c+dr   r  test_variant_consistency_jitTestNormalizeOperators"test_normalize_operator_exhaustiveTestCompositeCompliancetest_operatorTestFakeTensortest_fake_autocast	test_fake)	r?  r  method_variantr  rg  rv  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  rg  rv  is_factory_functionr  r*  r  cauchyc                 R    t        t        j                  j                  | g|i |S r  )r  r   r  cauchy_r  s      r   rt  rt  '  #    +;ELL<P<PRU+gX\+g`f+gr   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  rg  rv  r*  r  r  exponentialc                 R    t        t        j                  j                  | g|i |S r  )r  r   r  exponential_r  s      r   rt  rt  '  s#    +;ELL<U<UWZ+l]a+lek+lr   	geometricc                 R    t        t        j                  j                  | g|i |S r  )r  r   r  
geometric_r  s      r   rt  rt  (  s#    +;ELL<S<SUX+j[_+jci+jr   
log_normalc                 R    t        t        j                  j                  | g|i |S r  )r  r   r  log_normal_r  s      r   rt  rt  )(  s#    +;ELL<T<TVY+k\`+kdj+kr   normalin_placec                 R    t        t        j                  j                  | g|i |S r  )r  r   r  normal_r  s      r   rt  rt  D(  r.  r   test_noncontiguous_samples)	r  r?  r6  r  rg  rv  r*  r  r  r	  c                 R    t        t        j                  j                  | g|i |S r  )r  r   r  uniform_r  s      r   rt  rt  `(  s#    +;ELL<Q<QSV+hY]+hag+hr   )
r?  r  r6  r  rg  rv  r*  r*  r  r  r  test_type_promotiontest_errors)r  r  r  supports_rhs_python_scalarr  r  r  )r	  )rm  )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 r  )r  subtractr	  r  s      r   rt  rt  (  s    UBKKX]_dLe9fr   )rQ  r'
  #test_complex_half_reference_testingtest_comprehensive$test_reference_numerics_small_values)
r  r  r  r  r  r  r*  r  r  r  addmmTestSchemaCheckModeOpInfotest_schema_correctness)	r  r}  r  r  r  r  gradcheck_nondet_tolr*  r  
decomposedz	aten::addzaten::mmr  )
r  r  r  r  r  r  rX  autodiff_nonfusible_nodesr*  r  addmvg~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 )NrL  r   rI  )r  r
  r	  asarrayr   r  matmul)rF   batch1batch2r  r  s        r   rt  rt  )  sq    "&&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)rV  r  )	r  r  r  gradcheck_fast_moder  r  r  r  r*  baddbmm)	r  r  backward_dtypesIfCUDArh  r  r  r  r*  r  dot)r  r  r  r*  r  r  r  r  vdot)r  r  r*  r  r  r  r  bmm)r  r  r  assert_jit_shape_analysisr  r  r  r*  mv)r  r  r  r  r  r*  addr)r  r  r  r  r*  rX  )r*  )r  r  r  r  r  r*  reference_inputs_func)r  r  r  r  r*  rq  r  )arcsinr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z&Skipped! sparse backward not supportedtest_sparse_fn_gradasinh)arcsinh)r  r  r  r  r  rs  r  r  r  r  r  r  r  r  r  )arctan)r  rV  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  atan2)arctan2test_jit_alias_remapping)r  r  r  r  r  rI  r  atanh)arctanhrs  allcloseTestCudaFuserOpInfo)r  r  rv  r  r*  r  rg  broadcast_to)r  r  rg  r  r  check_batched_forward_gradr*  r  z1.20.0)
r?  r  r  rg  supports_gradgradr  rv  supports_scriptingr*  r  broadcast_tensors)	r  r  r*  rq  rg  r  r  r  r  
block_diag)r  rg  r  r  r  r  r*  bitwise_not)r  r  operator_variantrv  bitwise_left_shiftrJ  z%Some inputs produce undefined outputs)	r?  r  r  r  inplace_operator_variantrv  supports_one_python_scalarr  r  bitwise_right_shiftcombinations)r?  r  r  r  r  rg  r*  cartesian_prod)r?  r  rg  r  r  r  r*  r  cdist)r  rg  r  r  r*  c              #   H   K   | ]  }|t         j                  k7  s|  y wr  r   r
  r  s     r   r  r  *  "     0a<LqPQUZU`U`P`<L   "")r  r  r  r  r  r  r  r  r  r  r  cholesky)r  r*  gradcheck_wrapperr  cholesky_inverse)
r  backward_dtypesrh  r  r  check_batched_gradgradr*  r  r  r  cholesky_solvec                      t        | ddi|S Nrr  r   rp   r  s     r   rt  rt  *      5WY]5ocd5ohn5or   )r?  r  r*  r  r  r  r  r  r  )r  r*  rq  r  r  rg  unsafe_chunk)r  r*  r  rq  r  r  rg  r  test_numpy_ref)r  r  r*  rq  r  r  rg  r  r	  c                 &     | j                   |i |S r  )r	  r   r   r   s      r   rt  rt  +  s    t)Fv)Fr   zaten::contiguous)
r?  r  r*  rq  r  r  autodiff_fusible_nodesrn  rg  r  sum_to_sizec                 &     | j                   |i |S r  )r  r  s      r   rt  rt  !+  s    )G)Gr   )r?  r  r*  r  r  r  rg  r  clamp)r  )	r  r  r  r*  rq  r  r  r  r  positive)
r  r  rg  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  rg  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  rg  resolve_negr   )r  r  rg  r  r*  test_conjugated_samplesr   )r  rg  r  r  r"  r*  r  r  mpstest_binary_ufuncs_mixed_dtype)r  r  r  rI  r  r  copysign)r  r  rh  r  r  corrcoef)r  r*  r  r  r  r  rg  )r  rV  r  )
r  r  r  r  handles_large_floatsr  r  r  r  r  )r  r  r  r  r  r  r  r  covtest_fn_gradgradzBarely failstest_fn_fwgrad_bwgrad)r  r*  r  rg  r  r  r  cross)r  r*  r  rg  r  cumsum)r  r  r  r  r*  cumprod)r  r  r  r  r*  rh  cummax)r  )r  r*  r  r  r  rX  cumminr	  gffffff?)r  r  r  r  r  r  r  r  r  r  r  r  c                     t        j                  | |||t         j                  n||t         j                        S |      S r  )r  r  _NoValue)r`  r  r   r  r  s        r   rt  rt  A,  s3    wwuaW_bkk'bhbpSUS^S^}v|}r   )
r?  r  r  rh  r  r  r*  r  r  r  )divideno_rounding_mode)r  r  r  r  rh  r  r  r  r  r  r  trunc_rounding)rounding_mode)rz  test_working)r  r  r  r*  rh  r  r  r  r  r  r  r  floor_roundingtrue_divide)r  r  r  r  r  r  r  equalc                 (    | |k(  j                         S r  )r}  )r`  r  s     r   rt  rt  ,  s    Ue^$8$8$:r   )r  r  r*  rv  supports_tracingr  )r  r  r  r  r  r  r  r  r  c                 $    | j                  |      S r  )r  r  s     r   rt  rt  ,  s    $++e"4r   )r?  r  r*  r  r  rn  rg  r  	expand_asc                 $    | j                  |      S r  )r  )r  r  s     r   rt  rt  ,  s    $.."7r   )r?  r  r  r  r*  rg  r  diag)r  r  r  r  r  r  r*  r  
diag_embed)r  rg  rh  r  r  r*  rq  r  r]  diagonal_backward)aten_backward_namer  rg  r  r  r*  rq  r  diagonal_copy)r  r  r  r*  rq  r  diagonal_scatter)r  rg  r  r  r*  r
  )r  r  always_returns_boolrv  r*  r  fmax)r?  r  r  r  rI  r  fminfmodr  test_contig_vs_every_othertest_non_contig)	r  r  r  rh  r  r  r  r  r  	remainder
TestOpInfoxla)r  r  r  rh  r  r  r  r  r  r  r  r  c                 2    t        j                  |       d   S r
  )r  modfr  s    r   rt  rt  8-  s    Ar   )r  r  r  r  r  r  r  r  r  r  r  r  stftz0Skipped! stft does not match the native function)r  r  r*  rh  r  r  r  check_batched_gradr  rg  rX  istftz1Skipped! istft does not match the native functiontest_backward)r  r*  rh  r  r  r  r  r  rg  r  r  c              #   H   K   | ]  }|t         j                  k7  s|  y wr  r  r  s     r   r  r  |-  r  r  flip)r?  r  r*  r  r  rg  fliplr)r?  r  r*  r  r  r  rg  flipudzsparse.sampled_addmm)r  r   rQ  z!cusparseSDDMM was added in 11.2.1TestTags	test_tags)r  rv  r*  r  r  z	sparse.mmr  test_fn_fail_gradgrad)	r  r  rv  rg  r  r  r*  r  r  i0)z
special.i0r  r3  )
r  r  r  r  r  r  r  r  r*  r  rT  )r  r  rv  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  ge)greater_equal)r  r  r  r  rv  r  r  )r  r*  r  rv  r  gt)greaterimag)r  r  rg  r  r  r  r  gradient)	r  rg  r  r  r  r  rs  r*  r  isin)r  r  rv  r*  kthvalue)r  r  r  r  r*  r  le)
less_equallinspace)r  r*  rg  rv  r  r*  r  tensor_overload)r  r*  rg  rv  r  r*  r  r  logspacer	  c                 2    t        j                  |       dk  S r  r   r   r  s    r   rt  rt  /      PUPYPYZ[P\_bPbr   )r  r  r  r  rj  r  r  r  r  r  r  r	  c                 2    t        j                  |       dk  S r  r  r  s    r   rt  rt  ./  r  r   )
r  r  r  r  r  r  r  r  r  r	  c                 2    t        j                  |       dk  S r  r  r  s    r   rt  rt  =/  r  r   )
r  r  r  r  r  r  r  r  r  r	  ldexp)
r  rh  r  r  rs  r  rg  rI  r  r  	logaddexp)r  r  r}  r  r  rI  r  
logaddexp2)r  r  r}  r  r  r*  logical_not)r  r  r  rv  r  r
  )less	lu_unpack)r?  r  rh  r  r  r  r*  lu)	r?  r  rh  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  rg  masked_scatter)r  r*  r  r  r  r  rg  r  masked_selecttest_non_standard_bool_values)r  r  r  r*  r  r  
matrix_exp)zlinalg.matrix_exp)
r  r  r*  r  r  r  r  r  r  rg  r`  )zlinalg.matmul)r  z67470!)r  r  r  r  rn  rh  r  r  r  r*  r  r  r  reduction_with_dim)r  r  r*  r  r  r  reduction_no_dim)r  r  rg  r  r  r*  r  r$  r  )r  r  rg  r  r  r  r*  	nanmedian)r  r  rg  r  r  r*  var_meangH׊>)r  r*  rg  r  r  r  r  r  )r  r  r*  rg  r  r  r  r  std_meanmeshgridvariadic_tensorsr  )r  TestOperatorSignatures(test_get_torch_func_signature_exhaustive)	r  r  r  r*  r  rg  r  r  r  list_of_tensorsra  )
r  r  r*  r  r  rg  rZ  r  r  r  r  )r  r  r*  r  r  r  quantile)r  r*  r  r  r  nanquantile)r.  binary)	r  r  r  r  r  r  r  rI  r  )r  r  r  r  rI  r  )r2  logical_and)r  r  rv  r  rI  
logical_orlogical_xor)r  r  rv  r  rI  r  bitwise_and)r  r  r  r  rv  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 r  )r   r  ro  r  )r-  r.  s     r   rt  rt  ;1  sU    892888KPQPWPW[][c[cPca!34{ikiuiuvwyzi{{r   )r  r  rv  rI  r  lcm)r  r  rv  rI  gcdisclose)r  r  r*  r  rv  rg  rI  r  r]  )zspecial.softmaxznn.functional.softmax_softmax_backward_data)
r  	aten_namer  r  r*  rn  r  r  r  rg  
with_dtype)r"  )	r  r  r!  r  r*  r  r  r  rg  )	r?  r!  r  r*  r  r  r  rg  r  znn.functional.softminsoftmin)r!  r  r*  rn  r  r  r  rg  )r  r!  r  r*  r  r  r  rg  znn.functional.cross_entropy)r  r  r*  rg  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   r*  s      r   rt  rt  1  s5    27713QX3Y[][b[bcdkn  zA  \B  3Cr   )r  r  r  rv  r*  r  r9	  z&Errors when storage_offset is includedzNumerous errors)r  rg  r  r  "check_inplace_batched_forward_gradr*  r  partial_viewstest_forward_adTestProxyTensorOpInfo(test_make_fx_symbolic_exhaustive_inplacezTest changes in memory layoutz)Modifies input strides and storage_offset)r  r  rg  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  rg  r  r  r%  r*  r  r  native_layer_normzUnsupported on MPS for now)
r!  r  r  r  rg  rn  r  r*  r  r  native_batch_normg-C6
?)r!  r  r  r  rn  r*  r  _native_batch_norm_legitznn.functional.cosine_similaritycosine_similarity)r!  r  rg  r  r  r*  z!nn.functional.adaptive_avg_pool1d)r  rg  r  r  rX  r  r*  z!nn.functional.adaptive_avg_pool2d)r  r  rg  r  r  rX  r  r*  z!nn.functional.adaptive_avg_pool3d)
r  r  r  rh  rg  r  r  rX  r  r*  z!nn.functional.adaptive_max_pool1d)r  rg  r  r  r  rX  r  r*  z!nn.functional.adaptive_max_pool2d)	r  r  rg  r  r  r  rX  r  r*  z!nn.functional.adaptive_max_pool3d)
r  r  r  rg  r  r  r  rX  r  r*  znn.functional.avg_pool1d
avg_pool1d)
r!  rv  rg  r  r  r  r  rX  r  r*  znn.functional.avg_pool3d
avg_pool3d)
r!  rv  r  r  r  r  rX  r  r*  r  z.nn.functional.binary_cross_entropy_with_logits binary_cross_entropy_with_logits)	r!  rv  r  r  rg  r  rX  r*  r  znn.functional.relureluc                 6    t        j                  | dk  d|       S r
  r  r  )r-  s    r   rt  rt  3  s    bhhqAvq!,r   )r!  r  rv  r  r  r  r  r  r  r*  rg  r  r  znn.functional.conv_transpose1dr  r  )r  gkNuϵ>gMb`?)r  r!  r  r  r  r*  r  r  rn  rX  r  r  rg  znn.functional.conv_transpose2dr  )r  g{Gz?TestDtypeCustomRulestest_custom_rules)r!  r  r  r  r  r*  rh  r  r  rn  rX  r  r  rg  znn.functional.conv_transpose3dr  )r  g-C6*?g
ףp=
?r5  zSkipped for ROCm!)r!  r  r  r  r  r*  r  r  rn  rh  rX  r  r  rg  znn.functional.conv1d)conv1dr8  )r  r!  r  r  r*  r  r  r  rn  rX  r  r  supports_expanded_weightrg  )conv2dr:  gQ?zWorks on some configs!)r  r!  r  r  r*  r  rX  rh  r  r  rn  r  r  r9  rg  znn.functional.conv3d)conv3dr;  )r  r!  r  r  r*  r  rX  rh  r  r  r  r  r9  rg  znn.functional.group_norm
group_norm)r<  )r!  r  r  r  rg  r  r  r  r  r*  rq  r9  znn.functional.instance_norm)r  rg  r  r  r  r*  r9  znn.functional.layer_norm
layer_normlayer_norm_backward)r=  zBug in MPS backend!)r!  r  r  r  r  r  rg  r  r  rn  r  r*  r9  z!nn.functional.local_response_norm)r  r  rg  r  r  r  r*  constant_pad_nd)r  r  r  r*  rg  r  znn.functional.padr  )r  r!  rh  r  r  r  r*  rg  r  )	r  r  r  r  r  r*  r  rX  rg  r  replicate_negativezNot fully supported on MPSr  )	r  r  r*  r  r  r  r  r  rg  znn.functional.hardswish	hardswishhardswish_backwardzaten::hardswish)r!  r  rv  r  r*  r  r  r  r  rg  rZ  znn.functional.unfoldim2colzInternal assert failed!)	r!  r  r  r*  rh  r  r  rg  r  znn.functional.interpolateinterpolaterp  )
r!  r  rv  r  r  r  r  r*  r  rg  rq  TestOperatorstest_vmapjvpall_has_batch_ruletest_vmapvjp_has_batch_rulerl  rm  )r!  r  r  rv  r  r  r  rX  r*  rq  r  rg  rn  )r!  r  rv  r  r  r  r  r*  rq  rX  r  rg  ro  )r!  r  rv  r  r  r  r  rX  r*  r  rg  rr  )r!  r  rv  r  r  r  r  r*  rX  r  rg  znn.functional.upsample_bilinear)
rv  r  r  r  r  rX  r*  rq  r  rg  _upsample_bilinear2d_aaTestDTensorOpstest_dtensor_op_dbTestEagerFusionOpInfo%test_aot_autograd_symbolic_exhaustive)r?  r!  rv  r  r  r  r  rX  r*  rg  r  znn.functional.soft_margin_loss)r	  )r  rg  r  r*  r  znn.functional.upsample_nearest)	rv  r  r  r  r  rX  r*  r  rg  z!nn.functional.margin_ranking_loss)r  rg  r*  r  rq  r  r  znn.functional.multi_margin_loss)r  r  rg  r  r*  rq  r  r  z$nn.functional.multilabel_margin_loss)r  r  rg  r  r*  rq  r  znn.functional.leaky_relu
leaky_reluleaky_relu_backwardc                 Z    t         j                  j                  j                  | |d      S NTinplace)r   r[  r\  rM  )r   negative_slopes     r   rt  rt  5  s!    xx""--a-Nr   zaten::leaky_relu)r  r!  r  r*  r  r6  rv  r  r  rg  r  r  rZ  z)nn.functional.multilabel_soft_margin_loss)rg  r  r*  r  r  r  r  znn.functional.avg_pool2d
avg_pool2d)	r!  rv  r  r  r  r  r  r*  r  z#nn.functional.fractional_max_pool2dc                 f    t        t        j                  j                  j                  | g|i |S r  )r  r   r[  r\  fractional_max_pool2dr`  r   r   s      r   rt  rt  5  (     3 3 I I5bSWb[abr   )rv  rg  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 r  )r  r   r[  r\  fractional_max_pool3drW  s      r   rt  rt  5  rX  r   )rv  rg  r  r  r?  r  r  r  r"  rX  r*  r  r  r  r
  zWorks on some configs)r!  rv  rg  r  r  r  rn  r  r  r  r  r*  r  r
  )r!  rh  r  rg  r  r  r  rn  r  r  r  r*  r  )r?  r!  r  r6  r  r  r  r  r  r  rn  r  r*  r  r  r
  )r!  rh  rg  r  r  r  rn  r  r  rX  r  r*  r
  max_unpool1d)
r!  rv  r  r  rg  rn  r  r  r*  r  r  )
r  r!  rv  r  r  rg  rn  r  r  r*  r
  max_unpool2d)r  r!  rh  r  r  r  rg  rn  r  r  r*  r
  max_unpool3d)
r!  rh  r  r  rg  rn  r  r  r*  r  znn.functional.linear)r!  rv  r  r*  r  r}  r  rj  rX  r  r  r  r9  r  znn.functional.bilinear)r!  rv  r*  r  r  r  r  rh  r  r  rg  znn.functional.gluglu)r!  rh  r*  r  r  r  rg  znn.functional.eluelu_backwardc                     t        j                  d|       t        j                  d|t        j                  |       dz
  z        z   S NrG  r   r  r.  r2  rJ  r   r  rR  s      r   rt  rt   7  s1    JJr1

2uq	A/F GGr   c                     ddiddifS Nr  rw  r   r   r   r`  s      r   rt  rt  	7      s^gs^,r   c                 Z    t         j                  j                  j                  | |d      S rP  )r   r[  r\  elur   r  s     r   rt  rt  7  s!    HH##Aud#;r   )r  r  r  r  r  rv  r  r  rg  rz  r6  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 )NrG  r   r   )r  r.  r2  r  r  r  rE  )r   rO  r  s      r   rt  rt  7  s    JJr1

2q 1vv{V!r r(.^cdeghgmgm^n7o^nYZqAvST8T^n7o(p!r r7os   #B)r  r  r  r  r  rv  r  r  rg  rz  r  r*  rq  r  znn.functional.celuc           	          t        j                  d|       t        j                  d|t        j                  | |z        dz
  z        z   S ra  rb  rc  s      r   rt  rt  27  s7    JJr1

2uq5y8IA8M/N OOr   c                     ddiddifS re  r   rf  s      r   rt  rt  ;7  rg  r   c                 Z    t         j                  j                  j                  | |d      S rP  )r   r[  r\  celurj  s     r   rt  rt  =7  s!    HH$$Qt$<r   )r  r  r  r  rv  r  r  rg  rz  r6  r  znn.functional.rrelurrelu_with_noise_backwardc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  rrelurW  s      r   rt  rt  K7  s&    UXX0066OOOr   c                 j    t        t        j                  j                  j                  | g|ddi|S NrR  Trs  rW  s      r   rt  rt  M7  s,    UXX0066]]d]V\]r   c                 :    t        ddd      t        ddd      fS )NrG  rx  Tr  r  rC  )r  rf  s      r   rt  rt  U7  s    "t4d2X\6]^r   rG  rx  ru  zDifferent noise)r  r?  r6  r  r  r  r  r  rg  rz  r*  r  r  r  znn.functional.seluc           	          dt        j                  d|       t        j                  ddt        j                  |       dz
  z        z   z  S )Ng2֫?rG  g,x?r   rb  r   rR  s     r   rt  rt  r7  sA    -

2q!BJJr3TXZX^X^_`XadeXe3f$ggr   c                 X    t         j                  j                  j                  | d      S rP  )r   r[  r\  selur  s    r   rt  rt  }7      %(("5"5":":1d":"Kr   g;On?)
r  r  r  r  rv  r  r  rg  r6  r  ztorch._scaled_mmzRequires CUDA SM >= 9.0)r*  r  r  rg  r  rv  r  r  z*nn.functional.scaled_dot_product_attentionc                  d    t        t        j                  j                  j                  g| i |S r  )r  r   r[  r\  scaled_dot_product_attentionr  s     r   rt  rt  7  s&     3 3 P PbSWb[abr   gh㈵>)r  r   Skippedz0output is non-deterministic (when dropout_p > 0)zThis is )	r?  r*  r  rg  r  r  r  r  r  z'torch.ops.aten._flash_attention_forwardz-This platform doesn't support Flash Attention)
r*  r  r  rg  rv  r  r  r  r  r  z+torch.ops.aten._efficient_attention_forwardz(ROCm doesn't support efficient attentionznn.functional.silusilu_backwardc                 :    | dt        j                  |        z   z  S r   r  rJ  rz  s     r   rt  rt  7  s    Q!bffaRj.%9r   c                 X    t         j                  j                  j                  | d      S rP  r   r[  r\  silur  s    r   rt  rt  7  r}  r   z
aten::silu)r  r  r  r  rv  r  r  rg  r6  r  r  rZ  c                 :    | dt        j                  |        z   z  S r   r  rz  s     r   rt  rt  8  s    RVVQBZ r   c                 X    t         j                  j                  j                  | d      S rP  r  r  s    r   rt  rt  "8  r}  r   )r  r  r  r  r  rv  r  rg  r6  r  r  znn.functional.hardsigmoidhardsigmoid_backwardrQ  )r  r  r  rv  r  r  r  rg  r6  r  r  znn.functional.logsigmoidlog_sigmoidlog_sigmoid_backward)r!  r  r  r  rv  r  r  r  r  r  r  znn.functional.mishmish_backwardc                 D    | t        j                  t        |             z  S r  )r  r  r  r  s    r   rt  rt  p8  s    a"''"4Q"788r   )r  r  r  r  r  rv  r  r  rg  r6  r  znn.functional.softsignc                 8    | t        j                  |       dz   z  S r   r  r   r  s    r   rt  rt  8  s    a266!9q=)r   )r  r  r  r  r  rv  r  r  rg  r  r  znn.functional.tanhshrinkc                 2    | t        j                  |       z
  S r  )r  r  r  s    r   rt  rt  8  s    a"''!*nr   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              ?FrL  r   r   r  r  
new_tensorr   r  r  s    r   rt  rt  8  sE    $%LLN ".a477T>.B!C "^89URWR\R\8]"^r   )r  r  r  r  rv  r  r  rg  r  r  r	  znn.functional.thresholdc                 h    t        j                  | |k  ||       j                  | j                        S r  )r  r  r  r   r   r  r  s      r   rt  rt  8  s'    i(J(Q(QRSRYRY(Zr   c                 \    t         j                  j                  j                  | ||d      S rP  )r   r[  r\  r  r  s      r   rt  rt  8  s#    HH))!Yt)Lr   c                 b    t         j                  d      ddt         j                  d      ddfS )Nz	0x1.3ap-3r3
  )r  r  )rY  fromhexrf  s      r   rt  rt  8  s3    %--P[B\=?5ABG--P[B\=?5A4Br   )
r  r  r6  r  r  r  r  rg  rz  r*  z!nn.functional.triplet_margin_loss)r*  r  r  rg  r  r  z/nn.functional.triplet_margin_with_distance_loss)rV
  )r*  r  r  rg  r  r  r  	nextafter)r  r  rv  rI  r  c                 &     | j                   |i |S r  )r  r  s      r   rt  rt  8  s    daddD&;F&;r    test_make_fx_symbolic_exhaustive)r?  r  r  r  rg  r*  r  topk)r  r  r  rn  r*  znn.functional.batch_norm
batch_norm)r!  r  rg  r  r  rn  r*  r  without_cudnn)
r  r!  r  r  rg  r  r  r  r  r*  z"nn.functional.binary_cross_entropybinary_cross_entropy_backward)r  r*  r  r  rg  rh  rv  r  r  r  r  igamma)ztorch.special.gammainc)r  r  r  rI  rv  r  igammac)ztorch.special.gammaincc)r  r  r  rv  rI  r  znn.functional.softshrink
softshrinksoftshrink_backward)r!  r  r  r  r  r  r*  r  znn.functional.hardshrink
hardshrinkhardshrink_backwardzaten::hardshrink)r!  r  r  r  r*  r  r  rZ  znn.functional.hardtanhhardtanhhardtanh_backwardzaten::hardtanh)r!  r  r  r  rj  r  r*  rg  r  r  rZ  znn.functional.gelugelugelu_backwardz
aten::gelu)r!  r  r  r  rv  r  r*  r  r  r  r  rZ  r  znn.functional.relu6relu6zaten::relu6)r!  r  r  r  rg  r  r  rZ  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   rf  s      r   rt  rt  :      c1XPSUVxDXr   r  mvlgamma_p_3rS  c                     ddiddifS )Nr  r   r  r   rf  s      r   rt  rt  :  r  r   mvlgamma_p_5r  c                     ddiddifS )Nr  r   r  r   rf  s      r   rt  rt  :  r  r   ne)	not_equalr<  )rX  )rX  r  )r  rg  r  r  r*  rq  r  r  narrow_copy)	r  rg  r  r  rv  r*  rq  r  r  	view_copyc                 J    t        j                  | |      j                         S r  )r  r  r  )r   newshapes     r   rt  rt  J:  s    2::a#:#?#?#Ar   )r  r  rg  r  r  rv  r*  r  )negative)r  r  r  r  r  r  r  r  r  r  r  r  dist)r?  r  rh  rg  r  r  r  r*  outer)ger)r?  r  r  r  r  r  r*  ormqr)	r?  r  rh  r  r  r*  r  r  r  r4  )r  r  rg  r  r  rZ  rn  r  r  supports_varargsr*  rq  test_scalar_support$test_reference_numerics_large_values)r  r  r  r  rj  rh  rs  r  r  r  r  r  r  r  r  float_power)r  r  r  rh  r  r  r  r  r  r  r  qr)r?  r  r*  r  r  r  r  rad2degr  roll)r  r  r  rg  r  r  r*  r  rot90)r  r  rh  rg  r  r  r*  )zspecial.roundc              #   H   K   | ]  }|t         j                  k7  s|  y wr  r  r  s     r   r  r  .;  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   rf  s      r   rt  rt  @;      
AQ[]^P_>`r   r  )
r  r  r  r  rz  r*  r  r  r  r  
decimals_3c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  L;  r  r   )r  r  r  r  r  rz  r*  r  r  r  r  r  decimals_neg_3c                     ddiddifS )Nr  r  r   rf  s      r   rt  rt  f;  s    
B?OR\^`Qa>br   r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )zspecial.sinc)	r  r  r  r  r  r  r  r  r  )r  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  rj  r  r  r  r  r  r  r  r  rj  )r  r*  r  r  rg  r  rZ  r  split_with_sizesr  )r  r  r  r*  r  r  rg  unsafe_split)	r  r*  r  r  rg  r  rZ  r  r  )r  r*  r  rZ  rg  r  r  r  __radd__)r?  r  rg  r  r  r  r  rZ  __rdiv__z	aten::mulzaten::reciprocal)r?  r  r  r  rh  rg  r  r  r  r  rZ  __rmul____rand__)r?  r  rg  rv  r  r  __ror____rxor____rmatmul__)r?  r  r  r  r*  rh  rg  r  r  r  r  r  __rmod__zaten::remainder)r?  r  r  rh  rg  r  r  r  r  r  rZ  __rpow__z	aten::pow)
r?  r  r  rg  r  r  r  r  r  rZ  __rsub__z
aten::rsub)	r?  r  r  r  rg  r  r  r  rZ  rsub)r  r  r  rg  rs  r  r*  r	  select_backward)r  r  r*  rn  r  r  rg  select_scatterrp  )	r?  r  r*  rh  r  r  r  rs  rg  slice_scatter)r  r*  rh  r  r  rg  signbit)r  r  r  r  r  r  r  rv  c                 @    t        | t        j                  dz  z        S )Nr3  )r   r  r  r  s    r   rt  rt  <  s    <TWWs]8K+Lr   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  tanh_backward)znn.functional.tanhrn  r	  c                     | j                         rt        | t        j                  dz  z        S | j	                  dt
        j                        S r  r  r  s    r   rt  rt  =  sF    /0||~ -9dggn9M,N -iCD<<PU]b]g]g<Ch-ir   tensor_split)r  r  r  rg  r  r  r  r*  hsplit)r  rg  r  r  r  r*  r  vsplitdsplittriangular_solvec                      t        | ddi|S r  r  r  s     r   rt  rt  H=  r  r   )	r?  r  r*  r  r  r  r  r  r  )fixc              #   H   K   | ]  }|t         j                  k7  s|  y wr  r  r  s     r   r  r  b=  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  rf  s      r   rt  rt  =  si     u~~- @BJO++V[VdVdJeJiJiJO++V[VdVdJeJiJi@k?l ?< 578?<r   )r  r  r  r  r  r  r  rz  )r  r  r  r  r  r  r  rsqrtc                 R    t        j                  t        j                  |             S r  )r  r`  rX  r  s    r   rt  rt  =  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  rj  r  r  r  r  r  r  supports_complex_to_floatr  isfinite)r  r  rg  rv  isinf)	r  r  rg  r  r  r  r  r  rv  isposinfisneginfisrealisnaneinsumc                 .    t        j                  ||       S r  )r   r  )r!  equations     r   rt  rt  A>  s    Xw(Gr   )
r?  r  r  rj  rg  r  r  r  r*  r  svdtest_fake_crossref_backward_amp"test_fake_crossref_backward_no_amp)r?  r  r*  rh  r  r  r  r  r  r  r  svd_lowrankc                  "    t        d g| i |S )Nc                 H    t        j                  | |j                  z  fi |S r  )r   r  mTr-  r.  r   s      r   rt  z<lambda>.<locals>.<lambda>s>      e&7&7ADD&KF&Kr   r  r  s     r   rt  rt  r>      &6K'''r   )r?  r  rh  rg  r  r  r  r  r  r*  r  r  pca_lowrankc                  "    t        d g| i |S )Nc                 H    t        j                  | |j                  z  fi |S r  )r   r  r  r  s      r   rt  z<lambda>.<locals>.<lambda>>  r  r   r	  r  s     r   rt  rt  >  r
  r   )r?  r  rh  rg  r  r  r  r  r  r*  r  r  polar)r  r  r  rI  r  	polygammac                 0    t        j                  || fi |S r  r   r  r   r  r   s      r   rt  rt  >      U__Q-LV-Lr   polygamma_n_0c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  >      Qx#q>Rr   )r?  r  r  r  r  r  r  r  r*  r  rz  c                 0    t        j                  || fi |S r  r  r  s      r   rt  rt  >  r  r   polygamma_n_1c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  >  r  r   c                     | dk  S r  r   r  s    r   rt  rt  >      PQTWPWr   )r?  r  r  r  r  r  r  r  r*  r  rz  r	  c                 0    t        j                  || fi |S r  r  r  s      r   rt  rt  >  r  r   polygamma_n_2c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  >  r  r   c                     | dk  S r  r   r  s    r   rt  rt  >  r  r   c                 0    t        j                  || fi |S r  r  r  s      r   rt  rt  >  r  r   polygamma_n_3c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  ?  r  r   c                     | dk  S r  r   r  s    r   rt  rt  
?  r  r   c                 0    t        j                  || fi |S r  r  r  s      r   rt  rt  ?  r  r   polygamma_n_4gMb@?c                     ddiddifS )Nr  r   r   rf  s      r   rt  rt  ?  r  r   c                     | dk  S r  r   r  s    r   rt  rt  !?  r  r   )r?  r  r  r  r  r  r  r  r  r*  r  rz  r	  ravelunravel_index)r  r  rg  rv  r*  r  )r  r*  rq  r  rg  r  r  
reshape_asc                 $    | j                  |      S r  )r*  r   r  s     r   rt  rt  =?  s    q||E2r   )rH	  )	r?  r  r*  rq  r  rg  r  r  r  r>  c                 $    | j                  |      S r  )r>  r   r;  s     r   rt  rt  I?  s    qvve}r   )
r?  r  rg  r  r  rn  r*  rq  r  r  view_asc                 $    | j                  |      S r  )r/  r,  s     r   rt  rt  Y?  s    qyy/r   )	r?  r  rg  r  r  r*  rq  r  r  
atleast_1d)r  rh  rg  r  r  r  r*  r  
atleast_2d)r  rh  rg  r  r  r  r  r*  
atleast_3dr  )r  r  rg  r  r  r  r*  rq  	unflatten)r?  r  rg  r  r  r*  column_stack)r  r  r  r  r  r*  pinverse)r?  r  r  r  r  r  rX  rg  r*  r  r  r	  )r  r  r*  rX  r  r  r  r  )r  )r  rg  r  r  r  r  r*  rq  r   )r  rg  r  r  r  r*  rq  rX  r  )	r  rj  r*  rq  r  r  r  rn  rX  r  )
r  rg  r  r  r  r*  rq  r  r  rX  index_reduce)r  rg  r*  __getitem__)
r  rh  rg  r  r  rs  r  r?  r  r*  	index_put)	r  rg  rs  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*  rg  rv  r  unique_consecutiver  )r  rg  r  r  r  r  r*  take)r  r  r  r  r*  r  scatter)r  r  r  r*  r  r  c                 &     | j                   |i |S r  )r  r  s      r   rt  rt  [@  s    jajj$&A&&Ar   )r?  r  rg  r*  r  r  c                 &     | j                   |i |S r  )r  r  s      r   rt  rt  j@      faffd&=f&=r   )r?  r  rg  r*  rv  r  bytec                 &     | j                   |i |S r  )r@  r  s      r   rt  rt  v@  r?  r   z2Overflow when downcasting signed type is undefinedcharc                 &     | j                   |i |S r  )rB  r  s      r   rt  rt  @  r?  r   r0  c                 &     | j                   |i |S r  )r0  r  s      r   rt  rt  @  s    hahh&?&?r   )r?  r  rg  r*  r  r  r  rY  c                 &     | j                   |i |S r  r  r  s      r   rt  rt  @      gaggt&>v&>r   r  c                 &     | j                   |i |S r  )r  r  s      r   rt  rt  @  r?  r   rO  c                 &     | j                   |i |S r  )rO  r  s      r   rt  rt  @  s    eaeeT&<V&<r   r  c                 &     | j                   |i |S r  )r  r  s      r   rt  rt  @  r?  r   shortc                 &     | j                   |i |S r  )rJ  r  s      r   rt  rt  @  rF  r   cdoublecfloatchalfc                 &     | j                   |i |S r  )rN  r  s      r   rt  rt   A  rF  r   r  z&Expected: empty_like is not comparable)r  rg  r*  rq  rv  r  r  )r  rg  r*  rv  rJ  rK  rL  rM  rN  rO  r  r  )r  rg  r*  rv  r  r-  c                  <    t        t        j                  g| i |S r  )r  r   r-  r  s     r   rt  rt  PA  s    &6u{{&TT&TV&Tr   )r  r?  rg  r*  rv  r  
randn_likec                 >    t        t        j                  | g|i |S r  r  r   rQ  r  s      r   rt  rt  jA       0 0#GGGr   z5Expected: randn_like is not comparable between dtypes)r  r?  rg  r*  rv  rJ  rK  rL  rM  rN  rO  r  r  c                 >    t        t        j                  | g|i |S r  rS  r  s      r   rt  rt  A  rT  r   r  c                  <    t        t        j                  g| i |S r  )r  r   r  r  s     r   rt  rt  A  s    ???r   test_multiple_devicesrandint_likec                 >    t        t        j                  | g|i |S r  )r  r   rX  r  s      r   rt  rt  A  s     2 2CI$I&Ir   	full_liker	  c                 &     | j                   |i |S r  )r	  r  s      r   rt  rt  A      d)Ef)Er   )r?  r  rg  r*  r  rv  new_onesc                 &     | j                   |i |S r  )r]  r  s      r   rt  rt  A      T)DV)Dr   r  )r?  rv  r  r*  r  rg  r*  r  r  )r?  rv  r*  r  rg  r*  r  r  	new_emptyc                 &     | j                   |i |S r  )r`  r  s      r   rt  rt  B  r\  r   z%Expected: new_empty is not comparablenew_empty_stridedc                 &     | j                   |i |S r  )rb  r  s      r   rt  rt  -B  s    )<)<)<d)Mf)Mr   test_make_fx_exhaustivetest_make_fx_fake_exhaustiveempty_stridedc                 >    t        t        j                  | g|i |S r  )r  r   rf  r  s      r   rt  rt  ZB  s    +;E<O<OQT+fW[+f_e+fr   z!Expected: empty is not comparable)r?  r  rg  rv  r*  r  rM  )r  r*  rv  r  r  )r  r  r*  r  rg  rv  r  empty_permutedz*Expected: empty_permuted is not comparable)r  r*  r  rg  rv  r  scalar_tensor)r  r*  rv  rg  r  new_fullc                 &     | j                   |i |S r  )rj  r  s      r   rt  rt  B  r_  r   multinomialc                 >    t        t        j                  | g|i |S r  )r  r   rl  r  s      r   rt  rt  B  s     1 13HHHr   c                 R    t        t        j                  j                  | g|i |S r  )r  r   r  rl  r  s      r   rt  rt  B  s      8 8#OOOr   )	r?  r  r  r  rg  r*  r  r  rv  c                 >    t        t        j                  | g|i |S r  r  r   r@  r  s      r   rt  rt  C  s    cCDCFCr   zGradients are incorrect!)r?  r6  r  r  rg  r*  r  number_meanc                 @    t        t        j                  || g|i |S r  rp  )r  r  r   r   s       r   rt  rt  .C  s    dCI$I&Ir   TestDeviceUtilstest_device_mode_ops)r  r?  r6  r  r  rg  r*  r  	bernoullic                 >    t        t        j                  | g|i |S r  )r  r   ru  r  s      r   rt  rt  MC  s    FtFvFr   c                 R    t        t        j                  j                  | g|i |S r  )r  r   r  ru  r  s      r   rt  rt  QC  s      6 6MdMfMr   )
r?  r6  r  r  rg  r  r  r*  r  r  scatter_add)r  r*  r  r  r  r  )r  r*  r  r  r  r  hstackhypot)r  r  r  r  rI  	histogram)r  r  r*  rv  r  histogramdd)r  r  r*  r  rv  r  histcbincount)r  r*  rg  rv  r  	bucketizezExpected failure!)r  r  r*  rq  r  rv  r  r  )r  r  r*  rv  r  r  r	  )concatrN  )r  r  r  r*  rq  r  rh  r  r  r  r  r  unbind)r  r  r*  r  r  r  r  rg  vstack)	row_stack)r  r  r*  r  r  r  r  dstack)r  r*  r  r  r  r  unfoldc                       | j                   | S r  )r  r   r   s     r   rt  rt  D  s    xqxxr   )r?  r  r  rh  rg  r  r  r  r  r  r*  unfold_copy)	r  r  rh  rg  r  r  r  r  r*  r  )r  r  r  r  r  r*  r  movedim)moveaxis)	r  r  rg  r  r  r  r*  rq  r  renormzInconsistent accuracy)r  r*  r  r  r  r  r  c                 $    | j                  |      S r  r  )r   r  s     r   rt  rt  KD  s    QXXd^r   )	r?  r  r  rh  rg  r  r  r*  r  ri  )r  r  rg  r  r  rZ  rn  r  r  r%  r  r*  multiple)r  r  r  rg  r  r  rZ  r  r  r%  r  r*  r  r  zNo fill_ op)
r  r  rz  r*  r  r  r  r  rg  r  rC	  c                 @    | j                         j                  |      S r  )r  rC	  r.  s     r   rt  rt  D  s    qwwy007r   zAllowed exception)	r?  r  r6  r"  r  rg  rv  r  r*  rD	  c                 J    t        j                  | j                         |      S r  )r   rD	  r  r,  s     r   rt  rt  D  s    u//	5Ar   zAllowed exemption)r?  r  r6  r  rg  rv  r  r*  take_along_dim)	r  r  rs  r  r  r  r*  rX  r  tile)r  r  rh  rg  r  r  r*  trapz)r  rg  r  r  r  r*  	trapezoidcumulative_trapezoid)r  r  r  r  rg  r*  r  )r  rg  r  r  r  r%  rn  r  r  rZ  r*  xlogy)zspecial.xlogy)r  r  r  r  r  r  r  r=  c                 H    t        j                  | j                               S r  )r   r=  r  r  s    r   rt  rt  D  s    AGGI.r   )r?  r  r6  r  rh  rg  r  r  r  r  r*  	logsumexp)zspecial.logsumexp)r  r  r  r  r  rh  r*  rq  trace)r  r  r  rs  rg  r  r  r*  r  )swapdimsr  )	r  r  rn  r  rg  r  r  r%  r*  Tc                     | j                   S r  )r  r  s    r   rt  rt  E      r   )r?  r  rg  r  r  r  r*  r  r  c                     | j                   S r  )r  r  s    r   rt  rt  %E  r  r   )r?  r  rg  r  r  r  r  r*  r  c                     | j                   S r  )r  r  s    r   rt  rt  2E      r   )r?  r  rh  rg  r  r  r  r*  r  c                     | j                   S r  )r  r  s    r   rt  rt  ?E  r  r   )adjoint)
r?  r  r  rh  rg  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   rt  rt  ]E       BHHR__]^`cefMgotDur   )r  r*  r  rg  rv  r  tril_indicesc                 Z    t        j                  t        j                  | ||      |      S r  )r  r'	  r  r  s        r   rt  rt  jE  r  r   kron)r  r  rh  rs  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 r  )r  r  s     r   rt  rt  E  s    {q{{D1r   r  z*csr.to_sparse(1) not implemented. Skipped!TestSparseCSRtest_sparse_csr_consistency)r?  r*  r  r  rj  rg  r  r  r  r  r  logcumsumexp)r  r  rj  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  FrL  r  r  s    r   rt  rt  E  sF    /0||~ -9dggl9K,L -iCD<<PU]b]g]g<Ch-ir   )r  r  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  rn  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  rj  rg  r  r  r  znn.functional.l1_lossc                 2    t        j                  | |z
        S r  r  r`  r  s     r   rt  rt  1F  s    266%RX.CYr   )r  r*  r  r  rg  r  r  r  )zspecial.gammalnc                     | dk  S r  r   r  s    r   rt  rt  TF  r  r   )
r  r  r  r  r  r  r  r  r  r	  logdet)r  rg  r  r  r*  r  r	  )zspecial.log_softmaxznn.functional.log_softmax_log_softmax_backward_data)r  rg  r  r  r*  r  r  r  )r  r  rg  r  r*  r  r  r  logitlogit_backwardr"  )zspecial.logit)
r  r  r  r  r  r  r  r  r  r*  r  c                 0    t        j                  || |      S r  )r   r  r  r  r  s      r   rt  rt  F  s    U[[D%-Pr   c                 0    t        j                  || |      S r  r4  r  s      r   rt  rt  F  s    bhhy$.Nr   )r?  r  r*  rq  r  rg  r  r  r  r  r  nonzerononzero_static)r  r*  rg  rv  r  r  jiterator_unaryz8template <typename T> T unary(T x) { return x * x + x; }c                     | | z  | z   S r  r   r  s    r   rt  rt  F  s    a!eair   test_reference_numerics_hardr  )r?  r  r  rg  rv  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   rt  rt  F  s8    UaZRVVE5-A .:r{{5%89.:r   r  )r  r  )	r?  r  r  r*  rg  rv  rI  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 r  r   )r  r)	  r*	  i3r  r  s         r   rt  rt  G  s    urzD2I7MPR7RUW7Wr   r  g)r  r  r  )r?  r  r  r*  rg  rv  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_outputsc                     | |z   S r  r   )r  r)	  s     r   rt  rt  G  s    27r   gz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 r  r   )r  r)	  r  s      r   rt  rt  ?G  s    Rb'9r   )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  rh  r  )r*  rg  r  r  r  r%  r  rZ  r  r  r  znn.functional.dropoutc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  dropoutrW  s      r   rt  rt  G  s&    UXX0088%Q$Q&Qr   c                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  G  s,    UXX0088%_$_&_Z^_r   )	r?  r  r  r  r  r  rg  r*  r6  native_dropout_backwardzFails with ASAN)r?  r!  r  r  rg  r*  r  znn.functional.dropout2dc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  	dropout2drW  s      r   rt  rt  G  &    UXX00::ESDSFSr   r[  )r	  c                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  G  ,    UXX00::EaDaFa\`ar   )	r?  r  r  r  r  rg  r  r*  r6  znn.functional.dropout3dc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  	dropout3drW  s      r   rt  rt  G  r  r   r	  c                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  
H  r  r   znn.functional.alpha_dropoutc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  alpha_dropoutrW  s      r   rt  rt  H  s'    UXX00>>WWPVWr   c                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  H  s-    UXX00>>eePVe`der   )
r?  r  r  r  r  rg  r*  r  r6  r  z#nn.functional.feature_alpha_dropoutc                 f    t        t        j                  j                  j                  | g|i |S r  r  r   r[  r\  feature_alpha_dropoutrW  s      r   rt  rt  %H  (    UXX00FF_PT_X^_r   
with_trainc                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  :H  .    UXX00FFmPTmX^mhlmr   )
r?  r  r  r  rh  r  r  rg  r*  r6  c                 f    t        t        j                  j                  j                  | g|i |S r  r  rW  s      r   rt  rt  >H  r  r   without_train)r	  c                 n    t        t        j                  j                  j                  | g|i |ddiS rv  r  rW  s      r   rt  rt  KH  r  r   )
r?  r  r  r  r  r  r  rg  r*  r6  znn.functional.one_hot)r  rg  r  r*  znn.functional.embeddingembedding_dense_backwardc                 X    t        j                  j                  j                  || fi |S r  )r   r[  r\  	embeddingrO  rr  r   s      r   rt  rt  ZH  s!    )<)<)F)FsF)]V\)]r   )
r  r?  r  r*  r  r  r  r  r9  rg  znn.functional.embedding_bagc                 X    t        j                  j                  j                  || fi |S r  )r   r[  r\  embedding_bagr  s      r   rt  rt  sH  s"    )<)<)J)J3PV)aZ`)ar   )	r?  r  r  rj  r*  r  rX  rg  r  z*nn.functional.multi_head_attention_forwardc                 f    t        t        j                  j                  j                  | g|i |S r  )r  r   r[  r\  multi_head_attention_forwardrW  s      r   rt  rt  H  s(    UXX00MMufW[f_efr   zHSkipped - baddbmm decomp does not have enough precision for 16-bit float)	r?  r  r*  r  rg  r  r  r  rh  znn.functional.softplussoftplus_backwardc                     ddddddfS )Nr   r5  r  r  r   rf  s      r   rt  rt  H  s    QR4P[\kmRn3or   r  )r  r  rz  r*  r  r  r  r  znn.functional.mse_lossmse_loss_backwardc                     | |z
  dz  S )Nr   r   r  s     r   rt  rt  H  s    EFNWXCXr   )r  r  r*  rg  r  r  r  r  r  rj  r  znn.functional.grid_samplegV瞯<)r  r  rg  r*  rq  r  rX  grid_sampler_2d)r  r  rg  r*  r  rX  argwhere)r  r  rg  rv  r*  r  r}  TestReductionstest_result_dtype)identityrv  rD  r  r  r  anyr  	propagatetest_dim_emptytest_dim_empty_keepdim)
nan_policyr  r  r  r  r  r  r  r  argmax)supports_keepdims)r  rv  rn  rD  r  r  argmin)r  rv  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   rg  rv  rD  r  r*  r  r  test_ref_small_inputtest_ref_extremal_values)r  r  r  rg  r  rn  r  r  r  r  r  nanmeanomittest_ref_duplicate_values)r  r  r  r  r  r  r  r  r*  r  r  r  )r  rg  complex_to_realr  r  r  r  r  r  r  r*  r  generate_args_kwargsr  )r  r  rg  r  r  r  r  r  r  r  r  r*  r  r+
  test_ref_large_input)r  rg  r  r  r  r  r  r  r  r  r*  r  r  r  r  test_dim_nonetest_reduction_all)r   r  r  rh  rg  r  r  promotes_int_to_int64rX  r  r  r*  r  r  r  r   r  rg  r  rJ  rK  rL  rM  rN  rO  nansum)r   r  rg  r  r  r  r  r  r  r*  r  r  znn.functional.ctc_loss)r  rg  r*  r  z#nn.functional.cosine_embedding_lossznn.functional.nll_loss)r  r  rg  r*  r  r  rn  r  znn.functional.gaussian_nll_loss)r  rh  rg  r  r  r*  r  r  z"nn.functional.hinge_embedding_loss)r  rg  r  r  r*  r  rq  znn.functional.huber_losshuber_loss_backward)r  r  rg  r  r*  r  r  znn.functional.pdist)r  r*  r  rg  r  r  znn.functional.poisson_nll_loss)r  rg  r  r  r*  r  argsortrepeat_interleave)r  rj  r*  rg  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   r*  s        r   rt  rt  J  s2    FF266!a%#+&!+"wGAPQERr   )r  r*  r  rg  r  r  r  znn.functional.pixel_shuffle)r*  r  rg  r  r  r  znn.functional.pixel_unshuffleznn.functional.kl_div)r*  r  rg  r  r  diagflatc                 0    t        j                  | |      S )N)r  )r  r   )r`  r\  s     r   rt  rt  $K  s    BKK$@r   )r  r*  r  r  rg  r  r  r  scatter_reduce)r  r  r  r  r*  )r  r  r  r*  r  )r  r  r  r  r  r*  )r  r  r  r  r  r  r*  _segment_reducesegment_reduce)r!  r  r  rg  r  r*  r  r	  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&  rg  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_namerg  r  z_refs.normal_)r?  r&  r*  rg  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&  rg  z_refs.floorz
_refs.fracz
_refs.imagz_refs.isfinitez_refs.isinfz_refs.isposinfz_refs.isneginfz_refs.isnanz_refs.isrealz_refs.i0z_refs.lgammaz_refs.special.multigammalnr  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_valuesr  r  r  z
_refs.signz	_refs.sgn)r&  r-  r  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*  rg  z_refs.special.softmaxz_refs.special.logitz!_refs.nn.functional.alpha_dropoutz#Expected: dropout is not comparablez_refs.nn.functional.celuz_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&  rg  r  z_refs.nn.functional.leaky_reluz_refs.nn.functional.log_softmaxz$_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&  rg  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&  rI  z
_refs.fminz
_refs.fmod)r&  r  rI  r  z	_refs.gcdz_refs.gez_refs.gtz_refs.heaviside)r&  rI  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.atleast_1dz_refs.atleast_2dz_refs.atleast_3dz_refs.as_strided)r&  r  r  )r&  r*  r  r  z_refs.as_strided_scatterz_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&  rg  r+  z_refs.diag_embedz_refs.dstackz_refs.expandz_refs.expand_asz_refs.flattenz
_refs.flipz_refs.fliplrz_refs.flipudz_refs.hstackz_refs.narrow)r&  r  z_refs.narrow_copy)r&  rg  r  z_refs.nn.functional.group_normz_refs.native_layer_normz_refs.permutez_refs.rad2degz_refs.ravelz_refs.renormrQ  z_refs.reshapez_refs.reshape_asz
_refs.rollz_refs.rot90z_refs.stackz_refs.squeezez_refs.tensor_splitz_refs.hsplitz_refs.vsplitz	_refs.dot)r&  r  r+  r  z
_refs.vdotz_refs.transposez_refs.tz_refs.T)r  z_refs.unfoldz_refs.unfold_copyz_refs.unsqueezez
_refs.viewz_refs.view_asz_refs.vstackz_refs.unflattenz_refs.unbindz	_refs.allr  r  z	_refs.anyz_refs.count_nonzeroz
_refs.mean)r&  rg  r  r  z	_refs.stdz_refs.std_meanz	_refs.sumz_refs.cumsumz_refs.cumprodz_refs.sum_to_sizez
_refs.prod)r&  rg  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 r  )r  r  r-  r  s     r   rt  rt  IV  s    #3DJJ#P#P#Pr   )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 r  )r  r  r  s      r   rt  rt  V  s    $**Ye*Lr   z_refs.index_selectz_refs.index_copyz_refs.index_addz_refs.index_fillz_refs.allclosez
_refs.stftz_refs.istftz_refs.view_as_complexc              #   B   K   | ]  }t        |t              s|  y wr  )rn  ra   )r  r?  s     r   r  r  W  s     \LbJr?<[rLs   zmasked.c                     t        | t              s| f} t        j                  | t        j                  |dj                  |      j                         j                         }|S r=  )rn  r  r   r  r0  mul_floor_r  )r;  r 	  r   rQ  s       r   r4  r4  *W  sK    eU#JJU\\&AFF{SZZ\aacELr   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   )rK  r   r  r  r  r	  copy_rq  )r;  r  r 	  	duplicater   	batch_dimrQ  r  s           r   rm  rm  0W  s    u:??q==IIKKejj@E5#$Y"((NN;v67Hi8HI	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  <W  s     <<,7799r   c                     t        |       dkD  sJ 	 t        j                  |       j                  d      }|j	                         dkD  r|S :r
  )rK  r   r-  r  r  )r;  r  s     r   r5  r5  ?W  sF    u:>>
U#&&q)::<!M r   c                    | |||dfS )NTr   op_namevariant_namerV  r  s       r   xfailr?  GW  s    \;==r   c                    | |||dfS NFr   r<  s       r   r  r  KW  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 r  r   r5  s    r   wrappedzskipOps.<locals>.wrappedeW  s    	r   )r%  r  r  rK  ra  r  rK   r  r  r  r  r  )test_case_namebase_test_nameto_skipall_opinfosr?  r=  r>  rV  r  expected_failureru  matching_opinfosr?  r  	decoratorrD  s                   r   skipOpsrL  OW  s   KGLD{F4D'2 Z{! vv0Q5H5HL5X { 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   Nr  re  r  r  )r   r   r  )r  )NNrd  )FFr  N)rx  r(  r  )rM  )rt  )rN  )rz  rA  )znn.functional.conv2d)r
  )rx  F)rt  )r	  )rS  )r  )rX  )rZ  )r  )r  r&
  F)r  (  r\	  r   r   r  r   r   r   r  r]	  r~  r  r  r
  r   r  r  r   r	   typingr
   r   r   r   r   r   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/   r0   r1   r2   r3   r4   r5   r6   $torch.testing._internal.common_utilsr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   torch._refs_refsr  torch._refs.nn.functionaltorch._refs.specialtorch._refs.linalgtorch._prims_primsr?  torch.utilsrC   r=  	packagingrD   #torch.testing._internal.opinfo.corerE   rF   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   #torch.testing._internal.opinfo.refsru   rv   rw   rx   ry   rz   $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+  r0  r7  r<  r@  rV  rb  rk  rn  rr  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r&  r*  r.  r2  r6  r9  r;  r=  rB  rF  rR  rU  rX  rf  rt  r  r  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  r8  r:  r>  r@  rB  rF  rI  rN  rT  rX  r`  rd  ri  rn  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)  r1  r5  rE  rQ  rU  rZ  r]  ra  re  rk  rn  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  reference_inputs_bucketizer  r#  r-  r7  r:  rH  rL  rR  rV  r[  ra  rf  rk  rq  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-  r1  r9  r;  rA  rD  rF  rI  rM  rP  rW  ra  rg  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  r4  r:  r<  rE  rO  rU  r[  r]  r_  ri  rl  ro  rt  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  r  r!  r$  r,  r/  r3  r5  r@  rB  rE  rJ  rL  rR  rU  rX  rg  ro  rv  r  r  r  r  r  r  r  r  r  r  r   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	  r5	  r<	  r?	  rA	  rF	  rJ	  rT	  r`	  re	  ri	  rm	  rp	  ru	  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/
  r1
  r4
  r6
  r8
  r;
  r>
  rH
  rL
  rQ
  rX
  rZ
  rc
  rv
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r.  r3  r,  Enumr
  r
  r  r8  r?  rB  r  r  r  r  rZ  rj  r  r  rw  ry  r{  r~  r  r  r  r  r  r  r  r  r  r8  rO  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rN  rL  rM  r	  r  r  r  rK  r   r-  r9  r<  int16r\  ro  r
  r?  rC  rF  r  
sparse_coo
sparse_csr
sparse_csc
sparse_bsr
sparse_bscr   rr  ru  rv  r{  r|  r~  r  libNumpyVersion__version__broadcast_arraysr  invertr  lshiftilshiftr  rshiftirshiftr  r  rY  r  r  rY  r  r  r	  rO  radiansr  r  rJ  r  r  r  r  r  r  modimodr  r  r]  r  r  r  r  r  r  r^  r  r  r  r  rP  rQ  rR  r  r  r  r   r  r  r.  r2  r  r  r  r  and_iandr  or_iorr  xorixorr  r  r  r  r  r   r[  r\  r  r  r0  r  rH  r\
  hardsigmoidmishr~  r  r  r  r  r  r  r  r  r  degreesr  r  r_  r	  rW  r  r  r  r  r  r  r  r  r  r  rp  r  rS  r  r  array_splitr  rb  r  r\  r  r`  rX  r  r  r  r  r  r  r  r  r   r(  r)  r4  r6  r8  r  r  r  r  rC	  rD	  r=  r  rZ  r[  r  parser  rX  	jiterator_create_jit_fn_create_multi_output_jit_fnr  r  r  r}  r  r  r  r  r  r	  r  r  r  r+
  r  r  r%  definitionspython_ref_dbops_and_refsrn  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_opsr4  rm  r  r5  r?  rL  )r?  s   0r   <module>r     s  $ $ , ,            : : %    
   
            ) 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^"+M6^7l(0Tf
A	AAB0j81$E&x8&t	m=A	9	9	=	:KH&&0*&*:R&	O$V#
J
"
3<AVb(a(;6)7V$
NW*/X+T,@6\</$"'*PN"N2`*?	X&-*V<S MR 94
QYe"Y<(	M304"/
\{
*&"2	66&>>U"."06
)"Z9j"O>
004 _(CEJ!&3	,	!
#T' ;I;2K?:B:$$^LRe-	=:/x%cN`
:":k?S$8Bt LlBA A$QKJ< %%<TXY J
!eF^:b2O (NTV58J"	_J&_ J(_ Q$	TQ*T Q(T #B #BJ*1 *	 1 	 	 1 	 . ,.b$QUaf ;0|*<*@@"&, ?@<=.5b><>69rx:rz*Z>>PB3B"BJ76t6D
B//@N*H6,F,5&GR0F0&t&)HC$
nB$@
#J%N="U&U0N=*76WB?(0H=7~$9L,$#&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`O3>	962_V	VV"9JAS::E ty E*P/N4d;
E,8
#0J*N%@P:2h43n)&>-Uj*>*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 $6N?9Mx6n]($0KfH*	.S(2222h(2VHVSP4L$65 5&9$
]
N"=J//d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; 5In(,^EN@&
66"O Cj,p&30Jd,HE\  &4r2h- 38uUYcg!h dii 1 1H HVX9 X4T9 T$8$> 8x "1eU3!%
 "1eU3 "1eU3 "1eU3 "1eU3 "1eU3 "1eU3 "1eU3 "1eU3 "1eU3!% !%e)D
 "	
	$ "1eU3!%!__cu5&AB "	
	 "1eU3 "1eU3 "1eU3$&*,	 "1eU3-enn=3EJJ?!% "1eU3U^^,"5::u~~>	 "1eU3!%..1'

ENNC	 "1eU3!%..1'

ENNC	 "1eU3-enn=3EJJO!% "1eU3U^^,"5::u~~>	 "1eU3-enn=3EJJ?	 "1eU3U^^,"5::u~~>	 "1eU3!%..1'

ENNC	 "1eU3!%..1'

3!% "1eU3!%..1'

3!% "1eU3U^^,"5::u~~>	 "1eU3(D.u~~uzz5::V#'WXZd>}X'WXZd5moO'WXZd,]_F
 "1eU3(D	 "1eU3!%**ennejjI'F	 "1eU3UZZD"5::u}}='[\^h>GYZ_ZdZdGeg'[\^h5>PQVQ[Q[>\^'[\^h,5G

5SU
yJ% T&\ JZ "1dD$7(U^^U]]S.uzz5>>5==Y! 11:?ST11:?RS11:?[ -ejj%..%-- XZ11:?d -ejj%..%-- XZ11:?p -ejj%..%-- XZ
& "1dD1(U^^U]]S.uzz5>>5==Y!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	
" (U^^U]]S.uzz5>>5==Y5atTJ 11:?[ -ejj%..%-- XZ11:?d -ejj%..%-- XZ11:?R -ejj%..%-- XZ11:?p -ejj%..%-- XZ

" (U^^U]]S.uzz5>>5==Y5atTJ 11:?[ -ejj%..%-- XZ11:?d -ejj%..%-- XZ11:?R -ejj%..%-- XZ11:?p -ejj%..%-- XZ 11:?\!& 0eE11:?e!& 0eE11:?S!& 0eE11:?q!& 0eE#
4 "1dD1U^^,"5>>5==A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	
  "1dD1U^^,"5>>5==A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	
" "1dD1U^^,"5>>5==A!"'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	
& "1dD1U^^,"5>>5==A!"'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	
$ U^^,"5>>5==A"!%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	
 !!%'* "1eU3(D!Ws& d6l sl %at4$&.uzz5>>J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	
  8D$G$&.uzz5>>J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	
#!2 o. !H  E51-emmU^^L3EMM5>>R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	
/ d?+ (  D%0-emmU^^L3EJJO3EJJO. T/* ,"10, &, ) )# )rzz ) Tbjj TE#J TkRZZ k5: k"bjj c 07:  "	 "	"/u|| /*\("KR5)vv3EJJPUP[P[\ 9%**ejjRWR`R`bgbmbm n#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 +/%)#''+'+'+'+'+M&-KRR 6'yy!3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+*.)-0%--27..$27//42I  J L $MHMM*$=?PRr06Zdf#MHMM*$=?PRt06Zdf $MHMM*$=?PRq06.8: $MHMM*$=?PRq06.8: $MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt05u||U]]>[]#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3T'USKRd 7(zz#3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n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 !.#A"$eKRj E67 B4UZZ5:]]EKKQ&*'<+/(,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!kKRh 6dzz+ENNEMM5;;X]XbXbc".0 H44iA_$)MM5??#CE H446NPtuH446OQ`aH446FH\]H446FTiKRT 8>"#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#UKR\ 8g <<//$U]]ENNC"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)]KRX =l <<44$U]]ENNC"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'YKRR ;j <<22$U]]ENNEJJPUP[P[]b]h]hjojujuw|  xC  xC  D"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%SKRJ	 <k <<33$U]]ENNC"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!K	KR~	 8'g <<//0O"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{|%	KRx
 9h <<000O"$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y
KRh K((U]]ENNS(,/4+/+/U+C %X%=%=%7%:179
 %X%=%=?OQjk$X%=%=|][
iKRL K((U]]ENNS(,/4+/+/U+C %X%=%=%7%:179
 %X%=%=?OQjk$X%=%=|][
MKRp E)4U[[%--QVQ_Q_afakakl&*(,+/04-D29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2l29:R[`[k[k2lnqKRJ E67f)4U^^U]]TYT_T_`&*(,+/'<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<	5#KKRR 7 ,EMM5>>J6u}}ennU6u}}ennU!#"& 41  8==,., ??E,<,<=	?SKRz 7)+EMM5>>J6u}}ennU!#"& 4&1:%>%&9K  8==,., ??E,<,<=	? MHMM*5H^(-u}}6FH
{KRf 7+ENNEMMJ*5==%//5K[K[+0>>;#"&$ejj#4d2K%LM')=5R
 23gKR~ 8y ,ENNEMMJ6u}} a:E :?8H]_a  $#"&$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 3U*4KRT 9+ENNEMMJ*5==%//5K[K[+0>>;!3EMM "WITXfenn5Eln"W49OO"WEJEUEU"W  $#"&$eoosG7T%UV!AvW $eoosG7T%UV!#3I	 4  8==,., ??E,<,<=	?)UKRL 5+EMM5>>J6u}}ennU!42#"&  8==,., ??E,<,<=	?MKRl 6+EMM5>>J6u}}ennU42#"&  8==,., ??E,<,<=	?mKRJ 5+EMM5>>J6u}} a:E :?8H]_a "%)#"& MHMM*5|]`f  wB  sB  C-u}}ctRV>W.XY(*6 01KKRj 4+EMM5>>J6u}}ennU!#"&.0kKRx 6+EJJV#"& MHMM*5|Ee#<UZZY^YfYf#gi
 1 46yKRP 9+EMM5>>J!#"& H44lDde <!(3Hh"jkQKRh 90O#"& H44(<> <!(3Hh"jkiKRB  "'"yy" "" $(	"
 (," (," (," (," (," +/" *." 4EJJ

ENN[" !:%++uzzSXS]S]_d_m_m n" &*"  $,emmSeRW=X-YZ,&B )%..$)?@	", $MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt06.8: $MHMM*$=?PRq06.8: $MHMM2Z$[$;=RT+"CKRJ   (zz3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n0%..$1GHJ-2'+*.#''+'+'+'+)-#MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRr05u||U]]>[]#MHMM*$=?PRt06.8: $MHMM*$=?PRq06.8: $MHMM2Z$[$;=RT KKRL  "'yy3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+*.#''+'+'+'+)-0%..$1GHJ#MHMM*$=?PRq.<&Z_ZiZikpk{k{Y|~#MHMM*$=?PRt.<&Z_ZjZjYkm#MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt06emm?\.8: $MHMM*$=?PRq06emm?\.8: $MHMM2Z$[$;=RT#"MKRR G((U^^UZZP(,+/*./4 %X%=%=yJde
SKRh  !(!zz! "! 4EJJ

ENN[	!
 !:%++uzzSXS]S]_d_m_m n!  1%..$1GHJ! .3! (,! +/! $(! (,! (,! (,! (,! *.!" $MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]#MHMM*$=?PRt06emm?\.8: $MHMM*$=?PRq06~.8: $MHMM2Z$[$;=RT#MHMM*$=?PRt.<&Z_ZjZjYkm!!iKRl :0O{{"$4MHMM*5yB`aMHMM*5H^_MHMM*57LM
 mKRD >+EJJu~~V#"&&+8:EKRV $$&(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
WKR@ ""+EJJu~~V=!C#"&&+ H446NPtu
 H44iA_inivivhwxAKRf <+EJJu~~W\WbWbc#"&&+ H446NPtu
 H44iA_inivivhwx 7!8gKRH =~~,UZZ8$,OO%*	,IKRR (//)+!/!1%-__-5-=-=&+/3+/A;$]X]]:%>@RTij$]X]]3Z%[]ik}~SKRn )00)+!/!1%-__-5-=-=&+/3+/A;$]X]]:%>@RTij$]X]]3Z%[]ik}~oKRJ >  +EJJu~~V#"&&+8:KKR\ ""+EJJu~~V#"&&+:H44noVH44nFVWH446NPtu H44%'Eu}}N^`]KR@ 7 """13AKRL 6ww'

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

;1!()Mbu!v!#"& H44+2$)JJ=2U!KRt! :{{3EJJPUP[P[\ %'+*.#''+'+'+'+u!KRL" 6ww3EJJ49JJM#''+*..3 %	'M"KR`" ?$4ww3EJJ49JJM'+*.#''+'+'+'+
 $MHMM*$=yJhrwrr  rC  D#MHMM2f$g$;^Ma"KRH# >+EJJ

ENNS8#"&I#KRV# =+EJJ

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

ENN[ 9%++uzzSXS]S]_d_m_m n%)(-'+*.)-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W%KRN& 6?H3EJJ

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+*.)- $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'O&KRL' 5+EJJG/-#"&  8==,., ??E,<,<=	? H446H.YH446HJ\]H446HJ`aMHMM.9;MOfg H44iA_`)M'KRF( 7+EJJG1"&#%G(KRR( 8+EJJG#"& H44lJO ;<S(KRd( 9+EMM5>>J#"& H44lJO
 4$
&e(KRz( 8

EJJG%&BZ_`#"& 46{(KRJ) 8

EJJG%&BZ_`#"& 46K)KRZ) 9zz0%..$27--2G  H J'

EJJO'+*.#''+'+'+'+)-/[)KRt) 6jj  !b"++bkk  ,EJJu~~V##"&0.&+!u)KRX* E'&84UZZU^^\!:5::uzzSXSaSachcncn!o(,(,*.+/04&*+/T+BEY*KRr* E'&6(U^^D'./O_cry_z'{(,(,+/04&*+/T+B %X%=%=?QShi  %X%=%=P^_!s*KRZ+ E'&6(U^^D'./O_cry_z'{(,(,+/04&*+/T+B %X%=%=?QShi  %X%=%=P^_![+KRB, M4UZZU^^\!:5::uzzSXSaSachcncn!o(,*.+/04+/T+BDC,KRR, 7+EJJu~~V:1"!S,KRb, 5?G3EJJ

ENN[ 9%**ejjRWR`R`bgbmbm n $MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]	 &*'+*.)-/c,KR@- 84+EJJ

ENNS2#"&%)H446NPtu
A-KRV- ;7+EJJ

ENNS#"&5H446NPtux	W-KRj- 6ww+EJJV1%++uzz5::W\WeWef#"&&+0.0k-KR|- <+EJJW\WbWbc##"&?!E=	?}-KRP. :1+EJJW\WbWbc#"&?!E=?Q.KRb. ?+EJJW\WbWbc#"&?!E=?c.KRp. +EJJV#"&<>q.KR|. D4UZZQVQ^Q^`e`k`kl(,&+'C}.KRL/ Fzz(

S(,+//4 %]X]]:%>@RTij	M/KR`/ Fzz(

S(,+//4 %]X]]:%>@RTij	a/KRt/ F(G!.u}}enn!M(,(,+/&*,:D+A$]X]]:%>@R%A-2^^,=? %]X]]:%>@R%6-2^^,=? %]X]]:%>@R%>-2^^,=? %]X]]:%>@R%K-2[[N< u/KRd0 K(G!.u}}enn!M(,(,+/&*%-\\-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' !e0KRh1 6.,U^^U]]K 25==%.. Q%)'+*.#''+'+'+'+#MHMM*$=?PRt,1NNEMM5==Z_ZgZg+hj $H$<$<oOe,1NNEMM5==+Y[	i1KRN2 6MHMM*\]%'EG
 -.0##"&&+#"' 4!O2KRr2 7/1##"&&+#"'MHMM*]^%'EG
  H446H.YH446OQ`as2KR`3 7xx'

ENNC'+*.#H$<$<$3$:+00aN<L0a+ac $('+'+'+'+%)!+a3KRB4 6jj+EJJ

ENNS0#"&C4KRP4 8ll+EJJ

ENNS90#"&Q4KR`4 8ll+EJJ

ENNS90#"&a4KRp4 !,.!@ 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bC"+q4KRH6 ;$U^^4%!"$<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=(I6KRZ7 4,6 @}}'')<@*0%..$27--2G  H J'

EJJO#1#3'+*.)-&9#MHMM*$=?PRq,1JJ=:[7KRz7 N((U^^D&++/T+B04 %]X]]:%>	Kij$]X]]:%>@R-2^^,=? %]X]]:%>@RTz-2ZZM; %]X]]:%>@RT}-2]],<>$%6sPT[_G`7a%b%79RT{7KRd8 7kkxx,UZZH 25:: > '+*. $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:#e8KR^9 7xx-$3EJJ

ENN[0%..$1GHJ'+*.#''+'+'+'+%))-/_9KR|9 D((.(U^^U]]S(,&+}9KRL: 7,.;57HI" H44lMRH44lJO	
M:KRb: D

((U^^U]]S(,&+c:KRr: 6ww+EKK8 %'+*. /4 $H$<$<>OQjks:KRL; :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+4M;KRx; 6+%ejj1"0	2y;KRB< :>%emm4#"&424C<KRP< D+(U^^U]]S(,&+Q<KR`< :+ENNEMMJ#"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%a<KRX= :+ENNEMMJ#"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#Y=KRP> :+EJJG#"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/ Q>KRR? :+EJJG#"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- S?KRT@ 5vv#3EJJ

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

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

ENN[%)'+*.)-#MHMM*$=?PRt05u||U]]>[.8: .<Fbmn-oqy@KRXA 6ww#3EJJ

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

ENN[%* $MHMM*$=?PRl+DUZZQVQ_Q_+`b#MHMM*$=|Mm+DUZZQVQ_Q_+`bQCKRzC D%(U^^U]]S(,&+{CKRJD ;oo,.##"&#%57KDKR\D 4hh,.##"&&+.57HI H44iA_`H44lJOH44lDVW]DKRNE :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OEKRrE =+EJJ

ENNTYT_T_`75#"&&+sEKRBF +EJJ

ENNS:8#"&&+
CFKRXF ?+EJJ

ENNS#"&97 MHMM*5|Ed$)JJ<>K
YFKRnF <0O)6#"'#"&&+ MHMM*57KMa$)JJ<UD
 !oFKRRG 8%+EMM5>>J6u}} a:E :?8H]_a "%)##"&&+%&: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K2SGKRxH 51u~~uzzJF"&#%yHKRHI 5/u~~uzzJ#"&DIIKRZI 8>%emm4#"&0%&=V[\^[IKRlI ;>%emm4#"&%&=V[\^mIKR|I :0U^^L3#&+"&-u}}ctRV>W.XY(*>FT}IKRTJ :'0U^^L<#&+"&-u}}ctRV>W.XY(*>FTUJKRnJ :0U^^L3#&+"&-u}}ctRV>W.XY(*>FToJKRFK :'0U^^L<#&+"&-u}}ctRV>W.XY(*>FTGKKR`K :/{{+ENNEJJV%&<jQ MHMM*5yB`a MHMM*57OQuvMHMM*57OQ{| "&#&+-.aKKRNL :. ,ENNEJJV%&<fM
 H446NPtu	 "%'"&#&+'.OLKRvL 51u~~uzzJF"&#wLKRFM 5/u~~uzzJ#"&DGMKRXM : ">#"& ',-YMKRjM = ">#"& ',-kMKR|M "U]]ENNEJJG #JJ#( 119>XY113EG\jpq	
}MKR\N U]]ENNEJJG #JJ#( 113EG\jpq

]NKRrN "U]]ENNEJJG #JJ#( 119>XY11+.%+-	
sNKRXO U]]ENNEJJG #JJ#( 11+.%+-
YOKRvO M4UZZU^^\&+(,/46wOKRBP L4UZZU^^\&+(,/46CPKRNP M4UZZU^^\&+(,/4OPKR^P M-ejj9%-]]-5]]&+/3 %X%=%=?Q%:P_PKRvP L-ejj9%-\\-5\\&+/3 %X%=%=%7%:179wPKRRQ M-ejj9%-\\-5]]&+/3 %X%=%=%7%:179SQKRnQ K )U]]ENNS&+/4 %X%=%=%7%:< %X%=%=zKkl$]X]]:%>%7%NP
oQKRTR E-/&+/4	6URKR^R E-/&+/4$X%=%=%7%K-2ZZM;=	>_RKRrR I

4UZZPUP^P^_'<&:&+!&/4$X%=%=%1%6@P@P?RT %X%=%=%7%:< %X%=%=zKkl$]X]]:%>%7%NPsRKRbS 9@6$UZZ@;%)!#"&
cSKRxS 9@)+EJJu~~V%&CPTU!#"&	ySKRLT  99>>00*!%..%--@> #11<A]kpq119>\fkfsfseuv
MTKRpT "$UZZ@;%*"#"&qTKRBU ")+EMM5>>J%&CPTU"#"&CUKRTU %!%..1'u~~F6 #!5==#4d2K"LM.!	
 ((."		

!UUKRLV $0U^^L5#"&	(MVKRVV 9 C

EMM5>>J,."3;=WVKRdV <+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eVKRRW <,+EJJu~~W\WbWbc#"&.3D H44lD`a H446OQbcH446OQ`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tA!*SWKRhX +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iXKRLY (*$U^^4*5==%..I%)"&=; MHMM*57IKab H446HJ\]H44iA_`MHMM*FGWkl	MYKRtY ($U]]ENNC#"&%)= 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!uYKRjZ %/$U]]ENNC#"&%)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kZKRZ[ ,($UZZ@#"&=?[[KRh[ .$UZZ@#"& 4=?Ai[KRx[ .$UZZ@ H44iA_`
 #"& 4=?%Ay[KR^\ .$UZZ@*5::u~~F H44iA_`  $#"& 4=?/A_\KRN] .$UZZ@#"&&+ 4=?	AO]KRb] .$UZZ@ H44iA_`
 #"&&+ 4=?)Ac]KRL^ .$U^^4*5::u~~F H44iA_` #"&&+ 4=?/AM^KR|^ %!!#"&$U[[%..A*5==%..I 445
7}^KRR_ %!!#"&$U[[1*5==%..I 445 H44lJ\abS_KRn_ 84 #!%**enn=1Ij).'	
o_KRT` ,    UZZ8;# "U`KRr` + )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+ s`KRJb +'( )ehh.A.A.R.RS0emmU^^\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$ _/ KbKRjc +'( )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" {= kcKRfe !0emmU^^\6u}}ekk7<~~G20#"&%) 4$ekk3Dt3L%MN!F $emmSd5N%OP')=6	 MHMM*5yB`a H446L/%JZJZ8[] H44o2EOOUM]M];^` %)I$ geKRpf  ! 0emmU^^\6u}}ekk7<~~G%&:;0 4##"&%)$ekk3Dt3L%MN!F MHMM*BCYPno H446L/%JZJZ8[] H44o2EOOUM]M];^` %)C! qfKRtg !0ennemm\6u}}ekkSXSaSab20 4##"&$ekk3Dt3L%MN!F MHMM*5yB`aH44o2EOOUM]M];^` H446GH MHMM*5|EWX %)? ugKRth %!"#$U]]ENNC#"&4 H44iA_inivivhxy
 7!<$(!+uhKRVi ($U]]ENNC#"& H44iA_inivivhxyH446OQb&46	 :$(+WiKRti %!3"#$U^^4*5==%..I#"&%)$emmSe%5P%QR!2 MHMM*?@,Pde 7$('+uiKR\j .$U[[%..A*5==%..I#"& H44iA_inivivhxy
 @B]jKRtj #"&+EJJ

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

S%&:L	OkKRbk &#"&+ENN;1%**ennM%&:K
 MHMM*5yB`jojwjwiyz	 !5ckKR@l (#"&+ENN;1%**ennM%&:M
 MHMM*5yB`jojwjwiyz	 !5AlKR^l 1#"&+ENN;1%**ennME
 MHMM*5yB`jojwjwiyzMHMM*FGIZ[ !5!_lKR@m '+EJJ

S%&:L#"&#&+
 MHMM*5yB`jojwjwiyzMHMM*YZ\hj~ #AmKRdm $ 2!!5$U^^UZZ@!#"&&7%8:emKR|m !0U^^L6uzz5>>R5##"& MHMM*CDiQop}mKRZn &"&!"&#$U[[%..A*5::u~~u{{S%&?K
 H44iA_`	 [nKRzn &",!"&#$U[[1*5::u~~u{{S%&?Q
 H44iA_`H44oGghH44oGdeH446OQij H446GH -{nKRho &"%!"&#$U^^4*5::u~~F%&?J
 H44iA_`	 ioKRHp &"'"&!#$U[[%..A*5::u~~F 4%&?L!()Ez!R
 H44iA_`	 #IpKRlp &"&!#"&$U[[%..A*5::u~~F%&?K!()Ey!Q 4
 H44iA_`	 #mpKRPq &"(!#"&$U^^4*5::u~~F 4%&?M
 H44iA_`	 !QqKRrq &"#!#"&$UZZ@*5::u~~F%&?H 4
 H44iA_`	 !sqKRTr ,!#"&$U[[%..A*5::u~~F 4%&<jI!()BJ!O
 H44iA_`	 UrKRtr $iinn44.!#"&$U[[1*5::u~~F 4%&?LH44iA_`H446FH\]H446MOvwH446JL`aH44noVurKRXs (!%**enn= "#5O7YsKRjs +!#"&$U[[%..A*5::u{{ENNS 4%&<iH
 H44iA_`	 ksKRHt +UZZ8<:B #%ItKRZt )'F:@8!5==#4d2K"LM.
[tKR|t .'F?E=	}tKRPu %!36$U^^U]]CO!!!#"&&8%9;QuKRnu 3!%**enn=D #!5==#4d2K"LM.
  j)."	
ouKRfv %!!#"&$U[[%..A*5==%..I45H44lJ\bcgvKR~v 0!#"&c ', "*5==9A H446NPtu H44iA_`b MHMM*GH,Xjkn'ovKRhw 0!#"&c ', "*5==9 4A
 H446NPtu H44iA_`b MHMM*GH,Xjkn-oiwKRXx %!!#"&&+%*$U^^U]]C*5==%..I MHMM*ABO2ENN;LN
 MHMM*5z;O 54-6YxKRFy %!#"'#"&&+%)u~~>*5==%..I446GyKRfy -! $("'#"&&+%*$U^^U]]C4 MHMM*5|ZPH44lDVWH446NPtuH44iA_`gyKRVz %!##"&&+%*>*5==%..I 444!6WzKRxz '#!#"&%* "*5==96 MHMM*57I>ZMHMM*57IK]^MHMM*57IKa+3|6MHMM*57PRc(-/yzKRh{ '##!#"&%* "*5==9;
=i{KR~{ '#!#"&%* "*5==96 MHMM*57IKa+3|6MHMM*57IK]^MHMM*57I>ZMHMM*57PRcd{KRl| '####"&#%* "*5==9;=m|KRH} '###"&%* "*5==96 MHMM*57IKa+3|6MHMM*57IK]^MHMM*57I>ZMHMM*57PRcdI}KRx} '##!#"&%* "*5==9;
=y}KRN~ !!!2+EMM5>>J6u}}ennU6u}}ennU!?u~~!^ !5#"&&+$( H44lJO#O~KRx~ #!4u~~>*5== g@K~U^^,<ceg -u}}cuSX>Y.Z[02FTY[ MHMM*5|]`f  wB  sB  CMHMM*5H^hmhvhvgxy  $#"&)y~KRb #/$U^^U]]C#"&cKRt )H!%..%--@ #-< !MM3E#@NNCU$A#  "v!uKRj@ 3r "%..%--@ #7,.4
 119>\]	a%k@KRZA P!%..%--@ #-= !MM3E#@NNCU$A#  "v[AKRJB 6P^!%..1'u~~F* #_"#BdY[ceptNuv,!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3'kKBKRZC  "%..%--@ #K!MM3Dv#>NNCT$?#  "v[CKRHD 2} ]e&9&9%;;!;@.B[\]
IDKR^D 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E#d0_DKR@F 1@} "%--0%--8$!#(#DDFuvw 113CEYgmn113C[^de113Lokqr11<A]kqr119>\jpq113Lokqr

AFKRrF 5D} "%--?%--G$!#(~/YZ[ 113CEYgmn113C[^de113Lokqr11<A]kqr119>\jpq113Lokqr

sFKRdG *9!%..%--@ #K!MM3Dt#<NNCT$=#  "v z24EGg!&UD
 $0./eGKRhH #!"_!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)"6iHKRnI #1!!%..%--@  3 3 ? ?N!5==#5u2M"NOQbpvy|
 113EG^_11*,N%+$25	8oIKR\J "1 !%**enn= # !5==$"MN!#BD !5==$"MN!#BD !5==$"MN!#EG

 11<ASafg
/]JKRTK *8!%..%--@ # 3 3 8 8$G!5==#5u2M"NOQbehUKKRtK  )(G.u}}ennejjY #!5==#5w2O"PQSdgj z24EGf!&EJJ 79;uKKRXL "$(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_#="YLKR^M !ZUZZ8M #B 3#_MKRDN +<:(U^^D #ENKRVN 9"#DTXY:(U^^D # ((.
 (((4
WNKRDO K-ennejjI!3ENN!C&+/4	6EOKRNO ;(

S #+ j).!	 j)$ j)'2
 j)(4)
"OOKRTP 6>#"&%)02UPKRdP %!$U]]ENNC#"&%)6 H44oG]^MHMM*5H^(-u~~u}}6UW H446OQb(..J-u}}cuSX>Y.Z[57HV[]ePKRNQ %,!-*5==%..I#"&.-u}}cuSX>Y.Z[%'EG 78OQKRjQ ,:='u~~F! # j)%
 j)&
 !5==#4d2K"LM. 11:?\]11:?ef11:?qr)
0 ((.
C)kQKRBS H-ennemmL7!/!1/4&+ %X%=%=y%?ACSKRTT I-ennemmL8!/!1&+/4 %X%=%=y%?A
UTKRhU -)&;,U^^U]]K'+*.%*&>%<>iUKRzU -)&;,U^^U]]K%)&>'+*..@-AC{UKRLV +'&9,UZZekkSXS^S^`e`j`jlqlzlz{#0U^^#L);EMM5>>)Z%)&< %'+*..>-?AMVKRdV -!+~.!!0$U^^UZZ@!#"&&2^ MHMM*5|ZPMHMM*FGWkl	eVKRJW ($'

ENNC#5ejj%..#Q%) %'+*..;_>KWKR\W 4+EMM5>>J6u}}ennU!#"&.  8==,., ??E,<,<=	?]WKRzW 6jju~~uzzJ#"& H44lDVW 1	3{WKRNX > )-/'XZOXKRVX > )-/'XZWXKR^X > )-/'XZ_XKRfX D*4UZZQVQ^Q^_(,&+gXKRvX 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wXKRVY =+EJJW\WbWbc$"'"%&FRWX!()LX]!^$%DPU^cd H44lJOH44lDVWH446FHZ[H446FHjkH44jBV(.0H44jB_(.0H44jBh(.0H44jBtuWYKRJZ ;

ENNEMMJA#"&!868KZKR\Z 5){{3EJJPUP[P[\%5'+*.#''+'+'+'+%)+]ZKRvZ 6jj0U^^L## ',"&02wZKRN[ 7kk+EJJu~~V#"&&+14O[KR`[ 7kk,.#$"'1/+->? H44lJOa[KR|[ 9||+EJJu~~W\WbWbc!"$%'%)#"& 3!9;}[KRV\  8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__,>.Z$]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78W\KRH^ 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\%"I^KRN_ 4hh,.;#"&"'+->?AO_KR`_ 9zz0%..$27--2G  H J'

EJJO'+*.#''+'+'+'+)-/a_KRz_ 6ww3EJJPUPZPZ\a\g\gh %'+*..3 $H$<$<>OQjk{_KRR` GG(U^^UZZQVQ\Q\]+ #-)+
S`KRh` (U^^UZZP,  #.
i`KRBa 7xx-'

ENNC'+*.#H$<$<$3$:+00aN<L0a+ac $MHMM*$=$3$:,1NN+<>	 $('+'+'+'+%)+CaKRpa 7xx%1-,UZZH!`&-.MZdfgYh&i'+*.%*',
.qaKRFb 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.GbKRzb 7xx%5-,U^^< 25::u~~ N!b&-.MZdfhYi&j $MHMM*$=|L#MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=~N (,*.%*','.{bKRbc  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ccKRVd 60,3EJJ

ENN[(-'+*.)-0%..$27--2G  H J $MHMM*$=?PRq,1LL>;WdKRtd 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udKRne 6%'

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

TYT_T_`%&9UK#"&"$%'!#ufKRFg 7 /(+ENNEJJ

S%&9TJ#"&	GgKR\g >+ENNEJJ

TYT_T_`%&9UK#"&"$%'!&+	-]gKRpg +ENNEJJ

TYT_T_`<"$%'#"&!#qgKRBh J||,,4U^^UZZQVQ[Q[\!&$X%=%=?WY}~$X%=%=yJhj
 '+(,+//:m>ChKR\h J||,,4U^^UZZQVQ[Q[\*.,:D+A(,!& %X%=%=?QShi$X%=%=?WY}~$X%=%=yJhj	 )-+/&*/:<N.O#R]hKR@i J||,,4U^^UZZQVQ[Q[\!&$X%=%=?WY}~$X%=%=yJhj '+(,+//:m>AiKRXi J||,,-ejj9!&&+(,$X%=%=?WY}~YiKRji I||++-ejj9!&&+(,$X%=%=?WY}~kiKR|i J||,,-ejj9!&&+(,$X%=%=?WY}~}iKRNj =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&OjKR\k J||,,-ennejjJ!.u~~uzz!J(,!&(,+//3$X%=%=?WY}~$X%=%=yJhj '+/@.A'D]kKRDl J||,,4U^^UZZP %>ennejj$Y!&(,+//3$X%=%=?WY}~$X%=%=yJhj$]X]]:%>@RS$]X]]:%>@RS '+/:m%>ElKRjl J||,,4U^^UZZP(,+/!&/3$X%=%=?WY}~$X%=%=yJhj '+/;n?klKRDm F4U^^UZZP(,+/!&.3&*'<>EmKRTm 8/+ENNEJJ

TYT_T_`2%)#"&UmKRdm 

EJJG:#"&emKRpm 7iinn""))+ENNEJJ

TYT_T_`1##"&#%*	qmKRDn ?

EJJG9##"&EnKRTn 9zz'

ENNEJJO#''+'+'+'+%*-UnKRfn  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	 .<!LW[W^W^.`9agnKRbo  #$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#$coKRjp >~~+EJJV1%**ennemm\#"& H446OQ`aH446OQ`aH446OQbc	 9;kpKRFq 8+EOOUZZY^YfYfg#"&&+203GqKRXq 8+EOOUZZY^YfYfg#"&&+203YqKRjq 8+EOOUZZY^YfYfg#"&&+203kqKR|q $$,.8"'#"&o(*;< 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}qKRhr 7$xx'

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

ENN['+*.)-#MHMM*$=?PRq,1MM?< $MHMM*$=?PRt05u||U]]>[]#MHMM*$=?PRq05u||U]]>[]MsKRls 7.?I3EJJ

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

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

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

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

ENN[ 9%++uzzSXS]S]_d_m_m n%)'+'+'+'+'+*.)-(%..$)?@#,ekk3Dq;Q-RS,.MO $MHMM*$=?PRq05u||U]]>[.68 $MHMM2Z$[$;=RT)uuKRlv 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#mvKR`w 60L6u{{EJJPUP^P^_0#"&!#awKRnw 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owKRVx :{{3EJJPUP]P]_d_j_jk %%*	,WxKR`x 7xx3EJJPUP]P]_d_j_jk %#''+'+'+'+%*	,axKRtx :{{'

ENNEMMR#''+'+'+'+%*,uxKRFy :{{'

ENNEMMR#''+'+'+'+%*,GyKRXy 8yy3EJJPUP]P]_d_j_jk %%*	,YyKRby 7xx3EJJPUP]P]^ %#''+'+'+'+%*	,cyKRvy 8 H+EJJG6uzz5>>R!?

ENN![#"&&+2H446NPtu MHMM*5yB`awyKR^z 5ii,./##"&&+#"'57H-X  8==,., ??E,<,<=	?
 MHMM*5|Z(-u}}oGMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oGMHMM*57GIj(.R`bMHMM*57GIm(.R`b_zKR\{ = !"##"'&+"&#7+->#$5u}}cu[`Fa6b$c$02N0689 H446NPtuH44iA_`MHMM*GH,XjkH&?ARS']{KRP| = !"#&+#"'#"&7+->#$5u}}cu[`Fa6b$c$02N0689 H446NPtuH44iA_`MHMM*GH,Xjk	'Q|KRB} G)+(,+/A;/4 %]X]]:%>@RTij$X%=%=zKkl %X%=%=?QSjk
C}KRl} ;L%4.8*d'

EJJO -ejj%** E'+*.)-&=#H$<$<>VX|} "STm}KRH~ ;L%4.8*d'

ENNC -ejj%** E'+*.)-&= $MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=?WX#MHMM*$=|L#MHMM*$=?PRtu#MHMM*$=?PRqr
 "S-;FWbc-d/fI~KRx~ ;L%4.8*d'

ENNC -ejj%** E'+*.)-&= $MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=?WX#MHMM*$=|L#MHMM*$=?PRtux "S-;FWbc-d+fy~KRd ;L%4.8*d'

ENNC -ejj%** E'+*.)-&= $MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=?WX#MHMM*$=|L#MHMM*$=?PRtux "S-;FWbc-d+feKRP@ ;L%4.8*d0%--u}}VZ1[\^'

ENNC -ejj%** E'+*.)-&= $MHMM*$=?QR#MHMM*$=?QR#MHMM*$=yI#MHMM*$=?WX#MHMM*$=|L#MHMM*$=?PRtux "S-;FWbc-d-fQ@KR~@ 7xx+EJJu~~W\WbWbc#"&&+1	@KRRA ?$&"9SAKR`A 9+EJJu~~W\WbWbc8!>6#"&aAKRrA <2+EJJu~~W\WbWbc%&@TR!()FSW!X$%>4P#"&H446NPtusAKRJB 6,+EOOUZZX]XfXfg#"&%)8!>6H446NPtu H44jBtu	KBKRjB 9/+EOOUZZX]XfXfg#"&%&@TR!()FSW!X$%>4PH446NPtuH44jBtukBKRFC <+EOOUZZX]XfXfg##"&&+9 H446NPtuH44iA_inivivhwxGCKRlC <+EOOUZZX]XfXfg##"&&+H446NPtuH44iA_inivivhwx :mCKRJD <+EOOUZZX]XfXfg##"&&+H446NPtuH44iA_inivivhwx :KDKRhD 9+EJJu~~W\WbWbc #"&&+3!9
iDKR~D ;oo+EJJu~~W\WbWbc#"&5DKRNE >+EJJu~~W\WbWbc#"&&+ H446NPtux 9	;OEKRbE :nn,.#"'#"& 4=57HIMHMM*5|Ee(-u}}oGMHMM*5yB`(-u}}oGcEKRDF 8+EJJu~~V1%**emmU^^\2 4#"&0EFKRVF <+EJJu~~W\WfWfg#"&&+ H446FHlmH446FHij	 2!()<!MOWFKRtF <+EJJu~~W\WfWfg#"&&+1!()<!M 4	6uFKRHG >+EJJu~~W\WbWbc!?u~~_d_j_j!k1!()<!M6#"&%) 4	6IGKR\G ;+EJJu~~W\WbWbc#"&&+1!()<!M3 H44+2$)JJ=2 !5#6]GKR@H >u~~>8:AHKRHH =+EJJu~~W\WbWbc##"&%*#ll&&H446NPtuMHMM*5yB`ntux 45IHKRfH ;+EJJu~~W\WbWbc%)#"&&+5H446NPtuMHMM)46H.bgboboap(.>;eNehgHKRDI 6

EMM5>>J%emmU^^D0#"&EIKRTI 8

EMM5>>J%ejj%--@2" H446NPtuH44iA_`MHMM*WXZfhz{	UIKRlI 

EMM5>>J%ejj%--@>" H446NPtuH44iA_`
mIKRBJ 5+EJJu~~V#"&&+"'/1CJKRRJ 6+EJJu~~V##"&0.0SJKR`J 9+EJJ

ENNS#"&3ACaJKRlJ A(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]z2OE[\
mJKRJK =(UZZQVQ\Q\]3113KMqr119>\]
KKKRbK =(UZZP3113KMqr119>\]'[\^jl~	
cKKR~K =(UZZQVQ\Q\]3113KMqr119>\]'[\^jl~	
KKRZL ?(UZZQVQ\Q\]3 #113KMqr119>\]
[LKRtL >(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]
uLKRPM =(UZZP3 113EF113EF113KMqr119>\]
QMKRnM <(UZZP3113KMqr119>\]'[\^jl~	
oMKRHN =(UZZQVQ\Q\]3113KMqr119>\]'[\^jl~	
INKRbN >(UZZP3113KMqr119>\]'[\^jl~	
cNKR|N <<(UZZQVQ\Q\]3 #113KMqr119>\]z2OE[\	
}NKRXO <<(UZZQVQ\Q\]3 113EF113EF113KMqr119>\]z2OE[\
YOKRvO >(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'
wOKRnP <+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oPKRnQ <+EJJ

ENNTYT_T_`4"$@)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)h)01NW\WgWg)hoQKRHR ;+EJJ

ENNTYT_T_`4"IRKRVR 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%WRKRJS <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KSKRtS ;$UZZRWRaRachcscstH4"H446NPtuH44iA_`MHMM*ab(*OQMHMM*GH,XjkuSKRRT 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;;#?>['STKRLU >

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

ENNS5"gUKRtU ;E+EJJ

ENNTYT_T_`3H446NPtu #$uUKRFV :D+EJJ

ENNTYT_T_`3H446NPtu #$GVKRXV 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YVKRBW 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CWKRjW 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kWKRRX ;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 #?$SXKRRY 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&,SYKRlZ ?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)mZKRd[ 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#	'e[KRt\ 5+EJJ

C1%**ejj%..Y/-"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!u\KRf] +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#)g]KRz^ ?+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{^KR^_ :D+EJJ

ENNTYT_T_`4H446NPtu #$__KRp_ =IP$U^^UZZ@*5::675H446NPtu MHMM*5|ZPH44iA_`H44lDVWMHMM*GH,Xjk	m #)$q_KRZ` 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[`KRPa 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QaKRRb ;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SbKRDc =+EJJ

ENNS7A#"&EcKRRc 7+EOOUZZX]XfXfg1!#"& H44nFVWH44noVScKRjc 8+EOOUZZX]XfXfg@>#"&kcKRxc G-ennejjI!3EJJ!O(,+//46ycKRDd ; "(*5" H44iA_`MHMM*5|QVWEdKRhd = "(*75" H44lM_efH446NPtu H44iA_`idKRDe 7$U^^U]]C*5::u{{EKKQVQ\Q\]1"
 H44lJ\bc	EeKR\e :$&4" MHMM*5yB`a	]eKRpe ;u~~>%ennemmD5!;3" MHMM*=>	Kij
qeKRFf >>%ennemmD8"% MHMM*=>	Kij
GfKR\f 5,+EJJu~~W\WfWfg6!5-##"&&+! H44lDXY H44iA[\H44oG]^ H446HJ\]]fKRRg 8+EOOUZZX]XfXfg20#"&!	SgKRfg 8!+EOOUZZX]XfXfg@>#"& H44iA[\_
`ggKR|g 8+EOOUZZX]XfXfg@>#"&&+}gKRNh 8.+EJJu~~W\WbWbc9%--X##"&"'&+H446NPtuH446NPz{
 3#4OhKRrh =+EJJu~~W\WbWbc9%--X##"&"'&+24shKRJi 7

EMM5>>J%emmU^^D"'#"&1KiKR\i 9 +EJJu~~W\WbWbc#"&&+5!;3
5]iKRri 80O20#"& MHMM*ABLRf(-u}}6FHsiKRNj (3gg25::u}}enn]&*$&*)-%7"8#;#;=UW{|OjKRhj 9+EJJu~~W\WbWbc!"$%'%)#"&.3&+35ijKRFk 9'+EJJu~~W\WbWbc!"$%'#"&.3&+<>GkKRdk )"#BwX\o^ ##((%**emmUZUcUcd 119>\]}57LM}5G
ekKRJl 97 <<// +EJJu~~V" H44lMRH446NPtuMHMM*=>@Y[jk	 7!8KlKRll <A <<22+EJJu~~V" H44lMRMHMM*=>@Y[jk
 78mlKRFm +EJJu~~V1%**emmU^^\%*#"&&+: 4 H44jBtuGmKRbm &gg25::u}}enn]&*$&*)-%79cmKRtm 7+EMM5>>J#"&&+.0umKRDn ;+EMM5>>J#"&&+.0EnKRTn !+ENNEMMJ#"&&+9<UnKRdn ;+EJJu~~W\WbWbc#"&&+.3%)!"$%'.0enKR@o G.(UZZP*.(,+//3+/D>;AoKRRo 7. <<--+EJJu~~V##"&!H44iA_` 23SoKRpo ;)

EJJG!#"&$5!;=qoKRBp 7')1%++uzz5::W\WeWef/%*#"&13CpKRTp ;#+%)+EJJ

TYT_T_`#"&.3>
@UpKRjp 3+EJJ

TYT_T_`#"& H446NPtuH44iA_`c .+-kpKRBq 3+EJJ

TYT_T_`#"&&+ H446NPtuH44iA_`c ./CqKR\q 4+EJJ

TYT_T_`##"& H446NPtuH44iA_`c 45]qKRvq 4+EJJ

TYT_T_`##"&&+ H446NPtuH44iA_`c 45wqKRVr 6+EJJ

ENNTYT_T_`#"&357WrKRbr 6+EJJ

ENNTYT_T_`#"&357crKRnr >"EKK#=>9 !Eu" MHMM*5|EabMHMM*5|EefMHMM*5yB`aMHMM*5~WorKRHs >"EKK#=>9 !Eu" MHMM*5|EabMHMM*5|EefMHMM*5yB`aMHMM*5~WIsKRbs 6+EJJ

ENNS1%**ejj%..Y#%*#"&0 H44jBtucsKR|s 7+EMM5>>J6u}}ennU6uzz5>>R#"&&+1	}sKRPt ;+EMM5>>J6u}}ennU6uzz5>>R#"&&+5 MHMM*57OQ{|QtKRnt ;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otKRju >0L9%..I!?!O#"& H44lDVdjk H446HJ`jojzjzi{|H446HJakpk{k{j|} 968kuKRJv 9E&8,6(D0%--27//427..$2H  I K
 $MHMM*$=?PRt,1OOU]]+KM#MHMM*$=?PRq,1KK%--+XZ	[ 4EJJu~~^ 9%//5::W\WaWachcqcq r'+*.)-%)-;"j !.#)$KvKRzv 90:u}},,>0%--1FGI'

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

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

EJJO%)'+*.)-	/wwKRJx 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!KxKR|x )':$U]]ENNC-enn=*5==9!3EMM!B#"& H44iA_`cd}xKRXy ,-YZ0.-emmU^^L # ((.'		
YyKR@z 8+5'400%--1FGI'

EJJO -ejj%** E'+*.)- $MHMM*$=?PRt,1MM5==+IU_a#MHMM*$=?PRq,1MM5==+IU_a	 .<FWbc-d#fAzKRdz )+ #B%'89;ezKRxz D7!%--@8 #	 yzKRL{ &D(U]]ENNTYT_T_`"#@TR #	 M{KR`{ 7&6.8u}}**d .'+*.)-0%..$27--2G  H J'

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

ENNTYT_T_`'by{KR`| 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	a|KRD} +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E}KRj} ::../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+
%)k}KR~~ ::..Yab / d*+ :(

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

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

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

S"#:qI: 11>?S11>CST11>CWX v.0I?[119>\]z24IJ
#cAKRhB --emmU^^L !#( # 119>\!& 024iBKRHC 6"457HI"' ',#"&,.24 H44iA_$)OOU]]#DFMHMM*57GIj(.R`bMHMM*57GIm(.R`bdICKRrC 6"40O6u}}ennU# ',"& $emmSd5N%OP$&  8==,., ??E,<,<=	? H44iA_$)OOU]]#DFHsCKRjD 1-emmU^^L #(#!!5==#4d2K"LM$&: 119>\!& 02	
kDKRTE 3-#"&&+.3"$%'+EJJu~~V!+-UEKRpE R!%--@113KMqr 119>\] z2NOagh'DE|Ugh	j !##(0`+aqEKR^F !99>>1199+U]]ENNEJJG'u~~F9z2I?]^z24DF_`'89;KM_kyz/0 2(	
_FKRJG !T!%--@ 113KMqr119>\]'DE|Ugh	j
 !##("#8&Qb!cKGKRnG !T!%--@ 113KMqr119>\]'DE|Ugh	j
 !##("#8&Qb!coGKRRH %X!%--@* #0#(f 113KMqr 11<ASagh119>\]`bSHKR@I -`&!%--@ 113KMqr119>\] 113EG]^113EGef'DE|Ugh	j ! #"#8V\]n/oAIKRrI -`)(U]]ENNS 113KMqr119>\]` + #"#8FnosIKRTJ /0UJKRbJ !5 ^!%..%--@20 # 119>\]113KMqrz2LBTUz2NOagh':;=VXgh

 "&1cJKRVK % b!%..%--@'F0?6 119>\]113KMqr':;=VXgh
 2)WKKRBL 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(CLKRTM  .o"#BWXgiNjk #!%..%--@!JJD 9NNCT$=
 "#
UMKRzM  .,-XY- #!%--0&('F0O
 119>\fkfsfseuw	
{MKR`N #'u~~F4:"$aNKRtN 'u~~F8"$uNKRDO KK(U]]ENNS1 z2LBa!&H
EOKR^O ZZ(U]]ENNS%bff- 113CEXbgbmbmano
_OKRvO ZZ(U]]ENNS%bff- 113CEXbgbmbmano
wOKRNP  #(#U]]ENNEJJG%bgg. 113CEUV113CE]^

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

 9mPKRJQ $"&[[U]]ENN;%bii5IKQKR\Q $[[U]]ENN;%bii5I]QKRlQ [[(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
mQKRXR  # "&"-emmU^^L%bgg.+ z24DF`az24DFVWz24DF^_z24DF\!&1z24DF`%+U__4EG
YRKRPS " #(#!%--@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
QSKRHT  #"#(-ejj%..I3EJJO0bff%4 z24DF`az24DFVWz24DF^_z24DF\!& 02z24DFa!& 02
ITKR@U $ #"#(-ejj%..I3EJJO9 z24DFVWz24DF^_
AUKRhU " ##(-ejj%..I3EJJO0bff%4 z24DF`az24DFVWz24DF^_z24DF\]z24DFabz24DF\]
iUKR`V $ #"#(-ejj%..I3EJJO9 z24DFVWz24DF^_
aVKRHW $  #"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
!!IWKRLX   	
 !  $ # )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
#MXKRLY " #(#UZZG.uzz5==%..Z_ZeZef6dS%bii0 z2I?]^113CEUV113CE]^ z24DF\!&1

MYKR~Y  1 (("'	 ((""'	 j).'	 '8907>S1
!YKRB[ -UZZD #>C[KRR[  !%..1'u~~F1 #"& z2I?]glgtgtfvx
S[KRx[ )!%**enn=  #:8 113Lo^113LN_`113Lo^
 z2I?]glgtgtfvx
y[KRf\ ,!%**enn= #=;C	g\KRz\ "0!%--@ 31 z2I?]glgtgtfvx
{\KRZ] .'CDlThi

[]KRp] (UZZ8 #97q]KRB^ UZZG"5==%..A-j).'	
C^KRb^ (U]]ENNTYT_T_`<U]]ENN\a\g\gh: ##(j).u7	
c^KRH_ )
 ;(G #j).u7	
I_KRn_ %6(U]]ENNS #j).u7	
o_KRN` '8(U]]ENNS #j).u7	
O`KRn` /!%--@ #o`KR~` @1(U^^U]]S.uzz5==%..Y ##(`KRVa  U]]ENNEJJG #7	WaKRja   U]]ENNEJJG"5==%..A7 113EG]^113EGef113EG^_	
kaKRHb   U]]ENN;"5==%..A #7
IbKR^b  U]]ENNEJJG"5==%..A #(#7	_bKRrb  U]]ENNEJJG"5==%..A #(#7	sbKRFc "#!%--@7 j)."		
GcKRnc "#!%--@"#?iP j)."		
ocKRtF| KRXd 			!	! !D. " z24E8!&H
		D. " z24E9%+U]]O#-/ z24E;%+U]]O#-/
 z24E8%+U]]O#-/
 z24E8%+U]]O#-/ z24E8%*ELL%--3PR z24E;%*ELL%--3PR-
D.X "!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
 YD.Z " !5==#5u2M"NO!v7 u~~t45	
 z24E;%*ELL%--3PR z24E8%*ELL%--3PR z24E;%+U]]O#-/ z24E8%+U]]O#-/
[D.N "!%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#-/#
	OD.D  ED.L   11>?S11>CST11>CWX	
	MD.` ! 11>?S11>CST11>CWX	
	aD.t " 'ab%*, 'KL%#% 'KL%+- 11<A[\'KL%9; 'DE|Ugh11>?S#
uD.b ' 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/
	cD.^ % 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
	!_D.b & 'ab%*, 'OP%3I
 'OP%#% 'OP%+- 'OP%9; 'DE|Ugh11>?S)
	cD.X " '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+
	YD.P	 ""/ '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+
Q	D.J
 <<"", '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+
K
D.F " 11>?S11>CST11>CWX	
	GD.Z $ 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_ `%+-+
[D.T $"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<A[!&ejj%++u{{TYT_T_ `%+-)
	UD.N $ 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%+-
OD.x $"3 11>?S11>CST 11<Aa!&ekk5;; G%+- 11<AR!&ekk5;; G%+- 11<A[!&ekk5;; G%+-
	yD.b $"4cD.l *11%*,
mD.~ D.F  GD.N  OD.V ("' z2LB^_z2LBbcz2I?]^z2NOT
WD.n ("' z2LB^_z2LBbcz2I?]^z2NOT
oD.F $"3GD.P #QD.Z %
 11<A[\	
	[D.n ! 11<AWY
oD.~ " %u~~t&<=?z24E8#1v!&%2B2B CE z24E;#1v!&!1!1 24 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#-/-
	D.~ "!%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#-/ z24E;#1v!&!1!1 24%
	D.v "'wD.~ " D.J   11<AWX11<AYZ	]KD.\ ")]D.d "%u~~t&<=?z24E8!&u}} >E#-/
 z24E8!& 0fF z24E;!&u}} =U z24E;%*!&u}} =S 113D8%+!&*F'
	eD.^ "  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
!_D.b "#cD.j "kD.r ""%u}}d',~~t',}}d'< = ?
 j)+<2$bu7H7H)IMGMMZaLb)bd j)+</$bu7H7H)IMGMMZaLb)bd j)+</$bu7H7H)IMGMMZaLb)bd
sD.^ " _D.f " z24E;%*ELL%--3PR z24E8%*ELL%--3PR
gD.@ "!AD.H " z24E8!&1 z24E;%*ELL%--3PR z24E8%*ELL%--3PR
ID.h " iD.r "!sD.~ " j)+<2u}}emmTV
	D.R " SD.Z "$[D.d "!eD.n "$oD.x "$yD.B "!CD.L ""MD.V "%u~~t',}}d'< = ? z2*8!&/
WD.n ""%u}}d&;<> z24E;!& >*V z24E8!& >*V
	oD.J "$$"0	KD.V "$$"0	WD.b "$$"0	cD.n "%u~~t&<=?z24E;%*ELL%--3P#-/
	
oD.D "!ED.L "!%u~~t&<=?z24E;%*ELL%--3P#-/
	
MD.b " %u~~t&<=?z24E;!&u}} =?
		cD.v %wD.B '".CD.L "&MD.T "UD.\ "$]D.d " eD.l "& z24E;!&u}} =?
	mD.@ "! *ENNCTPU<V+WX*,N%+- *ENNCTPU<V+WX*,L%+-	
AD.\ "!%uzz4&89;z24E;!&u}} =? 113D8!&0

	]D.| "#((-"%u}}d',',~~t'= > @
 z24E;!&%-- @B z24E8!&eoou}} MO
}D.d "  z24E;!&!&!01

eD.z "(-" z24E;!&!&!01
{D.V "#WD.^ "%u~~t&<=? z24E8!& 0fF z24E;!&u}} >E#-/ z24E8!&u}} >E#-/
	_D.D  " %u~~t',}}d'< = ? z24E8!&0
E D.\  " %u}}d&;<>z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
= z24E8!& 02 z24E8%*EJJ<A
	] D.H! #".I!D.R! " u~~t45!5;;A0F"GH!#BD
 z24E8%*ELL%--3P#+-
 z24E8!& 13

S!D.|! ""%uennd&STV z2LB\fkfufuewxz24E8!&u}} =? z24E;%+U\\5==4QS

	}!D.\" "!5??CU4O"PQ!#ESY[
 z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
=	
]"D.B# " !5??CU4O"PQ!#ESY[
 z24E;%*ELL%--3P$,$:
= z24E8%*ELL%--3P$,$:
=	
C#D.h# "!i#D.t# #'".	u#D.@$ #".	A$D.R$ "!S$D.`$ +7'LM%*, 'LM%9; 'LM%3I 'LM'(* 'LM%+-!
a$D.P% "".Q%D.Z% "'3[%D.d% %1'LM%*, 'LM%9; 'LM%#% 'LM%+- 'LM')+ 'LM'-/ 'LM'(* 11<A[\'DE|Ugh1
e%D.`& "!-!MM3E#@NNCU$A#  "v	a&D.z& "&2{&D.D' ".E'D.L' (4 z2LBS!& 0eE
	M'D.`' !-a'D.j' /;k'D.t' #/ 11<ARS
	u'D.D( (4E(D.N( )'".	O(D.Z( .:[(D.b( "#/c(D.j( "".k(D.t( "#/u(D.~( "".!5==#5u2M"NO!$'	(D.P) "".!MM3Dv#>NNCT$?#  "v	Q)D.j) %#".	k)D.v) %1".	w)D.B* "&2C*D.J* %1K*D.R* 1=S*D.Z* &2[*D.b* ,8c*D.j* 2>k*D.r* &2  #( ((,8R`f
s*D.R+ (4 S+D.`+ "(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%*$,$:
	=
a+D.R, "(4S,D.Z, "(4[,D.h, #$(#'!5;;A0F"GH"$=?
 z2+B!&%2B2B CE
i,D.L- #!M-D.T- #'U-D.\- #". 'NOQ]_qr
]-D.l- ##/ 'VWYegyz
m-D.|- #&}-D.D. #'E.D.L. #$ z24FH]^11:?_`	
	M.D.`. #"4$(#' j)<9S%:J:JL ((,8I)v ((,8X)v
a.D.V/ #"2$(#' 113EG\]
W/D.n/ #"2$(#' 113EG\]
o/D.F0 #G0D.N0 #' 113EG\]z24F?!&%2B2B CE z24F?!&%2B2B CE z24FB!&%2B2B CE
O0D.r0 #% 11<AR`e!&%2B2B CE11<Aaot!&%2B2B CE	

s0D.H1 &I1D.P1 #(#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:?_`'
Q1D.L2 # #(M2D.V2 # #(W2D.`2 #  .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
a2D.P3 #11+?!&/
	Q3D.d3 #e3D.l3 #m3D.t3 #%#( z2+BD
	
u3D.J4 #!#(K4D.T4 #"U4D.\4 ##]4D.d4 ## 113EG\]11:?_`z2+BD	
e4D.|4 #}4D.D5 #E5D.L5 #'M5D.T5 "'U5D.\5 #&]5D.d5 #'e5D.l5 #m5D.t5 ##11<AYZ
u5D.B6 ##11<AYZ
C6D.P6 #$(#' ((,8R) ((,8I)v ((,8X)v
Q6D.F7 #G7D.N7 #%O7D.V7 #!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W7D.~8 #%z2LBS!& 1uFz2LBb!& 1uFz24F2!& 13 z24F?!&0
8D.^9 # 
 11<AR!&EC 11<Aa!&EC	
	_9D.|9 #$(#'!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	
- }9D.~: #'$(#' ((,8R) ((,8I)v ((,8X)v
:D.z; #{;D.B< # z2LBS!& 0eEz2LBb!& 0eE	
C<D.^< #% 11<AYZ
_<D.n< #% 11<AYZ
o<D.~< !<D.F= 1= z2LBS!&EC	
G=D.`= #!#'a=D.p= #+#'q=D.@> "%$ #(A>D.P> "!  #(Q>D.`> "!  #('[\^jl~

a>D.v> "!  #('[\^jl~

w>D.L? #$#!"6tD 113EG\]11:?_`
		M?D.`? #"! 113EG\]11:?_`
a?D.r? "#" #(s?D.B@ ""! #(C@D.R@ "!  #(S@D.b@ "  #('[\^jl~

c@D.x@ "!  #('[\^jl~

y@D.NA ""! #('[\^jl~

OAD.dA ""! #(eAD.tA "#" #(uAD.DB "$# #(EBD.TB !UBD.bB &"'cBD.lB &"'mBD.vB &"'wBD.@C &(U]]ENNS 'OPR`bqr'OPR`brs'OPR`bvw	
ACD.XC &"1(U]]ENNS 'OPR`bqr'OPR`brs'OPR`bvw11<AST
YCD.tC "."'	uCD.@D  ,ADD.HD !-IDD.PD (QDD.XD  11<AYZ
YDD.hD !iDD.pD (qDD.xD " yDD.@E +AED.HE &IED.PE "#%u~~t',}}d'< = ?QED.\E "]ED.dE  eED.lE $mED.tE )uED.|E  ,"'}ED.JF &KFD.TF "11<AYZ
UFD.bF "cFD.jF %kFD.rF #sFD.zF  {FD.BG "CGD.JG "KGD.RG " 11<AYZ
SGD.bG "!"ATZ^_cGD.lG '!"AU[_`	mGD.xG (4"'yGD.BH !-z2LBS%*EMM3CEz2LBb%*EMM3CE
	CHD.VH #WHD.^H "#%u~~t',}}d'< = ?_HD.jH !kHD.rH "sHD.zH ""'{HD.DI #EID.LI &MID.TI  "'UID.^I !"'_ID.hI !"'iID.rI #sID.zI #",{ID.DJ ( 11<AWX11<ARS	
	EJD.XJ "YJD.`J "aJD.hJ !"7E"' 11<AR\a\k\kmrm}m}[~

iJD.~J  !"7E"' 11<AR\a\k\kmrm}m}[~

JD.TK %UKD.\K ]KD.dK !.$GeKD.nK "oKD.vK 'wKD.@L %ALD.HL  ILD.PL #QLD.XL " 11<AYZ
YLD.hL %iLD.pL "qLD.~L  ((*:<O}&
	LD.RM  !"@N ((*:<LN((*:<TV	
	SMD.jM  !"@N ((*:<LN((*:<TV	
	kMD.BN  ((*:<O}&
	CND.VN ) j)+;*, j)+;=TVj)+;=VXj)+;=UWj)+;=UWj)+;13 z24DFVW#
WND.DO  !"3DA ((*:<LN((*:<TV	
EOD.^O  ((*:<LN((*:<TV j)+;=S') j)+;+')
	_OD.HP $IPD.PP  11<Lz24DFVWj)+;=UW j)+;=S( j)+;+( j)?<P(
	QPD.@Q " 11<L
	AQD.RQ # 11<L
	SQD.dQ '"'eQD.nQ  # 11<L((*:<LN((*:<TV j)+;=Su79
oQD.TR  ((*:<LN((*:<TV j)+;=SU	
	URD.rR $"'sRD.BS  11<ART
CSD.PS !QSD.XS   #(YSD.nS !'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'EFVpq'DE|Ugh1
oSD.jT &'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'JK\[uv'DE|Ugh1
kTD.fU !P 'QR%35 'BC\Sop'BC^Ude'BC^Uef'BC^Uij

	gUD.FV  z2NDTUz2NDXYz2NOT	
	GVD.ZV %'JK%*, 'JK%9; 'JK%#% 'JK%+- 'JK')+ 'JK'-/ 'JK'(* 'IJLZtu'DE|Ugh1
[VD.VW !-'RS%*, 'RS%9; 'RS')+ 'RS'-/ 'RS'(* 'RS%35 'DE|Ugh'
WWD.JX )'RS%*, 'RS%9; 'RS')+ 'RS'-/ 'RS'(* 'RS%35 'DE|Ugh'
KXD.|X $}XD.DY $EYD.LY %MYD.ZY '11<AYZ
[YD.hY !L11<AYgmn
	iYD.xY ( 11<ARS 11<AYZ]	
yYD.NZ & 11<ARS
	OZD.`Z % 11<ARS11<AYZ
		aZD.tZ & 11<ARSV	uZD.J[ $K[D.X[   ((,8I
	Y[D.l[ ! ((,8I
	m[D.@\ +A\D.J\ ##11 1 }$)L\rZN-K\L*Nlj_.MlN\L\\ +P|z">N/O"|P$)cEbZN-KPRPbPbrEc (-k"B1OTVTjTj2k %*eUrj_.MRTRdRdUe (JLbJr=,IrLJ*Nlj_.MlN'4K}8J"}K %;]%;rrww?Q?QR[?\%;] ,@b,@bBGGDVDVW`Dar,@b  /;ell5.A  >C<5<<X]K^ 
:>4 >?$t ?g MNPckeJNK]bs   P5\X2Q\X2Q\X7Q"\X7R\X<R\X<R\YR/\YR=\YS
\YS\YS(\YS5\YT\YT\YT \YT0\YT=\YU\YU\YU-\YU:#\YV\YV+#\Y$W\Y$