§
    ž²ÅjL ã            -       ófb  — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
 d dlZd dlmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZ d d	lmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d
l&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z1 ej2        j3        Z3ej4         5                    ddd¦  «        Z6d„ Z7de fd„Z8d„ Z9d„ Z: e7e3j;        e3j<        g¦  «         e+¦   «         dddej=        ddfd„¦   «         ¦   «         Z> e7e3j?        j@        e3j?        jA        g¦  «         e+¦   «         d„ ¦   «         ¦   «         ZB e7e3jC        j@        e3jC        jA        g¦  «         e+¦   «         ddœd„¦   «         ¦   «         ZC e7e3jD        ¦  «         e+¦   «         d„ ¦   «         ¦   «         ZD e7e3jE        j@        e3jE        jA        e3jF        j@        e3jF        jA        g¦  «         e+dd¦  «        d„ ¦   «         ¦   «         ZG e7e3jH        j@        e3jH        jA        g¦  «         e+¦   «         d„ ¦   «         ¦   «         ZHd „ ZI e7e3jJ        j@        e3jJ        jA        g¦  «         e+¦   «         d!„ ¦   «         ¦   «         ZK e7e3jL        j@        e3jL        jA        g¦  «         e+¦   «         d"„ ¦   «         ¦   «         ZM e7e3jN        jO        ¦  «        dd#œd$„¦   «         ZP e7e3jN        j@        ¦  «        ejQ        dddd%œd&„¦   «         ZR e7e3jS        j@        e3jS        jA        g¦  «         e+¦   «         ejQ        dddd%œd'„¦   «         ¦   «         ZT e7e3jS        jU        e3jS        jV        g¦  «         e+¦   «         ejQ        dddd%œd(„¦   «         ¦   «         ZW e7e3jX        j@        e3jX        jA        g¦  «         e+¦   «         ddddd%œd)„¦   «         ¦   «         ZY e7e3jZ        j@        e3jZ        jA        g¦  «         e+¦   «         d*„ ¦   «         ¦   «         Z[ e7e3j\        j@        ¦  «        �dûd+„¦   «         Z]d,„ Z^ e7e3j_        j@        ¦  «        d-„ ¦   «         Z` e7e3ja        ¦  «        	 	 	 �düd.ed/ed0ed1ee         d2eeb         d3eejc                 fd4„¦   «         Zd e7e3je        ¦  «        	 �dýd5ed6ed7ed3eejc                 fd8„¦   «         Zf e7e3jg        ¦  «        d9d9dd:œd.ed5ed6ed7ed3eejc                 f
d;„¦   «         Zh e7e3ji        ¦  «        	 	 	 	 	 	 	 �dþd<ej        d=ej        d1ee         d>ee         d3eejc                 d?ejd@ekdAekdBejfdC„¦   «         Zl e7e3jm        j@        ¦  «        dDdEœdFedGekdHedIej        dJebdKejdLefdM„¦   «         Zn e7e3jo        j@        ¦  «        dDdEœdFedGekdHedIej        dJebdKejdLefdN„¦   «         Zp e+¦   «          e7e3jq        j@        ¦  «        dO„ ¦   «         ¦   «         Zr e7e3js        j@        ¦  «        dddd dddPœdQedJebdRee         dee         dSee         dTekdUejdLefdV„¦   «         Zt e7e3ju        j@        e3ju        jv        g¦  «         e+¦   «         dW„ ¦   «         ¦   «         Zw e7e3ju        jx        ¦  «        �dûdX„¦   «         Zy e7e3jz        j@        e3jz        jv        g¦  «         e+¦   «         dY„ ¦   «         ¦   «         Z{ e7e3jz        jx        ¦  «        �dûdZ„¦   «         Z| e7e3j}        j@        ¦  «        d[„ ¦   «         Z~ e7e3j}        jA        ¦  «        d\„ ¦   «         Z e7e3j€        j@        ¦  «        d]„ ¦   «         Z� e7e3j€        j‚        ¦  «        d^„ ¦   «         Zƒ e7e3j„        j@        ¦  «        d_„ ¦   «         Z… e7e3j†        j@        ¦  «        dddddd`œda„¦   «         Z‡ e7e3jˆ        j@        ¦  «        �dÿdb„¦   «         Zˆ e7e3j‰        j@        ¦  «        �düdc„¦   «         ZŠ e7e3j‹        j@        ¦  «        �dÿdd„¦   «         Z‹ e7e3jŒ        j@        ¦  «        de„ ¦   «         Z� e7e3jŽ        j‚        ¦  «        df„ ¦   «         Z�dFedgebfdh„Z�dFediedjebfdk„Z‘	 �d dledgebdmejfdn„Z’�ddiedgebdoebfdp„Z“diedqedrejdgebfds„Z”	 �dduebdted.edvebfdw„Z•dxebfdy„Z– e7e3j—        j@        e3j—        j˜        g¦  «         e+dzd{¦  «        �ddiedxebd}ejfd~„¦   «         ¦   «         Z™ e7e3jš        j@        e3j›        jA        g¦  «         e+¦   «         d.edLefd„¦   «         ¦   «         Zœ e7e3j�        g¦  «         e+dzd{¦  «        d.efd€„¦   «         ¦   «         Zžd�edLefd‚„ZŸ e7e3j         ¦  «         e+¦   «         dFediedƒejdLefd„„¦   «         ¦   «         Z  e7e3j¡        ¦  «         e+¦   «         �dûdFediedƒejdLefd…„¦   «         ¦   «         Z¡ e7e3j¢        ¦  «         e+¦   «         �dûdFedƒejdLefd†„¦   «         ¦   «         Z¢ e7e3j£        ¦  «         e+¦   «         �dûdFedƒejdLefd‡„¦   «         ¦   «         Z£ e7e3j¤        j@        ¦  «        �ddiedƒejdˆejfd‰„¦   «         Z¤ e7e3j¥        j@        e3j¥        jA        g¦  «         e+¦   «         d.edŠedLefd‹„¦   «         ¦   «         Z¥ e7e3j¦        j@        ¦  «        �dûdiedˆejfdŒ„¦   «         Z§ e7e3j¨        j@        e3j¨        jA        g¦  «         e+d�dŽd�¦  «        ddd�œdFed‘ejdˆejdLe	eeef         fd’„¦   «         ¦   «         Z© e7e3jª        j@        e3jª        jA        g¦  «         e+¦   «         dd“œd�edŽedqed‘ejdLef
d”„¦   «         ¦   «         Z« e7e3j¬        j@        e3j¬        jA        g¦  «         e+d•d|d–¦  «        dDd—œdied˜ejdLe	eeef         fd™„¦   «         ¦   «         Z­ e7e3j®        j@        e3j®        jA        g¦  «         e+dšdŽd�¦  «        dDdd›œdied˜ejdˆejdLe	eeef         fdœ„¦   «         ¦   «         Z¯ e7e3j°        j@        e3j°        jA        g¦  «         e+¦   «         dDdd�œdšedŽedqedrejdžejdLefdŸ„¦   «         ¦   «         Z± e7e3j²        ¦  «         e+d•d|d–¦  «        	 	 �ddšedŽed ejd¡ejdLe	eeef         f
d¢„¦   «         ¦   «         Z³d£ebdLe	ejejf         fd¤„Z´ e7e3jµ        j@        e3jµ        jA        g¦  «         e+d¥d¦¦  «        �ddied£ebdLe	eef         fd¨„¦   «         ¦   «         Z¶ e7e3j·        j@        e3j·        j¸        g¦  «         e+d©dªdšdŽ¦  «        diedLe	eeeef         fd«„¦   «         ¦   «         Z· e7e3j¹        j@        ¦  «        	 	 	 �ddied¬ejd­ejd®eeb         fd¯„¦   «         Zºd°ed±edLe	eek         eek         f         fd²„Z»d°ed±edjeeb         dLe	eef         fd³„Z¼d.ed´edLejfdµ„Z½ e7e3j¾        ¦  «        dDdddddd¶œdiedqedrejdˆejdtee         dšee         dŽee         d�ee         dLe	eeeef         fd·„¦   «         Z¾ e7e3j¿        j@        e3j¿        jA        g¦  «        dDddd¸œdiedqedƒejdrejd¹ejdºee         dLefd»„¦   «         ZÀ e7e3jÁ        ¦  «         e+d¼d½dD¬¾¦  «        	 	 	 �ddFediedƒejd¿ejd¹ejdLe	eef         fdÀ„¦   «         ¦   «         ZÂ e7e3jÃ        j@        ¦  «        dÁ„ ¦   «         ZÄ e7e3jÅ        ¦  «         e+¦   «         	 	 �d	d.edŠed´edrejd¿ejdLefdÂ„¦   «         ¦   «         ZÅdÃ„ ZÆdÄ„ ZÇ e7e3jÈ        ¦  «         e+¦   «         dÅ„ ¦   «         ¦   «         ZÉ e7e3jÊ        ¦  «         e+¦   «         dÆ„ ¦   «         ¦   «         ZËdÇ„ ZÌ e7e3jÍ        ¦  «         e+dÈ¦  «        dÉ„ ¦   «         ¦   «         ZÎ e7e3jÏ        ¦  «         e+dÈ¦  «        dÊ„ ¦   «         ¦   «         ZÐdË„ ZÑ e7e3jÒ        ¦  «         e+¦   «         dÌ„ ¦   «         ¦   «         ZÓ e7e3jÔ        ¦  «         e+¦   «         dÍ„ ¦   «         ¦   «         ZÕ e7e3jÖ        j@        e3jÖ        j×        e3jØ        j@        e3jØ        j×        g¦  «         e+dÈ¦  «        dÎ„ ¦   «         ¦   «         ZÙdÏ„ ZÚ e7e3jÛ        ¦  «         e+¦   «         dÐ„ ¦   «         ¦   «         ZÜ e7e3jÝ        ¦  «         e+¦   «         dÑ„ ¦   «         ¦   «         ZÞ e7e3jß        j@        e3jß        j×        e3jà        j@        e3jà        j×        g¦  «         e+dÈ¦  «        dÒ„ ¦   «         ¦   «         Zá e7e3jâ        ¦  «         e+¦   «         �d
dFedÔeãdLefdÕ„¦   «         ¦   «         Zä e7e3jå        ¦  «         e+¦   «         dÖedFedÔeãd×edLef
dØ„¦   «         ¦   «         Zæ e7e3jç        j@        e3jç        jA        g¦  «         e+¦   «         d9d9dÙœdÚ„¦   «         ¦   «         Zè e7e3jé        j@        e3jé        jA        g¦  «         e+¦   «         dd#œdÛ„¦   «         ¦   «         Zê e7e3jë        jã        ¦  «        �ddÝ„¦   «         Zì e7e3jé        jí        ¦  «        �ddÞ„¦   «         Zî e7e3jï        j@        e3jï        jA        g¦  «         e+¦   «         �dýdß„¦   «         ¦   «         Zð e7e3jñ        j@        ¦  «        	 	 �ddà„¦   «         Zò e7e3jó        ¦  «         e+¦   «         dá„ ¦   «         ¦   «         Zôdâ„ Zõ�ddä„Zö	 �dýdåej        d/ej        dæe
eek         ekf         dçe
eek         ekf         dèe
eek         ekf         déejdêekdëee
eek         ekf                  fdì„Z÷dí„ Zø e7e3jù        j@        ¦  «        dåej        d/ej        d1eej                 dîeej                 dïeej                 dðejdñeãdòeãfdó„¦   «         Zú e7e3jû        j@        ¦  «        dåej        d/ej        d1ej        dæeek         dçeek         dèeek         déejdëeek         dêekfdô„¦   «         Züejý        jþ        �rùej4         5                    dõdd¦  «        Zÿ e7ej2        �j         �j        j@        ¦  «        dö„ ¦   «         �Z e7ej2        �j         �j        j@        ¦  «        d÷„ ¦   «         �Zejý        �j        rCej4         5                    dødd¦  «        �Z e7ej2        �j        �j        ¦  «        dù„ ¦   «         �Z	ej4         5                    dúdd¦  «        �Z
 e7ej2        �j        �j        j@        ¦  «        dû„ ¦   «         �Z e7ej2        �j        �j        j@        ¦  «         e7ej2        �j        �j        �j        ¦  «        dü„ ¦   «         ¦   «         �Z e7ej2        �j        �j        j@        ¦  «         e7ej2        �j        �j        j@        ¦  «        dý„ ¦   «         ¦   «         �Zej4         5                    dþdd¦  «        �Z e7ej2        �j        �j        ¦  «        	 	 	 	 �d�d„¦   «         �Z�d„ �Z e7e3�j        j@        ¦  «        	 	 	 	 	 �d�d„¦   «         �Z�d„ �Z e7e3�j        j@        ¦  «        �d„ ¦   «         �Z e7e3�j        ¦  «         e+¦   «         	 	 	 	 	 �d�d„¦   «         ¦   «         �Z e7e3�j         ¦  «         e+dÈ¦  «        �d„ ¦   «         ¦   «         �Z! e7e3�j"        j@        ¦  «        �d	„ ¦   «         �Z# e7e3�j$        j@        ¦  «        �d
„ ¦   «         �Z% e7e3�j&        j@        ¦  «        �d„ ¦   «         �Z' e7e3�j(        ¦  «         e+dÈ¦  «        �d„ ¦   «         ¦   «         �Z)�dedoebf�d„�Z* e7e3�j+        ¦  «         e+dºd¦  «        �d„ ¦   «         ¦   «         �Z, e7e3�j-        ¦  «         e+dÈ¦  «        �d„ ¦   «         ¦   «         �Z. e7e3�j/        ¦  «         e+dºd¦  «        �d„ ¦   «         ¦   «         �Z0 e7e3�j1        ¦  «         e+dÈ¦  «        �d„ ¦   «         ¦   «         �Z2 e7e3�j3        j        ¦  «        �dý�d„¦   «         �Z4 e7e3�j5        j@        e3�j5        jA        g¦  «         e+¦   «         �d„ ¦   «         ¦   «         �Z6 e7e3�j7        j@        e3�j7        jA        g¦  «         e+¦   «         d�dœ�dek�dekf�d„¦   «         ¦   «         �Z7 e7e3�j8        j        e3�j9        j        g¦  «        �d„ ¦   «         �Z: e7e3�j;        j@        g¦  «        �d„ ¦   «         �Z< e7e3�j=        j@        e3�j=        jA        g¦  «         e+¦   «         d9d9dÙœ�d„¦   «         ¦   «         �Z> e7e3�j?        j@        e3�j@        j@        g¦  «        dd�dœ�d„¦   «         �ZA e7e3�jB        j@        g¦  «        dd�dœ�d„¦   «         �ZC e7e3�jD        g¦  «         e+¦   «         �d„ ¦   «         ¦   «         �ZE e7e3�jF        g¦  «        �d „ ¦   «         �ZG e7e3�jH        g¦  «        �d!„ ¦   «         �ZI e7e3�jJ        g¦  «        �d"„ ¦   «         �ZK e7e3�jL        g¦  «        �d#„ ¦   «         �ZM e7e3�jN        g¦  «        �d$„ ¦   «         �ZO e7e3�jP        j@        ¦  «        �d%„ ¦   «         �ZQ e7e3�jR        ¦  «         e+¦   «         �d&„ ¦   «         ¦   «         �ZS e7e3�jT        j@        ¦  «        	 	 	 	 	 	 �d�d'„¦   «         �ZU e7e3�jV        j@        ¦  «        �d(„ ¦   «         �ZW�d �d)„�ZX e7e3�jY        j@        e3�jY        jA        g¦  «         e+¦   «         �dd�d*œ�d+„¦   «         ¦   «         �ZZ e7e3�j[        j@        e3�j\        j@        g¦  «        �d,„ ¦   «         �Z] e7e3�j[        jx        e3�j[        �j^        e3�j\        jx        e3�j\        �j^        e3�j_        j@        e3�j_        �j`        g¦  «         e+dd¦  «        �d�d-„¦   «         ¦   «         �Za e7e3�jb        j@        ¦  «        �d.„ ¦   «         �Zc e7e3�jd        j@        ¦  «        �d/„ ¦   «         �Ze e7e3�jf        j@        ¦  «        �d0„ ¦   «         �Zg e7e3�jh        �ji        e3�jj        �ji        e3�jh        j        e3�jj        j        e3�jk        j@        e3�jl        j@        e3�jm        j@        g¦  «        �d1„ ¦   «         �Zn e7e3�jo        �ji        e3�jp        �ji        e3�jo        j        e3�jp        j        g¦  «        �d�d2„¦   «         �Zq e7e3�jr        j@        e3�jr        �js        g¦  «        �d3„ ¦   «         �Zt�d4„ �Zu e7e3�jv        j        e3�jv        �ji        g¦  «        �d5„ ¦   «         �Zw e7e3�jx        j        e3�jx        �ji        g¦  «        �d6„ ¦   «         �Zy e7e3�jz        j@        ¦  «        �d7„ ¦   «         �Z{ e7e3�j|        j        e3�j|        �ji        g¦  «        �d8„ ¦   «         �Z} e7e3�j~        j        e3�j~        �ji        g¦  «        �d9„ ¦   «         �Z e7e3�j€        j@        ¦  «        �d:„ ¦   «         �Z� e7e3�j‚        j        ¦  «         e+¦   «         �ddLef�d;„¦   «         ¦   «         �Zƒ e7e3�j„        g¦  «         e+¦   «         	 �d�d>„¦   «         ¦   «         �Z… e7e3�j†        g¦  «        	 �d�d?„¦   «         �Z‡ e7e3�jˆ        g¦  «        	 �d�d@„¦   «         �Z‰ e7e3�jŠ        j@        e3�j‹        j@        g¦  «        �dû�dA„¦   «         �ZŒ e7e3�j�        �ji        ¦  «        �dB„ ¦   «         �ZŽ e7e3�j�        j@        ¦  «        �dC„ ¦   «         �Z� e7e3�j‘        ¦  «        �dD„ ¦   «         �Z’ e7e3�j“        ¦  «         e+¦   «         �dE„ ¦   «         ¦   «         �Z” e7e3�j•        ¦  «        �dF„ ¦   «         �Z– e7e3�j—        j@        ¦  «        �dû�dG„¦   «         �Z˜ e7e3�j™        j@        ¦  «        �dH„ ¦   «         �Zš�dý�dI„�Z› e7e3�jœ        j@        ¦  «        �dJ„ ¦   «         �Z��dK„ �Zž�dL„ �ZŸ�dM„ �Z �dN„ �Z¡	 �dûd.e�dOek�dPek�dQek�dRek�dSek�dTek�dUek�dVek�dWek�dXek�dYek�dZek�d[ek�d\ek�d]ek�d^ek�d_ek�d`ek�daekdueb�dbejf,�dc„�Z¢�dd„ �Z£d.e�de�dOek�dPek�dQek�dRek�dSek�dTek�dUek�dVek�dWek�dXek�d\ek�d]ek�d^ek�d_ek�d`ek�daekduebf&�de„�Z¤�df„ �Z¥ e7e3�j¦        j@        ¦  «        �dg„ ¦   «         �Z§ e7e3�j¨        j@        ¦  «        	 	 	 	 �d�dh„¦   «         �Z© e7e3�jª        j@        ¦  «        �di„ ¦   «         �Z« e7e3�j¬        ¦  «         e+dºd¦  «        	 	 	 	 �d�dj„¦   «         ¦   «         �Z­ e7e3�j®        ¦  «         e+dÈ¦  «        �dk„ ¦   «         ¦   «         �Z¯d.e�dlef�dm„�Z° G �dn„ �doe¦  «        �Z±d.e�dle�dpekf�dq„�Z² e7e3�j³        j@        ¦  «        �dr„ ¦   «         �Z´ e7e3�jµ        ¦  «         e+¦   «         �ds„ ¦   «         ¦   «         �Zµ e7e3�j¶        ¦  «         e+dÈ�dt¦  «        �du„ ¦   «         ¦   «         �Z¶ e7e3�j·        j@        g¦  «        �dv„ ¦   «         �Z· e7e3�j¸        j@        ¦  «        	 	 	 	 	 �d�dw„¦   «         �Z¸ e7e3�j¹        jk        ¦  «        �dx„ ¦   «         �Zº e7e3�j»        j@        ¦  «        �dy„ ¦   «         �Z¼ e7e3�j½        j@        ¦  «        �d�dz„¦   «         �Z¾�d dGek�d{ek�d|ejf�d}„�Z¿�d~„ �ZÀ�d„ �ZÁ e7e3�jÂ        j@        ¦  «        �dû�d€„¦   «         �ZÃ�dû�d�„�ZÄ�dý�d‚„�ZÅ�dƒ„ �ZÆ�dý�d„„�ZÇ�d�d…„�ZÈ e7e3�jÉ        j@        ¦  «        �d†„ ¦   «         �ZÊ e7e3�jË        ¦  «        �d‡„ ¦   «         �ZÌ e7e3�jÍ        �jÎ        e3�jÍ        �jÏ        e3�jÍ        �jÐ        e3�jÍ        �jÑ        g¦  «         e+¦   «         �dý�dˆ„¦   «         ¦   «         �ZÒ e7e3�jÓ        �jÎ        e3�jÓ        �jÏ        e3�jÓ        �jÐ        e3�jÓ        �jÑ        g¦  «        �dý�d‰„¦   «         �ZÔ e7e3�jÕ        g¦  «        	 	 	 	 �d�d‹e�dŒe�d�e�dŽeã�d�ej�d�ej�d‘eeã         f�d’„¦   «         �ZÖ e7e3�j×        g¦  «        	 	 	 	 �d�d‹e�dŒe�d�e�d“ee         �d”ej�dŽeã�d�ej�d�ej�d‘eeã         f�d•„¦   «         �ZØ e7e3�jÙ        g¦  «        	 �dý�d–e�d‹e�dŒe�d�edºe�d—e�d˜e�d™e�dšek�d›ek�dŽeã�d�ej�dœe�d�e�d‘eeã         f�dž„¦   «         �ZÚ e7e3�jÛ        g¦  «        	 	 	 	 �d�d‹e�dŒe�d�e�dŽeã�d�ej�dŸee         �d‘eeã         f�d „¦   «         �ZÜ e7e3�jÝ        g¦  «        	 	 �dÿ�d–e�d‹e�dŒe�d�edºe�d—e�dŽeã�d�ej�dŸee         �d‘eeã         f�d¡„¦   «         �ZÞ e7e3�jß        g¦  «        	 	 	 �d�d‹e�dŒe�d�e�d“ee         �d”ej�d�ej�d‘eeã         f�d¢„¦   «         �Zà e7e3�já        g¦  «        	 	 �d�d–e�d‹e�dŒe�d�e�d“ee         dºe�d—e�dœe�d�e�dŽeã�d£eej         �d�ej�d‘eeã         f�d¤„¦   «         �Zâ e7e3�jã        g¦  «        	 �dý�d–e�d‹e�dŒe�d�edºe�d—e�dœe�d�e�d“e�d˜e�d™e�dšek�d›ek�dŽeã�d�ej�d‘eeã         f �d¥„¦   «         �Zä e7e3�jå        g¦  «        	 	 	 	 	 �d�d‹e�dŒe�d�e�d˜ee         �d™ee         �dšek�d›ek�dŽeã�d�ej�d�ej�d‘eeã         �d¦eek         �d§eek         �d¨ee         �d©ee         f�dª„¦   «         �Zæ e7e3�jç        g¦  «        	 	 	 �dü�d–e�d‹e�dŒe�d�edºe�d—e�d˜e�d™e�dšek�d›ek�dŽeã�d�ej�dœe�d�e�d‘eeã         �d¦eek         �d§eek         f"�d«„¦   «         �Zè e7e3�jé        g¦  «        	 	 	 	 	 �d�d‹e�dŒe�d�ed1ee         �d¬ee         �d­ee         �d®eek         �d¯eek         �dŽeã�d°ek�d”ej�d‘eeã         �d±ee         �d²ee         �d³eek         f�d´„¦   «         �Zê e7e3�jë        g¦  «        	 	 	 �d�d–e�d‹e�dŒe�d�ed1ee         �d¬ee         �d­ee         �d®e�jì        �d¯e�jì        �d—e�dŽeã�dœe�d�e�d°ek�dµej�d‘eeã         �d¶eek         �d·ejf$�d¸„¦   «         �Zí e7e3�jî        j@        g¦  «        	 	 	 	 �ddFej        d7ej        �d¹ej        �dºej        d1eej                 �d»eej                 d3eejc                 �d¼ejf�d½„¦   «         �Zï e7e3�jð        �jñ        e3�jð        �jò        g¦  «         e+¦   «         �d �d¾„¦   «         ¦   «         �Zó e7e3�jô        �jñ        ¦  «        �d �d¿„¦   «         �Zõ e7e3�jö        j@        e3�jö        jA        g¦  «         e+¦   «         �dûdd#œ�dÀ„¦   «         ¦   «         �Z÷�dÁ„ �Zø�dÂ„ �Zù e7e3�jú        j@        e3�jû        j@        g¦  «        �dý�dÃ„¦   «         �Zú e7e3�jü        j@        e3�jý        j@        g¦  «        �dÿ�dÄ„¦   «         �Zü e7e3�jþ        j@        e3�jÿ        j@        g¦  «        	 	 �dÿ�de�dÅee
eke�jì        f                  �dÆee
eke�jì        f                  �dÇeeã         �dÈeeã         f
�dÉ„¦   «         �Zþ e7e3�j         j@        e3�j        j@        g¦  «        �dü�dÊ„¦   «         �Z  e7e3�j        j@        e3�j        �j        e3�j        �j`        e3�j        �j        g¦  «        �d�dË„¦   «         �Z�dÌ„ �Z e7e3�j        j@        ¦  «        	 	 �dÿ�dÍ„¦   «         �Z e7e3�j	        j@        ¦  «        �dÎ„ ¦   «         �Z	 e7e3�j
        j@        ¦  «        �dÏ„ ¦   «         �Z
�dÐ„ �Z�dÑ„ �Z e7e3�j        j@        e3�j        j@        g¦  «        �d�dÒ„¦   «         �Z e7e3�j        j@        ¦  «        �d�dÓ„¦   «         �Z e7e3�j        j@        ¦  «        �d�dÔ„¦   «         �Z e7e3�j        ¦  «         e+¦   «         	 �d�dÕ„¦   «         ¦   «         �Z e7e3�j        j@        e3�j        �j`        g¦  «         e+dd¦  «        �d�dÖ„¦   «         ¦   «         �Ze�j        �Z�d×„ �Z e7e3�j        j@        ¦  «        �dØ„ ¦   «         �Z e7e3�j        j@        ¦  «        �dÙ„ ¦   «         �Z e7e3�j        j@        ¦  «        �dÚ„ ¦   «         �Z e7e3�j        j@        ¦  «        �dÛ„ ¦   «         �Z e7e3�j        j        e3�j        �j         g¦  «         e+¦   «         dd�dÜœ�dÝ„¦   «         ¦   «         �Z! e7e3�j"        g¦  «         e+¦   «         �d �dß„¦   «         ¦   «         �Z# e7e3�j$        j@        e3�j%        j@        g¦  «        	 	 �dÿ�dà„¦   «         �Z& e7e3�j'        j@        ¦  «        �dá„ ¦   «         �Z' e7e3�j(        j@        e3�j(        jA        g¦  «         e+¦   «         �dü�dâ„¦   «         ¦   «         �Z( e7ej2        j3        �j)        ¦  «        �dã„ ¦   «         �Z) e7ej2        j3        �j*        ¦  «        �dä„ ¦   «         �Z* e7e3�j+        ¦  «         e+¦   «         dddd�dåœ�dæ„¦   «         ¦   «         �Z,�dç„ �Z- e7e3�j.        ¦  «        	 �d!�dè„¦   «         �Z/ e7e3�j0        ¦  «        	 �d!�dé„¦   «         �Z1 e7e3�j2        ¦  «        	 �d!�dê„¦   «         �Z3 e7e3�j4        ¦  «         e+¦   «         dd�dëœ�dì„¦   «         ¦   «         �Z5 e7e3�j6        ¦  «         e+¦   «         �díekdFedLef�dî„¦   «         ¦   «         �Z7 e7e3�j8        ¦  «        dFef�dï„¦   «         �Z9 e7e3�j:        j@        ¦  «        	 �d"dedSee         �dðeek         �dñeãf�dò„¦   «         �Z;�dó„ �Z<�dô„ �Z= �e<e3�j>        ¦  «          �e<e3�j?        ¦  «          �e<e3�j@        ¦  «          �e<e3�jA        ¦  «          �e<e3�jB        ¦  «          �e<e3�jC        ¦  «          �e<e3�jD        ¦  «          �e<e3�jE        ¦  «          �e<e3�jF        ¦  «          �e=e3�jG        ¦  «          �e=e3�jH        ¦  «          �e=e3�jI        ¦  «          �e=e3�jJ        ¦  «          �e=e3�jK        ¦  «          �e=e3�jL        ¦  «          �e=e3�jM        ¦  «          �e=e3�jN        ¦  «          �e=e3�jO        ¦  «          �e=e3�jP        ¦  «          �e=e3�jQ        ¦  «          �e=e3�jR        ¦  «         �dõ„ �ZS e7e3�jT        ¦  «         e+¦   «         �dö„ ¦   «         ¦   «         �ZT e7e3�jU        ¦  «         e+¦   «         d9�d÷œ�dø„¦   «         ¦   «         �ZU e7e3�jV        ¦  «         e+¦   «         d9�d÷œ�dù„¦   «         ¦   «         �ZV �eSe3�jT        ¦  «        �ZW �eSe3�jU        ¦  «        �ZX �eSe3�jV        ¦  «        �ZYd dl,Zd d�lZZd d�l[Z�dú„ �Z\ �e\¦   «          dS (#  é    N)ÚEnum)Úwraps)ÚListÚOptionalÚSequenceÚTupleÚUnion)ÚSymBoolÚSymFloatÚTensor)Ú_add_op_to_registryÚ_convert_out_paramsÚglobal_decomposition_tableÚ
meta_table)Ú
OpOverload)Ú_prim_elementwise_metaÚ$ELEMENTWISE_PRIM_TYPE_PROMOTION_KIND)
ÚBoolLikeÚcorresponding_complex_dtypeÚcorresponding_real_dtypeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚ	FloatLikeÚIntLikeÚmake_contiguous_strides_forÚNumberÚ
TensorLike)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_resize_output_checkÚ_safe_copy_outÚout_wrapper)Ú_broadcast_shapesÚ_maybe_broadcast)Ú_pytreeÚatenÚIMPLÚMetac                 ó   ‡ — ˆ fd„}|S )Nc                 ó\   •‡ — t          ‰ ¦  «        Š ˆ fd„}t          j        |‰¦  «         ‰ S )Nc                 ó4   •— t          t          | ‰¦  «         d S ©N)r   r   )ÚopÚfns    €úJC:\Projects\Historical\venv\Lib\site-packages\torch/_meta_registrations.pyÚregisterz0register_meta.<locals>.wrapper.<locals>.register3   s   ø€ Ý¥
¨B°Ñ3Ô3Ð3Ð3Ð3ó    )r   ÚpytreeÚ	tree_map_)r.   r0   r-   s   ` €r/   Úwrapperzregister_meta.<locals>.wrapper0   sD   øø€ Ý  Ñ$Ô$ˆð	4ð 	4ð 	4ð 	4ð 	4õ 	Ô˜ 2Ñ&Ô&Ð&Øˆ	r1   © )r-   r4   s   ` r/   Úregister_metar6   /   s#   ø€ ðð ð ð ð ð €Nr1   Útype_promotionc                 ó†   ‡— t          j        |d| iŽ\  }Šˆfd„|D ¦   «         }t          |Ž }t          |dt          j        iŽS )NÚtype_promotion_kindc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r5   )r   )Ú.0ÚxÚresult_dtypes     €r/   ú
<listcomp>z$elementwise_meta.<locals>.<listcomp>E   s$   ø€ ÐCÐCÐC¸Õ# A |Ñ4Ô4ÐCÐCÐCr1   r7   )Úutilsr   r$   r   r   ÚDEFAULT)r7   ÚargsÚ_r=   s      @r/   Úelementwise_metarC   <   sp   ø€ õ
 Ô.Ø	ðà*ðð �O€A€|ð DÐCÐCÐC¸dÐCÑCÔC€Dõ ˜TÐ"€Dõ "Ø	ðÝBÔJðð ð r1   c                 ó¶   — t           j        t           j        t           j        t           j        t           j        t           j        i}|                     | | ¦  «        S r,   )ÚtorchÚ	complex32ÚhalfÚcfloatÚfloatÚcdoubleÚdoubleÚget)ÚdtypeÚfrom_complexs     r/   ÚtoRealValueTyperO   P   s<   € åŒ�œÝŒ•e”kÝŒ•u”|ð€Lð
 ×Ò˜E 5Ñ)Ô)Ð)r1   c                 óx   ‡ ‡— t          t          ‰ g|¢R Ž ¦  «        Št          j        ‰‰ k    ˆˆ fd„¦  «         d S )Nc                  ó   •— d‰› d‰ › �S )Nzoutput with shape z# doesn't match the broadcast shape r5   )Úbroadcasted_shapeÚ
self_shapes   €€r/   ú<lambda>z)check_inplace_broadcast.<locals>.<lambda>]   s   ø€ Ðg ZÐgÐgÐTeÐgÐg€ r1   )Útupler#   rE   Ú_check)rS   Ú
args_shaperR   s   ` @r/   Úcheck_inplace_broadcastrX   Y   sX   øø€ ÝÕ/°
ÐH¸ZÐHÐHÐHÑIÔIÐÝ	„LØ˜ZÒ'ØgÐgÐgÐgÐgñô ð ð ð r1   Fc	                 ó\  ‡ ‡‡‡‡	— t          ‰ t          j        ¦  «        r,t          j        ‰                      ¦   «         dk    d„ ¦  «         t          ‰t          j        ¦  «        r,t          j        ‰                     ¦   «         dk    d„ ¦  «         t          d„ ‰ ‰‰fD ¦   «         ¦  «        rVt          j        t          j        ¦   «         ¦  «        Š	‰€‰	ŠnAt          j        t          j	        ‰¦  «        ˆ	ˆfd„¦  «         n‰pt          j        ¦   «         Št          ‰t          j
        ¦  «        sJ ‚t          j        t          ‰t          ¦  «        ˆˆ ˆfd„¦  «         t          ‰t          ¦  «        sJ ‚t          j        ‰dk    d„ ¦  «         t          j        ‰f‰|d||¬	¦  «        S )
Nr   c                  ó   — dS ©Nz:linspace only supports 0-dimensional start and end tensorsr5   r5   r1   r/   rT   z(meta_linspace_logspace.<locals>.<lambda>q   ó   € ÐP€ r1   c                  ó   — dS r[   r5   r5   r1   r/   rT   z(meta_linspace_logspace.<locals>.<lambda>v   r\   r1   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r,   )Ú
isinstanceÚcomplex)r;   Úargs     r/   ú	<genexpr>z)meta_linspace_logspace.<locals>.<genexpr>y   s,   è è € Ð
CÐ
C¨�:�c�7Ñ#Ô#Ð
CÐ
CÐ
CÐ
CÐ
CÐ
Cr1   c                  ó   •— d‰ › d‰› �S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r5   )Údefault_complex_dtyperM   s   €€r/   rT   z(meta_linspace_logspace.<locals>.<lambda>‚   s   ø€ ÐzÐ6KÐzÐzÐsxÐzÐz€ r1   c                  óˆ   •— dt          ‰¦  «        j        › dt          ‰ ¦  «        j        › dt          ‰¦  «        j        › d�S )Nz4received an invalid combination of arguments - got (ú, ú))ÚtypeÚ__name__)ÚendÚstartÚstepss   €€€r/   rT   z(meta_linspace_logspace.<locals>.<lambda>‹   sY   ø€ ð HÝ€u�+„+ÔðHð HÝ˜s™)œ)Ô,ðHð HÝ04°U±´Ô0DðHð Hð H€ r1   c                  ó   — dS )Nz$number of steps must be non-negativer5   r5   r1   r/   rT   z(meta_linspace_logspace.<locals>.<lambda>�   s   € Ð%K€ r1   Úmeta)rM   ÚlayoutÚdeviceÚ
pin_memoryÚrequires_grad)r_   rE   r   rV   ÚdimÚanyr?   r   Úget_default_dtypeÚis_complex_dtyperM   Ú_check_typer   Úempty)
rk   rj   rl   ÚbaserM   rp   ro   rq   rr   rd   s
   ``` `    @r/   Úmeta_linspace_logspacerz   a   så  øøøøø€ õ �%�œÑ&Ô&ð 
ÝŒØ�IŠI‰KŒK˜1ÒØPÐPñ	
ô 	
ð 	
õ �#•u”|Ñ$Ô$ð 
ÝŒØ�GŠG‰IŒI˜ŠNØPÐPñ	
ô 	
ð 	
õ
 Ð
CÐ
C°°s¸EÐ/BÐ
CÑ
CÔ
CÑCÔCð 3Ý %Ô AÝÔ#Ñ%Ô%ñ!
ô !
Ðð ˆ=Ø)ˆEˆEåŒLÝÔ& uÑ-Ô-ØzÐzÐzÐzÐzñô ð ð ð
 Ð2�Ô0Ñ2Ô2ˆÝ�e�Uœ[Ñ)Ô)Ð)Ð)Ð)õ 
ÔÝ�5�'Ñ"Ô"ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hñô ð õ
 �e�WÑ%Ô%Ð%Ð%Ð%Ý	„L�˜!’ÐKÐKÑLÔLÐLåŒ;Ø	ˆØØØØØ#ðñ ô ð r1   c                 ó  ‡— t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        |                      ¦   «         dk    o‰                     ¦   «         dk     d„ ¦  «         |                      ‰j        ¦  «        S )Nc                  ó   •— d‰ j         › �S )Nz2take(): Expected a long tensor for index, but got ©rM   ©Úindexs   €r/   rT   zmeta_take.<locals>.<lambda>¡   s   ø€ ÐRÀUÄ[ÐRÐR€ r1   r   c                  ó   — dS )Nz*take(): tried to take from an empty tensorr5   r5   r1   r/   rT   zmeta_take.<locals>.<lambda>¦   s   € Ð<€ r1   )rE   rV   rM   ÚlongÚ_check_indexÚnumelÚ	new_emptyÚshape)Úselfr   s    `r/   Ú	meta_taker‡   ›   s‰   ø€ õ 
„LØŒ•u”zÒ!ØRÐRÐRÐRñô ð õ
 
ÔØ�ZŠZ‰\Œ\˜QÒÐ5 5§;¢;¡=¤=°AÒ#5Ð6Ø<Ð<ñô ð ð �>Š>˜%œ+Ñ&Ô&Ð&r1   éÿÿÿÿ©rs   c                óJ  ‡ ‡‡— ‰ j         }‰j         }t          j        ||k    d„ ¦  «         t          j        ‰                      ‰¦  «        dk    o‰                     ‰¦  «        dk    ˆˆˆ fd„¦  «         t	          ‰ j        ‰j        ¦  «        }‰                      |¦  «        S )Nc                  ó   — dS )Nz=linalg.cross: inputs must have the same number of dimensions.r5   r5   r1   r/   rT   zlinalg_cross.<locals>.<lambda>²   ó   € ÐO€ r1   é   c                  óf   •— d‰ › d‰                      ‰ ¦  «        › d‰                      ‰ ¦  «        › �S )Nzlinalg.cross: inputs dimension z must have length 3. Got ú and ©Úsize)rs   Úotherr†   s   €€€r/   rT   zlinalg_cross.<locals>.<lambda>¶   sG   ø€ ð:¨cð :ð :Ø—9’9˜S‘>”>ð:ð :Ø(-¯
ª
°3©¬ð:ð :ð r1   )ÚndimrE   rV   r‘   r#   r…   r„   )r†   r’   rs   Úx_dÚy_dÚ	out_shapes   ```   r/   Úlinalg_crossr—   «   s·   øøø€ ð Œ)€CØ
Œ*€CÝ	„LØˆsŠ
ØOÐOñô ð õ 
„LØ�	Š	�#‰Œ˜!ÒÐ4 §
¢
¨3¡¤°1Ò 4ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ " $¤*¨e¬kÑ:Ô:€IØ�>Š>˜)Ñ$Ô$Ð$r1   c                 ó‚   — t          | d¦  «         t          | d¦  «         t          j        | t          j        ¬¦  «        S )Nzlinalg.matrix_exp©Úmemory_format)ÚsquareCheckInputsÚcheckFloatingOrComplexrE   Ú
empty_likeÚcontiguous_format©r†   s    r/   Úlinalg_matrix_expr    ¿   s?   € õ �dÐ/Ñ0Ô0Ð0Ý˜4Ð!4Ñ5Ô5Ð5ÝÔ˜DµÔ0GÐHÑHÔHÐHr1   ÚvaluesÚindicesc                 ó  — t          j        | j        | j        | j        ¬¦  «        }t          j        | j        | j        t           j        ¬¦  «        }|                      ¦   «         dk    r | j        dk    rt          || j        ¦  «         ||fS )N©rp   rM   r   )	rE   rx   r…   rp   rM   Úint64rƒ   r“   Úmaybe_wrap_dim)r†   rs   r¡   r¢   s       r/   Ú	cummaxminr§   Ç   su   € õ
 Œ[˜œ¨D¬K¸t¼zÐJÑJÔJ€FÝŒk˜$œ*¨T¬[ÅÄÐLÑLÔL€GØ‡z‚z�|„|�qÒÐ˜TœY¨!š^˜^å�s˜DœIÑ&Ô&Ð&Ø�7ˆ?Ðr1   c                 óx   — t          || j        ¦  «         t          j        | ¦  «                             ¦   «         S r,   )r¦   r“   rE   r�   Ú
contiguous)r†   rs   s     r/   Úlogcumsumexprª   Ô   s3   € õ �3˜œ	Ñ"Ô"Ð"ÝÔ˜DÑ!Ô!×,Ò,Ñ.Ô.Ð.r1   c                 óÄ  ‡— |j         }t          |¦  «        }||z
  }t          t          |¦  «        ¦  «        }d„ t          |¦  «        D ¦   «         }	|D ]}
d|	|
<   Œg g }}|D ]5}
|	|
         s|                     |
¦  «         Œ |                     |
¦  «         Œ6||z   }t          |¦  «        }|                     ¦   «         Š|d |…         }|                     ˆfd„d¬¦  «         |||d …         z   }|                     |¦  «        }dgt          |j        |d …         ¦  «        z   }| 	                    |¦  «        }| 
                    d¦  «        }||d<   |}t          t          |¦  «        ¦  «        D ]}|||                  ||dz   <   Œ|  	                    |¦  «        } d„ t          |¦  «        D ¦   «         }d}|dz
  }|dk    r=||                      d¦  «        z  |||         <   ||||                  z  }|dz  }|dk    °=t          ||¦  «        D ]&}|                      d||z
  z   ¦  «        |||         <   Œ'|                      |||                      ¦   «         ¦  «        S )	Nc                 ó   — g | ]}d ‘ŒS ©Fr5   ©r;   rB   s     r/   r>   z_exec_fft.<locals>.<listcomp>å   s   € Ð5Ð5Ð5 A˜%Ð5Ð5Ð5r1   Tc                 ó   •— ‰|          S r,   r5   ©r<   Úself_stridess    €r/   rT   z_exec_fft.<locals>.<lambda>õ   s   ø€ ˜<¨œ?€ r1   ©ÚkeyÚreverserˆ   r   é   c                 ó   — g | ]}d ‘ŒS ©r   r5   r®   s     r/   r>   z_exec_fft.<locals>.<listcomp>  s   € Ð*Ð*Ð*˜�1Ð*Ð*Ð*r1   )r“   ÚlenÚlistÚrangeÚappendÚstrideÚsortÚpermuter…   Úreshaper‘   Ú
as_stridedÚstorage_offset)Úoutr†   Ú	out_sizesrs   Úforwardr“   Úsignal_ndimÚ
batch_dimsÚdim_permuteÚis_transformed_dimÚdÚleftÚrightÚ	batch_endÚtmpÚinputÚbatched_sizesÚ
batch_sizeÚbatched_out_sizesÚiÚout_stridesÚbatch_numelr±   s                         @r/   Ú	_exec_fftrÕ   Ý   s›  ø€ ØŒ9€DÝ�c‘(”(€KØ˜Ñ#€Jõ •u˜T‘{”{Ñ#Ô#€Kà5Ð5­¨t©¬Ð5Ñ5Ô5ÐØð %ð %ˆØ $Ð˜1ÑÐð �bˆ%€DØð ð ˆØ! !Ô$ð 	Ø�KŠK˜‰NŒNˆNˆNà�LŠL˜‰OŒOˆOˆOØ˜‘,€KÝ�D‘	”	€Ià—;’;‘=”=€LØ
�j�y�jÔ
!€CØ‡H‚HÐ*Ð*Ð*Ð*°D€HÑ9Ô9Ð9Ø˜ I J JÔ/Ñ/€KØ�LŠL˜Ñ%Ô%€Eð �D�4 ¤¨J¨K¨KÔ 8Ñ9Ô9Ñ9€MØ�MŠM˜-Ñ(Ô(€Eà—’˜A‘”€JØ!€M�!ÑØ%ÐÝ•3�s‘8”8‰_Œ_ð 5ð 5ˆØ#,¨S°¬VÔ#4Ð˜!˜a™%Ñ Ð Ø
�+Š+Ð'Ñ
(Ô
(€Cð +Ð*�e D™kœkÐ*Ñ*Ô*€KØ€KØ�Q‰€AØ
ˆqŠ&ˆ&Ø&1°C·J²J¸q±M´MÑ&Aˆ�K ”NÑ#Ø�y ¨Q¤Ô0Ñ0ˆØ	ˆQ‰ˆð ˆqŠ&ˆ&õ �:˜tÑ$Ô$ð Gð GˆØ&)§j¢j°°a¸*±nÑ1EÑ&FÔ&Fˆ�K ”NÑ#Ð#Ø�>Š>˜) [°#×2DÒ2DÑ2FÔ2FÑGÔGÐGr1   c                 óú   ‡— | j         j        sJ ‚| j        }|                      |¦  «        }|s|S |d d …         }|                      ¦   «         Š|                     ˆfd„d¬¦  «         t          || |||¦  «        }|S )Nc                 ó   •— ‰|          S r,   r5   r°   s    €r/   rT   zmeta_fft_c2c.<locals>.<lambda>   s   ø€  <°¤?€ r1   Tr²   )rM   Ú
is_complexr…   r„   r¼   r½   rÕ   )r†   rs   ÚnormalizationrÄ   rÃ   ÚoutputÚsorted_dimsr±   s          @r/   Úmeta_fft_c2crÜ     s’   ø€ ð Œ:Ô Ð Ð Ð à”
€IØ�^Š^˜IÑ&Ô&€Fàð Øˆà�a�a�a”&€KØ—;’;‘=”=€LØ×ÒÐ2Ð2Ð2Ð2¸DÐÑAÔAÐAÝ�v˜t Y°¸WÑEÔE€Fà€Mr1   c                 óö   — | j         j        sJ ‚t          |                      ¦   «         ¦  «        }|r|d         }||         dz  dz   }|||<   |                      |t          j        | j         ¦  «        ¬¦  «        S )Nrˆ   é   rµ   r}   )rM   Úis_floating_pointr¹   r‘   r„   r?   r   )r†   rs   rÙ   ÚonesidedÚoutput_sizesÚlast_dimÚlast_dim_halfsizes          r/   Úmeta_fft_r2crä   &  s‡   € ð Œ:Ô'Ð'Ð'Ð'Ý˜Ÿ	š	™œÑ$Ô$€Làð 3Ø�r”7ˆØ)¨(Ô3°qÑ8¸AÑ=ÐØ!2ˆ�XÑà�>Š>Ø�EÔ=¸d¼jÑIÔIð ñ ô ð r1   )Ú	generatorc                óH   — t          |t          j        | g¦  «        ¦  «        S r,   )r   rE   ÚSize)Únrå   rÂ   s      r/   Úmeta_randpermré   6  s   € å˜S¥%¤*¨a¨S¡/¤/Ñ2Ô2Ð2r1   ©rM   ro   rp   rq   c                ó4   — t          j        | ||||¬¦  «        S ©Nrê   ©rE   rx   )rè   rM   ro   rp   rq   s        r/   Úmeta_randperm_defaultrî   ;  s(   € õ Œ;Ø	�˜v¨fÀðñ ô ð r1   c                ó4   — t          j        |||||¬¦  «        S rì   rí   )Úhighr‘   rM   ro   rp   rq   s         r/   Úmeta_randintrñ   I  s(   € õ Œ;Ø�E &°ÀJðñ ô ð r1   c                ó4   — t          j        |||||¬¦  «        S rì   rí   )Úlowrð   r‘   rM   ro   rp   rq   s          r/   Úmeta_randint_lowrô   Y  s(   € õ Œ;Ø�E &°ÀJðñ ô ð r1   c                ó4   — t          j        | ||||¬¦  «        S rì   rí   )r‘   rM   ro   rp   rq   s        r/   Úmeta_rand_defaultrö   j  s(   € õ Œ;Ø�E &°ÀJðñ ô ð r1   c                 óÈ   — | j         j        sJ ‚t          |                      ¦   «         ¦  «        }|||d         <   |                      |t          | j         ¦  «        ¬¦  «        S )Nrˆ   r}   )rM   rØ   r¹   r‘   r„   rO   )r†   rs   rÙ   Úlastdimrá   s        r/   Úmeta_fft_c2rrù   r  sX   € ð Œ:Ô Ð Ð Ð Ý˜Ÿ	š	™œÑ$Ô$€LØ#€L��R”ÑØ�>Š>˜,­o¸d¼jÑ.IÔ.Iˆ>ÑJÔJÐJr1   c                 ó„  — ddl m}  || ¦  «        s't          j        | ¦  «        dk    rt	          d¦  «        ‚t          |t          ¦  «        rr|                     | |¦  «        }|                      ¦   «         |                     ¦   «         k    r2t          j
                             ||                      ¦   «         ¦  «         | S )Nr   )Úfree_unbacked_symbolsrµ   zQmore than one element of the written-to tensor refers to a single memory location)Ú%torch.fx.experimental.symbolic_shapesrû   rE   Ú_debug_has_internal_overlapÚRuntimeErrorr_   r   Útor‘   r&   Úexpand_copyÚdefault)r†   ÚsrcÚnon_blockingrû   Úintermediates        r/   Ú
meta_copy_r  {  sÅ   € ð LÐKÐKÐKÐKÐKð "Ð! $Ñ'Ô'ð
Ý,1Ô,MÈdÑ,SÔ,SÐWXÒ,XÐ,XåØ_ñ
ô 
ð 	
õ �#•vÑÔð @Ø—v’v˜d LÑ1Ô1ˆØ�9Š9‰;Œ;˜,×+Ò+Ñ-Ô-Ò-Ð-ÝÔ×$Ò$ \°4·9²9±;´;Ñ?Ô?Ð?Ø€Kr1   c                 ó<  — t          |                      ¦   «         ¦  «        }t          |                      ¦   «         ¦  «        }||                      ¦   «         k    rdn||         ||         z  }|                     |d¦  «         |                     ||¦  «         ||fS ©Nrµ   )r¹   r‘   r¼   rs   Úinsert)Útensorrs   Úresult_sizesÚresult_stridesÚ
new_strides        r/   ÚinferUnsqueezeGeometryr  ”  sŽ   € Ý˜Ÿš™œÑ&Ô&€LÝ˜&Ÿ-š-™/œ/Ñ*Ô*€NØ˜VŸZšZ™\œ\Ò)Ð)��¨|¸CÔ/@À>ÐRUÔCVÑ/V€JØ×Ò˜˜QÑÔÐØ×Ò˜#˜zÑ*Ô*Ð*Ø˜Ð'Ð'r1   c                 ó¢   — t          ||                      ¦   «         dz   ¦  «        }t          | |¦  «        \  }}|                      ||¦  «         | S r  )r¦   rs   r  Úas_strided_)r†   rs   Úg_sizesÚ	g_stridess       r/   Úmeta_unsqueeze_r  �  sL   € å
˜˜dŸhšh™jœj¨1™nÑ
-Ô
-€CÝ/°°cÑ:Ô:Ñ€GˆYØ×Ò�W˜iÑ(Ô(Ð(Ø€Kr1   rÎ   ÚweightÚ_metaÚbiasÚ_activation_optÚ	out_dtypec                 ól  — t          | j        ¦  «        }|�6|                     d¦  «        |                     d¦  «        k    s
J d¦   «         ‚|                     d¦  «        |                      d¦  «        dz  k    sJ ‚|                     d¦  «        |d<   t          | j        ¦  «        dk    s
J d¦   «         ‚d|                      d¦  «        f}|�/| j        t
          j        k    r|t
          j        k    s
J d¦   «         ‚|                      ||€| j        n|¬¦  «         	                    ||¦  «        }|S )	Nr   zoutput size mismatchrµ   rˆ   rÞ   z*we can only handle the squashed input caseú9out_dtype is only supported for i8i8->i32 linear operatorr}   )
r¹   r…   r‘   r¸   rM   rE   Úint8Úint32r„   rÀ   )	rÎ   r  r  r  r  r  rá   Útransposed_stridesrÚ   s	            r/   Úmeta_sparse_structured_linearr  ¥  s8  € õ ˜œÑ$Ô$€LØÐØ�{Š{˜1‰~Œ~ §¢¨1¡¤Ò-Ð-Ð-Ð/EÑ-Ô-Ð-Ø�;Š;�q‰>Œ>˜UŸZšZ¨™^œ^¨aÑ/Ò/Ð/Ð/Ð/Ø—{’{ 1‘~”~€L�Ñõ ˆuŒ{ÑÔ˜qÒ Ð Ð Ð"NÑ Ô Ð Ø˜UŸZšZ¨™]œ]Ð+ÐàÐàŒK�5œ:Ò%Ð%¨)µu´{Ò*BÐ*BÐ*BØFñ +CÔ*BÐBà�_Š_ØØ&Ð.ˆeŒkˆk°Ið ñ ô ÷ ‚j�Ð1Ñ2Ô2ð ð
 €Mr1   Úmat1Ú	mat1_metaÚmat2c                 óú  — t          | j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚|                      d¦  «        |                     d¦  «        dz  k    sJ ‚|                      d¦  «        |                     d¦  «        g}|�/|j        t          j        k    r|t          j        k    s
J d¦   «         ‚|                     ||€|j        n|¬¦  «        }|S )NrÞ   rµ   r   r  r}   ©r¸   r…   r‘   rM   rE   r  r  r„   )r  r  r   r  rá   rÚ   s         r/   Úmeta_sparse_structured_mmr#  Ç  sü   € õ ˆtŒz‰?Œ?˜aÒÐÐÐÝˆyŒÑÔ 1Ò$Ð$Ð$Ð$ÝˆtŒz‰?Œ?˜aÒÐÐÐØ�9Š9�Q‰<Œ<˜4Ÿ9š9 Q™<œ<¨!Ñ+Ò+Ð+Ð+Ð+Ø—I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐàŒJ�%œ*Ò$Ð$¨µe´kÒ)AÐ)AÐ)AØFñ *BÔ)AÐAà�^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr1   rµ   )ÚalphaÚbetar  c                óª  — t          | j        ¦  «        dk    s
J d¦   «         ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚|                      d¦  «        |                     d¦  «        k    s
J d¦   «         ‚|                     d¦  «        |                     d¦  «        dz  k    sJ ‚|                     d¦  «        |                     d¦  «        g}|�/|j        t          j        k    r|t          j        k    s
J d¦   «         ‚|                     ||€|j        n|¬¦  «        }|S )Nrµ   zEonly input broadcasted to columns of mat1 * mat2 product is supportedrÞ   r   r  r}   r"  )	rÎ   r  r  r   r$  r%  r  rá   rÚ   s	            r/   Úmeta_sparse_structured_addmmr'  à  se  € õ 	ˆEŒKÑÔ˜AÒÐÐØNñ 	ÔÐåˆtŒz‰?Œ?˜aÒÐÐÐÝˆyŒÑÔ 1Ò$Ð$Ð$Ð$ÝˆtŒz‰?Œ?˜aÒÐÐÐØ�:Š:�a‰=Œ=˜DŸIšIØ	ñô ò ð ð àNñô ð ð �9Š9�Q‰<Œ<˜4Ÿ9š9 Q™<œ<¨!Ñ+Ò+Ð+Ð+Ð+Ø—I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐàŒJ�%œ*Ò$Ð$¨µe´kÒ)AÐ)AÐ)AØFñ *BÔ)AÐAà�^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr1   Úcompressed_AÚdense_Br$  Útranspose_resultÚalg_idÚsplit_kÚsplit_k_one_kernelc	                 ó  — |j         t          j        t          j        t          j        t          j        t          j        hv s
J d¦   «         ‚| j         |j         k    s
J d¦   «         ‚t          |j        ¦  «        dk    s
J d¦   «         ‚| j         t          j        t          j        fv }	|	rdnd}
|	r| 	                    ¦   «         r
J d¦   «         ‚| 
                    d¦  «        }| 
                    d	¦  «        }|                      ¦   «         d
z  |
|z  z  }|�|| 
                    d¦  «        k    sJ ‚|�<|	r0|t          j        t          j        t          j        t          j        hv s
J d¦   «         ‚|r||fn||f}|                     ||¬¦  «        S )Nz;_cslt_sparse_mm only supports fp16, bf16, int8, and fp8e4m3zinputs must have the same dtyperÞ   z'_cslt_sparse_mm only supports 2d inputsé
   é	   z.dense input must be transposed for 8bit dtypesr   rµ   é   z\out_dtype is not supported for {compressed_A.dtype} x {dense_B.dtype} -> {out_dtype} matmul!r}   )rM   rE   Úfloat32Úfloat16Úbfloat16r  Úfloat8_e4m3fnr¸   r…   Úis_contiguousr‘   rƒ   r  r„   )r(  r)  r  r$  r  r*  r+  r,  r-  Úis_8bit_input_typeÚcompression_factorÚkrè   ÚmÚoutput_shapes                  r/   Úmeta__cslt_sparse_mmr<    sÌ  € ð Œ=ÝŒÝŒÝŒÝŒ
ÝÔðð ð ð ð Eñô ð ð Ô ¤Ò.Ð.Ð.Ð0QÑ.Ô.Ð.ÝˆwŒ}ÑÔ Ò"Ð"Ð"Ð$MÑ"Ô"Ð"à%Ô+µ´
½EÔ<OÐ/PÐPÐØ1Ð8˜˜°qÐàð <à×%Ò%Ñ'Ô'ð	<ð 	<à;ñ	<ô 	<Ø'ð 	�Š�Q‰Œ€AØ�Š�Q‰Œ€AØ	×	Ò	Ñ	Ô	 Ñ	"Ð(:¸QÑ(>Ñ?€AØÐØ�D—I’I˜a‘L”LÒ Ð Ð Ð àÐàð		jàå”Ý”Ý”ÝÔ#ð	ðð ð ð jñô ðð .Ð9�A�q�6�6°A°q°6€LØ×Ò˜\°ÐÑ;Ô;Ð;r1   T)Úinclude_selfr†   rs   r   ÚsourceÚreducer=  Úreturnc                óB   — t          j        | t           j        ¬¦  «        S ©Nr™   )rE   r�   rž   ©r†   rs   r   r>  r?  r=  s         r/   Úmeta_index_reducerD  6  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr1   c                ó   — | S r,   r5   rC  s         r/   Úmeta_index_reduce_rF  C  s	   € ð €Kr1   c                 óÌ   — t          |                      ¦   «         ¦  «        }|                      ¦   «         dk    r|                     ¦   «         ||<   |                      |¦  «        S )Nr   )r¹   r‘   rs   rƒ   r„   )r†   rs   r   Úresult_sizes       r/   Úmeta_index_selectrI  Q  sN   € õ �t—y’y‘{”{Ñ#Ô#€KØ‡x‚x�z„z�A‚~€~Ø Ÿ;š;™=œ=ˆ�CÑØ�>Š>˜+Ñ&Ô&Ð&r1   )Úlengthsr¢   ÚoffsetsÚaxisÚunsafeÚinitialÚdatarJ  rK  rL  rM  c                óÒ   ‡ ‡— |�t          d¦  «        ‚ˆˆ fd„}|� ||j        ¦  «        S |�,|j        d d…         |j        d         dz
  fz   }	 ||	¦  «        S t          d¦  «        ‚)Nz?segment_reduce(): indices based reduction is not supported yet.c                 óx   •— t          j        | ‰j        ‰dz   d …         z   ‰j        dt           j        ¬¦  «        S )Nrµ   rn   ©rM   rp   rš   )rE   rx   r…   rM   rž   )Úlengths_shaperL  rO  s    €€r/   Úsegment_reduce_lengths_tensorz:meta_segment_reduce.<locals>.segment_reduce_lengths_tensork  sA   ø€ ÝŒ{Ø˜DœJ t¨a¡x z zÔ2Ñ2Ø”*ØÝÔ1ð	
ñ 
ô 
ð 	
r1   rˆ   rµ   z<segment_reduce(): Either lengths or offsets must be defined.)ÚNotImplementedErrorr…   rþ   )
rO  r?  rJ  r¢   rK  rL  rM  rN  rT  rS  s
   `    `    r/   Úmeta_segment_reducerV  Z  s¦   øø€ ð ÐÝ!ØMñ
ô 
ð 	
ð
ð 
ð 
ð 
ð 
ð 
ð ÐØ,Ð,¨W¬]Ñ;Ô;Ð;ð Ðàœ c r cÔ*¨g¬m¸BÔ.?À!Ñ.CÐ-EÑEˆØ,Ð,¨]Ñ;Ô;Ð;Ý
ÐUÑ
VÔ
VÐVr1   c                 ó,   — |                       d¦  «        S ©Nr5   ©r„   rŸ   s    r/   Úmeta_maxrZ  ~  ó   € ð �>Š>˜"ÑÔÐr1   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS ©Nr}   ©r?   Úreduction_dimsr…   Ú_compute_reduction_shaper„   rE   r�   ©r†   rs   Úkeepdimr;  s       r/   Úmeta_max_dimrc  „  óW   € å
Ô
˜tœz¨C¨6Ñ
2Ô
2€CÝ+¨D°#°wÑ?Ô?€Là�Š�|Ñ$Ô$Ø�Š�|­5¬:ˆÑ6Ô6ðð r1   c                 ó,   — |                       d¦  «        S rX  rY  rŸ   s    r/   Úmeta_minrf  Ž  r[  r1   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS r]  r^  ra  s       r/   Úmeta_min_dimrh  ”  rd  r1   c                 ó¼   — |                       ¦   «         rt          | j        ¦  «        }nt          | t          j        ¬¦  «        \  }}t          j        | |¬¦  «        S )N©r9   r}   )rØ   r   rM   r   r   ÚINT_TO_FLOATrE   r�   )r†   r=   rB   s      r/   Ú
meta_anglerl  ž  s^   € à‡‚ÑÔð 
Ý/°´
Ñ;Ô;ˆˆå,ØÝ ?Ô Lð
ñ 
ô 
‰ˆˆ<õ Ô˜D¨Ð5Ñ5Ô5Ð5r1   c                 óª   — t          j        ||                      ¦   «         | j        ¦  «         |                     t          j        | ¦  «        ¦  «        S r,   )rE   Ú_resize_output_r‘   rp   Úcopy_Úangle)r†   rÂ   s     r/   Úmeta_angle_outrq  ª  s=   € å	Ô˜#˜tŸyšy™{œ{¨D¬KÑ8Ô8Ð8Ø�9Š9•U”[ Ñ&Ô&Ñ'Ô'Ð'r1   c                 ó   — d S r,   r5   )Úvals    r/   Úassert_asyncrt  °  ó   € à
€Fr1   c                 ó   — d S r,   r5   )rs  Ú
assert_msgs     r/   Úassert_async_metarx  µ  ru  r1   c                 ó   — d S r,   r5   )Úss    r/   Ú
print_metar{  º  ru  r1   ©rM   ro   rp   rq   rš   c                 ó.   — t          j        dd¬¦  «        S )Nr   rn   ©rp   rí   r|  s        r/   Úmake_dep_tokenr  ¿  s   € õ Œ;�q Ð(Ñ(Ô(Ð(r1   c                 ó„   — ddl m} t          | t          t          f¦  «        rt          d¦  «        ‚ || ||¬¦  «         d S )Nr   )Úconstrain_rangeú'Constraining SymFloat or Symbool is nyi©ÚminÚmax)rü   r�  r_   r   r
   Ú
ValueError)r‘   r„  r…  r�  s       r/   Úsym_constrain_ranger‡  Ë  s[   € ð FÐEÐEÐEÐEÐEå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCØ€O�D˜c sÐ+Ñ+Ô+Ð+Ð+Ð+r1   c                 ó@   — t                                | ||¬¦  «         |S ©Nrƒ  )r&   r‡  ©r‘   r„  r…  Ú	dep_tokens       r/   Úfunctional_sym_constrain_rangerŒ  Õ  s#   € å×Ò˜T s°ÐÑ4Ô4Ð4ØÐr1   c                 óP  — ddl m} |€|€t          j        | ¦  «         d S t	          | t
          t          f¦  «        rt          d¦  «        ‚t          | ¦  «        t          u r6|�t          j
        | |k    ¦  «         |�t          j
        | |k    ¦  «         d S  || ||¬¦  «         d S )Nr   )Ú_constrain_range_for_sizer‚  rƒ  )rü   rŽ  rE   Ú_check_is_sizer_   r   r
   r†  rh   ÚintrV   )r‘   r„  r…  rŽ  s       r/   Úsym_constrain_range_for_sizer‘  Û  sÃ   € ð PÐOÐOÐOÐOÐOà
€{�s�{ÝÔ˜TÑ"Ô"Ð"Øˆå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCÝˆD�z„z•SÐÐØˆ?ÝŒL˜ šÑ%Ô%Ð%Øˆ?ÝŒL˜ šÑ%Ô%Ð%ØˆØÐ˜d¨°Ð5Ñ5Ô5Ð5Ð5Ð5r1   c                 ó@   — t                                | ||¬¦  «         |S r‰  )r&   r‘  rŠ  s       r/   Ú'functional_sym_constrain_range_for_sizer“  ï  s#   € å×%Ò% d°¸Ð%Ñ=Ô=Ð=ØÐr1   c                 ó   — |S r,   r5   )rs  rw  r‹  s      r/   Úfunctional_assert_async_metar•  õ  s   € àÐr1   Úf_namec                 ó  — |                       ¦   «         dk    sJ |› d�¦   «         ‚|                      d¦  «        |                      d¦  «        k    s9J |› d|                      d¦  «        › d|                      d¦  «        › d�¦   «         ‚d S )NrÞ   z3: The input tensor must have at least 2 dimensions.rˆ   éþÿÿÿz5: A must be batches of square matrices, but they are ú by ú	 matrices)rs   r‘   )r†   r–  s     r/   r›   r›   û  s–   € à�Š‰
Œ
�aŠˆˆØ
ÐEÐEÐEñ 	Œˆð 	�	Š	�"‰Œ˜Ÿš 2™œÒ&Ð&Ð&Ø
ÐrÐrÀtÇyÂyÐQSÁ}Ä}ÐrÐrÐZ^×ZcÒZcÐdfÑZgÔZgÐrÐrÐrñ 	'Ô&Ð&Ð&Ð&r1   ÚAÚnamec                 ó´  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰                     d¦  «        ‰                     d¦  «        k    ˆfd„¦  «         t          j        ‰                     d¦  «        ‰                      d¦  «        k    ˆˆˆ fd„¦  «         d S )Nc                  ó*   •— d‰j         › d‰ j         › d�S )Nz:Expected b and A to be on the same device, but found b on z
 and A on ú	 instead.r~  ©r›  r†   s   €€r/   rT   z(linearSolveCheckInputs.<locals>.<lambda>
  s0   ø€ ð:ØŒ{ð:ð :Ø&'¤hð:ð :ð :ð r1   c                  ó*   •— d‰j         › d‰ j         › d�S )Nz=Expected b and A to have the same dtype, but found b of type z and A of type rŸ  r}   r   s   €€r/   rT   z(linearSolveCheckInputs.<locals>.<lambda>  s0   ø€ ð=ØŒzð=ð =Ø*+¬'ð=ð =ð =ð r1   rˆ   r˜  c                  ób   •— d‰                       d¦  «        › d‰                       d¦  «        › d�S )Nz3A must be batches of square matrices, but they are r˜  r™  rˆ   rš  r�   ©r›  s   €r/   rT   z(linearSolveCheckInputs.<locals>.<lambda>  sF   ø€ ðBØŸFšF 2™JœJðBð BØ,-¯FªF°2©J¬JðBð Bð Bð r1   c                  ó¾   •— d‰› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › �
S )NzIncompatible matrix sizes for z: each A matrix is rˆ   r™  z but each b matrix is r˜  r�   )r›  rœ  r†   s   €€€r/   rT   z(linearSolveCheckInputs.<locals>.<lambda>"  s€   ø€ ðH¨Tð Hð HØŸš ™œðHð HØ)*¯ª°©¬ðHð Hà%)§Y¢Y¨r¡]¤]ðHð Hà8<¿	º	À"¹¼ðHð Hð r1   )rE   rV   rp   rM   r‘   )r†   r›  rœ  s   ```r/   ÚlinearSolveCheckInputsr¥    s  øøø€ Ý	„LØŒ�q”xÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�a”gÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�d—i’i ‘m”mÒ#ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r1   ÚtÚallow_low_precision_dtypesc                 ó,  ‡‡— | j         Št          j        |                      ¦   «         p|                      ¦   «         ˆˆfd„¦  «         |sIt          j        ‰t          j        t          j        t          j        t          j        fv ˆˆfd„¦  «         d S d S )Nc                  ó   •— ‰› d‰ › �S )Nz<: Expected a floating point or complex tensor as input. Got r5   ©rM   r–  s   €€r/   rT   z(checkFloatingOrComplex.<locals>.<lambda>3  s   ø€ �6Ð^Ð^ÐW\Ð^Ð^€ r1   c                  ó   •— ‰› d‰ › �S )Nz*: Low precision dtypes not supported. Got r5   rª  s   €€r/   rT   z(checkFloatingOrComplex.<locals>.<lambda>8  s   ø€ �vÐPÐPÈÐPÐP€ r1   )	rM   rE   rV   rß   rØ   rI   rK   rH   rJ   )r¦  r–  r§  rM   s    ` @r/   rœ   rœ   +  s¦   øø€ ð
 ŒG€EÝ	„LØ	×ÒÑÔÐ/ §¢¡¤Ø^Ð^Ð^Ð^Ð^ñô ð ð &ð 
ÝŒØ•e”k¥5¤<µ´½u¼}ÐMÐMØPÐPÐPÐPÐPñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r1   Úarg_namec                 óh   ‡‡— t          j        |                      ¦   «         dk    ˆˆfd„¦  «         d S )NrÞ   c                  ó   •— ‰› d‰ › d�S )Nz: The input tensor z! must have at least 2 dimensions.r5   )r¬  r–  s   €€r/   rT   zcheckIsMatrix.<locals>.<lambda>@  s   ø€ �6ÐYÐY¨hÐYÐYÐY€ r1   )rE   rV   rs   )r›  r–  r¬  s    ``r/   ÚcheckIsMatrixr¯  =  s@   øø€ Ý	„LØ	�Š‰Œ�1ŠØYÐYÐYÐYÐYñô ð ð ð r1   ÚBrÊ   c                 ó4  ‡ ‡‡‡— t          ‰ ‰¦  «         t          ‰‰¦  «         t          j        ‰r,‰                      d¦  «        ‰                     d¦  «        k    n+‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆˆˆfd„¦  «         d S )Nr˜  rˆ   c                  óÌ   •— ‰› d‰rdnd› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d	�S )
Nz2: Incompatible shapes of A and B for the equation zAX = BzXA = Bz (r˜  r<   rˆ   r�   rg   r�   )r›  r°  r–  rÊ   s   €€€€r/   rT   z#checkInputsSolver.<locals>.<lambda>I  s™   ø€ Øð Jð JØÐ-ˆxˆx XðJð Jà—’˜‘”ðJð JàŸfšf R™jœjðJð Jà/0¯vªv°b©z¬zðJð Jà<=¿FºFÀ2¹J¼JðJð Jð Jð r1   )r›   r¯  rE   rV   r‘   )r›  r°  rÊ   r–  s   ````r/   ÚcheckInputsSolverr³  D  s¦   øøøø€ Ý�a˜Ñ Ô Ð Ý�!�VÑÔÐÝ	„LØ$(ÐFˆ�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ Ð ¨a¯fªf°R©j¬j¸A¿FºFÀ2¹J¼JÒ.Fð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r1   ÚresultÚfn_nameÚresult_namec                 ó`   ‡ ‡‡‡— t          j        ‰j        ‰j        k    ˆ ˆˆˆfd„¦  «         d S )Nc            	      ó8   •— ‰ › d‰› d‰› d‰j         › d‰j         › �	S )Nz: Expected z5 and input tensors to be on the same device, but got z on z and input on r~  )rµ  rÎ   r´  r¶  s   €€€€r/   rT   z!checkSameDevice.<locals>.<lambda>Y  sV   ø€ Øð Lð L ;ð Lð LØðLð LØ &¤ðLð LØ=B¼\ðLð Lð r1   )rE   rV   rp   )rµ  r´  rÎ   r¶  s   ````r/   ÚcheckSameDevicer¹  Q  sU   øøøø€ õ 
„LØŒ˜œÒ%ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r1   ÚUPLOc                 óš   ‡ — ‰                       ¦   «         }t          j        t          ‰ ¦  «        dk    o|dk    p|dk    ˆ fd„¦  «         d S )Nrµ   ÚUÚLc                  ó   •— d‰ › �S )Nz1Expected UPLO argument to be 'L' or 'U', but got r5   )rº  s   €r/   rT   zcheckUplo.<locals>.<lambda>d  s   ø€ ÐJÀDÐJÐJ€ r1   )ÚupperrE   rV   r¸   )rº  ÚUPLO_uppercases   ` r/   Ú	checkUplorÁ  `  s[   ø€ Ø—Z’Z‘\”\€NÝ	„LÝˆD‰	Œ	�QŠÐK˜N¨cÒ1ÐJ°^ÀsÒ5JØJÐJÐJÐJñô ð ð ð r1   ÚeigenvaluesÚeigenvectorsr½  Ú	compute_vc                 ó�  — t          | d¦  «         t          |¦  «         t          | j        ¦  «        }|r;|                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }|                     ¦   «          |                      |t          | j	        ¦  «        ¬¦  «        }||fS )Nzlinalg.eighF©Ú	row_majorr   r}   )
r›   rÁ  r¹   r…   r„   r  r   ÚpoprO   rM   )r›  rº  rÄ  r…   ÚvecsÚvalss         r/   Úmeta__linalg_eighrË  h  sµ   € õ �a˜Ñ'Ô'Ð'Ýˆd�O„O€Oå�”‰MŒM€EØð  Ø�{Š{˜5Ñ!Ô!ˆØ×Ò˜Õ ;¸EÈUÐ SÑ SÔ SÑTÔTÐTÐTà�{Š{˜A˜3ÑÔˆà	‡I‚I�K„K€KØ�;Š;�u¥O°A´GÑ$<Ô$<ˆ;Ñ=Ô=€Dà�ˆ:Ðr1   c                 óÜ   — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        S )Nzlinalg.eigvalsrˆ   r}   ©r›   r?   rv   rM   r   r„   r…   )rÎ   Úcomplex_dtypes     r/   Úmeta__linalg_eigvalsrÏ  {  sj   € õ �eÐ-Ñ.Ô.Ð.õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �?Š?˜5œ; s¨ sÔ+°=ˆ?ÑAÔAÐAr1   c                 ó  — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        }|                      | j        |¬¦  «        }||fS )Nz
linalg.eigrˆ   r}   rÍ  )rÎ   rÎ  r¡   Úvectorss       r/   Úmeta_linalg_eigrÒ  ‡  s‰   € õ �e˜\Ñ*Ô*Ð*õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �_Š_˜Uœ[¨¨"¨Ô-°]ˆ_ÑCÔC€FØ�oŠo˜eœk°ˆoÑ?Ô?€GØ�7ˆ?Ðr1   r  c                 ót   — | j                              t          j        ¬¦  «                             dd¦  «        S )Nr™   r˜  rˆ   )ÚmTÚclonerE   rž   Ú	transpose)r  s    r/   ÚcloneBatchedColumnMajorr×  •  s+   € ØŒ6�<Š<¥eÔ&=ˆ<Ñ>Ô>×HÒHÈÈRÑPÔPÐPr1   r¿  c                 ó    — t          | ¦  «        S r,   )r×  )r†   r›  r¿  s      r/   Ú_cholesky_solve_helperrÙ  ™  s   € õ # 4Ñ(Ô(Ð(r1   c                 óÔ   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «        \  }}t	          |||¦  «        S )NrÞ   c                  ó   •— d‰ j         › d�S )Nz-b should have at least 2 dimensions, but has ú dimensions instead©r“   rŸ   s   €r/   rT   z cholesky_solve.<locals>.<lambda>¤  s   ø€ Ð^ÀÄ	Ð^Ð^Ð^€ r1   c                  ó   •— d‰ j         › d�S )Nz-u should have at least 2 dimensions, but has rÜ  rÝ  r£  s   €r/   rT   z cholesky_solve.<locals>.<lambda>¨  s   ø€ Ð[ÀÄÐ[Ð[Ð[€ r1   Úcholesky_solve)rE   rV   r“   Ú!_linalg_broadcast_batch_dims_namerÙ  )r†   r›  r¿  Úself_broadcastedÚA_broadcasteds   ``   r/   rß  rß  Ÿ  s�   øø€ õ 
„LØŒ	�QŠØ^Ð^Ð^Ð^ñô ð õ 
„LØ	Œ�!ŠØ[Ð[Ð[Ð[ñô ð õ 'HØˆaÐ!ñ'ô 'Ñ#Ð�mõ "Ð"2°MÀ5ÑIÔIÐIr1   c                 ó°   — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S t	          | d¦  «         t          | ¦  «        S )Nr   r™   Úcholesky)rƒ   rE   r�   Úlegacy_contiguous_formatr›   r×  ©r†   r¿  s     r/   rä  rä  °  sN   € ð ‡z‚z�|„|�qÒÐÝÔ µEÔ4RÐSÑSÔSÐSÝ�d˜JÑ'Ô'Ð'Ý" 4Ñ(Ô(Ð(r1   c                 ó@   — t          | d¦  «         t          | ¦  «        S )NÚcholesky_inverse)r›   r×  ræ  s     r/   rè  rè  ¹  s#   € õ �dÐ.Ñ/Ô/Ð/Ý" 4Ñ(Ô(Ð(r1   Úcheck_errorsc                 óD  — t          | d¦  «         t          | d¦  «         | j        }t          |¦  «        }t	          |d¦  «        }|                      |¦  «        }|                     ||¦  «         |                      |d|dz
  …         t          j        ¬¦  «        }||fS )Nzlinalg.choleskyFr   rÞ   r}   )	r›   rœ   r…   r¸   r   r„   r  rE   r  )r›  r¿  ré  ÚA_shaper“   Ú	L_stridesr½  Úinfoss           r/   Úlinalg_cholesky_exrî  Á  s›   € å�aÐ*Ñ+Ô+Ð+Ý˜1Ð/Ñ0Ô0Ð0àŒg€GÝˆw‰<Œ<€Dõ ,¨G°UÑ;Ô;€IØ	�Š�GÑÔ€AØ‡M‚M�'˜9Ñ%Ô%Ð%ð �KŠK˜  D¨1¡H Ô-µU´[ˆKÑAÔA€EØˆeˆ8€Or1   Útauc                 ó  ‡ ‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    d„ ¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        ‰j        z
  dk    ˆ ˆfd„¦  «         ‰ j        dk    r:‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd	„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd
„¦  «         t          d‰‰ d¦  «         t          j        ‰ j        t          ‰ j        d¬¦  «        ‰ j        ‰ j	        ¬¦  «        S )NrÞ   c                  ó   — dS )NzHtorch.linalg.householder_product: input must have at least 2 dimensions.r5   r5   r1   r/   rT   z,linalg_householder_product.<locals>.<lambda>Ú  ó   € ÐZ€ r1   r˜  rˆ   c                  ó   — dS )Nzbtorch.linalg.householder_product: input.shape[-2] must be greater than or equal to input.shape[-1]r5   r5   r1   r/   rT   z,linalg_householder_product.<locals>.<lambda>Þ  s   € Ðt€ r1   c                  ó   — dS )Nz`torch.linalg.householder_product: input.shape[-1] must be greater than or equal to tau.shape[-1]r5   r5   r1   r/   rT   z,linalg_householder_product.<locals>.<lambda>â  s   € Ðr€ r1   rµ   c                  ó(   •— d‰j         › d‰ j         › �S )Nzptorch.linalg.householder_product: Expected tau to have one dimension less than input, but got tau.ndim equal to ú and input.ndim is equal to rÝ  ©rÎ   rï  s   €€r/   rT   z,linalg_householder_product.<locals>.<lambda>ç  ó0   ø€ ð\Ø),¬ð\ð \ØOTÌzð\ð \ð r1   c                  ó   •— d‰ › �S )Nzltorch.linalg.householder_product: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r5   ©Úactual_batch_tau_shapes   €r/   rT   z,linalg_householder_product.<locals>.<lambda>ñ  ó   ø€ ðOØ6LðOð Oð r1   c                  ó(   •— d‰j         › d‰ j         › �S )Nz,torch.linalg.householder_product: tau dtype z does not match input dtype r}   r÷  s   €€r/   rT   z,linalg_householder_product.<locals>.<lambda>ù  s*   ø€ ð9¸3¼9ð 9ð 9Ø+0¬;ð9ð 9ð r1   z torch.linalg.householder_productrï  FrÆ  ©r‘   r¼   rM   rp   )
rE   rV   r“   r‘   r…   rM   r¹  Úempty_stridedr   rp   )rÎ   rï  Úexpected_batch_tau_shaperû  s   `` @r/   Úlinalg_householder_productr  Ó  sÆ  øøø€ õ
 
„LØŒ
�aŠØZÐZñô ð õ 
„LØ�
Š
�2‰Œ˜%Ÿ*š* R™.œ.Ò(ØtÐtñô ð õ 
„LØ�
Š
�2‰Œ˜#Ÿ(š( 2™,œ,Ò&ØrÐrñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø#(¤;¨s°¨sÔ#3Ð Ø!$¤¨3¨B¨3¤ÐÝŒØ"Ð&>Ò>ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ Ð6¸¸UÀEÑJÔJÐJåÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r1   c                 ó<  — t          | d¦  «         t          | dd¬¦  «         |                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }||fS )Nzlinalg.inv_exF)r§  rÆ  r˜  r}   ©r›   rœ   r„   r…   r  r   rE   r  )r›  ré  r½  rí  s       r/   Úlinalg_inv_ex_metar  	  sŠ   € å�a˜Ñ)Ô)Ð)Ý˜1˜oÈ%ÐPÑPÔPÐPà	�Š�A”GÑÔ€AØ‡M‚M�!”'Õ6°q´wÈ%ÐPÑPÔPÑQÔQÐQà�KŠK˜œ   œ­E¬KˆKÑ8Ô8€EØˆeˆ8€Or1   ÚLDÚpivotsÚinfo)Ú	hermitianré  r  c                óz  — t          | d¦  «         t          | d¦  «         t          j        | j        t          | j        d¬¦  «        | j        | j        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|||fS )Nztorch.linalg.ldl_factor_exFrÆ  rþ  rˆ   r}   r˜  )
r›   rœ   rE   rÿ  r…   r   rM   rp   r„   r�  )r†   r  ré  r  r  r  s         r/   Úlinalg_ldl_factor_ex_metar
    s¯   € õ �dÐ8Ñ9Ô9Ð9Ý˜4Ð!=Ñ>Ô>Ð>Ý	Ô	ØŒZÝ*¨4¬:ÀÐGÑGÔGØŒjØŒ{ð	
ñ 
ô 
€Bð �^Š^˜DœJ s¨ sœOµ5´9ˆ^Ñ=Ô=€FØ�>Š>˜$œ* S b Sœ/µ´ˆ>Ñ;Ô;€DØˆv�tÐÐr1   )r  c                ó@  ‡ ‡‡— t          ‰ d¦  «         t          ‰ d¦  «         t          ‰‰ d¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰ j        d d…         }t          j        |‰j        k    ˆfd„¦  «         t          j        t          j        ‰j	        ¦  «        ˆfd„¦  «         t          j        ‰ j	        ‰j	        k    ˆˆ fd„¦  «         t          ‰‰ ¦  «        \  }}t          j        |t          |d¬	¦  «        ‰j	        ‰j        ¬
¦  «        S )Nztorch.linalg.ldl_solverÞ   c                  ó   •— d‰ j         › d�S )NzMtorch.linalg.ldl_solve: Expected B to have at least 2 dimensions, but it has rÜ  rÝ  )r°  s   €r/   rT   z'linalg_ldl_solve_meta.<locals>.<lambda>8  ó!   ø€ ð6Øœ&ð6ð 6ð 6ð r1   rˆ   c                  ó   •— d‰ j         › d�S )Nzjtorch.linalg.ldl_solve: Expected LD.shape[:-1] and pivots.shape to be the same, but got pivots with shape ú instead©r…   ©r  s   €r/   rT   z'linalg_ldl_solve_meta.<locals>.<lambda>@  ó%   ø€ ð@Ø)/¬ð@ð @ð @ð r1   c                  ó   •— d‰ j         › �S )Nz<torch.linalg.ldl_solve: Expected pivots to be integers. Got r}   r  s   €r/   rT   z'linalg_ldl_solve_meta.<locals>.<lambda>G  s   ø€ Ð]ÈvÌ|Ð]Ð]€ r1   c                  ó(   •— d‰j         › d‰ j         › �S )Nz!torch.linalg.ldl_solve: LD dtype z does not match b dtype r}   )r°  r  s   €€r/   rT   z'linalg_ldl_solve_meta.<locals>.<lambda>K  s   ø€ Ð_°B´HÐ_Ð_ÐVWÔV]Ð_Ð_€ r1   FrÆ  rþ  )r›   rœ   r¥  rE   rV   r“   r…   r?   Úis_integer_dtyperM   Ú_linalg_broadcast_batch_dimsrÿ  r   rp   )r  r  r°  r  Úexpected_pivots_shapeÚB_broadcast_sizerB   s   ```    r/   Úlinalg_ldl_solve_metar  *  sc  øøø€ õ �bÐ2Ñ3Ô3Ð3Ý˜2Ð7Ñ8Ô8Ð8Ý˜1˜bÐ":Ñ;Ô;Ð;Ý	„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð ð œH S b SœMÐÝ	„LØ ¤Ò-ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LÝÔ˜vœ|Ñ,Ô,Ø]Ð]Ð]Ð]ñô ð õ 
„LØ
Œ�A”GÒØ_Ð_Ð_Ð_Ð_ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aÝÔØÝ*Ð+;ÀuÐMÑMÔMØŒgØŒxð	ñ ô ð r1   ÚPr¼  )Úpivotr  c                ó�  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }||d<   ‰                      |¦  «        }||d<   ||d<   ‰                      |¦  «        }|||fS )NrÞ   c                  ó   •— d‰ j         › d�S )Nz@linalg.lu: Expected tensor with 2 or more dimensions. Got size: r  r  r£  s   €r/   rT   z linalg_lu_meta.<locals>.<lambda>[  s   ø€ ÐdÐSTÔSZÐdÐdÐd€ r1   r˜  rˆ   r   )rE   rV   r“   r¹   r…   r„  r„   )	r›  r  Úsizesr:  rè   r9  r  r½  r¼  s	   `        r/   Úlinalg_lu_metar  V  sÛ   ø€ õ 
„LØ	Œ�!ŠØdÐdÐdÐdñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€AÝˆAˆq‰	Œ	€Aà€Eˆ"�IØð Ø�KŠK˜ÑÔˆˆà�KŠK˜˜ÑÔˆà€Eˆ"�IØ	�Š�EÑÔ€Aà€Eˆ"�IØ€Eˆ"�IØ	�Š�EÑÔ€AØˆa�ˆ7€Nr1   ÚLU)r  ré  c                óô  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          j        |t          |d¬¦  «        ‰ j        ‰ j        ¬¦  «        }| 	                    ¦   «          t          ||¦  «        |d<   ‰                      |t           j        ¬¦  «        }| 	                    ¦   «          ‰                      |t           j        ¬¦  «        }|||fS )	NrÞ   c                  ó   •— d‰ j         › d�S )NzFtorch.lu_factor: Expected tensor with 2 or more dimensions. Got size: r  r  r£  s   €r/   rT   z*linalg_lu_factor_ex_meta.<locals>.<lambda>|  s   ø€ ÐjÐYZÔY`ÐjÐjÐj€ r1   r˜  rˆ   FrÆ  rþ  r}   )rE   rV   r“   r¹   r…   rÿ  r   rM   rp   rÈ  r„  r„   r�  )	r›  r  ré  r  r:  rè   r   r  r  s	   `        r/   Úlinalg_lu_factor_ex_metar#  r  sí   ø€ õ 
„LØ	Œ�!ŠØjÐjÐjÐjñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€Aå	Ô	ØÝ*¨5¸EÐBÑBÔBØŒgØŒxð	
ñ 
ô 
€Bð 
‡I‚I�K„K€KÝ�A�q‘	”	€Eˆ"�IØ�[Š[˜¥e¤iˆ[Ñ0Ô0€Fð 
‡I‚I�K„K€KØ�;Š;�u¥E¤Iˆ;Ñ.Ô.€Dàˆv�tÐÐr1   )rÊ   Úadjointr$  c                óú  ‡ ‡‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰j        t          j        k    d„ ¦  «         t          ‰ d¦  «         t          ‰ ‰|d¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        d d…         ‰j        k    ˆfd„¦  «         t          ‰‰ ¦  «        \  }}t          j
        |t          || ¬¦  «        ‰j        ‰j        ¬	¦  «        }|                     ¦   «         d
k    r*|s(|                     ¦   «         r|                     ¦   «         }|S )Nztorch.linalg.lu_solvec                  ó*   •— d‰j         › d‰ j         › d�S )NzPlinalg.lu_solve: Expected LU and B to have the same dtype, but found LU of type ú and B of type r  r}   )r°  r   s   €€r/   rT   z&linalg_lu_solve_meta.<locals>.<lambda>¤  s6   ø€ ðOØ$&¤HðOð OØ=>¼WðOð Oð Oð r1   c                  ó   — dS )NzElinalg.lu_solve: pivots should be a Tensor of scalar type torch.int32r5   r5   r1   r/   rT   z&linalg_lu_solve_meta.<locals>.<lambda>«  s   € ÐW€ r1   zlinalg.lu_solverˆ   c                  ó   — dS )NzYlinalg.lu_solve: Number of pivots per batch should be same as the dimension of the matrixr5   r5   r1   r/   rT   z&linalg_lu_solve_meta.<locals>.<lambda>³  s   € Ðk€ r1   c                  ó   •— d‰ j         › d�S )Nzclinalg.lu_solve: Expected LU.shape[:-1] and pivots.shape to be the same, but got pivots with shape r  r  r  s   €r/   rT   z&linalg_lu_solve_meta.<locals>.<lambda>¹  r  r1   rÆ  rþ  r   )rœ   rE   rV   rM   r�  r›   r³  r‘   r…   r  rÿ  r   rp   rƒ   rØ   Úconj)r   r  r°  rÊ   r$  r  rB   r´  s   ```     r/   Úlinalg_lu_solve_metar,  –  s£  øøø€ õ ˜2Ð6Ñ7Ô7Ð7Ý	„LØ
Œ�A”GÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œ	Ò!ØWÐWñô ð õ �bÐ1Ñ2Ô2Ð2Ý�b˜!˜TÐ#4Ñ5Ô5Ð5Ý	„LØ
�Š�‰Œ�v—{’{ 2‘”Ò&ØkÐkñô ð õ 
„LØ
Œ��"�Œ˜œÒ%ð	
ð 	
ð 	
ð 	
ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aåÔ ØÝ*Ð+;È4ÀxÐPÑPÔPØŒgØŒxð	ñ ô €Fð ‡|‚|�~„~˜ÒÐ 4ÐØ×ÒÑÔð 	#Ø—[’[‘]”]ˆFà€Mr1   Úunpack_dataÚunpack_pivotsc                 óD  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         |r)t          j        |j        t           j        k    d„ ¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }|r:||d<   ‰                      |¦  «        }	||d<   ||d<   ‰                      |¦  «        }
n,‰                      dg¦  «        }	‰                      dg¦  «        }
||	|
fS )NrÞ   c                  ó   •— d‰ j         › d�S )NzFtorch.lu_unpack: Expected tensor with 2 or more dimensions. Got size: r  r  )r   s   €r/   rT   z lu_unpack_meta.<locals>.<lambda>Ù  s   ø€ ÐkÐY[ÔYaÐkÐkÐk€ r1   c                  ó   — dS )Nz´torch.lu_unpack: LU_pivots is expected to be a contiguous tensor of torch.int32 dtype.
Note: this function is intended to be used with the output produced by torch.linalg.lu_factorr5   r5   r1   r/   rT   z lu_unpack_meta.<locals>.<lambda>Þ  s   € ðpð r1   r˜  rˆ   r   )	rE   rV   r“   rM   r  r¹   r…   r„  r„   )r   r  r-  r.  r  r:  rè   r9  r  r½  r¼  s   `          r/   Úlu_unpack_metar2  Ï  s?  ø€ õ 
„LØ
Œ�1ŠØkÐkÐkÐkñô ð ð ð 
ÝŒØŒL�EœKÒ'ðð ñ	
ô 	
ð 	
õ �”‰NŒN€EØˆbŒ	€AØˆbŒ	€AÝˆAˆq‰	Œ	€AØ€Eˆ"�IØð Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØð Øˆˆb‰	Ø�LŠL˜ÑÔˆØˆˆb‰	Øˆˆb‰	Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØ�LŠL˜!˜ÑÔˆØˆa�ˆ7€Nr1   Úmodec                 ó~   ‡ — ‰ dk    rd}d}n.‰ dk    rd}d}n#‰ dk    rd}d}nt          j        dˆ fd„¦  «         ||fS )NÚreducedTÚcompleteFÚrc                  ó   •— d‰ › d�S )Nzqr received unrecognized mode 'z=' but expected one of 'reduced' (default), 'r', or 'complete'r5   )r3  s   €r/   rT   z _parse_qr_mode.<locals>.<lambda>  s"   ø€ ðO°$ð Oð Oð Oð r1   ©rE   rV   )r3  Ú	compute_qr5  s   `  r/   Ú_parse_qr_moder;  ù  s~   ø€ ØˆyÒÐØˆ	ØˆˆØ	�Ò	Ð	Øˆ	ØˆˆØ	�ŠˆØˆ	ØˆˆåŒØðð ð ð ñ	
ô 	
ð 	
ð �gÐÐr1   ÚQÚRr5  c                 óT  — t          | d¦  «         t          | d¦  «         t          |¦  «        \  }}| j        d         }| j        d         }t	          ||¦  «        }|rXt          | j        ¦  «        }|r|n||d<   |                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }t          | j        ¦  «        }	|s|s|n||	d<   |                      |	¦  «        }
|
                     |	t          |	d¬¦  «        ¦  «         ||
fS )Nz	linalg.qrr˜  rˆ   FrÆ  r   )	r¯  rœ   r;  r…   r„  r¹   r„   r  r   )r›  r3  r:  Úreduced_moder:  rè   r9  ÚQ_shaper<  ÚR_shaper=  s              r/   Úlinalg_qr_metarB    s+  € õ �!�[Ñ!Ô!Ð!Ý˜1˜kÑ*Ô*Ð*å,¨TÑ2Ô2Ñ€Iˆ|à	Œ�Œ€AØ	Œ�Œ€AÝˆAˆq‰	Œ	€Aàð Ý�q”w‘-”-ˆØ'Ð.�a�a¨Qˆ�‰Ø�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUÐUà�KŠK˜˜ÑÔˆõ �1”7‰mŒm€GØ#Ð;¨9Ð;�!�!¸!€GˆB�KØ	�Š�GÑÔ€AØ‡M‚M�'Õ6°wÈ%ÐPÑPÔPÑQÔQÐQØˆaˆ4€Kr1   ÚsignÚ	logabsdetc                 ó¬  — t          | d¦  «         t          | dd¦  «         | j        }|                      |d d…         ¦  «        }|                      |d d…         t	          | j        ¦  «        ¬¦  «        }t          j        |t          |d¦  «        | j        | j	        ¬¦  «        }|                      |d d…         t          j
        ¬¦  «        }||||fS )Nzlinalg.slogdetFr˜  r}   rþ  rˆ   )r›   rœ   r…   r„   rO   rM   rE   rÿ  r   rp   r  )r›  r…   rC  rD  r   r  s         r/   Ú_linalg_slogdetrF  *  sÐ   € õ �aÐ)Ñ*Ô*Ð*Ý˜1Ð.°Ñ6Ô6Ð6ØŒG€EØ�;Š;�u˜S˜b˜S”zÑ"Ô"€DØ—’˜E # 2 #œJ­o¸a¼gÑ.FÔ.F�ÑGÔG€IÝ	Ô	ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	
ñ 
ô 
€Bð �[Š[˜˜s ˜sœ­5¬;ˆ[Ñ7Ô7€FØ�˜B Ð&Ð&r1   Úfull_matricesÚ
compute_uvÚdriverc                 óÊ  — t          | d¦  «         t          | d¦  «         t          | j        d d…         ¦  «        }| j        d         }| j        d         }t	          ||¦  «        }|rž|||r|n|gz   }|                      |¦  «        }	|	                     |t          |d¬¦  «        ¦  «         ||r|n||gz   }
|                      |
¦  «        }t          | ¦  «        dk    }|                     |
t          |
|¬¦  «        ¦  «         n,|                      dg¦  «        }	|                      dg¦  «        }|                      ||gz   t          | j
        ¦  «        ¬¦  «        }|	||fS )	Nz
linalg.svdr˜  rˆ   FrÆ  Úcudar   r}   )r¯  rœ   r¹   r…   r„  r„   r  r   Údevice_hintrO   rM   )r›  rG  rH  rI  rÆ   r:  rè   r9  ÚU_shaper¼  ÚV_shapeÚVÚis_cudaÚSs                 r/   Ú_linalg_svd_metarR  >  sl  € õ �!�\Ñ"Ô"Ð"Ý˜1˜lÑ+Ô+Ð+å�a”g˜c˜r˜c”lÑ#Ô#€JØ	Œ�Œ€AØ	Œ�Œ€AÝˆAˆq‰	Œ	€Aàð Ø ¨Ð#< 1 1¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUà ]Ð 9  ¸¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆõ
 ˜a‘.”. FÒ*ˆØ	�Š�gÕ:¸7ÈgÐVÑVÔVÑWÔWÐWÐWð �KŠK˜˜ÑÔˆØ�KŠK˜˜ÑÔˆð 	
�Š�J ! Ñ$­O¸A¼GÑ,DÔ,DˆÑEÔE€AØˆa�ˆ7€Nr1   Úarg1Úarg2c                 óV  — | j         d d…         }|j         d d…         }t          ||¦  «        }t          |¦  «        }||                      d¦  «        |                      d¦  «        gz  }t          |¦  «        }||                     d¦  «        |                     d¦  «        gz  }||fS )Nr˜  rˆ   )r…   r#   r¹   r‘   )rS  rT  Úarg1_batch_sizesÚarg2_batch_sizesÚexpand_batch_portionÚarg1_expand_sizeÚarg2_expand_sizes          r/   r  r  d  s¨   € ð
 ”z # 2 #”ÐØ”z # 2 #”ÐÝ,Ð-=Ð?OÑPÔPÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐØÐ-Ð-Ð-r1   c                 óÞ   — |rt          | ||¦  «         t          | |¦  «        \  }}|| j        k    r| n|                      |¦  «        }||j        k    r|n|                     |¦  «        }||fS r,   )r¥  r  r…   Úexpand)rS  rT  rœ  rY  rZ  Úarg1_broadcastedÚarg2_broadcasteds          r/   rà  rà  u  s�   € ð ð 1Ý˜t T¨4Ñ0Ô0Ð0å)EÀdÈDÑ)QÔ)QÑ&ÐÐ&ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð Ð-Ð-Ð-r1   r’   c                 óv   — | j         d d…         }|j        dk    p| j        dz
  |j        k    o
|j         |k    }|S )Nrˆ   rµ   )r…   r“   )rÎ   r’   Úexpected_batched_rhs_shapeÚvector_cases       r/   Úlinalg_solve_is_vector_rhsrb  ‰  sK   € Ø!&¤¨S¨b¨SÔ!1ÐØ”* ’/ð ØŒ
�Q‰˜%œ*Ò$ÐR¨¬Ð8RÒ)Rð ð Ðr1   )rÊ   ré  r´  r   r  r  c                ó  ‡ ‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         t	          ‰ ‰¦  «        }|r‰                     d¦  «        n‰}	t          ‰ |	|d¦  «         t          |	‰ ¦  «        \  }
}t          j        |p| d„ ¦  «         |r
|
d d…         n|
}t          j        |t          || ¦  «        ‰j        ‰j
        ¬¦  «        }‰ j        }‰ j        }t          j        |t          |d¦  «        ‰ j        ‰ j
        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }||||f}||||f}t          d	„ |D ¦   «         ¦  «        rjt!          ||¦  «        D ]Y\  }}t#          ||j        ¦  «         |                     |j        |                     ¦   «         ¦  «         t)          ||d¬
¦  «         ŒZ|S )Nzlinalg.solvec                  ó*   •— d‰ j         › d‰j         › d�S )NzKlinalg.solve: Expected A and B to have the same dtype, but found A of type r'  r  r}   )r›  r°  s   €€r/   rT   z"_linalg_solve_ex.<locals>.<lambda>   s0   ø€ ð9ØŒwð9ð 9Ø'(¤wð9ð 9ð 9ð r1   rˆ   c                  ó   — dS )Nz•linalg.solve: Vector broadcasting of the left hand side is not supported for left=False. In this case linalg.solve is equivalent to B / A.squeeze(-1)r5   r5   r1   r/   rT   z"_linalg_solve_ex.<locals>.<lambda>«  s   € ðKð r1   rþ  Fr}   r˜  c              3   ó   K  — | ]}|d uV — Œ	d S r,   r5   )r;   r<   s     r/   rb   z#_linalg_solve_ex.<locals>.<genexpr>Ã  s&   è è € Ð
&Ð
&˜Qˆ1�Dˆ=Ð
&Ð
&Ð
&Ð
&Ð
&Ð
&r1   )Ú	copy_fromÚcopy_toÚexact_dtype)rœ   rE   rV   rM   rb  Ú	unsqueezer³  r  rÿ  r   rp   r…   r“   r„   r  ÚallÚzipr   r  r¼   r!   )r›  r°  rÊ   ré  r´  r   r  r  ra  ÚB_ÚB_broad_shaperB   Úresult_shapeÚresult_r…   r“   ÚLU_Úpivots_Úinfo_rÂ   Úresr7  Úos   ``                     r/   Ú_linalg_solve_exrv  ‘  s<  øø€ õ ˜1˜nÑ-Ô-Ð-Ý	„LØ	Œ�1”7Òð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ -¨Q°Ñ2Ô2€KØ'Ð	.ˆ�Š�R‰Œˆ¨Q€BÝ�a˜˜T >Ñ2Ô2Ð2Ý3°B¸Ñ:Ô:Ñ€M�1Ý	„LØÐ�K�ð	
ð 	
ñô ð ð *5ÐG�=  " Ô%Ð%¸-€LÝÔ!ØÝ*¨<¸T¸ÑBÔBØŒgØŒxð	ñ ô €Gð ŒG€EØŒ6€DÝ
Ô
ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	ñ ô €Cð �kŠk˜%   œ*­E¬KˆkÑ8Ô8€GØ�KŠK˜˜c˜r˜cœ
­%¬+ˆKÑ6Ô6€EØ�2�v˜tÐ
$€CØ�C˜ %Ð
(€CÝ
Ð
&Ð
& #Ð
&Ñ
&Ô
&Ñ&Ô&ð FÝ˜˜S‘M”Mð 	Fð 	F‰DˆAˆqå˜a ¤Ñ)Ô)Ð)à�MŠM˜!œ' 1§8¢8¡:¤:Ñ.Ô.Ð.Ý Q°¸uÐEÑEÔEÐEÐEØ€Jr1   )rÊ   ÚunitriangularrÂ   rw  rÂ   c                ó
  — |€|                       dg¦  «        }t          |t          ¦  «        sJ ‚t          | ||d¦  «         t	          || d ¦  «        \  }}|                     dd¦  «                             ¦   «         o|                     ¦   «         }|rt          ||j	        ¦  «        }nYt          ||j	        ¦  «        rD|                     |                     dd¦  «        j	        ¦  «         |                     dd¦  «         |S )Nr   zlinalg.solve_triangularr˜  rˆ   )r„   r_   r   r³  rà  rÖ  r6  Úis_conjr   r…   r    Úresize_Ú
transpose_)	r›  r°  r¿  rÊ   rw  rÂ   rm  ÚA_Úavoid_copy_As	            r/   Úlinalg_solve_triangular_metar~  Í  sõ   € ð €{Ø�kŠk˜1˜#ÑÔˆÝ�c�:Ñ&Ô&Ð&Ð&Ð&Ý�a˜˜DÐ";Ñ<Ô<Ð<Ý.¨q°!°TÑ:Ô:�F€BˆØ—<’<  BÑ'Ô'×5Ò5Ñ7Ô7ÐH¸B¿JºJ¹L¼L€LØð #Ý  R¤XÑ.Ô.ˆˆõ    R¤XÑ.Ô.ð 	#Ø�KŠK˜Ÿš R¨Ñ,Ô,Ô2Ñ3Ô3Ð3Ø�NŠN˜2˜rÑ"Ô"Ð"Ø€Jr1   ÚXÚM)ri  rÖ  c                 ó   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «         ‰j        t           j        k    rvt          ‰ ‰¦  «        \  }}t          j        |t          |d¬¦  «        ‰ j	        ‰ j
        ¬¦  «        }t          j        |t          |d¬¦  «        ‰j	        ‰j
        ¬¦  «        }nk‰j        t           j        k    s‰j        t           j        k    r+t          j        ‰ ¦  «        }‰                      dg¦  «        }nt          j        dd	„ ¦  «         ||fS )
NrÞ   c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected b to have at least 2 dimensions, but it has rÜ  rÝ  rŸ   s   €r/   rT   z'triangular_solve_meta.<locals>.<lambda>ò  s!   ø€ ð9Øœ)ð9ð 9ð 9ð r1   c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected A to have at least 2 dimensions, but it has rÜ  rÝ  r£  s   €r/   rT   z'triangular_solve_meta.<locals>.<lambda>ù  r  r1   Útriangular_solveFrÆ  rþ  r   c                  ó   — dS )Nz+triangular_solve: Got an unexpected layout.r5   r5   r1   r/   rT   z'triangular_solve_meta.<locals>.<lambda>  s   € Ð$Q€ r1   )rE   rV   r“   r¥  ro   Ústridedr  rÿ  r   rM   rp   Ú
sparse_csrÚ
sparse_bsrr�   r„   )	r†   r›  r¿  rÖ  rw  Úself_broadcast_sizeÚA_broadcast_sizeÚsolutionÚcloned_coefficients	   ``       r/   Útriangular_solve_metar�  ç  s  øø€ õ 
„LØŒ	�QŠð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð õ ˜4 Ð$6Ñ7Ô7Ð7à„x•5”=Ò Ð Ý0LÈTÐSTÑ0UÔ0UÑ-ÐÐ-ÝÔ&Ø$Ý.Ð/BÈeÐTÑTÔTØ”*Ø”;ð	
ñ 
ô 
ˆõ #Ô0Ø!Ý.Ð/?È5ÐQÑQÔQØ”'Ø”8ð	
ñ 
ô 
ÐÐð 
Œ•UÔ%Ò	%Ð	%¨¬µUÔ5EÒ)EÐ)EÝÔ# DÑ)Ô)ˆØ!Ÿ^š^¨Q¨CÑ0Ô0ÐÐåŒ�UÐQÐQÑRÔRÐRØÐ'Ð'Ð'r1   c                 ó~  — t          | d¦  «         t          | d¦  «         |                      | j        d d…         ¦  «        }|                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }|||fS )Nz
linalg.detr˜  FrÆ  rˆ   r}   r  )r›  Údetr   r  s       r/   Ú_linalg_det_metar�    s£   € å�a˜Ñ&Ô&Ð&Ý˜1˜lÑ+Ô+Ð+à
�+Š+�a”g˜c˜r˜c”lÑ
#Ô
#€Cà	
�Š�Q”WÑ	Ô	€BØ‡N‚N�1”7Õ7¸¼È5ÐQÑQÔQÑRÔRÐRà�[Š[˜œ  " œ­U¬[ˆ[Ñ9Ô9€FØ��Fˆ?Ðr1   c                 óš  ‡ ‡‡‡‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰j        dk    d„ ¦  «         |rdndŠt          j        ‰j        ‰         ‰j        d         k    ˆfd„¦  «         t          j        ‰j        ‰         ‰ j        d         k    ˆfd„¦  «         t          j        ‰j        d         ‰ j        d         k    d„ ¦  «         t          j        ‰ j        ‰j        z
  d	k    ˆ ˆfd
„¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ j        dk    re‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         ‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          d‰‰ d¦  «         t          d‰‰ d¦  «         t          j        ‰j        t          ‰j        d¬¦  «        ‰j        ‰j        ¬¦  «        S )NrÞ   c                  ó   — dS )Nz3torch.ormqr: input must have at least 2 dimensions.r5   r5   r1   r/   rT   zormqr.<locals>.<lambda>0  ó   € Ð!V€ r1   c                  ó   — dS )Nz3torch.ormqr: other must have at least 2 dimensions.r5   r5   r1   r/   rT   zormqr.<locals>.<lambda>3  r“  r1   r˜  rˆ   c                  ó   •— d‰ › d�S )Nútorch.ormqr: other.shape[z0] must be greater than or equal to tau.shape[-1]r5   ©Úleft_size_conditions   €r/   rT   zormqr.<locals>.<lambda>9  s   ø€ ÐqÐ,?ÐqÐqÐq€ r1   c                  ó   •— d‰ › d�S )Nr–  z"] must be equal to input.shape[-2]r5   r—  s   €r/   rT   zormqr.<locals>.<lambda>=  s   ø€ ÐcÐ,?ÐcÐcÐc€ r1   c                  ó   — dS )NzHtorch.ormqr: tau.shape[-1] must be less than or equal to input.shape[-1]r5   r5   r1   r/   rT   zormqr.<locals>.<lambda>B  rò  r1   rµ   c                  ó(   •— d‰j         › d‰ j         › �S )Nz[torch.ormqr: Expected tau to have one dimension less than input, but got tau.ndim equal to rö  rÝ  r÷  s   €€r/   rT   zormqr.<locals>.<lambda>G  rø  r1   c                  ó(   •— d‰j         › d‰ j         › �S )Nzhtorch.ormqr: Expected other to have the same number of dimensions as input, but got other.ndim equal to rö  rÝ  ©rÎ   r’   s   €€r/   rT   zormqr.<locals>.<lambda>N  s1   ø€ ð`Ø+0¬:ð`ð `ØSXÔS]ð`ð `ð r1   c                  ó   •— d‰ › �S )NzWtorch.ormqr: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r5   rú  s   €r/   rT   zormqr.<locals>.<lambda>Y  rü  r1   c                  ó   •— d‰ › �S )NzYtorch.ormqr: Expected batch dimensions of other to be equal to input.shape[:-2], but got r5   )Úactual_batch_other_shapes   €r/   rT   zormqr.<locals>.<lambda>b  s   ø€ ðQØ6NðQð Qð r1   c                  ó(   •— d‰ j         › d‰j         › �S )NzPtorch.ormqr: Expected input and tau to have the same dtype, but input has dtype z and tau has dtype r}   r÷  s   €€r/   rT   zormqr.<locals>.<lambda>j  s0   ø€ ðOØ#(¤;ðOð OØCFÄ9ðOð Oð r1   c                  ó(   •— d‰ j         › d‰j         › �S )NzRtorch.ormqr: Expected input and other to have the same dtype, but input has dtype z and other has dtype r}   r�  s   €€r/   rT   zormqr.<locals>.<lambda>q  s0   ø€ ðSØ#(¤;ðSð SØEJÄ[ðSð Sð r1   ztorch.ormqrrï  r’   FrÆ  rþ  )	rE   rV   r“   r…   rM   r¹  rÿ  r   rp   )	rÎ   rï  r’   rÊ   rÖ  Úexpected_batch_shaper   rû  r˜  s	   ```   @@@r/   Úormqrr¤  &  sú  øøøøøø€ õ 
„LØŒ
�aŠÐVÐVñô ð õ 
„LØŒ
�aŠÐVÐVñô ð ð !%Ð,˜"˜"¨"ÐÝ	„LØŒÐ'Ô(¨C¬I°b¬MÒ9ØqÐqÐqÐqñô ð õ 
„LØŒÐ'Ô(¨E¬K¸¬OÒ;ØcÐcÐcÐcñô ð õ
 
„LØŒ	�"Œ˜œ RœÒ(ØZÐZñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�e”jÒ ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø$œ{¨3¨B¨3Ô/ÐØ!$¤¨3¨B¨3¤ÐÝŒØ"Ð&:Ò:ðð ð ð ñ	
ô 	
ð 	
ð $)¤;¨s°¨sÔ#3Ð ÝŒØ$Ð(<Ò<ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�u”{Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �M 3¨¨uÑ5Ô5Ð5Ý�M 5¨%°Ñ9Ô9Ð9åÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r1   c                ó„  ‡ ‡‡— t          j        t          ‰¦  «        d‰z  k    ˆˆfd„¦  «         ‰ j        }|‰dz   k    }|}| }|r/t	          d|¦  «        D ]}|o‰                      |¦  «        dk    }Œn.t	          d|¦  «        D ]}|o‰                      |¦  «        dk    }Œt          j        |p|ˆˆ fd„¦  «         d S )NrÞ   c                  ó4   •— dd‰ z  › dt          ‰¦  «        › �S )Nzpadding size is expected to be rÞ   z, but got: ©r¸   )rs   Úpaddings   €€r/   rT   z,_padding_check_valid_input.<locals>.<lambda>…  s"   ø€ ÐT°!°c±'ÐTÐTÅcÈ'ÁlÄlÐTÐT€ r1   rµ   r   c                  ó0   •— d‰ dz   › d‰ dz   › d‰j         › �S )Nz	Expected rµ   zD or rÞ   zcD (batch mode) tensor with possibly 0 batch size and other non-zero dimensions for input, but got: r  )rs   rÎ   s   €€r/   rT   z,_padding_check_valid_input.<locals>.<lambda>š  sC   ø€ ðO˜˜a™ð Oð O c¨A¡gð Oð OØAFÄðOð Oð r1   )rE   rV   r¸   r“   rº   r‘   )rÎ   r¨  rs   Ú	input_dimÚis_batch_modeÚvalid_batch_modeÚvalid_non_batch_moderÉ   s   ```     r/   Ú_padding_check_valid_inputr®  ‚  s#  øøø€ Ý	„LÝˆG‰Œ˜˜C™ÒØTÐTÐTÐTÐTñô ð ð
 ”
€Ià #¨¡'Ò*€Mà$ÐØ,Ð,Ðàð Oå�q˜)Ñ$Ô$ð 	Gð 	GˆAØ/ÐF°E·J²J¸q±M´MÀQÒ4FÐÐð	Gõ �q˜)Ñ$Ô$ð 	Oð 	OˆAØ#7Ð#N¸E¿JºJÀq¹M¼MÈQÒ<NÐ Ð õ 
„LØÐ0Ð0ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r1   c                óü  ‡ ‡‡‡‡	‡
— d}dŠd}‰ j         dk    r‰                      d¦  «        }‰dz  Š|dz  }t          ‰ |d¬¦  «         |\  Š	Š
‰                      |¦  «        }‰                      ‰¦  «        Š‰‰	z   ‰
z   Š|r%t          j        ‰	‰k     o‰
‰k     ˆˆ ˆ	ˆ
fd„¦  «         t          j        ‰dk    ˆˆfd„¦  «         ‰ j         dk    r‰                      |‰f¦  «        S ‰                      ||‰f¦  «        S )Nr   rµ   r�   r‰   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #4: Padding size should be less than the corresponding input dimension, but got: padding (rf   ú) at dimension ú
 of input r  ©Údim_wrÎ   Úpad_lÚpad_rs   €€€€r/   rT   z_pad1d_common.<locals>.<lambda>¶  óM   ø€ ðcØ%*ðcð cØ.3ðcð cØDIðcð cØUZÔU`ðcð cð r1   c                  ó   •— d‰ › d‰› �S )Nz
input (W: z%) is too small. Calculated output W: r5   )Úinput_wÚoutput_ws   €€r/   rT   z_pad1d_common.<locals>.<lambda>¾  s   ø€ ÐU˜WÐUÐUÈ8ÐUÐU€ r1   rÞ   )r“   r‘   r®  rE   rV   r„   )rÎ   r¨  Úis_reflectionÚ	dim_planeÚnbatchÚnplanerµ  rº  r»  r¶  r·  s   `     @@@@@r/   Ú_pad1d_commonrÀ  ¡  sI  øøøøøø€ Ø€IØ€EØ€Fà„z�Q‚€Ø—’˜A‘”ˆØ�‰
ˆØ�Q‰ˆ	å˜u g°1Ð5Ñ5Ô5Ð5à�L€Eˆ5à�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠØUÐUÐUÐUÐUñô ð ð
 „z�Q‚€Ø�Š ¨Ð1Ñ2Ô2Ð2à�Š ¨°Ð9Ñ:Ô:Ð:r1   c                 ó&   — t          | |d¬¦  «        S ©NT©r¼  ©rÀ  ©rÎ   r¨  s     r/   Úmeta_reflection_pad1drÆ  Ç  ó   € õ ˜ °tÐ<Ñ<Ô<Ð<r1   c                 ó&   — t          | |d¬¦  «        S ©NFrÃ  rÄ  rÅ  s     r/   Úmeta_replication_pad1drÊ  Í  ó   € õ ˜ °uÐ=Ñ=Ô=Ð=r1   c                ó¬  ‡ ‡‡‡‡‡— dŠ|s't          j        t          |¦  «        dk    d„ ¦  «         ‰j        dk    r‰dz  Š|\  ŠŠ‰                     ‰¦  «        }|‰z   ‰z   Š|r%t          j        ‰|k     o‰|k     ˆˆˆˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         ‰                     ‰j        ¦  «        S )Nrµ   rÞ   c                  ó   — dS )Nz padding size is expected to be 2r5   r5   r1   r/   rT   z(_pad1d_backward_common.<locals>.<lambda>Ö  s   € Ð0R€ r1   r�   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r±  r  r´  s   €€€€r/   rT   z(_pad1d_backward_common.<locals>.<lambda>ã  r¸  r1   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz(grad_output width unexpected. Expected: ú, Got: r�   ©rµ  Úgrad_outputr»  s   €€€r/   rT   z(_pad1d_backward_common.<locals>.<lambda>ë  ó'   ø€ Ðe¸8ÐeÐeÈK×L\ÒL\Ð]bÑLcÔLcÐeÐe€ r1   ©rE   rV   r¸   r“   r‘   r„   r…   )	rÓ  rÎ   r¨  r¼  rº  rµ  r»  r¶  r·  s	   ``   @@@@r/   Ú_pad1d_backward_commonrÖ  Ó  s  øøøøøø€ Ø€EØð TÝŒ•S˜‘\”\ QÒ&Ð(RÐ(RÑSÔSÐSà„z�Q‚€Ø�‰
ˆà�L€Eˆ5à�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r1   Ú
grad_inputc                 ó(   — t          | ||d¬¦  «        S rÂ  ©rÖ  ©rÓ  rÎ   r¨  s      r/   Úmeta_reflection_pad1d_backwardrÛ  ñ  s   € õ " +¨u°gÈTÐRÑRÔRÐRr1   c                 ó(   — t          | ||d¬¦  «        S rÉ  rÙ  rÚ  s      r/   Úmeta_replication_pad1d_backwardrÝ  ÷  s   € õ " +¨u°gÈUÐSÑSÔSÐSr1   c                ó´  ‡ ‡‡‡	‡
‡‡‡‡‡‡— dŠdŠd}d}t          ‰ |d¬¦  «         ‰ j        }|dk    r$‰                      d¦  «        }‰dz  Š‰dz  Š|dz  }|\  ŠŠŠŠ‰                      |¦  «        }‰                      ‰¦  «        Š	‰                      ‰¦  «        Š
‰	‰z   ‰z   Š‰
‰z   ‰z   Š|rJt          j        ‰‰
k     o‰‰
k     ˆˆ ˆˆfd„¦  «         t          j        ‰‰	k     o‰‰	k     ˆˆ ˆˆfd„¦  «         t          j        ‰dk    p‰dk    ˆ	ˆ
ˆˆfd„¦  «         ‰ j        d	k    r‰                      |‰‰f¦  «        S ‰                      ||‰‰f¦  «        S )
NrÞ   rµ   r   r‰   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r±  r  r´  s   €€€€r/   rT   z_pad2d_common.<locals>.<lambda>  r¸  r1   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #6: Padding size should be less than the corresponding input dimension, but got: padding (rf   r²  r³  r  ©Údim_hrÎ   Úpad_bÚpad_ts   €€€€r/   rT   z_pad2d_common.<locals>.<lambda>  r¸  r1   c                  ó    •— d‰ › d‰› d‰› d‰› �S )Nz
input (H: ú W: z%) is too small. Calculated output H: r5   )Úinput_hrº  Úoutput_hr»  s   €€€€r/   rT   z_pad2d_common.<locals>.<lambda>&  s?   ø€ ð=˜ð =ð = gð =ð =Ø$,ð=ð =Ø2:ð=ð =ð r1   r�   ©r®  r“   r‘   rE   rV   r„   )rÎ   r¨  r¼  Ú
dim_slicesr¾  r“   r¿  rä  rµ  ré  rº  rê  r»  rå  r¶  r·  ræ  s   `      @@@@@@@@@@r/   Ú_pad2d_commonrí  ý  sï  øøøøøøøøøøø€ Ø€EØ€EØ€JØ€Få˜u g°1Ð5Ñ5Ô5Ð5àŒ:€DØˆq‚y€yØ—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�a‰ˆ
à!(Ñ€Eˆ5�%˜à�ZŠZ˜
Ñ#Ô#€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠÐ&˜ Qšð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�Q‚€Ø�Š ¨°(Ð;Ñ<Ô<Ð<à�Š ¨°¸(ÐCÑDÔDÐDr1   c                 ó&   — t          | |d¬¦  «        S rÂ  ©rí  rÅ  s     r/   Úmeta_reflection_pad2drð  2  rÇ  r1   c                 ó&   — t          | |d¬¦  «        S rÉ  rï  rÅ  s     r/   Úmeta_replication_pad2drò  8  rË  r1   c                 óÞ  ‡ ‡‡‡‡— dŠdŠd}d}|j         }|                     ¦   «         dk    r|d         }‰dz  Š‰dz  Š|dz  }|\  }}}}	||         }
|‰         }|‰         }||z   |	z   Š||z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         |                     |j         ¦  «        S )NrÞ   rµ   r   rß  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rÐ  r�   rÒ  s   €€€r/   rT   z%meta_pad2d_backward.<locals>.<lambda>^  rÔ  r1   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz)grad_output height unexpected. Expected: rÑ  r�   ©rä  rÓ  rê  s   €€€r/   rT   z%meta_pad2d_backward.<locals>.<lambda>b  ó'   ø€ Ðf¸HÐfÐfÈ[×M]ÒM]Ð^cÑMdÔMdÐfÐf€ r1   )r…   rs   rE   rV   r‘   r„   )rÓ  r†   r¨  r½  r¾  rS   r¶  r·  ræ  rå  r¿  ré  rº  rä  rµ  rê  r»  s   `            @@@@r/   Úmeta_pad2d_backwardrù  >  s1  øøøøø€ ð €EØ€EØ€IØ€Fà”€JØ‡x‚x�z„z�Q‚€Ø˜A”ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à!(Ñ€Eˆ5�%˜à˜	Ô"€FØ˜Ô€GØ˜Ô€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð ð �>Š>˜$œ*Ñ%Ô%Ð%r1   c          	      óR  ‡ ‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡— dŠ	dŠdŠd}t          ‰ |d¬¦  «         ‰ j        dk    }|r)‰                      d¦  «        }‰	dz  Š	‰dz  Š‰dz  Š|dz  }|\  ŠŠŠŠŠŠ‰                      |¦  «        }‰                      ‰¦  «        Š
‰                      ‰¦  «        Š‰                      ‰	¦  «        Š‰
‰z   ‰z   Š‰‰z   ‰z   Š‰‰z   ‰z   Š|rot          j        ‰‰k     o‰‰k     ˆ	ˆ ˆˆfd„¦  «         t          j        ‰‰k     o‰‰k     ˆˆ ˆˆfd„¦  «         t          j        ‰‰
k     o‰‰
k     ˆˆ ˆˆfd	„¦  «         t          j        ‰dk    p‰dk    p‰dk    ˆ
ˆˆˆˆˆfd
„¦  «         |r‰                      ||‰‰‰f¦  «        S ‰                      |‰‰‰f¦  «        S )Nr�   rÞ   rµ   r   r‰   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r±  r  r´  s   €€€€r/   rT   z_pad3d_common.<locals>.<lambda>„  r¸  r1   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S râ  r  rã  s   €€€€r/   rT   z_pad3d_common.<locals>.<lambda>‹  r¸  r1   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S )NzcArgument #8: Padding size should be less than the corresponding input dimension, but got: padding (rf   r²  r³  r  )Údim_drÎ   Úpad_bkÚpad_fs   €€€€r/   rT   z_pad3d_common.<locals>.<lambda>’  sM   ø€ ðdØ%*ðdð dØ.4ðdð dØEJðdð dØV[ÔVaðdð dð r1   c                  ó,   •— d‰ › d‰› d‰› d‰› d‰› d‰› �S )Nz
input (D: ú H: rè  z%) is too small. Calculated output D: r5   )Úinput_dré  rº  Úoutput_drê  r»  s   €€€€€€r/   rT   z_pad3d_common.<locals>.<lambda>š  se   ø€ ðK˜ð Kð K gð Kð K°7ð Kð KØ$,ðKð KØ2:ðKð KØ@HðKð Kð r1   rë  )rÎ   r¨  r¼  r½  Ú
batch_moder¾  r¿  rÿ  rä  rµ  r  ré  rº  r  rê  r»  rå  r   r  r¶  r·  ræ  s   `      @@@@@@@@@@@@@@@r/   Ú_pad3d_commonr  g  s‚  øøøøøøøøøøøøøøøø€ Ø€EØ€EØ€EØ€Iå˜u g°1Ð5Ñ5Ô5Ð5à”˜q’€JØð Ø—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à07Ñ-€Eˆ5�%˜  và�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ0 ¨Ò 0ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠÐ7˜ QšÐ7¨(°aª-ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð GØ�Š ¨°¸(ÀHÐMÑNÔNÐNà�Š ¨°(¸HÐEÑFÔFÐFr1   c                 ó&   — t          | |d¬¦  «        S rÂ  ©r  rÅ  s     r/   Úmeta_reflection_pad3dr
  ¦  rÇ  r1   c                 ó&   — t          | |d¬¦  «        S rÉ  r	  rÅ  s     r/   Úmeta_replication_pad3dr  ¬  rË  r1   c                 óö  ‡ ‡‡‡‡‡‡— t          j        t          |¦  «        dk    d„ ¦  «         |j        dk    sJ ‚‰ j        |j        k    sJ ‚dŠdŠdŠ|j        dk    r‰dz  Š‰dz  Š‰dz  Š|\  }}}}}}|                     ‰¦  «        }	|                     ‰¦  «        }
|                     ‰¦  «        }|	|z   |z   Š|
|z   |z   Š||z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd	„¦  «         |                     |j        ¦  «        S )
Né   c                  ó   — dS )Nz padding size is expected to be 6r5   r5   r1   r/   rT   z%meta_pad3d_backward.<locals>.<lambda>¼  s   € Ð,N€ r1   r�   rÞ   rµ   rû  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rÐ  r�   rÒ  s   €€€r/   rT   z%meta_pad3d_backward.<locals>.<lambda>Ô  rÔ  r1   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rö  r�   r÷  s   €€€r/   rT   z%meta_pad3d_backward.<locals>.<lambda>Ø  rø  r1   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S )Nz(grad_output depth unexpected. Expected: rÑ  r�   )rÿ  rÓ  r  s   €€€r/   rT   z%meta_pad3d_backward.<locals>.<lambda>Ü  rÔ  r1   rÕ  )rÓ  rÎ   r¨  r¶  r·  ræ  rå  r  r   r  ré  rº  rÿ  rä  rµ  r  rê  r»  s   `           @@@@@@r/   Úmeta_pad3d_backwardr  ²  sÃ  øøøøøøø€ õ 
„L•�W‘” Ò"Ð$NÐ$NÑOÔOÐOØŒ:˜Š>ˆ>ˆ>ˆ>ØÔ˜uœzÒ)Ð)Ð)Ð)à€EØ€EØ€Eà„z�Q‚€Ø�‰
ˆØ�‰
ˆØ�‰
ˆà07Ñ-€Eˆ5�%˜  và�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r1   rÞ   Úpc                 ój  — t          j        |                      ¦   «         d„ ¦  «         |                      d¦  «        }|dk    r4|                      dg¦  «                             t           j        ¬¦  «        S |                      ||dz
  z  dz  f¦  «                             t           j        ¬¦  «        S )Nc                  ó   — dS )Nz(_pdist_forward requires contiguous inputr5   r5   r1   r/   rT   z%meta__pdist_forward.<locals>.<lambda>æ  s   € Ð&P€ r1   r   rµ   r™   rÞ   )rE   rV   r6  r‘   r„   rÿ   rå  )r†   r  rè   s      r/   Úmeta__pdist_forwardr  â  s®   € õ 
„LØ×ÒÑÔÐPÐPñô ð ð 	�	Š	�!‰Œ€AØˆA‚v€vØ�~Š~˜q˜cÑ"Ô"×%Ò%µEÔ4RÐ%ÑSÔSÐSà�~Š~˜q A¨¡E™{¨aÑ/Ð1Ñ2Ô2×5Ò5ÝÔ8ð 6ñ 
ô 
ð 	
r1   ÚgradÚpdistc                 óâ   — t          j        |                     ¦   «         d„ ¦  «         t          j        |                     ¦   «         d„ ¦  «         t          j        |t           j        ¬¦  «        S )Nc                  ó   — dS )Nz._pdist_backward requires self to be contiguousr5   r5   r1   r/   rT   z&meta__pdist_backward.<locals>.<lambda>õ  s   € Ð&V€ r1   c                  ó   — dS )Nz/_pdist_backward requires pdist to be contiguousr5   r5   r1   r/   rT   z&meta__pdist_backward.<locals>.<lambda>ø  s   € Ð'X€ r1   r™   )rE   rV   r6  r�   rå  )r  r†   r  r  s       r/   Úmeta__pdist_backwardr  ñ  ss   € õ 
„LØ×ÒÑÔÐVÐVñô ð õ 
„LØ×ÒÑÔÐXÐXñô ð õ Ô˜DµÔ0NÐOÑOÔOÐOr1   )r%  r$  c                óÄ  ‡ ‡‡‡	‡
‡— ‰                      d¦  «        }‰                      d¦  «        }‰                      d¦  «        }‰                      |||f¦  «        Š t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        ‰j        cxk    o
‰j        k    nc ˆˆˆ fd„¦  «         ‰j        }‰j        Š	|d         Š
|d         Št          j        ‰	d         ‰
k    o‰	d         ‰k    ˆ	ˆ
ˆfd„¦  «         ‰                      ‰                       ¦   «         ¦  «        S )	Nr   rµ   rÞ   r�   c                  ó   — dS ©Nzbatch1 must be a 3D tensorr5   r5   r1   r/   rT   zmeta_baddbmm.<locals>.<lambda>  ó   € Ð,H€ r1   c                  ó   — dS ©Nzbatch2 must be a 3D tensorr5   r5   r1   r/   rT   zmeta_baddbmm.<locals>.<lambda>  r!  r1   c                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )Nz+Input dtypes must be the same, got: input: z
, batch1: z
, batch2: r}   )Úbatch1Úbatch2r†   s   €€€r/   rT   zmeta_baddbmm.<locals>.<lambda>  s*   ø€ Ðz¸d¼jÐzÐzÐTZÔT`ÐzÐzÐlrÔlxÐzÐz€ r1   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S ©Nz@Expected size for first two dimensions of batch2 tensor to be: [rf   z] but got: [r   rµ   ú].r5   ©Úbatch2_sizesÚbsÚcontraction_sizes   €€€r/   rT   zmeta_baddbmm.<locals>.<lambda>  sY   ø€ ð[Øð[ð [Ø&ð[ð [Ø4@À´Oð[ð [ØGSÐTUÄð[ð [ð [ð r1   )r‘   r\  rE   rV   rs   rM   r…   r„   )r†   r%  r&  r%  r$  Údim1Údim2Údim3Úbatch1_sizesr+  r,  r-  s   ```      @@@r/   Úmeta_baddbmmr2  ý  sl  øøøøøø€ ð �;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;˜˜d DÐ)Ñ*Ô*€DÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„LØŒ
�f”lÐ2Ð2Ò2Ð2 f¤lÒ2Ð2Ð2Ð2ØzÐzÐzÐzÐzÐzñô ð ð ”<€LØ”<€LØ	�aŒ€BØ# A”ÐÝ	„LØ�QŒ˜2ÒÐE ,¨q¤/Ð5EÒ"Eð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r1   c                óN   — t          j        | ¦  «                             ¦   «         S r,   ©rE   r�   r©   ©r†   rå   s     r/   Úmeta_bernoullir6    s!   € õ Ô˜DÑ!Ô!×,Ò,Ñ.Ô.Ð.r1   ç      à?c                 ó   — | S r,   r5   ©r†   r  rå   s      r/   Úmeta_bernoulli_r:    ó   € à€Kr1   c                 óN   — t          j        | ¦  «                             ¦   «         S r,   r4  r9  s      r/   Úmeta_bernoulli_pr=  $  s!   € õ Ô˜DÑ!Ô!×,Ò,Ñ.Ô.Ð.r1   c                 ó*   — t          j        | ¦  «        S r,   ©rE   r�   r5  s     r/   Úmeta_poissonr@  *  s   € õ Ô˜DÑ!Ô!Ð!r1   c                 óÆ   — t          j        |
|                      ¦   «         k     d„ ¦  «         t          j        | t           j        ¬¦  «        }t          j        | ¦  «        |fS )Nc                  ó   — dS )NzJError in fused_moving_avg_obs_fake_quant_cpu: ch_axis must be < self.dim()r5   r5   r1   r/   rT   z6meta__fused_moving_avg_obs_fq_helper.<locals>.<lambda>B  ó   € Ð\€ r1   r}   )rE   rV   rs   r�   Úbool)r†   Úobserver_onÚfake_quant_onÚrunning_minÚrunning_maxÚscaleÚ
zero_pointÚaveraging_constÚ	quant_minÚ	quant_maxÚch_axisÚper_row_fake_quantÚsymmetric_quantÚmasks                 r/   Ú$meta__fused_moving_avg_obs_fq_helperrR  0  s]   € õ  
„LØ�$—(’(‘*”*ÒØ\Ð\ñô ð õ Ô˜D­¬
Ð3Ñ3Ô3€DÝÔ˜TÑ"Ô" DÐ)Ð)r1   c                 óL  ‡‡‡‡— t          j        |                      ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         | j        \  ŠŠ|j        \  ŠŠt          j        ‰‰k    ˆˆˆˆfd„¦  «         |                      ‰‰¦  «        S )NrÞ   c                  ó   — dS )Nza must be 2Dr5   r5   r1   r/   rT   zmeta_mm.<locals>.<lambda>K  ó   €  ~€ r1   c                  ó   — dS )Nzb must be 2Dr5   r5   r1   r/   rT   zmeta_mm.<locals>.<lambda>L  rU  r1   c            	      ó"   •— d‰› d‰ › d‰› d‰› d�	S )Nz/a and b must have same reduction dim, but got [rf   z] X [r)  r5   )ÚM1ÚM2ÚNr  s   €€€€r/   rT   zmeta_mm.<locals>.<lambda>Q  s-   ø€ Ð[À!Ð[Ð[ÀrÐ[Ð[ÐPRÐ[Ð[ÐVWÐ[Ð[Ð[€ r1   )rE   rV   rs   r…   r„   )ÚaÚbrX  rY  rZ  r  s     @@@@r/   Úmeta_mmr]  H  s¨   øøøø€ õ 
„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6Ý	„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6ØŒG�E€A€rØŒG�E€BˆÝ	„LØ
ˆbŠØ[Ð[Ð[Ð[Ð[Ð[Ð[ñô ð ð �;Š;�q˜!ÑÔÐr1   c                 óš   ‡ ‡— |r.t          ˆˆ fd„t          ‰ j        ¦  «        D ¦   «         ¦  «        S t          j        ‰ j        ‰¦  «        S )Nc              3   ó>   •K  — | ]}|‰vr‰j         |         nd V — ŒdS )rµ   Nr  )r;   rÒ   Údimsr†   s     €€r/   rb   z+_compute_reduction_shape.<locals>.<genexpr>X  s5   øè è € ÐUÐU¸q a¨t m m�T”Z ”]�]¸ÐUÐUÐUÐUÐUÐUr1   )rU   rº   r“   r?   Úcompute_reduction_output_shaper…   )r†   r`  rb  s   `` r/   r`  r`  V  sR   øø€ Øð VÝÐUÐUÐUÐUÐUÅEÈ$Ì)ÑDTÔDTÐUÑUÔUÑUÔUÐUåÔ/°´
¸DÑAÔAÐAr1   Ústrc                 óÞ   — t          | t          j        j        ¦  «        r| j        j        S t          | d¦  «        r1t          | j        d¦  «        r| j        j        dk    r| j        j        S dS )Nrp   rh   rn   rK  )r_   rE   Ú_subclassesÚ
FakeTensorÚfake_devicerh   Úhasattrrp   )r	  s    r/   rL  rL  a  sn   € Ý�&�%Ô+Ô6Ñ7Ô7ð 	ØÔ!Ô&Ð&å�˜Ñ!Ô!ðå�F”M 6Ñ*Ô*ðð ŒMÔ &Ò(Ð(àŒ}Ô!Ð!àˆvr1   Úinput_tensorr¼   r¨  ÚdilationÚis_transposedÚgroupsÚoutput_paddingc                 óÊ  — dt           dt           dt           dt           dt           dt           fd„}dt           dt           dt           dt           dt           dt           dt           fd	„}	|j        d
d …         }
| j        d
d …         }|r||j        d         z  }n;|j        d         }|j        d         |z  | j        d         k    rt          d¦  «        ‚| j        d         |g}t          |t          ¦  «        r|gt          |¦  «        z  }n,t          |¦  «        dk    r|d         gt          |¦  «        z  }t          |t          ¦  «        r|gt          |¦  «        z  }n,t          |¦  «        dk    r|d         gt          |¦  «        z  }t          |t          ¦  «        r|gt          |¦  «        z  }n,t          |¦  «        dk    r|d         gt          |¦  «        z  }d }|rXt          |t          ¦  «        r|gt          |¦  «        z  }n/t          |¦  «        dk    r|d         gt          |¦  «        z  }n|}t          t          |¦  «        ¦  «        D ]Œ}|rH|                      |	||         ||         ||         |
|         ||         ||         ¦  «        ¦  «         ŒL|                      |||         ||         ||         |
|         ||         ¦  «        ¦  «         Œ�|S )NÚlnr  rÉ   r9  rz  r@  c                 ó6   — | d|z  z   ||dz
  z  z
  dz
  |z  dz   S )a�  
        Formula to apply to calculate the length of some dimension of the output

        See: https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
        Returns:
            The output length
        rÞ   rµ   r5   )rn  r  rÉ   r9  rz  s        r/   Ú_formulaz+calc_conv_nd_return_shape.<locals>._formulax  s.   € ð �Q˜‘U‘
˜Q ! a¡%™[Ñ(¨1Ñ,°Ñ2°QÑ6Ð6r1   r-   c                 ó<   — | dz
  |z  d|z  z
  ||dz
  z  z   |z   dz   S )aü  
        Formula to apply to calculate the length of some dimension of the output
        if transposed convolution is used.
        See: https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
            op: output padding in that dim

        Returns:
            The output length
        rµ   rÞ   r5   )rn  r  rÉ   r9  rz  r-   s         r/   Ú_formula_transposedz6calc_conv_nd_return_shape.<locals>._formula_transposed‰  s2   € ð" �Q‘˜!‰|˜a !™eÑ# a¨1¨q©5¡kÑ1°BÑ6¸Ñ:Ð:r1   rÞ   rµ   r   zInvalid channel dimensions)r�  r…   rþ   r_   r   r¸   rº   r»   )rh  r  r¼   r¨  ri  rj  rk  rl  rp  rr  Úkernel_sizer`  Úout_channelsÚ	ret_shapeÚoutput_padding_listrÒ   s                   r/   Úcalc_conv_nd_return_shaperw  n  s.  € ð7•Sð 7�Sð 7¥Sð 7­Sð 7µSð 7½Sð 7ð 7ð 7ð 7ð";¥ð ;­ð ;µð ;½ð ;Åð ;Íð ;ÕQTð ;ð ;ð ;ð ;ð& ”,˜q˜r˜rÔ"€KØÔ˜a˜b˜bÔ!€DØð =Ø ¤¨Q¤Ñ/ˆˆà”| A”ˆØŒ<˜Œ?˜VÑ# |Ô'9¸!Ô'<Ò<Ð<ÝÐ;Ñ<Ô<Ð<àÔ# AÔ&¨Ð5€IÝ�&�'Ñ"Ô"ð )Ø��C ™IœIÑ%ˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”)��s 4™yœyÑ(ˆå�'�7Ñ#Ô#ð +Ø�)�c $™iœiÑ'ˆˆÝ	ˆW‰Œ˜Ò	Ð	Ø˜1”:�,¥ T¡¤Ñ*ˆå�(�GÑ$Ô$ð -Ø�:¥ D¡	¤	Ñ)ˆˆÝ	ˆX‰Œ˜!Ò	Ð	Ø˜Q”K�=¥3 t¡9¤9Ñ,ˆà/3ÐØð 1Ý�n¥gÑ.Ô.ð 	1Ø#1Ð"2µS¸±Y´YÑ">ÐÐÝ�Ñ Ô  AÒ%Ð%Ø#1°!Ô#4Ð"5½¸D¹	¼	Ñ"AÐÐà"0Ðå•3�t‘9”9ÑÔð ð ˆàð 	Ø×ÒØ#Ð#Ø˜”GØ˜A”JØ˜Q”KØ ”NØ˜1”IØ'¨Ô*ñô ñ	ô 	ð 	ð 	ð ×ÒØ�˜˜aœ '¨!¤*¨h°q¬k¸;Àq¼>È6ÐRSÌ9ÑUÔUñô ð ð ð Ðr1   c                 ó\   — t           j                             | ¦  «        t           j        k    S r,   ©rE   Ú_prims_commonÚsuggest_memory_formatÚchannels_last©Útens    r/   Úis_channels_lastr  Ó  s!   € ÝÔ×4Ò4°SÑ9Ô9½UÔ=PÒPÐPr1   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc                 óv  ‡ — ‰ j         }|�|j         n|j         }	|�|j         n|j         }
ˆ fd„}‰                      |¦  «                              |¦   «         ¬¦  «        }|r+‰                      |	¦  «        }‰                      |
¦  «        }n*‰                      d¦  «        }‰                      d¦  «        }|||fS )Nc                  óª   •— t          ‰ ¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S t          j        S rB  )r  rE   r|  r6  rž   )rh  s   €r/   Úpick_memory_formatz2meta_miopen_batch_norm.<locals>.pick_memory_formatê  sJ   ø€ Ý˜LÑ)Ô)ð 	'ÝÔ&Ð&Ø×%Ò%µEÔ4KÐ%ÑLÔLð 	+ÝÔ*Ð*ÝÔ&Ð&r1   r™   r·   )r…   r„   rÿ   )rh  r  r  r€  r�  r‚  rƒ  r„  r–   Úsave_mean_shapeÚsave_var_shaper‡  rÂ   Ú	save_meanÚsave_vars   `              r/   Úmeta_miopen_batch_normrŒ  ×  sã   ø€ ð Ô"€Ið -9Ð,D�lÔ(Ð(È&Ì,€OØ*5Ð*A�[Ô&Ð&ÀvÄ|€Nð'ð 'ð 'ð 'ð 'ð ×
 Ò
  Ñ
+Ô
+×
.Ò
.Ð=OÐ=OÑ=QÔ=QÐ
.Ñ
RÔ
R€Càð 0Ø ×*Ò*¨?Ñ;Ô;ˆ	Ø×)Ò)¨.Ñ9Ô9ˆˆà ×*Ò*¨4Ñ0Ô0ˆ	Ø×)Ò)¨$Ñ/Ô/ˆà�	˜8Ð#Ð#r1   c	           
      óô   ‡ ‡— ˆ ˆfd„}	t          ‰ ‰||||||r|nd ¦  «        }
d}d}‰                      |¦  «        dk    rd|
|<   ‰                      |
¦  «        }|                      |	¦   «         ¬¦  «        }|S )Nc                  ój  •— t          ‰ ¦  «        dk    r+t          ‰ ¦  «        st          ‰¦  «        rt          j        S nt          ‰ ¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S d S ©NrK  r™   )rL  r  rE   r|  r6  rž   Úpreserve_format)rh  r  s   €€r/   r‡  z%meta_conv.<locals>.pick_memory_format		  s³   ø€ Ý�|Ñ$Ô$¨Ò.Ð.Ý Ñ-Ô-ð +Õ1AÀ&Ñ1IÔ1Ið +ÝÔ*Ð*ð+õ   Ñ-Ô-ð +ÝÔ*Ð*Ø×%Ò%µEÔ4KÐ%ÑLÔLð 	)ÝÔ*Ð*Ø×'Ò'µeÔ6KÐ'ÑLÔLð 	)ÝÔ(Ð(ð	)ð 	)r1   rµ   r   r™   )rw  r‘   r„   rÿ   )rh  r  r  r¼   r¨  ri  rj  rl  rk  r‡  Ú	shape_outÚinput_channels_dimÚoutput_channels_dimrÂ   s   ``            r/   Ú	meta_convr”  ý  s¼   øø€ ð
)ð 
)ð 
)ð 
)ð 
)ð 
)õ *ØØØØØØØØ'Ð1ˆˆ¨Tñ	ô 	€Ið ÐØÐØ×ÒÐ+Ñ,Ô,°Ò1Ð1Ø)*ˆ	Ð%Ñ&à
×
 Ò
  Ñ
+Ô
+€CØ
�&Š&Ð1Ð1Ñ3Ô3ˆ&Ñ
4Ô
4€CØ€Jr1   Úmkldnnc
           
      óè   — t          | ||||d|g ¦  «        }
|                      |
¦  «        }t          j        }|                      ¦   «         dk    rt          j        }|                     |¬¦  «        }|S )NFrû  r™   )rw  r„   rE   r|  rs   Úchannels_last_3drÿ   )rh  r  r  r¨  r¼   ri  rk  ÚattrÚscalarsÚ	algorithmr‘  rÂ   Úout_memory_formats                r/   Úmeta_mkldnn_convolution_defaultrœ  /	  s{   € õ .Ø˜& &¨'°8¸UÀFÈBñ
ô 
ˆ	ð ×$Ò$ YÑ/Ô/ˆÝ!Ô/ÐØ×ÒÑÔ Ò"Ð"Ý %Ô 6ÐØ�fŠfÐ#4ˆfÑ5Ô5ˆØˆ
r1   c                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S ©Nrˆ   r   ©r„   r…   )rh  r  r  r˜  r™  rš  s         r/   Úmeta_linear_pointwise_defaultr   F	  s8   € ð ×%Ò%Ð&Q¨Ô(:¸3¸B¸3Ô(?Ð&QÀÄÈaÄÐ&QÐ&QÑRÔRÐRr1   Úmklc                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S rž  rŸ  )rh  Úpacked_weightÚorig_weightr  rÐ   s        r/   Úmeta_mkl_linearr¥  Q	  s>   € à×)Ò)Ø@�,Ô$ S b SÔ)Ð@¨;Ô+<¸QÔ+?Ð@Ð@ñô ð r1   Úonednnc           
      óØ   — t          | ||||	d|
d ¦  «        }|t          j        t          j        fv sJ ‚|                      ||¬¦  «        }|                     t          j        ¬¦  «        }|S )NFr}   r™   )rw  rE   r2  r4  r„   rÿ   r|  )r<   Úx_scaleÚx_zpÚwÚw_scaleÚw_zpr  r¼   r¨  ri  rk  Úoutput_scaleÚoutput_zero_pointÚoutput_dtyper˜  r™  rš  r‘  rÂ   s                      r/   Úmeta_qconv2d_pointwiser°  [	  sw   € õ( .ØØØØØØØØñ	
ô 	
ˆ	ð ¥¤­u¬~Ð>Ð>Ð>Ð>Ð>Ø�kŠk˜)¨<ˆkÑ8Ô8ˆØ�fŠf¥5Ô#6ˆfÑ7Ô7ˆØˆ
r1   c                 ó´   — t          | j        ¦  «        }|j        d         |d<   |	t          j        t          j        fv sJ ‚|                      ||	¬¦  «        }|S )Nrµ   rˆ   r}   )r¹   r…   rE   r2  r4  r„   )r<   r¨  r©  rª  r«  r¬  r  r­  r®  r¯  Úpost_op_nameÚpost_op_argsÚpost_op_algorithmr;  rÂ   s                  r/   Úmeta_qlinear_pointwiserµ  ~	  sU   € õ" ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ¥¤­u¬~Ð>Ð>Ð>Ð>Ð>Ø�kŠk˜,¨lˆkÑ;Ô;ˆØˆ
r1   c                 óx   — t          | j        ¦  «        }|j        d         |d<   |                      |¦  «        }|S )Nrµ   rˆ   )r¹   r…   r„   )r<   rª  r  r;  rÂ   s        r/   Úmeta_linear_dynamic_fp16r·  –	  s7   € õ ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ�kŠk˜,Ñ'Ô'ˆØˆ
r1   Ú	quantizedr5   r·   ©rµ   c                 ó4  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        S ©Nrß  éüÿÿÿrµ   r�   rR  )Ú#max_pool2d_checks_and_compute_shapers   r‘   rE   r|  rx   rM   rp   ©rÎ   rs  r¼   r¨  ri  Ú	ceil_modeÚnInputPlaneÚoutputHeightÚoutputWidthr¾  rš   r‘   s               r/   Úmeta_quantized_max_pool2drÃ  §	  s³   € õ 0Ø�; ¨°¸9ñ
ô 
ñ		
ØØØð $)§9¢9¡;¤;°!Ò#3Ð#3�—’˜B‘”�¸ˆÝÔ+ˆØ�9Š9‰;Œ;˜!ÒÐØ ¨{Ð;ˆDˆDà˜K¨°{ÐCˆDÝŒ{ØØ”+Ø”<Ø'ð	
ñ 
ô 
ð 	
r1   c                 ó’   ‡ ‡‡‡— t          j        ‰                      ¦   «         ‰k    o‰ j        ‰         ‰k    ˆˆˆˆ fd„¦  «         d S )Nc                  ón   •— d‰ › d‰› d‰› d�d‰                      ¦   «         › d‰› d‰j        ‰         › �z   S )NzExpected a tensor of dimension z and tensor.size[z] == rf   zbut got : dimension z] = ©rs   r…   )rs   Údim_sizer‘   r	  s   €€€€r/   rT   z check_dim_size.<locals>.<lambda>É	  sU   ø€ Ð_°#Ð_Ð_ÈÐ_Ð_ÐW[Ð_Ð_Ð_Ø
f §¢¡¤Ð
fÐ
fÀÐ
fÐ
fÈfÌlÐ[cÔNdÐ
fÐ
fñg€ r1   )rE   rV   rs   r…   )r	  rs   rÇ  r‘   s   ````r/   Úcheck_dim_sizerÈ  Æ	  so   øøøø€ Ý	„LØ�
Š
‰Œ˜ÒÐ> ¤¨XÔ 6¸$Ò >ð	gð 	gð 	gð 	gð 	gð 	gð 	gñô ð ð ð r1   c                 óz  — d„ } |d|¦  «        \  }}	t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    r||	}}
n3t          |¦  «        dk    r|d         |d         }}
n |d|¦  «        \  }
} |d|¦  «        \  }}t          j        |d u p|dk    d	„ ¦  «         |                      ¦   «         d
k    r|                      d¦  «        nd}|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        | ¦  «        }t          | ||	|
|||dd||||||¦  «         |                      ¦   «         dk    r|||g}n||||g}t          j	        || j
        | j        |¬¦  «        S )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )N©rµ   rÞ   c                  ó   •— d‰ › d�S )Nzavg_pool2d: ú4 must either be a single int, or a tuple of two intsr5   ©rœ  s   €r/   rT   z1meta_avg_pool2d.<locals>.unpack.<locals>.<lambda>Û	  ó   ø€ Ð] 4Ð]Ð]Ð]€ r1   r   rµ   ©rE   rV   r¸   ©rœ  rs  ÚHÚWs   `   r/   Úunpackzmeta_avg_pool2d.<locals>.unpackØ	  ó`   ø€ ÝŒÝ�‰HŒH˜ÐØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð �ŒFˆÝ�S‘”˜Q’�ˆAˆA C¨¤FˆØ�!ˆtˆr1   rs  ©r   rµ   rÞ   c                  ó   — dS ©NzOavg_pool2d: stride must either be omitted, a single int, or a tuple of two intsr5   r5   r1   r/   rT   z!meta_avg_pool2d.<locals>.<lambda>ä	  ó   € Ða€ r1   r   rµ   r¼   r¨  c                  ó   — dS ©Nzdivisor must be not zeror5   r5   r1   r/   rT   z!meta_avg_pool2d.<locals>.<lambda>ñ	  ó   € Ð*€ r1   rß  r¼  éýÿÿÿr˜  rˆ   r�   rR  )rE   rV   r¸   rs   r‘   Úpooling_output_shaper?   r{  Úpool2d_shape_checkrx   rM   rp   )rÎ   rs  r¼   r¨  r¿  Úcount_include_padÚdivisor_overriderÔ  ÚkHÚkWÚdHÚdWÚpadHÚpadWr¾  rÀ  ÚinputHeightÚ
inputWidthrÁ  rÂ  rš   r‘   s                         r/   Úmeta_avg_pool2drê  Î	  s  € ðð ð ð ˆV�M ;Ñ/Ô/�F€BˆÝ	„LÝˆF‰Œ�yÐ ØaÐañô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”˜F 1œIˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$å	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ/°Ñ6Ô6€MÝØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆÝŒ;ØØŒkØŒ|Ø#ð	ñ ô ð r1   c                 óê   — t          | ||||||dd|	|
||||¦  «         |                      ¦   «         }|	}t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nrµ   r�   rÞ   )rß  rs   rÈ  )rÎ   Ú
gradOutputr¾  râ  rã  rä  rå  ræ  rç  rÀ  rè  ré  rÁ  rÂ  Ú
mem_formatr“   ÚnOutputPlanes                    r/   Úavg_pool2d_backward_shape_checkrï  
  s¥   € õ" ØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ �9Š9‰;Œ;€DØ€Lå�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨{Ñ;Ô;Ð;Ð;Ð;r1   c                 ój  — t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          j        t          |¦  «        dk    p%t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         t          |¦  «        dk    r|n|d         }
t          |¦  «        dk    r|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          j        |d u p|dk    d„ ¦  «         |j        }|                     ¦   «         dk    r|d	         nd}|d
         }|d         }|d         }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        |¦  «        }t          || |||	|
|||||||||¦  «         t          j	        ||j
        |j        |¬¦  «        S )Nrµ   rÞ   c                  ó   — dS )NzKavg_pool2d: kernel_size must either be a single int, or a tuple of two intsr5   r5   r1   r/   rT   z*meta_avg_pool2d_backward.<locals>.<lambda>V
  s   € Ð]€ r1   r   c                  ó   — dS rØ  r5   r5   r1   r/   rT   z*meta_avg_pool2d_backward.<locals>.<lambda>\
  rÙ  r1   c                  ó   — dS )NzGavg_pool2d: padding must either be a single int, or a tuple of two intsr5   r5   r1   r/   rT   z*meta_avg_pool2d_backward.<locals>.<lambda>b
  s   € ÐY€ r1   c                  ó   — dS rÛ  r5   r5   r1   r/   rT   z*meta_avg_pool2d_backward.<locals>.<lambda>i
  rÜ  r1   rß  r¼  rÝ  r˜  rˆ   rR  )rE   rV   r¸   r…   rs   rÞ  r?   r{  rï  rx   rM   rp   )ÚgradOutput_rÎ   rs  r¼   r¨  r¿  rà  rá  râ  rã  rä  rå  ræ  rç  Ú
input_sizer¾  rÀ  rè  ré  rÁ  rÂ  rí  s                         r/   Úmeta_avg_pool2d_backwardr÷  H
  sz  € õ 
„LÝˆKÑÔ˜AÒÐ6¥ [Ñ!1Ô!1°QÒ!6Ø]Ð]ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ	„LÝˆF‰Œ�qÒÐ@�C ™KœK¨1Ò,Ð@µ°F±´¸qÒ0@ØaÐañô ð õ �6‰{Œ{˜aÒÐˆˆ V¨A¤Y€BÝ�6‰{Œ{˜aÒÐˆˆ­3¨v©;¬;¸!Ò+;Ð+; R RÀÈÄ€BÝ	„LÝˆG‰Œ˜ÒÐ.�S ™\œ\¨QÒ.ØYÐYñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
 ”€JØ$Ÿyšy™{œ{¨aÒ/Ð/ˆZ˜Œ^ˆ^°Q€FØ˜R”.€KØ˜R”.€KØ˜B”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ,¨UÑ3Ô3€Jå#ØØØØ
Ø
Ø
Ø
ØØØØØØØØñô ð õ$ Œ;ØØŒkØŒ|Ø ð	ñ ô ð r1   c                 ó  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }	t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }
|s|nt          |¦  «        dk    r|
n|d         }|s|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | j        dv d	„ ¦  «         t          j        | p|dk    d
„ ¦  «         |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          ||||
d|¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          | ||||	|
|||||ddd||||||dd¬¦  «         | j        dk    r|                      ||||f¦  «        S |                      |||||f¦  «        S )N©rµ   r�   c                  ó   — dS ©NzFavg_pool3d: kernel_size must be a single int, or a tuple of three intsr5   r5   r1   r/   rT   z!meta_avg_pool3d.<locals>.<lambda>ž
  ó   € ÐX€ r1   r   rµ   rÞ   c                  ó   — dS ©NzJavg_pool3d: stride must be omitted, a single int, or a tuple of three intsr5   r5   r1   r/   rT   z!meta_avg_pool3d.<locals>.<lambda>¦
  rC  r1   c                  ó   — dS ©NzBavg_pool3d: padding must be a single int, or a tuple of three intsr5   r5   r1   r/   rT   z!meta_avg_pool3d.<locals>.<lambda>®
  ó   € ÐT€ r1   ©rß  rû  c                  ó   — dS ©Nz9non-empty 4D or 5D (batch mode) tensor expected for inputr5   r5   r1   r/   rT   z!meta_avg_pool3d.<locals>.<lambda>¶
  ó   € ÐK€ r1   c                  ó   — dS rÛ  r5   r5   r1   r/   rT   z!meta_avg_pool3d.<locals>.<lambda>»
  rÜ  r1   r¼  rÝ  r˜  rˆ   zavg_pool3d()T)Úcheck_input_sizerß  )rE   rV   r¸   r“   r‘   rÞ  Úpool3d_shape_checkr„   )rÎ   rs  r¼   r¨  r¿  rà  rá  ÚkTrâ  rã  ÚdTrä  rå  ÚpadTræ  rç  r¾  ÚnslicesÚitimeÚiheightÚiwidthÚotimeÚoheightÚowidths                           r/   Úmeta_avg_pool3dr  ‘
  sô  € õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØÐÐ5Ð 0°AÒ 5Ø*Ð*ñô ð ð
 �ZŠZ˜‰]Œ]€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨D°"°a¸ÑCÔC€EÝ" 7¨B°°b¸!¸YÑGÔG€GÝ! &¨"¨d°B¸¸9ÑEÔE€FåØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØ	Ø	Ø	ØØØØØØØØð-ñ ô ð ð2 „z�Q‚€Ø�Š ¨°¸Ð@ÑAÔAÐAà�Š ¨°¸ÀÐHÑIÔIÐIr1   c                 ó”  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        dv d	„ ¦  «         t          j        | p|dk    d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          ||
||d|¦  «        }t          || |||	|
||||||||||||d¦  «         |                     |j        ¦  «        S )Nrù  c                  ó   — dS rû  r5   r5   r1   r/   rT   z*meta_avg_pool3d_backward.<locals>.<lambda>õ
  rü  r1   r   rµ   rÞ   c                  ó   — dS rþ  r5   r5   r1   r/   rT   z*meta_avg_pool3d_backward.<locals>.<lambda>ý
  rC  r1   c                  ó   — dS r   r5   r5   r1   r/   rT   z*meta_avg_pool3d_backward.<locals>.<lambda>  r  r1   r  c                  ó   — dS r  r5   r5   r1   r/   rT   z*meta_avg_pool3d_backward.<locals>.<lambda>  r  r1   c                  ó   — dS rÛ  r5   r5   r1   r/   rT   z*meta_avg_pool3d_backward.<locals>.<lambda>  rÜ  r1   r¼  rÝ  r˜  rˆ   zavg_pool3d_backward())	rE   rV   r¸   r“   r‘   rÞ  Úavg_pool3d_backward_shape_checkr„   r…   )rÓ  rÎ   rs  r¼   r¨  r¿  rà  rá  r	  râ  rã  r
  rä  rå  r  ræ  rç  r  r  r  r  Úotime_for_shape_checkÚoheight_for_shape_checkÚowidth_for_shape_checks                           r/   Úmeta_avg_pool3d_backwardr  ç
  s«  € õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØÐÐ5Ð 0°AÒ 5Ø*Ð*ñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få0°¸¸DÀ"ÀaÈÑSÔSÐÝ2°7¸BÀÀbÈ!ÈYÑWÔWÐÝ1°&¸"¸dÀBÈÈ9ÑUÔUÐå#ØØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ'ô ð ð, �?Š?˜5œ;Ñ'Ô'Ð'r1   c                 ó  ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰ j        d d…         t	          |¦  «        z   }t          j        ‰ ¦  «        }t          j        |‰ j        ‰ j	        |¬¦  «        S )Nr�   rß  c                  ó   •— d‰ j         › �S )Nz"Expected 3D or 4D tensor, but got r  rŸ   s   €r/   rT   z*meta_adaptive_avg_pool2d.<locals>.<lambda>;  ó   ø€ ÐA°T´ZÐAÐA€ r1   r˜  rR  )
rE   rV   r“   r…   rU   r?   r{  rx   rM   rp   )r†   Úoutput_sizer;  rš   s   `   r/   Úmeta_adaptive_avg_pool2dr#  7  s�   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð ”:˜c˜r˜c”?¥U¨;Ñ%7Ô%7Ñ7€LÝÔ/°Ñ5Ô5€Mõ Œ;ØØŒjØŒ{Ø#ð	ñ ô ð r1   c                 óÀ   ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰                      ‰ j        d d…         t          |¦  «        z   ¦  «        S )Nrß  rû  c                  ó   •— d‰ j         › �S )Nz"Expected 4D or 5D tensor, but got r  rŸ   s   €r/   rT   z*meta_adaptive_avg_pool3d.<locals>.<lambda>M  r!  r1   rÝ  )rE   rV   r“   r„   r…   rU   )r†   r"  s   ` r/   Úmeta_adaptive_avg_pool3dr&  I  sb   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð �>Š>˜$œ* S b Sœ/­E°+Ñ,>Ô,>Ñ>Ñ?Ô?Ð?r1   c                 óØ  ‡ ‡‡— ‰ j         }t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆ ˆfd„¦  «         Œ3t          j        |dk    p|dk    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        }t          ‰¦  «        rt          j        }‰ 	                    ‰j
        ¦  «                             |¬¦  «        S )	Nrµ   r   c                  ó    •— d‰ j         › d‰› d�S )Nz{adaptive_avg_pool2d_backward(): Expected grad_output to have non-zero                       size for non-batch dimensions, ú with dimension ú being emptyr  )Úgrad_outrÒ   s   €€r/   rT   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>X  s1   ø€ ð fØ6>´nðfð fØVWðfð fð f€ r1   r�   rß  c                  ó   •— d‰ j         › �S )NzBadaptive_avg_pool2d_backward(): Expected 3D or 4D tensor, but got r  rŸ   s   €r/   rT   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>]  s   ø€ ÐaÐUYÔU_ÐaÐa€ r1   c                  ó(   •— d‰j         › d‰ j         › �S ©Núexpected dtype z! for `grad_output` but got dtype r}   )r+  r†   s   €€r/   rT   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>a  s   ø€ Ð_ $¤*Ð_Ð_ÈxÌ~Ð_Ð_€ r1   r™   )r“   rº   rE   rV   r‘   rM   rž   r  r|  r„   r…   rÿ   )r+  r†   r“   rš   rÒ   s   ``  @r/   Ú"meta__adaptive_avg_pool2d_backwardr0  R  s  øøø€ àŒ=€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ�MŠM˜!ÑÔ˜qÒ ðfð fð fð fð fñ	
ô 	
ð 	
ð 	
õ
 
„LØ�Š	Ð�T˜Q’YØaÐaÐaÐañô ð õ 
„LØŒ
�h”nÒ$Ø_Ð_Ð_Ð_Ð_ñô ð õ Ô+€MÝ˜ÑÔð ,ÝÔ+ˆØ�>Š>˜$œ*Ñ%Ô%×(Ò(°}Ð(ÑEÔEÐEr1   c                 ób   — t          | d¦  «         t          j        |t          j        ¬¦  «        S )NÚadaptive_avg_pool3d_backwardr™   )Ú!_adaptive_pool_empty_output_checkrE   r�   rå  ©rÓ  r†   s     r/   Ú"meta__adaptive_avg_pool3d_backwardr5  i  s.   € õ & kÐ3QÑRÔRÐRÝÔ˜DµÔ0NÐOÑOÔOÐOr1   rÓ  c                 ó¢   ‡ ‡‡— ‰ j         }t          d|¦  «        D ]3Št          j        ‰                      ‰¦  «        dk    ˆˆ ˆfd„¦  «         Œ4d S )Nrµ   r   c                  ó$   •— ‰ › d‰j         › d‰› d�S )Nzc(): Expected grad_output to have non-zero size for non-batch dimensions, but grad_output has sizes r)  r*  r  )r¬  rÓ  rÒ   s   €€€r/   rT   z3_adaptive_pool_empty_output_check.<locals>.<lambda>u  s>   ø€ Øð `ð `Ø-8Ô->ð`ð `ØPQð`ð `ð `ð r1   )r“   rº   rE   rV   r‘   )rÓ  r¬  r“   rÒ   s   `` @r/   r3  r3  p  s{   øøø€ ØÔ€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ×Ò˜QÑÔ !Ò#ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r1   c                 ó8  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}‰ j         dk    r‰                      d¦  «        }|dz  }‰                      |dz
  ¦  «        }|\  }}‰ j         d	k    r?|||f}‰                      |¦  «        }	‰                      |t          j        ¬
¦  «        }
|	|
fS ||||f}t          j	        ‰ ¦  «        }‰                      |¦  «         
                    |¬¦  «        }	‰                      |t          j        ¬
¦  «         
                    |¬¦  «        }
|	|
fS )N©r�   rß  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool2d(): Expected 3D or 4D tensor, but got: r  ©rÎ   s   €r/   rT   z*meta_adaptive_max_pool2d.<locals>.<lambda>‚  ó   ø€ ÐZÈUÌ[ÐZÐZ€ r1   rµ   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r)  r*  r  ©rÒ   rÎ   s   €€r/   rT   z*meta_adaptive_max_pool2d.<locals>.<lambda>‡  ó4   ø€ ðTØ',¤{ðTð TØDEðTð Tð Tð r1   rÞ   c                  ó   — dS )NzCadaptive_max_pool2d(): internal error: output_size.size() must be 2r5   r5   r1   r/   rT   z*meta_adaptive_max_pool2d.<locals>.<lambda>�  ó   € ÐU€ r1   rß  r�   r}   r™   )r“   rE   rV   rº   r‘   r¸   r„   r¥   r?   r{  rÿ   )rÎ   r"  r“   ÚdimHÚsizeBÚsizeDÚosizeHÚosizeWr–   rÂ   r¢   rš   rÒ   s   `           @r/   Úmeta_adaptive_max_pool2drG  |  sÔ  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eà„z�Q‚€Ø—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�t˜a‘xÑ Ô €EØ �N€FˆFà„z�Q‚€Ø˜F FÐ+ˆ	Ø�oŠo˜iÑ(Ô(ˆØ—/’/ )µ5´;�/Ñ?Ô?ˆØ�Gˆ|Ðà˜E 6¨6Ð2ˆ	ÝÔ3°EÑ:Ô:ˆØ�oŠo˜iÑ(Ô(×+Ò+¸-Ð+ÑHÔHˆØ—/’/ )µ5´;�/Ñ?Ô?×BÒBØ'ð Cñ 
ô 
ˆð �Gˆ|Ðr1   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          ‰ d¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰¦  «        }‰                     ‰j        ¦  «         	                    |¬¦  «        S )Nr9  c                  ó   •— d‰ j         › �S )NzKadaptive_max_pooling2d_backward(): Expected 3D or 4D grad_output, but got: r  ©rÓ  s   €r/   rT   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>²  s   ø€ ÐqÐ^iÔ^oÐqÐq€ r1   Úadaptive_max_pool2d_backwardc                  ó(   •— d‰j         › d‰ j         › �S r.  r}   )rÓ  rÎ   s   €€r/   rT   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>¹  s   ø€ Ðc %¤+ÐcÐcÐP[ÔPaÐcÐc€ r1   r™   )
r“   rE   rV   r3  rM   r?   r{  r„   r…   rÿ   )rÓ  rÎ   r¢   r“   rš   s   ``   r/   Ú!meta_adaptive_max_pool2d_backwardrM  ¬  s¯   øø€ ð Ô€DÝ	„LØ�ˆØqÐqÐqÐqñô ð õ
 & kÐ3QÑRÔRÐRå	„LØŒ�{Ô(Ò(ØcÐcÐcÐcÐcñô ð õ
 Ô/°Ñ6Ô6€MØ�?Š?˜5œ;Ñ'Ô'×*Ò*¸Ð*ÑGÔGÐGr1   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}|dk    r‰                      d¦  «        }|dz  }‰                      |¦  «        }|\  }}}|d	k    r||||f}	n|||||f}	‰                      |	¦  «        }
‰                      |	t          j        ¬
¦  «        }|
|fS )Nr  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool3d(): Expected 4D or 5D tensor, but got: r  r;  s   €r/   rT   z*meta_adaptive_max_pool3d.<locals>.<lambda>Æ  r<  r1   rµ   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool3d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r)  r*  r  r>  s   €€r/   rT   z*meta_adaptive_max_pool3d.<locals>.<lambda>Ë  r?  r1   r�   c                  ó   — dS )NzCadaptive_max_pool3d(): internal error: output_size.size() must be 3r5   r5   r1   r/   rT   z*meta_adaptive_max_pool3d.<locals>.<lambda>Ó  rA  r1   rû  rß  r}   )r“   rE   rV   rº   r‘   r¸   r„   r¥   )rÎ   r"  r“   ÚdimDrC  rD  ÚosizeTrE  rF  r–   rÂ   r¢   rÒ   s   `           @r/   Úmeta_adaptive_max_pool3drT  À  sg  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eàˆq‚y€yØ—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�tÑÔ€EØ(Ñ€FˆF�Fàˆq‚y€yØ˜F F¨FÐ3ˆ	ˆ	à˜E 6¨6°6Ð:ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gà�ˆ<Ðr1   c                 óV   — t          | d¦  «         |                     |j        ¦  «        S )NÚadaptive_max_pool3d_backward)r3  r„   r…   )rÓ  rÎ   r¢   s      r/   Ú!meta_adaptive_max_pool3d_backwardrW  ì  s)   € õ & kÐ3QÑRÔRÐRØ�?Š?˜5œ;Ñ'Ô'Ð'r1   c                 óN   — |€t          d¦  «        ‚|                      |¦  «        S )Nz:cannot repeat_interleave a meta tensor without output_size)rþ   r„   )Úrepeatsr"  s     r/   Úmeta_repeat_interleave_TensorrZ  ó  s+   € àÐÝÐWÑXÔXÐXØ×Ò˜[Ñ)Ô)Ð)r1   c                 óÀ   — | j         j        sJ ‚|j         j        sJ ‚t          | j        |j        ¦  «        }|                      |t          | j         ¦  «        ¬¦  «        S r]  )rM   rß   r#   r…   r„   r   )ÚrealÚimagr–   s      r/   Úmeta_complexr^  ú  sZ   € ð Œ:Ô'Ð'Ð'Ð'ØŒ:Ô'Ð'Ð'Ð'Ý! $¤*¨d¬jÑ9Ô9€IØ�>Š>˜)Õ+FÀtÄzÑ+RÔ+Rˆ>ÑSÔSÐSr1   )Ú
fill_valuer‘   r_  c                ól   — |                       ||                      ¦   «         ft          j        ¬¦  «        S r]  )r„   rs   rE   r�   )r†   r‘   r_  s      r/   Únonzero_staticra    s)   € ð �>Š>˜4 §¢¡¤Ð,µE´Jˆ>Ñ?Ô?Ð?r1   c           
      ó  ‡ ‡‡‡‡‡— t          j        t          ‰¦  «        d„ ¦  «         g }t          ‰¦  «        D �]d\  ŠŠ‰��Ft          j        ‰j        t           j        t           j        t           j        t           j        fv d„ ¦  «         ‰j        t           j        t           j        fv rÇ‰                     ¦   «         }t          |¦  «        Št          j
        ‰‰j        z   ‰ j        k    ˆ fd„¦  «         t          ‰j        ¦  «        D ]dŠt          j
        ‰j        ‰         ‰ j        ‰‰z            k    ˆˆˆˆˆ fd„¦  «         |                     |                     d‰¦  «        ¦  «         Œe�Œ8|                     ‰¦  «         �ŒO|                     ‰¦  «         �Œf|Št          j        t          ‰¦  «        ‰ j        k    ˆˆ fd„¦  «         dd lm} t%           |j        ‰Ž ¦  «        Št          ‰¦  «        ‰ j        k     r-‰                     d ¦  «         t          ‰¦  «        ‰ j        k     °-d}d}‰D ]Š|dk    r‰�d}Œ|dk    r‰€d	}Œ‰� nŒd
}|s�g }g }t          ‰¦  «        D ]1\  ŠŠ‰�*|                     ‰¦  «         |                     ‰¦  «         Œ2t          ‰¦  «        D ]1\  ŠŠ‰€*|                     ‰¦  «         |                     ‰¦  «         Œ2‰                      |¦  «        Š |Šg }	g }
g }t          ‰¦  «        D ]_\  }Š‰€D|r!|
                     ‰ j        |         ¦  «         Œ*|	                     ‰ j        |         ¦  «         ŒKt%          ‰j        ¦  «        }Œ`‰                      |	|z   |
z   ¦  «        S )Nc                  ó   — dS )Nz#at least one index must be providedr5   r5   r1   r/   rT   z#meta_index_Tensor.<locals>.<lambda>  s   € Ð(M€ r1   c                  ó   — dS )Nz?tensors used as indices must be long, int, byte or bool tensorsr5   r5   r1   r/   rT   z#meta_index_Tensor.<locals>.<lambda>  s   € ÐY€ r1   c                  ó   •— d‰ j         › �S )Nú)too many indices for tensor of dimension rÝ  rŸ   s   €r/   rT   z#meta_index_Tensor.<locals>.<lambda>  s   ø€ ÐSÈÌ	ÐSÐS€ r1   c            	      ó:   •— d‰j         › d‰ › d‰j         › d‰‰z   › �S )NzThe shape of the mask z
 at index z0 does not match the shape of the indexed tensor r  )rÒ   r   Újr9  r†   s   €€€€€r/   rT   z#meta_index_Tensor.<locals>.<lambda>  sP   ø€ ð !h¸¼ð !hð !hÐPQð !hð !hØJNÌ*ð!hð !hØ`aÐdeÑ`eð!hð !h€ r1   rµ   c                  ó:   •— d‰j         › dt          ‰ ¦  «        › d�S )Nrf  z (got rg   )r“   r¸   )r¢   r†   s   €€r/   rT   z#meta_index_Tensor.<locals>.<lambda>*  s$   ø€ Ð\¸D¼IÐ\Ð\ÍSÐQXÉ\Ì\Ð\Ð\Ð\€ r1   r   FrÞ   T)rE   rV   rD  Ú	enumeraterM   r�   r�  r  Únonzeror¸   r‚   r“   rº   r…   r»   ÚselectÚtorch._refsÚ_refsr¹   r$   r¾   r„   )r†   r¢   r´  rk  ÚrefsÚstateÚhas_contiguous_subspacer`  Útransposed_indicesÚbefore_shapeÚafter_shapeÚreplacement_shapers   rÒ   r   rh  r9  s   ``           @@@@r/   Úmeta_index_Tensorrv  	  s  øøøøøø€ å	„L•�g‘”Ð MÐ MÑNÔNÐNð &(€FÝ˜gÑ&Ô&ð !ñ !‰ˆˆ5ØÑÝŒLØ”¥¤
­E¬Iµu´zÅ5Ä:ÐNÐNØYÐYñô ð ð Œ{�uœz­5¬:Ð6Ð6Ð6ØŸ-š-™/œ/�Ý˜‘K”K�ÝÔ"Ø˜œ
‘N d¤iÒ/ØSÐSÐSÐSñô ð õ ˜uœzÑ*Ô*ð 8ð 8�AÝÔ&Øœ Aœ¨$¬*°Q¸±UÔ*;Ò;ðhð hð hð hð hð hð hð hñô ð ð
 —M’M '§.¢.°°AÑ"6Ô"6Ñ7Ô7Ð7Ð7ñ8ð —’˜eÑ$Ô$Ð$Ñ$à�MŠM˜%Ñ Ô Ð Ñ Ø€GÝ	„LÝˆG‰Œ˜œ	Ò!Ø\Ð\Ð\Ð\Ð\ñô ð ð
 ÐÐÐÐÐåÐ(�4Ô(¨'Ð2Ñ3Ô3€Gå
ˆg‰,Œ,˜œÒ
"Ð
"Ø�Š�tÑÔÐõ ˆg‰,Œ,˜œÒ
"Ð
"ð €EØ#ÐØð 'ð 'ˆØ�AŠ:ˆ:ØÐ Ø�øØ�aŠZˆZØˆ}Ø�øàÐ Ø�ð !ð #'Ðð
 #ð %ØˆØÐÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØÐ Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØˆ}Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øØ�|Š|˜DÑ!Ô!ˆØ$ˆð !€LØ€KØ#%ÐÝ Ñ(Ô(ð 2ð 2‰
ˆˆUØˆ=Ø ð 5Ø×"Ò" 4¤:¨c¤?Ñ3Ô3Ð3Ð3à×#Ò# D¤J¨s¤OÑ4Ô4Ð4Ð4å $ U¤[Ñ 1Ô 1ÐÐØ�>Š>˜,Ð):Ñ:¸[ÑHÑIÔIÐIr1   c                 ó  — d }d }d }|
d         r'|                       |                     ¦   «         ¦  «        }|
d         r'|                       |                     ¦   «         ¦  «        }|
d         r|                       |¦  «        }|||fS )Nr   rµ   rÞ   ©r„   r‘   )Úgrad_output_Úinput_Úweight_Úbias_sizes_optr¼   r¨  ri  Ú
transposedrl  rk  Úoutput_maskÚbackend_grad_inputÚbackend_grad_weightÚbackend_grad_biass                 r/   Úmeta_convolution_backwardr‚  m  s˜   € ð  ÐØÐØÐà�1„~ð CØ)×3Ò3°F·K²K±M´MÑBÔBÐØ�1„~ð EØ*×4Ò4°W·\²\±^´^ÑDÔDÐØ�1„~ð CØ(×2Ò2°>ÑBÔBÐàÐ 3Ð5FÐGÐGr1   c                ó  ‡‡— ‰                      d¦  «        }‰                      d¦  «        }|                      ||f¦  «        } t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        |                       d¦  «        |k    o|                       d¦  «        |k    d	„ ¦  «         |                      |                       ¦   «         ¦  «        S )
Nrµ   rÞ   r�   c                  ó   — dS r   r5   r5   r1   r/   rT   zmeta_addbmm.<locals>.<lambda>‘  r!  r1   c                  ó   — dS r#  r5   r5   r1   r/   rT   zmeta_addbmm.<locals>.<lambda>’  r!  r1   r   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz8batch1 and batch2 must have same number of batches, got r   r�   r�   ©r%  r&  s   €€r/   rT   zmeta_addbmm.<locals>.<lambda>•  s3   ø€ ÐpÈ6Ï;Ê;ÐWXÉ>Ì>ÐpÐpÐ`f×`kÒ`kÐlmÑ`nÔ`nÐpÐp€ r1   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz#Incompatible matrix sizes for bmm (rµ   r<   rÞ   r�   rg   r�   r‡  s   €€r/   rT   zmeta_addbmm.<locals>.<lambda>™  sl   ø€ ð6°&·+²+¸a±.´.ð 6ð 6À6Ç;Â;ÈqÁ>Ä>ð 6ð 6Ø—;’;˜q‘>”>ð6ð 6Ø$*§K¢K°¡N¤Nð6ð 6ð 6ð r1   c                  ó   — dS )Nz.self tensor does not match matmul output shaper5   r5   r1   r/   rT   zmeta_addbmm.<locals>.<lambda>   s   € Ð@€ r1   )r‘   r\  rE   rV   rs   r„   )r†   r%  r&  r%  r$  r.  r/  s    ``    r/   Úmeta_addbmmrŠ  ‹  sg  øø€ ð �;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;˜˜d�|Ñ$Ô$€DÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ØpÐpÐpÐpÐpñô ð õ 
„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�	Š	�!‰Œ˜ÒÐ5 §¢¨1¡¤°Ò!5Ø@Ð@ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r1   )Ú
grad_scaleÚ	found_infc       	         ót   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d S )Nc                  ó(   •— dt          ‰ ¦  «        › �S ©Nz'exponent must be a tensor list but got ©rh   ©Úls   €r/   rT   z#meta__fused_adam_.<locals>.<lambda>»  ó   ø€ ÐG½dÀ1¹g¼gÐGÐG€ r1   ©rE   rV   r_   r   )r†   ÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚlrÚbeta1Úbeta2Úweight_decayÚepsÚamsgradÚmaximizer‹  rŒ  r’  s                  @r/   Úmeta__fused_adam_r¡  ¥  s]   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
ð 
r1   c       	         óÞ   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d„ } || ¦  «         ||¦  «         ||¦  «         ||¦  «         ||¦  «        fS )Nc                  ó(   •— dt          ‰ ¦  «        › �S r�  r�  r‘  s   €r/   rT   z"meta__fused_adam.<locals>.<lambda>Õ  r“  r1   c                 ó   — d„ | D ¦   «         S )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r5   r?  )r;   r¦  s     r/   r>   z=meta__fused_adam.<locals>.empty_like_list.<locals>.<listcomp>Ù  s#   € Ð9Ð9Ð9¨•Ô  Ñ#Ô#Ð9Ð9Ð9r1   r5   )Útensor_lists    r/   Úempty_like_listz)meta__fused_adam.<locals>.empty_like_listØ  s   € Ø9Ð9¨[Ð9Ñ9Ô9Ð9r1   r”  )r†   r•  r–  r—  r˜  r™  rš  r›  rœ  r�  rž  rŸ  r   r‹  rŒ  r§  r’  s                   @r/   Úmeta__fused_adamr¨  ¿  s¯   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
:ð :ð :ð 	ˆ˜ÑÔØˆ˜ÑÔØˆ˜Ñ!Ô!Øˆ˜Ñ$Ô$Øˆ˜Ñ(Ô(ðð r1   c                 ór  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         ‰                      ‰                      d¦  «        ‰                     d¦  «        ft           j        ¬	¦  «        S )
NrÞ   c                  ó   — dS )Nza must be a 2D tensorr5   r5   r1   r/   rT   zmeta__int_mm.<locals>.<lambda>ç  ó   € Ð'>€ r1   c                  ó   — dS )Nzb must be a 2D tensorr5   r5   r1   r/   rT   zmeta__int_mm.<locals>.<lambda>è  r«  r1   c                  ó   •— d‰ j         › �S )Nzexpected self to be int8, got r}   )r[  s   €r/   rT   zmeta__int_mm.<locals>.<lambda>ë  ó   ø€ Ð:°´Ð:Ð:€ r1   c                  ó   •— d‰ j         › �S )Nzexpected mat2 to be int8, got r}   )r\  s   €r/   rT   zmeta__int_mm.<locals>.<lambda>ï  r®  r1   rµ   r   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz'Incompatible matrix sizes for _int_mm (r   r<   rµ   r�   rg   r�   ©r[  r\  s   €€r/   rT   zmeta__int_mm.<locals>.<lambda>ó  sl   ø€ ð,°a·f²f¸Q±i´ið ,ð ,À!Ç&Â&ÈÁ)Ä)ð ,ð ,Ø—6’6˜!‘9”9ð,ð ,Ø Ÿvšv a™yœyð,ð ,ð ,ð r1   r}   )rE   rV   rs   rM   r  r‘   r„   r  r±  s   ``r/   Úmeta__int_mmr²  ä  s"  øø€ õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”:ÐØ:Ð:Ð:Ð:ñô ð õ 
„LØ	Œ•5”:ÐØ:Ð:Ð:Ð:ñô ð õ 
„LØ	�Šˆq‰	Œ	�Q—V’V˜A‘Y”YÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �;Š;˜Ÿš˜q™	œ	 1§6¢6¨!¡9¤9Ð-µU´[ˆ;ÑAÔAÐAr1   c                 ój  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        dz  }‰                      |dz  ||dz  z  d|dz  ft           j        ¬	¦  «        S )
NrÞ   c                  ó   — dS ©Nzw must be a 2D tensorr5   r5   r1   r/   rT   z2meta__convert_weight_to_int4pack.<locals>.<lambda>ý  r«  r1   c                  ó   •— d‰ j         › �S ©Nzexpected w to be uint8, got r}   ©rª  s   €r/   rT   z2meta__convert_weight_to_int4pack.<locals>.<lambda>   ó   ø€ Ð8¨q¬wÐ8Ð8€ r1   r   rµ   é   r1  é    r}   )rE   rV   rs   rM   Úuint8r‘   r„   r  ©rª  Úinner_k_tilesrè   r9  s   `   r/   Ú meta__convert_weight_to_int4packr¿  û  s»   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	�A‰€AØ�;Š;à�‰FØ�- "Ñ$Ñ%ØØ˜QÑð		
õ Œkð ñ ô ð r1   c                 óN  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        }‰                      ||dz  ft           j        ¬¦  «        S )NrÞ   c                  ó   — dS rµ  r5   r5   r1   r/   rT   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>  r«  r1   c                  ó   •— d‰ j         › �S ©Nzexpected w to be int32, got r}   r¸  s   €r/   rT   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>  r¹  r1   r   rµ   r}   )rE   rV   rs   rM   r  r‘   r„   r¼  r½  s   `   r/   Ú(meta__convert_weight_to_int4pack_for_cpurÄ    sœ   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	€AØ�;Š;Ø	
ˆA�‰FˆÝŒkð ñ ô ð r1   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        dz  ‰ j        ¬	¦  «        S )
NrÞ   c                  ó   — dS ©Nzx must be a 2D tensorr5   r5   r1   r/   rT   z*meta__weight_int4pack_mm.<locals>.<lambda>   r«  r1   rß  c                  ó   — dS )Nzw must be a 4D tensorr5   r5   r1   r/   rT   z*meta__weight_int4pack_mm.<locals>.<lambda>!  r«  r1   c                  ó   •— d‰ j         › �S ©Nz#expected x to be f32/f16/bf16, got r}   ©r<   s   €r/   rT   z*meta__weight_int4pack_mm.<locals>.<lambda>$  ó   ø€ Ð?°a´gÐ?Ð?€ r1   c                  ó   •— d‰ j         › �S rÃ  r}   r¸  s   €r/   rT   z*meta__weight_int4pack_mm.<locals>.<lambda>(  r¹  r1   r   rº  r}   )
rE   rV   rs   rM   r2  r3  r4  r  r„   r‘   ©r<   rª  Úq_group_sizeÚq_scale_and_zeross   ``  r/   Úmeta__weight_int4pack_mmrÑ    sá   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)¨a¡-°q´wˆ;Ñ?Ô?Ð?r1   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )NrÞ   c                  ó   — dS rÇ  r5   r5   r1   r/   rT   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>/  r«  r1   c                  ó   — dS rµ  r5   r5   r1   r/   rT   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>0  r«  r1   c                  ó   •— d‰ j         › �S rÊ  r}   rË  s   €r/   rT   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>3  rÌ  r1   c                  ó   •— d‰ j         › �S r·  r}   r¸  s   €r/   rT   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>7  r¹  r1   r   r}   )
rE   rV   rs   rM   r2  r3  r4  r¼  r„   r‘   rÎ  s   ``  r/   Ú meta__weight_int4pack_mm_for_cpur×  -  sÝ   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r1   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )NrÞ   c                  ó   — dS rÇ  r5   r5   r1   r/   rT   z*meta__weight_int8pack_mm.<locals>.<lambda>>  r«  r1   c                  ó   •— d‰ j         › �S rÊ  r}   rË  s   €r/   rT   z*meta__weight_int8pack_mm.<locals>.<lambda>A  rÌ  r1   c                  ó   — dS rµ  r5   r5   r1   r/   rT   z*meta__weight_int8pack_mm.<locals>.<lambda>C  r«  r1   c                  ó   •— d‰ j         › �S )Nzexpected w to be int8, got r}   r¸  s   €r/   rT   z*meta__weight_int8pack_mm.<locals>.<lambda>F  s   ø€ Ð7¨a¬gÐ7Ð7€ r1   r   r}   )
rE   rV   rs   rM   r2  r3  r4  r  r„   r‘   )r<   rª  Úq_scaless   `` r/   Úmeta__weight_int8pack_mmrÞ  <  sÝ   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”:ÐØ7Ð7Ð7Ð7ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r1   c                 óŽ  ‡ ‡‡— t          j        ‰                      ¦   «         dk    ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         t          j        t	          j        ‰ j        ¦  «        d„ ¦  «         t          j        t	          j        ‰j        ¦  «        d„ ¦  «         t          j        |dk    d	„ ¦  «         t          j        ‰d
v ˆfd„¦  «         ‰                      d¦  «        }‰                     d¦  «        }‰ j        d d…         }‰j        d d…         }t          t          j	        ||¦  «        ¦  «        }| 
                    ||g¦  «         ‰                      |¦  «        S )NrÞ   c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X1 got: ÚDr‰   )Úx1s   €r/   rT   z$meta_cdist_forward.<locals>.<lambda>O  ó   ø€ ÐOÀBÇFÂFÁHÄHÐOÐOÐO€ r1   c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X2 got: rá  r‰   )Úx2s   €r/   rT   z$meta_cdist_forward.<locals>.<lambda>S  rã  r1   rˆ   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz4X1 and X2 must have the same number of columns. X1: rˆ   z X2: r�   )râ  rå  s   €€r/   rT   z$meta_cdist_forward.<locals>.<lambda>W  s2   ø€ ÐfÀrÇwÂwÈrÁ{Ä{ÐfÐfÐY[×Y`ÒY`ÐacÑYdÔYdÐfÐf€ r1   c                  ó   — dS )Nz=cdist only supports floating-point dtypes, X1 got: {x1.dtype}r5   r5   r1   r/   rT   z$meta_cdist_forward.<locals>.<lambda>[  rŒ   r1   c                  ó   — dS )Nz=cdist only supports floating-point dtypes, X2 got: {x2.dtype}r5   r5   r1   r/   rT   z$meta_cdist_forward.<locals>.<lambda>_  rŒ   r1   r   c                  ó   — dS )Nz)cdist only supports non-negative p valuesr5   r5   r1   r/   rT   z$meta_cdist_forward.<locals>.<lambda>a  s   € Ð!L€ r1   ©Nrµ   rÞ   c                  ó   •— d‰ › �S )Nz%possible modes: None, 1, 2, but was: r5   )Úcompute_modes   €r/   rT   z$meta_cdist_forward.<locals>.<lambda>d  s   ø€ ÐF¸ÐFÐF€ r1   r˜  )rE   rV   rs   r‘   r?   Úis_float_dtyperM   r…   r¹   Úbroadcast_shapesÚextendr„   )	râ  rå  r  rì  Úr1Úr2Úbatch_tensor1Úbatch_tensor2r;  s	   `` `     r/   Úmeta_cdist_forwardrô  K  sÄ  øøø€ å	„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š�‰Œ�r—w’w˜r‘{”{Ò"ØfÐfÐfÐfÐfñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØOÐOñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØOÐOñô ð õ 
„L��a’ÐLÐLÑMÔMÐMÝ	„LØ˜Ð$ØFÐFÐFÐFñô ð ð 
�Š�‰Œ€BØ	�Š�‰Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ�Ô.¨}¸mÑLÔLÑMÔM€LØ×Ò˜˜R˜Ñ!Ô!Ð!Ø�<Š<˜Ñ%Ô%Ð%r1   c                 ó@  — |j         d         }|j         d         }|j         d         }|j         d d…         }|j         d d…         }	t          t          j        ||	¦  «        ¦  «        }
|
                     ¦   «         }|                     ||g¦  «         t          j        |
¦  «        }|dk    s|dk    s|dk    s|dk    rt          j        |¦  «        S |t          |j         ¦  «        k    r| 	                    |¦  «        }t          j
        |t          j        ¬¦  «        S )Nrˆ   r˜  r   r™   )r…   r¹   rE   rî  Úcopyrï  ÚmathÚprodÚ
zeros_liker\  r�   rž   )r  râ  rå  r  ÚcdistÚc1rð  rñ  rò  ró  rX  Útensor1_expand_sizeÚbatch_products                r/   Úmeta_cdist_backwardrþ  o  s
  € ð 
Œ�"Œ€BØ	Œ�"Œ€BØ	Œ�"Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ¥Ô 6°}ÀmÑ TÔ TÑUÔUÐØ.×3Ò3Ñ5Ô5ÐØ×Ò  B˜xÑ(Ô(Ð(Ý”IÐ2Ñ3Ô3€MØ	ˆQ‚w€w�"˜’'�'˜R 1šW˜W¨¸Ò(:Ð(:ÝÔ Ñ#Ô#Ð#Ø�d 2¤8™nœnÒ,Ð,Ø�YŠYÐ*Ñ+Ô+ˆÝÔ˜B­eÔ.EÐFÑFÔFÐFr1   c	                 ód  ‡ ‡‡‡‡‡— t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        t          j        ‰ j        ¦  «        ˆ fd„¦  «         ‰                     d¦  «        }	|rt          j        |	dk    d„ ¦  «         |	dz  }	‰                      |	‰                      d¦  «        ¦  «        }
t          d¦  «        \  }}}‰�|t          j        ||k    d„ ¦  «         t          j        ‰j
        dk    ˆfd	„¦  «         t          j        ‰                     ¦   «         ‰                     ¦   «         k    ˆˆfd
„¦  «         ˆfd„Šd„ Šˆˆfd„}t          ‰¦  «        dk    r•‰                     ‰                     d¦  «        ¦  «        }‰                     ‰                     ¦   «         ¦  «        }||k    r*‰                     |	‰                      d¦  «        ¦  «        }nü‰                     d¦  «        }næ |‰ ‰|
|¦  «        }|||fv s|s)‰                     ‰                     d¦  «        ¦  «        }n‰                     d¦  «        }‰                     |	¦  «        }‰j        d         }||k    rC|rt          j        |dk    d„ ¦  «         |dz  }‰                     |‰ j        d         ¦  «        }n'‰                     |                     ¦   «         ¦  «        }|
|||fS )Nc                  ó   •— d‰ j         › �S )Nz(expected indices to be long or int, got r}   )r¢   s   €r/   rT   z$meta_embedding_bag.<locals>.<lambda>”  ó   ø€ ÐJ¸7¼=ÐJÐJ€ r1   c                  ó   •— d‰ j         › �S )Nz(expected offsets to be long or int, got r}   )rK  s   €r/   rT   z$meta_embedding_bag.<locals>.<lambda>˜  r  r1   c                  ó   •— d‰ j         › �S )Nz/expected weight to be floating point type, got r}   )r  s   €r/   rT   z$meta_embedding_bag.<locals>.<lambda>œ  s   ø€ ÐPÀ&Ä,ÐPÐP€ r1   r   rµ   c                  ó   — dS ©Nz1include_last_offset: numBags should be at least 1r5   r5   r1   r/   rT   z$meta_embedding_bag.<locals>.<lambda>£  s   € ÐG€ r1   r�   c                  ó   — dS )Nz@embedding_bag: per_sample_weights only supported with mode='sum'r5   r5   r1   r/   rT   z$meta_embedding_bag.<locals>.<lambda>­  s   € ÐV€ r1   c                  ó   •— d‰ j         › d�S )Nz1expected per_sample_weights to be 1D tensor, got rá  rÝ  )Úper_sample_weightss   €r/   rT   z$meta_embedding_bag.<locals>.<lambda>±  s   ø€ ÐbÐHZÔH_ÐbÐbÐb€ r1   c                  ó^   •— d‰                      ¦   «         › d‰                       ¦   «         › d�S )Nz%expected per_sample_weights.numel() (z$ to be the same as indices.numel() (rg   ©rƒ   )r¢   r  s   €€r/   rT   z$meta_embedding_bag.<locals>.<lambda>µ  sF   ø€ ðIÐ8J×8PÒ8PÑ8RÔ8Rð Ið IØ6=·m²m±o´oðIð Ið Ið r1   c                 óP   •—  ‰| ||¦  «        o|                      d¦  «        dk    S ©Nr   rµ   ©r¼   )r  rI  rÚ   Úpadding_idxÚis_fast_path_index_selects       €r/   Úis_fast_path_index_select_scalez;meta_embedding_bag.<locals>.is_fast_path_index_select_scale»  s0   ø€ à%Ð% c¨6°;Ñ?Ô?ÐXÀEÇLÂLÐQRÁOÄOÐWXÒDXð	
r1   c                 óÆ   — | j         t          j        k    s| j         t          j        k    o7|                      d¦  «        dk    o|                     d¦  «        dk    o|dk     S ©Nrµ   r   )rM   rE   rI   rG   r¼   )r  rÚ   r  s      r/   r  z5meta_embedding_bag.<locals>.is_fast_path_index_selectÀ  s_   € àŒY�%œ+Ò%Ð@¨¬µe´jÒ)@ð  Ø—
’
˜1‘” Ò"ð à—’˜aÑ Ô  AÒ%ð ð ˜a’ð		
r1   c                 ó>   •— |� ‰| |||¦  «        S  ‰| ||¦  «        S r,   r5   )r  rI  rÚ   r  r  r  s       €€r/   Úis_fast_pathz(meta_embedding_bag.<locals>.is_fast_pathÈ  s5   ø€ ØÐØ2Ð2°3¸¸vÀ{ÑSÔSÐSà,Ð,¨S°&¸+ÑFÔFÐFr1   Úcpuc                  ó   — dS r  r5   r5   r1   r/   rT   z$meta_embedding_bag.<locals>.<lambda>â  s   € ÐO€ r1   )rE   rV   rM   r�   r�  r?   rí  r‘   r„   rº   r“   rƒ   rL  r…   )r  r¢   rK  Úscale_grad_by_freqr3  Úsparser  Úinclude_last_offsetr  Únum_bagsrÚ   ÚMODE_SUMÚ	MODE_MEANÚMODE_MAXr  Ú
offset2bagÚbag_sizeÚmax_indicesÚfast_path_sumÚnumBagsr  r  s   ```   `             @@r/   Úmeta_embedding_bagr#  †  s–  øøøøøø€ õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LÝÔ˜Vœ\Ñ*Ô*ØPÐPÐPÐPñô ð ð
 �|Š|˜A‰Œ€HØð ÝŒØ˜ŠMØGÐGñ	
ô 	
ð 	
ð 	�A‰ˆà×Ò˜h¨¯ª°A©¬Ñ7Ô7€FÝ$)¨!¡H¤HÑ!€Hˆi˜àÐ%ÝŒØ�HÒØVÐVñ	
ô 	
ð 	
õ 	ŒØÔ# qÒ(ØbÐbÐbÐbñ	
ô 	
ð 	
õ 	ŒØ×$Ò$Ñ&Ô&¨'¯-ª-©/¬/Ò9ðð ð ð ð ñ	
ô 	
ð 	
ð
ð 
ð 
ð 
ð 
ð

ð 
ð 
ðGð Gð Gð Gð Gð Gõ �7ÑÔ˜uÒ$Ð$Ø×&Ò& w§|¢|°A¡¤Ñ7Ô7ˆ
Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ�8ÒÐØ!×+Ò+¨H°f·k²kÀ!±n´nÑEÔEˆKˆKà!×+Ò+¨AÑ.Ô.ˆKˆKà$˜ VÐ-?ÀÈÑUÔUˆØ�I˜xÐ(Ð(Ð(°Ð(Ø ×*Ò*¨7¯<ª<¸©?¬?Ñ;Ô;ˆJˆJà ×*Ò*¨1Ñ-Ô-ˆJØ×$Ò$ XÑ.Ô.ˆà”- Ô"ˆØ�8ÒÐØ"ð Ý”Ø˜q’LØOÐOñô ð ð ˜1‘�Ø!×+Ò+¨G°V´\À!´_ÑEÔEˆKˆKà!×+Ò+¨H¯MªM©O¬OÑ<Ô<ˆKØ�:˜x¨Ð4Ð4r1   c                 óª   — t          | ||g|¢R Ž \  }}}}t          |¦  «        dk    r'|                     |                     ¦   «         ¦  «        }||||fS )Nr  )r#  rL  r„   r‘   )r  r¢   rK  rA   rÚ   r  r  r   s           r/   Úmeta_embedding_bag_forward_onlyr%  ë  sm   € å0BØ�˜ð1Ø#'ð1ð 1ð 1Ñ-€FˆJ˜ +õ �7ÑÔ˜uÒ$Ð$Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ�:˜x¨Ð4Ð4r1   c                 ór   — |r|S | j         j        s| j         j        r| j         S |rt          j        S | j         S r,   )rM   rß   rØ   rE   r�   )rÎ   rM   Úpromote_int_to_longs      r/   Ú_get_reduction_dtyper(  õ  sH   € àð Øˆà„{Ô$ð ¨¬Ô(>ð ØŒ{ÐØ	ð ÝŒzÐàŒ;Ðr1   r}   c                óª   — t          | |d¬¦  «        }t          j        | j        |¦  «        }t	          | ||¦  «        }|                      ||¬¦  «        S )NT)r'  r}   )r(  r?   r_  r…   r`  r„   )rÎ   r`  rb  rM   r¯  r;  s         r/   Úmeta_nansumr*    sS   € õ (¨¨uÈ$ÐOÑOÔO€LÝÔ ¤¨TÑ2Ô2€DÝ+¨E°4¸ÑAÔA€LØ�?Š?˜<¨|ˆ?Ñ<Ô<Ð<r1   c           	      ó¸   — t          j        | j        t          t	          |                      ¦   «         ¦  «        ¦  «        ¦  «        }|                      |¦  «        S r,   )r?   ra  r…   rU   rº   rs   r„   )rÎ   r;  s     r/   Úmeta_medianr,    sG   € åÔ7ØŒ•U�5 §¢¡¤Ñ-Ô-Ñ.Ô.ñô €Lð �?Š?˜<Ñ(Ô(Ð(r1   c                 ó  — t          | ¦  «        dk    rt          j        d¦  «         t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t          j        ¬¦  «        fS )NrK  zmedian CUDA with indices outputr}   )	rL  r?   Úalert_not_deterministicr_  r…   r`  r„   rE   r�   )rÎ   rs   rb  r;  s       r/   Úmeta_median_mode_dimr/    s~   € õ �5ÑÔ˜VÒ#Ð#ÝÔ%Ð&GÑHÔHÐHÝ
Ô
˜uœ{¨S¨FÑ
3Ô
3€CÝ+¨E°3¸Ñ@Ô@€Là�Š˜Ñ%Ô%Ø�Š˜­E¬JˆÑ7Ô7ðð r1   c                 ó   — | S r,   r5   rŸ   s    r/   Úmeta_logical_not_r1  )  r;  r1   c                 óp  ‡‡— t          j        t          ‰¦  «        |                      ¦   «         k    d„ ¦  «         t          ‰¦  «        |                      ¦   «         z
  }d|z  t	          | j        ¦  «        z   Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }|                      |¦  «        S )Nc                  ó   — dS )NzZNumber of dimensions of repeat dims can not be smaller than number of dimensions of tensorr5   r5   r1   r/   rT   zmeta_repeat.<locals>.<lambda>2  s   € Ðl€ r1   r¹  c                 ó2   •— g | ]}‰|         ‰|         z  ‘ŒS r5   r5   )r;   rÒ   Úpadded_sizerY  s     €€r/   r>   zmeta_repeat.<locals>.<listcomp>9  s&   ø€ ÐLÐLÐL°1�;˜q”> G¨A¤JÑ.ÐLÐLÐLr1   )rE   rV   r¸   rs   rU   r…   rº   r„   )r†   rY  Únum_new_dimensionsÚtarget_sizer5  s    `  @r/   Úmeta_repeatr8  .  s¥   øø€ å	„LÝˆG‰Œ˜Ÿš™
œ
Ò"ØlÐlñô ð õ ˜W™œ¨¯ª©
¬
Ñ2ÐØÐ+Ñ+­e°D´JÑ.?Ô.?Ñ?€KØLÐLÐLÐLÐL½½cÀ'¹l¼lÑ8KÔ8KÐLÑLÔL€KØ�>Š>˜+Ñ&Ô&Ð&r1   c                 ó   — | S r,   r5   rŸ   s    r/   Ú
meta_zero_r:  =  r;  r1   c                 ón   — t          |t          j        ¦  «        rt          | j        |j        ¦  «         | S r,   )r_   rE   r   rX   r…   ©r†   r’   s     r/   Úmeta_binop_inplacer=  B  s1   € õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr1   c                 ó  — d„ }d„ }d„ } || ¦  «        r ||¦  «        rt          d¦  «        ‚ || ¦  «        r ||¦  «        st          d¦  «        ‚t          |t          j        ¦  «        rt	          | j        |j        ¦  «         | S )a*  
    Some checks for inplace ops.
    Checks for promotion rules for some dtypes.
    int.add/sub_(float) and bool.add/sub_(others) are rejected.
    Promoting in these in-place operations would require reallocating
    and copying over elements, hence not allowed.
    Checks for alpha param.
    c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r,   )r_   r   r?   r  rM   r   ©ra   s    r/   Úis_integericz.meta_binop_inplace_alpha.<locals>.is_integerice  s7   € Ý�c�:Ñ&Ô&ð 	,ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥7Ñ+Ô+Ð+r1   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r,   )r_   r   r?   rí  rM   r   r@  s    r/   Ú
is_floaticz,meta_binop_inplace_alpha.<locals>.is_floatick  s7   € Ý�c�:Ñ&Ô&ð 	.ÝÔ'¨¬	Ñ2Ô2Ð2å˜c¥9Ñ-Ô-Ð-r1   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r,   )r_   r   r?   Úis_boolean_dtyperM   r   r@  s    r/   Úis_booleanicz.meta_binop_inplace_alpha.<locals>.is_booleanicq  s7   € Ý�c�:Ñ&Ô&ð 	-ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥8Ñ,Ô,Ð,r1   z]Promotion of int.add/sub_(float) in in-place ops are not possible due to element size change.z_Promotion of book.add/sub_(others) in in-place ops are not possible due to element size change.)rþ   r_   rE   r   rX   r…   )r†   r’   r$  rA  rC  rF  s         r/   Úmeta_binop_inplace_alpharG  S  sÒ   € ð$,ð ,ð ,ð.ð .ð .ð-ð -ð -ð €|�DÑÔð 
˜j˜j¨Ñ/Ô/ð 
ÝØkñ
ô 
ð 	
ð
 €|�DÑÔð 
 , ,¨uÑ"5Ô"5ð 
ÝØmñ
ô 
ð 	
õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr1   c                 ó8   — t          | t          j        ¬¦  «        S ©N©r7   ©rC   r   r@   )r†   Úkwargss     r/   Ú
meta_roundrM  ˆ  s"   € åØÕ<ÔDðñ ô ð r1   c                 ó\  ‡ ‡‡— t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         t          ‰t           j        ¦  «        r2t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         d S t          j        t          ‰t          ¦  «        ˆ ˆfd„¦  «         d S )Nc                  ó   •— ‰ › d‰j         › �S )Nz7: Expected input tensor to have an integral dtype. Got r}   )rµ  r†   s   €€r/   rT   z#shift_dtype_check.<locals>.<lambda>’  s   ø€ �7Ð_Ð_ÐSWÔS]Ð_Ð_€ r1   c                  ó   •— ‰ › d‰j         › �S )Nz6: Expected shift value to have an integral dtype. Got r}   ©rµ  rs  s   €€r/   rT   z#shift_dtype_check.<locals>.<lambda>—  s   ø€ �wÐaÐaÐVYÔV_ÐaÐa€ r1   c                  ó   •— ‰ › d‰› �S )Nz): Expected shift value to be an int. Got r5   rQ  s   €€r/   rT   z#shift_dtype_check.<locals>.<lambda>œ  s   ø€ �wÐNÐNÈÐNÐN€ r1   )rE   rV   r?   r  rM   r_   r   r   )rµ  r†   rs  s   ```r/   Úshift_dtype_checkrS  �  sÇ   øøø€ Ý	„LÝÔ˜tœzÑ*Ô*Ø_Ð_Ð_Ð_Ð_ñô ð õ �#•u”|Ñ$Ô$ð 	
ÝŒÝÔ" 3¤9Ñ-Ô-ØaÐaÐaÐaÐañ	
ô 	
ð 	
ð 	
ð 	
õ
 	ŒÝ�s�GÑ$Ô$ØNÐNÐNÐNÐNñ	
ô 	
ð 	
ð 	
ð 	
r1   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚrshiftrJ  ©rS  rC   r   r@   r<  s     r/   Úmeta_rshiftsrW     ó6   € å�h  eÑ,Ô,Ð,ÝØˆeÕ$CÔ$Kðñ ô ð r1   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚlshiftrJ  rV  r<  s     r/   Úmeta_lshiftsr[  ¨  rX  r1   c                 ó6   — |                       | j        ¦  «        S r,   rŸ  rŸ   s    r/   Ú	meta_zeror]  °  s   € à�>Š>˜$œ*Ñ%Ô%Ð%r1   c                 ó   — | S r,   r5   ©r†   rs  s     r/   Ú
meta_fill_r`  µ  r;  r1   c                 ó*   — t          j        | ¦  «        S r,   r?  r_  s     r/   Ú	meta_fillrb  º  ó   € åÔ˜DÑ!Ô!Ð!r1   c                 ó   — | S r,   r5   rŸ   s    r/   Ú
meta_relu_re  ¿  r;  r1   c                 ó:   — t          | |t          j        ¬¦  «        S rI  rK  )r†   r’   r$  s      r/   Úmeta__add_relurg  Ä  s&   € õ ØˆeÕ$CÔ$Kðñ ô ð r1   ç      À?çUUUUUUÕ?c                 ó*   — t          j        | ¦  «        S r,   r?  ©r†   ÚnoiseÚlowerr¿  r‚  rå   s         r/   Úmeta_rrelu_with_noisern  Ì  s   € õ
 Ô˜DÑ!Ô!Ð!r1   c                 óR   — t          j        | ¦  «        t          j        |¦  «        fS r,   r?  rk  s         r/   Ú meta_rrelu_with_noise_functionalrp  Ô  s%   € õ Ô˜DÑ!Ô!¥5Ô#3°EÑ#:Ô#:Ð:Ð:r1   c                 ó   — | S r,   r5   )r†   rm  r¿  r‚  rå   s        r/   Úmeta_rrelu_with_noise_rr  Û  s	   € ð €Kr1   c                 ó*   — t          j        | ¦  «        S r,   r?  ©r†   r¢   r¡   Ú
accumulates       r/   Úmeta_index_putrv  â  rc  r1   c                 ó:   — t          | j        |j        ¦  «         | S r,   ©rX   r…   )r†   rQ  Úvalues      r/   Úmeta_masked_fill_rz  ç  s   € å˜DœJ¨¬
Ñ3Ô3Ð3Ø€Kr1   c                 ó    — |                       |                      ¦   «         ¦  «                             t          j        | ¦  «        ¬¦  «        }|S rB  )r„   r‘   rÿ   r?   r{  )r†   rQ  rI  Úmasked_scales       r/   Úmeta__masked_scaler}  í  sF   € à—>’> $§)¢)¡+¤+Ñ.Ô.×1Ò1ÝÔ1°$Ñ7Ô7ð 2ñ ô €Lð Ðr1   c                 ó¾   ‡ ‡— t          j        |j        t           j        t           j        fv d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ S )Nc                  ó   — dS )NzMask must be bool or uint8r5   r5   r1   r/   rT   z&meta_masked_scatter_.<locals>.<lambda>ø  s   € Ð9U€ r1   c                  ó(   •— d‰ j         › d‰j         › �S )NzEmasked_scatter: expected self and source to have same dtypes but got r�   r}   )r†   r>  s   €€r/   rT   z&meta_masked_scatter_.<locals>.<lambda>ü  s(   ø€ ð :Øœ*ð:ð :Ø+1¬<ð:ð :€ r1   )rE   rV   rM   rD  r¼  )r†   rQ  r>  s   ` `r/   Úmeta_masked_scatter_r�  õ  ss   øø€ å	„LØŒ
•u”z¥5¤;Ð/Ð/Ð1UÐ1Uñô ð õ 
„LØŒ
�f”lÒ"ð	:ð 	:ð 	:ð 	:ð 	:ñô ð ð
 €Kr1   c                 óŠ   — t          | |¦  «        \  } }t          j        | t          j        ¬¦  «        }t	          |||¦  «        S rB  )r$   rE   r�   rž   r�  )r†   rQ  r>  rÚ   s       r/   Úmeta_masked_scatterrƒ    sA   € õ " $¨Ñ-Ô-�J€Dˆ$ÝÔ˜dµ%Ô2IÐJÑJÔJ€FÝ ¨¨fÑ5Ô5Ð5r1   c                 ó,   — |                       |¦  «        S r,   rY  )r†   rQ  r  s      r/   Úmeta_masked_scatter_backwardr…  
  s   € à�>Š>˜%Ñ Ô Ð r1   c                 ó   — | S r,   r5   rt  s       r/   Úmeta_index_put_r‡    r;  r1   c                 ó6   — |                       | j        ¦  «        S r,   )Úviewr…   rŸ   s    r/   Ú
meta_aliasrŠ    s   € à�9Š9�T”ZÑ Ô Ð r1   c                 ó¢  ‡‡‡	‡
‡— t          j        |                      ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         |                      ¦   «         }|                     ¦   «         Š|d         Š	|d         Š
|d         }‰d         }‰	||fŠt          j        ‰d         ‰	k    o‰d         ‰
k    ˆˆ	ˆ
fd„¦  «         |                     ‰¦  «        }|s]‰�[t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         ‰k    ˆˆfd	„¦  «         |S )
Nr�   c                  ó   — dS r   r5   r5   r1   r/   rT   z)common_meta_baddbmm_bmm.<locals>.<lambda>  r!  r1   c                  ó   — dS r#  r5   r5   r1   r/   rT   z)common_meta_baddbmm_bmm.<locals>.<lambda>  r!  r1   r   rÞ   rµ   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S r(  r5   r*  s   €€€r/   rT   z)common_meta_baddbmm_bmm.<locals>.<lambda>(  sU   ø€ ð RÐSUð Rð RØðRð RØ+7¸¬?ðRð RØ>JÈ1¼oðRð Rð R€ r1   c                  ó   — dS )Nzself must be a 3D tensorr5   r5   r1   r/   rT   z)common_meta_baddbmm_bmm.<locals>.<lambda>1  s   € Ð6P€ r1   c                  ó8   •— d‰ › d‰                      ¦   «         › �S )Nz*Expected an input tensor shape with shape z but got shape: r�   )r"  Úself_baddbmms   €€r/   rT   z)common_meta_baddbmm_bmm.<locals>.<lambda>4  s%   ø€ ÐsÀÐsÐsÐ^j×^oÒ^oÑ^qÔ^qÐsÐs€ r1   )rE   rV   rs   r‘   r„   )r%  r&  Úis_bmmr‘  r1  Úres_rowsÚres_colsrÚ   r+  r,  r-  r"  s      `    @@@@r/   Úcommon_meta_baddbmm_bmmr•    sr  øøøøø€ Ý	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIà—;’;‘=”=€LØ—;’;‘=”=€Là	�aŒ€BØ# A”ÐØ˜AŒ€HØ˜AŒ€HØ�x Ð*€Kå	„LØ�QŒ˜2ÒÐE ,¨q¤/Ð5EÒ"Eð	Rð 	Rð 	Rð 	Rð 	Rð 	Rñô ð ð ×Ò˜kÑ*Ô*€Fàð 
�lÐ.ÝŒ�\×%Ò%Ñ'Ô'¨1Ò,Ð.PÐ.PÑQÔQÐQÝŒØ×ÒÑÔ ;Ò.ØsÐsÐsÐsÐsñ	
ô 	
ð 	
ð
 €Mr1   c                 ó$   — t          | |d¦  «        S )NT)r•  )r†   r   s     r/   Úmeta_bmmr—  :  s   € å" 4¨¨tÑ4Ô4Ð4r1   c                 ó€   — | |z  }| |z  }|dk    r-t          |dk     ¦  «        t          |dk     ¦  «        k    r|dz  }|S r  )rD  )r<   ÚyÚqr7  s       r/   Údiv_rtnr›  ?  sK   € Ø	ˆQ‰€AØ	ˆA‰€Að 	ˆA‚v€v•4˜˜Aš‘;”;¥$ q¨1¢u¡+¤+Ò-Ð-Ø	ˆQ‰ˆØ€Hr1   c                 ó�   — t          | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |¦  «        dz   }|r|dz
  |z  | |z   k    r|dz  }|S r  )r›  )Ú	inputSizeÚ
kernelSizer¶  r·  r¼   ri  r¿  Ú
outputSizes           r/   Úpooling_output_shape_pad_lrr   I  sž   € õ 	ØØñàñð ˜* q™.Ñ)ñ*ð ñ	ð
 'Ð-ˆv˜‰zˆz¨Añ/ð ñ	
ô 	
ð ñ		ð ð ð Ø˜‰N˜fÑ$¨	°EÑ(9Ò9Ð9Ø˜!‰OˆJØÐr1   c           	      óò   ‡‡‡— t          j        |dk    d„ ¦  «         t          j        ‰dk    ˆfd„¦  «         t          j        ‰‰dz
  ‰z  dz   dz  k    ˆˆˆfd„¦  «         t          | ‰‰‰|‰|¦  «        S )Nr   c                  ó   — dS )Nzstride should not be zeror5   r5   r1   r/   rT   z&pooling_output_shape.<locals>.<lambda>e  s   € Ð&A€ r1   c                  ó   •— d‰ › �S )Nz'pad must be non-negative, but got pad: r5   )Úpads   €r/   rT   z&pooling_output_shape.<locals>.<lambda>f  s   ø€ Ð#RÈSÐ#RÐ#R€ r1   rµ   rÞ   c                  ó   •— d‰› d‰› d‰ › �S )NzApad should be at most half of effective kernel size, but got pad=z, kernel_size=z and dilation=r5   )ri  rž  r¤  s   €€€r/   rT   z&pooling_output_shape.<locals>.<lambda>i  s;   ø€ ð@ÐPSð @ð @Ø%ð@ð @Ø5=ð@ð @ð r1   )rE   rV   r   )r�  rž  r¤  r¼   ri  r¿  s    `` ` r/   rÞ  rÞ  d  s¯   øøø€ Ý	„L�˜1’ÐAÐAÑBÔBÐBÝ	„L�˜’ÐRÐRÐRÐRÑSÔSÐSÝ	„LØ�˜a‘ 8Ñ+¨aÑ/°AÑ5Ò5ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 'Ø�:˜s C¨°¸9ñô ð r1   c           	      óL  ‡ ‡‡‡‡‡	‡
‡‡‡‡— ‰                       ¦   «         }‰	Št          j        ‰dk    o‰dk    d„ ¦  «         t          j        |dk    o|dk    d„ ¦  «         t          j        |dk    o|dk    d„ ¦  «         ‰                      d¦  «        dk    o‰                      d¦  «        dk    }|t          j        k    r6t          j        |dk    o|o‰                      d¦  «        dk    d	„ ¦  «         nXt          j        |dk    r‰                      d¦  «        dk    r|p |dk    o|o‰                      d¦  «        dk    ˆ fd
„¦  «         t          j        ‰dz  ‰k    o‰dz  ‰k    ˆˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    ˆ
ˆˆ	ˆˆˆfd„¦  «         d S )Nr   c                  ó   — dS )NzCkernel size should be greater than zero, but got kH: {kH}, kW: {kW}r5   r5   r1   r/   rT   z$pool2d_shape_check.<locals>.<lambda>‰  rA  r1   c                  ó   — dS )Nz>stride should be greater than zero, but got dH: {dH}, dW: {dW}r5   r5   r1   r/   rT   z$pool2d_shape_check.<locals>.<lambda>�  s   € ÐP€ r1   c                  ó   — dS )Nz\dilation should be greater than zero, but got dilationH: {dilationH}, dilationW: {dilationW}r5   r5   r1   r/   rT   z$pool2d_shape_check.<locals>.<lambda>‘  s   € Ðn€ r1   rµ   rÞ   rß  r�   c                  ó   — dS )NzŽExpected 4D (batch mode) tensor expected for input with channels_last layout with optional 0 dim batch size for input, but got: {input.size()}r5   r5   r1   r/   rT   z$pool2d_shape_check.<locals>.<lambda>™  s
   € ð Q€ r1   c                  ó2   •— d‰                       ¦   «         › �S )NzYExpected 3D or 4D (batch mode) tensor with optional 0 dim batch size for input, but got: r�   r;  s   €r/   rT   z$pool2d_shape_check.<locals>.<lambda>   s   ø€ Ð~Ðpu×pzÒpzÑp|Ôp|Ð~Ð~€ r1   c                  ó    •— d‰› d‰› d‰› d‰ › �S )NzKpad should be smaller than or equal to half of kernel size, but got padW = z	, padH = z, kW = z, kH = r5   )râ  rã  ræ  rç  s   €€€€r/   rT   z$pool2d_shape_check.<locals>.<lambda>¥  s>   ø€ ð >Øð>ð >Ø!%ð>ð >Ø.0ð>ð >Ø9;ð>ð >€ r1   c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S ©NzGiven input size: (r<   z). Calculated output size: (z). Output size is too smallr5   )rè  ré  rÀ  rî  rÁ  rÂ  s   €€€€€€r/   rT   z$pool2d_shape_check.<locals>.<lambda>«  sZ   ø€ ð # kð #ð #°Kð #ð #À*ð #ð #Ø$0ð#ð #Ø3?ð#ð #ØBMð#ð #ð #€ r1   )rs   rE   rV   r‘   r|  )rÎ   râ  rã  rä  rå  ræ  rç  Ú	dilationHÚ	dilationWrÀ  rè  ré  rÁ  rÂ  rš   r“   Ú
valid_dimsrî  s   ```  ``  `````   @r/   rß  rß  s  s8  øøøøøøøøøøø€ ð" �9Š9‰;Œ;€DØ€Lå	„LØ
ˆQŠÐ�2˜’6ØUÐUñô ð õ 
„LØ
ˆQŠÐ�2˜’6ØPÐPñô ð õ 
„LØ�AŠÐ'˜) aš-ØnÐnñô ð ð
 —’˜A‘” !Ò#Ð:¨¯
ª
°1©¬¸Ò(:€Jà�Ô+Ò+Ð+ÝŒØ�AŠIÐ;˜*Ð;¨¯ª°A©¬¸!Ò);ðQð Qñ	
ô 	
ð 	
ð 	
õ 	ŒØ�QŠYÐ<˜5Ÿ:š: a™=œ=¨AÒ-Ð<°*ð AØ˜’	Ð?˜jÐ?¨U¯ZªZ¸©]¬]¸aÒ-?Ø~Ð~Ð~Ð~ñ	
ô 	
ð 	
õ 
„LØ
ˆa‰�4ŠÐ+˜B !™G tšOð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ñô ð õ 
„LØ�qÒÐ.˜\¨QÒ.ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ñô ð ð ð r1   r  r	  râ  rã  r
  rä  rå  ÚpTÚpHÚpWÚ	dilationTr¯  r°  r  r  r  r  r  r  r  c           
      ó8  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡— ‰ j         }t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        |dv ˆˆ fd„¦  «         t          |¦  «        D ]@Š|dk    r‰dk    rŒt          j        ‰                      ‰¦  «        dk    ˆˆˆ fd„¦  «         ŒA|r-t          j        ‰‰k    o‰‰k    o‰‰k    ˆˆˆˆˆˆfd	„¦  «         t          j        ‰d
z  ‰k    o‰d
z  ‰
k    o‰d
z  ‰	k    ˆˆˆˆ	ˆˆ
fd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆˆˆˆˆfd„¦  «         d S )Nr   c                  ó   •— d‰› d‰ › d‰› �S )Nz5kernel size should be greater than zero, but got kT: z, kH: z, kW: r5   )râ  r	  rã  s   €€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>Í  ó4   ø€ ð,Øð,ð ,Øð,ð ,Ø')ð,ð ,ð r1   c                  ó   •— d‰› d‰ › d‰› �S )Nz0stride should be greater than zero, but got dT: z, dH: z, dW: r5   )rä  r
  rå  s   €€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>Ô  r¸  r1   c                  ó   •— d‰› d‰ › d‰› �S )Nz9dilation should be greater than zero, but got dilationT: z, dilationH: z, dilationW: r5   )r¯  rµ  r°  s   €€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>Û  s;   ø€ ðVØ#ðVð VØ2;ðVð VØJSðVð Vð r1   r  c                  ó   •— ‰ › d‰j         › �S )Nz/: Expected 4D or 5D tensor for input, but got: r  )rµ  rÎ   s   €€r/   rT   z$pool3d_shape_check.<locals>.<lambda>ã  s   ø€ �7ÐXÐXÈ5Ì;ÐXÐX€ r1   rû  c                  óJ   •— ‰ › d‰j         › d‰                     ‰¦  «        › d�S )NzZ: Expected input's non-batch dimensions to have positive length, but input has a shape of z and non-batch dimension z has length zero!)r…   r‘   )rµ  rÒ   rÎ   s   €€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>ì  sG   ø€ Øð Mð MØ-2¬[ðMð Mà,1¯JªJ°q©M¬MðMð Mð Mð r1   c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S )Nzinput image (T: r  rè  z ) smaller than kernel size (kT: ú kH: ú kW: rg   r5   )r  r  r  râ  r	  rã  s   €€€€€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>ö  s]   ø€ ð< 5ð <ð <¨gð <ð <¸6ð <ð <Ø$&ð<ð <Ø-/ð<ð <Ø68ð<ð <ð <ð r1   rÞ   c                  ó,   •— d‰› d‰› d‰ › d‰› d‰› d‰› �S )NzHpad should be smaller than or equal to half of kernel size, but got kT: r¿  r¾  z padT: z padW: z padH: r5   )râ  r	  rã  r³  r²  r´  s   €€€€€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>þ  sh   ø€ ðKØðKð KØðKð KØ%'ðKð KØ02ðKð KØ;=ðKð KØFHðKð Kð r1   rµ   c                  ó:   •— d‰› d‰› d‰ › d‰› d‰› d‰› d‰› d‰› d�S r®  r5   )r  r  r  r  r  r  r  s   €€€€€€€r/   rT   z$pool3d_shape_check.<locals>.<lambda>  sv   ø€ ð( 'ð (ð (¨Eð (ð (°Gð (ð (¸fð (ð (Ø(/ð(ð (Ø27ð(ð (Ø:Að(ð (ØDJð(ð (ð (ð r1   )r“   rE   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Ò   s   `````````````````````  @r/   r  r  ±  sÝ  øøøøøøøøøøøøøøøøøøøøøø€ ð0 Œ:€Då	„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�AŠÐ9˜) aš-Ð9¨I¸ªMð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ˆØXÐXÐXÐXÐXñô ð õ
 �4‰[Œ[ð 
ð 
ˆØ�1Š9ˆ9˜˜aš˜àÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð ð 
ÝŒØ�RŠKÐ:˜G ršMÐ:¨f¸ªlðð ð ð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ
ˆQ‰�"ŠÐ6˜˜a™ 2šÐ6¨"¨q©&°Bª,ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�Š
Ð3�v ’{Ð3 w°!¢|ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r1   c                 óª  — | j         }t          | |||||||	|
||||||||||||¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )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“   s                           r/   Úmax_pool3d_backward_shape_checkrÄ    s$  € ð2 Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ+ô ð õ0 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7å�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨EÑ2Ô2Ð2Ý�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨FÑ3Ô3Ð3Ð3Ð3r1   c                 ó  — | j         }t          | ||||||||	|
|ddd|||||||d¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nrµ   Trß  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/   r  r  L  sÇ   € ð* Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø	Ø	Ø	ØØØØØØØØñ-ô ð õ2 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7Ð7Ð7r1   c                 óP  — d„ } |d|¦  «        \  }}t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    r||}
}	n |d|¦  «        \  }	}
 |d|¦  «        \  }} |d|¦  «        \  }}|                      d	¦  «        }|                      d
¦  «        }|                      d¦  «        }t	          j        | ¦  «        }|t           j        k    r-t          j        |                      ¦   «         dk    d„ ¦  «         nQ|t           j        k    r+t          j        |                      ¦   «         dv d„ ¦  «         nt          j        dd„ ¦  «         t          ||||	||¦  «        }t          ||||
||¦  «        }t          | |||	|
||||||||||¦  «         |||fS )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )NrË  c                  ó   •— d‰ › d�S )Nzmax_pool2d: rÍ  r5   rÎ  s   €r/   rT   zEmax_pool2d_checks_and_compute_shape.<locals>.unpack.<locals>.<lambda>Ž  rÏ  r1   r   rµ   rÐ  rÑ  s   `   r/   rÔ  z3max_pool2d_checks_and_compute_shape.<locals>.unpack‹  rÕ  r1   rs  rÖ  c                  ó   — dS )NzOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intsr5   r5   r1   r/   rT   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>˜  rÙ  r1   r   r¼   r¨  ri  rÝ  r˜  rˆ   rß  c                  ó   — dS )NzMnon-empty 4D (batch mode) tensor expected for input with channels_last layoutr5   r5   r1   r/   rT   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>©  s   € Ðc€ r1   r9  c                  ó   — dS )Nz9non-empty 3D or 4D (batch mode) tensor expected for inputr5   r5   r1   r/   rT   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>®  ó   € ÐO€ r1   Fc                  ó   — dS )Nz?Unsupport memory format. Supports only ChannelsLast, Contiguousr5   r5   r1   r/   rT   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>³  s   € ÐU€ r1   )rE   rV   r¸   r‘   r?   r{  r|  rs   rž   rÞ  rß  )rÎ   rs  r¼   r¨  ri  r¿  rÔ  râ  rã  rä  rå  ræ  rç  r¯  r°  rÀ  rè  ré  rš   rÁ  rÂ  s                        r/   r½  r½  ‚  s  € ðð ð ð ˆV�M ;Ñ/Ô/�F€Bˆå	„LÝˆF‰Œ�yÐ ØaÐañô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$Ø!˜6 *¨hÑ7Ô7Ñ€IˆyØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€JåÔ/°Ñ6Ô6€MØ�Ô+Ò+Ð+ÝŒØ�IŠI‰KŒK˜1ÒØcÐcñ	
ô 	
ð 	
ð 	
ð 
�%Ô1Ò	1Ð	1ÝŒØ�IŠI‰KŒK˜6Ð!ØOÐOñ	
ô 	
ð 	
ð 	
õ
 	ŒØØUÐUñ	
ô 	
ð 	
õ
 (¨°R¸¸rÀ9ÈiÑXÔX€LÝ& z°2°t¸RÀÈIÑVÔV€KåØØ
Ø
Ø
Ø
ØØØØØØØØØØñô ð ð$ ˜ kÐ1Ð1r1   c                 óP  ‡ ‡‡‡‡‡— t          ‰|||||¦  «        \  }ŠŠt          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         |Š‰j        Šˆˆˆˆfd„}	 |	‰ ¦  «          |	|¦  «         t          j        ‰¦  «        }
t          j        ‰j        ‰j        ‰j	        |
¬¦  «        S )Nc                  ó(   •— d‰j         › d‰ j         › �S )NzExpected dtype z  for `gradOutput` but got dtype r}   r4  s   €€r/   rT   z7meta_max_pool2d_with_indices_backward.<locals>.<lambda>ã  s   ø€ Ða $¤*ÐaÐaÈkÔN_ÐaÐa€ r1   c                 ó†   •— t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         d S )Nr�   rÞ   rµ   )rÈ  )r¦  rî  r“   rÁ  rÂ  s    €€€€r/   Ú_check_dim_sizez>meta_max_pool2d_with_indices_backward.<locals>._check_dim_sizeé  sQ   ø€ Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨+Ñ6Ô6Ð6Ð6Ð6r1   rR  )
r½  rE   rV   rM   r“   r?   r{  rx   r…   rp   )rÓ  r†   rs  r¼   r¨  ri  r¿  r¢   rÀ  rÑ  rš   rî  r“   rÁ  rÂ  s   ``         @@@@r/   Ú%meta_max_pool2d_with_indices_backwardrÒ  Î  s÷   øøøøøø€ õ 	,Øˆk˜6 7¨H°iñ	ô 	ñ	ØØØõ
 
„LØŒ
�kÔ'Ò'ØaÐaÐaÐaÐañô ð ð
 €LØŒ9€Dð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð
 €O�KÑ Ô Ð Ø€O�GÑÔÐåÔ/°Ñ5Ô5€MÝŒ;ØŒ
ØŒjØŒ{Ø#ð	ñ ô ð r1   c                 ó’  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        | ¦  «        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        t          j        |t
          j	        | j        |
¬¦  «        fS r»  )
r½  rs   r‘   r?   r{  rE   rx   rM   rp   r¥   r¾  s               r/   Úmeta_max_pool2d_with_indicesrÔ  ú  sæ   € õ 	,Øˆ{˜F G¨X°yñ	ô 	ñ	ØØØð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FÝÔ/°Ñ6Ô6€MØ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆåŒØØ”+Ø”<Ø'ð		
ñ 	
ô 	
õ 	ŒØÝ”+Ø”<Ø'ð		
ñ 	
ô 	
ðð r1   c           	      óÎ  ‡ ‡‡‡
‡‡— t          j        ‰ j        dv ˆ fd„¦  «         ‰ j        }t          |dz
  |¦  «        D ]GŠ
t          j        ‰                      ‰
¦  «        dk    d‰                      ¦   «         › d‰
› d�¦  «         ŒHt          j        t          ‰¦  «        dk    d	„ ¦  «         t          j        t          |¦  «        dk    d
„ ¦  «         ‰                      d¦  «        }‰                      d¦  «        Š‰                      d¦  «        Š|dk    r‰                      d¦  «        }nd}t          j        ‰ j        ‰j        k    d„ ¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                     d¦  «        }‰                     d¦  «        }‰                     d¦  «        Š
t          j        ||k    d¦  «         t          j        ||k    d„ ¦  «         t          j        ‰
dk    ˆ
fd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         ‰                      ¦   «         dk    r|||d         |d         g}	n||d         |d         g}	t          j        |	‰ j        ‰ j	        ¬¦  «        t          j        |	t           j
        ‰ j	        ¬¦  «        fS )Nr9  c                  ó   •— d‰ j         › �S )Nz:fractional_max_pool2d: Expected 3D or 4D tensor, but got: rÝ  rŸ   s   €r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>%  s   ø€ ÐXÈTÌYÐXÐX€ r1   r�   r   z^fractional_max_pool2d: Expected input to have non-zero  size for non-batch dimenions, but got r)  z emptyrÞ   c                  ó   — dS )NzNfractional_max_pool2d: kernel_size musteither be a single int or tuple of Intsr5   r5   r1   r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>3  ó	   € ð 2€ r1   c                  ó   — dS )NzOfractional_max_pool2d: output_size must either be a single int or tuple of Intsr5   r5   r1   r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>8  rØ  r1   rÝ  r˜  rˆ   rß  rµ   c                  ó   — dS )Nz6Expect _random_samples to have the same dtype as inputr5   r5   r1   r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>F  s   € ÐH€ r1   c                  ó   •— d‰ j         › �S )Nz1Expect _random samples to have 3 dimensions got, rÝ  )Úrandom_sampless   €r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>J  s   ø€ ÐYÀNÔDWÐYÐY€ r1   z=Expect _random_samples.size(0) no less then input batch size.c                  ó   — dS )Nz<Expect _random_samples.size(1) equals to input channel size.r5   r5   r1   r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>V  ó   € ÐN€ r1   c                  ó   •— d‰ › d�S )Nz/Expect _random_samples.size(2) equals to 2 got ú.r5   )rÉ   s   €r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>X  s   ø€ Ð!WÐSTÐ!WÐ!WÐ!W€ r1   c                  ó    •— d‰d         › d‰ › �S )Nz%fractional_max_pool2d: kernel height r   z' is too large relative to input height r5   )Úinput_heightrs  s   €€r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>\  s   ø€ Ð}¸ÀA¼Ð}Ð}Ðo{Ð}Ð}€ r1   c                  ó    •— d‰d         › d‰ › �S )Nz$fractional_max_pool2d: kernel width rµ   z& is too large relative to input width r5   )Úinput_widthrs  s   €€r/   rT   z,meta_fractional_max_pool2d.<locals>.<lambda>`  s   ø€ Ðz°{À1´~ÐzÐzÐmxÐzÐz€ r1   ©rM   rp   )rE   rV   r“   rº   r‘   r¸   rM   rs   rx   rp   r¥   )r†   rs  r"  rÜ  r“   Úinput_channelsÚinput_batchrè   Úcr‘   rÉ   râ  rä  s   `` `      @@@r/   Úmeta_fractional_max_pool2dré  !  sb  øøøøøø€ å	„LØŒ	�VÐØXÐXÐXÐXñô ð ð Œ9€Då�4˜!‘8˜TÑ"Ô"ð 
ð 
ˆÝŒØ�IŠI�a‰LŒL˜1Òð]Ø6:·i²i±k´kð]ð ]ØSTð]ð ]ð ]ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð õ
 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð ð —Y’Y˜r‘]”]€NØ—9’9˜R‘=”=€LØ—)’)˜B‘-”-€KØˆq‚y€yØ—i’i ‘l”lˆˆàˆå	„LØŒ
�nÔ*Ò*ØHÐHñô ð õ 
„LØÔ˜qÒ ØYÐYÐYÐYñô ð ð
 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝ	„LØ	ˆ[ÒØGñô ð õ 
„LØ	ˆ^ÒØNÐNñô ð õ 
„L��a’ÐWÐWÐWÐWÑXÔXÐXå	„LØ�AŒ˜ QœÑ'¨!Ñ+¨|Ò;Ø}Ð}Ð}Ð}Ð}ñô ð õ 
„LØ�AŒ˜ QœÑ'¨!Ñ+¨{Ò:ØzÐzÐzÐzÐzñô ð ð
 ‡x‚x�z„z�Q‚€Ø˜^¨[¸¬^¸[È¼^ÐLˆˆà ¨A¤°¸A´Ð?ˆõ 	ŒØØ”*Ø”;ð	
ñ 	
ô 	
õ
 	ŒØÝ”+Ø”;ð	
ñ 	
ô 	
ðð r1   c                 óT  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }	|s|nt          |¦  «        dk    r|	n|d         }
|s|nt          |¦  «        dk    r|	n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | j        d	v d
„ ¦  «         | j        dk    r|                      d¦  «        nd}|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          ||||	||¦  «        }t          ||||
||¦  «        }t          ||||||¦  «        }t          | |||||	|
|||||||||||||d¦  «         | j        dk    o!t          j        | ¦  «        t           j	        k    }| j        dk    rQ|  
                    d¦  «        }|                     ¦   «          o|                     t           j	        ¬¦  «        }||||f}n|||||f}|                      |¦  «        }|                      |t           j        ¬¦  «        }|r@|                     t           j	        ¬¦  «        }|                     t           j	        ¬¦  «        }||fS )Nrù  c                  ó   — dS ©NzMmax_pool3d: kernel_size must either be a single int, or a tuple of three intsr5   r5   r1   r/   rT   z.meta_max_pool3d_with_indices.<locals>.<lambda>‚  ó   € Ð_€ r1   r   rµ   rÞ   c                  ó   — dS ©NzQmax_pool3d: stride must either be omitted, a single int, or a tuple of three intsr5   r5   r1   r/   rT   z.meta_max_pool3d_with_indices.<locals>.<lambda>Š  ó   € Ðc€ r1   c                  ó   — dS ©NzImax_pool3d: padding must either be a single int, or a tuple of three intsr5   r5   r1   r/   rT   z.meta_max_pool3d_with_indices.<locals>.<lambda>’  ó   € Ð[€ r1   c                  ó   — dS ©NzJmax_pool3d: dilation must be either a single int, or a tuple of three intsr5   r5   r1   r/   rT   z.meta_max_pool3d_with_indices.<locals>.<lambda>š  rC  r1   r  c                  ó   — dS r  r5   r5   r1   r/   rT   z.meta_max_pool3d_with_indices.<locals>.<lambda>¢  r  r1   rû  éûÿÿÿr¼  rÝ  r˜  rˆ   zmax_pool3d_with_indices()rß  r™   r}   )rE   rV   r¸   r“   r‘   rÞ  r  r?   r{  r—  rj  r6  r„   r¥   rÿ   )rÎ   rs  r¼   r¨  ri  r¿  r	  râ  rã  r
  rä  rå  r²  r³  r´  rµ  r¯  r°  r¾  r  r  r  r  r  r  r  r|  Úinput_channels_last_checkr–   rÂ   r¢   s                                  r/   Úmeta_max_pool3d_with_indicesrù  v  sÿ  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
  %œz¨Qš˜ˆU�ZŠZ˜‰^Œ^ˆ^°A€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨B°°I¸yÑIÔI€EÝ" 7¨B°°B¸	À9ÑMÔM€GÝ! &¨"¨b°"°iÀÑKÔK€FåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ñ+ô ð ð2 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð „z�Q‚€Ø$)§O¢O°AÑ$6Ô$6Ð!à)×7Ò7Ñ9Ô9Ð9ð
à'×5Ò5ÝÔ0ð 6ñ 
ô 
ð 	ð
 ˜e W¨fÐ5ˆ	ˆ	à˜W e¨W°fÐ=ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gàð CØ�fŠf¥5Ô#9ˆfÑ:Ô:ˆØ—*’*­5Ô+A�*ÑBÔBˆà�ˆ<Ðr1   c                 ó‚  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        d	v d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          || ||||	|
|||||||||||||||d¦  «         |j        dk    o!t          j        |¦  «        t           j        k    }|j        dk    rJ| 	                    d¦  «        }| 
                    ¦   «          o| 
                    t           j        ¬¦  «        }|                     |j        ¦  «        }|r |                     t           j        ¬¦  «        }|S )Nrù  c                  ó   — dS rì  r5   r5   r1   r/   rT   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>í  rí  r1   r   rµ   rÞ   c                  ó   — dS rï  r5   r5   r1   r/   rT   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>õ  rð  r1   c                  ó   — dS rò  r5   r5   r1   r/   rT   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>ý  ró  r1   c                  ó   — dS rõ  r5   r5   r1   r/   rT   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>  rC  r1   r  c                  ó   — dS r  r5   r5   r1   r/   rT   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>  r  r1   r¼  rÝ  r˜  rˆ   z"max_pool3d_with_indices_backward()rû  rß  r™   )rE   rV   r¸   r“   r‘   rÄ  r?   r{  r—  rj  r6  r„   r…   rÿ   )rÓ  rÎ   rs  r¼   r¨  ri  r¿  r¢   r	  râ  rã  r
  rä  rå  r²  r³  r´  rµ  r¯  r°  r  r  r  r  r  r  r  r|  rø  r×  s                                 r/   Ú%meta_max_pool3d_with_indices_backwardr   ß  s�  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Fà×Ò˜RÑ Ô €EØ×Ò˜rÑ"Ô"€GØ×Ò˜bÑ!Ô!€Få#ØØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ,ñ/ô ð ð6 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð „z�Q‚€Ø$)§O¢O°AÑ$6Ô$6Ð!à)×7Ò7Ñ9Ô9Ð9ð
à'×5Ò5ÝÔ0ð 6ñ 
ô 
ð 	ð —’ ¤Ñ-Ô-€Jàð IØ—]’]µÔ1G�]ÑHÔHˆ
àÐr1   Úgridc                 ó"  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        t           j        k    o‰j        t           j        k    ˆˆ fd„¦  «         t          j        ‰ j        d         ‰j        d         k    ˆˆ fd„¦  «         t          j        ‰j        d         ‰ j        dz
  k    ˆˆ fd„¦  «         t          d‰ j        ¦  «        D ]*Št          j        ‰ j        ‰         dk    ˆˆ fd„¦  «         Œ+d S )	Nc                  ó(   •— d‰j         › d‰ j         › �S )NzNgrid_sampler(): expected input and grid to be on same device, but input is on z and grid is on r~  ©r  rÎ   s   €€r/   rT   z+check_grid_sampler_common.<locals>.<lambda>I  s0   ø€ ðAØ”\ðAð AØ37´;ðAð Að r1   c                  ó(   •— d‰j         › d‰ j         › �S )NzTgrid_sampler(): expected input and grid to have torch.strided layout, but input has z and grid has )ro   r  s   €€r/   rT   z+check_grid_sampler_common.<locals>.<lambda>P  s0   ø€ ðCØœðCð CØ59´[ðCð Cð r1   r   c                  ó(   •— d‰j         › d‰ j         › �S )NzZgrid_sampler(): expected grid and input to have same batch size, but got input with sizes ú and grid with sizes r  r  s   €€r/   rT   z+check_grid_sampler_common.<locals>.<lambda>W  s0   ø€ ðOØ %¤ðOð OØBFÄ*ðOð Oð r1   rˆ   rÞ   c                  ó.   •— d‰j         dz
  › d‰ j        › �S )Nz+grid_sampler(): expected grid to have size rÞ   z, in last dimension, but got grid with sizes )r“   r…   r  s   €€r/   rT   z+check_grid_sampler_common.<locals>.<lambda>^  s.   ø€ ð?¸%¼*Àq¹.ð ?ð ?Ø26´*ð?ð ?ð r1   c                  ó    •— d‰j         › d‰ › d�S )NzYgrid_sampler(): expected input to have non-empty spatial dimensions, but input has sizes r)  r*  r  r>  s   €€r/   rT   z+check_grid_sampler_common.<locals>.<lambda>g  r?  r1   )rE   rV   rp   ro   r†  r…   r“   rº   )rÎ   r  rÒ   s   ``@r/   Úcheck_grid_sampler_commonr
  F  st  øøø€ Ý	„LØŒ˜œÒ#ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œÒ%ÐF¨$¬+½¼Ò*Fð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�AŒ˜$œ* Qœ-Ò'ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�2Œ˜%œ* q™.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�e”jÑ!Ô!ð 
ð 
ˆÝŒØŒK˜ŒN˜QÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r1   c                   ó   — e Zd ZdZdZdZdS )ÚGridSamplerInterpolationr   rµ   rÞ   N)ri   Ú
__module__Ú__qualname__ÚBILINEARÚNEARESTÚBICUBICr5   r1   r/   r  r  n  s   € € € € € Ø€HØ€GØ€G€G€Gr1   r  Úinterpolation_modec                 óØ   ‡ ‡— t          j        ‰ j        dk    o‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        dk    o|t          j        j        k     d„ ¦  «         d S )Nrû  c                  ó(   •— d‰j         › d‰ j         › �S )Nzdgrid_sampler(): expected 5D input and grid with same number of dimensions, but got input with sizes r  r  r  s   €€r/   rT   z'check_grid_sampler_3d.<locals>.<lambda>w  s+   ø€ ð1Ø49´Kð1ð 1à$(¤Jð1ð 1ð r1   c                  ó   — dS )Nz<grid_sampler(): bicubic interpolation only supports 4D inputr5   r5   r1   r/   rT   z'check_grid_sampler_3d.<locals>.<lambda>‚  rÞ  r1   )rE   rV   r“   r  r  ry  )rÎ   r  r  s   `` r/   Úcheck_grid_sampler_3dr  t  s”   øø€ Ý	„LØŒ
�aŠÐ3˜EœJ¨$¬)Ò3ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LàŒJ˜!ŠOð MØ"Õ&>Ô&FÔ&LÒLð	
ð 	OÐNñô ð ð ð r1   c                 ó¤   — |d         }|r!t          j        |t           j        ¬¦  «        }nd }t          j        |t           j        ¬¦  «        }	||	fS ©Nr   r™   )rE   rù  rž   r�   ©
rÓ  rÎ   r  r  Úpadding_modeÚalign_cornersr~  Úinput_requires_gradr×  Ú	grad_grids
             r/   Úgrid_sampler_2d_backward_metar  †  sX   € ð & aœ.ÐØð ÝÔ% e½5Ô;RÐSÑSÔSˆ
ˆ
àˆ
ÝÔ  µUÔ5LÐMÑMÔM€IØ˜	Ð"Ð"r1   c                 óú   — t          | |¦  «         t          | ||¦  «         | j        d         }| j        d         }|j        d         }|j        d         }|j        d         }	|                      |||||	f¦  «        S )Nr   rµ   rÞ   r�   )r
  r  r…   r„   )
rÎ   r  r  r  r  rZ  ÚCÚout_DÚout_HÚout_Ws
             r/   Úgrid_sampler_3dr$  ™  s{   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:ØŒ�AŒ€AØŒ�AŒ€AØŒJ�qŒM€EØŒJ�qŒM€EØŒJ�qŒM€EØ�?Š?˜A˜q %¨°Ð6Ñ7Ô7Ð7r1   r  c                 óæ   — t          ||¦  «         t          |||¦  «         |d         }|r!t          j        |t          j        ¬¦  «        }nd }t          j        |t          j        ¬¦  «        }	||	fS r  )r
  r  rE   rù  rå  r�   r  s
             r/   Úgrid_sampler_3d_backwardr&  ¬  s„   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:Ø% aœ.ÐØð ÝÔ%Ø¥Ô!?ð
ñ 
ô 
ˆ
ˆ
ð ˆ
ÝÔ  µUÔ5SÐTÑTÔT€IØ�yÐ Ð r1   c                 óŽ   — |                      dd ¦  «        }|st          j        |¦  «        }||d<   t          j        | g|¢R i |¤ŽS )NrM   )rL   r?   Ú	get_dtyperE   rx   )r‘   r_  rA   rL  rM   s        r/   Úfullr)  Ä  sU   € à�JŠJ�w Ñ%Ô%€EØð ,Ý” 
Ñ+Ô+ˆØ€Fˆ7�OÝŒ;�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-r1   c                 ón  — |t           j        k    rêt          j        |d u d„ ¦  «         t          j        d|€| j        n|||€| j        n||¬¦  «        }| j        rN|                     |                      ¦   «         |  	                    ¦   «         |  
                    ¦   «         ¦  «         n;|                     |                      ¦   «         |                      ¦   «         d¦  «         |                     d¦  «         |S t          j                             | |||||¬¦  «        }|                     d¦  «         |S )Nc                  ó   — dS )Nz9memory format option is only supported by strided tensorsr5   r5   r1   r/   rT   zzeros_like.<locals>.<lambda>Ú  rÌ  r1   r   rê   Tr|  )rE   Ú
sparse_coorV   rx   rM   rp   Ú	is_sparseÚsparse_resize_and_clear_r‘   Ú
sparse_dimÚ	dense_dimrs   Ú_coalesced_r&   r�   r  Úfill_)r†   rM   ro   rp   rq   rš   rt  s          r/   rù  rù  Î  sA  € ð •Ô!Ò!Ð!ÝŒØ˜TÐ!ØOÐOñ	
ô 	
ð 	
õ
 ŒkØØ % �$”*�*°5ØØ"( .�4”;�;°fØ!ð
ñ 
ô 
ˆð Œ>ð 	EØ×(Ò(Ø—	’	‘”˜TŸ_š_Ñ.Ô.°·²Ñ0@Ô0@ñô ð ð ð ×(Ò(¨¯ª©¬°d·h²h±j´jÀ!ÑDÔDÐDà�Š˜ÑÔÐØˆ
Ý
Œ/×
!Ò
!ØØØØØØ#ð "ñ ô €Cð ‡I‚Iˆa�L„L€LØ€Jr1   c                 ó<  ‡ ‡‡— ddl m} ‰                      ¦   «         }t          j        |dk    d„ ¦  «         ‰dk    r‰n‰|z   Š‰                      ‰¦  «        }t          j         |‰ |k    ¦  «        p |‰|k    ¦  «         ˆˆˆ fd„¦  «         ‰dk    r‰n‰|z   Št          ‰                      ¦   «         ¦  «        }t          ‰                      ¦   «         ¦  «        }‰                      ¦   «         ‰|‰         z  z   }|‰= |‰= ‰  	                    |||¦  «        S )Nr   ©Úguard_size_obliviousc                  ó   — dS )Nz-select() cannot be applied to a 0-dim tensor.r5   r5   r1   r/   rT   zmeta_select.<locals>.<lambda>  s   € Ð?€ r1   c                  ó>   •— d‰› d‰                      ¦   «         › d‰ › �S )Nzselect(): index z! out of range for tensor of size z at dimension r�   ©rs   r   r†   s   €€€r/   rT   zmeta_select.<locals>.<lambda>  s8   ø€ ð , 5ð ,ð ,Ø�9Š9‰;Œ;ð,ð ,Ø&)ð,ð ,€ r1   )
rü   r5  rs   rE   r‚   r‘   r¹   r¼   rÁ   rÀ   )	r†   rs   r   r5  r“   r‘   Únew_sizer  Únew_storage_offsets	   ```      r/   Úmeta_selectr;  û  sT  øøø€ àJÐJÐJÐJÐJÐJà�8Š8‰:Œ:€DÝ	ÔØ�Š	Ø?Ð?ñô ð ð
 ˜’�ˆ#ˆ#˜s T™z€CØ�9Š9�S‰>Œ>€Då	Ôà Ð  % ¨$¢Ñ/Ô/ÐVÐ3GÐ3GÈÐQUÊÑ3VÔ3Vð	
ð	,ð 	,ð 	,ð 	,ð 	,ð 	,ñ	ô ð ð ˜a’Z�ZˆEˆE U¨T¡\€Eå�D—I’I‘K”KÑ Ô €HÝ�d—k’k‘m”mÑ$Ô$€Jà×,Ò,Ñ.Ô.°¸ÀC¼Ñ1HÑHÐØ�ˆØ�3ˆà�?Š?˜8 ZÐ1CÑDÔDÐDr1   c                 ó*   — t          j        | ¦  «        S r,   ©r?   Úclone_preserve_strides)r†   r  rs   r   s       r/   Úmeta_select_scatterr?    ó   € åÔ'¨Ñ-Ô-Ð-r1   c                 ó*   — t          j        | ¦  «        S r,   r=  )r†   r  rs   rk   rj   Ústeps         r/   Úmeta_slice_scatterrC  !  r@  r1   Údim_post_exprÚwrap_scalarc                 ó„   — |dk    r|sJ ‚d}| }|dz
  }| |k     s| |k    rJ d| › d|› d|› d�¦   «         ‚| dk     r| |z  } | S )Nr   rµ   zdim z out of bounds (rf   rg   r5   )rs   rD  rE  r„  r…  s        r/   r¦   r¦   '  s~   € Ø˜ÒÐØÐÐˆ{ØˆØˆ.€CØ
˜!Ñ
€CØ�c’	�	˜S 3šY˜Y˜YÐ)R°Ð)RÐ)RÀSÐ)RÐ)RÈCÐ)RÐ)RÐ)R™YœYÐ'Ø
ˆQ‚w€wØˆ}ÑˆØ€Jr1   c                 óP   — |                       ¦   «         dk    rdn| j        |         S r  rÆ  )r¦  rs   s     r/   Úensure_nonempty_sizerH  3  s"   € Ø—’‘”˜1’�ˆ1ˆ1 !¤'¨#¤,Ð.r1   c                 óp  ‡ ‡‡‡— t          ‰                      ¦   «         d¦  «        }t          ‰                     ¦   «         d¦  «        }t          j        ||k    d„ ¦  «         t	          |¦  «        D ]CŠ‰‰k    r;t          j        t          ‰‰¦  «        t          ‰ ‰¦  «        k    ˆˆˆˆ fd„¦  «         ŒDd S )Nrµ   c                  ó   — dS )NzDIndex tensor must have the same number of dimensions as input tensorr5   r5   r1   r/   rT   z$gather_shape_check.<locals>.<lambda>=  s   € ÐV€ r1   c                  ó:   •— d‰› d‰j         › �d‰j         › d‰ › �z   S )Nz!Size does not match at dimension z expected index ú to be no larger than self ú apart from dimension r  )rs   rÒ   r   r†   s   €€€€r/   rT   z$gather_shape_check.<locals>.<lambda>C  s6   ø€ Ð\¸AÐ\Ð\ÈuÌ{Ð\Ð\ØW°´
ÐWÐWÐRUÐWÐWñX€ r1   )r…  rs   rE   rV   rº   rH  )r†   rs   r   Ú	self_dimsÚ
index_dimsrÒ   s   ```  @r/   Úgather_shape_checkrP  8  sÞ   øøøø€ Ý�D—H’H‘J”J Ñ"Ô"€IÝ�U—Y’Y‘[”[ !Ñ$Ô$€JÝ	„LØ�ZÒØVÐVñô ð õ �9ÑÔð ð ˆØ�Š8ˆ8ÝŒLÝ$ U¨AÑ.Ô.Õ2FÀtÈQÑ2OÔ2OÒOðXð Xð Xð Xð Xð Xð Xñô ð øðð r1   c                 óF  ‡— ddl m} t          ||                      ¦   «         ¦  «        } |‰                     ¦   «         dk    ¦  «        }|s<t          j        ‰j        t
          j        k    ˆfd„¦  «         t          | |‰¦  «         |  
                    ‰j        ¦  «        S )Nr   r4  c                  ó   •— d‰ j         › �S )Nz2gather(): Expected dtype int64 for index, but got r}   r~   s   €r/   rT   zmeta_gather.<locals>.<lambda>Q  s   ø€ ÐVÈÌÐVÐV€ r1   )rü   r5  r¦   rs   rƒ   rE   rV   rM   r�   rP  r„   r…   )r†   rs   r   Úsparse_gradr5  Úwrapped_dimÚis_index_emptys     `    r/   Úmeta_gatherrV  H  s¥   ø€ àJÐJÐJÐJÐJÐJå   d§h¢h¡j¤jÑ1Ô1€KØ)Ð)¨%¯+ª+©-¬-¸1Ò*<Ñ=Ô=€NØð 5ÝŒØŒK�5œ:Ò%ØVÐVÐVÐVñ	
ô 	
ð 	
õ 	˜4 ¨eÑ4Ô4Ð4Ø�>Š>˜%œ+Ñ&Ô&Ð&r1   c                 óÖ   — |r@| dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S t          j        dd„ ¦  «         d S | dk    rdS | dk    rdS t          j        dd„ ¦  «         d S )NÚsumÚ
REDUCE_ADDrø  ÚREDUCE_MULTIPLYÚmeanÚREDUCE_MEANÚamaxÚREDUCE_MAXIMUMÚaminÚREDUCE_MINIMUMFc                  ó   — dS )Nz=reduce argument must be either sum, prod, mean, amax or amin.r5   r5   r1   r/   rT   z#get_operator_enum.<locals>.<lambda>f  s   € ÐS€ r1   ÚaddÚmultiplyc                  ó   — dS )Nz/reduce argument must be either add or multiply.r5   r5   r1   r/   rT   z#get_operator_enum.<locals>.<lambda>n  s   € Ð$U€ r1   r9  )Úreduce_Úuse_new_optionss     r/   Úget_operator_enumrg  X  s½   € Øð Ø�eÒÐØ�<Ø˜ÒÐØ$Ð$Ø˜ÒÐØ �=Ø˜ÒÐØ#Ð#Ø˜ÒÐØ#Ð#ÝŒØØSÐSñ	
ô 	
ð 	
ð 	ˆà�eÒÐØ�<Ø˜
Ò"Ð"Ø$Ð$ÝŒ�UÐUÐUÑVÔVÐVØˆr1   c                 ó   ‡ — ddl m}  ||                     ¦   «         dk    ¦  «        r+t          j        |j        t          j        k    ˆ fd„¦  «         |�(t          j        |j        |j        k    ˆ fd„¦  «         d S d S )Nr   r4  c                  ó   •— ‰ › d�S )Nz"(): Expected dtype int64 for indexr5   ©Úmethod_names   €r/   rT   z,scatter_gather_dtype_check.<locals>.<lambda>y  s   ø€ �{ÐFÐFÐF€ r1   c                  ó   •— ‰ › d�S )Nz0(): Expected self.dtype to be equal to src.dtyper5   rj  s   €r/   rT   z,scatter_gather_dtype_check.<locals>.<lambda>  s   ø€ �{ÐTÐTÐT€ r1   )rü   r5  rƒ   rE   rV   rM   r�   )rk  r†   r   Úsrc_optr5  s   `    r/   Úscatter_gather_dtype_checkrn  s  s§   ø€ ØJÐJÐJÐJÐJÐJàÐ˜EŸKšK™MœM¨QÒ.Ñ/Ô/ð 
ÝŒØŒK�5œ:Ò%ØFÐFÐFÐFñ	
ô 	
ð 	
ð
 ÐÝŒØŒJ˜'œ-Ò'ØTÐTÐTÐTñ	
ô 	
ð 	
ð 	
ð 	
ð Ðr1   c                 ó"   — t          | d¦  «        S r  )r…  r‰   s    r/   Úensure_nonempty_dimrp  ƒ  s   € Ýˆs�A‰;Œ;Ðr1   c                 óz  ‡ ‡‡‡— ddl m}  |‰                     ¦   «         dk    ¦  «        rd S t          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         d}t          ‰                      ¦   «         ¦  «        }t          |¦  «        D ]1}t          ‰|¦  «        }|‰k    rŒ|t          ‰ |¦  «        k    rd} nŒ2|s<‰�:t          |¦  «        D ]*}t          ‰|¦  «        }|t          ‰|¦  «        k    rd} nŒ+‰�vt          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         t          j        | ˆˆˆ ˆfd„¦  «         d S t          j        | ˆˆˆ fd„¦  «         d S )	Nr   r4  c                  ó   — dS ©NzCIndex tensor must have the same number of dimensions as self tensorr5   r5   r1   r/   rT   z%scatter_shape_check.<locals>.<lambda>�  rA  r1   FTc                  ó   — dS rs  r5   r5   r1   r/   rT   z%scatter_shape_check.<locals>.<lambda>©  s   € ÐY€ r1   c                  óD   •— d‰j         › d‰j         › �d‰ › d‰j         › �z   S )NúExpected index rL  rM  z and to be no larger than src r  )rs   r   r†   rm  s   €€€€r/   rT   z%scatter_shape_check.<locals>.<lambda>­  s7   ø€ ÐZ e¤kÐZÐZÈdÌjÐZÐZØY sÐYÐYÈ'Ì-ÐYÐYñZ€ r1   c                  ó4   •— d‰j         › d‰j         › �d‰ › �z   S )Nrv  rL  rM  r  r8  s   €€€r/   rT   z%scatter_shape_check.<locals>.<lambda>³  s,   ø€ ÐZ e¤kÐZÐZÈdÌjÐZÐZØ, sÐ,Ð,ñ-€ r1   )	rü   r5  rƒ   rE   rV   rp  rs   rº   rH  )	r†   rs   r   rm  r5  Úis_wrong_shaperN  rÉ   Úindex_d_sizes	   ````     r/   Úscatter_shape_checkrz  ˆ  s.  øøøø€ ØJÐJÐJÐJÐJÐJàÐ˜EŸKšK™MœM¨QÒ.Ñ/Ô/ð ØˆÝ	„LÝ˜DŸHšH™JœJÑ'Ô'Õ+>¸u¿yºy¹{¼{Ñ+KÔ+KÒKØUÐUñô ð ð
 €NÝ# D§H¢H¡J¤JÑ/Ô/€Iõ �9ÑÔð ð ˆÝ+¨E°1Ñ5Ô5ˆØ�Š8ˆ8ØØÕ.¨t°QÑ7Ô7Ò7Ð7Ø!ˆNØˆEð 8ð
 ð ˜gÐ1Ý�yÑ!Ô!ð 	ð 	ˆAÝ/°°qÑ9Ô9ˆLØÕ2°7¸AÑ>Ô>Ò>Ð>Ø!%�Ø�ð ?ð ÐÝŒÝ §¢¡
¤
Ñ+Ô+Õ/BÀ5Ç9Â9Á;Ä;Ñ/OÔ/OÒOØYÐYñ	
ô 	
ð 	
õ 	ŒØÐðZð Zð Zð Zð Zð Zð Zñ	
ô 	
ð 	
ð 	
ð 	
õ 	ŒØÐð-ð -ð -ð -ð -ð -ñ	
ô 	
ð 	
ð 	
ð 	
r1   c                 óº   — t          ||                      ¦   «         ¦  «        }t          d| ||¦  «         t          | |||¦  «         |�t	          ||¦  «         d S d S )NÚscatter)r¦   rs   rn  rz  rg  )r†   rs   r   r  re  rf  rT  s          r/   Úscatter_meta_implr}  ¹  se   € Ý   d§h¢h¡j¤jÑ1Ô1€KÝ˜y¨$°°sÑ;Ô;Ð;Ý˜˜k¨5°#Ñ6Ô6Ð6ØÐå˜' ?Ñ3Ô3Ð3Ð3Ð3ð Ðr1   c                 ó\   — t          | |||d¦  «         |                      | j        ¦  «        S ©Nrb  ©r}  r„   r…   ©r†   rs   r   r  s       r/   Úmeta_scatter_addr‚  Â  s,   € å�d˜C ¨¨UÑ3Ô3Ð3Ø�>Š>˜$œ*Ñ%Ô%Ð%r1   c                 ó,   — t          | |||d¦  «         | S r  ©r}  r�  s       r/   Úmeta_scatter_add_r…  È  s   € å�d˜C ¨¨UÑ3Ô3Ð3Ø€Kr1   c                 ó˜   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         |                      | j        ¦  «        S r,   )r_   rE   r   r}  r„   r…   ©r†   rs   r   Úsrc_or_valuer?  r  s         r/   Úmeta_scatterr‰  Î  sH   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø�>Š>˜$œ*Ñ%Ô%Ð%r1   c                 óh   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         | S r,   )r_   rE   r   r}  r‡  s         r/   Úmeta_scatter_r‹  Ý  s9   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø€Kr1   ç        Úqueryr³   ry  Ú	dropout_pÚ	is_causalÚreturn_debug_maskrI  c                 ó*  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	|                       d¦  «        }
|                      d¦  «        }|                      dd¦  «        }t          j        |¦  «                             dd¦  «        }t          j        |||	ft          j        | j        ¬¦  «        }|rX|
dk    rdnd}t          j        |	|z  ¦  «        }|dk    rd}n|dk    rd}t          j        |||	|f| j	        | j        ¬¦  «        }n!t          j        d| j	        | j        ¬¦  «        }||d d |	|t          j        d	t          j
        d
¬¦  «        t          j        d	t          j
        d
¬¦  «        |f	S )Nr   rµ   rÞ   r�   rå  é@   é€   é   r5   rn   )r‘   rÖ  rE   r�   rx   rI   rp   r÷  ÚceilrM   r�   )r�  r³   ry  rŽ  r�  r�  rI  rÐ   Ú	num_headsÚmax_seqlen_batch_qÚhead_dimÚmax_seqlen_batch_kÚquery_tÚ	attentionÚ	logsumexpÚblocksize_cÚmax_seqlen_kÚ
debug_masks                     r/   Ú(meta__scaled_dot_product_flash_attentionr   ë  sš  € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐØ�zŠz˜!‰}Œ}€HØŸš !™œÐà�oŠo˜a Ñ#Ô#€GÝÔ  Ñ)Ô)×3Ò3°A°qÑ9Ô9€IÝ”Ø	�YÐ 2Ð3ÝŒkØŒ|ðñ ô €Ið ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
ð 	ØØØØØÝŒ�B�eœj°Ð8Ñ8Ô8ÝŒ�B�eœj°Ð8Ñ8Ô8Øð
ð 
r1   Ú	attn_biasÚcompute_log_sumexpc	           	      ó4  — |                       d¦  «        }	|                       d¦  «        }
|                       d¦  «        }|                      d¦  «        }|                       d¦  «        }|                      d¦  «        }t          j        |	|
||f| j        | j        ¬¦  «        }t          j        |	|
|ft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||d d ||||d f	S )Nr   rµ   rÞ   rˆ   rå  r5   rn   )r‘   rE   rx   rM   rp   rI   r�   )r�  r³   ry  r¡  r¢  rŽ  r�  r�  rI  r°  rÒ  ÚS_QÚS_KVÚD_QKÚD_Vrt  Ú
logsum_expÚseedÚoffsets                      r/   Ú(meta__scaled_dot_product_cudnn_attentionr«  $  s  € ð 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ
�*Š*�Q‰-Œ-€CØ�8Š8�A‰;Œ;€DØ�:Š:�b‰>Œ>€DØ
�*Š*�R‰.Œ.€Cå
Œ+�q˜!˜S #Ð&¨e¬kÀ%Ä,Ð
OÑ
OÔ
O€CÝ”Ø	
ˆAˆsˆÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fð 	ØØØØØØØØð
ð 
r1   r+  rœ  Ú	cum_seq_qÚ	cum_seq_kÚmax_qÚmax_kÚphilox_seedÚphilox_offsetc                 ót  — t          j        |                     dd¦  «        ¦  «                             dd¦  «        }t          j        |                     dd¦  «        ¦  «                             dd¦  «        }t          j        |                     dd¦  «        ¦  «                             dd¦  «        }|||fS rê  )rE   r�   rÖ  )r+  r�  r³   ry  rÂ   rœ  r¬  r­  r®  r¯  rŽ  r�  r°  r±  rI  Úgrad_qÚgrad_kÚgrad_vs                     r/   Ú'meta__scaled_dot_product_flash_backwardr¶  O  s›   € õ, Ô˜eŸošo¨a°Ñ3Ô3Ñ4Ô4×>Ò>¸qÀ!ÑDÔD€FÝÔ˜cŸmšm¨A¨qÑ1Ô1Ñ2Ô2×<Ò<¸QÀÑBÔB€FÝÔ˜eŸošo¨a°Ñ3Ô3Ñ4Ô4×>Ò>¸qÀ!ÑDÔD€FØ�6˜6Ð!Ð!r1   Ú	attn_maskc                 óT  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	|                       d¦  «        }
t          j        | ¦  «        }t          j        ||	|ft          j        | j        ¬¦  «                             dd¦  «        }||fS )Nr   rµ   rÞ   r�   rå  )r‘   rE   r�   rx   rI   rp   rÖ  )r�  r³   ry  rŽ  r�  r·  rI  rÐ   r–  r—  r˜  r›  rœ  s                r/   Ú0meta__scaled_dot_product_flash_attention_for_cpur¹  k  s¥   € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐØ�zŠz˜!‰}Œ}€HåÔ  Ñ'Ô'€IÝ”àØØð	
õ
 ŒkØŒ|ðñ ô ÷ ‚i��1�o„oð ð 	Øðð r1   c
                 óÂ  — |                      d¦  «        }
|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }|||fS )Nr   rµ   r�   rÞ   ©r   rÞ   rµ   r�   rå  )r‘   rE   Úempty_permutedrM   rp   )r+  r�  r³   ry  rÂ   rœ  rŽ  r�  r·  rI  rÐ   r–  r˜  Úlen_qÚlen_kr³  r´  rµ  s                     r/   Ú9meta__scaled_dot_product_flash_attention_for_cpu_backwardr¿  Ž  sò   € ð& —’˜A‘”€JØ—
’
˜1‘”€IØ�zŠz˜!‰}Œ}€HØ�JŠJ�q‰MŒM€EØ�HŠH�Q‰KŒK€EåÔ!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒiØŒzð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fð �6˜6Ð!Ð!r1   c                 ó  — |                       dd¦  «        } |                      dd¦  «        }|                      dd¦  «        }|                      d¦  «        }|                      d¦  «        }	|                     d¦  «        }
|                      d¦  «        }|                      d¦  «        }|                     d¦  «        }t          j        ||	||| j        | j        ¬¦  «        }|rt          j        |	dz  ¦  «        dz  nd}t          j        |||ft          j        | j        ¬¦  «        }|                      dd¦  «        }t          j        dt          j	        d	¬¦  «        }t          j        dt          j	        d	¬¦  «        }||||fS )
Nrµ   rÞ   r   r˜  rˆ   rå  r»  r5   rn   )
rÖ  r‘   rE   rx   rM   rp   r÷  r•  rI   r�   )r�  r³   ry  r¡  r¢  rŽ  r�  rI  r°  r€  rZ  r–  ÚKÚKvrt  Úlogsumexp_dimr¨  r©  rª  s                      r/   Ú,meta__scaled_dot_product_efficient_attentionrÄ  ½  sY  € ð �OŠO˜A˜qÑ!Ô!€EØ
�-Š-˜˜1Ñ
Ô
€CØ�OŠO˜A˜qÑ!Ô!€Eà�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ�Š�‰Œ€AØ—
’
˜2‘”€IØ�
Š
�2‰Œ€AØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cà.@ÐG•D”I˜a "™fÑ%Ô%¨Ñ*Ð*Àa€MÝ”Ø	
ˆI�}Ð%ÝŒkØŒ|ðñ ô €Jð �-Š-˜˜1Ñ
Ô
€Cõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð(Ð(r1   Úgrad_input_maskc                 ó  — |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }d }|�†|
d         r~|                      d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                      ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|d	d |…f         }||||fS )
Nr   rµ   rÞ   r�   r»  rå  rˆ   r1  .)r‘   rE   r¼  rM   rp   r¹   rx   )r+  r�  r³   ry  r¡  rÂ   rœ  r°  r±  rŽ  rÅ  r�  rI  rÐ   r–  r®  r˜  Ú
head_dim_vr¯  r³  r´  rµ  Ú	grad_biasÚlastDimÚlastDimAlignedÚ	new_sizess                             r/   Ú+meta__scaled_dot_product_efficient_backwardrÌ  å  s¤  € ð( —’˜A‘”€JØ—
’
˜1‘”€IØ�JŠJ�q‰MŒM€EØ�zŠz˜!‰}Œ}€HØ—’˜A‘”€Jà�HŠH�Q‰KŒK€EåÔ!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒiØŒzð	ñ ô €Fõ Ô!Ø	�Y  zÐ2ØØŒkØŒ|ð	ñ ô €Fð €IØÐ °Ô!3ÐØ—.’. Ñ$Ô$ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜ŸšÑ)Ô)Ñ*Ô*ˆ	Ø&ˆ	�"‰Ý”KØ˜Yœ_°YÔ5Eð
ñ 
ô 
ˆ	ð ˜c 8 G 8˜mÔ,ˆ	à�6˜6 9Ð,Ð,r1   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS r,   r?  )r+  r�  r³   ry  rÂ   rœ  r°  r±  r¡  r¬  r­  r®  r¯  rŽ  r�  rI  r³  r´  rµ  s                      r/   Ú'meta__scaled_dot_product_cudnn_backwardrÎ  !  sA   € õ. Ô˜eÑ$Ô$€FÝÔ˜cÑ"Ô"€FÝÔ˜eÑ$Ô$€FØ�6˜6Ð!Ð!r1   Úwindow_size_leftÚwindow_size_rightÚ	seqused_kÚalibi_slopesc                 ó  — |€|                       d¦  «        n|                     ¦   «         dz
  }|€|                       d¦  «        n|}|€|                      d¦  «        n|}|                       d¦  «        }|                       d¦  «        }t          j        | ¦  «        }t          j        |||ft          j        | j        ¬¦  «        }|	rX|dk    rdnd}t          j        ||z  ¦  «        }|dk    rd}n|dk    rd}t          j        ||||f| j	        | j        ¬¦  «        }n!t          j        d| j	        | j        ¬¦  «        }||t          j        d	t          j
        d
¬¦  «        t          j        d	t          j
        d
¬¦  «        |fS )Nr   rµ   r˜  rˆ   rå  r’  r“  r”  r5   rn   )r‘   rƒ   rE   r�   rx   rI   rp   r÷  r•  rM   r�   )r�  r³   ry  r¬  r­  r®  r¯  rŽ  r�  r�  rI  rÏ  rÐ  rÑ  rÒ  rÐ   r—  r™  r–  r˜  r›  rœ  r�  rž  rŸ  s                            r/   Úmeta__flash_attention_forwardrÔ  >  s—  € ð4 #,Ð"3�—’˜A‘”�¸¿ºÑ9JÔ9JÈQÑ9N€JØ*3Ð*;˜Ÿš A™œ˜ÀÐØ(1Ð(9˜Ÿš !™œ˜¸uÐØ—
’
˜2‘”€IØ�zŠz˜"‰~Œ~€Hõ Ô  Ñ'Ô'€IÝ”Ø	�YÐ 2Ð3ÝŒkØŒ|ðñ ô €Ið ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
ð 	ØÝŒ�B�eœj°Ð8Ñ8Ô8ÝŒ�B�eœj°Ð8Ñ8Ô8Øðð r1   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS r,   r?  )r+  r�  r³   ry  rÂ   rœ  r¬  r­  r®  r¯  rŽ  r�  r°  r±  rI  rÏ  rÐ  Ú
grad_queryÚgrad_keyÚ
grad_values                       r/   Úmeta__flash_attention_backwardrÙ    sA   € õ0 Ô! %Ñ(Ô(€JÝÔ Ñ$Ô$€HÝÔ! %Ñ(Ô(€Jà�x Ð+Ð+r1   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qrž  Úcustom_mask_typeÚcausal_diagonalÚseqlen_kÚwindow_sizec                 óÀ  — |                       d¦  «        }|                       d¦  «        }|                      d¦  «        }|                       d¦  «        }|                       d¦  «        }|                      d¦  «        }t          j        ||||| j        | j        ¬¦  «        }|�|                      d¦  «        dz
  n|}|}|�|€J ‚|}|�|n|}|
rt          j        |dz  ¦  «        dz  nd}t          j        |||ft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||||||fS )	Nr   rµ   r˜  rˆ   rå  r»  r5   rn   )	r‘   rE   rx   rM   rp   r÷  r•  rI   r�   )r�  r³   ry  r  rÚ  rÛ  rÜ  rž  rŽ  rÝ  r¢  rI  rÞ  rß  rà  r°  r€  rZ  r–  rÁ  rÂ  rt  Úlogsumexp_batch_dimÚactual_max_seqlen_qÚactual_max_seqlen_krÃ  r¨  r©  rª  s                                r/   Ú!meta__efficient_attention_forwardrå  ž  si  € ð, 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ�Š�‰Œ€AØ—
’
˜2‘”€IØ�
Š
�2‰Œ€AØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cà7CÐ7O˜,×+Ò+¨AÑ.Ô.°Ñ2Ð2ÐVWÐØÐØÐØÐ'Ð'Ð'Ø*ÐØ*6Ð*B˜,˜,ÈÐà4FÐM�Œ	Ð%¨Ñ*Ñ+Ô+¨bÑ0Ð0ÈAð õ ”Ø	˜i¨Ð7ÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð*=Ð?RÐRÐRr1   Úbias_requires_gradÚnum_splits_keyÚshared_storage_dqdkdvc                 ó¢  — |rðt          j        |j        d         |j        d         k    d„ ¦  «         t          j        |j        d         |j        d         k    d„ ¦  «         t          j        g |j        dd…         ¢d‘|j        d         ‘|j        d         ‘R |j        |j        ¬¦  «        }|                     d	d¦  «        }|                     d	d¦  «        }|                     d	d
¦  «        }n<t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|�|                     d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                     ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|dd |…f         }nt          j        d|j        ¬¦  «        }||||fS )Nrµ   c                  ó   — dS )Nz,seqlen must match for `shared_storage_dqdkdvr5   r5   r1   r/   rT   z4meta__efficient_attention_backward.<locals>.<lambda>ï  s   € ÐB€ r1   r�   c                  ó   — dS )Nz3embedding dim must match for `shared_storage_dqdkdvr5   r5   r1   r/   rT   z4meta__efficient_attention_backward.<locals>.<lambda>ó  s   € ÐI€ r1   r   r˜  rˆ   rå  rÝ  rÞ   r1  .r5   r~  )
rE   rV   r…   rx   rM   rp   rl  r�   r‘   r¹   )r+  r�  r³   ry  r  rÚ  rÛ  rÜ  rž  rœ  rŽ  r°  r±  rÝ  ræ  rI  rç  rè  ÚchunkrÖ  r×  rØ  rÉ  rÊ  rË  rÈ  s                             r/   Ú"meta__efficient_attention_backwardrí  Ó  sÕ  € ð2 ð -ÝŒØŒK˜ŒN˜cœi¨œlÒ*ØBÐBñ	
ô 	
ð 	
õ 	ŒØŒK˜ŒN˜cœi¨œlÒ*ØIÐIñ	
ô 	
ð 	
õ ”ØEˆeŒk˜!˜B˜$ÔÐE ÐE E¤K°¤OÐE°U´[À´_ÐEÐEØ”+Ø”<ð
ñ 
ô 
ˆð
 —\’\ " aÑ(Ô(ˆ
Ø—<’<  AÑ&Ô&ˆØ—\’\ " aÑ(Ô(ˆ
ˆ
åÔ% eÑ,Ô,ˆ
ÝÔ# CÑ(Ô(ˆÝÔ% eÑ,Ô,ˆ
àÐØ—)’)˜B‘-”-ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜Ÿš™œÑ%Ô%ˆ	Ø&ˆ	�"‰Ý”K 	°´ÀDÄKÐPÑPÔPˆ	Ø˜c 8 G 8˜mÔ,ˆ	ˆ	å”K ¨5¬<Ð8Ñ8Ô8ˆ	à�x ¨YÐ6Ð6r1   Úscale_aÚscale_bÚscale_resultÚuse_fast_accumc                 ó  ‡ ‡‡‡‡‡— d„ }t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆˆ fd„¦  «         t          j         |‰ j        ¦  «        o |‰j        ¦  «        ˆˆ fd„¦  «         t	          ‰ ¦  «        dk    �r—d„ }	d„ }
d„ }t          j         |	‰                      ¦   «         ¦  «        p
 |‰ ¦  «        ˆ fd	„¦  «         t          j         |
‰                     ¦   «         ¦  «        p
 |‰¦  «        ˆfd
„¦  «         t          j        ‰                      d¦  «        dz  dk    ˆ fd„¦  «         t          j        ‰                     d¦  «        dz  dk    o‰                     d¦  «        dz  dk    ˆfd„¦  «         t          j        ‰j        t           j        k    o‰j        t           j        k    d„ ¦  «         ‰ j        \  Š}‰                     d¦  «        Š‰ 	                    ¦   «         dk    r‰ 	                    ¦   «         dk    r�nt          j        ‰                     ¦   «         dk    o‰                     ¦   «         dk    ˆˆfd„¦  «         ‰                     d¦  «        ‰k    rˆ‰                     d¦  «        dk    ro‰                     d¦  «        dk    rV‰                     d¦  «        ‰k    r=t          j        ‰ 
                    ¦   «         o‰ 
                    ¦   «         d„ ¦  «         nt          j        dˆˆˆˆfd„¦  «         |�|n‰ j        }t          j        ‰                      d¦  «        ‰                     d¦  «        |‰ j        ¬¦  «        S )Nc                 ób   — | t           j        t           j        t           j        t           j        fv S r,   )rE   r5  Úfloat8_e5m2Úfloat8_e4m3fnuzÚfloat8_e5m2fnuzr}   s    r/   Úis_fp8_typez#meta_scaled_mm.<locals>.is_fp8_type  s,   € ØÝÔÝÔÝÔ!ÝÔ!ð	
ð 
ð 	
r1   rÞ   c                  ó\   •— d‰                      ¦   «         › d‰                       ¦   «         › �S )Nz%Inputs must be 2D but got self.dim()=z and mat2.dim()=r‰   ©r   r†   s   €€r/   rT   z meta_scaled_mm.<locals>.<lambda>$  s-   ø€ Ð`¸¿º¹
¼
Ð`Ð`ÐTX×T\ÒT\ÑT^ÔT^Ð`Ð`€ r1   c                  ó(   •— d‰j         › d‰ j         › �S )Nz8Expected both inputs to be fp8 types but got self.dtype=z and mat2.dtype=r}   rù  s   €€r/   rT   z meta_scaled_mm.<locals>.<lambda>(  s   ø€ ÐsÈ4Ì:ÐsÐsÐgkÔgqÐsÐs€ r1   rK  c                 ó>   — | d         | d         k    o| d         dk    S r  r5   r  s    r/   Úis_row_majorz$meta_scaled_mm.<locals>.is_row_major-  s"   € Ø˜!”9˜v aœyÒ(Ð;¨V°A¬Y¸!ª^Ð;r1   c                 ó2   — | d         dk    o| d         dk    S r  r5   r  s    r/   Úis_col_majorz$meta_scaled_mm.<locals>.is_col_major0  s   € Ø˜!”9 ’>Ð3 f¨Q¤i°!¢mÐ3r1   c                 óf   — |                       d¦  «        dk    p|                       d¦  «        dk    S r  r�   )Ú	tensor_2ds    r/   Úhas_zero_dimz$meta_scaled_mm.<locals>.has_zero_dim3  s/   € Ø—>’> !Ñ$Ô$¨Ò)ÐC¨Y¯^ª^¸AÑ->Ô->À!Ò-CÐCr1   c                  ó2   •— d‰                       ¦   «         › �S )Nz#self must be row_major, got stride r  rŸ   s   €r/   rT   z meta_scaled_mm.<locals>.<lambda>8  ó   ø€ ÐI¸$¿+º+¹-¼-ÐIÐI€ r1   c                  ó2   •— d‰                       ¦   «         › �S )Nz#mat2 must be col_major, got stride r  ©r   s   €r/   rT   z meta_scaled_mm.<locals>.<lambda><  r  r1   rµ   r1  r   c                  ó4   •— d‰                       d¦  «        › �S )NzBExpected self.size(1) to be divisible by 16, but got self.size(1)=rµ   r�   rŸ   s   €r/   rT   z meta_scaled_mm.<locals>.<lambda>@  s    ø€ ÐgÐY]×YbÒYbÐcdÑYeÔYeÐgÐg€ r1   c                  ó   •— d‰ j         › �S )Nz>Expected both dimensions of mat2 to be divisble by 16 but got r  r  s   €r/   rT   z meta_scaled_mm.<locals>.<lambda>D  s   ø€ ÐaÐUYÔU_ÐaÐa€ r1   c                  ó   — dS )Nz6Both scale_a and scale_b must be float (fp32) tensors.r5   r5   r1   r/   rT   z meta_scaled_mm.<locals>.<lambda>J  s   € ÐL€ r1   c                  ó\   •— d‰                       ¦   «         ›d‰                      ¦   «         ›�S )NzLFor non-tensorwise scaling, scale tensors must be 2D, but got scale_a.dim()=z and scale_b.dim()=r‰   )rî  rï  s   €€r/   rT   z meta_scaled_mm.<locals>.<lambda>U  s2   ø€ Ð~ÐY`×YdÒYdÑYfÔYfÐ~Ð~Ðnu×nyÒnyÑn{Ôn{Ð~Ð~€ r1   c                  ó   — dS )Nz@Both scale_a and scale_b must be contiguous for rowwise scaling.r5   r5   r1   r/   rT   z meta_scaled_mm.<locals>.<lambda>a  s   € Ð^€ r1   Fc                  óÆ   •— d‰ › d‰› d‰                      d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�S )	Nz}Invalid scaling configuration. For tensorwise scaling, both scales should be scalar. For rowwise scaling, scale_a should be (z, 1), scale_b should be (1, z). Got scale_a.size()=(r   rf   rµ   z) and scale_b.size()=(rg   r�   )r:  rè   rî  rï  s   €€€€r/   rT   z meta_scaled_mm.<locals>.<lambda>g  s¢   ø€ ðUàCDðUð UàbcðUð Uð 07¯|ª|¸A©¬ðUð Uð CJÇ,Â,ÈqÁ/Ä/ðUð Uð 07¯|ª|¸A©¬ð	Uð Uð CJÇ,Â,ÈqÁ/Ä/ð	Uð Uð Uð r1   rå  )rE   rV   rs   rM   rL  r¼   r‘   r2  r…   rƒ   r6  rx   rp   )r†   r   rî  rï  r  rð  r  rñ  r÷  rü  rþ  r  r9  Ú
_out_dtyper:  rè   s   ````          @@r/   Úmeta_scaled_mmr    sÒ  øøøøøø€ ð
ð 
ð 
õ 
„LØ�Š‰
Œ
�aŠÐ+˜DŸHšH™JœJ¨!šOØ`Ð`Ð`Ð`Ð`ñô ð õ 
„LØˆ�D”JÑÔÐ; K K°´
Ñ$;Ô$;ØsÐsÐsÐsÐsñô ð õ
 �4ÑÔ˜FÒ"Ñ"ð	<ð 	<ð 	<ð	4ð 	4ð 	4ð	Dð 	Dð 	Dõ 	ŒØˆL˜Ÿš™œÑ'Ô'Ð=¨<¨<¸Ñ+=Ô+=ØIÐIÐIÐIñ	
ô 	
ð 	
õ 	ŒØˆL˜Ÿš™œÑ'Ô'Ð=¨<¨<¸Ñ+=Ô+=ØIÐIÐIÐIñ	
ô 	
ð 	
õ 	ŒØ�IŠI�a‰LŒL˜2Ñ Ò"ØgÐgÐgÐgñ	
ô 	
ð 	
õ 	ŒØ�IŠI�a‰LŒL˜2Ñ Ò"Ð= t§y¢y°¡|¤|°bÑ'8¸AÒ'=ØaÐaÐaÐañ	
ô 	
ð 	
õ 	ŒØŒM�Uœ]Ò*ÐM¨w¬}ÅÄÒ/MØLÐLñ	
ô 	
ð 	
ð Œz‰ˆˆ1Ø�IŠI�a‰LŒLˆØ�=Š=‰?Œ?˜aÒÐ G§M¢M¡O¤O°qÒ$8Ð$8áõ ŒLØ—’‘” Ò"Ð9 w§{¢{¡}¤}¸Ò'9Ø~Ð~Ð~Ð~Ð~ñô ð ð —’˜Q‘” 1Ò$Ð$Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(õ ”Ø×)Ò)Ñ+Ô+ÐG°×0EÒ0EÑ0GÔ0GØ^Ð^ñô ð ð õ ”Øðð ð ð ð ð ð ñ	ô 	ð 	ð (Ð3��¸¼€JÝŒ;�t—y’y ‘|”| T§Y¢Y¨q¡\¤\¸ÈDÌKÐXÑXÔXÐXr1   c                 ó`   — t          | ||||d¬¦  «         |                      | j        ¦  «        S ©NT)rf  r€  ©r†   rs   r   r  r?  r=  s         r/   Úmeta_scatter_reduce_twor  t  s3   € õ �d˜C ¨¨VÀTÐJÑJÔJÐJØ�>Š>˜$œ*Ñ%Ô%Ð%r1   c                 ó0   — t          | ||||d¬¦  «         | S r  r„  r  s         r/   Úmeta_scatter_reduce__twor  {  s"   € å�d˜C ¨¨VÀTÐJÑJÔJÐJØ€Kr1   c                ód  ‡ — t          j        d‰                      ¦   «         cxk     odk    nc ˆ fd„¦  «         ‰                      ¦   «         dk    r&t          j        |t           j        ‰ j        ¬¦  «        S t          j        ‰                      d¦  «        |t           j        ‰ j        ¬¦  «        S )Nr   rÞ   c                  ó2   •— d‰                       ¦   «         › �S )Nz@The probabilty distributions dimensions must be 1 or 2, but got r‰   r;  s   €r/   rT   z"meta_multinomial.<locals>.<lambda>†  s   ø€ Ð`ÐSX×S\ÒS\ÑS^ÔS^Ð`Ð`€ r1   rµ   rå  )rE   rV   rs   rx   r�   rp   r‘   )rÎ   Únum_samplesÚreplacementrå   s   `   r/   Úmeta_multinomialr  �  s¬   ø€ õ 
„LØ	ˆE�IŠI‰KŒKÐÐÒÐ˜1ÒÐÐÐØ`Ð`Ð`Ð`ñô ð ð ‡y‚y�{„{�aÒÐÝŒ{˜;­e¬jÀÄÐNÑNÔNÐNÝŒ;Ø�
Š
�1‰Œ�{­%¬*¸U¼\ðñ ô ð r1   c                 ó   — d}| D ]}||z  }Œ|S r  r5   )Úvsr7  Úvs      r/   Úmultiply_integersr  �  s&   € Ø	€AØð ð ˆØ	ˆQ‰ˆˆØ€Hr1   c                 ó†  ‡ ‡‡‡— t          j        t          ‰¦  «        ‰k    ˆˆfd„¦  «         ‰dz   Št          j        t          ‰ ¦  «        ‰k    ˆˆ fd„¦  «         t          j        t          d„ ‰ dd …         D ¦   «         ¦  «        ot          d„ ‰D ¦   «         ¦  «        ˆ ˆfd„¦  «         ‰ d d…         \  }}||g‰¢R S )Nc                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz%It is expected output_size equals to ú, but got size r§  )Únum_spatial_dimsr"  s   €€r/   rT   z'upsample_common_check.<locals>.<lambda>™  s#   ø€ ÐkÐ8HÐkÐkÕY\Ð]hÑYiÔYiÐkÐk€ r1   rÞ   c                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz$It is expected input_size equals to r  r§  )Úexpected_input_dimsrö  s   €€r/   rT   z'upsample_common_check.<locals>.<lambda>ž  s#   ø€ ÐlÐ7JÐlÐlÕ[^Ð_iÑ[jÔ[jÐlÐl€ r1   c              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr5   ©r;   rz  s     r/   rb   z(upsample_common_check.<locals>.<genexpr>¢  s&   è è € Ð*Ð*�aˆA�ŠEÐ*Ð*Ð*Ð*Ð*Ð*r1   c              3   ó"   K  — | ]
}|d k    V — ŒdS r$  r5   r%  s     r/   rb   z(upsample_common_check.<locals>.<genexpr>¢  s&   è è € Ð2NÐ2N¸Q°1°q²5Ð2NÐ2NÐ2NÐ2NÐ2NÐ2Nr1   c                  ó   •— d‰ › d‰› �S )NzDInput and output sizes should be greater than 0, but got input size z and output size r5   )rö  r"  s   €€r/   rT   z'upsample_common_check.<locals>.<lambda>£  s)   ø€ ð AØ ðAð AØ3>ðAð A€ r1   )rE   rV   r¸   rk  )rö  r"  r   r¾  Úchannelsr"  s   ```  @r/   Úupsample_common_checkr)  –  s  øøøø€ Ý	„LÝˆKÑÔÐ,Ò,ØkÐkÐkÐkÐkñô ð ð +¨QÑ.ÐÝ	„LÝˆJ‰ŒÐ.Ò.ØlÐlÐlÐlÐlñô ð õ
 
„LÝÐ*Ð*˜: a b bœ>Ð*Ñ*Ô*Ñ*Ô*ÐN­sÐ2NÐ2NÀ+Ð2NÑ2NÔ2NÑ/NÔ/Nð	Að 	Að 	Að 	Að 	Añô ð ð " " 1 "”~Ñ€FˆHØ�HÐ+˜{Ð+Ð+Ð+r1   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   rµ   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 3D data tensor expected but got a tensor with sizes r�   r;  s   €r/   rT   z$upsample_nearest1d.<locals>.<lambda>±  ó   ø€ Ð_ÐQV×Q[ÒQ[ÑQ]ÔQ]Ð_Ð_€ r1   ©r   r™   ©
rE   rV   rƒ   r  r‘   r)  r„   rÿ   r?   r{  )rÎ   r"  ÚscalesÚfull_output_sizes   `   r/   Úupsample_nearest1dr1  «  ó´   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r1   c                 óØ  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «        }t          j        ‰ ¦  «        }‰ j	        \  }}}}‰ j
        j        dk    r|dk     rt           j        }|                     |¬¦  «        }|S )	Nr   rµ   c                  ó2   •— d‰                       ¦   «         › �S ©Nz>Non-empty 4D data tensor expected but got a tensor with sizes r�   r;  s   €r/   rT   z$upsample_nearest2d.<locals>.<lambda>Á  r,  r1   rÞ   r-  rK  rß  r™   )rE   rV   rƒ   r  r‘   r)  r„   r?   r{  r…   rp   rh   rž   r©   )	rÎ   r"  Úscales_hÚscales_wr0  rÚ   rš   rB   Ú
n_channelss	   `        r/   Úupsample_nearest2dr9  »  sí   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �_Š_Ð-Ñ.Ô.€Fõ Ô/°Ñ6Ô6€Mð  œ+Ñ€A€z�1�aØ„|Ô˜FÒ"Ð" z°A¢~ ~ÝÔ/ˆà×Ò¨]ÐÑ;Ô;€Fà€Mr1   r"  rö  r6  r7  c                 óv  ‡ ‡‡— t          ||d¬¦  «        Št          j        ‰ j        dk    ˆ fd„¦  «         t	          d¦  «        D ]9Št          j        ‰                      ‰¦  «        ‰‰         k    ˆˆ ˆfd„¦  «         Œ:‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )NrÞ   r-  rß  c                  ó   •— d‰ j         › �S )NzFExpected grad_output to be a tensor of dimension 4 but got: dimension rÝ  rJ  s   €r/   rT   z-upsample_nearest2d_backward.<locals>.<lambda>ç  s   ø€ ÐkÐYdÔYiÐkÐk€ r1   c            
      óR   •— d‰› d‰ ‰         › d‰› d‰                      ‰¦  «        › �S )NzCExpected grad_output to have the same shape as output; output.size(z) = z but got grad_output.size(r�   )r0  rÓ  rÒ   s   €€€r/   rT   z-upsample_nearest2d_backward.<locals>.<lambda>ì  s]   ø€ ðJØ !ðJð JØ'7¸Ô':ðJð Jà-.ðJð Jà4?×4DÒ4DÀQÑ4GÔ4GðJð Jð r1   r™   )
r)  rE   rV   r“   rº   r‘   r„   rÿ   r?   r{  )rÓ  r"  rö  r6  r7  r0  rÒ   s   `    @@r/   Úupsample_nearest2d_backwardr=  Õ  sõ   øøø€ õ -Ø�K°!ðñ ô Ðõ 
„LØÔ˜AÒØkÐkÐkÐkñô ð õ �1‰XŒXð 
ð 
ˆÝŒØ×Ò˜QÑÔÐ#3°AÔ#6Ò6ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð × Ò  Ñ,Ô,×/Ò/ÝÔ1°+Ñ>Ô>ð 0ñ ô ð r1   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   rµ   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 5D data tensor expected but got a tensor with sizes r�   r;  s   €r/   rT   z$upsample_nearest3d.<locals>.<lambda>þ  r,  r1   r�   r-  r™   r.  )rÎ   r"  Úscales_dr6  r7  r0  s   `     r/   Úupsample_nearest3drA  ø  r2  r1   c                 óð  — t          j        | ¦  «        t          j        | t           j        ¬¦  «        }}|�½|�»t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        }|                     ¦   «         }	t          ||¦  «        }t          ||¦  «        }|                     ||	¦  «         |                     ||	¦  «         t          ||¬¦  «         t          ||¬¦  «         ||fS ||fS )Nr}   )rg  rh  )
rE   r�   r¥   r_   r   r…   r¼   r   r  r!   )
r†   Ústablers   Ú
descendingr¡   r¢   r  rÒ   r–   Ú
out_strides
             r/   Ú	meta_sortrF    sú   € õ Ô˜DÑ!Ô!¥5Ô#3°DÅÄÐ#LÑ#LÔ#L€q€AØÐ˜gÐ1Ý˜&¥*Ñ-Ô-Ð-Ð-Ð-Ý˜'¥:Ñ.Ô.Ð.Ð.Ð.ð ”Gˆ	Ø—X’X‘Z”Zˆ
Ý" 6¨9Ñ5Ô5ˆÝ# G¨YÑ7Ô7ˆØ×Ò˜9 jÑ1Ô1Ð1Ø×Ò˜I zÑ2Ô2Ð2Ý ¨FÐ3Ñ3Ô3Ð3Ý ¨GÐ4Ñ4Ô4Ð4Ø�wˆÐØˆaˆ4€Kr1   c           	      ó  ‡ ‡‡‡‡‡‡‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰                      d¦  «        Š‰�wt          j        ‰j        dk    ˆfd„¦  «         t          j        ‰                     ¦   «         ‰k    ˆˆfd„¦  «         t          j        ‰j        ‰j        k    ˆˆfd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                      d	¦  «        ‰z  ‰z  Št          j        ‰                     ¦   «         ‰k    ˆˆˆˆ ˆfd
„¦  «         t          j        t          ˆ fd„‰‰‰‰fD ¦   «         ¦  «        d„ ¦  «         d S )NrÞ   c                  ó   •— ‰ j         › d�S ©Nz != 2rÝ  )Úinput_gatess   €r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>+  ó   ø€ °;Ô3CÐ0JÐ0JÐ0J€ r1   c                  ó&   •— ‰j         › d‰ j         › �S ©Nú != r  )Úhidden_gatesrJ  s   €€r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>.  s   ø€ �;Ô$Ð>Ð>¨,Ô*<Ð>Ð>€ r1   rµ   c                  ó   •— ‰ j         › d�S )Nz != 1rÝ  )Ú
input_biass   €r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>2  s   ø€ °j´oÐ3LÐ3LÐ3L€ r1   c                  ó6   •— ‰                      ¦   «         › d‰ › �S rM  r
  )Ú
gates_sizerQ  s   €€r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>5  s!   ø€ �z×'Ò'Ñ)Ô)Ð;Ð;¨zÐ;Ð;€ r1   c                  ó&   •— ‰j         › d‰ j         › �S rM  r  )Úhidden_biasrQ  s   €€r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>9  s   ø€ �zÔ'Ð@Ð@¨[Ô->Ð@Ð@€ r1   c                  ó   •— ‰ j         › d�S rI  rÝ  )Úprev_hiddens   €r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>;  rK  r1   r   c            
      óp   •— ‰                      ¦   «         › d‰                     d¦  «        › d‰› d‰› d‰ › d�
S )NrN  r   z * z // z (aka rg   )rƒ   r‘   )Úexpected_prev_hidden_numelÚfactorrS  rJ  rW  s   €€€€€r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>?  sL   ø€ �;×$Ò$Ñ&Ô&ÐÐ¨K×,<Ò,<¸QÑ,?Ô,?ÐÐÀJÐÐÐTZÐÐÐb|ÐÐÐ€ r1   c              3   ó8   •K  — | ]}|j         ‰j         k    V — Œd S r,   r~  )r;   r<   rJ  s     €r/   rb   z&rnn_cell_checkSizes.<locals>.<genexpr>B  sA   øè è € ð 
ð 
àð ŒH˜Ô*Ò*ð
ð 
ð 
ð 
ð 
ð 
r1   c                  ó   — dS )Nz%expected all inputs to be same devicer5   r5   r1   r/   rT   z%rnn_cell_checkSizes.<locals>.<lambda>F  s   € Ð7€ r1   )rE   rV   r“   r…   r‘   rƒ   rk  )rJ  rO  rQ  rU  rZ  rW  rY  rS  s   ``````@@r/   Úrnn_cell_checkSizesr]  #  sò  øøøøøøøø€ õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKÝ	„LØÔ˜\Ô/Ò/Ø>Ð>Ð>Ð>Ð>ñô ð ð ×!Ò! !Ñ$Ô$€JØÐÝŒ�Z”_¨Ò)Ð+LÐ+LÐ+LÐ+LÑMÔMÐMÝŒØ×ÒÑÔ *Ò,Ø;Ð;Ð;Ð;Ð;ñ	
ô 	
ð 	
õ 	ŒØÔ Ô 1Ò1Ø@Ð@Ð@Ð@Ð@ñ	
ô 	
ð 	
õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKØ!,×!1Ò!1°!Ñ!4Ô!4°zÑ!AÀVÑ!KÐÝ	„LØ×ÒÑÔÐ9Ò9ØÐÐÐÐÐÐÐñô ð õ 
„LÝð 
ð 
ð 
ð 
à" J°¸[ÐIð
ñ 
ô 
ñ 	
ô 	
ð 	8Ð7ñô ð ð ð r1   c                 óô   — t          | |||d|¦  «         t          j        | t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }|||fS )Nrß  r™   )r]  rE   r�   rž   )rJ  rO  ÚcxrQ  rU  Ú	workspaceÚhyÚcys           r/   Ú_thnn_fused_lstm_cell_metarc  J  sq   € õ ˜ \°:¸{ÈAÈrÑRÔRÐRÝÔ  ½EÔ<SÐTÑTÔT€IÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BØ��IÐÐr1   c                 ót  — t          |¦  «        dk    }|r%t          |¦  «        }|d         }| j        d         }n:|
r| j        d         n| j        d         }|
r| j        d         n| j        d         }d}|rdnd}|dk    r|n|}|r|||z  g}n|
r||||z  gn||||z  g}|                      |¦  «        }|	|z  ||g}|€t          j        d| j        ¬¦  «        }n|                     |¦  «        }|                     |	|z  ||g¦  «        }|rdnd}|                      |t          j        ¬¦  «        }|||||fS )Nr   rµ   rˆ   rÞ   r~  r}   )r¸   r…   r„   rE   rx   rp   r¼  )rÎ   r  Úweight_stride0Ú
weight_bufÚhxr_  r3  Úhidden_sizeÚ	proj_sizeÚ
num_layersÚbatch_firstÚdropoutÚtrainÚbidirectionalÚbatch_sizesÚdropout_stateÚis_input_packedÚ
seq_lengthÚ
mini_batchÚbatch_sizes_sumÚnum_directionsÚout_sizer–   rÚ   Ú
cell_shaperb  ra  Úreserve_shapeÚreserves                                r/   Ú
_cudnn_rnnrz  Y  s‰  € õ& ˜+Ñ&Ô&¨!Ò+€OØð Ý˜Ñ%Ô%ˆ
Ø  ”^ˆ
Øœ+ aœ.ˆˆà'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Ø'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Øˆà'Ð.�Q�Q¨Q€NØ%¨šN˜Nˆyˆy°€HØð 
Ø$ h°Ñ&?Ð@ˆ	ˆ	ð ðEˆZ˜ X°Ñ%>Ð?Ð?à˜j¨(°^Ñ*CÐDð 	ð
 �_Š_˜YÑ'Ô'€Fà˜~Ñ-¨z¸;ÐG€JØ	€zÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�\Š\˜*Ñ%Ô%ˆà	�Š�z NÑ2°JÀÐIÑ	JÔ	J€Bð Ð%�A�A A€MØ�oŠo˜mµ5´;ˆoÑ?Ô?€Gà�2�r˜7 JÐ.Ð.r1   c                 óð  — |r| j         d         n| j         d         }|r| j         d         n| j         d         }|
}|r|||gn|||g}|                      |¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }t          j        d| j        t          j        ¬¦  «        }||||fS )Nrµ   r   r~  r¤   )r…   r„   rE   rx   rp   r¼  )rÎ   Úw0Úw1Úw2Úw3Úhx_Úcx_r´   ro  r3  rh  rj  Ú
has_biasesrn  rk  rm  rr  rs  Úoutput_chanelsr–   rÚ   ra  rb  r`  s                           r/   Úmkldnn_rnn_layerr„  ‘  sþ   € ð& $/ÐB�”˜Q”�°E´KÀ´N€JØ#.ÐB�”˜Q”�°E´KÀ´N€JØ €Nð ð	6ˆ�Z Ð0Ð0à˜* nÐ5ð ð
 �_Š_˜YÑ'Ô'€FØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆÝ”˜A e¤l½%¼+ÐFÑFÔF€IØ�2�r˜9Ð$Ð$r1   c                 óÊ   ‡‡— | j         dk    r%t          j        ‰dk    p‰dk    ˆˆfd„¦  «         d S t          j        |                      ‰¦  «        dk    ˆˆfd„¦  «         d S )Nr   rˆ   c                  ó   •— ‰› d‰ › �S )Nz4: Expected reduction dim -1 or 0 for scalar but got r5   ©rs   rµ  s   €€r/   rT   z'zero_numel_check_dims.<locals>.<lambda>½  s   ø€ �wÐYÐYÐTWÐYÐY€ r1   c                  ó   •— ‰› d‰ › d�S )Nz: Expected reduction dim z to have non-zero size.r5   r‡  s   €€r/   rT   z'zero_numel_check_dims.<locals>.<lambda>Â  s   ø€ �wÐUÐU¸ÐUÐUÐU€ r1   )r“   rE   r‚   r‘   )r†   rs   rµ  s    ``r/   Úzero_numel_check_dimsr‰  ¹  s�   øø€ Ø„y�A‚~€~ÝÔØ�1ŠHÐ!˜˜rš	ØYÐYÐYÐYÐYñ	
ô 	
ð 	
ð 	
ð 	
õ
 	ÔØ�IŠI�c‰NŒN˜aÒØUÐUÐUÐUÐUñ	
ô 	
ð 	
ð 	
ð 	
r1   c                 óÒ   ‡ — |�5t          ||                     ¦   «         ¦  «        }t          ||‰ ¦  «         d S t          j        |                     ¦   «         dk    ˆ fd„¦  «         d S )Nr   c                  ó   •— ‰ › d�S )Nz@: Expected reduction dim to be specified for input.numel() == 0.r5   rÎ  s   €r/   rT   z%check_argmax_argmin.<locals>.<lambda>Î  s   ø€ �tÐ]Ð]Ð]€ r1   )r¦   rs   r‰  rE   rV   rƒ   )rœ  r†   rs   s   `  r/   Úcheck_argmax_argminrŒ  Ç  sq   ø€ Ø
€Ý˜S $§(¢(¡*¤*Ñ-Ô-ˆÝ˜d C¨Ñ.Ô.Ð.Ð.Ð.åŒØ�JŠJ‰LŒL˜AÒØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð 	
ð 	
r1   c                 óÆ   — t          d| |¦  «         t          j        | j        |�|fnd ¦  «        }t	          | ||¦  «        }|                      |t          j        ¬¦  «        S )NÚargmaxr}   )rŒ  r?   r_  r…   r`  r„   rE   r¥   )r†   rs   rb  r`  r…   s        r/   Úargmax_argmin_metar�  Ò  s[   € å˜ $¨Ñ,Ô,Ð,ÝÔ ¤
°c°o¨S¨F¨FÈ4ÑPÔP€DÝ$ T¨4°Ñ9Ô9€EØ�>Š>˜%¥u¤{ˆ>Ñ3Ô3Ð3r1   c                 ól   — |t           j        k    rt           j        }t          j        d||||¬¦  «        S )Nr5   rê   )rE   Újaggedr†  rx   )rz  rM   ro   rp   rq   s        r/   Úscalar_tensorr’  Ú  s<   € ð
 •”ÒÐÝ”ˆÝŒ;Ø
�% ¨vÀ*ðñ ô ð r1   c                 ó¬  — t          ||                      ¦   «         d¬¦  «        }|                      ¦   «         dk    rdn|                      |¦  «        }t          j        |dk    o||k    d„ ¦  «         t          | j        ¦  «        }t          |¦  «        dk    r|||<   |                      |¦  «        |                      |t          j	        ¬¦  «        fS )NT©rE  r   rµ   c                  ó   — dS )Nzk not in range for dimensionr5   r5   r1   r/   rT   ztopk_meta.<locals>.<lambda>ë  s   € Ð4R€ r1   r}   )
r¦   rs   r‘   rE   rV   r¹   r…   r¸   r„   r¥   )r†   r9  rs   ÚlargestÚsortedÚ	sliceSizeÚtopKSizes          r/   Ú	topk_metarš  æ  s¸   € õ ˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ—X’X‘Z”Z 1’_�_��¨$¯)ª)°C©.¬.€IÝ	„L��a’Ð*˜A šNÐ,RÐ,RÑSÔSÐSå�D”JÑÔ€HÝ
ˆ8�}„}�qÒÐØˆ�‰Ø�>Š>˜(Ñ#Ô# T§^¢^°HÅEÄK ^Ñ%PÔ%PÐPÐPr1   c                 ó¼   — |€|€
J d¦   «         ‚|                      ¦   «         }|                       ¦   «         }	t          j        ||	j        |	j        |	j        ¬¦  «        S )Nz;segment_reduce(): Either lengths or offsets must be defined)rM   rp   ro   )r©   rE   r�   rM   rp   ro   )
r  rÚ   rO  r?  rJ  rK  rL  rN  Údata_contigÚgrad_contigs
             r/   Úmeta__segment_reduce_backwardrž  ó  sm   € ð 	Ð˜wÐ2Ð2ØDñ  3Ô2Ð2à—/’/Ñ#Ô#€KØ—/’/Ñ#Ô#€KÝÔØØÔØÔ!ØÔ!ð	ñ ô ð r1   c                 ó  ‡— t          ‰|                      ¦   «         d¬¦  «        Š|                      ¦   «         dk    r|                      ‰¦  «        nd}t          j        |dk    o||k    ˆfd„¦  «         t          | j        d ‰…         | j        ‰dz   d …         z   ¦  «        }|r.|                      ¦   «         dk    r|                     ‰d¦  «         |                      |¦  «        |                      |t          j	        ¬¦  «        fS )NTr”  r   rµ   c                  ó   •— d‰ › �S )Nz9kthvalue(): selected number k out of range for dimension r5   r‰   s   €r/   rT   zkthvalue_meta.<locals>.<lambda>  s   ø€ ÐQÈCÐQÐQ€ r1   r}   )
r¦   rs   r‘   rE   rV   r¹   r…   r  r„   r¥   )r†   r9  rs   rb  ÚdimSizer…   s     `   r/   Úkthvalue_metar¢    s÷   ø€ õ ˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ $§¢¡
¤
¨Q¢ ˆd�iŠi˜‰nŒnˆn°A€GÝ	„LØ	ˆQŠÐ�1˜’<ØQÐQÐQÐQñô ð õ
 �”˜D˜S˜DÔ! D¤J¨s°Q©w¨y¨yÔ$9Ñ9Ñ:Ô:€EØð �4—8’8‘:”: ’>�>Ø�Š�S˜!ÑÔÐØ�>Š>˜%Ñ Ô  $§.¢.°½e¼k .Ñ"JÔ"JÐJÐJr1   c                 óÎ  — | �| n|}t          j        |                     ¦   «         dk    d„ ¦  «         |                     ¦   «         }| �,t          j        |                      ¦   «         |k    d„ ¦  «         |�,t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         |d         |d	         z  d
z  k    d„ ¦  «         d S )NrÞ   c                  ó   — dS ©NÚ r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>  s   € °"€ r1   c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>  ó   € ¸€ r1   c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>   r¨  r1   c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>!  ó   € °€ r1   c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>"  r«  r1   c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>#  s   € ¨r€ r1   r   rµ   rß  c                  ó   — dS r¥  r5   r5   r1   r/   rT   z(checkLSTMBackwardSizes.<locals>.<lambda>$  s   € ÈR€ r1   )rE   rV   rs   r‘   rƒ   )Úgrad_hyÚgrad_cyr_  rb  r`  Údefined_gradÚexp_sizes          r/   ÚcheckLSTMBackwardSizesr³    s2  € Ø%Ð1�7�7°w€LÝ	„L�×!Ò!Ñ#Ô# qÒ(¨*¨*Ñ5Ô5Ð5Ø× Ò Ñ"Ô"€HØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<ØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘” AÒ% z zÑ2Ô2Ð2Ý	„L�—’Ñ"Ô" h¨q¤k°H¸Q´KÑ&?À!Ñ&CÒCÀZÀZÑPÔPÐPÐPÐPr1   c                 óà   — | €|€dS t          | ||||¦  «         t          j        |t          ¬¦  «        }t          j        |t          ¬¦  «        }|r|                     dd¬¦  «        nd }|||fS )N©NNNr™   r   F)rb  )r³  rE   r�   Úlegacy_contiguous_memory_formatrX  )	r¯  r°  r_  rb  r`  Úhas_biasÚ
grad_gatesÚgrad_cxrÈ  s	            r/   Ú#_thnn_fused_lstm_cell_backward_implrº  (  sˆ   € à€˜7˜?ØÐÝ˜7 G¨R°°YÑ?Ô?Ð?ÝÔ!ØÕ!@ðñ ô €Jõ Ô˜rÕ1PÐQÑQÔQ€GØ4<ÐF�
—’˜q¨%�Ñ0Ô0Ð0À$€IØ�w 	Ð)Ð)r1   c                 ó`  — d }d }d }|d         r'|                      |                      ¦   «         ¦  «        }|d         s|d         re|                      |                     d¦  «        |                      d¦  «        f¦  «        }|                      |                     d¦  «        ¦  «        }|||fS )Nr   rµ   rÞ   rˆ   rx  )rz  ry  r{  r~  r×  Úgrad_weightrÈ  s          r/   Úlinear_backwardr½  6  s°   € à€JØ€KØ€IØ�1„~ð ;Ø!×+Ò+¨F¯KªK©M¬MÑ:Ô:ˆ
Ø�1„~ð B˜ Qœð BØ"×,Ò,¨l×.?Ò.?ÀÑ.CÔ.CÀVÇ[Â[ÐQSÁ_Ä_Ð-UÑVÔVˆØ ×*Ò*¨<×+<Ò+<¸RÑ+@Ô+@ÑAÔAˆ	Ø˜ YÐ/Ð/r1   c                 ó   ‡ ‡— t          ‰ j        ¦  «        dk    r‰ j        d         ||z  z  dk    sJ d‰ j        › d|› �¦   «         ‚d„ Šˆˆ fd„}‰ j        d         ||z  z  }‰ j        d         |z  }‰ j        d	         |z  }g ‰ j        d d…         ¢|‘|‘|‘R }‰                      |¦  «        }|                      |¦   «         ¬
¦  «        }|S )NrÞ   rÝ  r   z'Invalid input shape for pixel_shuffle: z with upscale_factor = c                 ó\   — t           j                             | ¦  «        t           j        k    S r,   ry  r}  s    r/   r  z,meta_pixel_shuffle.<locals>.is_channels_lastI  s!   € ÝÔ"×8Ò8¸Ñ=Ô=ÅÔATÒTÐTr1   c                  ó$  •—  ‰ ‰¦  «        r+t          ‰¦  «        dk    rt          j        S t          j        S ‰                     t          j        ¬¦  «        rt          j        S ‰                     t          j        ¬¦  «        rt          j        S d S r�  )rL  rE   rž   r|  r6  r�  )r  r†   s   €€r/   r‡  z.meta_pixel_shuffle.<locals>.pick_memory_formatL  s�   ø€ ØÐ˜DÑ!Ô!ð 	)Ý˜4Ñ Ô  FÒ*Ð*ÝÔ.Ð.åÔ*Ð*Ø×Ò­eÔ.EÐÑFÔFð 	)ÝÔ*Ð*Ø×Ò­eÔ.CÐÑDÔDð 	)ÝÔ(Ð(ð	)ð 	)r1   r˜  rˆ   r™   )r¸   r…   r„   rÿ   )	r†   Úupscale_factorr‡  r   ÚHrÚWrr–   rÂ   r  s	   `       @r/   Úmeta_pixel_shufflerÄ  C  s  øø€ õ 	ˆDŒJ‰Œ˜!ÒÐ ¤
¨2¤°.À>Ñ2QÑ RÐVWÒ WÐ WÐ WØd°´ÐdÐdÐTbÐdÐdñ !XÔ WÐWðUð Uð Uð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	Œ
�2Œ˜>¨NÑ:Ñ;€AØ	Œ�BŒ˜.Ñ	(€BØ	Œ�BŒ˜.Ñ	(€BØ-�$”*˜S˜b˜S”/Ð- 1Ð- bÐ-¨"Ð-Ð-€Ià
�.Š.˜Ñ
#Ô
#€CØ
�&Š&Ð1Ð1Ñ3Ô3ˆ&Ñ
4Ô
4€CØ€Jr1   c                 óL  — |                       | j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|||||||fS r,   rŸ  )rÎ   Úweight0Úweight1Úweight2Úweight3r€  Úcx_tmprÚ   Úhy_Úcy_Úgrad_output_r_optÚgrad_hy_r_optÚgrad_cy_r_optr´   r3  rh  rj  r‚  rm  rn  ro  rk  r`  Údiff_xÚdiff_hxÚdiff_cxÚdiff_w1Údiff_w2Údiff_bs                                r/   Úmkldnn_rnn_layer_backwardrÖ  a  s“   € ð4 �_Š_˜Uœ[Ñ)Ô)€FØ�mŠm˜CœIÑ&Ô&€GØ×Ò˜vœ|Ñ,Ô,€GØ×Ò ¤Ñ.Ô.€GØ×Ò ¤Ñ.Ô.€GØ×Ò˜wœ}Ñ-Ô-€FØ�7˜G V¨V°W¸gÐEÐEr1   )Ú	out_int32rË   c                ó‚   — t          j        | |rt           j        nt           j        ¬¦  «                             ¦   «         S r]  )rE   r�   r  r¥   r©   )r†   Ú
boundariesr×  rË   s       r/   Úmeta_bucketizerÚ  „  s9   € õ ÔØ 9Ð=•E”K�Kµ%´+ðñ ô ç‚j�l„lðr1   éd   c                 óB  ‡ ‡‡‡‡— dŠt          ‰ ¦  «        dk    r*t          j        ‰                      ¦   «         ˆ fd„¦  «         t          j        t	          ‰t
          ¦  «        ˆˆfd„¦  «         t          j        ‰dk    ˆˆfd„¦  «         t          j        t	          ‰t          ¦  «        ˆˆfd„¦  «         t          j        t	          ‰t          ¦  «        ˆˆfd„¦  «         t          j        ‰‰k    d	„ ¦  «         t          j        ‰‰ j        ‰ j	        ¬
¦  «        S )Nzhistc()r  c                  ó   •— d‰ j         › d�S )Nz%"histogram_cpu" not implemented for 'ú'r}   r;  s   €r/   rT   zmeta_histc.<locals>.<lambda>“  s   ø€ ÐL¸e¼kÐLÐLÐL€ r1   c                  ó,   •— ‰› dt          ‰ ¦  «        › �S )Nz#: argument 'bins' must be int, not r�  ©Úbinsrµ  s   €€r/   rT   zmeta_histc.<locals>.<lambda>—  s   ø€ �7ÐKÐK½tÀD¹z¼zÐKÐK€ r1   r   c                  ó   •— ‰› d‰ › �S )Nz: bins must be > 0, but got r5   rà  s   €€r/   rT   zmeta_histc.<locals>.<lambda>™  s   ø€  gÐ#QÐ#QÈ4Ð#QÐ#Q€ r1   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'min' must be Number, not r�  )rµ  r„  s   €€r/   rT   zmeta_histc.<locals>.<lambda>œ  ó   ø€ �7ÐLÐLÅÀcÁÄÐLÐL€ r1   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'max' must be Number, not r�  )rµ  r…  s   €€r/   rT   zmeta_histc.<locals>.<lambda>   rä  r1   c                  ó   — dS )Nz&{fn_name}: max must be larger than minr5   r5   r1   r/   rT   zmeta_histc.<locals>.<lambda>¢  s   € Ð%M€ r1   r¤   )
rL  rE   rV   rß   r_   r   r   rx   rp   rM   )rÎ   rá  r„  r…  rµ  s   ````@r/   Ú
meta_histcrç  Œ  s@  øøøøø€ ð €GÝ�5ÑÔ˜UÒ"Ð"ÝŒØ×#Ò#Ñ%Ô%ØLÐLÐLÐLñ	
ô 	
ð 	
õ 
„LÝ�4�Ñ!Ô!ØKÐKÐKÐKÐKñô ð õ 
„L�˜’ÐQÐQÐQÐQÐQÑRÔRÐRÝ	„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„L�˜’ÐMÐMÑNÔNÐNÝŒ;�t E¤L¸¼ÐDÑDÔDÐDr1   c                 ó„  ‡ — t          ‰                      ¦   «         |d¬¦  «        }t          j        ‰                      ¦   «         dk    p2t          d„ ‰                      ¦   «         dd …         D ¦   «         ¦  «        ˆ fd„¦  «         ‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )NrÞ   r-  r   c              3   ó"   K  — | ]
}|d k    V — ŒdS r$  r5   )r;   r‘   s     r/   rb   z,meta_upsample_bimode2d_aa.<locals>.<genexpr>´  s&   è è € Ð!HÐ!H¨t $¨¢(Ð!HÐ!HÐ!HÐ!HÐ!HÐ!Hr1   rµ   c                  ó2   •— d‰                       ¦   «         › �S r5  r�   r;  s   €r/   rT   z+meta_upsample_bimode2d_aa.<locals>.<lambda>µ  r,  r1   r™   )
r)  r‘   rE   rV   rƒ   rk  r„   rÿ   r?   r{  )rÎ   r"  r  r6  r7  r0  s   `     r/   Úmeta_upsample_bimode2d_aarë  ¦  sÂ   ø€ õ -Ø�
Š
‰Œ�k°Aðñ ô Ðõ 
„LØ�Š‰Œ˜ÒÐH�cÐ!HÐ!H°u·z²z±|´|ÀAÀBÀBÔ7GÐ!HÑ!HÔ!HÑHÔHØ_Ð_Ð_Ð_ñô ð ð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r1   c                 ó6  — t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |j        j        d„ ¦  «         t          j        |j        j        d„ ¦  «         d S )Nrµ   c                  ó   — dS )Nz%found_inf must be a 1-element tensor.r5   r5   r1   r/   rT   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>À  ó   € Ð(O€ r1   c                  ó   — dS )Nz%inv_scale must be a 1-element tensor.r5   r5   r1   r/   rT   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>Ã  rî  r1   c                  ó   — dS )Nz!found_inf must be a float tensor.r5   r5   r1   r/   rT   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>Ç  ó   € Ð3€ r1   c                  ó   — dS )Nz!inv_scale must be a float tensor.r5   r5   r1   r/   rT   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>Ë  rñ  r1   )rE   rV   rƒ   rM   rß   )r†   rŒ  Ú	inv_scales      r/   Ú*_amp_foreach_non_finite_check_and_unscale_rô  ½  s®   € å	„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð ð ð r1   c                 ón   — t          |                      ¦   «         ¦  «        }|                      |¦  «        S r,   )r¹   r‘   r„   )r†   ÚnanÚposinfÚneginfrH  s        r/   Ú
nan_to_numrù  Ð  s+   € õ �t—y’y‘{”{Ñ#Ô#€KØ�>Š>˜+Ñ&Ô&Ð&r1   c                 ó   — | j         t          j        t          j        t          j        t          j        hvsJ d| j         › d�¦   «         ‚| j        }t          ||¦  «        }t          ||¦  «        }||k    r| S t          |  	                    ¦   «         ¦  «        }t          |  
                    ¦   «         ¦  «        }||         ||         c||<   ||<   ||         ||         c||<   ||<   |                      ||¦  «         | S )Nz>torch.transpose_: in-place transposition is not supported for z layout)ro   rE   r‡  Ú
sparse_cscrˆ  Ú
sparse_bscr“   r¦   r¹   r‘   r¼   r  )r†   Údim0r.  Úndimsr‘   r¼   s         r/   r{  r{  ×  s	  € ð 	ŒåÔÝÔÝÔÝÔð	
ð	
ð 	
ð 	
ð ]ÈÌÐ\Ð\Ð\ñ	
ô 	
ð 	
ð ŒI€Eå˜$ Ñ&Ô&€DÝ˜$ Ñ&Ô&€Dàˆt‚|€|Øˆå�—	’	‘”ÑÔ€DÝ�$—+’+‘-”-Ñ Ô €Fà!'¨¤¨v°d¬|Ð€Fˆ4�L�&˜‘,Ø! $œZ¨¨d¬Ð€Dˆ�J��T‘
à×Ò�T˜6Ñ"Ô"Ð"Ø€Kr1   c                 ó(  — | j         }| j        rF|                      ¦   «         }|                      ¦   «         }|dk    r|dk    sJ d|› d|› d�¦   «         ‚n&|                      ¦   «         dk    sJ d|› d�¦   «         ‚t          | d|dk     rdnd¦  «        S )	NrÞ   r   zEt_ expects a tensor with <= 2 sparse and 0 dense dimensions, but got z sparse and z dense dimensionsz6t_ expects a tensor with <= 2 dimensions, but self is rá  rµ   )r“   r-  r/  r0  rs   r{  )r†   rþ  r/  r0  s       r/   Út_r   õ  sÇ   € àŒI€Eà„~ð 	MØ—_’_Ñ&Ô&ˆ
Ø—N’NÑ$Ô$ˆ	à˜!ŠOˆO 	¨Q¢  ð HÐS]ð  Hð  HÐktð  Hð  Hð  Hñ !/¤Ð. ð �HŠH‰JŒJ˜!ŠOˆOˆOØLÀEÐLÐLÐLñ ŒOˆOõ �d˜A E¨A¢I I˜q˜q°1Ñ5Ô5Ð5r1   )r×  rË   ÚsideÚsorterc                ó$  ‡ ‡‡— t          j        t          ‰ j        ¦  «        dk    p‰ j        d d…         ‰j        d d…         k    ˆˆ fd„¦  «         t          j        ‰d u p‰ j        ‰j        k    ˆ ˆfd„¦  «         t          j        |dk    p| d¦  «         |rt           j        nt           j        }t          ‰t           j        ¦  «        r(t          j        ‰|¬¦  «         	                    ¦   «         S t          j
        d|‰ j        ¬	¦  «        S )
Nrµ   rˆ   c                  ó\   •— dt          ‰j        ¦  «        › dt          ‰ j        ¦  «        › �S )Nz¯torch.searchsorted(): boundaries tensor should be 1 dimension or the first N-1 dimensions of boundaries tensor and input value tensor must match, but we got boundaries tensor z and input value tensor ©r¹   r…   )r†   Úsorted_sequences   €€r/   rT   z#meta_searchsorted.<locals>.<lambda>  s>   ø€ ð5å37¸Ô8MÑ3NÔ3Nð5ð 5õ #' t¤zÑ"2Ô"2ð5ð 5ð r1   c                  ód   •— dt          ‰ j        ¦  «        › d‰�t          ‰j        ¦  «        ng › �S )Nz[torch.searchsorted(): boundary and sorter must have the same size, but got boundary tensor z and got sorter tensor r  )r  r  s   €€r/   rT   z#meta_searchsorted.<locals>.<lambda>"  sK   ø€ ðBÝ#'¨Ô(=Ñ#>Ô#>ðBð Bà%+Ð%7�t�F”LÑ!Ô!Ð!¸RðBð Bð r1   rÊ   zetorch.searchsorted(): side and right can't be set to opposites, got side of left while right was Truer}   r5   rå  )rE   rV   r¸   r…   r  r¥   r_   r   r�   r©   rx   rp   )r  r†   r×  rË   r  r  rM   s   ``   ` r/   Úmeta_searchsortedr    s=  øøø€ õ 
„LÝˆOÔ!Ñ"Ô" aÒ'ð 	9ØÔ   " Ô%¨¬°C°R°C¬Ò8ð	
ð 	
ð 	
ð 	
ð 	
ñ	ô 	ð 	õ 
„LØ�$ˆÐ?˜/Ô/°6´<Ò?ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ŠÐ#˜e˜)ð	$ñô ð ð %Ð5�EŒKˆK­%¬+€EÝ�$�œÑ%Ô%ð KÝÔ ¨EÐ2Ñ2Ô2×=Ò=Ñ?Ô?Ð?åŒ{˜2 U°?Ô3IÐJÑJÔJÐJr1   c                 ó~   ‡ — t          j        ‰ t           j        t           j        t           j        fvˆ fd„¦  «         d S )Nc                  ó   •— d‰ › �S )Nz/Unsupported input type encountered for isin(): r5   r}   s   €r/   rT   z3_check_for_unsupported_isin_dtype.<locals>.<lambda>:  s   ø€ ÐIÀ%ÐIÐI€ r1   )rE   rV   rD  Ú
complex128Ú	complex64r}   s   `r/   Ú!_check_for_unsupported_isin_dtyper  7  sC   ø€ Ý	„LØ•e”j¥%Ô"2µE´OÐDÐDØIÐIÐIÐIñô ð ð ð r1   c                 ó|   — |	r#t                                | ||||||||
|¦
  «
        S t          | ||||||||
|¦
  «
        S r,   )r&   Ú_embedding_bag_sparse_backwardÚ!meta_embedding_bag_dense_backward)r  r¢   rK  r  r  Úmaximum_indicesÚnum_weightsr  r3  r  r  r  s               r/   Úmeta_embedding_bag_backwardr  >  st   € ð ð 
Ý×2Ò2ØØØØØØØØØØñ
ô 
ð 	
õ 1ØØØØØØØØØØñ
ô 
ð 	
r1   c
                 óP  ‡ — t          j        ‰ j        t           j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          d¦  «        \  }
}}||k    rt          j        |d u¦  «         ‰                      |‰  	                    d¦  «        f¦  «        }|S )Nc                  ó   •— d‰ j         › �S )Nz$Unsupported input type encountered: r}   )r  s   €r/   rT   z3meta_embedding_bag_dense_backward.<locals>.<lambda>x  s   ø€ ÐC°t´zÐCÐC€ r1   r�   rµ   )
rE   rV   rM   r3  r4  r2  Úfloat64rº   r„   r‘   )r  r¢   r  r  r  r  r  r3  r  r  r  r  r  Úindex_grad_weights   `             r/   r  r  i  s›   ø€ õ 
„LØŒ
•u”}¥e¤nµe´mÅUÄ]ÐSÐSØCÐCÐCÐCñô ð õ %*¨!¡H¤HÑ!€Hˆi˜ØˆxÒÐÝŒ�_¨DÐ0Ñ1Ô1Ð1ØŸš¨°T·Y²Y¸q±\´\Ð'BÑCÔCÐØÐr1   c                 ó0  — t          d¦  «        \  }}}	|                      d¦  «        }
t          j        ||k    d¦  «         t          j        |                      ¦   «         dk    ¦  «         t          j        |                     ¦   «         dk    ¦  «         |                     d¦  «        }t          j        |                     ¦   «         dk    ¦  «         t          j        |                     d¦  «        |
k    ¦  «         |                      |f¦  «        }|S )Nr�   rµ   zHembedding_bag_backward: per_sample_weights only supported for mode='sum'rÞ   r   )rº   r‘   rE   rV   rs   r„   )r  r  r¢   rK  r  r3  r  r  r  r  Úembedding_featuresr  rÚ   s                r/   Ú.meta_embedding_bag_per_sample_weights_backwardr  �  sä   € õ %*¨!¡H¤HÑ!€Hˆi˜ØŸš 1™œÐÝ	„LØ�ÒØRñô ð õ 
„L�—’‘”˜q’Ñ!Ô!Ð!Ý	„L�—’‘” !Ò#Ñ$Ô$Ð$Ø—,’,˜q‘/”/€KÝ	„L�—’‘” Ò"Ñ#Ô#Ð#Ý	„L�—’˜Q‘”Ð#5Ò5Ñ6Ô6Ð6Ø�^Š^˜[˜NÑ+Ô+€FØ€Mr1   )Úassume_uniqueÚinvertc                óÎ  — t          j        t          | t          ¦  «        pt          |t          ¦  «        d„ ¦  «         t          | t          ¦  «        st          j        | |j        ¬¦  «        } t          |t          ¦  «        st          j        || j        ¬¦  «        }t          | j        ¦  «         t          |j        ¦  «         t          j        | t           j	        ¬¦  «        S )Nc                  ó   — dS )Nz<At least one of elements and test_elements must be a Tensor.r5   r5   r1   r/   rT   zmeta_isin.<locals>.<lambda>Ÿ  rÞ  r1   r~  r}   )
rE   rV   r_   r   r	  rp   r  rM   r�   rD  )ÚelementsÚtest_elementsr  r  s       r/   Ú	meta_isinr!  š  sÈ   € õ 
„LÝ�8�VÑ$Ô$ÐI­
°=Å&Ñ(IÔ(IØNÐNñô ð õ �h¥Ñ'Ô'ð GÝ”< °Ô1EÐFÑFÔFˆå�m¥VÑ,Ô,ð LÝœ ]¸8¼?ÐKÑKÔKˆå% h¤nÑ5Ô5Ð5Ý% mÔ&9Ñ:Ô:Ð:ÝÔ˜H­E¬JÐ7Ñ7Ô7Ð7r1   rè   c                 óž   — t          j        | dk    d„ ¦  «         t          |t          j        ¬¦  «        \  }}t          j        ||¬¦  «        S )Nr   c                  ó   — dS )Nz,polygamma(n, x) does not support negative n.r5   r5   r1   r/   rT   z meta_polygamma.<locals>.<lambda>¯  s   € Ð!O€ r1   rj  r}   )rE   rV   r   r   rk  r�   )rè   r†   rB   r=   s       r/   Úmeta_polygammar$  ¬  sW   € õ 
„L��a’ÐOÐOÑPÔPÐPÝ(ØÝ;ÔHðñ ô �O€A€|õ Ô˜D¨Ð5Ñ5Ô5Ð5r1   c                 ó    — t          d¦  «        ‚)Nz.Tensor.item() cannot be called on meta tensors)rþ   rŸ   s    r/   Úmeta_local_scalar_denser&  ·  s   € å
ÐGÑ
HÔ
HÐHr1   Úmax_lengthsÚpadding_valuec                 óä   — t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚|d         j        d         dz
  }|d         }||g| j        dd …         ¢R }|                      |¦  «        S r  )r¸   r…   r„   )r¡   rK  r'  r(  r°  rQ  r;  s          r/   Ú$meta__jagged_to_padded_dense_forwardr*  ¼  s„   € õ ˆw‰<Œ<˜1ÒÐÐÐÝˆ{ÑÔ˜qÒ Ð Ð Ð à�Œ
Ô˜Ô˜aÑ€AØ�AŒ€AØ�qÐ,˜6œ<¨¨¨Ô+Ð,Ð,€LØ×Ò˜LÑ)Ô)Ð)r1   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó8   — t          | t          j        ¬¦  «        S rI  ©rC   r   rk  rË  s    r/   Ú_fz)_create_unary_float_meta_func.<locals>._fÎ  s$   € õ  ØÕ=ÔJð
ñ 
ô 
ð 	
r1   ©r6   r"   ©Úfuncr.  s     r/   Ú_create_unary_float_meta_funcr2  Í  ó9   € Ý�4ÑÔÝ�]„]ð
ð 
ñ „]ñ Ôð
ð
 €Ir1   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó:   — t          | |t          j        ¬¦  «        S rI  r-  )r<   r™  s     r/   r.  z*_create_binary_float_meta_func.<locals>._fÙ  s&   € õ  ØˆqÕ!@Ô!Mð
ñ 
ô 
ð 	
r1   r/  r0  s     r/   Ú_create_binary_float_meta_funcr6  Ø  r3  r1   c                 ó´   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }‰ j        › d�}||_         t          t          t          |¦  «        ¦  «        |¦  «        }|S )Nc                 óT   •—  ‰| g|¢R i |¤Ž}t          | j        |j        ¦  «         | S r,   rx  )r†   rA   rL  rÂ   r.   s       €r/   Ú_fnz#_register_inplace_meta.<locals>._fný  s;   ø€ àˆb�Ð'˜Ð'Ð'Ð' Ð'Ð'ˆÝ ¤
¨C¬IÑ6Ô6Ð6Øˆr1   rB   )r   ri   r6   Úgetattrr&   )r.   r9  Úinplace_names   `  r/   Ú_register_inplace_metar<  ü  sk   ø€ Ý
ˆ2�Y„Yðð ð ð ñ „Yðð
 ”kÐ$Ð$Ð$€LØ€C„LØ
4�-�¥ lÑ3Ô3Ñ
4Ô
4°SÑ
9Ô
9€Cà€Jr1   c                 ó,  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰ ‰g}t          ‰t          ¦  «        r<t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         |                     ‰¦  «         t          |dt          j        iŽS )Nc                  ó(   •— d‰j         › d‰ j         › �S )Nr/  z for `end`, but got dtype r}   )rj   rk   s   €€r/   rT   zlerp.<locals>.<lambda>  s   ø€ ÐT %¤+ÐTÐTÈÌÐTÐT€ r1   c                  ó(   •— d‰ j         › d‰j         › �S )Nr/  z for `weight`, but got dtype r}   )rk   r  s   €€r/   rT   zlerp.<locals>.<lambda>  s   ø€ Ð^ e¤kÐ^Ð^ÐPVÔP\Ð^Ð^€ r1   r7   )	rE   rV   rM   r_   r   r»   rC   r   r@   )rk   rj   r  rA   s   ``` r/   Úlerpr@  
  s¶   øøø€ õ 
„LØŒ�s”yÒ ØTÐTÐTÐTÐTñô ð ð �3ˆ<€DÝ�&�*Ñ%Ô%ð ÝŒØŒK˜6œ<Ò'Ø^Ð^Ð^Ð^Ð^ñ	
ô 	
ð 	
ð 	�Š�FÑÔÐÝØ	ðÝ=ÔEðð ð r1   )ry  c                ó<   — t          | ||t          j        ¬¦  «        S rI  rK  ©rÎ   Útensor1Útensor2ry  s       r/   ÚaddcmulrE    s(   € õ Øˆw˜Õ0OÔ0Wðñ ô ð r1   c                óÊ   — t          j        t          j        |j        ¦  «        ot          j        |j        ¦  «         d„ ¦  «         t          | ||t          j        ¬¦  «        S )Nc                  ó   — dS )N)zFInteger division with addcdiv is no longer supported, and in a future zErelease addcdiv will perform a true division of tensor1 and tensor2. z4The historic addcdiv behavior can be implemented as zA(input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype) zfor integer inputs and as z6(input + value * tensor1 / tensor2) for float inputs. z?The future addcdiv behavior is just the latter implementation: z4(input + value * tensor1 / tensor2), for all dtypes.r5   r5   r1   r/   rT   zaddcdiv.<locals>.<lambda>-  s	   € ð 	
€ r1   rJ  )rE   rV   r?   r  rM   rC   r   r@   rB  s       r/   ÚaddcdivrH  %  sr   € õ 
„LåÔ" 7¤=Ñ1Ô1ð 6ÝÔ& w¤}Ñ5Ô5ð	
ð		
ð 		
ñô ð õ  Øˆw˜Õ0OÔ0Wðñ ô ð r1   c                  ó  — i } dD ]#}t           |         }|D ]}|| vr||         | |<   ŒŒ$|                      ¦   «         D �]É\  }}t          |t          j        j        ¦  «        rŒ&t          |t          ¦  «        sJ ‚ |                     t          j        j	        j
        ¦  «        |¦  «         t          j                             |                     ¦   «         d¦  «        r"|t           d         v rt          |› d�¦  «        ‚ŒÃ|j        rŒË|                     ¦   «         dv rŒâd|                     ¦   «         v rt                               ||¦  «         �Œd|                     ¦   «         v rt"                               ||¦  «         �ŒHd|                     ¦   «         v rt$                               ||¦  «         �Œ{d	|                     ¦   «         v rt&                               ||¦  «         �Œ®t(                               ||¦  «         �ŒËd S )
N)rn   Úpost_autogradÚpre_autogradÚCompositeImplicitAutogradrn   z« is a CompositeImplicitAutograd op, we shouldn't register meta function for it. Instead, we should let the decomposition run and write meta kernels for the base operators.>   úaten::cloneúaten::copy_úaten::rot90úaten::_to_copyúaten::empty_stridedúaten::constant_pad_ndúaten::as_strided_scatterzmkldnn::zmkl::zonednn::zquantized::)r   Úitemsr_   rE   Ú_opsÚHigherOrderOperatorr   Úpy_implÚ_CÚDispatchKeyr(   Ú%_dispatch_has_kernel_for_dispatch_keyrœ  rþ   Úis_viewÚ2_meta_lib_dont_use_me_use_register_meta_for_mkldnnÚimplÚ/_meta_lib_dont_use_me_use_register_meta_for_mklÚ2_meta_lib_dont_use_me_use_register_meta_for_onednnÚ5_meta_lib_dont_use_me_use_register_meta_for_quantizedÚ'_meta_lib_dont_use_me_use_register_meta)Úactivate_meta_tablerh   ÚregistryÚopoÚop_overloadr.   s         r/   Úactivate_metarf  I  sb  € ØÐð :ð 9ð 9ˆÝ-¨dÔ3ˆàð 	9ð 	9ˆCØÐ-Ð-Ð-Ø+3°C¬=Ð# CÑ(øð	9ð /×4Ò4Ñ6Ô6ð 6Nñ 6N‰ˆ�Rõ
 �k¥5¤:Ô#AÑBÔBð 	ØÝ˜+¥zÑ2Ô2Ð2Ð2Ð2à6ˆ×Ò�EœHÔ0Ô5Ñ6Ô6°rÑ:Ô:Ð:åŒ8×9Ò9Ø×ÒÑÔÐ ;ñ
ô 
ð +	Nð Õ8¸Ô@Ð@Ð@Ý"Ø"ð ;ð ;ð ;ñô ð ð Að Ô ð 	Nð à×ÒÑÔðð	ð 	ð à˜[×-Ò-Ñ/Ô/Ð/Ð/ÝB×GÒGÈÐUWÑXÔXÐXÑXØ˜K×,Ò,Ñ.Ô.Ð.Ð.Ý?×DÒDÀ[ÐRTÑUÔUÐUÑUØ˜{×/Ò/Ñ1Ô1Ð1Ð1ÝB×GÒGÈÐUWÑXÔXÐXÑXØ +×"2Ò"2Ñ"4Ô"4Ð4Ð4ÝE×JÒJØ ñô ð ñ õ 8×<Ò<¸[È"ÑMÔMÐMÑMðm6Nð 6Nr1   r­   rµ  r,   )NNNFr   rµ   F)NN)Tr£  )r´  )r½  T)FF)TT)r5  )FTN)TFF)TF)rÞ   )r7  N)r@  rb  )r5   r·   r¹  F)r5   r·   FTN)Fr   FNFrˆ   )NF)rˆ   F)rh  ri  FN)NNNNN)r   NNrµ   )NNF)rŒ  FFN)rŒ  FNN)rŒ  FN)FN)FNNNN)NNNF)Nrˆ   FNN)NNNN)rˆ   TT)NNr   N)rÛ  r   r   )rˆ   )rŒ  (]  r÷  Úenumr   Ú	functoolsr   Útypingr   r   r   r   r	   rE   Útorch._prims_commonrz  r?   r
   r   r   Útorch._decompr   r   r   r   Ú
torch._opsr   Útorch._primsr   r   r   r   r   r   r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r    r!   r"   rm  r#   r$   Útorch.utilsr%   r2   Úopsr&   ÚlibraryÚLibraryra  r6   rC   rO   rX   ÚlinspaceÚlogspacer†  rz   Útaker  rÂ   r‡   r—   r    ÚcummaxÚcumminr§   rª   rÕ   Ú_fft_c2crÜ   Ú_fft_r2crä   ÚrandpermÚgenerator_outré   r�   rî   Úrandintrñ   ró   Úlow_outrô   Úrandrö   Ú_fft_c2rrù   ro  r  r  Ú
unsqueeze_r  Ú_sparse_semi_structured_linearrb  rM   r  Ú_sparse_semi_structured_mmr#  Ú_sparse_semi_structured_addmmr'  Ú_cslt_sparse_mmrD  r�  r<  Úindex_reducerD  Úindex_reduce_rF  Úindex_selectrI  Úsegment_reducerV  r…  Ú	unary_outrZ  rs   rc  r„  rf  rh  rp  rl  rq  Ú_assert_asyncrt  Úmsgrx  Ú_printr{  Ú_make_dep_tokenr  r‡  Ú_functional_sym_constrain_rangerŒ  r‘  Ú(_functional_sym_constrain_range_for_sizer“  Ú_functional_assert_asyncr•  r›   r¥  rœ   r¯  r³  r¹  rÁ  Ú_linalg_eighrÂ  rË  Ú_linalg_eigvalsÚlinalg_eigvalsrÏ  Ú
linalg_eigrÒ  r×  rÙ  rß  rä  rè  rî  r  Úlinalg_inv_exr  Úlinalg_ldl_factor_exr
  Úlinalg_ldl_solver  Ú	linalg_lur  Úlinalg_lu_factor_exr#  Úlinalg_lu_solver,  Ú	lu_unpackr2  r;  Ú	linalg_qrrB  rF  rC  Ú_linalg_svdrR  r  rà  rb  rv  Úlinalg_solve_triangularr~  r„  r�  Ú_linalg_detr�  r¤  r®  rÀ  Úreflection_pad1drÆ  Úreplication_pad1drÊ  rÖ  Úreflection_pad1d_backwardrÛ  Úreplication_pad1d_backwardrÝ  rí  Úreflection_pad2drð  Úreplication_pad2drò  Úreflection_pad2d_backwardr×  Úreplication_pad2d_backwardrù  r  Úreflection_pad3dr
  Úreplication_pad3dr  Úreflection_pad3d_backwardÚreplication_pad3d_backwardr  Ú_pdist_forwardrI   r  Ú_pdist_backwardr  Úbaddbmmr2  Ú	bernoullir6  Ú
bernoulli_r:  r  r=  Úpoissonr@  Ú_fused_moving_avg_obs_fq_helperrR  Úmmr]  r`  rL  rw  r  Úmiopen_batch_normrŒ  Úconvolutionr”  rX  Ú_has_mkldnnr\  r•  Ú_convolution_pointwiserœ  Ú_linear_pointwiser   Úhas_mklr^  r¡  Ú_mkl_linearr¥  r_  r¦  Úqconv2d_pointwiser°  Úqlinear_pointwiser	  rµ  Úlinear_dynamic_fp16Úlinear_relu_dynamic_fp16r·  r`  r¸  Ú
max_pool2drÃ  rÈ  Ú
avg_pool2drê  rï  Úavg_pool2d_backwardr÷  Ú
avg_pool3dr  Úavg_pool3d_backwardr  Ú_adaptive_avg_pool2dr#  Ú_adaptive_avg_pool3dr&  Ú_adaptive_avg_pool2d_backwardr0  Ú_adaptive_avg_pool3d_backwardr5  r3  Úadaptive_max_pool2drG  rK  rM  Úadaptive_max_pool3drT  rV  rW  Úrepeat_interleaverZ  r`   r^  ra  r   Ú_unsafe_indexrv  Úconvolution_backwardr‚  ÚaddbmmrŠ  Ú_fused_adam_Ú_fused_adamw_r¡  Ú_fused_adamr¨  Ú_int_mmr²  Ú_convert_weight_to_int4packr¿  Ú#_convert_weight_to_int4pack_for_cpurÄ  Ú_weight_int4pack_mmrÑ  Ú_weight_int4pack_mm_for_cpur×  Ú_weight_int8pack_mmrÞ  Ú_cdist_forwardrô  Ú_cdist_backwardrþ  Ú_embedding_bagr#  Ú_embedding_bag_forward_onlyr%  r(  Únansumr*  ÚmedianÚ	nanmedianr,  Ú
dim_valuesr3  r¡   r/  Úlogical_not_r1  Úrepeatr8  Úzero_r:  Úmul_ÚScalarÚdiv_Úlogical_and_Úlogical_or_Úlogical_xor_r=  Úadd_Úsub_rG  ÚroundÚdecimalsrM  rS  Ú
__rshift__rW  Ú
__lshift__r[  Úzeror]  r2  r`  Úfillrb  Úrelu_re  Ú	_add_relurg  Úrrelu_with_noisern  Úrrelu_with_noise_functionalrp  Úrrelu_with_noise_rr  Ú	index_putÚ_unsafe_index_putrv  Úmasked_fill_rz  Ú_masked_scaler}  Úmasked_scatter_r�  Úmasked_scatterrƒ  Úmasked_scatter_backwardr…  Ú
index_put_r‡  ÚaliasrŠ  r•  Úbmmr—  r›  r   rÞ  rß  r  rÄ  r  r½  Ú max_pool2d_with_indices_backwardrÒ  Úmax_pool2d_with_indicesrÔ  Úfractional_max_pool2dré  Úmax_pool3d_with_indicesrù  Ú max_pool3d_with_indices_backwardr   r
  r  r  Úgrid_sampler_2d_backwardr  r$  r&  r)  rù  rl  r;  Úselect_scatterr?  Úslice_scatterrC  r¦   rH  rP  ÚgatherrV  rg  rn  rp  rz  r}  Úscatter_addr‚  Úscatter_add_r…  r|  r  ry  r?  Úvalue_reducer‰  Úscatter_r‹  Ú#_scaled_dot_product_flash_attentionr   Ú#_scaled_dot_product_cudnn_attentionr«  Ú,_scaled_dot_product_flash_attention_backwardr¶  Ú+_scaled_dot_product_flash_attention_for_cpur¹  Ú4_scaled_dot_product_flash_attention_for_cpu_backwardr¿  Ú'_scaled_dot_product_efficient_attentionrÄ  Ú0_scaled_dot_product_efficient_attention_backwardrÌ  Ú,_scaled_dot_product_cudnn_attention_backwardrÎ  Ú_flash_attention_forwardrÔ  Ú_flash_attention_backwardrÙ  Ú_efficient_attention_forwardrå  Ú_efficient_attention_backwardÚSymIntrí  Ú
_scaled_mmr  Úscatter_reduceÚtwoÚtwo_outr  Úscatter_reduce_r  Úmultinomialr  r  r)  r1  Ú_upsample_nearest_exact1dr9  Ú_upsample_nearest_exact2dr=  Ú"_upsample_nearest_exact2d_backwardrA  Ú_upsample_nearest_exact3dr½   rC  Úvalues_stablerF  r]  Ú_thnn_fused_lstm_cellrc  rz  r„  r‰  rŒ  rŽ  Úargminr�  r’  Útopkrš  Ú_segment_reduce_backwardrž  Úkthvaluer¢  rž   r¶  r³  rº  r½  Úpixel_shufflerÄ  rÖ  Ú	bucketizeÚ
Tensor_outrÚ  Úhistcrç  Ú_upsample_bilinear2d_aaÚ_upsample_bicubic2d_aarë  rô  rù  r{  r   Úsearchsortedr  r  Ú_embedding_bag_backwardr  Ú_embedding_bag_dense_backwardr  Ú*_embedding_bag_per_sample_weights_backwardr  Úisinr!  Ú	polygammar$  Ú_local_scalar_denser&  Ú_jagged_to_padded_dense_forwardr*  r2  r6  Úspecial_airy_aiÚspecial_bessel_y0Úspecial_bessel_y1Úspecial_modified_bessel_i0Úspecial_modified_bessel_i1Úspecial_modified_bessel_k0Úspecial_modified_bessel_k1Ú!special_scaled_modified_bessel_k0Ú!special_scaled_modified_bessel_k1Úspecial_chebyshev_polynomial_tÚspecial_chebyshev_polynomial_uÚspecial_chebyshev_polynomial_vÚspecial_chebyshev_polynomial_wÚ&special_shifted_chebyshev_polynomial_tÚ&special_shifted_chebyshev_polynomial_uÚ&special_shifted_chebyshev_polynomial_vÚ&special_shifted_chebyshev_polynomial_wÚspecial_hermite_polynomial_hÚspecial_hermite_polynomial_heÚspecial_laguerre_polynomial_lÚspecial_legendre_polynomial_pr<  r@  rE  rH  Úlerp_Úaddcmul_Úaddcdiv_Útorch._refs.nn.functionalÚtorch._refs.specialrf  r5   r1   r/   ú<module>rQ	     s¾Q  ðð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø )Ð )Ð )Ð )Ð )Ð )ð „y„~€à*/¬-×*?Ò*?ÀÈÐPVÑ*WÔ*WÐ 'ð
ð 
ð 
ðà3ðð ð ð ð(*ð *ð *ðð ð ð €�”˜tœ}Ð-Ñ.Ô.Ø€�„ð
 
Ø
ØØŒ=ØØð5ð 5ð 5ñ „ñ /Ô.ð5ðp €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„ð'ð 'ñ „ñ 3Ô2ð'ð €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„Ø%'ð %ð %ð %ð %ñ „ñ CÔBð%ð$ €ˆtÔ%Ñ&Ô&Ø€�„ðIð Iñ „ñ 'Ô&ðIð €Ø	„[Ô˜$œ+œ/¨4¬;Ô+>ÀÄÄÐPñô ð €ˆX�yÑ!Ô!ðð ñ "Ô!ñô ðð €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„ð/ð /ñ „ñ CÔBð/ð1Hð 1Hð 1Hðl €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ðð ñ „ñ ;Ô:ðð" €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ðð ñ „ñ ;Ô:ðð €ˆtŒ}Ô*Ñ+Ô+Ø"&ð 3ð 3ð 3ð 3ñ ,Ô+ð3ð €ˆtŒ}Ô$Ñ%Ô%ð Œ*ØØØð
ð 
ð 
ð 
ñ &Ô%ð
ð €�”Ô$ d¤lÔ&6Ð7Ñ8Ô8Ø€�„ð
 Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð €�”Ô  $¤,Ô"6Ð7Ñ8Ô8Ø€�„ð Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„Ø%)°$¸tÐPTð ð ð ð ñ „ñ 3Ô2ðð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ðKð Kñ „ñ ;Ô:ðKð €ˆtŒzÔ!Ñ"Ô"ñð ð ñ #Ô"ðð0(ð (ð (ð €ˆtŒÔ&Ñ'Ô'ðð ñ (Ô'ðð €ˆtÔ2Ñ3Ô3ð
 "Ø%)Ø'+ñð Øðàðð ðð �6Ô
ð	ð
 ˜c”]ðð ˜œÔ$ðð ð ñ 4Ô3ððB €ˆtÔ.Ñ/Ô/ð
 (,ñ	ð Ø
ðàðð ðð ˜œÔ$ð	ð ð ñ 0Ô/ðð0 €ˆtÔ1Ñ2Ô2ð Ø	
Ø'+ðð ð Øðà
ðð ðð ð	ð ˜œÔ$ðð ð ñ 3Ô2ððD €ˆtÔ#Ñ$Ô$ð "Ø"Ø'+Ø"ØØØ$ñ/<ð /<Ø”,ð/<àŒ\ð/<ð �6Ô
ð/<ð �FÔð	/<ð
 ˜œÔ$ð/<ð ð/<ð ð/<ð ð/<ð ð/<ð /<ð /<ñ %Ô$ð/<ðd €ˆtÔ Ô(Ñ)Ô)ð ð	Ið 	Ið 	IØ
ð	Ià	ð	Ið ð	Ið ŒLð		Ið
 ð	Ið ð	Ið ð	Ið 	Ið 	Iñ *Ô)ð	Ið €ˆtÔ!Ô)Ñ*Ô*ð ð	ð 	ð 	Ø
ð	à	ð	ð ð	ð ŒLð		ð
 ð	ð ð	ð ð	ð 	ð 	ñ +Ô*ð	ð €�„Ø€ˆtÔ Ô(Ñ)Ô)ð'ð 'ñ *Ô)ñ „ð'ð €ˆtÔ"Ô*Ñ+Ô+ð
 !%Ø $Ø $ØØØð Wð  Wð  WØ
ð Wàð Wð �fÔð	 Wð
 �fÔð Wð �fÔð Wð ð Wð ð Wð ð Wð  Wð  Wñ ,Ô+ð WðF €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €ˆtŒzÔ!Ñ"Ô"ð6ð 6ñ #Ô"ð6ð €ˆtŒzŒ~ÑÔð(ð (ñ Ôð(ð
 €ˆtÔ!Ô)Ñ*Ô*ðð ñ +Ô*ðð €ˆtÔ!Ô%Ñ&Ô&ðð ñ 'Ô&ðð €ˆtŒ{Ô"Ñ#Ô#ðð ñ $Ô#ðð €ˆtÔ#Ô+Ñ,Ô,ð ØØØØð)ð )ð )ð )ñ -Ô,ð)ð €ˆtÔ'Ô/Ñ0Ô0ñ,ð ,ð ,ñ 1Ô0ð,ð €ˆtÔ3Ô;Ñ<Ô<ñð ð ñ =Ô<ðð
 €ˆtÔ0Ô8Ñ9Ô9ñ6ð 6ð 6ñ :Ô9ð6ð& €ˆtÔ<ÔDÑEÔEðð ñ FÔEðð
 €ˆtÔ,Ô0Ñ1Ô1ðð ñ 2Ô1ðð
s˜Fð s¨Cð sð sð sð sð  ð  ¨Fð  ¸#ð  ð  ð  ð  ðN (,ñ
ð 
Øð
àð
ð !%ð
ð 
ð 
ð 
ñ$ð �Vð  Sð °Cð ð ð ð ð
˜ð 
 Fð 
°$ð 
Àð 
ð 
ð 
ð 
ð"  ñ	ð Øðàðð ðð ð	ð ð ð ð�Cð ð ð ð ð €�Ô!Ô)¨4Ô+<Ô+HÐIÑJÔJØ€ˆ]˜NÑ+Ô+ñð ˜ð  sð ¸Tð ð ð ñ ,Ô+ñ KÔJðð" €�Ô$Ô,¨dÔ.AÔ.EÐFÑGÔGØ€�„ðB ð B¨6ð Bð Bð Bñ „ñ HÔGðBð €�”Ð Ñ!Ô!Ø€ˆ]˜NÑ+Ô+ð	˜6ð 	ð 	ð 	ñ ,Ô+ñ "Ô!ð	ðQ ð Q¨Fð Qð Qð Qð Qð €ˆtÔ*Ñ+Ô+Ø€�„ð) ð )¨Fð )¸4ð )ÀFð )ð )ð )ñ „ñ ,Ô+ð)ð €ˆtÔ"Ñ#Ô#Ø€�„ñJð J˜ð J Fð J°4ð JÀFð Jð Jð Jñ „ñ $Ô#ðJð €ˆtŒ}ÑÔØ€�„ñ)ð )�6ð ) $ð )°6ð )ð )ð )ñ „ñ Ôð)ð €ˆtÔ$Ñ%Ô%Ø€�„ñ)ð )˜6ð )¨$ð )¸6ð )ð )ð )ñ „ñ &Ô%ð)ð €ˆtÔ&Ô.Ñ/Ô/ñð ˜&ð ¨ð ÀTð ð ð ñ 0Ô/ðð" €Ø	Ô$Ô,¨dÔ.MÔ.QÐRñô ð €�„ð. fð .°6ð .¸fð .ð .ð .ñ „ñô ð.ðd €ˆtÔ!Ô)Ñ*Ô*ñð ˜&ð °ð ð ð ñ +Ô*ðð €�Ô)Ô1°4Ô3LÔ3PÐQÑRÔRØ€ˆT�8˜VÑ$Ô$ð Øð	ð ð Ø
ðð ðð ð	ð
 ˆ6�6˜6Ð!Ô"ðð ð ñ %Ô$ñ SÔRðð& €�Ô%Ô-¨tÔ/DÔ/HÐIÑJÔJØ€�„ð ð'ð 'ð 'Øð'àð'ð ð'ð
 ð'ð ð'ð 'ð 'ñ „ñ KÔJð'ðT €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#�sÑÔØ/3ð ð ð �fð ¨ð ¸¸fÀfÈfÐ>TÔ8Uð ð ð ñ Ôñ =Ô<ðð4 €�Ô(Ô0°$Ô2JÔ2NÐOÑPÔPØ€ˆT�8˜VÑ$Ô$ð Øð	ð ð Øðð ðð ð	ð
 ˆ6�6˜6Ð!Ô"ðð ð ñ %Ô$ñ QÔPððD €�Ô$Ô,¨dÔ.BÔ.FÐGÑHÔHØ€�„ð Øð4ð 4ð 4Øð4àð4ð ð4ð
 ð4ð ð4ð ð4ð 4ð 4ñ „ñ IÔHð4ðn €ˆtŒ~ÑÔØ€ˆS�#�sÑÔð Øñ	$ð $Øð$àð$ð ð$ð ð	$ð
 ˆ6�6˜6Ð!Ô"ð$ð $ð $ñ Ôñ Ôð$ðP˜ð   t¨T zÔ!2ð ð ð ð ð* €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#ÑÔñð �fð  Cð ¸¸fÀf¸nÔ8Mð ð ð ñ Ôñ =Ô<ðð4 €�Ô$Ô,¨dÔ.BÔ.GÐHÑIÔIØ€ˆV�[ $¨Ñ1Ô1ð'�vð ' %¨°¸ÀÐ(FÔ"Gð 'ð 'ð 'ñ 2Ô1ñ JÔIð'ð$ €ˆtÔÔ'Ñ(Ô(ð  ØØ ñ	"ð "Øð"àð"ð ð"ð �SŒMð	"ð "ð "ñ )Ô(ð"ðJ.Ø
ð.à
ð.ð ˆ4�Œ9�d˜3”iÐÔ ð.ð .ð .ð .ð".Ø
ð.à
ð.ð �3Œ-ð.ð ˆ6�6ˆ>Ôð	.ð .ð .ð .ð( fð °Vð Àð ð ð ð ð €ˆtÔ$Ñ%Ô%ð
 ØØ#ØØ#Ø!ð8ð 8ð 8Øð8àð8ð ð	8ð
 ð8ð �VÔð8ð 	�Ôð8ð �VÔð8ð �6Ô
ð8ð ˆ6�6˜6 6Ð)Ô*ð8ð 8ð 8ñ &Ô%ð8ðv €�Ô,Ô4°dÔ6RÔ6VÐWÑXÔXð ØØ ðð ð Øðàðð ð	ð
 ðð ðð 
�&Ô	ðð ðð ð ñ YÔXðð2 €ˆtÔ$Ñ%Ô%Ø€ˆS�# 4Ð(Ñ(Ô(ð ØØñ+(ð +(Ø
ð+(àð+(ð ð+(ð ð	+(ð
 ð+(ð ˆ6�6ˆ>Ôð+(ð +(ð +(ñ )Ô(ñ &Ô%ð+(ð^ €ˆtÔÔ'Ñ(Ô(ð
ð 
ñ )Ô(ð
ð €ˆtŒzÑÔØ€�„ð
 ØñWð WØðWà	ðWð ðWð ð	Wð
 ðWð ðWð Wð Wñ „ñ ÔðWðtð ð ð>#;ð #;ð #;ðL €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð(ð (ð (ð< €ˆtÔ-Ñ.Ô.Ø€ˆ\ÑÔðSð Sñ Ôñ /Ô.ðSð €ˆtÔ.Ñ/Ô/Ø€ˆ\ÑÔðTð Tñ Ôñ 0Ô/ðTð2Eð 2Eð 2Eðj €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð €àÔ&Ô.ØÔ&Ô1ØÔ'Ô/ØÔ'Ô2ð	ñô ð €ˆ\ÑÔð&ð &ñ Ôñô ð&ð@<Gð <Gð <Gð~ €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð €àÔ&Ô.ØÔ&Ô1ØÔ'Ô/ØÔ'Ô2ð	ñô ð €ˆ\ÑÔð$(ð $(ñ Ôñô ð$(ðN €ˆtÔ"Ñ#Ô#Ø€�„ñ

ð 

˜fð 

¨ð 

°vð 

ð 

ð 

ñ „ñ $Ô#ð

ð €ˆtÔ#Ñ$Ô$Ø€�„ðP˜vð P¨Vð P¸ð PÀfð PÐQWð Pð Pð Pñ „ñ %Ô$ðPð €�”Ô$ d¤lÔ&6Ð7Ñ8Ô8Ø€�„Ø/0¸ð 'ð 'ð 'ð 'ñ „ñ 9Ô8ð'ð2 €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€�„Ø&*ð /ð /ð /ð /ñ „ñ =Ô<ð/ð
 €ˆtŒÔ$Ñ%Ô%ñð ð ñ &Ô%ðð €ˆtŒ~ÔÑ Ô ñ/ð /ð /ñ !Ô ð/ð
 €�”Ô$ d¤lÔ&6Ð7Ñ8Ô8Ø€�„ñ"ð "ð "ñ „ñ 9Ô8ð"ð €ˆtÔ3Ô;Ñ<Ô<ð Øñ*ð *ð *ñ =Ô<ð*ð. €ˆtŒwÑÔØ€�„ð	ð 	ñ „ñ Ôð	ðBð Bð Bñ
ð 
ð 
ð 
ð* 7;ñbð bØ”,ðbàŒLðbð �$�s”)˜S�.Ô!ðbð �4˜”9˜c�>Ô"ð	bð
 �D˜”I˜s�NÔ#ðbð ðbð ðbð ˜U 4¨¤9¨c >Ô2Ô3ðbð bð bð bðJQð Qð Qð €ˆtÔ%Ô-Ñ.Ô.ð"$Ø”,ð"$àŒLð"$ð �5”<Ô
 ð"$ð ˜5œ<Ô(ð	"$ð
 ˜%œ,Ô'ð"$ð ð"$ð !&ð"$ð ð"$ð "$ð "$ñ /Ô.ð"$ðJ €ˆtÔÔ'Ñ(Ô(ð)Ø”,ð)àŒLð)ð Œ,ð)ð �ŒIð	)ð
 �#ŒYð)ð �3Œið)ð ð)ð ˜”Ið)ð ð)ð )ð )ñ )Ô(ð)ðX 	„8Ôñ X
Ø9>¼×9NÒ9NØ�&˜&ñ:ô :Ð6ð €]�5”9Õ#Õ:ÔBÑCÔCðð ñ DÔCñð, €]�5”9Õ#Õ5Ô=Ñ>Ô>ðSð Sñ ?Ô>ñSð
 „xÕð 	Ø:?¼-×:OÒ:OØ�6˜6ñ;
ô ;
Ñ7ð 
ˆ�u”y•}Õ0Ñ	1Ô	1ð	ð 	ñ 
2Ô	1ñ	ð
 :?¼×9NÒ9NØ�&˜&ñ:ô :Ñ6ð €]�5”9Õ#Õ5Ô=Ñ>Ô>ð ð  ñ ?Ô>ñ ðD €]�5”9Õ#Õ5Ô=Ñ>Ô>Ø€]�5”9Õ#Õ5Õ<Ñ=Ô=ðð ñ >Ô=ñ ?Ô>ñð, €]�5”9Õ#Õ7Ô?Ñ@Ô@Ø€]�5”9Õ#Õ<ÔDÑEÔEð	ð 	ñ FÔEñ AÔ@ñ	ð =B¼M×<QÒ<QØ�V˜Vñ=ô =Ñ9ð €]�5”9Õ&Õ1Ñ2Ô2ð ØØØñ
ñ 
ð 
ñ 3Ô2ñ
ñ<ð ñ ð €ˆt�Ô&Ñ'Ô'ð ØØØØñIñ Ið Iñ (Ô'ñIñZ(<ð (<ñ (<ðX €ˆtÕ'Ô/Ñ0Ô0ñEð Eñ 1Ô0ñEðP €ˆt�ÑÔØ€�„ð ØØØØñQJñ QJð QJñ „ñ  ÔñQJðh €ˆtÕ'Ñ(Ô(Ø€ˆ\ÑÔñK(ð K(ñ Ôñ )Ô(ñK(ð\ €ˆtÕ(Ô0Ñ1Ô1ñð ñ 2Ô1ñð" €ˆtÕ(Ô0Ñ1Ô1ñ@ð @ñ 2Ô1ñ@ð €ˆtÕ1Ô9Ñ:Ô:ñFð Fñ ;Ô:ñFð, €ˆtÕ1Ñ2Ô2Ø€ˆ\ÑÔñPð Pñ Ôñ 3Ô2ñPñ
	
°6ð 	
ÀSð 	
ñ 	
ð 	
ñ 	
ð €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ+ð +ñ Ôñ )Ô(ñ+ð\ €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñHð Hñ Ôñ 2Ô1ñHð$ €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ'ð 'ñ Ôñ )Ô(ñ'ðT €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñ(ð (ñ Ôñ 2Ô1ñ(ð
 €ˆtÕ%Ô,Ñ-Ô-ñ*ñ *ð *ñ .Ô-ñ*ð €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€�„ñTð Tñ „ñ 9Ô8ñTð €�Õ#Ô+¨TÕ-@Ô-DÐEÑFÔFØ€�„Ø9;ñ @ð @ñ @ #ñ @°3ð @ñ @ð @ñ „ñ GÔFñ@ð €�•
Ô! 4Õ#5Ô#<Ð=Ñ>Ô>ñ`Jð `Jñ ?Ô>ñ`JðF €�Õ)Ô1Ð2Ñ3Ô3ñHð Hñ 4Ô3ñHð: €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€�„Ø./°qð 'ð 'ñ 'ð 'ñ „ñ 7Ô6ñ'ð0 €�Õ!Ô)¨4Õ+=Ô+EÐFÑGÔGð  Øñ!
ð 
ñ 
ð 
ñ HÔGñ
ð2 €�Õ Ô(Ð)Ñ*Ô*ð  Øñ!!ð !ñ !ð !ñ +Ô*ñ!ðH €�•ˆ~ÑÔØ€�„ñBð Bñ „ñ ÔñBð* €�Õ0Ð1Ñ2Ô2ñð ñ 3Ô2ñð& €�Õ8Ð9Ñ:Ô:ñð ñ ;Ô:ñð €�Õ(Ð)Ñ*Ô*ñ@ð @ñ +Ô*ñ@ð €�Õ0Ð1Ñ2Ô2ñ<ð <ñ 3Ô2ñ<ð €�Õ(Ð)Ñ*Ô*ñ<ð <ñ +Ô*ñ<ð €ˆtÕ"Ô*Ñ+Ô+ñ &ð  &ñ ,Ô+ñ &ðF €ˆtÕ#Ñ$Ô$Ø€�„ñGð Gñ „ñ %Ô$ñGð* €ˆtÕ"Ô*Ñ+Ô+ð
 Ø	
ØØØØña5ñ a5ð a5ñ ,Ô+ña5ðH €ˆtÕ/Ô7Ñ8Ô8ñ5ð 5ñ 9Ô8ñ5ñ
ñ 
ð 
ñ 
ð €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€�„ñ=¸$ñ =ð =ñ =ð =ñ „ñ 7Ô6ñ=ð €�•Ô# T¥^Ô%;Ð<Ñ=Ô=ñ)ð )ñ >Ô=ñ)ð €à�ŒØ�ÕØ�ÔØ�Õ!Ø�	ÔØ�	Õðñ	ô 	ð €ˆX�yÑ!Ô!ññ ð ñ "Ô!ñ	ô 	ñð €ˆtÕ Ô(Ñ)Ô)ñð ñ *Ô)ñð €ˆt�{Ô"Ñ#Ô#ñ'ð 'ñ $Ô#ñ'ð €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €à�	ÕØ�	ÕØ�	ÔØ�	ÔØÕÔ!ØÕÔ ØÕÔ!ðñ
ô 
ñð ñ
ô 
ñð €à�	ÕØ�	ÕØ�	ÔØ�	Ôð	ñô ñ*ñ *ð *ñô ñ*ðZ €�•
Ô" D¥JÕ$7Ð8Ñ9Ô9ñð ñ :Ô9ññ
ð 
ñ 
ð" €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €ˆt�yÔ Ñ!Ô!ñ&ð &ñ "Ô!ñ&ð €�•
Ô! 4¥:Õ#4Ð5Ñ6Ô6ñð ñ 7Ô6ñð €�•	Ô  $¥)Õ"2Ð3Ñ4Ô4ñ"ð "ñ 5Ô4ñ"ð €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €ˆt�~Ô$Ñ%Ô%Ø€�„ñð ¨Fð ñ ð ñ „ñ &Ô%ñð €�Õ%Ð&Ñ'Ô'Ø€�„àRVñ"ñ "ð "ñ „ñ (Ô'ñ"ð €�Õ0Ð1Ñ2Ô2àRVñ;ñ ;ð ;ñ 3Ô2ñ;ð €�Õ&Ð'Ñ(Ô(àKOññ ð ñ )Ô(ñð €�•Ô&¨Õ(>Ô(FÐGÑHÔHñ"ñ "ð "ñ IÔHñ"ð €ˆtÕ Õ'Ñ(Ô(ñð ñ )Ô(ñð
 €ˆtÕ!Ô)Ñ*Ô*ñð ñ +Ô*ñð €ˆtÕ#Ñ$Ô$ñ	ð 	ñ %Ô$ñ	ð €ˆtÕ"Ñ#Ô#Ø€�„ñ6ð 6ñ „ñ $Ô#ñ6ð €ˆtÕ+Ñ,Ô,ñ!ð !ñ -Ô,ñ!ð €ˆt�Ô&Ñ'Ô'ññ ð ñ (Ô'ñð €ˆt�zÔ!Ñ"Ô"ñ!ð !ñ #Ô"ñ!ññ ð ñ ðB €ˆt�xÔÑ Ô ñ5ð 5ñ !Ô ñ5ñð ñ ñð ñ ñ6ð ñ ñ;ð ;ñ ;ðh #ñ-Zð ZØñZàñZð 	ñZð 	ñ	Zð
 	ñZð 	ñZð 	ñZð 	ñZð 	ñZð 	ñZð 	ñZð ñZð ñZð ñZð ñZð  ñ!Zð" ñ#Zð$ ñ%Zð& ñ'Zð( ð)Zð* ñ+Zð, ð-Zñ Zð Zñ Zñz;4ð ;4ñ ;4ð|38Øñ38àñ38ð ñ38ð 	ñ	38ð
 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð ñ38ð ñ38ð ñ38ð  ñ!38ð" ñ#38ð$ ð%38ð& ð'38ñ 38ð 38ñ 38ñlI2ð I2ñ I2ðX €ˆtÕ4Ô<Ñ=Ô=ñ(ð (ñ >Ô=ñ(ðV €ˆtÕ+Ô3Ñ4Ô4ð ØØØñ#ñ #ð #ñ 5Ô4ñ#ðL €ˆtÕ)Ô1Ñ2Ô2ñQð Qñ 3Ô2ñQðh €ˆtÕ+Ñ,Ô,Ø€ˆU�IÑÔð ØØØñdñ dð dñ Ôñ -Ô,ñdðN €ˆtÕ4Ñ5Ô5Ø€ˆ\ÑÔñbð bñ Ôñ 6Ô5ñbðJ%
 Vñ %
°6ð %
ñ %
ð %
ñ %
ðPð ñ ð ñ ˜tñ ô ñ ð ñ ¨vñ È3ð ñ ð ñ ð$ €ˆtÕ,Ô4Ñ5Ô5ñ#ð #ñ 6Ô5ñ#ð$ €ˆtÕ#Ñ$Ô$Ø€�„ñ8ð 8ñ „ñ %Ô$ñ8ð" €ˆtÕ,Ñ-Ô-Ø€ˆ\™;Ñ'Ô'ñ!ð !ñ (Ô'ñ .Ô-ñ!ð, €�•	Ô!Ð"Ñ#Ô#ñ.ð .ñ $Ô#ñ.ð €ˆt�Ô&Ñ'Ô'ð ØØØØñ)ñ )ð )ñ (Ô'ñ)ðX €ˆt�{ŒÑÔñEð Eñ  ÔñEð@ €ˆtÕ"Ô*Ñ+Ô+ñ.ð .ñ ,Ô+ñ.ð €ˆtÕ!Ô)Ñ*Ô*ñ.ñ .ð .ñ +Ô*ñ.ñ
	ð 	˜ñ 	¨Cñ 	¸dð 	ñ 	ð 	ñ 	ñ/ð /ñ /ñ
ð ñ ð  €ˆt�{Ô"Ñ#Ô#ñ'ñ 'ð 'ñ $Ô#ñ'ññ ð ñ ñ6
ñ 
ð 
ñ 
ñ ð ñ ñ
-
ñ -
ð -
ñ -
ñb4ñ 4ð 4ñ 4ð €ˆtÕÔ'Ñ(Ô(ñ&ð &ñ )Ô(ñ&ð
 €ˆtÕ Ñ!Ô!ñð ñ "Ô!ñð
 €à�ÕØ�ÕØ�ÕØ�Õ!ð	ñô ð €�„ñ&ñ &ð &ñ „ñô ñ&ð €à�ÕØ�ÕØ�ÕØ�Õ"ð	ñô ññ ð ñô ñð €�Õ8Ð9Ñ:Ô:ð
 ØØ#Ø!ñ5ñ 5Øñ5à	ñ5ð ñ5ð ñ	5ð
 ñ5ð ñ5ð �EŒ?ð5ñ 5ð 5ñ ;Ô:ñ5ðp €�Õ8Ð9Ñ:Ô:ð ØØ#Ø!ñ'ñ 'Øñ'à	ñ'ð ñ'ð ˜Ôñ	'ð
 ñ'ð ñ'ð ñ'ð ñ'ð �EŒ?ð'ñ 'ð 'ñ ;Ô:ñ'ðT €àÕ9ðñô ð( "ñ"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð �EŒ?ð"ñ "ð "ñô ñ
"ð. €àÕ8ðñô ð ØØ"&Ø!ññ Øñà	ñð ñð ñ	ð
 ñð ˜Ôñð �EŒ?ðñ ð ñô ñ
ð< €àÕAðñô ð #'Ø!ñ'"ñ '"Øñ'"àñ'"ð 
ñ'"ð ð	'"ð
 
ñ'"ð ñ'"ð ñ'"ð ñ'"ð ˜Ôñ'"ð �EŒ?ð'"ñ '"ð '"ñô ñ
'"ðT €�Õ<Ð=Ñ>Ô>ð ØØ!ñ$)ñ $)Øñ$)à	ñ$)ð ñ$)ð ˜Ôñ	$)ð
 ñ$)ð ñ$)ð �EŒ?ð$)ñ $)ð $)ñ ?Ô>ñ$)ðN €àÕ=ðñô ð" Ø!ñ4-ñ 4-Øñ4-àñ4-ð 
ñ4-ð ñ	4-ð
 ˜Ôð4-ð 
ñ4-ð ñ4-ð ñ4-ð ñ4-ð ñ4-ð ˜$”Zñ4-ð ñ4-ð �EŒ?ð4-ñ 4-ð 4-ñô ñ
4-ðn €àÕ9ðñô ð* "ñ!"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð  �EŒ?ð!"ñ "ð "ñô ñ
"ð0 €àÕ%ðñô ð  "Ø&*Ø'+Ø"&Ø%)ñ9ñ 9Øñ9à	ñ9ð ñ9ð ˜Ôñ	9ð
 ˜Ôñ9ð ñ9ð ñ9ð ñ9ð ñ9ð ñ9ð �EŒ?ñ9ð ˜s”mñ9ð   ”}ñ9ð ˜Ôñ9ð ˜6Ô"ð9ñ 9ð 9ñô ñ
9ðx €àÕ&ðñô ð( "Ø&*Ø'+ñ#,ñ ,Øñ,àñ,ð 
ñ,ð ð	,ð
 
ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð �EŒ?ñ,ð  ˜s”mñ!,ð"   ”}ð#,ñ ,ð ,ñô ñ
,ð4 €àÕ)ðñô ð   %Ø!Ø(,Ø!%Ø!%ñ-Sñ -SØñ-Sà	ñ-Sð ð-Sð �6Ô
ñ	-Sð
 ˜6Ô"ñ-Sð ˜6Ô"ñ-Sð ˜3”-ñ-Sð ˜3”-ñ-Sð ñ-Sð ñ-Sð ñ-Sð �EŒ?ñ-Sð ˜fÔ%ñ-Sð �vÔñ-Sð ˜#”ð-Sñ -Sð -Sñô ñ
-Sð` €àÕ*ðñô ð* "Ø$(Ø"'ñ%47ñ 47Øñ47àñ47ð 
ñ47ð ð	47ð
 �6Ô
ñ47ð ˜6Ô"ñ47ð ˜6Ô"ñ47ð •,ñ47ð •,ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð  �EŒ?ñ!47ð" ˜S”Mñ#47ð$  ð%47ñ 47ð 47ñô ñ
47ðn €�•Ô'Ð(Ñ)Ô)ð $(Ø+/Ø'+Ø ñaYð aYØ
Œ,ðaYà
Œ,ñaYð Œ\ñaYð Œ\ð	aYð
 �5”<Ô
 ñaYð ˜5œ<Ô(ðaYð ˜œÔ$ñaYð ðaYñ aYð aYñ *Ô)ñaYðH €�Õ#Õ'¨Õ)<Õ)DÐEÑFÔFØ€�„ñ&ñ &ð &ñ „ñ GÔFñ&ð
 €ˆtÕ#Õ'Ñ(Ô(ññ ð ñ )Ô(ñð
 €�Õ Ô(¨$Õ*:Ô*>Ð?Ñ@Ô@Ø€�„ñ	Èð 	ð 	ñ 	ð 	ñ „ñ AÔ@ñ	ñð ñ ñ,ð ,ñ ,ð* €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ññ ð ñô ñð. €àÕ(Ô0ØÕ/Ô7ðñô ð !%Ø $ññ Øñà˜%  U¥\Ð 1Ô2Ô3ñð ˜˜s E¥LÐ0Ô1Ô2ñð �uŒoñ	ð
 �uŒoðñ ð ñô ñð: €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €à�	ÔØ�	ÕØ�	ÕØ�	Õð	ñô ññ ð ñô ññ&$ð $ñ $ðN €ˆtÕ)Ô1Ñ2Ô2ð
 Øññ ð ñ 3Ô2ñð €ˆt�Ô&Ñ'Ô'ñ4/ð 4/ñ (Ô'ñ4/ðn €ˆtÕ$Ô,Ñ-Ô-ñ$%ð $%ñ .Ô-ñ$%ñN

ð 

ñ 

ñ
ð 
ñ 
ð €�•Ô# T¥[Ô%8Ð9Ñ:Ô:ñ4ñ 4ð 4ñ ;Ô:ñ4ð €ˆtÕ!Ô)Ñ*Ô*ññ ð ñ +Ô*ñð €ˆt�yÔ Ñ!Ô!ñ	Qñ 	Qð 	Qñ "Ô!ñ	Qð €ˆtÕ,Ñ-Ô-Ø€�„àLPññ ð ñ „ñ .Ô-ñð  €�•Ô% t¥}Õ';Ð<Ñ=Ô=Ø€ˆX�yÑ!Ô!ñKñ Kð Kñ "Ô!ñ >Ô=ñKð #(Õ"9Ñ ñQð Qñ Qð €ˆtÕ7Ô?Ñ@Ô@ñ	*ð 	*ñ AÔ@ñ	*ð €ˆtÕ#Ô+Ñ,Ô,ñ	0ð 	0ñ -Ô,ñ	0ð €ˆtÕ!Ô)Ñ*Ô*ñð ñ +Ô*ñð: €ˆtÕ-Ô5Ñ6Ô6ñFð Fñ 7Ô6ñFðD €�•Ô% t¥~Õ'@ÐAÑBÔBØ€�„Ø27¸uñ ð ñ ð ñ „ñ CÔBñð €�•
ˆ|ÑÔØ€�„ñEñ Eð Eñ „ñ ÔñEð0 €Ø	Õ!Ô)¨4Õ+FÔ+NÐOñô ð Øññ ð ñô ñð( €ˆtÕ>ÔFÑGÔGñð ñ HÔGñð$ €�•Ô'¨­Ô)<Ð=Ñ>Ô>Ø€�„ñ'ñ 'ð 'ñ „ñ ?Ô>ñ'ð
 €ˆuŒyŒ~Õ(Ñ)Ô)ñð ñ *Ô)ñð: €ˆuŒyŒ~Õ Ñ!Ô!ñ6ð 6ñ "Ô!ñ6ð" €ˆtÕ Ñ!Ô!Ø€�„ð
 Ø
Ø	Øñ+Kð +Kñ +Kð +Kñ „ñ "Ô!ñ+Kñ\ð ñ ð €ˆtÕ+Ñ,Ô,ð ñ'
ñ '
ð '
ñ -Ô,ñ'
ðT €ˆtÕ1Ñ2Ô2ð ññ ð ñ 3Ô2ñð. €ˆtÕ>Ñ?Ô?ð ññ ð ñ @Ô?ñð0 €ˆt�yÑÔØ€�„Ø8=Àeñ 8ð 8ñ 8ð 8ñ „ñ Ôñ8ð  €ˆt�~ÑÔØ€�„ñ6�cð 6 ð 6¨Fð 6ñ 6ð 6ñ „ñ Ôñ6ð €ˆtÕ'Ñ(Ô(ðI &ð Iñ Ið Iñ )Ô(ñIð €ˆtÕ3Ô;Ñ<Ô<ð
 ñ	*ð *Øð*à�&Œ\ñ*ð �c”ñ*ð ð	*ñ *ð *ñ =Ô<ñ*ñ ð ñ ñð ñ ð Ñ ˜dÕ2Ñ 3Ô 3Ð 3Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕDÑ EÔ EÐ EØ Ñ ˜dÕDÑ EÔ EÐ Eð Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕ@Ñ AÔ AÐ AØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ Bñð ñ ð €ˆt�yÑÔØ€�„ñð ñ „ñ Ôñð" €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð, 	Ñ˜t�yÑ)Ô)�Ø!Ñ! $¥,Ñ/Ô/�Ø!Ñ! $¥,Ñ/Ô/�ð
 Ð Ð Ð Ø  Ð  Ñ  Ð  Ø Ð Ñ Ð ñBNð BNñ BNðJ ��„€€€r1   