§
    ž²ÅjrU ã                   óne  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlZd dlZd dlZd dlmc mZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0 d d	l1m2Z2m3Z3m4Z4m5Z5m6Z6 d
dl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@ ddl<mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZYmZZZ ddhZ[ ej\        e]¦  «        Z^i Z_eeedef         e`f         edef         f         ead<   i Zbeejc        jd        eedef                  f         ead<    ee¦   «         Zfeejc        jd                 ead<   ejY        jg        ZgejY        jh        ZhejY        ji        Zi ee¦   «         Zjeejc        jd                 ead<    ee¦   «         Zkeejc        jd                 ead<    ee¦   «         Zleejc        jd                 ead<   i Zmeejc        jd        ejc        jd        f         ead<   ejY        jn        Zndedef         deedef                  fd„Zod„ Zpd „ Zqd!„ Zrd"„ Zs eregjt        egju        egjv        egjw        egjx        egjy        egjz        egj{        egj|        egj}        egj~        egj        egj€        g¦  «         ej�        ej‚        ejƒ        ej„        ej…        ej†        ej‡        ejˆ        ej‰        ejŠ        ej‰        ej‹        ejŒ        d#œZ�d$eŽfd%„Z�d&„ Z�d'„ Z‘d(e(fd)„Z’d*„ Z“d+„ Z”d,ee         d-ee`ef         d.e‹d(ee(         d/e‹deee         ee`ef         f         fd0„Z•d1„ Z–d(ee(         fd2„Z—d3e(j˜        d3fd(ee(         fd4„Z™d5„ Zš�dzd6„Z›	 	 	 	 	 	 �d{d7„Zœ�d|d8„Z��d|d9eKd$ejž        fd:„ZŸ e™eij         d¬;¦  «        d9eKd$ejž        fd<„¦   «         Z¡d3d=œd9eKd$ejž        fd>„Z¢ e™egj£        jž        d¬;¦  «        d9eKd$ejž        fd?„¦   «         Z¤d3d3d@œd9eKdAej¥        fdB„Z¦ e™eij§        d¬;¦  «        �d|d9eKdAej¥        fdC„¦   «         Z¨ddDe(j˜        d3ddd3d3df	dE„Z©dF„ Zª eª¦   «          	 �d|dG„Z« e™egj¬        d3d¬H¦  «        dI„ ¦   «         Z¬ e™egj­        d3d¬H¦  «        dJ„ ¦   «         Z­ e™egj®        egj¯        egj°        egj±        eij²        g¦  «        dK„ ¦   «         Z³ e´egdL¦  «        r  e™egjµ        ¦  «        e³¦  «          e™egj¶        d¬;¦  «        �d}dM„¦   «         Z¶ e™egj·        d¬;¦  «        �d}dN„¦   «         Z· e™egj¸        g¦  «        �d}dO„¦   «         Z¸ e™egj¹        ¦  «        dP„ ¦   «         Z¹ e™egjº        ¦  «        dQ„ ¦   «         Zº e™egj»        ¦  «        dR„ ¦   «         Z» e™egj¼        ¦  «        dS„ ¦   «         Z¼ e™egj½        j¾        ¦  «        dT„ ¦   «         Z½ e™egj¿        ¦  «        dU„ ¦   «         Z¿ e™egjÀ        d¬;¦  «        dV„ ¦   «         ZÀ e™eijÁ        d¬;¦  «        dW„ ¦   «         ZÁ e™egjÂ        d¬;¦  «        dX„ ¦   «         ZÂ e™egjÃ        ¦  «        dY„ ¦   «         ZÃ e™egjÄ        d¬;¦  «         e™egj£        d¬;¦  «         e™egjÅ        d¬;¦  «        dZ„ ¦   «         ¦   «         ¦   «         Z£ e™egjÆ        d¬;¦  «        d[„ ¦   «         ZÆ e™egjÇ        d¬;¦  «        �d~d]„¦   «         ZÈ e™egjt        d¬;¦  «        �d}d^„¦   «         Zt e™egjÉ        d¬;¦  «        �d}d_„¦   «         ZÉ e™egju        d¬;¦  «        �d}d`„¦   «         Zu�dda„ZÊ e™enjË        d¬;¦  «        dbeKdceKddeKdeeŽdfeŽdgeŽd$ejž        deKfdh„¦   «         ZÌ e™enjÍ        d¬;¦  «        dbeKdceKddeKdeeŽdfeŽdgeŽd$ejž        deKfdi„¦   «         ZÎ e™enjÏ        j¾        d¬;¦  «        dbeKdjeÐdkeŽdfeŽdgeŽd$ejž        deKfdl„¦   «         ZÑ e™enjÒ        j¾        d¬;¦  «        dbeKdjeÐdkeŽdfeŽdgeŽd$ejž        deKfdm„¦   «         ZÓ e™enjÏ        jÔ        d¬;¦  «        dbeKdjeKdkeKdfeŽdgeŽd$ejž        deKfdn„¦   «         ZÕ e™enjÒ        jÔ        d¬;¦  «        dbeKdjeKdkeKdfeŽdgeŽd$ejž        deKfdo„¦   «         ZÖ e™egj×        ¦  «        �ddp„¦   «         Z× e™egjØ        d¬;¦  «        �d€dqeŽdreŽdseŽfdt„¦   «         ZØ e™egjÙ        d¬;¦  «        �d€dqeŽdreŽdseŽfdu„¦   «         ZÙ e™egjÚ        d¬;¦  «        �d€dqeŽdreŽdseŽfdv„¦   «         ZÚ e™egjÛ        d¬;¦  «        dw„ ¦   «         ZÛ e™egjÜ        d¬;¦  «        �ddx„¦   «         ZÜ e™egjÝ        d¬;¦  «        �ddy„¦   «         ZÝ e™egjÞ        d¬;¦  «        �ddz„¦   «         ZÞ e™egjß        d¬;¦  «        d{„ ¦   «         Zß e™egjà        d¬;¦  «        d|„ ¦   «         Zà e™egjá        d¬;¦  «        d}„ ¦   «         Zá�dd~„Zâ e™egjã        ¦  «        �d�d€„¦   «         Zã�d‚d�„Zä ejå        d¦  «        d‚„ ¦   «         Zæ�d}dƒejç        fd„„Zè�d}dƒejç        fd…„Zé�d‚d†ejê        jë        fd‡„Zì�dƒdˆ„Zíd‰„ Zî e™ejY        jï        jð        d¬;¦  «        dŠ„ ¦   «         Zð e™egjñ        d¬;¦  «        d‹„ ¦   «         Zñ e™egjò        d¬;¦  «        dŒ„ ¦   «         Zò e™egjó        jô        d¬;¦  «        d�„ ¦   «         Zõ e™egjö        ¦  «        dŽ„ ¦   «         Zö ejå        d¦  «        d�„ ¦   «         Z÷d�„ Zø eäegjù        j¾        ¦  «        Zú eäegjù        jû        ¦  «        Zü eäegjý        j¾        ¦  «        Zþ eäegjý        jû        ¦  «        Zÿ eíeg�j         ¦  «          e™egjù        ¦  «        d‘„ ¦   «         Zù e™egjý        ¦  «        d’„ ¦   «         Zý e™e;�j        d¬;¦  «        d“„ ¦   «         �Z e™e;�j        d¬;¦  «        dAej¥        fd”„¦   «         �Z e™e;�j        d¬;¦  «        d•„ ¦   «         �Z e™e;�j        d¬;¦  «        d–„ ¦   «         �Z e™e;�j	        d¬;¦  «        d d—œd˜eeŽ         d™eKdše`dqeŽfd›„¦   «         �Z
 e™e;�j         d¬;¦  «        d d—œdœeŽd�eŽd˜eeŽ         d™eKdqeŽf
dž„¦   «         �ZdŸeKdee`e�j        e�j        e�j        f         fd „�ZdŸeKdee`e�j        f         fd¡„�Z e™eg�j        jç        d¬;¦  «        d3d3ddd¢œd£eKd¤eKd¥e‹d¦e‹d§ee`         d¨eeK         deKfd©„¦   «         �Z e™eg�j        d¬;¦  «        d3d3dªœdbeKd«eKd¥e‹d¦e‹fd¬„¦   «         �Zd­„ �Zd®„ �Zd¯„ �Zd°„ �Zd±„ �Z eíeg�j        ¦  «          eíeg�j        ¦  «          eíeg�j        ¦  «          eíeg�j        ¦  «          eíeg�j        d3¬²¦  «          eíeg�j        j¾        d3¬²¦  «          eíeg�j        ¦  «          eíeg�j        d3¬²¦  «          eíeg�j        ¦  «          eíeg�j        ¦  «          eíeg�j         ¦  «          eíeg�j!        j¾        ¦  «          eíeg�j"        j¾        ¦  «          eíeg�j#        ¦  «          eíeg�j$        �j%        ¦  «          eíeg�j&        j¾        ¦  «          eíeg�j'        j¾        ¦  «          eíeg�j(        ¦  «          eíeg�j)        d3¬²¦  «          eíegjz        �e¦  «          eíeg�j*        �e¦  «          eíeg�j+        �e¦  «          eíeg�j,        �e¦  «          eíeg�j-        �e¦  «          eíeg�j.        ¦  «          eíeg�j/        ¦  «          eíeg�j/        ¦  «          eíeg�j0        ¦  «          eíeg�j1        ¦  «          eíeg�j2        ¦  «          eíeg�j3        �e¦  «          eíeg�j4        ¦  «          eíeg�j5        ¦  «          eíeg�j6        ¦  «          eíeg�j7        ¦  «          eíeg�j8        ¦  «          eíeg�j9        ¦  «          eíeg�j:        ¦  «          eíeg�j;        ¦  «          eíeg�j<        �e¦  «          eíeg�j=        ¦  «          eíeg�j>        �e¦  «          eíeg�j?        ¦  «          eíeg�j@        ¦  «          eíeg�j@        �jA        ¦  «          eíeg�jB        ¦  «          eíeg�jC        ¦  «          eíeg�jD        ¦  «          eíeg�jE        ¦  «          eíeg�jF        ¦  «          eíeg�jG        ¦  «          eíeg�jH        ¦  «          eíeg�jI        ¦  «          eíeg�jJ        ¦  «          eíeg�jK        ¦  «          eíeg�jL        ¦  «          eíeg�jM        ¦  «          eíeg�jN        ¦  «          eíeg�jO        ¦  «          eíeg�jP        ¦  «          eíeg�jQ        ¦  «          eíeg�jR        ¦  «          eíeg�jS        ¦  «          eíeg�jT        ¦  «          eíeg�jU        ¦  «          eíeg�jV        ¦  «          eíeg�jW        ¦  «          eíeg�jX        ¦  «          eíeg�jY        ¦  «          eíeg�jZ        ¦  «          eíeg�j[        �j\        ¦  «          eíeg�j]        ¦  «          eíeg�j^        ¦  «          eíeg�j_        ¦  «          eíeg�j`        ¦  «          eíeg�ja        ¦  «          eíeg�jb        ¦  «          eíeg�jc        ¦  «          eíeg�jd        j¾        ¦  «          eíeg�je        j¾        d3¬²¦  «          eíeg�jf        �e¦  «          eíe�jg        �jh        �ji        ¦  «          eíe�jg        �jh        �jj        ¦  «          eíeg�jk        ¦  «          eíeg�jl        ¦  «          eíeg�jm        �e¦  «          eíeg�jn        ¦  «          eíeg�jo        ¦  «          eíeg�jp        ¦  «          eíeg�jq        ¦  «          eíeg�jr        ¦  «          eíeg�js        �jt        ¦  «          eíeg�ju        j¾        �ed3¬²¦  «          eíeg�jv        j¾        �ed3¬²¦  «          eíeg�jw        j¾        �ed3¬²¦  «          eíeg�jx        j¾        �ed3¬²¦  «          eíeg�jy        j¾        �ed3¬²¦  «          eíeg�jz        j¾        �ed3¬²¦  «          eíeg�j{        j¾        �ed3¬²¦  «          eíeg�j|        j¾        �ed3¬²¦  «          eíeg�j}        j¾        �e¦  «          eíeg�j~        j¾        �e¦  «          eíeg�j        j¾        �e¦  «          eíeg�j€        j¾        �e¦  «          eíeg�j�        ¦  «          e™eg�j‚        d¬;¦  «        �d|d³„¦   «         �Z‚ e™eg�jƒ        ¦  «        dd´œdµ„¦   «         �Zƒd¶„ �Z„ e´egd·¦  «        r  e™eg�j…        ¦  «        �eƒ¦  «          e™ei�j†        ¦  «        d¸„ ¦   «         �Z† e™eg�j‡        d¬;¦  «        d¹eŽdºeŽfd»„¦   «         �Z‡ e™eg�jˆ        d¬;¦  «        �d„d¼„¦   «         �Zˆd½„ �Z‰ e™ejÔ        eg�jŠ        g¦  «        dddd3d¾œd¿„¦   «         ZÔ e™e�j‹        ¦  «        �dzdÀ„¦   «         �Z‹ e™e�jŒ        ¦  «        dÁ„ ¦   «         �Z� e™eg�jŽ        ¦  «        dÂ„ ¦   «         �ZŽ e™eg�j�        ¦  «        dÃ„ ¦   «         �Z�dÄ„ �Z� e™eg�j‘        d¬;¦  «        dÅ„ ¦   «         �Z‘dÆ„ �Z’ e™e�j“        eg�j“        g¦  «        dddddddÇœdÈ„¦   «         �Z“dÉ„ �Z”dÊ„ �Z•  e™eg�j–        ¦  «         �e”�e“¦  «        ¦  «        �Z– �e” �e’d¦  «        ¦  «        �Z— �e” �e’d ¦  «        ¦  «        �Z˜dË„ �Z™ e™eg�jš        ¦  «        dddddÌœdÍ„¦   «         �Zš e™eg�j›        ¦  «        dddddÌœdÎ„¦   «         �Z› e™eg�jœ        ¦  «        dddddÌœdÏ„¦   «         �Zœ e™ei�j�        j¾        ¦  «        dÐ„ ¦   «         �Z� e™e�jž        eg�jž        g¦  «        dÑ„ ¦   «         �Zž e™eg�jŸ        d¬;¦  «        �d|dÒ„¦   «         �ZŸ e™eg�j         d¬;¦  «        �d…dÓ„¦   «         �Z dÔ„ �Z¡	 �d‚dÕ„�Z¢dÖ„ �Z£�d‚d×„�Z¤ e™eg�j¥        d¬;¦  «        dØ„ ¦   «         �Z¥ e™eg�j¦        d¬;¦  «        dÙ„ ¦   «         �Z¦ e™eg�j§        ¦  «        �d|dÚ„¦   «         �Z§ e™eg�j¨        ¦  «        �d|dÛ„¦   «         �Z¨dÜ„ �Z©dÝ„ �Zª e™eg�j«        d¬;¦  «        �d|dÞ„¦   «         �Z« e™e;�j¬        d¬;¦  «        �d|dß„¦   «         �Z¬dà„ �Z­ eäeg�j®        j¾        d3¬á¦  «        �Z¯ eäeg�j°        j¾        d3¬á¦  «        �Z± e™eg�j®        d¬;¦  «        dâ„ ¦   «         �Z® e™eg�j°        d¬;¦  «        dã„ ¦   «         �Z°eœdä„ ¦   «         �Z² e™eg�j³        d¬;¦  «        �d}då„¦   «         �Z³ e™eg�j´        d¬;¦  «        d¹eŽfdæ„¦   «         �Z´ddDdçœdèejc        jd        d¹eŽdéee`         dêe‹fdë„�Zµ e™eg�j¶        d¬;¦  «        ddìœd¹eŽdéee`         fdí„¦   «         �Z¶ e™eg�j·        d¬;¦  «        d¹eŽfdî„¦   «         �Z· e™eg�j¸        d¬;¦  «        d¹eŽfdï„¦   «         �Z¸ e™eg�j¹        d¬;¦  «        d¹eŽfdð„¦   «         �Z¹ e™eg�jº        d¬;¦  «        dDdñœd¹eŽdêe‹fdò„¦   «         �Zº	 	 �d†dóeeeÐ         df         dôeŽdõe‹fdö„�Z» e™eg�j¼        j¾        ¦  «        �d}dceeÐ         fd÷„¦   «         �Z¼ e™eg�j½        j¾        ¦  «        �d}dceeÐ         fdø„¦   «         �Z½ e™egj~        j¾        ¦  «        	 �dzdùeeÐ         dúeeÐ         fdû„¦   «         Z~ e™egj        j¾        ¦  «        	 �dzdùeeÐ         dúeeÐ         fdü„¦   «         Z e™eg�j¾        j¾        ¦  «        	 	 	 �d‡dýeeÐ         dùeeÐ         dúeeÐ         fdþ„¦   «         �Z¾ e™eg�j¿        j¾        ¦  «        	 	 	 �d‡dýeeÐ         dùeeÐ         dúeeÐ         fdÿ„¦   «         �Z¿�d „ �ZÀ e™ei�jÁ        j¾        ¦  «        �d„ ¦   «         �ZÁ e™eg�jÂ        d¬;¦  «        �d�d„¦   «         �ZÂ�de�j        dœee�j        eŽf         f�d„�ZÃ�de�j        d�e�j        f�d„�ZÄ�de�j        d�e�j        dœe�j        f�d„�ZÅ	 �dˆ�d„�ZÆ�d	„ �ZÇ�d
„ �ZÈd�dœ�d„�ZÉ e™ei�jÊ        d¬;¦  «        	 �d|�d„¦   «         �ZÊ e™ei�jË        d¬;¦  «        �d„ ¦   «         �ZË eíegj{        ¦  «          eäegj|        j¾        d3¬á¦  «        �ZÌ e™egj|        d¬;¦  «        �d„ ¦   «         Z|�d‰�d„�ZÍ�d„ �ZÎ�d„ �ZÏ�d„ �ZÐ eäeg�jÑ        j¾        d3¬á¦  «        �ZÒ e™eg�jÑ        ¦  «        �d„ ¦   «         �ZÑ eäeg�jÓ        j¾        d3¬á¦  «        �ZÔ e™eg�jÓ        ¦  «        �d„ ¦   «         �ZÓ eäeg�jÕ        j¾        d3¬á¦  «        �ZÖ�d„ �Z× e™eg�jÕ        ¦  «        �d„ ¦   «         �ZÕ e™eg�jØ        j¾        ¦  «        	 �dŠ�d„¦   «         �ZØ eäegjv        j¾        d3¬á¦  «        �ZÙ eäeg�jÚ        j¾        d3¬á¦  «        �ZÛ e™egjv        d¬;¦  «        	 	 	 	 	 �d‹�d„¦   «         Zv e™eg�jÚ        d¬;¦  «        	 	 	 	 	 �d‹�d„¦   «         �ZÚ�d„ �ZÜ eäegjw        j¾        d3¬á¦  «        �ZÝ e™egjw        d¬;¦  «        	 �d}�d„¦   «         Zw eäeg�jÞ        j¾        d3¬á¦  «        �Zß e™eg�jÞ        d¬;¦  «        	 �d}�d„¦   «         �ZÞ�d „ �Zà�d!„ �Zá�d}�d"e`f�d#„�Zâ�d$„ �Zã e™eg�jä        ¦  «        �dŒd�d%œ�d&„¦   «         �Zä�d'„ �Zå�d(„ �Zæ�d)„ �Zç�d*„ �Zè e™eg�jé        ei�jé        g¦  «        �d}dd3�d+œ�d,„¦   «         �Zê e™eg�jë        ¦  «        �d}dd3�d+œ�d-„¦   «         �Zë�d.„ �Zìeœ�d/„ ¦   «         �Zí eäeg�jî        �jï        d3¬á¦  «        �Zð eäeg�jî        �jñ        d3¬á¦  «        �Zò eäeg�jî        �jó        d3¬á¦  «        �Zô e™eg�jî        dD�¬0¦  «        �d1„ ¦   «         �Zî�d|�d2„�Zõ e™eg�jö        ¦  «        �d3„ ¦   «         �Zö e™eg�j÷        d¬;¦  «        �d|�d4„¦   «         �Z÷eœ�d5„ ¦   «         �Zøeœ�d6„ ¦   «         �Zù e™eg�jú        dD�¬0¦  «        �d}�d7„¦   «         �Zû e™eg�jü        gdD�¬0¦  «        �d8„ ¦   «         �Züd9e<jD        dee<�jý                 f�d9„�Zþ e™ei�jú        gdD�¬0¦  «        �d:„ ¦   «         �Zÿ e™eg�j         eg�jú        jç        gdDe(�j        ¬H¦  «        �d;„ ¦   «         �Zú e™eg�j        ei�j        gdD�¬0¦  «        �d<„ ¦   «         �Z e™eg�j        ei�j        g¦  «        �dŒd�d%œ�d=„¦   «         �Z eäeg�j        j¾        ¦  «        �Z eäeg�j        j¾        ¦  «        �Z eäeg�j	        j¾        ¦  «        �Z
 eäeg�j        j¾        ¦  «        �Z eäeg�j        j¾        ¦  «        �Z e™eg�j        ¦  «        �dz�d>„¦   «         �Z e™eg�j        ¦  «        �dz�d?„¦   «         �Z e™eg�j	        ¦  «        �d@„ ¦   «         �Z	 e™eg�j        d¬;¦  «        �d}�dA„¦   «         �Z e™eg�j        d¬;¦  «        �d}�dB„¦   «         �Z e™eg�j        ¦  «        �dŒd�d%œ�dC„¦   «         �Z e™eg�j        ¦  «        �dŒ�dD„¦   «         �Z e™eg�j        d¬;¦  «        �dŒ�dE„¦   «         �Z e™eg�j        d¬;¦  «        �dŒ�dF„¦   «         �Z  e™ei�j        ¦  «         �eâ�dG¦  «        ¦  «           e™eg�j        ¦  «         �eâ�dH¦  «        ¦  «        �Z  e™eg�j        ¦  «         �eâ�dI¦  «        ¦  «        �Z  e™eg�j        ¦  «         �eâ�dJej…        �¬K¦  «        ¦  «        �Z  e™eg�j        ¦  «         �eâ�dLej…        �¬K¦  «        ¦  «        �Z e©eg�j        dD�dM�¬N¦  «        �Z eäeg�j@        �jA        d3¬á¦  «        �Z  e™eg�j@        �jA        d¬;¦  «        ddd3�dOœ�dP„¦   «         �Z! e™eg�j@        j¾        d¬;¦  «        �d��dQ„¦   «         �Z@�dz�dR„�Z"�dS„ �Z# �e"eg�j$        ¦  «        �Z$ �e#eg�j%        ¦  «        �Z% �e"eg�j&        ¦  «        �Z& �e"eg�j'        ¦  «        �Z' e©eg�j(        ¦  «        �Z( �e#eg�j)        ¦  «        �Z) �e#eg�j*        ¦  «        �Z* e©eg�j+        ¦  «        �Z+ e©eg�j,        dD�¬T¦  «        �Z, �e#eg�j-        ¦  «          �e#eg�j.        ¦  «          e©eg�j/        ¦  «        �Z/ e©eg�j0        ¦  «        �Z0 e©eg�j1        ¦  «        �Z1 e©eg�j2        �dU�¬V¦  «        �Z2 e©eg�j3        ¦  «        �Z3 e©eg�j4        ¦  «        �Z4 e©eg�j5        ¦  «        �Z5 �e"eg�j6        ¦  «          �e"eg�j7        ¦  «        �Z7  e™eg�j8        e(�j        ¬;¦  «        �e7¦  «          �e"eg�j9        ¦  «          �e"eg�j:        ¦  «          �e"eg�j;        ¦  «          �e#egj^        ¦  «          e©eg�j<        ddDej‹        �¬W¦  «        �Z< e©eg�j=        ddDej‹        �¬W¦  «        �Z= e©eg�j>        ddDej‹        �¬W¦  «        �Z> e©eg�j?        ddDej‹        �¬W¦  «        �Z? e©eg�j@        ¦  «        �Z@ e©eg�jA        ¦  «        �ZA  e™eg�jB        ¦  «        �e@¦  «           e™eg�jC        ¦  «        �eA¦  «          e©eg�jD        ¦  «        �ZD e©eg�j/        ¦  «        �Z/ �e"eg�jE        ¦  «        �ZE e©eg�jF        ¦  «          e©eg�jG        �dX�¬V¦  «        �ZG e©egj»        ¦  «          e©eg�jH        ej‹        �¬K¦  «           e™eg�jI        ¦  «        �eD¦  «          e©eg�jJ        ej‹        �¬K¦  «          e©eg�jK        ej‹        �¬K¦  «          e©eg�jL        ej‹        �¬K¦  «          e©eg�jM        ej‹        �¬K¦  «        �ZM e©eg�jN        ej‹        �¬K¦  «          e©eg�jO        ej‹        �¬K¦  «          �e"eg�jP        ¦  «          �e"eg�jQ        ¦  «          �e"eg�jR        ¦  «          �e"eg�jS        ¦  «          �e"eg�jT        ¦  «          �e"eg�jU        ¦  «          �e"eg�jV        ¦  «          �e"eg�jW        ¦  «          �e"eg�jX        ¦  «          �e"eg�jY        ¦  «          �e"eg�jZ        ¦  «          �e"eg�j[        ¦  «          �e"eg�j\        ¦  «          �e"eg�j]        ¦  «          �e"eg�j^        ¦  «          �e"eg�j_        ¦  «         d�dY�l`�ma�Za�mb�Zb �dZ„ �Zc�ebD ][�Zd �eceg�ed¦  «        D ]\  �Ze�Zf�Zg e©�ee�ed�ef�eg�¬[¦  «         Œ �ecei�ed¦  «        D ]\  �Ze�Zf�Zg e©�ee�ed�ef�eg�¬[¦  «         ŒŒ\ e«eg�jh        j        �edD�¬T¦  «        �Zi e«eg�jh        �jñ        �edD�¬T¦  «        �Zj e«eg�jh        jç        �edD�¬T¦  «          e«eg�jk        j        �eü¦  «        �Zl e«eg�jk        jç        �eü¦  «          e«eg�jk        �jñ        �eü¦  «        �Zm e«eg�jn        j        �e,¦  «          e«eg�jn        �jñ        �e,¦  «          e«eg�jo        j¾        �eD¦  «          e«eg�jp        j¾        �e/¦  «          e«eg�jq        �jñ        �eî¦  «          e«eg�jq        j        �eî¦  «          e«eg�jq        �jr        �eî¦  «          e«eg�js        j        �eú¦  «        �Zt e«eg�js        jç        �eú¦  «          e«eg�js        �jñ        �eú¦  «        �Zu e«eg�jv        �e*¦  «          e«eg�jw        �e$¦  «          e«eg�jx        j        �e@¦  «          e«eg�jx        �jñ        �e@¦  «          e«eg�jy        j        �eA¦  «          e«eg�jy        �jñ        �eA¦  «          e«eg�jz        j        �e@¦  «          e«eg�jz        �jñ        �e@¦  «          e«eg�j{        j        �eA¦  «          e«eg�j{        �jñ        �eA¦  «          e«eg�j|        �eE¦  «          e«eg�j}        �eG¦  «          e«eg�j~        �e‚¦  «         �d\„ �Z �eeg�j€        j        eg�jh        j        �ei¦  «          �eeg�j€        �jñ        eg�jh        �jñ        �ej¦  «          �eeg�j�        j        eg�jk        j        �el¦  «          �eeg�j�        �jñ        eg�jk        �jñ        �em¦  «          �eeg�j‚        j        eg�js        j        �et¦  «          �eeg�j‚        �jñ        eg�js        �jñ        �eu¦  «         �d]„ �Zƒ �eƒeg�j„        �e¦  «          �eƒeg�j…        �e0¦  «          �eƒeg�j†        �e1¦  «          �eƒeg�j‡        �e2¦  «          �eƒeg�jˆ        �e3¦  «          �eƒeg�j‰        �e4¦  «          �eƒeg�jŠ        �e5¦  «          �eƒeg�j‹        �eü¦  «          �eƒeg�jŒ        jç        �eú¦  «          �eƒeg�jŒ        �j�        �eû¦  «          �eƒeg�jŽ        �e<¦  «          �eƒeg�j�        �e=¦  «          �eƒeg�j�        �e>¦  «          �eƒeg�j‘        �e?¦  «          �eƒeg�j’        �e,¦  «          �eƒeg�j“        �e(¦  «          �eƒeg�j”        �e)¦  «           e™eg�j•        ¦  «        �e0¦  «           e™eg�j–        ¦  «        �e1¦  «           e™eg�j—        ¦  «        �e3¦  «           e™eg�j˜        ¦  «        �e4¦  «           e™eg�j™        ¦  «        �e5¦  «          �eƒeg�jš        eg�j•        ¦  «          �eƒeg�j›        eg�j–        ¦  «          �eƒeg�jœ        eg�j—        ¦  «          �eƒeg�j�        eg�j˜        ¦  «          �eƒeg�jž        eg�j™        ¦  «          e™eg�jŸ        ¦  «        �dz�d^„¦   «         �ZŸ e™eg�j         jŽ        ¦  «        �d_„ ¦   «         �Z  e™eg�j¡        jŽ        ¦  «        �d`„ ¦   «         �Z¡ e™eg�j¢        ¦  «        �da„ ¦   «         �Z¢ e/�j£        ¦   «         D ]&\  �Z¤�Z¥  e™ e0�e¤¦  «        ¦  «        �e¥¦  «         Œ' e™e�j¦        ¦  «        �db„ ¦   «         �Z¦ e™egjö        ¦  «        �dc„ ¦   «         �Z§ e™ejY        �j¨        �j©        ¦  «        �dd„ ¦   «         �Zª e™ejY        �j«        �j¬        ¦  «        �de„ ¦   «         �Z¬ e™ejY        jg        �j­        �j®        ¦  «        �df„ ¦   «         �Z¯ e´ejY        �j°        �dg¦  «        r, e™ejY        �j°        �j÷        j¾        ¦  «        �dh„ ¦   «         �Z± e™ejY        jg        �j²        ¦  «        dd´œ�di„¦   «         �Z²d �dj�l³�m´�Z´  eí�e´¦  «          e™e!¦  «        �dk„ ¦   «         �Zµ e™ejY        �j¶        �j·        ¦  «        �dl„ ¦   «         �Z· e™ejY        �j¶        �j¸        ¦  «        �dm„ ¦   «         �Z¸ e™ejY        �j¶        �j¹        d¬;¦  «        �dne<�jº        �doe`f�dp„¦   «         �Z¹ e™ed¬;¦  «        �dqe<�jº        d¹eŽf�dr„¦   «         �Z» e™ejY        ji        �j¼        j¾        ¦  «        �ds„ ¦   «         �Z¼ e™ejY        �j¶        �j½        d¬;¦  «        �dt„ ¦   «         �Z½d�du�l¾�m¿�Z¿  �e¿¦   «          d�dvl9�mÀ�ZÀ  e8�eÀ¦  «         d�dwl9�mÁ�ZÁ  �eÁ�jÂ        ¦   «           �eÁ�jÃ        ¦   «          d�dxl9�mÄ�ZÄ  �eÄ�jÅ        ¦   «          d�dyl9�mÆ�ZÆ  �eÆ�jÇ        ¦   «          dS (Ž  é    N)Údefaultdict)	ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚSetÚTupleÚUnion)Úpatch)Úassociative_scan_op)Útriton_kernel_wrapper_mutation)Úcanonicalize_dimÚcanonicalize_dimsÚcheckÚdtype_to_typeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚget_computation_dtypeÚis_boolean_dtypeÚis_float_dtypeÚis_integer_dtypeÚNumber)Úmagic_methodsÚmethod_to_operator)ÚCeilDivÚFloorDivÚIdentityÚ
IntTrueDivÚModularIndexingé   )Úimport_submoduleé   )ÚconfigÚinductor_primsÚirÚtest_operators)ÚdecompositionsÚget_decompositions)Ú	DtypeViewÚ
ExpandViewÚIndexingConstantÚIRNodeÚ	is_tritonÚops_wrapperÚPermuteViewÚ	PointwiseÚ	ReductionÚSqueezeViewÚ	TensorBoxÚvalidate_irÚView)
ÚceildivÚdecode_deviceÚ
is_dynamicÚis_gpuÚis_pointwise_useÚ,needs_fallback_due_to_atomic_add_limitationsÚpad_listlikeÚ#register_op_dtype_propagation_rulesÚsympy_productÚuse_scatter_fallback)ÚopsÚVztorchvision::roi_alignzaten::index_add.Ú	loweringsÚ_maybe_layout_constraintsÚ	fallbacksÚneeds_realized_inputsÚforeach_opsÚinplace_foreach_opsÚinplaceable_foreach_opsÚfnÚreturnc                 óÚ   ‡ — t          ‰ t          j        j        ¦  «        sdS ‰ t          v rt          ‰          S ‰ t
          v rdt          ‰ <   dS ˆ fd„}t          ‰ ¦  «        } ||¦  «        S )zHGet layout constraints. Returns None if there are no layout constraints.Nc                 óØ   •— | t           j        j        j        u rt          t
          ‰<   t
          ‰         S | t           j        j        j        u rd t
          ‰<   d S t          d| › �¦  «        ‚)NzUnknown layout constraint tag: )ÚtorchÚ_CÚTagÚneeds_fixed_stride_orderÚconstrain_to_fx_stridesrE   Úflexible_layoutÚAssertionError)ÚtagrK   s    €úIC:\Projects\Historical\venv\Lib\site-packages\torch/_inductor/lowering.pyÚhandle_layout_constraint_tagz>maybe_layout_constraints.<locals>.handle_layout_constraint_tags   sd   ø€ Ø•%”(”,Ô7Ð7Ð7Ý,CÕ% bÑ)Ý,¨RÔ0Ð0Ø•E”H”LÔ0Ð0Ð0Ø,0Õ% bÑ)Ø�4å Ð!HÀ3Ð!HÐ!HÑIÔIÐIó    )Ú
isinstancerO   Ú_opsÚ
OpOverloadrE   rD   Úget_layout_constraint_tag)rK   rX   rV   s   `  rW   Úmaybe_layout_constraintsr^   f   s�   ø€ å�b�%œ*Ô/Ñ0Ô0ð àˆtØ	Õ&Ð&Ð&Ý(¨Ô,Ð,à	�Y€€Ø(,Õ! "Ñ%ØˆtðJð Jð Jð Jð Jõ $ BÑ
'Ô
'€CØ'Ð'¨Ñ,Ô,Ð,rY   c                 óD  — t           j        j        j        t           j        j        j        g}|D ]}|| j        v r|c S Œt           j        j                             | ¦  «        rt           j        j        j        S t          t           j        j        t          j        ¦  «        S ©N)rO   rP   rQ   rR   rT   ÚtagsÚ_libraryÚutilsÚ
is_builtinÚgetattrr%   Ú#custom_op_default_layout_constraint)rK   Útags_by_priorityrV   s      rW   r]   r]   �   s‡   € åŒŒÔ-ÝŒŒÔ$ðÐð  ð ð ˆØ�"”'ˆ>ˆ>ØˆJˆJˆJð å„~Ô×&Ò& rÑ*Ô*ð ,ÝŒxŒ|Ô+Ð+Ý•5”8”<¥Ô!KÑLÔLÐLrY   c                 ó.   — | st          d|› �¦  «        ‚d S )Nzinductor does not support ©ÚNotImplementedError)ÚcondÚmsgs     rW   Ú
assert_nyirm   Ž   s.   € Øð FÝ!Ð"D¸sÐ"DÐ"DÑEÔEÐEðFð FrY   c                 óJ  ‡ — t          ‰ t          t          t          f¦  «        rd„ ‰ D ¦   «         S t                               ‰ ¦  «         t          ‰ t          j        j        ¦  «        r:t           	                    ˆ fd„‰  
                    ¦   «         D ¦   «         ¦  «         d S d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úadd_needs_realized_inputs©Ú.0Úxs     rW   ú
<listcomp>z-add_needs_realized_inputs.<locals>.<listcomp>•   s!   € Ð9Ð9Ð9°Õ)¨!Ñ,Ô,Ð9Ð9Ð9rY   c              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r`   )re   )rs   ÚoverloadrK   s     €rW   ú	<genexpr>z,add_needs_realized_inputs.<locals>.<genexpr>˜   s>   øè è € ð %
ð %
Ø&.�G�B˜Ñ!Ô!ð%
ð %
ð %
ð %
ð %
ð %
rY   )rZ   ÚlistÚtupleÚsetrG   ÚaddrO   r[   ÚOpOverloadPacketÚupdateÚ	overloads)rK   s   `rW   rq   rq   “   sµ   ø€ Ý�"•t�U¥CÐ(Ñ)Ô)ð :Ø9Ð9°bÐ9Ñ9Ô9Ð9Ý×Ò˜bÑ!Ô!Ð!Ý�"•e”jÔ1Ñ2Ô2ð 
Ý×$Ò$ð %
ð %
ð %
ð %
Ø24·,²,±.´.ð%
ñ %
ô %
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
rY   c                 óº   — t          | t          j        j        ¦  «        r1|                      ¦   «         D ]}|t
          t          | |¦  «        <   Œd S |t
          | <   d S r`   )rZ   rO   r[   r}   r   rE   re   )rK   Ú
constraintrw   s      rW   Úadd_layout_constraintr‚   �   si   € Ý�"•e”jÔ1Ñ2Ô2ð 3ØŸš™œð 	Jð 	JˆHØ?IÕ%¥g¨b°(Ñ&;Ô&;Ñ<Ð<ð	Jð 	Jð )3Õ! "Ñ%Ð%Ð%rY   )r   r$   r"   é   é   é   é   é   é   é	   é
   é   é   Údtypec                 ó|   — t          | t          ¦  «        s| S | t          v sJ d| › d�¦   «         ‚t          |          } | S )Nzid z missing from DTYPE_ID_LOOKUP)rZ   ÚintÚDTYPE_ID_LOOKUP©r�   s    rW   Údecode_dtyper’   Ð   sM   € Ý�e�SÑ!Ô!ð ØˆØ•OÐ#Ð#Ð#Ð%O¨5Ð%OÐ%OÐ%OÑ#Ô#Ð#Ý˜EÔ"€EØ€LrY   c                 ó   — t          | t          ¦  «        rBt          |                      ¦   «         ¦  «        p t	          |                      ¦   «         ¦  «        S t          | t
          j        ¦  «        r	| j        du S t          | t          ¦  «        S )NT)	rZ   r5   r   Ú	get_dtyper   ÚsympyÚExprÚ
is_integerr�   ©rt   s    rW   Úis_integer_typer™   Ø   sq   € Ý�!•YÑÔð "Ý §¢¡¤Ñ.Ô.ÐQÕ2BÀ1Ç;Â;Á=Ä=Ñ2QÔ2QÐQÝ	�A•u”zÑ	"Ô	"ð "ØŒ|˜tÐ#Ð#å˜!�SÑ!Ô!Ð!rY   c                 ó˜   — t          | t          ¦  «        r!t          |                      ¦   «         ¦  «        S t          | t          ¦  «        S r`   )rZ   r5   r   r”   Úboolr˜   s    rW   Úis_boolean_typerœ   á   s:   € Ý�!•YÑÔð #Ý §¢¡¤Ñ.Ô.Ð.å˜!�TÑ"Ô"Ð"rY   Útype_promotion_kindc                 óH   ‡— d„ Šˆfd„|D ¦   «         }t          |d| iŽ\  }}|S )Nc                 óâ   — t          | t          t          j        f¦  «        r| S t	          |                      ¦   «         ¦  «        }t          j        dg|z  |                      ¦   «         ¬¦  «        S )Nr$   r‘   )	rZ   r   r•   ÚBasicÚlenÚget_sizerO   Úzerosr”   )ÚinpÚdims     rW   Úconstruct_inputz+get_promoted_dtype.<locals>.construct_inputé   sY   € Ý�c�F¥E¤KÐ0Ñ1Ô1ð 	AØˆJå�c—l’l‘n”nÑ%Ô%ˆCå”; ˜s S™y°·²±´Ð@Ñ@Ô@Ð@rY   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rp   rp   )rs   Úargr¦   s     €rW   ru   z&get_promoted_dtype.<locals>.<listcomp>ñ   s#   ø€ Ð1Ð1Ð1 SˆOˆO˜CÑ Ô Ð1Ð1Ð1rY   r�   )r   )r�   ÚargsÚinpsÚ_r�   r¦   s        @rW   Úget_promoted_dtyper¬   è   sL   ø€ ðAð Að Að 2Ð1Ð1Ð1¨DÐ1Ñ1Ô1€DÝ! 4ÐQÐ=PÐQÐQ�H€A€uØ€LrY   c                 óP  — t          | t          t          f¦  «        s| g} nt          | ¦  «        } t          | ¦  «        D ]f}t          |t          j        j        ¦  «        rE|                     ¦   «         D ]0}t          ||¦  «        }|t          vr|  	                    |¦  «         Œ1Œg| S r`   )
rZ   ry   rz   rO   r[   r}   r   re   rD   Úappend)Úaten_fnrK   rw   Úother_fns       rW   Úget_overloadsr±   ö   s¢   € Ý�g¥¥e˜}Ñ-Ô-ð  Ø�)ˆˆå�w‘-”-ˆå�7‰mŒmð -ð -ˆÝ�b�%œ*Ô5Ñ6Ô6ð 	-ØŸLšL™NœNð -ð -�Ý" 2 xÑ0Ô0�Ø¥9Ð,Ð,Ø—N’N 8Ñ,Ô,Ð,øøà€NrY   c                 óÀ   — t          | t          j        j        ¦  «        r	|| j        v S t          | t          j        j        ¦  «        r||                      ¦   «         v S dS ©NF)rZ   rO   r[   r}   Ú_qualified_op_namer\   Úname)ÚopÚ	namespaces     rW   Úin_namespacer¸     sV   € Ý�"•e”jÔ1Ñ2Ô2ð &Ø˜BÔ1Ð1Ð1Ý	�B�œ
Ô-Ñ	.Ô	.ð &Ø˜BŸGšG™IœIÐ%Ð%Øˆ5rY   r©   ÚkwargsÚ	broadcastÚconvert_input_to_boolc           	      óè  ‡ ‡‡‡‡— d„ t          ‰ ¦  «        D ¦   «         }d„ ‰                     ¦   «         D ¦   «         }|s|s‰ ‰fS |s|r¼|rt          j        ŠnId„ ‰ D ¦   «         }|                     d„ ‰                     ¦   «         D ¦   «         ¦  «         t          |d|iŽŠ|r‰ |d                  n‰|d                                       ¦   «         Šˆˆfd„Šˆfd„‰ D ¦   «         Š ˆfd	„‰                     ¦   «         D ¦   «         Š|�rht          t          t          j        ˆ fd
„|D ¦   «         ˆfd„|D ¦   «         ¦  «        ¦  «        Ž }t          |d                              ¦   «         ¦  «        }	t          ||d t          |¦  «        …         ¦  «        D ]
\  }
}|‰ |
<   Œt          ||t          |¦  «        d …         ¦  «        D ]
\  }}|‰|<   Œt          t          ‰ ¦  «        ¦  «        D ]@}
t!          ‰ |
         t"          j        ¦  «        rt'          j        ‰ |
         |	¦  «        ‰ |
<   ŒA‰D ]@}t!          ‰|         t"          j        ¦  «        rt'          j        ‰|         |	¦  «        ‰|<   ŒA‰ ‰fS )Nc                 óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rp   ©rZ   r5   ©rs   Úirt   s      rW   ru   z"transform_args.<locals>.<listcomp>  s+   € ÐNÐNÐN™$˜!˜QµZÀÅ9Ñ5MÔ5MÐN�AÐNÐNÐNrY   c                 óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rp   r¾   )rs   ÚkÚvs      rW   ru   z"transform_args.<locals>.<listcomp>  s+   € ÐOÐOÐO™D˜A˜qµjÀÅIÑ6NÔ6NÐO�aÐOÐOÐOrY   c                 ót   — g | ]5}t          |t          t          j        f¦  «        st	          |d ¦  «        ¯3|‘Œ6S r‘   )rZ   r   r•   r    Úhasattr©rs   Úas     rW   ru   z"transform_args.<locals>.<listcomp>   sT   € ð ð ð àÝ˜a¥&­%¬+Ð!6Ñ7Ô7ðõ <CÀ1ÀgÑ;NÔ;NðØðð ð rY   c              3   ó:   K  — | ]}t          |d ¦  «        ¯|V — ŒdS )r�   N)rÅ   rÆ   s     rW   rx   z!transform_args.<locals>.<genexpr>&  s1   è è € Ð!TÐ!T¨ÅÈÈ7Ñ@SÔ@SÐ!T !Ð!TÐ!TÐ!TÐ!TÐ!TÐ!TrY   r�   r   c                 ó¾   •— t          | t          ¦  «        rt          | ‰¦  «        S t          | t          j        ¦  «        rt          j        | j        ‰‰¬¦  «        S | S )N©Úvaluer�   Údevice)rZ   r5   Úto_dtyper'   ÚConstantrË   )r¨   rÌ   r�   s    €€rW   Úpromoteztransform_args.<locals>.promote0  sW   ø€ Ý˜#�yÑ)Ô)ð Ý  UÑ+Ô+Ð+Ý˜C¥¤Ñ-Ô-ð Ý”{¨¬¸%ÈÐOÑOÔOÐOà�
rY   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rp   rp   )rs   rÇ   rÏ   s     €rW   ru   z"transform_args.<locals>.<listcomp>8  s!   ø€ Ð)Ð)Ð)˜q��˜‘
”
Ð)Ð)Ð)rY   c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS rp   rp   )rs   rÂ   rÃ   rÏ   s      €rW   ú
<dictcomp>z"transform_args.<locals>.<dictcomp>9  s'   ø€ Ð;Ð;Ð;¡D A q�!�W�W˜Q‘Z”ZÐ;Ð;Ð;rY   c              3   ó(   •K  — | ]}‰|         V — Œd S r`   rp   ©rs   rÀ   r©   s     €rW   rx   z!transform_args.<locals>.<genexpr>?  s'   øè è € Ð3Ð3 �T˜!”WÐ3Ð3Ð3Ð3Ð3Ð3rY   c              3   ó(   •K  — | ]}‰|         V — Œd S r`   rp   )rs   rÂ   r¹   s     €rW   rx   z!transform_args.<locals>.<genexpr>@  s'   øè è € Ð7Ð7 1�V˜A”YÐ7Ð7Ð7Ð7Ð7Ð7rY   )Ú	enumerateÚitemsrO   r›   ÚextendÚvaluesr¬   Ú
get_deviceÚbroadcast_tensorsry   Ú	itertoolsÚchainr¢   Úzipr¡   ÚrangerZ   r'   rÎ   r,   Úcreate)r©   r¹   rº   r�   r»   Úargs_indicesÚkwargs_indicesÚpromoting_argsÚbroadcastedÚsizerÀ   rt   rÂ   rÌ   r�   rÏ   s   ``           @@@rW   Útransform_argsræ     sô  øøøøø€ ð OÐN¥)¨D¡/¤/ÐNÑNÔN€LØOÐO F§L¢L¡N¤NÐOÑOÔO€Nàð  ð Ø�Vˆ|Ðàð <Ð3ð <Ø ð 	Ý”JˆEˆEðð àðñ ô ˆNð ×!Ò!Ð!TÐ!T¨V¯]ª]©_¬_Ð!TÑ!TÔ!TÑTÔTÐTÝ&ØðØ5Hðð ˆEð
 &2ÐPˆD�˜a”Ô!Ð!°v¸nÈQÔ>OÔ7Pß
Š*‰,Œ,ð 	ð
	ð 	ð 	ð 	ð 	ð 	ð *Ð)Ð)Ð) DÐ)Ñ)Ô)ˆØ;Ð;Ð;Ð;¨F¯LªL©N¬NÐ;Ñ;Ô;ˆàñ ?Ý'ÝÝ”Ø3Ð3Ð3Ð3 lÐ3Ñ3Ô3Ø7Ð7Ð7Ð7¨Ð7Ñ7Ô7ñô ñô ð
ˆõ �K ”N×+Ò+Ñ-Ô-Ñ.Ô.ˆå˜ kÐ2EµC¸Ñ4EÔ4EÐ2EÔ&FÑGÔGð 	ð 	‰DˆAˆqØˆD�‰GˆGÝ˜¨µC¸Ñ4EÔ4EÐ4GÐ4GÔ(HÑIÔIð 	ð 	‰DˆAˆqØˆF�1‰IˆIå•s˜4‘y”yÑ!Ô!ð 	;ð 	;ˆAÝ˜$˜qœ'¥2¤;Ñ/Ô/ð ;Ý$Ô+¨D°¬G°TÑ:Ô:��Q‘øØð 	?ð 	?ˆAÝ˜& œ)¥R¤[Ñ1Ô1ð ?Ý&Ô-¨f°Q¬i¸Ñ>Ô>��q‘	øà�ˆ<ÐrY   c                 óþ   ‡— t          j        ‰¦  «        ˆfd„¦   «         }t          | ¦  «        }t                               |¦  «         t
                               t                               ||¦  «        ¦  «         |S )a¯  
    Add a foreach lowering to lowerings dict.

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    c                  ó`   •— t          | ¦  «        dk    sJ ‚ ‰| i |¤Ž}t          |¦  «         |S )Nr"   )r¡   r6   )r©   r¹   ÚoutÚ	decomp_fns      €rW   Úwrappedz+_register_foreach_lowering.<locals>.wrappeda  s=   ø€ å�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~Øˆi˜Ð( Ð(Ð(ˆÝ�CÑÔÐØˆ
rY   )Ú	functoolsÚwrapsr±   rH   r~   rD   ÚdictÚfromkeys)r¯   rê   rë   Úaten_fnss    `  rW   Ú_register_foreach_loweringrñ   U  s}   ø€ õ „_�YÑÔðð ð ð ñ  Ôðõ ˜WÑ%Ô%€HÝ×Ò�xÑ Ô Ð Ý×Ò•T—]’] 8¨WÑ5Ô5Ñ6Ô6Ð6Ø€NrY   c                 óÚ   ‡ ‡‡‡‡— t          j        ‰¦  «        ˆ ˆˆˆˆfd„¦   «         }t          ‰ ¦  «        Š t                               t
                               ‰ |¦  «        ¦  «         |S )a¦  
    Add a lowering to lowerings dict

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    c                  óà  •— t          | ¦  «        } t          |¦  «        }d}t          | ¦  «        dk    r9t          | d         t           t          f¦  «        rd}t          | d         ¦  «        } t          d„ ‰D ¦   «         ¦  «        s5t          d„ |                     ¦   «         D ¦   «         ¦  «        r
J d¦   «         ‚t          | |‰‰‰¦  «        \  } }|r| g}  ‰| i |¤Ž}t          |¦  «         |S )NFr$   r   Tc              3   óH   K  — | ]}|t           v pt          |d ¦  «        V — ŒdS )Ú_c10d_functionalN)rF   r¸   )rs   rK   s     rW   rx   z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>Š  sG   è è € ð 
ð 
ØJLˆR•9ˆ_ÐD¥¨RÐ1CÑ DÔ Dð
ð 
ð 
ð 
ð 
ð 
rY   c              3   ó"   K  — | ]
}|d k    V — ŒdS )ré   Nrp   rr   s     rW   rx   z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>Ž  s7   è è € ð ð Ø ��U’
ðð ð ð ð ð rY   zout= ops aren't yet supported)
ry   rî   r¡   rZ   rz   ÚallÚanyÚkeysræ   r6   )	r©   r¹   Úunpackedré   r¯   rº   r»   rê   r�   s	       €€€€€rW   rë   z#_register_lowering.<locals>.wrapped€  s.  ø€ å˜t™*œ*ˆÝ!% f¡¤ˆØˆåˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ4½°-Ñ@Ô@ˆ>ØˆHÝ˜˜Qœ‘=”=ˆDåð 
ð 
ØPWð
ñ 
ô 
ñ 
ô 
ð 	/õ ð ð Ø$*§K¢K¡M¤Mðñ ô ñ ô ð /ð /à.ñ/ô /ð õ &Ø�&˜)Ð%8Ð:Oñ
ô 
‰ˆˆfð ð 	Ø�6ˆDàˆi˜Ð( Ð(Ð(ˆÝ�CÑÔÐàˆ
rY   )rì   rí   r±   rD   r~   rî   rï   )r¯   rê   rº   r�   r»   rë   s   ````` rW   Ú_register_loweringrû   n  s�   øøøøø€ õ$ „_�YÑÔðð ð ð ð ð ð ð ñ  Ôðõ: ˜GÑ$Ô$€Gå×Ò•T—]’] 7¨GÑ4Ô4Ñ5Ô5Ð5Ø€NrY   Fc                 ó>   — t          j        t          | |||¬¦  «        S )z+
    Shim to support decorator syntax.
    ©rº   r�   r»   )rì   Úpartialrû   )r¯   rº   r�   r»   s       rW   Úregister_loweringrÿ   ¤  s-   € õ ÔÝØØØ/Ø3ðñ ô ð rY   c                 ó\  — g }t          j        t          | ¦  «        t          |¦  «        t          j        j        ¬¦  «        D �]M\  }}t          j        j        j	         
                    t          j        |d¦  «        d¬¦  «        r|                     |¦  «         ŒZt          j        j        j	         
                    t          j        |d¦  «        d¬¦  «        r|                     |¦  «         Œ®t          j        j                             ||¦  «         t          t          j        |¦  «        j        ¦  «        t          t          j        |¦  «        j        ¦  «        k     r|                     |¦  «         �Œ8|                     |¦  «         �ŒOt#          t          |¦  «        ¦  «        S )zŸ
    Broadcasting logic based on symbolic shapes.

    We give the shapes 0 and 1 concrete values, while all other shapes
    are symbolic sympy formulas.
    )Ú	fillvaluer$   T©Úsize_oblivious)rÜ   Úzip_longestÚreversedr•   ÚSÚOnerC   ÚgraphÚsizevarsÚ	shape_envÚevaluate_exprÚEqr®   Úguard_equalsr¡   ÚexpandÚfree_symbolsrz   )rÇ   ÚbÚoutputrt   Úys        rW   Úbroadcast_symbolic_shapesr  ¸  s`  € ð €FÝÔ%¥h¨q¡k¤kµ8¸A±;´;Í%Ì'Ì+ÐVÑVÔVð !ñ !‰ˆˆ1ÝŒ7ÔÔ%×3Ò3ÝŒH�Q˜‰NŒN¨4ð 4ñ 
ô 
ð 	!ð �MŠM˜!ÑÔÐÐÝŒWÔÔ'×5Ò5ÝŒH�Q˜‰NŒN¨4ð 6ñ 
ô 
ð 		!ð �MŠM˜!ÑÔÐÐåŒGÔ×)Ò)¨!¨QÑ/Ô/Ð/Ý•5”< ‘?”?Ô/Ñ0Ô0µ3µu´|ÀA±´Ô7SÑ3TÔ3TÒTÐTØ—’˜aÑ Ô Ð Ñ à—’˜aÑ Ô Ð Ñ Ý•˜&Ñ!Ô!Ñ"Ô"Ð"rY   c                 óÆ  ‡‡— |�|�
J d¦   «         ‚|€|€t           j        }t          d„ | D ¦   «         ¦  «        s| S t          d„ | D ¦   «         ¦  «        r!|pt	          | d|iŽŠˆfd„Šˆfd„| D ¦   «         S t          d„ | D ¦   «         ¦  «        }g }| D �]L}t          |t          t          f¦  «        r�| 	                    t          j        t          j        ||                     ¦   «         |                     ¦   «         ¬¦  «        t!          |                     ¦   «         ¦  «        ¦  «        ¦  «         Œ t          |t$          j        ¦  «        r}| 	                    t          j        t)          ||                     ¦   «         |                     ¦   «         ¬	¦  «        t!          |                     ¦   «         ¦  «        ¦  «        ¦  «         �Œ7| 	                    |¦  «         �ŒN|S )
NzEonly one of override_return_dtype or type_promotion_kind may be givenc              3   ód   K  — | ]+}t          |t          j        t          t          f¦  «        V — Œ,d S r`   )rZ   r•   r    r�   Úfloatrr   s     rW   rx   z$promote_constants.<locals>.<genexpr>Ú  s5   è è € ÐHÐH¸A�z˜!�eœk­3µÐ6Ñ7Ô7ÐHÐHÐHÐHÐHÐHrY   c              3   ód   K  — | ]+}t          |t          t          t          j        f¦  «        V — Œ,d S r`   )rZ   r�   r  r•   r    rr   s     rW   rx   z$promote_constants.<locals>.<genexpr>Ü  s5   è è € Ð
DÐ
D¸�:�a�#�u¥e¤kÐ2Ñ3Ô3Ð
DÐ
DÐ
DÐ
DÐ
DÐ
DrY   r�   c                 óÈ   •— t          | t          j        ¦  «        r$t          j        | ‰t          d ¦  «        ¬¦  «        S t          j        | ‰t          d ¦  «        ¬¦  «        S )N©Úindexr�   rÌ   rÊ   )rZ   r•   r    r'   r-   r9   rÎ   ©rt   r�   s    €rW   Ú
const_funcz%promote_constants.<locals>.const_funcá  sb   ø€ Ý˜!�Uœ[Ñ)Ô)ð UÝÔ*Ø 5µ¸tÑ1DÔ1Dðñ ô ð õ ”{¨°%ÅÈdÑ@SÔ@SÐTÑTÔTÐTrY   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rp   rp   )rs   rt   r  s     €rW   ru   z%promote_constants.<locals>.<listcomp>é  s!   ø€ Ð.Ð.Ð. !�
�
˜1‘”Ð.Ð.Ð.rY   c              3   óh   K  — | ]-}t          |t          t          t          j        f¦  «        ¯)|V — Œ.d S r`   )rZ   r5   r,   r'   rÎ   rr   s     rW   rx   z$promote_constants.<locals>.<genexpr>ê  s:   è è € ÐWÐW�A¥:¨aµ)½ZÍÌÐ1UÑ#VÔ#VÐWˆaÐWÐWÐWÐWÐWÐWrY   rÊ   r  )r   ÚDEFAULTrø   r÷   r¬   ÚnextrZ   r�   r  r®   r,   rà   r'   rÎ   r”   Úget_device_or_errorry   r¢   r•   r    r-   )ÚinputsÚoverride_return_dtyper�   Úexré   rt   r  r�   s         @@rW   Úpromote_constantsr%  Ò  s(  øø€ àÐ%Ð)<Ð)DÐ)DØNñ *EÔ)DÐDð Ð$Ð)<Ð)DÝ=ÔEÐåÐHÐHÀÐHÑHÔHÑHÔHð ØˆÝ
Ð
DÐ
D¸VÐ
DÑ
DÔ
DÑDÔDð /Ø%ð 
Õ);Øð*
Ø)<ð*
ð *
ˆð	Uð 	Uð 	Uð 	Uð 	Uð /Ð.Ð.Ð. vÐ.Ñ.Ô.Ð.Ý	ÐWÐW˜ÐWÑWÔWÑ	WÔ	W€BØ
€CØð ñ ˆÝ�a�#�u˜Ñ&Ô&ð 	Ø�JŠJÝÔ!Ý”KØ r§|¢|¡~¤~¸b×>TÒ>TÑ>VÔ>Vðñ ô õ ˜Ÿš™œÑ'Ô'ñ	ô ñô ð ð õ ˜�5œ;Ñ'Ô'ð 
	Ø�JŠJÝÔ!Ý$Ø r§|¢|¡~¤~¸b×>TÒ>TÑ>VÔ>Vðñ ô õ ˜Ÿš™œÑ'Ô'ñ	ô ñô ð ñ ð �JŠJ�q‰MŒMˆM‰Mà€JrY   c           	      ó@   ‡ ‡‡‡‡‡‡— d dœdt           fˆˆ ˆˆˆˆˆfd„}|S )N©Úalphar"  c           	      óö  •‡‡‡‡	‡
— ‰�"t          d„ |D ¦   «         ¦  «        r	‰rJ ‚ ‰|Ž S t          |‰¦  «        }‰r1| �.| dk    r(t          |¦  «        }t          |d         | ¦  «        |d<   n| �J ‚d„ |D ¦   «         Š	|d                              ¦   «         Š
‰p|d                              ¦   «         Št          t          |d                              ¦   «         ¦  «        j	        ¦  «        Š|dd …         D ]s}t          |t          j        ¦  «        sWt          ‰
¦  «        t          |                     ¦   «         ¦  «        k    s%J d‰› d‰
› d|                     ¦   «         › �¦   «         ‚Œtt          j        d uoxt!          t          j        dd ¦  «        d uo[t          j        j        j        d uoCt          j        j        j                             d	d
¦  «        o‰t(          j        t(          j        fv Šˆˆˆˆˆ	ˆˆˆ
fd„}‰s_d }|D ]>}t          |                     ¦   «         j	        ¦  «        r|                     ¦   «         } nŒ?|s|d                              ¦   «         }‰p|}t/          j        |‰|‰
¬¦  «        S )Nc              3   ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r`   ©rZ   r.   r/   ©rs   r¤   s     rW   rx   z0make_pointwise.<locals>.inner.<locals>.<genexpr>  sH   è è € ð /
ð /
Ø;>�J�s�FÑ#Ô#Ð6­	°#©¬ð/
ð /
ð /
ð /
ð /
ð /
rY   r$   éÿÿÿÿc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rp   ©Úmake_loaderrr   s     rW   ru   z1make_pointwise.<locals>.inner.<locals>.<listcomp>  s    € Ð3Ð3Ð3 q�1—=’=‘?”?Ð3Ð3Ð3rY   r   zndim mismatch ú Úcurrent_nodeÚlow_precision_pointwise_barrierFc                 ó
  •‡ — t          ‰ ¦  «        t          ‰¦  «        k    sJ d‰ › d‰› �¦   «         ‚‰t          j        k    r‰� ‰ˆ fd„‰	D ¦   «         Ž S ‰
r#‰r!‰t          j        k    r ‰
ˆ fd„‰	D ¦   «         Ž S g }‰	D ]P} |‰ ¦  «        }‰r,t	          j        |‰d¬¦  «        }t	          j        |‰¦  «        }|                     |¦  «         ŒQ ‰|Ž }‰r,t	          j        |‰d¬¦  «        }t	          j        |‰¦  «        S |S )Nzwrong ndim r1  c                 ó&   •— g | ]} |‰¦  «        ‘ŒS rp   rp   ©rs   Úloadr  s     €rW   ru   zCmake_pointwise.<locals>.inner.<locals>.inner_fn.<locals>.<listcomp>4  s!   ø€ Ð4UÐ4UÐ4UÀT°T°T¸%±[´[Ð4UÐ4UÐ4UrY   c                 ó&   •— g | ]} |‰¦  «        ‘ŒS rp   rp   r6  s     €rW   ru   zCmake_pointwise.<locals>.inner.<locals>.inner_fn.<locals>.<listcomp>:  s!   ø€ Ð5VÐ5VÐ5VÀd°d°d¸5±k´kÐ5VÐ5VÐ5VrY   F)Úuse_compute_types)r¡   rO   r›   Úfloat64rB   rÍ   r®   )r  Úinputs_loadedr7  ré   Údowncastr�   Úemulate_precision_castsrK   Úis_gpu_deviceÚloadersÚoverride_fn_when_gpu_float64Úoverride_fn_when_input_boolÚrangess   `    €€€€€€€€rW   Úinner_fnz/make_pointwise.<locals>.inner.<locals>.inner_fn1  s\  øø€ Ý�u‘:”:¥ V¡¤Ò,Ð,Ð,Ð.L¸EÐ.LÐ.LÀFÐ.LÐ.LÑ,Ô,Ð,Ø�œ
Ò"Ð"Ð'BÐ'NØ2Ð2Ð4UÐ4UÐ4UÐ4UÈWÐ4UÑ4UÔ4UÐVÐVà,ðà!ðð �Uœ]Ò*Ð*à3Ð3Ð5VÐ5VÐ5VÐ5VÈgÐ5VÑ5VÔ5VÐWÐWà "�Ø#ð .ð .�DØ˜$˜u™+œ+�CØ.ð <Ý#&¤<°°UÈeÐ#TÑ#TÔ#T˜Ý!œl¨8°UÑ;Ô;˜Ø!×(Ò(¨Ñ-Ô-Ð-Ð-à�b˜-Ð(�Ø*ð 9õ  #œ|¨C°È%ÐPÑPÔP�HÝœ<¨°%Ñ8Ô8Ð8Ø�
rY   ©rÌ   r�   rC  rB  )rø   r%  ry   Úmulr¢   r”   r;   r9   rÚ   ÚtyperZ   r'   ÚBaseConstantr¡   rC   r  re   r2  ÚmetaÚgetrO   Úbfloat16Úfloat16r2   rà   )r(  r"  ÚotherrC  rÌ   rÀ   r�   r=  r>  r?  rB  Úallow_alpharK   Úoverride_devicer@  rA  r#  Útriton_fallbacks         @@@@@€€€€€€€rW   Úinnerzmake_pointwise.<locals>.inner  sü  øøøøøø€ ØÐ&­3ð /
ð /
ØBHð/
ñ /
ô /
ñ ,
ô ,
Ð&ð #Ð"Ð"�?Ø"�? FÐ+Ð+å" 6Ð+@ÑAÔAˆØð 	!ØÐ  U¨a¢Z ZÝ˜f™œ�Ý  ¨¤¨UÑ3Ô3��r‘
øà�=�=�=Ø3Ð3¨FÐ3Ñ3Ô3ˆØ˜”×#Ò#Ñ%Ô%ˆØ%Ð>¨°¬×)<Ò)<Ñ)>Ô)>ˆÝ�}¨V°A¬Y×-AÒ-AÑ-CÔ-CÑDÔDÔIÑJÔJˆà˜A˜B˜B”Zð 	Að 	AˆEÝ˜e¥R¤_Ñ5Ô5ð A½¸V¹¼ÍØ—’Ñ Ô ñIô Iò :ð :ð :à@ Ð@Ð@ VÐ@Ð@¨e¯nªnÑ.>Ô.>Ð@Ð@ñ:ô :ð øõ ŒG˜4Ðð 9Ý�œ °Ñ6Ô6¸dÐBð9å”Ô$Ô)°Ð5ð9õ ”Ô$Ô)×-Ò-Ð.OÐQVÑWÔWð9ð �%œ.­%¬-Ð8Ð8ð 	 ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð6 ð 	0ØˆFØð ð �Ý˜!Ÿ,š,™.œ.Ô-Ñ.Ô.ð ØŸ\š\™^œ^�FØ�Eðð ð 0Ø œ×-Ò-Ñ/Ô/�à Ð* FˆåÔØØØØð	
ñ 
ô 
ð 	
rY   )r5   )rK   r#  rN  rA  r@  rM  rO  rP  s   ``````` rW   Úmake_pointwiserQ    sr   øøøøøøø€ ð )-ð N
ð N
ð N
•yð N
ð N
ð N
ð N
ð N
ð N
ð N
ð N
ð N
ð N
ð N
ð N
ð` €LrY   c                 óX   ‡ ‡— ddœdt           t           t                            fˆˆ fd„}|S )Nr$   r'  r"  c                 óB  •— d„ }t          t          j        j        j        ¦  «        dk    pt          j        j        j        t          v }t          j        j        j        D ]'}|j        D ]}|j        dk    r|j        t          v sd}ŒŒ(d }|D ]"}t          |t          t          f¦  «        r|} nŒ#|€
J d¦   «         ‚g }|D ]Z}t          |t          t          f¦  «        s'|                     |gt          |¦  «        z  ¦  «         ŒE|                     |¦  «         Œ[ |t          |Ž ¦  «        }	d gt          |¦  «        z  }
|	                     ¦   «         D ]±\  \  }}}g }|D ]ƒ\  }}‰r	 ‰|d| iŽ}n ‰|Ž }||
|<   t          j                             |t           j        ¦  «        r?|r=|r;|                     ¦   «          |                     |                     ¦   «         ¦  «         Œ„|rt          j                             |¦  «         Œ²t+          d„ |
D ¦   «         ¦  «        sJ ‚|
S )Nc                 óH  — t          t          ¦  «        }t          | ¦  «        D ]}\  }}t          |Ž  pt          j        }d }|D ]2}t          |t          ¦  «        r|j         	                    ¦   «         } nŒ3|€
J d¦   «         ‚|||f          
                    ||f¦  «         Œ~|S )Nz.foreach op should have at least one tensor arg)r   ry   rÖ   r:   r%   Ú#combo_kernel_foreach_dynamic_shapesrZ   r5   ÚdatarÚ   r®   )Ú	arg_pairsré   rÀ   r©   Úuse_foreachrÌ   Úts          rW   Ú
group_argsz9make_foreach_pointwise.<locals>.inner.<locals>.group_argse  sÊ   € Ý�dÑ#Ô#ˆCÝ$ YÑ/Ô/ð =ð =‘��4å" DÐ)Ð)ÐW­VÔ-Wð ð �Øð ð �AÝ! !¥YÑ/Ô/ð Ø!"¤×!2Ò!2Ñ!4Ô!4˜Ø˜ðð Ð&Ð&ØCñ 'Ô&Ð&à�V˜[Ð)Ô*×1Ò1°1°d°)Ñ<Ô<Ð<Ð<ØˆJrY   r   Úcall_functionTz1at least one input must be a list to a foreach opr(  c              3   ó   K  — | ]}|d uV — Œ	d S r`   rp   rr   s     rW   rx   z8make_foreach_pointwise.<locals>.inner.<locals>.<genexpr>«  s&   è è € Ð2Ð2 Q�1˜D�=Ð2Ð2Ð2Ð2Ð2Ð2rY   )r¡   rC   r  r2  ÚusersÚtargetrI   r¶   rH   rZ   ry   rz   r®   rÞ   r×   Úhas_featureÚBackendFeatureÚFOREACHÚrealizeÚget_operation_nameÚregister_operation_listr÷   )r(  r"  rZ  Úrealize_outputsÚnodeÚuserÚa_list_inputÚinputÚbroadcast_inputsÚgroupsÚoutputsrÌ   rX  ÚgroupÚoperation_listÚ
output_indr©   r  rM  Úpw_fns                     €€rW   rP  z%make_foreach_pointwise.<locals>.innerb  s£  ø€ ð	ð 	ð 	õ$ •”Ô$Ô*Ñ+Ô+¨qÒ0ð BÝŒwÔ#Ô*Õ.AÐAð 	õ ”GÔ(Ô.ð 	+ð 	+ˆDØœ
ð +ð +�Øœ ?Ò2Ð2¸¼Å{Ð8RÐ8RØ&*�Oøð+ð ˆØð 	ð 	ˆEÝ˜%¥$­ Ñ/Ô/ð Ø$�Ø�ðð Ð$Ð$Ø>ñ %Ô$Ð$ð ÐØð 	/ð 	/ˆEÝ˜e¥d­E ]Ñ3Ô3ð /Ø ×'Ò'¨¨µ#°lÑ2CÔ2CÑ(CÑDÔDÐDÐDà ×'Ò'¨Ñ.Ô.Ð.Ð.à��CÐ!1Ð2Ñ3Ô3ˆà�&�3˜|Ñ,Ô,Ñ,ˆØ,2¯LªL©N¬Nð 	@ð 	@Ñ(Ñ!ˆV�[ 5Ø(*ˆNð ðGð Gñ ØØàð *Ø"˜U DÐ6°Ð6Ð6�F�Fà"˜U D˜\�Fà&,�˜
Ñ#õ ”G×'Ò'¨µÔ0FÑGÔGðGà#ðGð (ðGð
 —N’NÑ$Ô$Ð$Ø"×)Ò)¨&×*CÒ*CÑ*EÔ*EÑFÔFÐFøàð @Ý”×/Ò/°Ñ?Ô?Ð?øåÐ2Ð2¨'Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2ØˆrY   )r   r5   )rp  rM  rP  s   `` rW   Úmake_foreach_pointwiserq  a  sV   øø€ Ø45ð Jð Jð J•t�D¥œOÔ,ð Jð Jð Jð Jð Jð Jð JðX €LrY   rt   c                 ó    ‡‡— |                       ¦   «         Š‰‰k    r|rt          | ¦  «        n| S ˆˆfd„} t          |‰¬¦  «        | ¦  «        S )Nc                 ó2   •— t          j        | ‰‰¬¦  «        S )N)Ú	src_dtype)rB   rÍ   )rt   r�   rt  s    €€rW   Ú	_to_dtypezto_dtype.<locals>._to_dtype¶  s   ø€ ÝŒ|˜A˜u°	Ð:Ñ:Ô:Ð:rY   ©r#  )r”   ÚclonerQ  )rt   r�   Úcopyru  rt  s    `  @rW   rÍ   rÍ   ±  so   øø€ Ø—’‘”€IØ�EÒÐØÐ&�u�Q‰xŒxˆx QÐ&ð;ð ;ð ;ð ;ð ;ð ;ð B�>˜)¸5ÐAÑAÔAÀ!ÑDÔDÐDrY   ©r�   c                 óH  — |j         s|                      ¦   «         j         rq|                      ¦   «         r3t          | |¬¦  «        }t          j                             || ¦  «         |S  t          t          j	        j
        d¬¦  «        | |¦  «        S t          | |d¬¦  «        S )Nr‘   F©Úadd_to_fallback_setT©rx  )Ú
is_complexr”   r¢   Ú
empty_liker'   ÚInplaceCopyFallbackrà   Úfallback_handlerÚprimsÚconvert_element_typeÚdefaultrÍ   )rt   r�   Údsts      rW   Ú_convert_element_typer†  ¼  s®   € àÔð 
˜1Ÿ;š;™=œ=Ô3ð 
Ø�:Š:‰<Œ<ð 		õ ˜Q eÐ,Ñ,Ô,ˆCÝÔ"×)Ò)¨#¨qÑ1Ô1Ð1ØˆJðÕ#ÝÔ*Ô2Èðñ ô à�ñô ð õ �A�u 4Ð(Ñ(Ô(Ð(rY   r}  c                ó.  — |                       ¦   «         }||k    r|rt          | ¦  «        n| S d„ } ||¦  «        } ||¦  «        }||k    r( t          t          j        j        ¦  «        | |¦  «        S t          t          j        | |¦  «        ¦  «        S )Nc                 ót   — | j         rt          j        | ¦  «        j        S t          j        | ¦  «        j        S r`   )Úis_floating_pointrO   ÚfinfoÚbitsÚiinfor‘   s    rW   Ú_get_primitive_bitwidthz1to_dtype_bitcast.<locals>._get_primitive_bitwidthÑ  s3   € ØÔ"ð 	+Ý”;˜uÑ%Ô%Ô*Ð*å”;˜uÑ%Ô%Ô*Ð*rY   )	r”   rw  r�  ÚatenÚviewr�   r5   r+   rà   )rt   r�   rx  Úx_dtyper�  Úsrc_bitsÚdst_bitss          rW   Úto_dtype_bitcastr“  Ì  s¥   € Ø�kŠk‰mŒm€GØ�%ÒÐØÐ&�u�Q‰xŒxˆx QÐ&ð+ð +ð +ð 'Ð& wÑ/Ô/€HØ&Ð& uÑ-Ô-€HØ�8ÒÐà0Õ¥¤	¤Ñ0Ô0°°EÑ:Ô:Ð:å�Ô)¨!¨UÑ3Ô3Ñ4Ô4Ð4rY   c                 óú   — |j         s|                      ¦   «         j         rLt          j        t          j                             t          j        j        j	        j
        | |¦  «        ¦  «        S t          | |¦  «        S r`   )r~  r”   r5   rà   r'   ÚComplexViewrO   rB   rŽ  r�  r�   r“  r  s     rW   Ú_view_dtyper–  à  sg   € àÔð 
˜1Ÿ;š;™=œ=Ô3ð 
ÝÔÝŒN×!Ò!¥%¤)¤.Ô"5Ô";¸QÀÑFÔFñ
ô 
ð 	
õ ˜A˜uÑ%Ô%Ð%rY   ©rx  Únon_blockingrÌ   c                óÜ   — t          |¦  «        }|                      ¦   «         |k    r|rt          | ¦  «        n| S t          j        t
          j                             | ||¦  «        ¦  «        S r`   )r9   rÚ   rw  r5   rà   r'   Ú
DeviceCopy)rt   rÌ   rx  r˜  s       rW   Ú	to_devicer›  é  s\   € Ý˜6Ñ"Ô"€FØ‡|‚|�~„~˜ÒÐØÐ&�u�Q‰xŒxˆx QÐ&ÝÔ�BœM×0Ò0°°F¸LÑIÔIÑJÔJÐJrY   c                 ó(   — t          | |d|¬¦  «        S )NTr—  )r›  )rt   rÌ   r˜  s      rW   Ú_device_putr�  ð  s   € å�Q˜ T¸ÐEÑEÔEÐErY   Tc
                 óº  — |p| j         }t          |¦  «        }
|r&t          d|z   ¦  «        }t          d|z   ||¦  «         t          |||¦  «         |�t          |¦  «        }t          |
|||r|nd||	¬¦  «        }
 t	          | |||¬¦  «        |
¦  «        }
t          t          |¦  «        r. t	          t          t          |¦  «        d|¬¦  «        |
¦  «         |
S )z3A pointwise function that maps ops.{name} to inputsÚ
libdevice_N)r#  rA  r@  rM  rO  rý   )r�   r»   )Ú__name__r0   r?   rQ  rÿ   rÅ   r‚  re   )r¯   rµ   rº   r�   r»   r#  rA  rM  Úuse_libdevice_for_f64rO  rK   Úfn_libdevices               rW   Úregister_pointwiser£  õ  sI  € ð Ð#�7Ô#€DÝ	�TÑ	Ô	€BØð 
Ý" <°$Ñ#6Ñ7Ô7ˆÝ+Ø˜4ÑÐ!4Ð6Kñ	
ô 	
ð 	
õ (ØÐ!Ð#8ñô ð ð #Ð.Ý&1Ð2MÑ&NÔ&NÐ#å	Ø
Ø3Ø$?Ø5JÐ%T \ \ÐPTØØ'ð
ñ 
ô 
€Bð
Õ	ØØØ/Ø3ð	
ñ 
ô 
ð
 	ñ

ô 

€Bõ �u�dÑÔð ð	
ÕÝ•E˜4Ñ Ô Ø $Ø"7ð	
ñ 	
ô 	
ð ñ		ô 	ð 	ð
 €IrY   c                  óf  ‡‡— d} t          d¦  «        Šˆfd„}ˆfd„}t          |¦  «        t          |t          j        ¬¦  «        gŠˆfd„} t	          t
          j        ¦  «        |¦  «        }t          t          | ¦  «        r- t	          t          t          | ¦  «        d¬¦  «        |¦  «         |S )z2A pointwise function that maps ops.frexp to inputsÚfrexpc                  ó    •—  ‰| i |¤Žd         S ©Nr   rp   ©r©   r¹   r¥  s     €rW   Úfrexp0zregister_frexp.<locals>.frexp0.  ó   ø€ Øˆu�dÐ%˜fÐ%Ð% aÔ(Ð(rY   c                  ó    •—  ‰| i |¤Žd         S ©Nr$   rp   r¨  s     €rW   Úfrexp1zregister_frexp.<locals>.frexp11  rª  rY   rv  c                  ó<   •—  ‰d         | i |¤Ž ‰d         | i |¤ŽfS ©Nr   r$   rp   )r©   r¹   Úpw_fnss     €rW   rK   zregister_frexp.<locals>.fn9  s4   ø€ Øˆv�aŒy˜$Ð) &Ð)Ð)¨9¨6°!¬9°dÐ+E¸fÐ+EÐ+EÐEÐErY   Nry  )
r0   rQ  rO   Úint32rÿ   rŽ  r¥  rÅ   r‚  re   )rµ   r©  r­  rK   r¥  r°  s       @@rW   Úregister_frexpr²  )  s  øø€ à€DÝ˜Ñ Ô €Eð)ð )ð )ð )ð )ð)ð )ð )ð )ð )õ 	�vÑÔÝ�vµU´[ÐAÑAÔAð€Fð
Fð Fð Fð Fð Fð
Õ	ÝŒ
ñ
ô 
àñ

ô 

€Bõ �u�dÑÔð ð	
ÕÝ•E˜4Ñ Ô Ø $ð	
ñ 	
ô 	
ð ñ	ô 	ð 	ð €IrY   c                 óH   — t          ||¬¦  «        }t          | |¦  «        }|S )N©rM  )rq  rñ   )r¯   Úpointwise_lowering_fnrM  rK   s       rW   Úregister_foreach_pointwiser¶  K  s+   € õ
 
 Ð 5À;Ð	OÑ	OÔ	O€BÝ	# G¨RÑ	0Ô	0€BØ€IrY   )rº   r�   c           	      óf  ‡— d„ }t          |t          t          f¦  «        r t          |¦  «        |¦  «        }t          |t          t          f¦  «        r t          |¦  «        |¦  «        }| ||gŠt	          ‰d         ‰d         t
          j        ¬¦  «        }d„ t          ‰¦  «        D ¦   «         }t          |t          ˆfd„|D ¦   «         Ž ¦  «        D ]
\  }}|‰|<   Œt          t          ‰¦  «        ¦  «        D ]k}t          ‰|         t          j        ¦  «        rIt          j        ‰|         t!          ‰|d                                       ¦   «         ¦  «        ¦  «        ‰|<   Œl t%          ||¬¦  «        ‰d         t'          ‰d         |¦  «        t'          ‰d         |¦  «        ¦  «        S )	Nc                  ó   — t          j        | Ž S r`   )rB   Úwhere©r©   s    rW   rK   zwhere.<locals>.fnW  s   € ÝŒy˜$ÐÐrY   r$   r"   ry  c                 óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rp   r¾   r¿   s      rW   ru   zwhere.<locals>.<listcomp>c  s+   € ÐIÐIÐI‘T�Q˜µ
¸1½iÑ0HÔ0HÐIˆqÐIÐIÐIrY   c                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   rÔ   s     €rW   ru   zwhere.<locals>.<listcomp>d  s   ø€ Ð0JÐ0JÐ0J¸Q°°a´Ð0JÐ0JÐ0JrY   r   rv  )rZ   r  r�   Úconstant_liker¬   r   r  rÖ   rÞ   rÛ   rß   r¡   r'   rÎ   r,   rà   ry   r¢   rQ  rÍ   )	rk   rÇ   r  rK   r�   ÚindicesrÀ   rt   r©   s	           @rW   r¹  r¹  U  s·  ø€ ð ð  ð  õ �!•e�S�\Ñ"Ô"ð  Ø�M˜!ÑÔ˜QÑÔˆÝ�!•e�S�\Ñ"Ô"ð  Ø�M˜!ÑÔ˜QÑÔˆà�!�Qˆ<€DÝØˆQŒ��a”Õ.MÔ.Uðñ ô €Eð JÐI�Y t™_œ_ÐIÑIÔI€GÝ�GÕ.Ð0JÐ0JÐ0JÐ0JÀ'Ð0JÑ0JÔ0JÐKÑLÔLð ð ‰ˆˆ1ØˆˆQ‰ˆÝ•3�t‘9”9ÑÔð Tð TˆÝ�d˜1”g�rœ{Ñ+Ô+ð 	TÝ Ô'¨¨Q¬µ°d¸7À1¼:Ô6F×6OÒ6OÑ6QÔ6QÑ1RÔ1RÑSÔSˆD�‰GøØ:�>˜"°EÐ:Ñ:Ô:ØˆQŒ•˜$˜qœ' 5Ñ)Ô)­8°D¸´G¸UÑ+CÔ+Cñô ð rY   c                  óæ  — t          | ¦  «        dk    r1t          | d         t          t          f¦  «        rt	          | d         Ž S t          j        t          d„ | D ¦   «         g ¦  «        }g }| D ]‚}|                     ¦   «         }t          |¦  «        t          |¦  «        k    s't          d„ t          ||¦  «        D ¦   «         ¦  «        rt          ||¦  «        }|                     |¦  «         Œƒ|S )Nr$   r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rp   )r¢   rr   s     rW   ru   z%broadcast_tensors.<locals>.<listcomp>s  s    € Ð#AÐ#AÐ#A°Q A§J¢J¡L¤LÐ#AÐ#AÐ#ArY   c              3   ó  K  — | �]\  }}t           j        j        j                             t          j        |d ¦  «        d¬¦  «        o>t           j        j        j                             t          j        |d ¦  «        d¬¦  «         p|t           j        j        j                             t          j        |d ¦  «        d¬¦  «         o=t           j        j        j                             t          j        |d ¦  «        d¬¦  «        V — �ŒdS )r$   Tr  N)rC   r  r	  r
  r  r•   r  ©rs   rÇ   r  s      rW   rx   z$broadcast_tensors.<locals>.<genexpr>x  s  è è € ð ,
ñ ,
ñ& ��1õ! ”GÔ$Ô.×<Ò<Ýœ  A™œ°tð =ñ ô ð õ œGÔ,Ô6×DÒDÝœ  A™œ°tð Eñ ô ð ð	õ œÔ(Ô2×@Ò@Ýœ  A™œ°tð Añ ô ð ð õ œÔ(Ô2×@Ò@Ýœ  A™œ°tð Añ ô ð,
ð ,
ð ,
ñ ,
ð ,
ð ,
rY   )r¡   rZ   ry   rz   rÛ   rì   Úreducer  r¢   rø   rÞ   r  r®   )r"  r^  rl  rt   Úsizess        rW   rÛ   rÛ   n  sý   € å
ˆ6�{„{�aÒÐ�J v¨a¤yµ4½°-Ñ@Ô@ÐÝ  &¨¤)Ð,Ð,Ý(Ô/Ý!Ð#AÐ#A¸&Ð#AÑ#AÔ#AÀ2ñ ô  €Fð €GØð ð ˆØ—
’
‘”ˆÝˆu‰:Œ:�˜V™œÒ$Ð$­ð ,
ð ,
õ& ˜E 6Ñ*Ô*ð',
ñ ,
ô ,
ñ )
ô )
Ð$õ* �q˜&Ñ!Ô!ˆAØ�Š�qÑÔÐÐØ€NrY   c                 ó   — | S r`   rp   r˜   s    rW   ÚnoprÆ  ’  s   € à€HrY   Ú
lift_freshc                 ó2  — t          | t          ¦  «        sJ ‚|€&t          t          j        | j        ¦  «        ¦  «        S t          |t
          t          j        f¦  «        r$t          j	        j
                             |¦  «        nt          d„ |D ¦   «         ¦  «        }t          t          |                      ¦   «         ¦  «        |¦  «        }t!          t          |t          ¦  «        s|fn|¦  «        }g }t#          |                      ¦   «         ¦  «        D ]W\  }}||v r9t          j	        j
                             t          j        |dd¬¦  «        ¦  «        s|                     |¦  «         ŒX||                      ¦   «         k    rt+          | |¦  «        n| S )Nc              3   ó^   K  — | ](}t           j        j                             |¦  «        V — Œ)d S r`   ©rC   r  r	  Úevaluate_static_shape©rs   Úds     rW   rx   zsqueeze.<locals>.<genexpr>¤  s5   è è € ÐJÐJÀ•1”7Ô#×9Ò9¸!Ñ<Ô<ÐJÐJÐJÐJÐJÐJrY   r$   Tr  )rZ   r5   r4   rà   rV  r�   r•   r–   rC   r  r	  rË  rz   r   r¡   r¢   r{   rÖ   r  r  r®   r�  )rt   r¥   ÚdimsÚ	new_shaperÍ  Úss         rW   ÚsqueezerÑ  ›  sk  € å�a�Ñ#Ô#Ð#Ð#Ð#Ø
€{Ý�Ô+¨A¬FÑ3Ô3Ñ4Ô4Ð4õ �c�C¥¤Ð,Ñ-Ô-ð	K�ŒÔ×.Ò.¨sÑ3Ô3Ð3åÐJÐJÀcÐJÑJÔJÑJÔJð õ
 �C §
¢
¡¤Ñ-Ô-¨sÑ
3Ô
3€CÝ�Z¨­UÑ3Ô3Ð<�ˆvˆv¸Ñ=Ô=€Dà€IÝ˜!Ÿ*š*™,œ,Ñ'Ô'ð  ð  ‰ˆˆ1à�ˆIˆIÝ”Ô ×.Ò.­u¬x¸¸1ÈTÐ/RÑ/RÔ/RÑSÔSð ð ×Ò˜QÑÔÐøð "+¨a¯jªj©l¬lÒ!:Ð!:�4��9ÑÔÐÀÐArY   c                 ó<   — t          t          | |¦  «        ¦  «        S r`   )rw  rÑ  )rt   r¥   s     rW   Úsqueeze_copyrÓ  µ  s   € å•˜˜C‘”Ñ!Ô!Ð!rY   c                 óš   — t          | |¦  «        }t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        | _        | S r`   )rÑ  rZ   r5   rV  ©rt   r¥   Úvals      rW   Úsqueeze_r×  º  sI   € å
�!�S‰/Œ/€CÝ�a�Ñ#Ô#Ð#Ð#Ð#Ý�c�9Ñ%Ô%Ð%Ð%Ð%ØŒX€A„FØ€HrY   c                 ó¾   — t          | ¦  «        rt          | dt          j        ¬¦  «        S t	          d¦  «        } t          |t          j        ¬¦  «        | ¦  «        S )NFr‘   Úisinfrv  ©r™   Ú	full_likerO   r›   r0   rQ  ©rt   rK   s     rW   rÙ  rÙ  Ã  óU   € å�qÑÔð 5Ý˜˜E­¬Ð4Ñ4Ô4Ð4Ý	�WÑ	Ô	€BØ?�>˜"µE´JÐ?Ñ?Ô?ÀÑBÔBÐBrY   c                 ó¾   — t          | ¦  «        rt          | dt          j        ¬¦  «        S t	          d¦  «        } t          |t          j        ¬¦  «        | ¦  «        S )NFr‘   Úisnanrv  rÚ  rÜ  s     rW   rß  rß  Ë  rÝ  rY   c                 óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚceil©r™   rw  r0   rQ  rÜ  s     rW   rá  rá  Ó  sB   € å�qÑÔð Ý�Q‰xŒxˆÝ	�VÑ	Ô	€BØ�>˜"ÑÔ˜aÑ Ô Ð rY   c                 óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚfloorrâ  rÜ  s     rW   rä  rä  Û  óB   € å�qÑÔð Ý�Q‰xŒxˆÝ	�WÑ	Ô	€BØ�>˜"ÑÔ˜aÑ Ô Ð rY   c                 óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚroundrâ  rÜ  s     rW   rç  rç  ã  sB   € å�qÑÔð %Ý�Q‰xŒxˆå˜Ñ!Ô!ˆØ!�~˜bÑ!Ô! !Ñ$Ô$Ð$rY   c                 óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚtruncrâ  rÜ  s     rW   ré  ré  ì  rå  rY   c                 óT  — ddl m} t          | g¦  «        \  } t          | t          j        ¦  «        r"t          j        | t          |¦  «        ¦  «        S t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚t          |                      ¦   «         ¦  «        t          |¦  «        k    r| S  ||                      ¦   «         ¦  «        s›t          j        j                             t!          |                      ¦   «         ¦  «        ¦  «        }|dk    rR ||¦  «        sG|                      t          j        j                             t!          |¦  «        ¦  «        |z  ¦  «         t          t          j        | j        t          |¦  «        ¦  «        ¦  «        S )Nr   )Úfree_unbacked_symbols)Ú%torch.fx.experimental.symbolic_shapesrë  r%  rZ   r'   rG  r,   rà   rz   r5   ry   r¢   rC   r  r	  Ú	size_hintr@   Ú
mark_reuserV  )rt   rÄ  rë  Úx_size_products       rW   r  r  ô  sg  € àKÐKÐKÐKÐKÐKå˜a˜SÑ!Ô!�D€QÝ�!•R”_Ñ%Ô%ð 2ÝÔ  ¥E¨%¡L¤LÑ1Ô1Ð1Ý�a�Ñ#Ô#Ð#Ð#Ð#Ý�e�d¥E˜]Ñ+Ô+Ð+Ð+Ð+ÝˆQ�ZŠZ‰\Œ\ÑÔ�e E™lœlÒ*Ð*Øˆà Ð  §¢¡¤Ñ.Ô.ð 
ÝœÔ)×3Ò3µMÀ!Ç*Â*Á,Ä,Ñ4OÔ4OÑPÔPˆð
 ˜AÒÐÐ&;Ð&;¸EÑ&BÔ&BÐà�LŠLÝ”Ô ×*Ò*­=¸Ñ+?Ô+?Ñ@Ô@ÀNÑRñô ð õ •ZÔ& q¤v­u°U©|¬|Ñ<Ô<Ñ=Ô=Ð=rY   c                 ó®   — t          |¦  «        }|D ]}d||<   Œ| }t          |¦  «        D ]\  }}|dk    rt          ||¦  «        }Œt          ||¦  «        S ©Nr-  )ry   rÖ   Ú	unsqueezer  )rÇ   ÚshapeÚbroadcast_dimensionsrÐ  Úbroadcast_dimensionrÃ   Úidxrt   s           rW   Úbroadcast_in_dimr÷    sr   € åˆU‰Œ€AØ3ð $ð $ÐØ!#ˆÐ
ÑÐà	€AÝ˜A‘,”,ð "ð "‰ˆˆQØ�Š7ˆ7Ý˜!˜SÑ!Ô!ˆAøå�!�UÑÔÐrY   c                 óF   — t          | |                     ¦   «         ¦  «        S r`   )r  r¢   )rt   r  s     rW   Ú	expand_asrù    s   € å�!�Q—Z’Z‘\”\Ñ"Ô"Ð"rY   c                 ó  ‡‡‡— t          |                      ¦   «         ¦  «        Št          ‰¦  «        t          ‰¦  «        k    rRt          j        j        gt          ‰¦  «        t          ‰¦  «        z
  z  ‰z   Št          | t          ‰¦  «        ¦  «        } t          ‰¦  «        t          |                      ¦   «         ¦  «        k    sJ ‚t          |                      ¦   «         ¦  «        }d}t          t          ‰¦  «        ¦  «        D ]$}‰|         dk    rd}||         ‰|         z  ||<   Œ%|r6t          ||  	                    ¦   «         |  
                    ¦   «         ¬¦  «        S t          d„ t          ‰‰¦  «        D ¦   «         ¦  «        rt          t          | |¦  «        ¦  «        S ˆˆˆfd„}t          j        j                             t'          ‰¦  «        ¦  «        }|dk    rG|                      t          j        j                             t'          |¦  «        ¦  «        |z  ¦  «         |                      ¦   «         Št-          j        |  
                    ¦   «         |  	                    ¦   «         |t          |¦  «        ¬¦  «        S )NFr   T©r�   rÌ   c              3   ó4   K  — | ]\  }}|d k    p|d k    V — ŒdS ©r$   Nrp   rÂ  s      rW   rx   zrepeat.<locals>.<genexpr>3  s3   è è € Ð
AÐ
A¡$ ! QˆA�ŠFÐ�a˜1’fÐ
AÐ
AÐ
AÐ
AÐ
AÐ
ArY   c                 óT  •— t          | ¦  «        t          ‰¦  «        k    sJ ‚t          | ¦  «        } t          t          ‰¦  «        ¦  «        D ]O}‰|         dk    rA‰|         dk    rt          j        j        | |<   Œ/t          | |         d‰|         ¦  «        | |<   ŒP ‰| ¦  «        S r¬  )r¡   ry   rß   r•   r  ÚZeror!   )r  rÀ   Úold_sizeÚrepeatsÚx_loaders     €€€rW   rC  zrepeat.<locals>.inner_fn8  s¡   ø€ Ý�5‰zŒz�S ™\œ\Ò)Ð)Ð)Ð)Ý�U‘”ˆÝ•s˜7‘|”|Ñ$Ô$ð 	Ið 	IˆAØ�qŒz˜QŠˆØ˜A”; !Ò#Ð#Ý$œwœ|�E˜!‘H�Hå.¨u°Q¬x¸¸HÀQ¼KÑHÔH�E˜!‘HøØˆx˜‰ŒÐrY   rD  )ry   r¢   r¡   r•   r  r  r�  rß   Úemptyr”   rÚ   r÷   rÞ   rw  r  rC   r  r	  rí  r@   rî  r0  r2   rà   )	rt   r  Únew_sizeÚzero_tensorrÀ   rC  Úold_size_productr   r  s	    `     @@rW   Úrepeatr  !  s9  øøø€ å�A—J’J‘L”LÑ!Ô!€HÝ
ˆ7�|„|•c˜(‘m”mÒ#Ð#Ý”G”K�=¥C¨¡L¤Lµ3°x±=´=Ñ$@ÑAÀHÑLˆÝ�•D˜‘N”NÑ#Ô#ˆÝˆw‰<Œ<�3˜qŸzšz™|œ|Ñ,Ô,Ò,Ð,Ð,Ð,å�A—J’J‘L”LÑ!Ô!€Hà€KÝ•3�w‘<”<Ñ Ô ð /ð /ˆØ�1Œ:˜Š?ˆ?ØˆKØ˜q”k G¨A¤JÑ.ˆ�‰ˆàð KÝ�X Q§[¢[¡]¤]¸1¿<º<¹>¼>ÐJÑJÔJÐJÝ
Ð
AÐ
A­#¨g°xÑ*@Ô*@Ð
AÑ
AÔ
AÑAÔAð *Ý•V˜A˜xÑ(Ô(Ñ)Ô)Ð)ð	ð 	ð 	ð 	ð 	ð 	ð 	õ ”wÔ'×1Ò1µ-ÀÑ2IÔ2IÑJÔJÐØ˜!ÒÐà	�ŠÝŒGÔ×&Ò&¥}°XÑ'>Ô'>Ñ?Ô?ÐCSÑSñ	
ô 	
ð 	
ð �}Š}‰Œ€HÝÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�H‰~Œ~ð	ñ ô ð rY   c                 óº   — t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚t          t	          j        | j        |¦  «        ¦  «        S r`   )rZ   r5   ry   rz   r7   rà   rV  )rt   rÄ  s     rW   r�  r�  S  sP   € õ �a�Ñ#Ô#Ð#Ð#Ð#Ý�e�d¥E˜]Ñ+Ô+Ð+Ð+Ð+Ý•T”[ ¤¨Ñ/Ô/Ñ0Ô0Ð0rY   c                 óÔ   — t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚t          t	          j        | j        t          |¦  «        ¦  «        ¦  «        S r`   )rZ   r5   ry   rz   r1   rà   rV  )rt   rÎ  s     rW   Úpermuter
  \  sU   € å�a�Ñ#Ô#Ð#Ð#Ð#Ý�d�T¥5˜MÑ*Ô*Ð*Ð*Ð*Ý•[Ô'¨¬µ°d±´Ñ<Ô<Ñ=Ô=Ð=rY   ì            c           
      óÀ   — t          | t          ¦  «        sJ ‚t          | |d¦  «        }t          t          j                             | j        |||||¬¦  «        ¦  «        S )Nr   ©Úclamp)rZ   r5   Ú_validate_dimr'   Ú	SliceViewrà   rV  )rt   r¥   ÚstartÚendÚstepr  s         rW   Úslice_r  c  sV   € å�a�Ñ#Ô#Ð#Ð#Ð#Ý
˜˜3 Ñ
"Ô
"€CÝ•R”\×(Ò(¨¬°°e¸SÀ$ÈeÐ(ÑTÔTÑUÔUÐUrY   c           	      ó  — t          | t          ¦  «        r8t          | j        t          j        ¦  «        r| j                             ¦   «         } |                      ¦   «          t          j        | ¦  «        st          d| › d�¦  «        ‚t          j	        | ¦  «        \  }}t          j
        |j        |j        d„ |D ¦   «         d„ |D ¦   «         t          j        |pd¦  «        ¦  «        }t          t          j        ||¬¦  «        ¦  «        S )Nzunrealized as_strided(z, ...)c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   ©r•   r  ©rs   rÐ  s     rW   ru   zas_strided.<locals>.<listcomp>v  s    € Ð'Ð'Ð'˜Q�Œ�a‰ŒÐ'Ð'Ð'rY   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   r  r  s     rW   ru   zas_strided.<locals>.<listcomp>w  ó    € Ð)Ð)Ð)˜Q�Œ�a‰ŒÐ)Ð)Ð)rY   r   ©rV  Úlayout)rZ   r5   rV  r'   ÚBaseViewÚunwrap_viewrb  Úis_storage_and_layoutrj   Úas_storage_and_layoutÚFixedLayoutrÌ   r�   r•   r  ÚReinterpretView)rt   rå   ÚstrideÚstorage_offsetÚstorageÚ
old_layoutÚ
new_layouts          rW   Ú
as_stridedr(  j  sý   € å�!•YÑÔð !¥J¨q¬vµr´{Ñ$CÔ$Cð !àŒF×ÒÑ Ô ˆØ‡I‚I�K„K€KÝÔ# AÑ&Ô&ð FÝ!Ð"D¸1Ð"DÐ"DÐ"DÑEÔEÐEÝÔ2°1Ñ5Ô5Ñ€GˆZÝ”ØÔØÔØ'Ð' $Ð'Ñ'Ô'Ø)Ð) &Ð)Ñ)Ô)ÝŒ�^Ð( qÑ)Ô)ñô €Jõ •RÔ'¨W¸ZÐHÑHÔHÑIÔIÐIrY   c                 ól   — t          | t          ¦  «        sJ ‚t          | |||¦  «        j        | _        | S r`   )rZ   r5   r(  rV  )rt   rå   r#  r$  s       rW   Úas_strided_r*  }  s5   € å�a�Ñ#Ô#Ð#Ð#Ð#Ý˜˜4 ¨Ñ8Ô8Ô=€A„FØ€HrY   c                 óD   — t          | |||¦  «        }t          |¦  «        S r`   )r(  rw  )rt   rå   r#  r$  Úresults        rW   Úas_strided_copyr-  „  s!   € å˜˜4 ¨Ñ8Ô8€FÝ�‰=Œ=ÐrY   c                 óÄ  ‡ ‡‡‡— g Šd}‰ D ]B}‰                      |||                     ¦   «         ‰         z   f¦  «         ‰d         d         }ŒCd„ ‰ D ¦   «         Šˆˆ ˆˆfd„}t          ‰ d                              ¦   «         ¦  «        }‰d         d         |‰<   t          j        ‰ d                              ¦   «         ‰ d                              ¦   «         ||¬¦  «        S )Nr   r-  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rp   r/  r,  s     rW   ru   z!pointwise_cat.<locals>.<listcomp>’  s"   € Ð:Ð:Ð:¨C�c—o’oÑ'Ô'Ð:Ð:Ð:rY   c           	      óæ  •‡
‡— t          j        | ‰         t          j        ¦  «        }g }g }t	          t          ‰¦  «        ¦  «        D �]XŠ
‰
dk    rt          j        dt          j        ¦  «        n*t          j        ‰‰
         d         t          j        ¦  «        }t          j        ‰‰
         d         t          j        ¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }‰
dk    r|}n.‰
t          ‰¦  «        dz
  k    r|}nt          j	        ||¦  «        }| 
                    |¦  «         t          | ¦  «        Št          ‰‰         ‰‰
         d         z
  ¦  «        ‰‰<   | 
                    t          j        |ˆ
ˆˆfd„d¦  «        ¦  «         �ŒZ|d         }	t	          t          ‰¦  «        dz
  dd¦  «        D ]$Š
t          j        |‰
         |‰
         |	¦  «        }	Œ%|	S )Nr   r$   c                  ó&   •—  ‰‰          ‰¦  «        S r`   rp   )rÀ   Úidx_loadÚinputs_loaderss   €€€rW   ú<lambda>z1pointwise_cat.<locals>.inner_fn.<locals>.<lambda>¶  s   ø€ Ð-˜N¨1Ô-¨hÑ7Ô7€ rY   ç        r-  r"   )rB   Ú
index_exprrO   Úint64rß   r¡   ÚconstantÚgeÚltÚand_r®   ry   r   Úmaskedr¹  )rö  Úidx_dimÚmasksÚmasked_loadsr  r  Ú
start_condÚend_condÚmaskÚnext_valrÀ   r2  r¥   r"  r3  Úinputs_rangess             @@€€€€rW   rC  zpointwise_cat.<locals>.inner_fn”  sæ  øøø€ Ý”.  S¤­5¬;Ñ7Ô7ˆàˆØˆÝ•s˜6‘{”{Ñ#Ô#ð  	ñ  	ˆAð ˜’6�6õ ”˜Q¥¤Ñ,Ô,Ð,å”^ M°!Ô$4°QÔ$7½¼ÑEÔEð õ
 ”. ¨qÔ!1°!Ô!4µe´kÑBÔBˆCåœ ¨Ñ/Ô/ˆJÝ”v˜g sÑ+Ô+ˆHØ�AŠvˆvØ��Ø•c˜&‘k”k A‘oÒ%Ð%Ø!��å”x 
¨HÑ5Ô5�à�LŠL˜ÑÔÐÝ˜C‘y”yˆHõ % X¨c¤]°]À1Ô5EÀaÔ5HÑ%HÑIÔIˆH�S‰Mà×ÒÝ”
ØØ7Ð7Ð7Ð7Ð7Ð7Øñô ñô ð ñ ð   Ô#ˆÝ�˜F™œ qÑ(¨"¨bÑ1Ô1ð 	ð 	ˆAÝ”yØ�a”Ø˜Q”Øñô ˆHˆHð
 ˆrY   rD  )r®   r¢   ry   r2   rà   rÚ   r”   )r"  r¥   Úprev_endr¤   rC  r  r3  rD  s   ``    @@rW   Úpointwise_catrF  Š  s  øøøø€ à9;€MØ€HØð )ð )ˆØ×Ò˜h¨°3·<²<±>´>À#Ô3FÑ(FÐGÑHÔHÐHØ  Ô$ RÔ(ˆˆà:Ð:°6Ð:Ñ:Ô:€Nð.ð .ð .ð .ð .ð .ð .ð .õ` �F˜1”I×&Ò&Ñ(Ô(Ñ)Ô)€HØ! "Ô% bÔ)€HˆS�MåÔØ�aŒy×#Ò#Ñ%Ô%Ø�QŒi×!Ò!Ñ#Ô#ØØð	ñ ô ð rY   ri  ÚscalesÚzero_pointsÚaxisÚ	quant_minÚ	quant_maxc           	      óv  ‡‡‡‡‡‡‡‡	‡
— t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚|                      ¦   «         t          j        k    rt          | t          j        ¦  «        } |                      ¦   «         t          j        k    sJ d|                      ¦   «         › �¦   «         ‚‰t          |                      ¦   «         ¦  «        k     s,J dt          |                      ¦   «         ¦  «        › �¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š	‰                     ¦   «         Š
ˆˆˆˆˆˆˆ	ˆˆ
f	d„}t          j	        |  
                    ¦   «         ‰||                      ¦   «         ¬¦  «        S )Nr$   úexpect scales 1 dimúexpect zero_points 1 dimú<Expecting input to have dtype torch.float32, but got dtype: úExpecting axis to be < c                 ó<  •	— | ‰
         f} ‰| ¦  «        } ‰|¦  «        } ‰|¦  «        }t          ‰‰t          j        ¬¦  «        \  }}‰j        t          j        k    rt	          j        |t          j        ¦  «        }‰j        t          j        k    rt	          j        |t          j        ¦  «        }t	          j        |¦  «        }t	          j        ||z  ¦  «        |z   }t	          j	        |t	          j
        ||¦  «        ¦  «        }	t	          j        |	‰¦  «        S ©Nr‘   )Ú_create_constantsrO   Úfloat32r�   rB   rÍ   r±  Ú
reciprocalrç  ÚmaximumÚminimum)rö  Úchannel_idxri  ÚscaleÚ
zero_pointÚqminÚqmaxÚ	inv_scalerÖ  ÚclampedrI  r�   Úinput_loaderrK  rJ  rG  Úscales_loaderrH  Úzero_points_loaders             €€€€€€€€€rW   rC  z;quantized_decomposed_quantize_per_channel.<locals>.inner_fné  sò   ø€ Ø˜4”y�lˆà�˜SÑ!Ô!ˆØ�˜kÑ*Ô*ˆØ'Ð'¨Ñ4Ô4ˆ
Ý& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdàŒ<�5œ=Ò(Ð(Ý”L ­¬Ñ6Ô6ˆEØÔ¥¤Ò+Ð+Ýœ jµ%´+Ñ>Ô>ˆJÝ”N 5Ñ)Ô)ˆ	ÝŒi˜ 	Ñ)Ñ*Ô*¨ZÑ7ˆÝ”+˜d¥C¤K°°cÑ$:Ô$:Ñ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rY   rD  )r¡   r¢   r”   rO   rJ  rÍ   rT  r0  r2   rà   rÚ   ©ri  rG  rH  rI  rJ  rK  r�   rC  r_  r`  ra  s    `````` @@@rW   Ú)quantized_decomposed_quantize_per_channelrc  Ï  sÕ  øøøøøøøøø€ õ ˆv�ŠÑ Ô Ñ!Ô! QÒ&Ð&Ð&Ð(=Ñ&Ô&Ð&Ýˆ{×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð-GÑ+Ô+Ð+à‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆà�ŠÑÔ�Uœ]Ò*Ð*Ð*ØYÀeÇoÂoÑFWÔFWÐYÐYñ 	+Ô*Ð*à•#Ø�ŠÑÔñô ò ð ð à8¥ U§^¢^Ñ%5Ô%5Ñ!6Ô!6Ð8Ð8ñô ð ð ×$Ò$Ñ&Ô&€LØ×&Ò&Ñ(Ô(€MØ$×0Ò0Ñ2Ô2Ðð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ" ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rY   c                 óø  ‡‡‡‡‡	‡
— t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚|                      ¦   «         |k    s"J d|› d|                      ¦   «         › �¦   «         ‚‰t          |                      ¦   «         ¦  «        k     s,J dt          |                      ¦   «         ¦  «        › �¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š	‰                     ¦   «         Š
ˆˆˆˆ	ˆˆ
fd„}t	          j        |                      ¦   «         t          j        ||                      ¦   «         ¬¦  «        S )	Nr$   rM  rN  úExpecting input to have dtype ú, but got dtype: rP  c                 ó–  •— | ‰         f} ‰| ¦  «        } ‰	|¦  «        } ‰|¦  «        }‰j         t          j        k    rt          j        |t          j        ¦  «        }‰
j         t          j        k    rt          j        |t          j        ¦  «        }t          j        t          j        |t          j        ¦  «        |¦  «        |z  }|S r`   )r�   rO   rT  rB   rÍ   Úsub)rö  rX  ri  rY  rZ  rÖ  rI  r_  rG  r`  rH  ra  s         €€€€€€rW   rC  z=quantized_decomposed_dequantize_per_channel.<locals>.inner_fn  sª   ø€ Ø˜4”y�lˆà�˜SÑ!Ô!ˆØ�˜kÑ*Ô*ˆØ'Ð'¨Ñ4Ô4ˆ
àŒ<�5œ=Ò(Ð(Ý”L ­¬Ñ6Ô6ˆEØÔ¥¤Ò-Ð-Ýœ jµ%´-Ñ@Ô@ˆJÝŒg•c”l 5­%¬-Ñ8Ô8¸*ÑEÔEÈÑMˆØˆ
rY   rD  ©	r¡   r¢   r”   r0  r2   rà   rÚ   rO   rT  rb  s    ```    @@@rW   Ú+quantized_decomposed_dequantize_per_channelrj    s£  øøøøøø€ õ ˆv�ŠÑ Ô Ñ!Ô! QÒ&Ð&Ð&Ð(=Ñ&Ô&Ð&Ýˆ{×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð-GÑ+Ô+Ð+à�ŠÑÔ˜UÒ"Ð"Ð"ØS¨ÐSÐSÀÇÂÑ@QÔ@QÐSÐSñ 	#Ô"Ð"à•#Ø�ŠÑÔñô ò ð ð à8¥ U§^¢^Ñ%5Ô%5Ñ!6Ô!6Ð8Ð8ñô ð ð ×$Ò$Ñ&Ô&€LØ×&Ò&Ñ(Ô(€MØ$×0Ò0Ñ2Ô2Ððð ð ð ð ð ð ð ð ð õ ÔØ×ÒÑ!Ô!ÝŒmØØ�~Š~ÑÔð	ñ ô ð rY   rY  rZ  c                 ó  ‡‡‡‡— |                       ¦   «         t          j        k    rt          | t          j        ¦  «        } |                       ¦   «         t          j        k    sJ d|                       ¦   «         › �¦   «         ‚|                      ¦   «         Šˆˆˆˆfd„}t          j        |                      ¦   «         ‰t          j
        |t          |¦  «        t          |¦  «        ¬¦  «        |                      ¦   «         ¬¦  «        S )NrO  c                 óJ  •—  ‰
| ¦  «        }t          d|z  |t          j        ¬¦  «        \  }}t          j        ||z  ¦  «        |z   }t          ‰‰t          j        ¬¦  «        \  }}t          j        t          j        ||¦  «        |¦  «        }t          j        |‰	¦  «        S )Nç      ð?r‘   )rS  rO   rT  rB   rç  rW  rV  rÍ   )rö  rY  rZ  ri  r]  rÖ  r[  r\  r^  r�   r_  rK  rJ  s            €€€€rW   rC  zBquantized_decomposed_quantize_per_tensor_default.<locals>.inner_fnD  sœ   ø€ Ø�˜SÑ!Ô!ˆÝ 1Ø�%‰K˜­5¬=ð!
ñ !
ô !
Ñˆ	�:õ Œi˜ 	Ñ)Ñ*Ô*¨ZÑ7ˆÝ& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdÝ”+�cœk¨#¨tÑ4Ô4°dÑ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rY   ©rY  rZ  rD  )r”   rO   rJ  rÍ   rT  r0  r2   rà   rÚ   rì   rþ   r  r�   r¢   ©ri  rY  rZ  rJ  rK  r�   rC  r_  s      ``` @rW   Ú0quantized_decomposed_quantize_per_tensor_defaultrp  1  s
  øøøø€ ð ‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆà�ŠÑÔ�Uœ]Ò*Ð*Ð*ØYÀeÇoÂoÑFWÔFWÐYÐYñ 	+Ô*Ð*ð ×$Ò$Ñ&Ô&€Lð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ ÔØ×ÒÑ!Ô!ØÝÔ"Ø�E %™LœLµS¸±_´_ð
ñ 
ô 
ð �~Š~ÑÔðñ ô ð rY   c                 ó”  ‡— |                       ¦   «         |k    s"J d|› d|                       ¦   «         › �¦   «         ‚|                      ¦   «         Šˆfd„}t          j        |                      ¦   «         t
          j        t          j        |t          |¦  «        t          |¦  «        ¬¦  «        |                      ¦   «         ¬¦  «        S )Nre  rf  c                 óÆ   •—  ‰| ¦  «        }t          ||t          j        ¬¦  «        \  }}t          j        t          j        |t          j        ¦  «        |¦  «        |z  }|S rR  )rS  rO   rT  rB   rh  rÍ   )rö  rY  rZ  ri  rÖ  r_  s        €rW   rC  zDquantized_decomposed_dequantize_per_tensor_default.<locals>.inner_fni  sV   ø€ Ø�˜SÑ!Ô!ˆÝ-¨e°ZÅuÄ}ÐUÑUÔUÑˆˆzÝŒg•c”l 5­%¬-Ñ8Ô8¸*ÑEÔEÈÑMˆØˆ
rY   rn  rD  )r”   r0  r2   rà   rÚ   rO   rT  rì   rþ   r  r�   r¢   ro  s          @rW   Ú2quantized_decomposed_dequantize_per_tensor_defaultrs  X  sØ   ø€ ð 	�ŠÑÔ˜UÒ"Ð"Ð"ØS¨ÐSÐSÀÇÂÑ@QÔ@QÐSÐSñ 	#Ô"Ð"ð ×$Ò$Ñ&Ô&€Lðð ð ð ð õ ÔØ×ÒÑ!Ô!ÝŒmÝÔ"Ø�E %™LœLµS¸±_´_ð
ñ 
ô 
ð �~Š~ÑÔðñ ô ð rY   c                 óÜ  ‡‡‡‡‡‡‡‡	— |                       ¦   «         t          j        k    rt          | t          j        ¦  «        } |                       ¦   «         t          j        k    sJ d|                       ¦   «         › �¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š‰                     ¦   «         Š	ˆˆˆˆˆˆˆˆ	fd„}t          j	        |  
                    ¦   «         ‰||                      ¦   «         ¬¦  «        S )NrO  r   r$   úexpect scale as scalar tensorú"expect zero_point as scalar tensorc                 óÂ  •—  ‰	| ¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }t          j        |t          j        |¦  «        z  ¦  «        |z   }t          ‰‰
t          j        ¬¦  «        \  }}t          j
        t          j        ||¦  «        |¦  «        }t          j        |‰¦  «        S )Nr$   ©r   rp   r‘   )r¡   r¢   r�   rO   rT  rB   rÍ   rç  rU  rS  rW  rV  )rö  ri  Ú_scaleÚ_zero_pointrÖ  r[  r\  r^  r�   r_  rK  rJ  rY  Úscale_loaderrZ  Úzero_point_loaders           €€€€€€€€rW   rC  zAquantized_decomposed_quantize_per_tensor_tensor.<locals>.inner_fn”  s#  ø€ Ø�˜SÑ!Ô!ˆØ�¥c¨%¯.ª.Ñ*:Ô*:Ñ&;Ô&;¸qÒ&@Ð&@˜d˜dÀbÑIÔIˆØ'Ð'µ°E·N²NÑ4DÔ4DÑ0EÔ0EÈÒ0JÐ0J¨¨ÐPRÑSÔSˆØŒ;�%œ-Ò'Ð'Ý”\ &­%¬-Ñ8Ô8ˆFØÔ�uœ}Ò,Ð,Ýœ, {µE´MÑBÔBˆKÝŒi˜¥¤¨vÑ 6Ô 6Ñ6Ñ7Ô7¸+ÑEˆÝ& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdÝ”+�cœk¨#¨tÑ4Ô4°dÑ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rY   rD  )r”   rO   rJ  rÍ   rT  r¡   r¢   r0  r2   rà   rÚ   ©
ri  rY  rZ  rJ  rK  r�   rC  r_  r{  r|  s
    ````` @@@rW   Ú/quantized_decomposed_quantize_per_tensor_tensorr~  y  sô  øøøøøøøø€ ð ‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆà�ŠÑÔ�Uœ]Ò*Ð*Ð*ØYÀeÇoÂoÑFWÔFWÐYÐYñ 	+Ô*Ð*åˆu�~Š~ÑÔÑ Ô  AÒ%Ð%ÝˆE�NŠNÑÔÑÔ Ò"Ð" u§~¢~Ñ'7Ô'7¸Ô':¸aÒ'?Ð'?Ð'?Ø&ñ (@Ô'?ðõ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*ÝˆJ×ÒÑ!Ô!Ñ"Ô" aÒ'Ð'¨J×,?Ò,?Ñ,AÔ,AÀ!Ô,DÈÒ,IÐ,IÐ,IØ+ñ -JÔ,Iðð ×$Ò$Ñ&Ô&€LØ×$Ò$Ñ&Ô&€LØ"×.Ò.Ñ0Ô0Ðð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rY   c                 ó^  ‡‡‡‡‡	— t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚|                      ¦   «         |k    s"J d|› d|                      ¦   «         › �¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š‰                     ¦   «         Š	ˆˆˆˆˆ	fd„}t	          j        |                      ¦   «         t          j        ||                      ¦   «         ¬¦  «        S )	Nr   r$   ru  rv  re  rf  c                 ó   •—  ‰| ¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        } ‰	t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }t          j        t          j        |t          j        ¦  «        |¦  «        |z  }|S )Nr$   rx  rp   )r¡   r¢   r�   rO   rT  rB   rÍ   rh  )
rö  ri  ry  rz  rÖ  r_  rY  r{  rZ  r|  s
        €€€€€rW   rC  zCquantized_decomposed_dequantize_per_tensor_tensor.<locals>.inner_fnÂ  sà   ø€ Ø�˜SÑ!Ô!ˆØ�¥c¨%¯.ª.Ñ*:Ô*:Ñ&;Ô&;¸qÒ&@Ð&@˜d˜dÀbÑIÔIˆØ'Ð'µ°E·N²NÑ4DÔ4DÑ0EÔ0EÈÒ0JÐ0J¨¨ÐPRÑSÔSˆØŒ;�%œ-Ò'Ð'Ý”\ &­%¬-Ñ8Ô8ˆFØÔ�uœ}Ò,Ð,Ýœ, {µE´MÑBÔBˆKÝŒg•c”l 5­%¬-Ñ8Ô8¸+ÑFÔFÈÑOˆØˆ
rY   rD  ri  r}  s
    ``    @@@rW   Ú1quantized_decomposed_dequantize_per_tensor_tensorr�  ©  sÄ  øøøøø€ õ ˆu�~Š~ÑÔÑ Ô  AÒ%Ð%ÝˆE�NŠNÑÔÑÔ Ò"Ð" u§~¢~Ñ'7Ô'7¸Ô':¸aÒ'?Ð'?Ð'?Ø&ñ (@Ô'?ðõ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*ÝˆJ×ÒÑ!Ô!Ñ"Ô" aÒ'Ð'¨J×,?Ò,?Ñ,AÔ,AÀ!Ô,DÈÒ,IÐ,IÐ,IØ+ñ -JÔ,Iðð 	�ŠÑÔ˜UÒ"Ð"Ð"ØS¨ÐSÐSÀÇÂÑ@QÔ@QÐSÐSñ 	#Ô"Ð"ð ×$Ò$Ñ&Ô&€LØ×$Ò$Ñ&Ô&€LØ"×.Ò.Ñ0Ô0Ðð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ ÔØ×ÒÑ!Ô!ÝŒmØØ�~Š~ÑÔð	ñ ô ð rY   c                 óì  ‡
‡‡‡‡‡‡‡— | d                               ¦   «         j        dk    }|r�t          d„ | D ¦   «         ¦  «        rt| D ]}|                     ¦   «          Œt          d„ | D ¦   «         ¦  «        rt	          t
          j        g| ¢R Ž \  } } t          t
          j        j        ¦  «        | |¦  «        S t          | ¦  «        dk    rt          | d         ¦  «        S t          | d         |d¦  «        }t          | dt          j        iŽŠˆfd„| D ¦   «         } dt          t           t"          j        f         d	t"          j        fd
„Šd„ Šˆˆˆfd„Št)          ˆfd„| D ¦   «         ¦  «        }d	t*          fˆˆfd„Št,          j        rt1          | |¦  «        S |r-t!          t"          j                             | |¦  «        ¦  «        S ˆˆfd„Šd}dŠ
dt6          j        j        fd„Št          | ¦  «        |k    s9t          | ¦  «        t,          j        k    r°t          ˆ
ˆfd„| D ¦   «         ¦  «        r”t          ˆfd„t>          j         j!        D ¦   «         ¦  «        }t)          ˆfd„| D ¦   «         ¦  «        o|}t          ˆfd„| D ¦   «         ¦  «        ot)          ˆfd„| D ¦   «         ¦  «         }	|s|	r|st1          | |¦  «        S t!          t"          j                             | |¦  «        ¦  «        S )Nr   Úcpuc              3   ón   K  — | ]0}|                      ¦   «         t          j        t          j        fv V — Œ1d S r`   )r”   rO   Úint8Úuint8©rs   ri  s     rW   rx   zcat.<locals>.<genexpr>Ø  sK   è è € ð ð Ø;@ˆ�ŠÑÔ�eœj­%¬+Ð6Ð6ðð ð ð ð ð rY   c              3   ó`   K  — | ])}t          |                     ¦   «         ¦  «        d k    V — Œ*dS )r„   N)r¡   r¢   r‡  s     rW   rx   zcat.<locals>.<genexpr>ß  s9   è è € Ð>Ð>¨e�s�5—>’>Ñ#Ô#Ñ$Ô$¨Ò)Ð>Ð>Ð>Ð>Ð>Ð>rY   r$   r�   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rp   ©rÍ   )rs   r¤   r�   s     €rW   ru   zcat.<locals>.<listcomp>ê  s#   ø€ Ð5Ð5Ð5 s�h�s˜EÑ"Ô"Ð5Ð5Ð5rY   rt   rL   c                 óð   — t          | t          ¦  «        r?t          | j        t          j        ¦  «        r| j                             ¦   «         S | j        S t          | t          j        ¦  «        r| j        S | S r`   )rZ   r5   rV  r'   r  r  Ú
StorageBoxr˜   s    rW   Úunwrap_tensorzcat.<locals>.unwrap_tensorì  se   € Ý�a�Ñ#Ô#ð 	Ý˜!œ&¥"¤+Ñ.Ô.ð Ø”v×)Ò)Ñ+Ô+Ð+à”v�å�a�œÑ'Ô'ð 	Ø”6ˆMàˆrY   c                 ót   — t          | t          j        ¦  «        ot          | j        t          j        ¦  «        S r`   )rZ   r'   ÚComputedBufferrV  r3   )rY  s    rW   Úis_reductionzcat.<locals>.is_reductionø  s(   € Ý˜!�RÔ.Ñ/Ô/ÐTµJ¸q¼vÅrÄ|Ñ4TÔ4TÐTrY   c                 ó  •— t          | t          t          j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S  ‰| ¦  «        pFt          | t          j        ¦  «        o,t          ˆfd„|                      ¦   «         D ¦   «         ¦  «        S )Nc              3   óh   •K  — | ],} ‰t           j                             |¦  «        ¦  «        V — Œ-d S r`   )rC   r  Ú
get_buffer)rs   ÚreadÚcan_fuse_reductions     €rW   rx   z2cat.<locals>.can_fuse_reduction.<locals>.<genexpr>  sR   øè è € ð ð àð #Ð"¥1¤7×#5Ò#5°dÑ#;Ô#;Ñ<Ô<ðð ð ð ð ð rY   )rZ   r5   r'   rŒ  r2   rø   Úget_read_names)rY  r•  r�  r�  s    €€€rW   r•  zcat.<locals>.can_fuse_reductionû  sŸ   ø€ Ý�a�)¥R¤]Ð3Ñ4Ô4ð 	8Ø%Ð% m m°AÑ&6Ô&6Ñ7Ô7Ð7àˆL˜‰OŒOð Ý˜!�Rœ\Ñ*Ô*ð Ýð ð ð ð à×,Ò,Ñ.Ô.ðñ ô ñ ô ð	
rY   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r`   rp   ©rs   rY  r•  s     €rW   rx   zcat.<locals>.<genexpr>  s/   øè è € ÐBÐB°aÐ.Ð.¨qÑ1Ô1ÐBÐBÐBÐBÐBÐBrY   c                 óD  •— t          j        | ¦  «        r9t          j        | d¬¦  «        \  }}t           j                             |¦  «         S t          | t          t           j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S t          | t           j        ¦  «        rdS dS )NF)ÚfreezeT)	r'   r  r   ÚConcatKernelÚcan_realize_into_without_copyrZ   r5   rŒ  r2   )rt   r%  r«   Úshould_lower_cat_inputr�  s      €€rW   r�  z#cat.<locals>.should_lower_cat_input
  s�   ø€ õ Ô# AÑ&Ô&ð 	NÝÔ1°!¸EÐBÑBÔB‰JˆG�QÝ”×DÒDÀWÑMÔMÐMÐMå�a�)¥R¤]Ð3Ñ4Ô4ð 	<Ø)Ð)¨-¨-¸Ñ*:Ô*:Ñ;Ô;Ð;å�a�œÑ&Ô&ð 	Ø�4àˆurY   c                 ó`  •— t          | t          t          j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S t          | t          j        ¦  «        sdS |                      ¦   «         j        }|                      ¦   «         D ]-}| ‰t          j	         
                    |¦  «        ¦  «        z  }Œ.|S r§  )rZ   r5   r'   rŒ  r2   Úinner_fn_opcountÚnum_opsr–  rC   r  r“  )rt   Úcountr”  Úop_countr�  s      €€rW   r¢  zcat.<locals>.op_count!  s«   ø€ Ý�a�)¥R¤]Ð3Ñ4Ô4ð 	.Ø�8˜M˜M¨!Ñ,Ô,Ñ-Ô-Ð-õ ˜!�Rœ\Ñ*Ô*ð 	Ø�1à×"Ò"Ñ$Ô$Ô,ˆØ×$Ò$Ñ&Ô&ð 	8ð 	8ˆDØ�X�X�aœg×0Ò0°Ñ6Ô6Ñ7Ô7Ñ7ˆEˆEàˆrY   rˆ   r"   r¶   c                 óJ   — | t           j        j        t           j        j        fv S r`   )rŽ  Úcatr„  Úconstant_pad_nd©r¶   s    rW   Úadditional_pointwise_opsz%cat.<locals>.additional_pointwise_ops6  s   € Ø•d”hÔ&­Ô(<Ô(DÐEÐEÐErY   c              3   ó6   •K  — | ]} ‰|¦  «        ‰k    V — Œd S r`   rp   )rs   rY  ÚMAX_SIMPLE_OP_COUNTr¢  s     €€rW   rx   zcat.<locals>.<genexpr>;  s1   øè è € ÐCÐC°q��˜‘”Ð2Ò2ÐCÐCÐCÐCÐCÐCrY   c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r`   )r<   )rs   Úuser§  s     €rW   rx   zcat.<locals>.<genexpr>=  sB   øè è € ð 
ð 
àõ ˜SÐ":Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
rY   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r`   rp   ©rs   r¤   r�  s     €rW   rx   zcat.<locals>.<genexpr>D  s/   øè è € Ð>Ð>°Ð&Ð& sÑ+Ô+Ð>Ð>Ð>Ð>Ð>Ð>rY   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r`   rp   r­  s     €rW   rx   zcat.<locals>.<genexpr>I  s@   øè è € ð "
ð "
Ø,/Ð"Ð" 3Ñ'Ô'ð"
ð "
ð "
ð "
ð "
ð "
rY   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r`   rp   r˜  s     €rW   rx   zcat.<locals>.<genexpr>K  s/   øè è € Ð<Ð<°Ð(Ð(¨Ñ+Ô+Ð<Ð<Ð<Ð<Ð<Ð<rY   )"rÚ   rF  r÷   rb  Úrequire_channels_lastrŽ  r¤  r�  r„  r¡   rw  r  r¬   r   r  r   r5   r'   rŒ  r.   rø   r›   r%   Úforce_pointwise_catrF  r›  rà   rO   r[   r\   Úmax_pointwise_cat_inputsrC   r2  r]  )r"  r¥   Ú
cpu_deviceri  r«   Úfusable_reductionÚMAX_COMPLEX_POINTWISE_CATÚpointwise_usesÚfuse_pointwise_useÚhorizontal_fuse_catr©  r§  r•  r�   r�  r¢  r�  r�  s             @@@@@@@@rW   r¤  r¤  Õ  s÷  øøøøøøøø€ à˜”×%Ò%Ñ'Ô'Ô,°Ò5€JØð 	?•cð ð ØDJðñ ô ñ ô ð 	?ð
 ð 	ð 	ˆEØ�MŠM‰OŒOˆOˆOÝÐ>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ð 	AÝ-­d¬hÐ@¸Ð@Ð@Ð@‰IˆF�AØ1Õ¥¤Ô 0Ñ1Ô1°&¸#Ñ>Ô>Ð>å
ˆ6�{„{�aÒÐÝ�V˜A”YÑÔÐå
˜˜qœ	 3¨Ñ
*Ô
*€CÝØ	ðÝ%DÔ%Lðð €Eð 6Ð5Ð5Ð5¨fÐ5Ñ5Ô5€Fð
��y­"¬-Ð7Ô8ð 
½R¼Yð 
ð 
ð 
ð 
ðUð Uð Uð

ð 

ð 

ð 

ð 

ð 

ð 

õ ÐBÐBÐBÐB¸6ÐBÑBÔBÑBÔBÐð¥Tð ð ð ð ð ð ð õ Ô!ð *Ý˜V SÑ)Ô)Ð)ð ð >Ý�œ×/Ò/°¸Ñ<Ô<Ñ=Ô=Ð=ðð ð ð ð ð ð$ !"ÐØÐðF¥U¤ZÔ%:ð Fð Fð Fð Fõ ˆ6�{„{Ð/Ò/Ð/Ý	ˆV‰Œ�Ô7Ò	7Ð	7ÝÐCÐCÐCÐCÐC¸FÐCÑCÔCÑCÔCð 
8õ ð 
ð 
ð 
ð 
å”~Ô+ð
ñ 
ô 
ñ 
ô 
ˆõ Ð>Ð>Ð>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ÐQÀ>ð 	õ "ð "
ð "
ð "
ð "
Ø39ð"
ñ "
ô "
ñ 
ô 
ð =åÐ<Ð<Ð<Ð<°VÐ<Ñ<Ô<Ñ<Ô<Ð<ð 	ð ð 	.Ð"5ð 	.Ð>Oð 	.Ý  ¨Ñ-Ô-Ð-å•R”_×+Ò+¨F°CÑ8Ô8Ñ9Ô9Ð9rY   ÚoffsetÚdim1Údim2c                 ó‚  ‡‡‡‡	‡
— |                       ¦   «         Š
t          ‰
¦  «        Š	t          ‰‰	¬¦  «        Št          ‰‰	¬¦  «        Št          ‰‰k    ˆˆfd„¦  «         t          j        j                             t          j	        |d¦  «        ¦  «        }|rXt          j        j         
                    t          j        j                             ‰
‰         |z   ‰
‰         ¦  «        d¦  «        }nWt          j        j         
                    t          j        j                             ‰
‰         ‰
‰         |z
  ¦  «        d¦  «        }dŠ|r| dfŠnd|fŠˆˆfd„t          ‰
¦  «        D ¦   «         }|                     |¦  «         ˆˆˆˆ	ˆ
fd„}t          t          j                             | ||¦  «        ¦  «        S )N)rö  Úrankc                  ó   •— d‰ › d‰› �S )Nz(diagonal dimensions cannot be identical z, rp   )rº  r»  s   €€rW   r4  zdiagonal.<locals>.<lambda>Z  s   ø€ ÐWÈÐWÐWÐQUÐWÐW€ rY   r   )r   r   c                 ó&   •— g | ]\  }}|‰‰fv¯|‘ŒS rp   rp   )rs   rÀ   rÐ  rº  r»  s      €€rW   ru   zdiagonal.<locals>.<listcomp>s  s+   ø€ ÐNÐNÐN‘4�1�a¸À$ÈÀÐ8MÐ8MˆQÐ8MÐ8MÐ8MrY   c                 ó
  •— | d         }dgt          ‰	¦  «        z  }d}t          ‰¦  «        D ]<}|‰k    r|‰d         z   ||<   Œ|‰k    r|‰d         z   ||<   Œ,| |         ||<   |dz  }Œ=|t          ‰	¦  «        dz
  k    sJ ‚|S )Nr-  r   r$   r"   )r¡   rß   )
rö  Údiag_idxÚoriginal_idxÚcur_dimrÍ  Úbase_idxrº  r»  Únum_dimsÚoriginal_shapes
        €€€€€rW   Ú	reindexerzdiagonal.<locals>.reindexerv  s°   ø€ Ø�r”7ˆØ�s�S Ñ0Ô0Ñ0ˆØˆÝ�x‘”ð 	ð 	ˆAØ�DŠyˆyØ"*¨X°a¬[Ñ"8�˜Q‘�Ø�d’�Ø"*¨X°a¬[Ñ"8�˜Q‘�à"% g¤,�˜Q‘Ø˜1‘��à�#˜nÑ-Ô-°Ñ1Ò1Ð1Ð1Ð1ØÐrY   )r¢   r¡   r   r   rC   r  r	  r  r•   ÚLtÚevaluate_maxÚevaluate_minrÖ   r®   r5   r'   ÚGenericViewrà   )ri  r¹  rº  r»  Úoffset_negativeÚ	diag_sizerÄ  rÇ  rÄ  rÅ  rÆ  s     ``    @@@rW   ÚdiagonalrÎ  R  sã  øøøøø€ à—^’^Ñ%Ô%€NÝ�>Ñ"Ô"€HÝ ¨8Ð4Ñ4Ô4€DÝ ¨8Ð4Ñ4Ô4€Då	Ø�ŠÐWÐWÐWÐWÐWñô ð õ ”gÔ&×4Ò4µU´X¸fÀaÑ5HÔ5HÑIÔI€OØð 
Ý”GÔ$×1Ò1ÝŒGÔ×)Ò)Ø˜tÔ$ vÑ-¨~¸dÔ/Cñô ð ñ	
ô 
ˆ	ˆ	õ ”GÔ$×1Ò1ÝŒGÔ×)Ò)Ø˜tÔ$ n°TÔ&:¸VÑ&Cñô ð ñ	
ô 
ˆ	ð €HØð Ø�G˜Q�<ˆˆà�v�;ˆàNÐNÐNÐNÐN�9 ^Ñ4Ô4ÐNÑNÔN€EØ	‡L‚L�ÑÔÐðð ð ð ð ð ð ð ð õ  •R”^×*Ò*¨5°%¸ÑCÔCÑDÔDÐDrY   c                 ó@   — t          t          | |||¦  «        ¦  «        S r`   )rw  rÎ  )ri  r¹  rº  r»  s       rW   Údiagonal_copyrÐ  ‰  s   € å•˜% ¨¨tÑ4Ô4Ñ5Ô5Ð5rY   c                 óh   — t          | ¦  «        }t          ||||¦  «        }t          ||¦  «         |S r`   )rw  rÎ  Ú	mutate_to)ri  Úsrcr¹  rº  r»  r  r^  s          rW   Údiagonal_scatterrÔ  Ž  s5   € å�5‰\Œ\€FÝ�f˜f d¨DÑ1Ô1€FÝˆf�cÑÔÐØ€MrY   c           	      ó¢   — t          j        ||                      ¦   «         |         ¦  «        }t          t	          | |||dz   ¦  «        |¦  «        S r¬  )r7   Úhandle_negative_indexr¢   rÑ  r  )rt   r¥   rö  s      rW   Úselectr×  –  sC   € å
Ô
$ S¨!¯*ª*©,¬,°sÔ*;Ñ
<Ô
<€CÝ•6˜!˜S # s¨Q¡wÑ/Ô/°Ñ5Ô5Ð5rY   c           
      óž  — t          | |d¦  «        }|}t          |t          t          f¦  «        sf|                      ¦   «         |         }t
          j        j                             t          ||z   dz
  |¦  «        ¦  «        }|g|z  }||dz
  |z  z
  |d<   g }d}|D ]0}||z   }	| 
                    t          | |||	d¬¦  «        ¦  «         |	}Œ1|S )Nr   r$   r-  Fr  )r  rZ   ry   rz   r¢   rC   r  r	  rË  r   r®   r  )
rt   rÄ  r¥   Úsizes_Úx_sizeÚchunksr,  r  rå   r  s
             rW   ÚsplitrÜ  œ  sî   € å
˜˜3 Ñ
"Ô
"€CØ€Fõ �e�d¥E˜]Ñ+Ô+ð 3Ø—’‘”˜cÔ"ˆÝ”Ô!×7Ò7Ý�V˜e‘^ aÑ'¨Ñ/Ô/ñ
ô 
ˆð �˜6Ñ!ˆà˜v¨™z¨UÑ2Ñ2ˆˆr‰
ð €FØ€EØð ð ˆØ�d‰lˆð 	�Š•f˜Q  U¨C°uÐ=Ñ=Ô=Ñ>Ô>Ð>ØˆˆØ€MrY   c                 ó$   — t          | ||¦  «        S r`   )rÜ  )rt   rÄ  r¥   s      rW   Úsplit_with_sizesrÞ  ¹  s   € å��E˜3ÑÔÐrY   c                 óÜ   ‡ ‡— t          ‰ ‰d¦  «        Št          j        j                             ‰                      ¦   «         ‰         ¦  «        }ˆˆ fd„t          |¦  «        D ¦   «         }|S )Nr   c                 ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS rp   )r×  )rs   rÀ   r¥   rt   s     €€rW   ru   zunbind.<locals>.<listcomp>Â  s%   ø€ Ð7Ð7Ð7 A�f�Q˜˜QÑÔÐ7Ð7Ð7rY   )r  rC   r  r	  rË  r¢   rß   )rt   r¥   rÚ  r,  s   ``  rW   Úunbindrá  ¾  sa   øø€ å
˜˜3 Ñ
"Ô
"€CÝŒWÔ×3Ò3°A·J²J±L´LÀÔ4EÑFÔF€FØ7Ð7Ð7Ð7Ð7­¨v©¬Ð7Ñ7Ô7€FØ€MrY   c                 ó²  ‡‡— |                       ¦   «         }t          |¦  «        }t          ||¦  «        Š|dk    rt          t	          | d¦  «        |¬¦  «        S |‰         }t
          j        j        }|                     ||¦  «         | 	                    d‰¦  «         t          ||z
  ‰¦  «        dz   }|                     |¦  «        dk    r9|                      |                     t          ||z  |¦  «        ¦  «        ¦  «         g |d ‰…         ¢|‘|‰dz   d …         ¢|‘}	ˆˆfd„}
t          t          j                             | |	|
¦  «        ¦  «        S )Nr   )r  r$   c                 ód   •— | d         | ‰         ‰z  z   }g | d ‰…         ¢|‘| ‰dz   d…         ¢R S )Nr-  r$   rp   )rö  Údim_idxr¥   r  s     €€rW   rÇ  zunfold.<locals>.reindexerÚ  sF   ø€ Ø�b”'˜C œH t™OÑ+ˆØ8��T�c�T”Ð8˜GÐ8 c¨#°©'°B¨,Ô&7Ð8Ð8Ð8rY   )r¢   r¡   r   r  rò  rC   r  r	  Ú	guard_leqÚguard_ltr   rí  rî  r   r5   r'   rË  rà   )rt   Ú	dimensionrå   r  rÄ  ÚndimÚdim_sizer	  Únew_dim_sizeÚout_sizerÇ  r¥   s      `       @rW   Úunfoldrì  Æ  s^  øø€ à�JŠJ‰LŒL€EÝˆu‰:Œ:€DÝ
˜4 Ñ
+Ô
+€Càˆq‚y€yÝ•i  1‘o”o¨4Ð0Ñ0Ô0Ð0à�SŒz€HÝŒwÔ€HØ×Ò�t˜XÑ&Ô&Ð&Ø×Ò�a˜ÑÔÐå˜H t™O¨TÑ2Ô2°QÑ6€LØ×Ò˜(Ñ#Ô# aÒ'Ð'Ø	�Š�X×'Ò'­°¸tÑ0CÀXÑ(NÔ(NÑOÔOÑPÔPÐPàD��t˜�t”ÐD˜lÐD¨U°3¸±7°9°9Ô-=ÐD¸tÐD€Hð9ð 9ð 9ð 9ð 9ð 9õ •R”^×*Ò*¨1¨h¸	ÑBÔBÑCÔCÐCrY   c                 óÐ   — t          | |d¦  «        }t          |                      ¦   «         ¦  «        }|                     |t          j        j        ¦  «         t          | |¦  «        S r¬  )r  ry   r¢   Úinsertr•   r  r  r�  )rt   r¥   rÏ  s      rW   rò  rò  á  sR   € å
˜˜3 Ñ
"Ô
"€CÝ�Q—Z’Z‘\”\Ñ"Ô"€IØ×Ò�S�%œ'œ+Ñ&Ô&Ð&Ý��9ÑÔÐrY   c                 óš   — t          | |¦  «        }t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        | _        | S r`   )rò  rZ   r5   rV  rÕ  s      rW   Ú
unsqueeze_rð  é  sK   € å
�A�sÑ
Ô
€CÝ�a�Ñ#Ô#Ð#Ð#Ð#Ý�c�9Ñ%Ô%Ð%Ð%Ð%ØŒX€A„FØ€HrY   c                 ó  — t           j        j        j                             t          j        |¦  «        ¦  «        }t          |                      ¦   «         ¦  «        }|dk     r|||z   z  }d|cxk    r	||z   k     sn J ‚|S r§  )	rC   r  r	  r
  r  r•   Úsympifyr¡   r¢   )rt   r¥   r¹  rè  s       rW   r  r  ò  s�   € Ý
Œ'Ô
Ô
$×
2Ò
2µ5´=ÀÑ3EÔ3EÑ
FÔ
F€CÝˆq�zŠz‰|Œ|ÑÔ€DØ
ˆQ‚w€wØˆt�f‰}ÑˆØ�Ð#Ð#Ò#Ð#�d˜V‘mÒ#Ð#Ð#Ð#Ð#Ð#Ø€JrY   r-  c                 ó*  — t          | |d¦  «        }t          j        j                             |                      ¦   «         |         ¦  «        dz  }t          | |d|¦  «        }t          | |||dz  ¦  «        }t          |t          |¦  «        ¦  «        S )Nr   r"   )	r  rC   r  r	  rË  r¢   r  rE  Úsigmoid)rt   r¥   Únew_lenrÇ   r  s        rW   Úglurö  û  s}   € å
˜˜3 Ñ
"Ô
"€CåŒgÔ×4Ò4°Q·Z²Z±\´\À#Ô5FÑGÔGÈ1ÑL€GÝˆq�#�q˜'Ñ"Ô"€AÝˆq�#�w ¨!¡Ñ,Ô,€AÝˆq•'˜!‘*”*ÑÔÐrY   c                 óJ   ‡ — |rt                                ‰ ¦  «         ˆ fd„}|S )Nc                  ód   •— d„ }t          j        |t          j        j        ‰g| ¢R i |¤Ž¦  «        S )Nc                 ób   — t          | t          j        ¦  «        rt          j        | ¦  «        n| S r`   )rZ   r'   r.   r5   rà   r˜   s    rW   Úwrap_tensorsz7fallback_handler.<locals>.handler.<locals>.wrap_tensors
  s)   € Ý*4°Q½¼	Ñ*BÔ*BÐI•9Ô# AÑ&Ô&Ð&ÈÐIrY   )ÚpytreeÚtree_mapr'   ÚFallbackKernelrà   )r©   r¹   rú  Úkernels      €rW   Úhandlerz!fallback_handler.<locals>.handler	  sN   ø€ ð	Jð 	Jð 	Jõ ŒØ�"Ô+Ô2°6ÐK¸DÐKÐKÐKÀFÐKÐKñ
ô 
ð 	
rY   )rF   r|   )rþ  r|  rÿ  s   `  rW   r�  r�    s=   ø€ Øð Ý�Š�fÑÔÐð
ð 
ð 
ð 
ð 
ð €NrY   c                  ó.   — t          j        d¦  «         d S )NzjTorchinductor does not support code generation for complex operators. Performance may be worse than eager.)ÚwarningsÚwarnrp   rY   rW   Ú_warn_complex_not_supportedr    s#   € å„MØtñô ð ð ð rY   rY  c                 óÐ   — |                       ¦   «         rQ|r?|j        t          j        j        j        j        t          j        j        j        j	        fv rdS t          ¦   «          dS dS )z0Do not support reading or writing to this tensorFT)r~  r^  rO   rB   rŽ  r�  r�   r‚  rƒ  r„  r  ©rY  Úparents     rW   Úunsupported_input_tensorr    sd   € à‡|‚|�~„~ð àð 	�f”mÝŒIŒNÔÔ%ÝŒIŒOÔ0Ô8ð(
ð 
ð 
ð �5Ý#Ñ%Ô%Ð%ØˆtØˆ5rY   c                 óL   — t          | |¦  «        rdS | j        ot          j        S )z2Do not support writing tensor but can read from itT)r  Úis_cpur%   Údisable_cpp_codegenr  s     rW   Úunsupported_output_tensorr  +  s)   € å  6Ñ*Ô*ð ØˆtØŒ8Ð2�Ô2Ð2rY   rf  c                 óê   — | j         t          j        j        u rdS | j         t          j        j        u rdS d„ }t          j        | j        i | j        ¤ŽD ]} ||| d¬¦  «        r dS Œ || | d¬¦  «        S )NFc                 ó4  — t          | t          j        j        ¦  «        sdS d| j        vrdS t          j        | j        d         ¦  «        D ]K}t          |t          j        j        ¦  «        sŒ"|rt          ||¦  «        r dS Œ8t          ||¦  «        r dS ŒLdS )NFrÖ  T)rZ   rO   ÚfxÚNoderH  rû  Útree_leavesÚ_subclassesÚ
FakeTensorr  r  )rf  r  Ú	is_outputrH  s       rW   Úcheck_skip_conditionzCfallback_node_due_to_unsupported_type.<locals>.check_skip_condition;  s¸   € Ý˜$¥¤¤Ñ.Ô.ð 	Ø�5à˜œ	Ð!Ð!Ø�5åÔ& t¤y°Ô'7Ñ8Ô8ð 		 ð 		 ˆDÝ˜d¥EÔ$5Ô$@ÑAÔAð Øàð  Ý,¨T°6Ñ:Ô:ð  Ø˜4˜4ð õ ,¨D°&Ñ9Ô9ð  Ø˜4˜4ð ð ˆurY   )r  T)	r^  rŽ  Úview_as_complexr„  Úlift_fresh_copyrû  Úarg_tree_leavesr©   r¹   )rf  Úallow_cpu_inputsr  r¨   s       rW   Ú%fallback_node_due_to_unsupported_typer  2  s¨   € à„{•dÔ*Ô2Ð2Ð2Øˆuð „{•dÔ*Ô2Ð2Ð2Øˆuðð ð õ* Ô% t¤yÐ@°D´KÐ@Ð@ð ð ˆØÐ  T°UÐ;Ñ;Ô;ð 	Ø�4�4ð	ð  Ð  d°dÐ;Ñ;Ô;Ð;rY   c                 ó  ‡— | t           vs|sJ d| › �¦   «         ‚|r°t          t          j        d¦  «        ¦  «        r�t	          | g¦  «        rt
          j        r| t          j        j	        j
        v s[|sYt          j        j        j        r0dt          j        j        _        t                               d¦  «         t          d| › d�¦  «        ‚ˆfd„}t!          | t          j        j        ¦  «        r4|                      ¦   «         D ]}t)          | |¦  «        } ||¦  «         Œd S t!          | t          j        j        t          j        j        f¦  «        r || ¦  «         d S t/          d| › d	t1          | ¦  «        › �¦  «        ‚)
Nz*both a fallback and a decomp for same op: ÚCIFznA make_fallback error occurred in suppress_errors config, and suppress_errors is being disabled to surface it.zmake_fallback(a.  ): a decomposition exists, we should switch to it. To fix this error, either add a decomposition to core_aten_decompositions (preferred) or inductor_decompositions, and delete the corresponding `make_fallback` line. Get help from the inductor team if unsure, don't pick arbitrarily to unblock yourself.c                 ó”   •— t          | ¦  «         ‰�t          | ‰¦  «          t          | d ¬¦  «        t          | ¦  «        ¦  «        S ©Nry  )rq   r‚   rÿ   r�  )Úop_overloadÚlayout_constraints    €rW   Úregister_fallbackz(make_fallback.<locals>.register_fallbackw  sU   ø€ Ý! +Ñ.Ô.Ð.ØÐ(Ý! +Ð/@ÑAÔAÐAØGÕ  À$ÐGÑGÔGÝ˜[Ñ)Ô)ñ
ô 
ð 	
rY   zUnsupported fallback z with type )r)   r›   ÚosÚgetenvr*   r%   Úfallback_randomrO   Ú_decompÚdecompositions_for_rngÚextra_random_decompsÚ_dynamoÚsuppress_errorsÚlogÚwarningrU   rZ   r[   r}   r   re   r\   ÚHigherOrderOperatorÚRuntimeErrorrF  )r¶   r  r  Úoverride_decompr   Úolr  s    `     rW   Úmake_fallbackr/  W  sË  ø€ à
•.Ð Ð  OÐ Ð Ø8°BÐ8Ð8ñ 	!Ô Ð3ð 	ð
å•”˜4‘”Ñ!Ô!ð
õ  ˜tÑ$Ô$ð
õ Ô"ð
ð •e”mÔ:ÔOÐOÐOàð Põ Œ=ÔÔ/ð 	Ø38�EŒMÔ Ô0Ý�KŠKðHñô ð õ ðf˜Rð fð fð fñ
ô 
ð 	
ð
ð 
ð 
ð 
ð 
õ �"•e”jÔ1Ñ2Ô2ð NØ—,’,‘.”.ð 	+ð 	+ˆBÝ! " b™/œ/ˆKØÐ˜kÑ*Ô*Ð*Ð*ð	+ð 	+õ 
�B�œÔ.µ´
Ô0NÐOÑ	PÔ	Pð NØÐ˜"ÑÔÐÐÐåÐL°2ÐLÐLÅ$ÀrÁ(Ä(ÐLÐLÑMÔMÐMrY   c                 óP   — d}| D ]}||z  }Œt          |t          j        ¬¦  «        S )zÎ
    TorchInductor offset calculation differs from PyTorch eager offset
    calculation for random ops (tl.rand vs torch.rand). In future, we should
    strive for same impl for tl.rand and torch.rand.
    r$   r‘   ©ÚtensorrO   r7  )ró  ÚnumelrÐ  s      rW   Úphilox_rand_offsetr4  ‰  s8   € ð €EØð ð ˆØ˜‘	ˆˆÝ�%�uœ{Ð+Ñ+Ô+Ð+rY   c                 óf  ‡‡	‡
‡— t          j        |‰| t           j                             | ¦  «        ¦  «                             ¦   «         Š
|                     ¦   «         Š|                     ¦   «         Š	ˆˆ	ˆ
ˆfd„}t          j        |‰|t          | ¦  «        ¬¦  «        }t          | ¦  «        }||fS )Nc                 ón  •— t          j         ‰g ¦  «        t          j        ¦  «        }t          j         ‰g ¦  «        t          j        ¦  «        }t          j        t          j         ‰| ¦  «        t          j        ¦  «        |¦  «        }t          j        ||¦  «        }t          j        |‰¦  «        S r`   )rB   rÍ   rO   r±  r|   r6  Úrand)	r  Úseed_index_exprÚoffset_index_exprÚrand_index_exprr,  r�   Úoffset_loaderÚ
random_posÚseed_loaders	        €€€€rW   rC  zphilox_rand.<locals>.inner_fn¢  sš   ø€ õ œ, { {°2¡¤½¼ÑDÔDˆÝœL¨¨°rÑ):Ô):½E¼KÑHÔHÐåœ'ÝŒN˜:˜: eÑ,Ô,­e¬kÑ:Ô:Ð<Mñ
ô 
ˆõ ”ØØñ
ô 
ˆõ Œ|˜F EÑ*Ô*Ð*rY   rD  )
r'   r!  ÚFlexibleLayoutÚcontiguous_stridesÚmake_indexerr0  r2   rà   ry   r4  )rå   Úseedr¹  r#  rÌ   r�   rC  Úrandom_values_nodeÚoffset_noder;  r<  r=  s        `   @@@rW   Úphilox_randrD  •  sÖ   øøøø€ õ ”ØØØÝ
Ô×,Ò,¨TÑ2Ô2ñ	ô ÷
 ‚l�n„nð ð ×"Ò"Ñ$Ô$€KØ×&Ò&Ñ(Ô(€Mð+ð +ð +ð +ð +ð +ð +ð +õ #Ô)ØØØÝ�D‰zŒzð	ñ ô Ðõ % TÑ*Ô*€KØ˜{Ð*Ð*rY   c           	      óÔ   — t           j        rNt          j        t          j        t          j                             t          j	        j
        | ||¦  «        ¦  «        S t          d¦  «        ‚)Nz&should be handled in replace_random.py)r%   r#  rû  rü  r5   rà   r'   rý  rŽ  Únative_dropoutr„  rU   )rt   ÚpÚtrains      rW   rF  rF  ¼  sY   € åÔð GÝŒÝÔÝÔ×$Ò$¥TÔ%8Ô%@À!ÀQÈÑNÔNñ
ô 
ð 	
õ
 ÐEÑFÔFÐFrY   c                 ót  — t           j        s4|                      ¦   «         t          j        d¦  «        k    s
J d¦   «         ‚|                      ¦   «          t          |¦  «        dk    st          |d         t          ¦  «        rt          j
        j        nt          j
        j        }t          j        || g|¢R Ž  | S )Nrƒ  úTthis should be handled in decomps unless config.fallback_random or the device is CPUr   )r%   r#  rÚ   rO   rÌ   rb  r¡   rZ   r  rŽ  Ú
bernoulli_ÚTensorr'   ÚInplaceBernoulliFallback)rt   r©   r  s      rW   rK  rK  Ç  s¸   € åÔ!ð ^ Q§\¢\¡^¤^µu´|Øñ8ô 8ò &ð &ð &à]ñ&ô &ð ð ‡I‚I�K„K€Kõ ˆt‰9Œ9˜Š>ˆ>�Z¨¨Q¬µÑ7Ô7ˆ>õ 	ŒÔÐåŒ_Ô#ð õ
 Ô ¨QÐ6°Ð6Ð6Ð6Ð6Ø€HrY   c                 ó¶   — t           j        s4|                      ¦   «         t          j        d¦  «        k    s
J d¦   «         ‚t          t          | ¦  «        g|¢R Ž S )Nrƒ  rJ  )r%   r#  rÚ   rO   rÌ   rK  rw  )rt   r©   s     rW   Úbernoulli_prO  Ö  sh   € åÔ!ð ^ Q§\¢\¡^¤^µu´|Øñ8ô 8ò &ð &ð &à]ñ&ô &ð õ •e˜A‘h”hÐ& Ð&Ð&Ð&Ð&rY   c                 ó   — t           ‚r`   ©rU   ©r«   s    rW   Ú_foobarrS  ß  s   € å
ÐrY   c                 ó:   — t                                d¦  «         d S )Nz1using triton random, expect difference from eager)r)  Úinfo)Úsalts    rW   Ú_warn_triton_randomrW  ä  s   € å‡H‚HÐ@ÑAÔAÐAÐAÐArY   c                  óB   — t          t          j        j        ¦  «         d S r`   )rW  rC   r  Úcreation_timerp   rY   rW   Úwarn_triton_randomrZ  é  s   € å�œÔ-Ñ.Ô.Ð.Ð.Ð.rY   c                  óÀ   — |                      dd ¦  «        �t          | i |¤ŽS t          j        r"|                     dd ¦  «         t          | i |¤ŽS t          d¦  «        ‚©NÚ	generatorz-should have been handled in replace_random.py)rI  Úfallback_rand_generatorr%   r#  ÚpopÚfallback_rand_defaultrU   ©r©   r¹   s     rW   r7  r7  õ  sj   € à‡z‚z�+˜tÑ$Ô$Ð0Ý&¨Ð7°Ð7Ð7Ð7Ý	Ô	ð 6Ø�
Š
�; Ñ%Ô%Ð%Ý$ dÐ5¨fÐ5Ð5Ð5Ý
ÐHÑ
IÔ
IÐIrY   c                  óÀ   — |                      dd ¦  «        �t          | i |¤ŽS t          j        r"|                     dd ¦  «         t          | i |¤ŽS t          d¦  «        ‚r\  )rI  Úfallback_randn_generatorr%   r#  r_  Úfallback_randn_defaultrU   ra  s     rW   Úrandnre  ÿ  sj   € à‡z‚z�+˜tÑ$Ô$Ð0Ý'¨Ð8°Ð8Ð8Ð8Ý	Ô	ð 7Ø�
Š
�; Ñ%Ô%Ð%Ý% tÐ6¨vÐ6Ð6Ð6Ý
ÐHÑ
IÔ
IÐIrY   c                 ój   — t          j        |¦  «        }t           j                             | |¦  «        S r`   )r'   Úget_stride_orderÚExternKernelÚrequire_stride_order)Úinput_tensorr#  Ústride_orders      rW   Úinductor_force_stride_orderrl  	  s*   € åÔ& vÑ.Ô.€LÝŒ?×/Ò/°¸lÑKÔKÐKrY   c                 ó    — t          d¦  «        ‚)Nz.should be handled in fuse_seed_creation_pass()rQ  )rÌ   s    rW   Úinductor_seedrn    s   € å
ÐIÑ
JÔ
JÐJrY   c                 ó†   — t          ¦   «          t          j        t          j        | t          |¦  «        ¦  «        ¦  «        S r`   )rZ  r5   rà   r'   ÚRandomSeedsr9   )r¡  rÌ   s     rW   Úinductor_seedsrq    s3   € åÑÔÐÝÔ�BœN¨5µ-ÀÑ2GÔ2GÑHÔHÑIÔIÐIrY   c                 óŠ   ‡ ‡— ˆˆ fd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |g ¬¦  «        S )Nc                 óR   •— t          j        ‰                     ¦   «         ‰¦  «        S r`   )rB   Ú	load_seedÚget_name)r«   r  Úseedss    €€rW   rC  z&inductor_lookup_seed.<locals>.inner_fn  s   ø€ ÝŒ}˜UŸ^š^Ñ-Ô-¨uÑ5Ô5Ð5rY   rD  )r2   rà   rÚ   r”   )rv  r  rC  s   `` rW   Úinductor_lookup_seedrw    s`   øø€ ð6ð 6ð 6ð 6ð 6ð 6õ ÔØ×ÒÑ!Ô!Ø�oŠoÑÔØØð	ñ ô ð rY   ©r¹  rå   rA  Úmodec                óž  ‡‡‡	— t           j        rJ ‚‰dv sJ ‚g | ¢} t          j        }|                     ¦   «         }t          j        ||| t
          j                             | ¦  «        |¬¦  «         	                    ¦   «         Š| 
                    ¦   «         Š	ˆˆˆ	fd„}t          j        |||g | ¢¬¦  «        }|                     ¦   «          |S )N)r7  re  rx  c                 ó    •—  t          t          ‰¦  «         ‰g ¦  «        t          j         ‰| ¦  «        t          j        ¦  «        ¦  «        S r`   )re   rB   r6  rO   r±  )r  ry  r<  r=  s    €€€rW   rC  z!inductor_random.<locals>.inner_fn3  sG   ø€ Ø!�w•s˜DÑ!Ô!ØˆK˜‰OŒOÝŒN˜:˜: eÑ,Ô,­e¬kÑ:Ô:ñ
ô 
ð 	
rY   rD  )r%   r#  rO   rT  r!  r'   r!  r>  r?  r@  r0  r2   rà   rb  )
rå   rA  ry  r¹  r�   rÌ   rC  r,  r<  r=  s
     `     @@rW   Úinductor_randomr|  '  sü   øøø€ åÔ%Ð%Ð%Ð%ØÐ$Ð$Ð$Ð$Ð$ØˆTˆ7€DÝŒM€EØ×%Ò%Ñ'Ô'€FÝ”Ø��t�RÔ.×AÒAÀ$ÑGÔGÐPVðñ ô ç‚l�n„nð ð ×"Ò"Ñ$Ô$€Kð
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØØØØ�ˆwð	ñ ô €Fð ‡N‚NÑÔÐØ€MrY   ÚlowÚhighc                ój  ‡ ‡‡‡	— t           j        rJ ‚g |¢}t          j        }|                     ¦   «         }t          j        |||t
          j                             |¦  «        |¬¦  «         	                    ¦   «         Š| 
                    ¦   «         Š	ˆˆ ˆˆ	fd„}t          j        |||g |¢¬¦  «        S )Nrx  c           	      ó  •— t          j         ‰g ¦  «        t          j         ‰| ¦  «        t          j        ¦  «        t          j        ‰t          j        ¦  «        t          j        ‰t          j        ¦  «        ¦  «        S r`   )rB   Ú	randint64r6  rO   r±  r7  )r  r~  r}  r<  r=  s    €€€€rW   rC  z"inductor_randint.<locals>.inner_fnP  s_   ø€ ÝŒ}ØˆK˜‰OŒOÝŒN˜:˜: eÑ,Ô,­e¬kÑ:Ô:ÝŒN˜3¥¤Ñ,Ô,ÝŒN˜4¥¤Ñ-Ô-ñ	
ô 
ð 	
rY   rD  )r%   r#  rO   r7  r!  r'   r!  r>  r?  r@  r0  r2   rà   )
r}  r~  rå   rA  r¹  r�   rÌ   rC  r<  r=  s
   ``      @@rW   Úinductor_randintr‚  C  sÞ   øøøø€ õ Ô%Ð%Ð%Ð%ØˆTˆ7€DÝŒK€EØ×%Ò%Ñ'Ô'€FÝ”Ø��t�RÔ.×AÒAÀ$ÑGÔGÐPVðñ ô ç‚l�n„nð ð ×"Ò"Ñ$Ô$€Kð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØØØØ�ˆwð	ñ ô ð rY   Útbc                 óø   — |                       ¦   «         |                      ¦   «         d         |                      ¦   «         d         |                      ¦   «         d         z  |                      ¦   «         d         fS ©Nr-  r   )ru  r¢   Ú
get_stride©rƒ  s    rW   Ú_boundaries_helperrˆ  `  sY   € à
�Š‰ŒØ
�Š‰Œ�bÔØ
�Š‰Œ�aÔ˜2Ÿ=š=™?œ?¨1Ô-Ñ-Ø
�Š‰Œ˜Ôð	ð rY   c                 ó^   — |                       ¦   «         |                      ¦   «         d         fS rñ  )ru  r†  r‡  s    rW   Ú_sorter_helperrŠ  i  s"   € Ø�;Š;‰=Œ=˜"Ÿ-š-™/œ/¨"Ô-Ð-Ð-rY   ©Ú	out_int32ÚrightÚsideÚsorterÚsorted_sequenceÚselfrŒ  r�  rŽ  r�  c                óL  ‡ ‡‡‡	‡
— d„ } |‰ ¦  «        r ||¦  «        r‰�: |‰¦  «        s/ t          t          j        j        d¬¦  «        ‰ ||‰|‰¬¦  «        S |�|dk    rdŠ|rt          j        nt          j        Š	|                     ¦   «         Š
‰                      ¦   «          ‰�‰                     ¦   «          t          ‰  
                    ¦   «         ¦  «        dk    r
ˆ	ˆˆ ˆˆ
fd„}n	ˆ	ˆˆ ˆˆ
fd	„}|                     ¦   «         }t          j        |‰	||j        ¬
¦  «        S )Nc                 óV   — t           j                             | t          j        ¦  «        S r`   )rC   r  r_  r`  Ú	BUCKETIZEr‡  s    rW   r4  zsearchsorted.<locals>.<lambda>w  s    € ¥A¤G×$7Ò$7Ø
�NÔ$ñ%ô %€ rY   Fr{  r‹  r�  Tr$   c           
      ó”   •—  ‰| ¦  «        }t          j        |t          ‰¦  «        d‰‰‰€d nt          ‰¦  «        ‰€d nd¬¦  «        S )Nr   ©r�  Úsorter_indices)rB   Ú	bucketizerˆ  rŠ  )rö  rÖ  Úindex_dtyper�  r�  r�  Úvalues_loaders     €€€€€rW   rC  zsearchsorted.<locals>.inner_fnœ  s`   ø€ Ø�- Ñ$Ô$ˆCÝ”=ØÝ" ?Ñ3Ô3ØØØØ%˜~�t�tµ>À&Ñ3IÔ3IØ'- ~˜t˜t¸1ðñ ô ð rY   c                 óÖ   •‡ —  ‰‰ ¦  «        }dt           fˆ ˆfd„}t          j        |t          ‰¦  «         |‰¦  «        ‰‰‰€d nt	          ‰¦  «        ‰€d n
 |‰¦  «        ¬¦  «        S )Nrƒ  c                 óà   •— |                       ¦   «         }t          j        t          j        t
          j        d„ t          |d d…         ‰d d…         ¦  «        D ¦   «         ¦  «        ‰¦  «        S )Nc              3   ó&   K  — | ]\  }}||z  V — Œd S r`   rp   )rs   rÐ  rÀ   s      rW   rx   zNsearchsorted.<locals>.inner_fn.<locals>.get_flattened_index.<locals>.<genexpr>³  s*   è è € Ð&UÐ&U±°°A q¨1¡uÐ&UÐ&UÐ&UÐ&UÐ&UÐ&UrY   r-  )r†  rB   r6  rì   rÃ  Úoperatorr|   rÞ   )rƒ  Ústridesrö  r™  s     €€rW   Úget_flattened_indexz;searchsorted.<locals>.inner_fn.<locals>.get_flattened_index¯  sj   ø€ ØŸ-š-™/œ/�Ý”~ÝÔ$Ý œÐ&UÐ&U½¸WÀSÀbÀS¼\È3ÈsÐPRÈsÌ8Ñ9TÔ9TÐ&UÑ&UÔ&Uñô ð  ñ	ô ð rY   r–  )r5   rB   r˜  rˆ  rŠ  )rö  rÖ  r   r™  r�  r�  r�  rš  s   `  €€€€€rW   rC  zsearchsorted.<locals>.inner_fnª  s¤   øø€ Ø�- Ñ$Ô$ˆCð­	ð ð ð ð ð ð ð õ ”=ØÝ" ?Ñ3Ô3Ø#Ð# OÑ4Ô4ØØØ%˜~�t�tµ>À&Ñ3IÔ3IØ'- ~˜t˜tÐ;NÐ;NÈvÑ;VÔ;Vðñ ô ð rY   rD  )r�  rŽ  ÚsearchsortedrL  rO   r±  r7  r0  rb  r¡   r¢   rÚ   r2   rà   ró  )r�  r‘  rŒ  r�  rŽ  r�  Úvalidate_bucketizerC  rÌ   r™  rš  s   `  ` `   @@rW   r¡  r¡  m  s­  øøøøø€ ðð Ðð Ð˜Ñ/Ô/ð
à!Ð! $Ñ'Ô'ð
ð ÐÐ'9Ð'9¸&Ñ'AÔ'AÐàTÕ¥Ô 1Ô 8ÈeÐTÑTÔTØØØØØØð
ñ 
ô 
ð 	
ð Ð˜D GšO˜OØˆà!*Ð;•%”+�+µ´€KØ×$Ò$Ñ&Ô&€Mð ×ÒÑÔÐàÐØ�ŠÑÔÐå
ˆ?×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+ð
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð0 �_Š_ÑÔ€FÝÔØØØØŒzð	ñ ô ð rY   ©rŒ  r�  Ú
boundariesc                ój  ‡‡‡‡— t          ‰                     ¦   «         ¦  «        dk    sJ ‚t          j                             | t
          j        ¦  «        r*t          j                             ‰t
          j        ¦  «        s- t          t          j	        j
        d¬¦  «        | ‰|‰¬¦  «        S ‰                     ¦   «          |                      ¦   «         }|                      ¦   «         Š|rt          j        nt          j        Šˆˆˆˆfd„}t#          j        |‰||                      ¦   «         ¬¦  «        S )Nr$   Fr{  r£  c                 óh   •—  ‰| ¦  «        }t          j        |t          ‰¦  «        d‰‰¦  «        }|S r§  )rB   r˜  rˆ  )r  rÖ  r¾  r¤  r™  r_  r�  s      €€€€rW   rC  zbucketize.<locals>.inner_fnç  sA   ø€ Øˆl˜5Ñ!Ô!ˆÝ”-ØÝ˜zÑ*Ô*ØØØñ
ô 
ˆð ˆrY   rD  )r¡   r¢   rC   r  r_  r`  r”  r�  rŽ  r˜  rL  rb  rÚ   r0  rO   r±  r7  r2   rà   )ri  r¤  rŒ  r�  rÌ   rC  r™  r_  s    ` `  @@rW   r˜  r˜  Ë  sC  øøøø€ õ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*õ 	
Œ×Ò˜E¥>Ô#;Ñ<Ô<ð
åŒG×Ò 
­NÔ,DÑEÔEð
ð RÕ¥¤Ô 5È5ÐQÑQÔQØ�:¨¸%ð
ñ 
ô 
ð 	
ð ×ÒÑÔÐØ×ÒÑÔ€FØ×$Ò$Ñ&Ô&€Là!*Ð;•%”+�+µ´€Kð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØØØØ�~Š~ÑÔð	ñ ô ð rY   c                 ór   — t          j        t          j        t          j        j        ||f¦  «        \  }}||fS r`   )rû  Útree_map_onlyr'   r.   rh  Úrequire_stride1©r«   r©   r¹   s      rW   Úrequire_denser«  û  s6   € ÝÔ'Ý
Œ	•2”?Ô2°T¸6°Nñô �L€Dˆ&ð �ˆ<ÐrY   c                 ór   — t          j        t          j        t          j        j        ||f¦  «        \  }}||fS r`   )rû  r¨  r'   r.   rh  Úrequire_contiguousrª  s      rW   r­  r­  	  s6   € ÝÔ'Ý
Œ	•2”?Ô5¸¸f°~ñô �L€Dˆ&ð �ˆ<ÐrY   c                 ór   — t          j        t          j        t          j        j        ||f¦  «        \  }}||fS r`   )rû  r¨  r'   r.   rh  r°  rª  s      rW   r°  r°  		  s6   € ÝÔ'Ý
Œ	•2”?Ô8¸4À¸.ñô �L€Dˆ&ð �ˆ<ÐrY   c                 ó¶   ‡ ‡— ˆfd„Št          ˆfd„t          |‰ j        ¦  «        D ¦   «         ¦  «        }ˆˆ fd„|                     ¦   «         D ¦   «         }||fS )Nc                 óz  •‡ ‡— t          ‰ t          j        ¦  «        rft          j        ‰j        d                              ¦   «         t          j        j        j	        ¦  «        }t          j
                             ‰ |¦  «        S t          ‰ t          ¦  «        r"ˆˆ ˆfd„‰                      ¦   «         D ¦   «         S ‰ S )NrÖ  c                 óB   •— i | ]}| ‰‰|         ‰|         ¦  «        “ŒS rp   rp   )rs   ÚkeyÚapply_constraintr¨   Úfx_args     €€€rW   rÒ   zEconstrain_to_fx_strides.<locals>.apply_constraint.<locals>.<dictcomp>	  s1   ø€ ÐWÐWÐWÀS�CÐ)Ð)¨#¨c¬(°F¸3´KÑ@Ô@ÐWÐWÐWrY   )rZ   r'   r.   rg  rH  r#  rC   r  r	  r
  rh  ri  rî   rù   )r¨   r´  rk  r³  s   `` €rW   r³  z1constrain_to_fx_strides.<locals>.apply_constraint	  s¦   øøø€ Ý�c�2œ9Ñ%Ô%ð 	KÝÔ.Ø”˜EÔ"×)Ò)Ñ+Ô+­Q¬WÔ-=Ô-Gñô ˆLõ ”?×7Ò7¸¸\ÑJÔJÐJÝ�c�4Ñ Ô ð 	XØWÐWÐWÐWÐWÐWÈCÏHÊHÉJÌJÐWÑWÔWÐWØˆ
rY   c              3   ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S r`   rp   )rs   r¨   r´  r³  s      €rW   rx   z*constrain_to_fx_strides.<locals>.<genexpr>	  sF   øè è € ð ð Ù*5¨#¨vÐÐ˜˜fÑ%Ô%ðð ð ð ð ð rY   c                 óF   •— i | ]\  }}| ‰|‰j         |         ¦  «        “ŒS rp   ©r¹   ©rs   rÂ   rÃ   r³  Úfx_nodes      €€rW   rÒ   z+constrain_to_fx_strides.<locals>.<dictcomp>	  s4   ø€ ÐSÐSÐS¹D¸A¸qˆaÐ!Ð! ! W¤^°AÔ%6Ñ7Ô7ÐSÐSÐSrY   )rz   rÞ   r©   r×   ©r¹  r©   r¹   r³  s   `  @rW   rS   rS   	  s‘   øø€ ðð ð ð ð õ ð ð ð ð Ý9<¸TÀ7Ä<Ñ9PÔ9Pðñ ô ñ ô €Dð TÐSÐSÐSÐSÀFÇLÂLÁNÄNÐSÑSÔS€FØ�ˆ<ÐrY   c           	      óÐ   ‡ ‡— ˆ fd„Št          ˆfd„t          t          |‰ j        ¦  «        ¦  «        D ¦   «         ¦  «        }ˆˆ fd„|                     ¦   «         D ¦   «         }||fS )Nc           
      óÆ  •‡— t          |t          j        ¦  «        s|S |j        d         }|                     ¦   «         }t          j        |¦  «        }|rT|d         dk    rHt          t          t          t          | 
                    ¦   «         ¦  «        ¦  «        ¦  «        ¦  «        }‰	j        t          j        j        k    r| dv rt          |¦  «        dk    sJ ‚d}|j        s t          j                             ||¦  «        S dŠt          |t$          ¦  «        sJ ‚t          | 
                    ¦   «         ¦  «        dvr|S ˆfd	„}t          |t          ¦  «        r\|                     ¦   «         �H ||¦  «        r=t(          j                             t          j                             |¦  «        |¦  «        S ˆfd
„}t          |j        t          j        ¦  «        re ||¦  «        sZ ||                     ¦   «         ¦  «        r=t(          j                             t          j                             |¦  «        |¦  «        S t          j                             ||¦  «        S )NrÖ  r-  r   )r   r…   r„   )rƒ   r$   r"   r   rˆ   ©rƒ   r„   c           	      ó¤  •‡ — t          ˆˆ fd„t          t          ‰                      ¦   «         ¦  «        dz
  ¦  «        D ¦   «         ¦  «        }t          j        j                             ‰                      ¦   «         d         ¦  «        dk    p?t          j        j                             ‰                      ¦   «         d         ¦  «        dk    }|o|S )Nc              3   óž   •K  — | ]G}t           j        j                             ‰                     ¦   «         |         ¦  «        ‰z  d k    V — ŒHdS ©r   N)rC   r  r	  rí  r†  )rs   rÀ   Ú	ALIGNMENTrt   s     €€rW   rx   z`sdpa_constraint.<locals>.apply_constraint.<locals>.is_aligned_realized_tensor.<locals>.<genexpr>J	  sa   øè è € ð "ð "àõ ”Ô!×+Ò+¨A¯LªL©N¬N¸1Ô,=Ñ>Ô>ÀÑJÈqÒPð"ð "ð "ð "ð "ð "rY   r$   r-  )	r÷   rß   r¡   r†  rC   r  r	  rí  r¢   )rt   Úaligned_stridesÚaligned_last_dimrÁ  s   `  €rW   Úis_aligned_realized_tensorzMsdpa_constraint.<locals>.apply_constraint.<locals>.is_aligned_realized_tensorI	  sÅ   øø€ Ý!ð "ð "ð "ð "ð "å�s 1§<¢<¡>¤>Ñ2Ô2°QÑ6Ñ7Ô7ð"ñ "ô "ñ ô ˆOõ ”Ô ×*Ò*¨1¯<ª<©>¬>¸"Ô+=Ñ>Ô>À!ÒCð EÝ”7Ô#×-Ò-¨a¯jªj©l¬l¸2Ô.>Ñ?Ô?À1ÒDð ð $Ð7¨Ð7rY   c                 óŠ   •— t           j        j                             |                      ¦   «         d         ¦  «        ‰z  dk    S r…  )rC   r  r	  rí  r¢   )rt   rÁ  s    €rW   Ú
is_alignedz=sdpa_constraint.<locals>.apply_constraint.<locals>.is_aligned^	  s4   ø€ Ý”GÔ$×.Ò.¨q¯zªz©|¬|¸BÔ/?Ñ@Ô@À9ÑLÐQRÒRÐRrY   )rZ   r'   r.   rH  r#  rg  ry   r  rß   r¡   r¢   r^  rŽ  Ú0_scaled_dot_product_efficient_attention_backwardr„  Úis_cudarh  ri  r5   Úmaybe_get_striderC   r  Útry_match_insignificant_stridesÚrealize_inputrV  r  r  )
rö  r¨   r´  Úmeta_valÚmeta_striderk  rÄ  rÆ  rÁ  r¹  s
           @€rW   r³  z)sdpa_constraint.<locals>.apply_constraint%	  sa  øø€ Ý˜#�rœyÑ)Ô)ð 	ØˆJà”;˜uÔ%ˆØ—o’oÑ'Ô'ˆåÔ*¨;Ñ7Ô7ˆàð 	F˜L¨Ô,°Ò1Ð1å¥­­s°3·<²<±>´>Ñ/BÔ/BÑ)CÔ)CÑ DÔ DÑEÔEˆLð ŒNÝÔDÔLòMð Mà�v��å�|Ñ$Ô$¨Ò)Ð)Ð)Ð)ð
 (ˆLàÔð 	KÝ”?×7Ò7¸¸\ÑJÔJÐJð ˆ	å˜#�yÑ)Ô)Ð)Ð)Ð)Ýˆs�|Š|‰~Œ~ÑÔ fÐ,Ð,ØˆJð
	8ð 
	8ð 
	8ð 
	8ð 
	8õ �s�FÑ#Ô#ð	à×$Ò$Ñ&Ô&Ð2Ø*Ð*¨3Ñ/Ô/ð 3õ ”7×:Ò:Ý”×-Ò-¨cÑ2Ô2°Kñô ð ð	Sð 	Sð 	Sð 	Sð 	Sõ �c”h¥¤Ñ,Ô,ð 	Ø�:˜c‘?”?ð Ø�:˜cŸošoÑ/Ô/Ñ0Ô0ð Ýœ7×BÒBÝœ×5Ò5°cÑ:Ô:¸Kñô ð õ Œ×3Ò3°C¸ÑFÔFÐFrY   c              3   ó>   •K  — | ]\  }\  }} ‰|||¦  «        V — Œd S r`   rp   )rs   rö  r¨   r´  r³  s       €rW   rx   z"sdpa_constraint.<locals>.<genexpr>j	  sN   øè è € ð ð áˆC‘�#�vð 	Ð˜˜c 6Ñ*Ô*ðð ð ð ð ð rY   c           	      óH   •— i | ]\  }}| ‰d |‰j         |         ¦  «        “ŒS ©r-  r·  r¸  s      €€rW   rÒ   z#sdpa_constraint.<locals>.<dictcomp>n	  s6   ø€ ÐWÐWÐWÁÀÀ1ˆaÐ!Ð! " a¨¬¸Ô):Ñ;Ô;ÐWÐWÐWrY   )rz   rÖ   rÞ   r©   r×   rº  s   `  @rW   Úsdpa_constraintrÑ  "	  s¤   øø€ ðCGð CGð CGð CGð CGõJ ð ð ð ð å"+­C°°g´lÑ,CÔ,CÑ"DÔ"Dðñ ô ñ ô €Dð XÐWÐWÐWÐWÈÏÊÉÌÐWÑWÔW€FØ�ˆ<ÐrY   )r  c                 ó
  — |}|                       ¦   «         |                      ¦   «         k    r"t          ||                       ¦   «         ¦  «        }|                      ¦   «         |                     ¦   «         k    r"t          ||                      ¦   «         ¦  «        }|                      ¦   «         |                     ¦   «         k    r1t          ||                      ¦   «         ¦  «        }t          |¦  «        S t          |¦  «        S r`   )rÚ   r›  r”   rÍ   r¢   r  rw  )r‘  rÓ  r˜  rt   ré   s        rW   rx  rx  4
  s¾   € à€AØ‡‚ÑÔ˜CŸNšNÑ,Ô,Ò,Ð,Ý�a˜ŸšÑ*Ô*Ñ+Ô+ˆØ‡~‚~ÑÔ˜3Ÿ=š=™?œ?Ò*Ð*Ý�Q˜ŸšÑ(Ô(Ñ)Ô)ˆà‡}‚}�„˜#Ÿ,š,™.œ.Ò(Ð(Ý�Q˜Ÿš™œÑ(Ô(ˆÝ�S‰zŒzÐÝ�‰8Œ8€OrY   )Úmemory_formatc          	      óÜ   — t          j        |                      ¦   «         |                      ¦   «         |                      ¦   «         t          |                      ¦   «         ¦  «        ¬¦  «        S ©NrD  )r2   rà   rÚ   r”   r0  ry   r¢   )rt   rÓ  s     rW   rw  rw  B
  sR   € õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØ—’‘”Ý�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rY   c                 óø  — g }t          | t          ¦  «        r—t          | j        t          j        ¦  «        rx| j        } t          | t          j        ¦  «        rH|                     |                      ¦   «         ¦  «         | j        } t          | t          j        ¦  «        °Ht          | ¦  «        } t          | ¦  «        } |r:| j        } |d d d…         D ]}t          j        | |¬¦  «        } Œt          | ¦  «        } | S )Nr-  r  )rZ   r5   rV  r'   r"  r®   Ú
get_layoutrw  )rt   Úreinterpret_view_layoutsr  s      rW   Úclone_preserve_reinterpret_viewrÙ  M
  sî   € Ø!ÐÝ�!•YÑÔð ¥J¨q¬vµrÔ7IÑ$JÔ$Jð ØŒFˆÝ˜�BÔ.Ñ/Ô/ð 	Ø$×+Ò+¨A¯LªL©N¬NÑ;Ô;Ð;Ø”ˆAõ ˜�BÔ.Ñ/Ô/ð 	õ �a‰LŒLˆåˆa‰Œ€Aàð ØŒFˆØ.¨t¨t°¨tÔ4ð 	:ð 	:ˆFÝÔ"¨°&Ð9Ñ9Ô9ˆAˆAÝ�a‰LŒLˆà€HrY   r  c                ób   ‡‡‡— ˆˆˆfd„}t          j        t          |¦  «        ‰|| g¬¦  «        S )Nc                 óH   •— t          j        ‰| d         z  ‰z   ‰¬¦  «        S )Nr   r‘   ©rB   r6  )r  r�   r  r  s    €€€rW   rK   ziota.<locals>.fno
  s%   ø€ ÝŒ~˜d U¨1¤X™o°Ñ5¸UÐCÑCÔCÐCrY   rD  )r2   rà   r9   )Úlengthr  r  r�   rÌ   Úrequires_gradrK   s    ```   rW   Úiotarß  e
  sa   øøø€ ðDð Dð Dð Dð Dð Dð Dõ ÔÝ˜VÑ$Ô$ØØØˆxð	ñ ô ð rY   r¥   r  c           	      óf  ‡‡‡‡— |                       ¦   «         |                      ¦   «         k    sJ ‚|                      ¦   «         Št          | ‰d¦  «        Št          j        j                             t          j        ‰d¦  «        ¦  «        r‰|  	                    ¦   «         ‰         z   Št          j        j         
                    d‰¦  «         t          j        j                             ‰|  	                    ¦   «         ‰         ¦  «         t          t          |‰¦  «        |  	                    ¦   «         ¦  «        }|                     ¦   «         Šˆˆˆˆfd„}t          j        |                      ¦   «         |                       ¦   «         |t#          |  	                    ¦   «         ¦  «        ¬¦  «        S )Nr   c           	      óú   •— t          j        t          j        t          j        | ‰         t          j        ¦  «        t          j        ‰t          j        ¦  «        ¦  «         ‰| ¦  «         ‰| ¦  «        ¦  «        S r`   )rB   r¹  Úeqr6  rO   r±  )rö  r¥   r  Ú
src_loaderr  s    €€€€rW   rC  z select_scatter.<locals>.inner_fn†
  sd   ø€ ÝŒyÝŒFÝ”˜s 3œx­¬Ñ5Ô5Ý”˜u¥e¤kÑ2Ô2ñô ð ˆJ�s‰OŒOØˆH�S‰MŒMñ
ô 
ð 	
rY   rD  )r”   r0  r  rC   r  r	  r  r•   rÈ  r¢   rå  ræ  r  rò  r2   rà   rÚ   ry   )rt   rÓ  r¥   r  rC  rã  r  s     `` @@rW   Úselect_scatterrä  z
  sf  øøøø€ à�;Š;‰=Œ=˜CŸMšM™OœOÒ+Ð+Ð+Ð+Ø�}Š}‰Œ€HÝ
˜˜3 Ñ
"Ô
"€CÝ„wÔ×%Ò%¥e¤h¨u°aÑ&8Ô&8Ñ9Ô9ð *Ø˜Ÿ
š
™œ SÔ)Ñ)ˆÝ„GÔ×Ò˜q %Ñ(Ô(Ð(Ý„GÔ×Ò˜e Q§Z¢Z¡\¤\°#Ô%6Ñ7Ô7Ð7Ý
•˜3 Ñ$Ô$ a§j¢j¡l¤lÑ
3Ô
3€CØ—’Ñ"Ô"€Jð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rY   c           	      óÂ  ‡ ‡‡‡‡‡‡	‡
— ‰                       ¦   «         |                      ¦   «         k    sJ ‚‰                      ¦   «         Š
t          ‰ ‰d¦  «        Š‰                      ¦   «         ‰         Št          j                             ‰ ‰‰‰¦  «        \  ŠŠt          ‰                      ¦   «         ¦  «        }t          ‰‰z
  ‰dz
  z   ‰¦  «        |‰<   t          ||¦  «        }|                     ¦   «         Š	ˆˆˆˆ	ˆˆˆ ˆ
fd„}t          j        ‰                      ¦   «         ‰                       ¦   «         |t          ‰                      ¦   «         ¦  «        ¬¦  «        S )Nr   r$   c                 ó2  •‡— ‰	dk    r‰‰k    r‰
dk    r ‰| ¦  «        S t          j        | ‰         t          j        ¦  «        }t	          | ¦  «        Št          | ‰         ‰	z
  ‰
¦  «        ‰‰<   g }‰	dk    rW|                     t          j        |t          j        t          j	        ‰	¦  «        t          j        ¦  «        ¦  «        ¦  «         ‰‰k    rW|                     t          j
        |t          j        t          j	        ‰¦  «        t          j        ¦  «        ¦  «        ¦  «         ‰
dk    rz|                     t          j        t          j        t          | ‰         ‰	z
  d‰
¦  «        t          j        ¦  «        t          j        dt          j        ¦  «        ¦  «        ¦  «         |sJ ‚t          j        t           j        |¦  «        }t          j        |ˆˆfd„t%          ‰¦  «        rdnd¦  «        }t          j        || ‰| ¦  «        ¦  «        S )Nr   r$   c                  ó   •—  ‰‰ ¦  «        S r`   rp   )Úsrc_idxrã  s   €€rW   r4  z1slice_scatter.<locals>.inner_fn.<locals>.<lambda>Ë
  s   ø€ �J�J˜wÑ'Ô'€ rY   r5  )rB   r6  rO   r7  ry   r   r®   r9  r•   r  r:  râ  r!   r8  rì   rÃ  r;  r<  r™   r¹  )rö  r=  rB  Úsrc_valrè  r¥   ré  r  rã  r  r  rt   r  s       @€€€€€€€€rW   rC  zslice_scatter.<locals>.inner_fn¦
  só  øø€ Ø�AŠ:ˆ:˜# š/˜/¨d°aªi¨ià�:˜c‘?”?Ð"å”.  S¤­5¬;Ñ7Ô7ˆÝ�s‘)”)ˆÝ  C¤¨5Ñ 0°$Ñ7Ô7ˆ�‰àˆØ�AŠ:ˆ:Ø�KŠKÝ”ØÝ”N¥5¤<°Ñ#6Ô#6½¼ÑDÔDñô ñô ð ð �(Š?ˆ?Ø�KŠKÝ”ØÝ”N¥5¤<°Ñ#4Ô#4µe´kÑBÔBñô ñô ð ð �1Š9ˆ9Ø�KŠKÝ”Ý”NÝ'¨¨C¬°5Ñ(8¸!¸TÑBÔBÅEÄKñô õ ”L ¥E¤KÑ0Ô0ñ	ô ñô ð ð ˆˆˆtÝÔ¥¤¨$Ñ/Ô/ˆÝ”*ØØ'Ð'Ð'Ð'Ð'Ý  Ñ#Ô#Ð,ˆAˆA¨ñ
ô 
ˆõ
 ŒyØØØˆH�S‰MŒMñ
ô 
ð 	
rY   rD  )r”   r0  r  r¢   r'   r  Únormalize_start_endry   r   r  r2   rà   rÚ   )rt   rÓ  r¥   r  r  r  Úsrc_sizerC  ré  rã  r  s   ` ````  @@@rW   Úslice_scatterrì  ˜
  sR  øøøøøøøø€ à�;Š;‰=Œ=˜CŸMšM™OœOÒ+Ð+Ð+Ð+Ø�}Š}‰Œ€HÝ
˜˜3 Ñ
"Ô
"€CØ�zŠz‰|Œ|˜CÔ €Hå”×1Ò1°!°S¸%ÀÑEÔE�J€Eˆ3å�A—J’J‘L”LÑ!Ô!€HÝ˜S 5™[¨D°1©HÑ5°tÑ<Ô<€HˆS�MÝ
��hÑ
Ô
€CØ—’Ñ"Ô"€Jð,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
õ\ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rY   c                 óŽ   — t          | t          t          f¦  «        r(t          | ¦  «        dk    rt	          | d         ¦  «        S | S r§  )rZ   ry   rz   r¡   Ú_unwrapr˜   s    rW   rî  rî  Ü
  s;   € Ý�!•d�E�]Ñ#Ô#ð ­¨A©¬°ª
¨
Ý�q˜”t‰}Œ}ÐØ€HrY   ©r�   rÌ   r  Ú
pin_memoryc                ó:  ‡ ‡— t          |d t          j        fv d|› �¦  «         t          | d¦  «         t          t	          ‰ ¦  «        t
          ¦  «        r‰pt          j        Šn‰pt          j        ¦   «         Šg }t          ‰ t          j	        ¦  «        rˆ ˆfd„}nÚt          ‰ t          t
          f¦  «        rˆ ˆfd„}n·t          ‰ ¦  «        dk    s5t          ‰ d         t          t
          f¦  «        rNt          ‰ ¦  «        dk    r;|                     t          j        t          ‰ ¦  «        ¦  «        ¦  «         ˆ ˆfd„}n4t          j                             t          j        ‰ ‰|¬¦  «        ¦  «        S t%          j        t)          |¦  «        ‰||¬	¦  «        S )
Núlayout=rð  c                 ó.   •— t          j        ‰‰¦  «        S r`   rÜ  ©r  rV  r�   s    €€rW   rC  ztensor.<locals>.inner_fnï
  s   ø€ Ý”> $¨Ñ.Ô.Ð.rY   c                 ó.   •— t          j        ‰‰¦  «        S r`   ©rB   r8  rô  s    €€rW   rC  ztensor.<locals>.inner_fnô
  s   ø€ Ý”<  eÑ,Ô,Ð,rY   r   rˆ   c                 óš   •‡ ‡— ˆˆˆˆ fd„Št          ‰¦  «        dk    rt          j        d‰¦  «        S  ‰dt          ‰¦  «        ¦  «        S )Nc           	      ól  •— | |k     sJ ‚|| z
  dk    rt          j        ‰|          ‰¦  «        S || z
  dz  | z   }t          j        t          j        t          j        ‰d         t
          j        ¦  «        t          j        |t
          j        ¦  «        ¦  «         ‰| |¦  «         ‰||¦  «        ¦  «        S )Nr$   r"   r   )rB   r8  r¹  r:  r6  rO   r7  )r  r  ÚmidÚbinary_searchrV  r�   r  s      €€€€rW   rú  z/tensor.<locals>.inner_fn.<locals>.binary_searchü
  s±   ø€ Ø˜s’{�{�{�{Ø˜‘; !Ò#Ð#Ýœ<¨¨U¬°UÑ;Ô;Ð;Ø˜U‘{ qÑ(¨5Ñ0�Ý”yÝ”FÝœ u¨Q¤xµ´Ñ=Ô=Ýœ S­%¬+Ñ6Ô6ñô ð "�M %¨Ñ-Ô-Ø!�M # sÑ+Ô+ñô ð rY   r   )r¡   rB   r8  )r  rú  rV  r�   s   `@€€rW   rC  ztensor.<locals>.inner_fnû
  sh   øøø€ ðð ð ð ð ð ð ð õ �4‰yŒy˜AŠ~ˆ~Ý”| A uÑ-Ô-Ð-Ø �= ¥C¨¡I¤IÑ.Ô.Ð.rY   rû  rD  )rm   rO   ÚstridedrZ   rî  r�   r7  Úget_default_dtyper•   r    r  r¡   r®   ÚIntegerrC   r  Úadd_tensor_constantr2  r2   rà   r9   )rV  r�   rÌ   r  rð  rB  rC  s   ``     rW   r2  r2  â
  sÅ  øø€ åˆv˜$¥¤Ð.Ð.Ð0B¸&Ð0BÐ0BÑCÔCÐCÝ�:ˆ~˜|Ñ,Ô,Ð,Ý•'˜$‘-”-¥Ñ%Ô%ð 3ØÐ$�œˆˆàÐ2�Ô0Ñ2Ô2ˆà!€Få�$�œÑ$Ô$ð $
ð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ 
�D�5¥#˜,Ñ	'Ô	'ð 
ð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-õ 
ˆT‰Œ�aŠˆ�: d¨1¤gµµs¨|Ñ<Ô<ˆÅÀTÁÄÈaÂÀà�Š•e”m¥C¨¡I¤IÑ.Ô.Ñ/Ô/Ð/ð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ( Œw×*Ò*ÝŒL˜ U°6Ð:Ñ:Ô:ñ
ô 
ð 	
õ ÔÝ˜VÑ$Ô$ØØØð	ñ ô ð rY   c                 óœ   — t          | t          ¦  «        r&|�t          | |¦  «        } |�t          | |¦  «        } | S t	          | ||¬¦  «        S )Nrû  )rZ   r5   rÍ   r›  r2  )rV  r�   rÌ   s      rW   Ú	as_tensorr     sX   € å�$�	Ñ"Ô"ð ØÐÝ˜D %Ñ(Ô(ˆDØÐÝ˜T 6Ñ*Ô*ˆDØˆÝ�$˜e¨FÐ3Ñ3Ô3Ð3rY   c                 ó8   — t          | t          j        ¬¦  «        S rR  r1  )rV  s    rW   Úlong_tensorr  &  s   € å�$�eœkÐ*Ñ*Ô*Ð*rY   c                 ó²  — ddl m}  |t          j        j        j        t          j        j        j        d         ¦  «        }|€J ‚t          |¦  «        dk    s
J |¦   «         ‚t          t          |                     ¦   «         ¦  «        ¦  «        \  }}t          j        ||| ¦  «        }t          j                             |¦  «        |_        t          j                             |¦  «         t          j        j        j        d         }t#          |t$          j        t$          j        t$          j        f¦  «        r|j        j        S t1          j        |¦  «        S )Nr   )Úresolve_unbacked_bindingsÚunbacked_bindingsr$   rÖ  )rì  r  rC   r  r	  r
  r2  rH  r¡   r   Úiterr×   r'   ÚDynamicScalarÚregister_bufferrµ   Úregister_operationrZ   rO   ÚSymIntÚSymFloatÚSymBoolrf  Úexprr•   rò  )rV  r  r  Úbinding_symÚkeypathÚbufferrÖ  s          rW   Ú_local_scalar_denser  +  s,  € àOÐOÐOÐOÐOÐOð 2Ð1Ý	ŒÔÔ"¥A¤GÔ$8Ô$=Ð>QÔ$Rñô Ðð Ð(Ð(Ð(ÝÐ Ñ!Ô! QÒ&Ð&Ð&Ð(9Ñ&Ô&Ð&õ   ¥Ð%6×%<Ò%<Ñ%>Ô%>Ñ ?Ô ?Ñ@Ô@Ñ€K�ÝÔ˜k¨7°DÑ9Ô9€FÝ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&õ Œ'Ô
Ô
# EÔ
*€CÝ�#�œ¥e¤nµe´mÐDÑEÔEð "ØŒxŒ}ÐåŒ}˜SÑ!Ô!Ð!rY   c                 ó   — d S r`   rp   )rV  rl   s     rW   Ú_assert_scalarr  Z  s	   € ð ˆ4rY   c                 óÄ  ‡‡‡— | Št          | t          t          f¦  «        st          ‰d¦  «        r‰j        Št          ‰t          t          f¦  «        rˆˆfd„}nat          ‰t
          j        ¦  «        rˆˆfd„}n@t          ‰                     ¦   «         ¦  «        dk    sJ ‚‰ 	                    ¦   «         Šˆfd„}t          j        |‰|t          |¦  «        ¬¦  «        S )NrË   c                 ó.   •— t          j        ‰‰¦  «        S r`   rö  ©r  r�   rË   s    €€rW   rC  z_full.<locals>.inner_fnj  s   ø€ Ý”<  uÑ-Ô-Ð-rY   c                 ó.   •— t          j        ‰‰¦  «        S r`   rÜ  r  s    €€rW   rC  z_full.<locals>.inner_fno  s   ø€ Ý”> %¨Ñ/Ô/Ð/rY   r   c                 ó   •—  ‰g ¦  «        S r`   rp   )r  Úvalue_loaders    €rW   rC  z_full.<locals>.inner_fnv  s   ø€ Ø�< Ñ#Ô#Ð#rY   rD  )rZ   r�   r  rÅ   rË   r•   r    r¡   r¢   r0  r2   rà   ry   )Ú
fill_valuerÌ   r�   rå   rC  rË   r  s     `  @@rW   Ú_fullr  c  s'  øøø€ Ø€EÝ�j¥3­ ,Ñ/Ô/ð µG¸EÀ7Ñ4KÔ4Kð Ø”ˆå�%�#�u˜Ñ&Ô&ð $ð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.õ 
�E�5œ;Ñ	'Ô	'ð 
$ð	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0õ �5—>’>Ñ#Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ø×(Ò(Ñ*Ô*ˆð	$ð 	$ð 	$ð 	$ð 	$õ ÔØØØÝ�D‰zŒzð	ñ ô ð rY   c                 óH   —  t          t          |¦  «        ¦  «        | fi |¤ŽS r`   ©Úcreate_tensor_likeÚtensor_constructor)rt   r  r¹   s      rW   rÛ  rÛ  �  s,   € à=ÕÕ0°Ñ<Ô<Ñ=Ô=¸aÐJÐJÀ6ÐJÐJÐJrY   c                 ó"   ‡ — d d d d dd dœˆ fd„
}|S )NF)Únamesr�   rÌ   r  rð  rÓ  c                 óü  •— t          | d u d¦  «         t          |d t          j        fv d|› �¦  «         t          | d¦  «         t          |¦  «        }|pt          j        ¦   «         }t          |¦  «        dk    rBt          |d         t          t          t          j	        f¦  «        rt          |d         ¦  «        }|D ]}t          |t          j
        ¦  «        rJ ‚Œd„ |D ¦   «         }t          ‰|||¦  «        S )Núnamed tensorsrò  rð  r$   r   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   r  r  s     rW   ru   z5tensor_constructor.<locals>.inner.<locals>.<listcomp>œ  s    € Ð.Ð.Ð. A•”˜Q‘”Ð.Ð.Ð.rY   )rm   rO   rû  r9   rü  r¡   rZ   ry   rz   ÚSizer
  r  )	r!  r�   rÌ   r  rð  rÓ  rå   rÐ  r  s	           €rW   rP  z!tensor_constructor.<locals>.innerˆ  sü   ø€ õ 	�5˜D�= /Ñ2Ô2Ð2Ý�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGÝ�z�> <Ñ0Ô0Ð0Ý˜vÑ&Ô&ˆØÐ2�Ô0Ñ2Ô2ˆÝˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ4½ÅÄ
Ð2KÑLÔLˆ>Ý˜˜aœ‘>”>ˆDð ð 	3ð 	3ˆAÝ! !¥U¤\Ñ2Ô2Ð2Ð2Ð2Ð2Ø.Ð.¨Ð.Ñ.Ô.ˆÝ�Z ¨°Ñ5Ô5Ð5rY   rp   )r  rP  s   ` rW   r  r  †  sA   ø€ ð ØØØØØð6ð 6ð 6ð 6ð 6ð 6ð 6ð. €LrY   )r!  r�   r  rÌ   rð  rÓ  c                 ó  — t          | d u d¦  «         t          |¦  «        }t          |¦  «        dk    rBt          |d         t          t
          t          j        f¦  «        rt          |d         ¦  «        }t          |d ||||¬¦  «        S )Nr#  r$   r   ©r�   r  rÌ   rð  )	rm   r9   r¡   rZ   ry   rz   rO   r%  Úempty_strided)r!  r�   r  rÌ   rð  rÓ  rå   s          rW   r  r  ¢  s‚   € õ ˆu˜ˆ}˜oÑ.Ô.Ð.Ý˜6Ñ"Ô"€FÝ
ˆ4�y„y�A‚~€~�* T¨!¤W­tµU½E¼JÐ.GÑHÔH€~Ý�T˜!”W‰~Œ~ˆÝØˆd˜%¨°vÈ*ðñ ô ð rY   c                 ó    ‡ — ddddddœˆ fd„
}|S )zZ
    Shim to convert X_like(...) into X(...).  For example zeros_like() into zeros().
    NF)r�   rÌ   r  rð  rÓ  c                óB  •— t          | d¦  «         t          |d t          j        fv d|› �¦  «         |€|                      ¦   «         }nt	          |¦  «        }|p|                      ¦   «         }t          |                      ¦   «         ¦  «        } ‰|||||¬¦  «        S )Nrð  rò  rï  )rm   rO   rû  r”   r’   rÚ   ry   r¢   )rt   r�   rÌ   r  rð  rÓ  rå   Úcreation_fns          €rW   Ú_constant_likez*create_tensor_like.<locals>._constant_likeº  s¨   ø€ õ 	�z�> <Ñ0Ô0Ð0Ý�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGØˆ=Ø—K’K‘M”MˆEˆEå  Ñ'Ô'ˆEØÐ)˜1Ÿ<š<™>œ>ˆÝ�A—J’J‘L”LÑ!Ô!ˆØˆ{Ø˜ f°VÈ
ð
ñ 
ô 
ð 	
rY   rp   )r+  r,  s   ` rW   r  r  µ  s<   ø€ ð  ¨d¸uÐTXð
ð 
ð 
ð 
ð 
ð 
ð 
ð ÐrY   c                 ó:   — t          t          | ¦  «        ¦  «        S r`   r  )r  s    rW   r½  r½  Ì  s   € ÝÕ0°Ñ<Ô<Ñ=Ô=Ð=rY   c                 ó   ‡ — d d d d dœˆ fd„
}|S )Nr'  c                ól  •— t          |t          t          f¦  «        sJ ‚t          | d¦  «         t          |d t          j        fv d|› �¦  «         t          |¦  «        p|                      ¦   «         }|p|                      ¦   «         }d„ |D ¦   «         }t          ‰t          |¦  «        ||¦  «        S )Nrð  rò  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   )r•   rý  r  s     rW   ru   z7new_constant.<locals>._new_constant.<locals>.<listcomp>Þ  s"   € Ð/Ð/Ð/ Q•”˜aÑ Ô Ð/Ð/Ð/rY   )rZ   ry   rz   rm   rO   rû  r’   r”   rÚ   r  r9   )rt   rå   r�   r  rÌ   rð  r  s         €rW   Ú_new_constantz#new_constant.<locals>._new_constantÖ  s±   ø€ õ ˜$¥¥u Ñ.Ô.Ð.Ð.Ð.Ý�z�> <Ñ0Ô0Ð0Ý�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGÝ˜UÑ#Ô#Ð4 q§{¢{¡}¤}ˆØÐ)˜1Ÿ<š<™>œ>ˆØ/Ð/¨$Ð/Ñ/Ô/ˆÝ�Z¥¨vÑ!6Ô!6¸¸tÑDÔDÐDrY   rp   )r  r1  s   ` rW   Únew_constantr2  Õ  s>   ø€ à t°DÀTð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð ÐrY   r'  c          	      óž   — |€|                       ¦   «         }|€|                      ¦   «         }t          |d ||t          |¦  «        |¬¦  «        S ©Nr'  ©r”   rÚ   r(  r9   )rt   rå   r�   r  rÌ   rð  s         rW   Ú	new_emptyr6  ä  sW   € à€}Ø—’‘”ˆØ€~Ø—’‘”ˆÝØØØØÝ˜VÑ$Ô$Øðñ ô ð rY   c                óB  — t          | t          t          f¦  «        sJ ‚t          |t          t          t          d ¦  «        f¦  «        sJ ‚t	          | d¦  «         t	          |d t
          j        fv d|› �¦  «         t          |¦  «        pt          j        ¦   «         }|pt          j	        d¦  «        j
        }t          |¦  «        }t          d||| ¬¦  «        }|                     ¦   «          |j        j        }t          j        |j        dgt#          | ¦  «        z  ¬¦  «        |_        t          |t$          j        ¦  «        sJ ‚d„ | D ¦   «         } |rd„ |D ¦   «         nt$          j                             | ¦  «        }t%          j        ||| |¬	¦  «        |_        |S )
Nrð  rò  r5  r   )r  rÌ   r�   rå   )rB  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   r  r  s     rW   ru   z!empty_strided.<locals>.<listcomp>  s    € Ð*Ð*Ð* �EŒL˜‰OŒOÐ*Ð*Ð*rY   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rp   r  r  s     rW   ru   z!empty_strided.<locals>.<listcomp>  r  rY   )rÌ   r�   rå   r#  )rZ   ry   rz   rF  rm   rO   rû  r’   rü  r2  rÌ   r9   r  rb  rV  ÚdataclassesÚreplacer¡   r'   r�  r>  r?  r!  r  )rå   r#  r�   r  rÌ   rð  Ú	pointwiser  s           rW   r(  r(  ô  sŸ  € õ �d�T¥5˜MÑ*Ô*Ð*Ð*Ð*Ý�f�t¥U­D°©J¬JÐ7Ñ8Ô8Ð8Ð8Ð8Ý�:ˆ~˜|Ñ,Ô,Ð,Ýˆv˜$¥¤Ð.Ð.Ð0B¸&Ð0BÐ0BÑCÔCÐCÝ˜ÑÔÐ<¥5Ô#:Ñ#<Ô#<€EØÐ/•u”| CÑ(Ô(Ô/€FÝ˜6Ñ"Ô"€FÝ ¨6¸ÀTÐJÑJÔJ€IØ×ÒÑÔÐØŒ^Ô €FåÔ% f¤k¸1¸#ÅÀDÁ	Ä	¹/ÐJÑJÔJ€F„KÝ�f�bÔ/Ñ0Ô0Ð0Ð0Ð0Ø*Ð* TÐ*Ñ*Ô*€Dð ð	8Ð)Ð) &Ð)Ñ)Ô)Ð)åÔ×1Ò1°$Ñ7Ô7ð õ
 ”NØØØØð	ñ ô €F„Mð ÐrY   c          	      óž   — |€|                       ¦   «         }|€|                      ¦   «         }t          ||||t          |¦  «        |¬¦  «        S r4  r5  )rt   rå   r#  r�   r  rÌ   rð  s          rW   Únew_empty_stridedr>    sY   € ð €}Ø—’‘”ˆØ€~Ø—’‘”ˆÝØØØØÝ˜VÑ$Ô$Øðñ ô ð rY   c                 óº   — d„ |D ¦   «         }t          t          t          |¦  «        ¦  «        |j        ¬¦  «        }t          j                             | |¦  «        S )Nc                 óV   — g | ]&}t           j        j                             |¦  «        ‘Œ'S rp   )rC   r  r	  rí  r  s     rW   ru   z copy_strided.<locals>.<listcomp>(  s+   € Ð<Ð<Ð<°�aŒgÔ×(Ò(¨Ñ+Ô+Ð<Ð<Ð<rY   )r²  )Úsortedrß   r¡   Ú__getitem__r'   rh  ri  )rt   r#  rk  s      rW   Úcopy_stridedrC  &  sP   € à<Ð<°VÐ<Ñ<Ô<€FÝ�%¥ F¡¤Ñ,Ô,°&Ô2DÐEÑEÔE€LÝŒ?×/Ò/°°<Ñ@Ô@Ð@rY   c                 ól   — |                      d¦  «        €
J d¦   «         ‚ t          |¦  «        | fi |¤ŽS )Nr�   z(dtype should be handled by decomposition)rI  r  )rå   r  r¹   s      rW   ÚfullrE  -  sD   € à�:Š:�gÑÔÐ*Ð*Ð,VÑ*Ô*Ð*Ø)Õ˜jÑ)Ô)¨$Ð9Ð9°&Ð9Ð9Ð9rY   c                 óŒ  ‡‡‡‡— t          | t          ¦  «        sJ ‚|                     ¦   «         dk    r"t          | |                     ¦   «         ¦  «        S |                     ¦   «         t          j        k    sJ ‚|                      ¦   «         Št          ‰¦  «        dk    }t          | ‰|¦  «        Š|rt          | dg¦  «        } dgŠ|                      ¦   «         Š|                     ¦   «         Šˆˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         ||                     ¦   «         ¬¦  «        S )Nr   r$   c                 ó¸   •— t          | ¦  «        } t          j         ‰| ¦  «        ‰‰         ¦  «        }t          | ¦  «        dk    r|g} n|| ‰<    ‰| ¦  «        S r§  )ry   rB   Úindirect_indexingr¡   )rö  Ú
gather_idxr¥   Úindex_loaderrå   r  s     €€€€rW   rK   zgather.<locals>.fnH  s]   ø€ Ý�3‰iŒiˆÝÔ*¨<¨<¸Ñ+<Ô+<¸dÀ3¼iÑHÔHˆ
Ýˆs‰8Œ8�qŠ=ˆ=Ø�,ˆCˆCà!ˆC�‰HØˆx˜‰}Œ}ÐrY   rD  )rZ   r5   Ú	get_numelr6  r¢   r”   rO   r7  r¡   r  r  r0  r2   rà   rÚ   )	rt   r¥   r  Úsparse_gradr¹  rK   rJ  rå   r  s	    `    @@@rW   ÚgatherrM  3  s=  øøøø€ õ �a�Ñ#Ô#Ð#Ð#Ð#Ø‡‚ÑÔ˜AÒÐå˜˜EŸNšNÑ,Ô,Ñ-Ô-Ð-à�?Š?ÑÔ¥¤Ò+Ð+Ð+Ð+Ø�:Š:‰<Œ<€DÝ�‰YŒY˜!Š^€FÝ
˜˜3 Ñ
'Ô
'€Càð Ý�1�q�c‰NŒNˆØˆsˆà�}Š}‰Œ€HØ×$Ò$Ñ&Ô&€Lðð ð ð ð ð ð ð õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØ�~Š~ÑÔð	ñ ô ð rY   c                 ó>  ‡‡‡‡	‡
— |rJ ‚t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚dt          |                     ¦   «         ¦  «        v sJ ‚|                      ¦   «         Š	|                     ¦   «         Št          |                     ¦   «         ¦  «        Š|                      ¦   «         Š
g |                     ¦   «         ¢‰
dd …         ¢Šˆˆˆˆ	ˆ
fd„}t          j        |  	                    ¦   «         |                      ¦   «         |‰¬¦  «        S )Nr�   r$   c                 óð   •— t          | ¦  «        t          ‰¦  «        k    sJ | › d‰› �¦   «         ‚ ‰| d ‰…         ¦  «        }t          j        |‰d         ¦  «        gg | ‰d …         ¢z   } ‰|¦  «        S )Nz != r   )r¡   rB   rH  )rö  Ú	var_indexÚ
weight_idxÚindices_loaderÚindices_ndimr  Úweight_loaderÚweight_sizes      €€€€€rW   rK   zembedding.<locals>.fnf  s–   ø€ Ý�3‰xŒx�3˜x™=œ=Ò(Ð(Ð(¨SÐ*@Ð*@°hÐ*@Ð*@Ñ(Ô(Ð(Ø"�N 3 }¨ }Ô#5Ñ6Ô6ˆ	ÝÔ+¨I°{À1´~ÑFÔFÐGð K
Ø���ÔðK
ñ 
ˆ
ð ˆ}˜ZÑ(Ô(Ð(rY   rD  )
rZ   r5   Ústrr”   r0  r¡   r¢   r2   rà   rÚ   )Úweightr¾  Úpadding_idxÚscale_grad_by_freqÚsparserK   rR  rS  r  rT  rU  s         @@@@@rW   Ú	embeddingr[  Y  s=  øøøøø€ àÐÐˆ:Ý�f�iÑ(Ô(Ð(Ð(Ð(Ý�g�yÑ)Ô)Ð)Ð)Ð)Ø•C˜×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,Ð,à×&Ò&Ñ(Ô(€MØ×(Ò(Ñ*Ô*€NÝ�w×'Ò'Ñ)Ô)Ñ*Ô*€LØ—/’/Ñ#Ô#€KØ6�×!Ò!Ñ#Ô#Ð6 k°!°"°"¤oÐ6€Hð)ð )ð )ð )ð )ð )ð )ð )ð )õ ÔØ× Ò Ñ"Ô"Ø×ÒÑ Ô ØØð	ñ ô ð rY   c                 óø  ‡ — t          d„ ‰ D ¦   «         ¦  «        sJ dd„ ‰ D ¦   «         › �¦   «         ‚t          d„ ‰ D ¦   «         ¦  «        rt          d¦  «        ‚d„ t          ‰ ¦  «        D ¦   «         }t	          |¦  «        dk    s
J d¦   «         ‚d gt	          ‰ ¦  «        z  }t          |t          ˆ fd	„|D ¦   «         Ž ¦  «        D ]1\  }}|                     ¦   «         |k    rt          d
¦  «        ‚|||<   Œ2||fS )Nc              3   óž   K  — | ]H}|®|                      ¦   «         t          j        t          j        t          j        t          j        fv V — ŒId S r`   )r”   rO   r7  r±  r›   r†  ©rs   rÀ   s     rW   rx   z.check_and_broadcast_indices.<locals>.<genexpr>w  sN   è è € ð ð àØˆ=ð 	
�Š‰Œ�%œ+¥u¤{µE´JÅÄÐLÐLàˆ=ˆ=ˆ=ðð rY   z)indices must be int64, byte or bool. Got c                 ó:   — g | ]}|®|                      ¦   «         ‘ŒS r`   ©r”   r^  s     rW   ru   z/check_and_broadcast_indices.<locals>.<listcomp>{  s&   € Ð3dÐ3dÐ3dÀaÐVWÐVc°A·K²K±M´MÐVcÐVcÐVcrY   c              3   ór   K  — | ]2}|®|                      ¦   «         t          j        t          j        fv V — Œ3d S r`   )r”   rO   r›   r†  r^  s     rW   rx   z.check_and_broadcast_indices.<locals>.<genexpr>|  sA   è è € ð ð Ø78ÀqÀ}ˆ�Š‰Œ�%œ*¥e¤kÐ2Ð2À}À}À}À}ðð rY   zFallback for bool indicesc                 óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rp   r¾   r¿   s      rW   ru   z/check_and_broadcast_indices.<locals>.<listcomp>�  s+   € ÐOÐOÐO™˜˜1µjÀÅIÑ6NÔ6NÐO�!ÐOÐOÐOrY   r   z"requires at least 1 non-None indexc                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   )rs   rÀ   r¾  s     €rW   ru   z/check_and_broadcast_indices.<locals>.<listcomp>„  s   ø€ Ð3SÐ3SÐ3SÀ1°G¸A´JÐ3SÐ3SÐ3SrY   z.Fallback when indices is on a different device)r÷   rø   rj   rÖ   r¡   rÞ   rÛ   rÚ   )r¾  rÌ   Ú
valid_idxsÚnew_indicesrÀ   rt   s   `     rW   Úcheck_and_broadcast_indicesrf  v  sf  ø€ Ýð ð àðñ ô ñ ô ð gð gð gÐ3dÐ3dÈ7Ð3dÑ3dÔ3dÐfÐfñ	gô gð õ
 ð ð Ø<Cðñ ô ñ ô ð ?õ "Ð"=Ñ>Ô>Ð>àOÐO¥	¨'Ñ 2Ô 2ÐOÑOÔO€JÝˆz‰?Œ?˜QÒÐÐÐ DÑÔÐØ�&�3˜w™<œ<Ñ'€KÝ�JÕ 1Ð3SÐ3SÐ3SÐ3SÈ
Ð3SÑ3SÔ3SÐ TÑUÔUð ð ‰ˆˆ1ð �<Š<‰>Œ>˜VÒ#Ð#Ý%Ð&VÑWÔWÐWØˆ�A‰ˆØ˜
Ð"Ð"rY   c	           
      ón  ‡ ‡‡‡‡‡‡‡‡‡‡— dŠt          ‰‰dd …         ¦  «        D ]\  }	}
|
|	z
  dk    rdŠŒˆ fd„t          ‰¦  «        D ¦   «         Šg ‰¢‰ t          ‰¦  «        t          ‰¦  «        z   d …         ¢Š‰d         }‰r‰‰z   Šn‰d |…         ‰z   ‰|d …         z   Šˆˆˆˆˆˆˆˆˆˆf
d„}‰|fS )NFr$   Tc                 ó*   •— g | ]\  }}|­‰|         ‘ŒS r`   rp   )rs   rÀ   rÖ  rÚ  s      €rW   ru   z2index_output_size_and_inner_fn.<locals>.<listcomp>¥  s"   ø€ ÐMÐMÐM¡  CÀÀ�6˜!”9ÀÀÀrY   r   c                 óv  •
— t          | ¦  «        t          ‰¦  «        k    sJ ‚t          ‰¦  «        t          ‰
¦  «        k    sJ ‚t          ‰¦  «        }g }‰d         }‰rdn|}d}t          ‰d         dz   ¦  «        D ]ž}||k    r||z  }‰|         €6|t          | ¦  «        k     sJ ‚|                     | |         ¦  «         |dz  }ŒK‰|         }|€J ‚‰
|         }|                     t          j         || |||z   …         ¦  «        |‰	‰¬¦  «        ¦  «         ŒŸg |¢| |d …         ¢}‰€|n
 ‰|¦  «        S )Nr   r-  r$   ©r   Úwrap_neg)r¡   rß   r®   rB   rH  )rö  r½  Ú	new_indexÚfirst_tensor_indexÚstart_offsetÚnext_idxrÀ   Úloaderrå   r   Úindexed_sizer¾  Úindices_loadersÚnon_consecutive_tensorsÚoutput_sizeÚtensor_indicesÚtensor_sizerk  r  s            €€€€€€€€€€rW   rK   z*index_output_size_and_inner_fn.<locals>.fn²  sž  ø€ Ý�3‰xŒx�3˜{Ñ+Ô+Ò+Ð+Ð+Ð+Ý�?Ñ#Ô#¥s¨<Ñ'8Ô'8Ò8Ð8Ð8Ð8å�;ÑÔˆØˆ	Ø+¨AÔ.ÐØ3ÐK�q�qÐ9KˆØˆÝ�~ bÔ)¨AÑ-Ñ.Ô.ð 	ð 	ˆAØ�LÒ Ð Ø˜DÑ �Ø�qŒzÐ!Ø¥# c¡(¤(Ò*Ð*Ð*Ð*Ø× Ò   X¤Ñ/Ô/Ð/Ø˜A‘��à(¨Ô+�ØÐ)Ð)Ð)Ø# A”�Ø× Ò ÝÔ)Ø˜˜s <°,ÀÑ2EÐ#EÔFÑGÔGØØ#Ø!)ð	ñ ô ñô ð ð ð
Øð
à���Œ^ð
ˆ	ð %Ð,ˆyˆy°(°(¸9Ñ2EÔ2EÐErY   )rÞ   rÖ   r¡   )rÚ  r¾  ru  rv  rr  rq  r  r   rk  ÚpreviousÚcurrentrm  rK   rs  rt  s   `````````    @@rW   Úindex_output_size_and_inner_fnry  Ž  sU  øøøøøøøøøøø€ ð$ $ÐÝ  °ÀÀÀÔ1CÑDÔDð +ð +Ñˆ�'Ø�XÑ Ò"Ð"Ø&*Ð#øàMÐMÐMÐM­9°WÑ+=Ô+=ÐMÑMÔM€KØS�KÐS &­¨[Ñ)9Ô)9½CÀÑ<OÔ<OÑ)OÐ)QÐ)QÔ"RÐS€Kà'¨Ô*ÐØð 
Ø! KÑ/ˆˆð Ð+Ð+Ð+Ô,ØñàÐ,Ð-Ð-Ô.ñ/ð 	ð Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  FðD ˜ˆ?ÐrY   c                 ó¤   — t          | ||¦  «        \  }}}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        S rÕ  )Úindex_impl_helperr2   rà   rÚ   r”   )rt   r¾  r   rt  rC  r«   s         rW   Ú
index_implr|  ×  sP   € Ý0°°G¸UÑCÔCÑ€K�˜1åÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rY   c                 ó¬  ‡‡
‡‡— t          ‰t          t          f¦  «        sJ ‚|                      ¦   «         Št	          ‰|                      ¦   «         ¦  «        \  Š}t          |¦  «        dk    s
J d¦   «         ‚d„ ‰D ¦   «         }t          ‰|d                                       ¦   «         ¦  «        }|                      ¦   «         Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }|rd|v rd|vrt          d¦  «        ‚ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t          ‰‰||||d ||¬¦	  «	        \  }Š
ˆ
ˆfd„}	||	‰
fS )	Nr   z Must have at least one valid idxc                 ó>   — g | ]}|�|                      ¦   «         nd ‘ŒS r`   r/  r^  s     rW   ru   z%index_impl_helper.<locals>.<listcomp>è  ó(   € ÐSÐSÐSÀa¨!¨-�q—}’}‘”�¸TÐSÐSÐSrY   c                 ó0   •— g | ]}‰|         ®
‰|         ‘ŒS r`   rp   )rs   rÀ   r¾  rÚ  s     €€rW   ru   z%index_impl_helper.<locals>.<listcomp>ð  s&   ø€ ÐUÐUÐU !¸gÀa¼jÐ>T�F˜1”IÐ>TÐ>TÐ>TrY   z0index is out of bounds for dimension with size 0c                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   ©rs   rÀ   rÚ  s     €rW   ru   z%index_impl_helper.<locals>.<listcomp>ô  ó   ø€ Ð;Ð;Ð; !�F˜1”IÐ;Ð;Ð;rY   rj  c                 ó,   •—  ‰ ‰| ¦  «        ¦  «        S r`   rp   )rö  Úindex_inner_fnr  s    €€rW   rC  z#index_impl_helper.<locals>.inner_fn  s   ø€ Øˆx˜˜ sÑ+Ô+Ñ,Ô,Ð,rY   )rZ   ry   rz   r0  rf  rÚ   r¡   r¢   rß   Ú
IndexErrorry  )rt   r¾  r   rk  ru  rr  rv  rq  rt  rC  r…  r  rÚ  s    `        @@@rW   r{  r{  â  sŽ  øøøø€ Ý�g¥¥e˜}Ñ-Ô-Ð-Ð-Ð-Ø�}Š}‰Œ€HÝ9¸'À1Ç<Â<Á>Ä>ÑRÔRÑ€Gˆ^Ýˆ~ÑÔ Ò"Ð"Ð"Ð$FÑ"Ô"Ð"àSÐSÈ7ÐSÑSÔS€Oõ �w˜~¨aÔ0Ô1×:Ò:Ñ<Ô<Ñ=Ô=€Kà�ZŠZ‰\Œ\€FàUÐUÐUÐUÐU¥u­S°©\¬\Ñ':Ô':ÐUÑUÔU€LØð M��lÐ"Ð" q°Ð';Ð';ÝÐKÑLÔLÐLà;Ð;Ð;Ð;¥u­S°©\¬\Ñ':Ô':Ð;Ñ;Ô;€LÝ"@ØØØØØØØØØð
#ñ 
#ô 
#Ñ€K�ð-ð -ð -ð -ð -ð -ð ˜ .Ð0Ð0rY   c                 óÄ   — 	 t          | |d¬¦  «        S # t          $ rA |                      ¦   «           t          t          j        j        d¬¦  «        | |¦  «        cY S w xY w)NT©r   Fr{  )r|  rj   rb  r�  rŽ  r  rL  ©rt   r¾  s     rW   r  r    sz   € ð
Ý˜!˜W¨DÐ1Ñ1Ô1Ð1øÝð 
ð 
ð 
à	�	Š	‰ŒˆØMÕ¥¤
Ô 1ÀuÐMÑMÔMØˆwñ
ô 
ð 	
ð 	
ð 	
ð
øøøs   ‚ ”AAÁAc                 ó&   — t          | |d¬¦  «        S ©NFrˆ  )r|  r‰  s     rW   Ú_unsafe_indexrŒ    s   € å�a˜¨Ð.Ñ.Ô.Ð.rY   c                 ó@   — t          t          | ¦  «        |||¦  «        S r`   )Ú
index_put_rw  ©rt   r¾  rÙ   Ú
accumulates       rW   Ú	index_putr‘     s   € å•e˜A‘h”h ¨°Ñ<Ô<Ð<rY   c                 óD   — t          t          | ¦  «        |||d¬¦  «        S r‹  )Úindex_put_impl_rw  r�  s       rW   Ú_unsafe_index_putr”  %  s!   € å�5 ™8œ8 W¨f°jÈÐNÑNÔNÐNrY   c                 ó  — |                      ¦   «         |                       ¦   «         k    r"t          ||                       ¦   «         ¦  «        }|rt          | |¦  «        }t          | t	          |d         || ¦  «        ¦  «        S r§  )rÚ   r›  r|   rÒ  r¹  )r‘  r¾  rË   r�  s       rW   Úindex_put_as_masked_fillr–  *  ss   € Ø×ÒÑÔ˜TŸ_š_Ñ.Ô.Ò.Ð.Ý˜% §¢Ñ!2Ô!2Ñ3Ô3ˆØð !Ý�D˜%Ñ Ô ˆÝ�T�5 ¨¤¨U°DÑ9Ô9Ñ:Ô:Ð:rY   c                 ó>  — t          j        ¦   «         }t          |¦  «        rN|s|rJ|sdnd}t          j        j        j                             dd ¦  «        x}r|› d|› �}|t          j        _        t          j
        t          j        j        j        | |||¦  «         | S )Nzindex put with accumulate.zdeterministic index put.Ústack_traceú Found from : 
 )rO   Ú$are_deterministic_algorithms_enabledr/   rC   r  r2  rH  rI  Údisable_cudagraphs_reasonr'   ÚIndexPutFallbackr^  )r‘  r¾  rÙ   r�  Údeterministicrl   r˜  s          rW   Úindex_put_fallbackrž  2  s°   € ÝÔ>Ñ@Ô@€MÝ�ÑÔð 0˜jð 0¨Mð 0ð !ð,Ð(Ð(à+ð 	õ
 œ'Ô.Ô3×7Ò7¸ÀtÑLÔLÐLˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åÔ�œÔ,Ô3°T¸7ÀFÈJÑWÔWÐWØ€KrY   c                 ó*   — t          | |||d¬¦  «        S )NTrˆ  ©r“  ©r‘  r¾  rÙ   r�  s       rW   rŽ  rŽ  B  s   € å˜4 ¨&°*ÀDÐIÑIÔIÐIrY   c                 ó*   — t          | |||d¬¦  «        S r‹  r   r¡  s       rW   Ú_unsafe_index_put_r£  G  s   € å˜4 ¨&°*ÀEÐJÑJÔJÐJrY   c           
      ó¼  ‡— |                      ¦   «         dk    rÁt          |¦  «        dk    r®|d                              ¦   «         t          j        t          j        hv r||d         }t          t          |                     ¦   «         ¦  «        t          |                      ¦   «         ¦  «        ¦  «        D ]}t          |d¦  «        }Œt          | |g||¦  «        S t          j
        ¦   «         rt          | |||¦  «        S |D ]D}|�@|                     ¦   «         t          j        t          j        hv rt          | |||¦  «        c S ŒE|                      ¦   «         Št          ‰¦  «        }|rbt          |                      ¦   «         ¦  «        rA|dk    rt          | dg¦  «        } t          | |||¦  «        } |dk    rt          | g ¦  «        } | S t          ||                      ¦   «         ¦  «        }	 t          ||                      ¦   «         ¦  «        \  }}	n"# t"          $ r t          | |||¦  «        cY S w xY wd„ |D ¦   «         }
t%          | t&          ¦  «        sJ ‚|                      ¦   «          |dk    rt          | dg¦  «        } t+          ||	d                                       ¦   «         ¦  «        }ˆfd„t          t          |¦  «        ¦  «        D ¦   «         }t-          ‰||	||
|d |¬¦  «        \  }}t/          ||¦  «        }t1          j        |                      ¦   «         |                      ¦   «         |                     ¦   «         |||rdnd ¬¦  «        }t1          j        d t1          j        | ¦  «        |¬	¦  «        }t:          j                             |¦  «        |_         t:          j         !                    |¦  «         |dk    rt          | g ¦  «        } | S )
Nr$   r   r-  c                 ó>   — g | ]}|�|                      ¦   «         nd ‘ŒS r`   r/  r^  s     rW   ru   z#index_put_impl_.<locals>.<listcomp>w  r  rY   c                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   r‚  s     €rW   ru   z#index_put_impl_.<locals>.<listcomp>‚  rƒ  rY   rˆ  Ú
atomic_add©rÌ   r�   rC  rB  Úoutput_indexerÚscatter_mode©rµ   r  rV  )"rK  r¡   r”   rO   r›   r†  rß   r¢   rò  r–  rš  rž  r=   r�  rÍ   rf  rÚ   rj   rZ   r5   rb  ry   ry  r  r'   ÚScatterr0  r�  ÚMutationLayoutSHOULDREMOVErC   r  r  rµ   r	  )r‘  r¾  rÙ   r�  r   rB  r«   r  Úx_ndimru  rr  rv  rq  Úexpected_vals_sizerC  Úscatterr  rÚ  s                    @rW   r“  r“  L  sß  ø€ ð 	×ÒÑÔ˜aÒÐÝ�‰LŒL˜AÒÐØ�AŒJ× Ò Ñ"Ô"¥u¤zµ5´;Ð&?Ð?Ð?à�qŒzˆÝ•s˜4Ÿ=š=™?œ?Ñ+Ô+­S°·²±´Ñ-AÔ-AÑBÔBð 	'ð 	'ˆAÝ˜T 2Ñ&Ô&ˆDˆDÝ'¨¨t¨f°f¸jÑIÔIÐIõ Ô1Ñ3Ô3ð EÝ! $¨°¸ÑDÔDÐDð ð Ið IˆØÐ §¢Ñ!2Ô!2µu´zÅ5Ä;Ð6OÐ!OÐ!OÝ% d¨G°V¸ZÑHÔHÐHÐHÐHøà�]Š]‰_Œ_€FÝ�‰[Œ[€Fàð ÕBÀ4Ç>Â>ÑCSÔCSÑTÔTð à�QŠ;ˆ;Ý˜˜q˜c‘?”?ˆDÝ! $¨°¸ÑDÔDˆØ�QŠ;ˆ;Ý˜˜b‘>”>ˆDØˆå�f˜dŸnšnÑ.Ô.Ñ/Ô/€FðEå"=Ø�T—_’_Ñ&Ô&ñ#
ô #
Ñˆ��øõ ð Eð Eð EÝ! $¨°¸ÑDÔDÐDÐDÐDðEøøøð TÐSÈ7ÐSÑSÔS€Oå�d�IÑ&Ô&Ð&Ð&Ð&Ø‡L‚L�N„N€Nð �‚{€{Ý�D˜1˜#‰Œˆõ �w˜~¨aÔ0Ô1×:Ò:Ñ<Ô<Ñ=Ô=€KØ;Ð;Ð;Ð;¥u­S°©\¬\Ñ':Ô':Ð;Ñ;Ô;€Lå#AØØØØØØØØð	$ñ 	$ô 	$Ñ Ð˜õ �FÐ.Ñ/Ô/€Fõ ŒjØ�ŠÑ Ô Ø�nŠnÑÔØ×#Ò#Ñ%Ô%Ø!ØØ%/Ð9�\�\°Tðñ ô €Gõ ÔØÝÔ,¨TÑ2Ô2Øðñ ô €Fõ
 ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&à�‚{€{Ý�D˜"‰~Œ~ˆØ€Ks   Ç1%H ÈH6È5H6r{  c                 ó  ‡‡‡‡‡	— t          | |dd¬¦  «        \  }}Š‰                     ¦   «         Š|                      ¦   «         Š	ˆˆˆˆˆ	fd„}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        S )NFrj  c                 óÎ   •‡ — ‰j         t          j        k    r)t          j         ‰‰ ¦  «        t          j        ¦  «        }n ‰‰ ¦  «        }t          j        |ˆˆ ˆfd„‰¦  «        S )Nc                  ó,   •—  ‰ ‰ ‰¦  «        ¦  «        S r`   rp   )Ú_unsafe_index_fnrö  Úself_loaders   €€€rW   r4  z8_unsafe_masked_index.<locals>.inner_fn.<locals>.<lambda>½  s   ø€ ¨K¨KÐ8HÐ8HÈÑ8MÔ8MÑ,NÔ,N€ rY   )r�   rO   r›   rB   rÍ   r<  )rö  Úmask_valr´  ÚfillrB  Úmask_loaderrµ  s   ` €€€€€rW   rC  z&_unsafe_masked_index.<locals>.inner_fn¸  sf   øø€ ØŒ:�œÒ#Ð#Ý”| K K°Ñ$4Ô$4µe´jÑAÔAˆHˆHà"�{ 3Ñ'Ô'ˆHÝŒz˜(Ð$NÐ$NÐ$NÐ$NÐ$NÐ$NÐPTÑUÔUÐUrY   rD  )r{  r0  r2   rà   rÚ   r”   )
r‘  rB  r¾  r·  rB  r«   rC  r´  r¸  rµ  s
    ` `   @@@rW   Ú_unsafe_masked_indexr¹  °  sÂ   øøøøø€ å"3Øˆg˜U¨Uð#ñ #ô #Ñ€FˆAÐð ×"Ò"Ñ$Ô$€KØ×"Ò"Ñ$Ô$€KðVð Vð Vð Vð Vð Vð Vð Vð Võ ÔØ�ŠÑ Ô Ø�nŠnÑÔØØð	ñ ô ð rY   c                 óÈ   ‡‡— t          ||d¦  «        }|                      ¦   «         Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t	          | ||d¬¦  «        S )Nr   c                 ór   •— g | ]3}‰|         r't          ‰|         ‰|          ‰|         d z
  ¦  «        nd‘Œ4S rý  r  )rs   rÀ   r¾  ró  s     €€rW   ru   z7_unsafe_masked_index_put_accumulate.<locals>.<listcomp>Ë  sU   ø€ ð ð ð àð 7>¸a´jÐJ�ˆg�aŒj˜5 œ8˜) U¨1¤X°¡\Ñ2Ô2Ð2Àdðð ð rY   T)r�  )r¹  r¢   rß   r¡   r”  )rt   rB  r¾  rÙ   Úmasked_valueÚclamped_indicesró  s     `   @rW   Ú#_unsafe_masked_index_put_accumulater¾  Ç  sv   øø€ å˜˜v qÑ)Ô)€LØ�JŠJ‰LŒL€Eðð ð ð ð å•s˜7‘|”|Ñ$Ô$ðñ ô €Oõ ˜Q °È$ÐOÑOÔOÐOrY   c                 óR   — t          j        |t          j        || ¦  «        ¦  «        S r`   )rB   rV  rW  ©rÇ   ÚminÚmaxs      rW   r  r  Ô  s    € åŒ;�s�CœK¨¨QÑ/Ô/Ñ0Ô0Ð0rY   c                 óh   — t          | ¦  «        }t          ||||¦  «        }t          ||¦  «         |S r`   )rw  r(  Úcopy_)r‘  rÓ  rå   r#  r$  r  Úoutput_views          rW   Úas_strided_scatterrÆ  Ù  s5   € å�4‰[Œ[€FÝ˜V T¨6°>ÑBÔB€KÝ	ˆ+�sÑÔÐØ€MrY   c                 ó<   — t          t          | ¦  «        |||fi |¤ŽS r`   )Úscatter_rw  )rt   r¥   r  rÓ  r¹   s        rW   r°  r°  á  s$   € å•E˜!‘H”H˜c 5¨#Ð8Ð8°Ð8Ð8Ð8rY   ©rÃ  Úinclude_selfr  rÃ  rÊ  c          	      ó2  — t          |t          ¦  «        }t          | ||                     ¦   «         |r|                     ¦   «         nt	          |¦  «        |r|                     ¦   «         j        nd|¦  «        rt          j        | ||||||¬¦  «         |S d S )Nznot implrÉ  )rZ   r5   rA   r”   rF  rÚ   r'   ÚScatterFallback)r  r‘  r¥   r  rÓ  rÃ  rÊ  Úsrc_is_tensors           rW   Úscatter_fallbackrÎ  æ  s¬   € õ ˜s¥IÑ.Ô.€MÝØØØ�ŠÑÔØ(Ð7ˆ�Š‰Œˆ­d°3©i¬iØ!.Ð>ˆ�ŠÑÔÔÐ°JØñô ð õ 	ÔØØØØØØØ%ð	
ñ 	
ô 	
ð 	
ð ˆàˆ4rY   ©rÃ  c                óò   — |dv sJ ‚|€Lt          t          j        t          j        j        j        j        ¦  «        }t          || ||||¬¦  «        }|�|S |dk    rd}n|dk    rd}t          | ||||¦  «        S )N>   Nr|   ÚmultiplyrÏ  r|   ÚsumrÑ  Úprod)
re   rŽ  rÈ  rC   r  r2  r^  Ú_overloadnamerÎ  Úscatter_reduce_)r‘  r¥   r  rÓ  rÃ  r  Úfallback_results          rW   rÈ  rÈ    sš   € àÐ.Ð.Ð.Ð.Ð.Ø€~Ý�dœm­Q¬WÔ-AÔ-HÔ-VÑWÔWˆÝ*Ø˜˜s E¨3°vð
ñ 
ô 
ˆð Ð&Ø"Ð"à�‚€ØˆˆØ	�:Ò	Ð	ØˆÝ˜4  e¨S°&Ñ9Ô9Ð9rY   c                 ó@   — t          t          | ¦  «        |||¦  «        S r`   )Úscatter_add_rw  ©rt   r¥   r  rÓ  s       rW   Úscatter_addrÚ    s   € å�˜a™œ # u¨cÑ2Ô2Ð2rY   c                 ó(   — t          | |||d¦  «        S )NrÒ  )rÕ  rÙ  s       rW   rØ  rØ    s   € å˜1˜c 5¨#¨uÑ5Ô5Ð5rY   c                 ó>   — t          t          | ¦  «        ||||fi |¤ŽS r`   )rÕ  rw  )rt   r¥   r  rÓ  Úreduction_typer¹   s         rW   Úscatter_reducerÞ  #  s&   € å�5 ™8œ8 S¨%°°nÐOÐOÈÐOÐOÐOrY   )rÊ  c          
      óÒ  ‡ ‡‡‡‡— |dv sJ ‚t          t          j                             ¦   «         ¦  «        dk    r dt          j                             ¦   «         v s
J d¦   «         ‚t	          ‰t
          ¦  «        rt          ‰ ‰¦  «        Št          t          j        j        ‰ ‰|‰||¬¦  «        }|r|S t	          ‰ t          ¦  «        sJ ‚dt          |                     ¦   «         ¦  «        v sJ ‚t          ‰                      ¦   «         ¦  «        }|dk    rt          ‰ dg¦  «        Š t	          ‰t          ¦  «        r6t          ‰                     ¦   «         ¦  «        dk    rt          ‰dg¦  «        Št	          |t          ¦  «        r6t          |                     ¦   «         ¦  «        dk    rt          |dg¦  «        }|                     ¦   «         dk    r‰ S t          ‰ ‰¦  «        Š‰                      ¦   «          |                     ¦   «         Št	          ‰t          ¦  «        r‰                     ¦   «         nd Šˆˆˆ fd„}ˆ ˆˆfd	„}	d
„ }
|s¿t%          j        ‰                      ¦   «         ‰                      ¦   «         ˆ fd„|                     ¦   «         |d ¬¦  «        }t%          j        d t%          j        ‰ ¦  «        |¬¦  «        }t.          j                             |¦  «        |_        t.          j                             |¦  «         t%          j        ‰                      ¦   «         ‰                      ¦   «         |	|                     ¦   «         | |
|¦  «        ¬¦  «        }t%          j        d t%          j        ‰ ¦  «        |¬¦  «        }t.          j                             |¦  «        |_        t.          j                             |¦  «         |dk    rt          ‰ g ¦  «        Š ‰ S )N>   NrÒ  ÚamaxÚaminÚmeanrÓ  r$   ÚtwozKaten.scatter_reduce_.two is not the unique overload of aten.scatter_reduce_rÉ  r�   r   c                 óÎ   •— ‰                      ¦   «         }t          |¦  «        }t          | ¦  «        }t          j         ‰| ¦  «        |dk    rdn|‰         d¬¦  «        |‰<   |S )Nr   r$   F)rk  )r¢   r¡   ry   rB   rH  )rö  ró  rè  Úindirect_idxr¥   rJ  r‘  s       €€€rW   r©  z'scatter_reduce_.<locals>.output_indexerV  sk   ø€ à—’‘”ˆÝ�5‰zŒzˆÝ˜C‘y”yˆÝÔ1ØˆL˜ÑÔ D¨A¢I I˜q˜q°5¸´:Èð
ñ 
ô 
ˆ�SÑð ÐrY   c                 ól   •— ‰r ‰| ¦  «        S t          j        ‰‰                     ¦   «         ¦  «        S r`   ©rB   r8  r”   )rö  r‘  rÓ  rã  s    €€€rW   rK   zscatter_reduce_.<locals>.fn`  s7   ø€ Øð 	7Ø�:˜c‘?”?Ð"õ ”<  T§^¢^Ñ%5Ô%5Ñ6Ô6Ð6rY   c                 ó   — | dk    rdS | �J ‚d S )NrÒ  r§  rp   rÏ  s    rW   Úbackend_reduce_strz+scatter_reduce_.<locals>.backend_reduce_strg  s    € Ø�UŠ?ˆ?Ø�<ð �>�>�>Ø�4rY   c                 óR   •— t          j        d‰                     ¦   «         ¦  «        S r§  rç  )r  r‘  s    €rW   r4  z!scatter_reduce_.<locals>.<lambda>t  s   ø€ ¥3¤<°°4·>²>Ñ3CÔ3CÑ#DÔ#D€ rY   r¨  r«  )r¡   rŽ  rÕ  r   rZ   r   rÛ  rÎ  rã  r5   rV  r”   r¢   r�  rK  r  rb  r0  r'   r¬  rÚ   r�  r­  rC   r  r  rµ   r	  )r‘  r¥   r  rÓ  rÃ  rÊ  rÖ  rè  r©  rK   ré  Úzero_outr  r°  rJ  rã  s   `` `          @@rW   rÕ  rÕ  (  sè  øøøøø€ àÐBÐBÐBÐBÐBå�DÔ ×*Ò*Ñ,Ô,Ñ-Ô-°Ò2Ð2Ø•TÔ)×3Ò3Ñ5Ô5Ð5Ð5Ð5ØTñ 6Ô5ð	6õ �#•vÑÔð #Ý˜˜cÑ"Ô"ˆå&ÝÔÔ ØØØØØØ!ðñ ô €Oð ð ØÐå�d�IÑ&Ô&Ð&Ð&Ð&Ø•C˜ŸšÑ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*åˆt�}Š}‰ŒÑÔ€DØˆq‚y€yÝ�D˜1˜#‰Œˆå�#•yÑ!Ô!ð ¥c¨#¯,ª,©.¬.Ñ&9Ô&9¸QÒ&>Ð&>Ý�3˜˜‰nŒnˆå�%�Ñ#Ô#ð !­¨E¯NªNÑ,<Ô,<Ñ(=Ô(=ÀÒ(BÐ(BÝ�U˜Q˜CÑ Ô ˆà‡‚ÑÔ˜AÒÐØˆå
˜˜cÑ
"Ô
"€Cà‡L‚L�N„N€NØ×$Ò$Ñ&Ô&€LÝ&0°µiÑ&@Ô&@ÐJ�—’Ñ"Ô"Ð"Àd€Jðð ð ð ð ð ð ð7ð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð +å”:Ø—?’?Ñ$Ô$Ø—.’.Ñ"Ô"ØDÐDÐDÐDØ—>’>Ñ#Ô#Ø)Øð
ñ 
ô 
ˆõ Ô"ØÝÔ0°Ñ6Ô6Øð
ñ 
ô 
ˆõ
 ”g×-Ò-¨fÑ5Ô5ˆŒÝ	Œ×"Ò" 6Ñ*Ô*Ð*õ
 ŒjØ�ŠÑ Ô Ø�nŠnÑÔØØ�~Š~ÑÔØ%Ø'Ð'¨Ñ/Ô/ðñ ô €Gõ ÔØÝÔ,¨TÑ2Ô2Øðñ ô €Fõ
 ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&àˆq‚y€yÝ�D˜"‰~Œ~ˆØ€KrY   Úscales_xÚnÚexactc                 ó&  ‡‡‡
‡‡‡— |                       ¦   «          |                      ¦   «         Š|                      ¦   «         ‰ d …         Š
|                      ¦   «         d ‰ …         }d„ ‰
D ¦   «         Š
t          |¦  «        ‰k    sJ ‚|}d„ t	          ‰
|¦  «        D ¦   «         Št          |¦  «        D ]\  }}|�d|z  ‰|<   Œˆfd„Šˆ
ˆˆˆˆfd„}	t          j        |                      ¦   «         |  	                    ¦   «         |	g |¢|¢¬¦  «        S )Nc                 óV   — g | ]&}t           j        j                             |¦  «        ‘Œ'S rp   rÊ  r^  s     rW   ru   z&upsample_nearestnd.<locals>.<listcomp>¤  s+   € ÐJÐJÐJ¸Q�qŒwÔ×5Ò5°aÑ8Ô8ÐJÐJÐJrY   c                 ó   — g | ]
\  }}||z  ‘ŒS rp   rp   )rs   rÀ   Úos      rW   ru   z&upsample_nearestnd.<locals>.<listcomp>©  s    € Ð:Ð:Ð:™D˜A˜q�!�a‘%Ð:Ð:Ð:rY   rm  c                 óz  •— t          j        | t          j        ¦  «        } ‰r2t          j        | t          j        dt          j        ¦  «        ¦  «        } t          j        | t          j        |t          j        ¦  «        ¦  «        } t          j        | t          j        ¦  «        } t          j	        | |d¬¦  «        S )Nç      à?Frˆ  )
rB   r6  rO   rT  r|   r8  rE  rÍ   r±  rH  )rt   rY  rå   rî  s      €rW   Úscale_fnz$upsample_nearestnd.<locals>.scale_fn®  s‰   ø€ õ ŒN˜1�eœmÑ,Ô,ˆØð 	=Ý”˜�3œ<¨­U¬]Ñ;Ô;Ñ<Ô<ˆAÝŒG�A•s”| E­5¬=Ñ9Ô9Ñ:Ô:ˆÝŒL˜�EœKÑ(Ô(ˆÝÔ$ Q¨°EÐ:Ñ:Ô:Ð:rY   c           	      ó„   •— | ‰ d …         }| d ‰ …         } ‰g |¢ˆfd„t          |‰‰¦  «        D ¦   «         ¢¦  «        S )Nc                 ó2   •— g | ]\  }}} ‰|||¦  «        ‘ŒS rp   rp   )rs   rÀ   rÐ  rå   rõ  s       €rW   ru   z2upsample_nearestnd.<locals>.fn.<locals>.<listcomp>½  s-   ø€ ÐVÐVÐV©J¨A¨q°$�8�8˜A˜q $Ñ'Ô'ÐVÐVÐVrY   )rÞ   )rö  rt   r  Úi_sizesÚ
inv_scalesrí  rõ  r  s      €€€€€rW   rK   zupsample_nearestnd.<locals>.fn¹  sc   ø€ Ø����ŒHˆØ��!��ŒHˆØˆxØWˆaÐWÐVÐVÐVÐV½#¸aÀÈWÑ:UÔ:UÐVÑVÔVÐWñ
ô 
ð 	
rY   rD  )
Úrealize_hintr0  r¢   r¡   rÞ   rÖ   r2   rà   rÚ   r”   )rt   rt  rì  rí  rî  ÚbatchÚo_sizesrÀ   rY  rK   rø  rù  rõ  r  s      ``     @@@@rW   Úupsample_nearestndrý  ™  sZ  øøøøøø€ ð ‡N‚NÑÔÐØ�}Š}‰Œ€HØ�jŠj‰lŒl˜A˜2˜3˜3Ô€GØ�JŠJ‰LŒL˜˜1˜"˜Ô€EØJÐJÀ'ÐJÑJÔJ€Gåˆx‰=Œ=˜AÒÐÐÐØ€Gà:Ð:¥C¨°Ñ$9Ô$9Ð:Ñ:Ô:€JÝ˜hÑ'Ô'ð (ð (‰ˆˆ5ØÐØ %™KˆJ�q‰Møð	;ð 	;ð 	;ð 	;ð 	;ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØ!�Ð!˜Ð!ð	ñ ô ð rY   c                 ó*   — t          | ||fd¬¦  «        S )Nr$   ©rí  ©rý  ©rt   rt  rG  s      rW   Úupsample_nearest1dr  È  s   € å˜a ¨v¨i¸1Ð=Ñ=Ô=Ð=rY   c                 ó,   — t          | ||fdd¬¦  «        S )Nr$   T©rí  rî  r   r  s      rW   Ú_upsample_nearest_exact1dr  Í  s   € å˜a ¨v¨i¸1ÀDÐIÑIÔIÐIrY   Úscales_hÚscales_wc                 ó,   — t          | |||fd¬¦  «        S )Nr"   rÿ  r   ©rt   rt  r  r  s       rW   Úupsample_nearest2dr
  Ò  s    € õ ˜a ¨x¸Ð.BÀaÐHÑHÔHÐHrY   c                 ó.   — t          | |||fdd¬¦  «        S )Nr"   Tr  r   r	  s       rW   Ú_upsample_nearest_exact2dr  Ù  s"   € õ ˜a ¨x¸Ð.BÀaÈtÐTÑTÔTÐTrY   Úscales_dc                 ó.   — t          | ||||fd¬¦  «        S )Nrƒ   rÿ  r   ©rt   rt  r  r  r  s        rW   Úupsample_nearest3dr  à  s#   € õ ˜a ¨x¸À8Ð.LÐPQÐRÑRÔRÐRrY   c                 ó0   — t          | ||||fdd¬¦  «        S )Nrƒ   Tr  r   r  s        rW   Ú_upsample_nearest_exact3dr  ë  s-   € õ Ø	ˆ;˜ 8¨XÐ6¸!À4ðñ ô ð rY   c                 ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}t          j        |‰¦  «        V — Œd S r`   rö  )rs   rÇ   r�   s     €rW   rx   z$_create_constants.<locals>.<genexpr>ù  s/   øè è € Ð6Ð6¨A•”˜a Ñ'Ô'Ð6Ð6Ð6Ð6Ð6Ð6rY   )rz   )r�   r©   s   ` rW   rS  rS  ø  s&   ø€ ÝÐ6Ð6Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ð6rY   c                 óÞ   ‡‡‡— |                       ¦   «         Š|                      ¦   «         Šˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         |‰¬¦  «        S )Nc                 ó´   •— t          | ¦  «        } t          | ¦  «        t          ‰¦  «        k    sJ ‚‰D ]}‰|         dz
  | |         z
  | |<   Œ ‰| ¦  «        S r¬  )ry   r¡   )rö  r¥   rÎ  rÄ  r  s     €€€rW   rp  zrev.<locals>.loader  sd   ø€ Ý�3‰iŒiˆÝ�3‰xŒx�3˜u™:œ:Ò%Ð%Ð%Ð%Øð 	3ð 	3ˆCØ˜cœ
 Q™¨#¨c¬(Ñ2ˆC�‰HˆHàˆx˜‰}Œ}ÐrY   rD  )r0  r¢   r2   rà   rÚ   r”   )rt   rÎ  rp  rÄ  r  s    ` @@rW   Úrevr  ü  s|   øøø€ ð �}Š}‰Œ€HØ�JŠJ‰LŒL€Eðð ð ð ð ð ð õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rY   c                 ó^  ‡‡‡‡‡‡‡— t          |¦  «        dz  dk    sJ ‚t          d„ |D ¦   «         ¦  «        rt          | ¦  «        S |                      ¦   «         }t	          t          t	          t          |d d d…         |dd d…         ¦  «        ¦  «        ¦  «        ¦  «        Št          |¦  «        t          ‰¦  «        z
  Šg Š‰D ]>\  }}‰                     t          j	        j
                             |¦  «        |f¦  «         Œ?t	          |d ‰…         ¦  «        }g Št          ‰|‰d …         ¦  «        D ]J\  \  }}}	‰                     |	¦  «         |                     t          j        |	|z   |z   ¦  «        ¦  «         ŒKt          |¦  «        t          |¦  «        k    sJ ‚ t          |                      ¦   «         ¦  «        ‰¦  «        Šˆˆˆˆˆfd„Šˆˆˆfd„}
|                      ¦   «         Št#          j        |                      ¦   «         |                      ¦   «         |
|¬¦  «        S )Nr"   r   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÀ  rp   ©rs   rG  s     rW   rx   z"constant_pad_nd.<locals>.<genexpr>  s&   è è € Ð
#Ð
#�aˆ1�Š6Ð
#Ð
#Ð
#Ð
#Ð
#Ð
#rY   r$   c                 óf  •‡ — g }t          ‰ ‰	d …         ‰‰¦  «        D ][\  }\  }}}|dk    r#|                     t          |d¦  «        ¦  «         |dk    r#|                     t          ||¦  «        ¦  «         Œ\t	          j        t          j        |¦  «        }t          j        |ˆ ˆ
fd„‰¦  «        S )Nr   c                  ó   •—  ‰‰ ¦  «        S r`   rp   )r  r  s   €€rW   r4  z/constant_pad_nd.<locals>.mask.<locals>.<lambda>2  s   ø€ ¨¨°©¬€ rY   )	rÞ   r®   Úrange_mask_lowÚrange_mask_highrì   rÃ  rB   r;  r<  )r  rB  rö  r}  r~  rÝ  Úboundsr  Ú
mask_sizesrí  r  s   `     €€€€€rW   rB  zconstant_pad_nd.<locals>.mask*  s·   øø€ ØˆÝ(+¨E°!°"°"¬I°v¸zÑ(JÔ(Jð 	:ð 	:Ñ$ˆC‘�#�t˜fØ�aŠxˆxØ—’�N¨3°Ñ2Ô2Ñ3Ô3Ð3Ø�qŠyˆyØ—’�O¨C°Ñ8Ô8Ñ9Ô9Ð9øÝÔ¥¤¨$Ñ/Ô/ˆÝŒz˜$Ð 7Ð 7Ð 7Ð 7Ð 7¸ÑDÔDÐDrY   c                 óþ   •— t          | d ‰…         ¦  «        }t          | ‰d …         ‰¦  «        D ] \  }\  }}|                     ||z
  ¦  «         Œ!t          |¦  «        t          | ¦  «        k    sJ ‚ ‰|¦  «        S r`   )ry   rÞ   r®   r¡   )r  rl  rö  r}  r~  Úbounds_precomprB  rí  s        €€€rW   Ú	offset_fnz"constant_pad_nd.<locals>.offset_fn4  s†   ø€ Ý˜˜r ˜rœ‘O”Oˆ	Ý # E¨!¨"¨"¤I¨~Ñ >Ô >ð 	(ð 	(ÑˆC‘�#�tØ×Ò˜S 3™YÑ'Ô'Ð'Ð'Ý�9‰~Œ~¥ U¡¤Ò+Ð+Ð+Ð+Øˆt�I‰ŒÐrY   rD  )r¡   r÷   rw  r¢   ry   r  rÞ   r®   rC   r  r	  Úlookup_precomputed_sizer•   r  r   r”   r0  r2   rà   rÚ   )rt   Úpaddingr  rÄ  ÚlÚhrt  r}  r~  rå   r#  r  r"  rB  r   rí  r  s     `        @@@@@@rW   r¥  r¥    sT  øøøøøøø€ å�‰LŒL˜1Ñ Ò"Ð"Ð"Ð"Ý
Ð
#Ð
#˜7Ð
#Ñ
#Ô
#Ñ#Ô#ð Ý�Q‰xŒxˆà�JŠJ‰LŒL€Eå•(�4¥ G¨C¨C¨a¨C¤L°'¸!¸$¸Q¸$´-Ñ @Ô @ÑAÔAÑBÔBÑCÔC€FÝˆE‰
Œ
•S˜‘[”[Ñ €Að 68€NØð Pð P‰ˆˆ1Ø×Ò�qœwÔ/×GÒGÈÑJÔJÈAÐNÑOÔOÐOÐOå�u˜R˜a˜R”y‘/”/€KØ€JÝ  ¨¨q¨r¨r¬Ñ3Ô3ð <ð <Ñ‰ˆˆd�TØ×Ò˜$ÑÔÐØ×Ò�5œ<¨¨s©
°TÑ(9Ñ:Ô:Ñ;Ô;Ð;Ð;Ýˆ{ÑÔ�s 5™zœzÒ)Ð)Ð)Ð)Ø-•˜qŸ{š{™}œ}Ñ-Ô-¨jÑ9Ô9€JðEð Eð Eð Eð Eð Eð Eð Eð Eðð ð ð ð ð ð ð �}Š}‰Œ€HÝÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rY   rÀ   c                 óÄ   — t          j        t          j        | t          j        ¦  «        t          j        t          j        |¦  «        t          j        ¦  «        ¦  «        S r`   )rB   r9  r6  rO   r7  r•   rý  )rÀ   r}  s     rW   r  r  D  sB   € ÝŒ6ÝŒ�q�%œ+Ñ&Ô&ÝŒ•u”} SÑ)Ô)­5¬;Ñ7Ô7ñô ð rY   c                 ó    — t          j        t          j        | t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        S r`   )rB   r:  r6  rO   r7  )rÀ   r~  s     rW   r  r  K  s8   € ÝŒ6ÝŒ�q�%œ+Ñ&Ô&ÝŒ�t�Uœ[Ñ)Ô)ñô ð rY   c                 ód   — t          j        t          | |¦  «        t          | |¦  «        ¦  «        S r`   )rB   r;  r  r  )rÀ   r~  r}  s      rW   Ú
range_maskr+  R  s0   € ÝŒ8Ý�q˜#ÑÔÝ˜˜4Ñ Ô ñô ð rY   rm  c                 ó    ‡ ‡‡‡‡‡‡‡— ‰                       ¦   «         ‰ d …         Š‰                      ¦   «         Š‰pdg‰z  Šˆˆˆˆˆˆˆ ˆfd„}|S )Nr   c                 ó  •‡‡— | d ‰ …         Š| ‰ d …         Št          j        t          j        ˆˆˆ	fd„t	          ‰¦  «        D ¦   «         ¦  «        }‰rt          j        |ˆˆˆˆˆ
fd„‰¦  «        nt          j        |ˆˆˆfd„‰¦  «        S )Nc                 ój   •— g | ]/}t          ‰|         ‰|         ‰|         z   ‰|          ¦  «        ‘Œ0S rp   )r+  )rs   rÀ   r'  ÚihÚ	padding_hs     €€€rW   ru   z=constant_boundary_condition.<locals>.load.<locals>.<listcomp>f  s<   ø€ ÐWÐWÐWÀq�Z˜˜1œ˜q œt i°¤lÑ2°Y¸q´\°MÑBÔBÐWÐWÐWrY   c                  óB   •—  t          ‰‰‰ ¬¦  «        g ‰¢‰¢¦  «        S )N©r¥   )Úconstant_boundary_condition)r¥   r/  Úpad_fill_valueÚprefixrt   s   €€€€€rW   r4  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>k  s/   ø€ ÐOÕ3°A°~È3ÐOÑOÔOØ"�f�N˜r�Nñô € rY   c                  ó"   •—  ‰g ‰¢‰ ¢¦  «        S r`   rp   )r/  r5  r  s   €€€rW   r4  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>q  s   ø€ ¨(¨(°>°V°>¸b°>Ñ*BÔ*B€ rY   )rì   rÃ  rB   r;  rß   r<  )r  rB  r/  r5  r¥   r  r'  r4  r%  r0  rt   r  s     @@€€€€€€€€rW   r7  z)constant_boundary_condition.<locals>.load`  sÔ   øøø€ Ø�u˜˜�u”ˆØ�C�4�5�5Œ\ˆåÔÝŒHØWÐWÐWÐWÐWÐWÍEÐRUÉJÌJÐWÑWÔWñ
ô 
ˆð ðP�CŒJØðð ð ð ð ð ð ð ð ñô ð õ ”˜DÐ"BÐ"BÐ"BÐ"BÐ"BÐ"BÀJÑOÔOð
	
rY   ©r¢   r0  )	rt   r  r%  r4  r¥   r7  r'  r0  r  s	   ````` @@@rW   r3  r3  Y  s„   øøøøøøøø€ ð 	
�
Š
‰Œ�c�T�U�UÔ€AØ�}Š}‰Œ€HØÐ$˜A˜3 ™9€Ið
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð( €KrY   c                 ó¦  — t          | d||         z  z   ||         dz
  z
  ||         dz
  z   ||         ¦  «        }|�rt          | d||         z  z   ||         dz
  z
  d||         dz
  z  z   ||         ¦  «        }t          j        j                             |dz
  ||         z  | z
  ||         z
  ¦  «        dk    r?|dz  }t          j        j                             d|||         z  | z
  ||         z
  ¦  «         t          j        j                             ||z
  ¦  «        dk    r(t          j        j                             ||¦  «         d}n|}||fS )Nr"   r$   r   F)r   rC   r  r	  rí  rå  r  )rt   rÀ   Úkernel_sizer#  r%  Ú	ceil_modeÚx_outÚx_alts           rW   Úpooling_sizer=  w  s]  € ÝØ	ˆA�˜”
‰NÑ˜k¨!œn¨qÑ0Ñ1°V¸A´YÀ±]ÑCÀVÈAÄYñô €Eð ñ ÝØ��G˜A”J‘Ñ +¨a¤.°1Ñ"4Ñ5¸¸VÀA¼YÈ¹]Ñ8KÑKÈVÐTUÌYñ
ô 
ˆõ Œ7Ô×%Ò% u¨q¡y°F¸1´IÑ&=ÀÑ&AÀGÈAÄJÑ&NÑOÔOÐSTÒTÐTà�Q‰JˆEÝŒGÔ×&Ò& q¨%°&¸´)Ñ*;¸aÑ*?À'È!Ä*Ñ*LÑMÔMÐMÝŒ7Ô×%Ò% e¨e¡mÑ4Ô4¸Ò9Ð9åŒGÔ×)Ò)¨%°Ñ7Ô7Ð7ØˆIˆIàˆEØ�)ÐÐrY   c                 ó‚   — t          | d¦  «        } | d         | d         z  }|dk    pt          d„ |D ¦   «         ¦  «        S )Nr"   r   r$   é   c              3   ó"   K  — | ]
}|d k    V — ŒdS rý  rp   rÌ  s     rW   rx   z:should_fallback_max_pool2d_with_indices.<locals>.<genexpr>�  s&   è è € Ð$=Ð$=¨q Q¨¢UÐ$=Ð$=Ð$=Ð$=Ð$=Ð$=rY   )r>   rø   )r9  ÚdilationÚwindow_sizes      rW   Ú'should_fallback_max_pool2d_with_indicesrC  �  sJ   € Ý˜{¨AÑ.Ô.€KØ˜a”. ;¨q¤>Ñ1€KØ˜"ÒÐ=¥Ð$=Ð$=°HÐ$=Ñ$=Ô$=Ñ!=Ô!=Ð=rY   ©Úassert_fallbackc                ó  — |dk    rddg}|dk    rddg}|s|}t          |d¦  «        }t          |d¦  «        }t          |d¦  «        }t          |d¦  «        }t          | t          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |                      ¦   «         ¦  «        dv sJ ‚t          ||¦  «        }|�||k    sJ ‚|||||fS )Nr   r$   r"   r½  )r>   rZ   r5   r¡   r¢   rC  )rt   r9  r#  r%  rA  rE  Úuse_fallbacks          rW   Úmax_pool2d_checksrH  “  s=  € ð �!‚|€|Ø�a�&ˆØ�1‚}€}Ø�q�6ˆØð Øˆå˜{¨AÑ.Ô.€KÝ˜& !Ñ$Ô$€FÝ˜7 AÑ&Ô&€GÝ˜H aÑ(Ô(€Hå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆx‰=Œ=˜AÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&å:¸;ÈÑQÔQ€LØÐ"Ø˜Ò.Ð.Ð.Ð.à˜ ¨°<Ð?Ð?rY   c                 óf  ‡‡‡‡— t          | ‰‰‰|d¬¦  «        \  ŠŠŠ}}|                      ¦   «          |                      ¦   «         �^ }}}	t          |d‰‰‰|¦  «        \  }
}t          |	d‰‰‰|¦  «        \  }}| j        }|t
          j        u rdn.|j        rt          d¦  «        nt          j	        |¦  «        j
        }t          |¦  «        |
|gz   }‰d         s‰d         s|s|rt          | |d¬¦  «        Šn|                      ¦   «         Šˆˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         t%          j        |d¬	¦  «        |¬
¦  «        }t          j        |                      ¦   «         t
          j        t%          j        |d¬	¦  «        |¬
¦  «        }||fS )NFrD  r   r$   ú-infr"   r2  c                 ó  •— | �^ }}}d }d }t          j        t          ‰d         ¦  «        t          ‰d         ¦  «        ¦  «        D ]¹\  }}|‰d         z  |z   ‰d         z
  }	|‰d         z  |z   ‰d         z
  }
 ‰g |¢|	‘|
‘¦  «        }|rYt          j        |‰d         z  |z   t
          j        ¦  «        }|€|}n)t          j        t          j        ||¦  «        ||¦  «        }|€|}Œ¤t          j	        ||¦  «        }Œº|r|S |S r¯  )
rÜ   Úproductrß   rB   r6  rO   r…  r¹  ÚgtrV  )rö  Úreturn_indexr5  ÚbhÚbwÚmaxvalÚmaxindexÚh_incÚw_incr/  ÚiwrÖ  r  r9  r%  r#  r  s                €€€€rW   rK   z/_low_memory_max_pool2d_with_offsets.<locals>.fnÑ  s3  ø€ Ø‰ˆ��RØˆØˆÝ%Ô-Ý�+˜a”.Ñ!Ô!¥5¨°Q¬Ñ#8Ô#8ñ
ô 
ð 	2ð 	2‰LˆE�5ð �f˜Q”i‘ %Ñ'¨'°!¬*Ñ4ˆBØ�f˜Q”i‘ %Ñ'¨'°!¬*Ñ4ˆBØ�(Ð,˜VÐ, RÐ,¨Ð,Ñ-Ô-ˆCØð OÝœ u¨{¸1¬~Ñ'=ÀÑ'EÅuÄzÑRÔR�ØÐ#Ø$�H�Hå"œy­¬°°VÑ)<Ô)<¸eÀXÑNÔN�HØˆ~Ø��åœ S¨&Ñ1Ô1��Øð 	ØˆOàˆMrY   ©rN  rD  T)rH  rú  r¢   r=  r�   rO   r›   r‰  r  rŒ  rÁ  ry   r3  r0  r2   rà   rÚ   r”   rì   rþ   r…  )rt   r9  r#  r%  rA  r:  r«   rû  r'  ÚwÚh_outÚ
ceil_mode1Úw_outÚ
ceil_mode2r�   Ú	min_valuer  rK   ré   Úoffsetsr  s    ```                @rW   Ú#_low_memory_max_pool2d_with_offsetsr^  °  sì  øøøø€ õ 1BØ	ˆ;˜ ¨À5ð1ñ 1ô 1Ñ-€K�˜ (¨Að ‡N‚NÑÔÐØ—:’:‘<”<�L€UˆAˆqå$ Q¨¨;¸ÀÈÑSÔSÑ€Eˆ:Ý$ Q¨¨;¸ÀÈÑSÔSÑ€Eˆ:àŒG€Eð •E”JÐÐð 	ˆà$Ô6ÐR�e�F‰mŒmˆm½E¼KÈÑ<NÔ<NÔ<Rð õ �E‰{Œ{˜e U˜^Ñ+€HØˆq„zð #�W˜Q”Zð # :ð #°ð #Ý.¨q°)ÀÐCÑCÔCˆˆà—=’=‘?”?ˆðð ð ð ð ð ð ð õ2 Ô
Ø�|Š|‰~Œ~Ø�kŠk‰mŒmÝÔ" 2°EÐ:Ñ:Ô:Øð	ñ ô €Cõ ÔØ�|Š|‰~Œ~ÝŒjÝÔ" 2°DÐ9Ñ9Ô9Øð	ñ ô €Gð �ˆ<ÐrY   c                 óâ   ‡‡‡‡‡‡— |                       ¦   «         Šˆˆˆfd„Šˆˆˆfd„}t          j        |                      ¦   «         t          j        ||                      ¦   «         ¬¦  «        }|S )Nc                 ó*  •— t          j        ‰	t          j        ¦  «        }t          j        |‰d         z  ‰
d         z
  t          j        ¦  «        }t          j        |‰d         z  ‰
d         z
  t          j        ¦  «        }|| z   }||z   }||z  |z   S r¯  )rB   r6  rO   r7  )rS  rT  rO  rP  Úw_inÚhbaseÚwbaser/  rU  Úinput_widthr%  r#  s            €€€rW   Úincrements_to_indexzF_low_memory_max_pool2d_offsets_to_indices.<locals>.increments_to_index  s~   ø€ ÝŒ~˜k­5¬;Ñ7Ô7ˆÝ”˜r F¨1¤I™~°¸´
Ñ:½E¼KÑHÔHˆÝ”˜r F¨1¤I™~°¸´
Ñ:½E¼KÑHÔHˆØ�U‰]ˆØ�U‰]ˆØ�D‰y˜2‰~ÐrY   c                 ó¦   •— | �^ }}} ‰
g |¢|‘|‘¦  «        }t          j        ‰	t          j        ¦  «        }||z  }|||z  z
  } ‰||||¦  «        S r`   ©rB   r8  rO   r±  )rö  r5  rO  rP  r¹  Úkw_constrS  rT  re  Úkernel_widthÚoffsets_loaders           €€€rW   Úoffsets_to_indiceszE_low_memory_max_pool2d_offsets_to_indices.<locals>.offsets_to_indices  sp   ø€ Ø‰ˆ��RØ�Ð 1 &Ð 1¨"Ð 1¨bÐ 1Ñ2Ô2ˆÝ”< ­e¬kÑ:Ô:ˆØ˜(Ñ"ˆØ˜% (Ñ*Ñ+ˆØ"Ð" 5¨%°°RÑ8Ô8Ð8rY   rD  )r0  r2   rà   rÚ   rO   r7  r¢   )	r]  ri  rd  r#  r%  rk  r¾  re  rj  s	    ````  @@rW   Ú)_low_memory_max_pool2d_offsets_to_indicesrl  ù  s§   øøøøøø€ ð ×(Ò(Ñ*Ô*€Nðð ð ð ð ð ð ð9ð 9ð 9ð 9ð 9ð 9ð 9õ ÔØ×!Ò!Ñ#Ô#ÝŒkØ#Ø×ÒÑ!Ô!ð	ñ ô €Gð €NrY   c                 ó  ‡‡‡‡‡‡‡‡‡‡‡— ‰dk    rddgŠ|dk    rddg}‰s‰Št          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                      ¦   «         }t          |t          ¦  «        r¶t          |j        j        t          ¦  «        r—|j        j        }	t          j	        d t          j
        |	                     ¦   «         |	                     ¦   «         |	                     ¦   «         ¬¦  «        |	¬¦  «        }
|
                     ¦   «          |
                     ¦   «         }n|                     ¦   «         }|d ur|d         dk    p|d uo|d         dk    }t          d„ |D ¦   «         ¦  «        rt!          | |‰‰‰|||¦  «        S |                     ¦   «         �^ }}Š|                      ¦   «         �^ }ŠŠ|                     ¦   «         Š|                      ¦   «         Št%          |                     ¦   «         ¦  «        }t'          ˆˆfd„t)          ‰d         dz  ¦  «        D ¦   «         ¦  «        Št'          ˆˆfd	„t)          ‰d         dz  ¦  «        D ¦   «         ¦  «        Š‰‰z  }|d
k    rt!          | |‰‰‰|||¦  «        S |                     ¦   «         Šˆˆˆˆˆˆˆˆˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        }|rt          j                             |¦  «        S |S )Nr   r$   r"   r½  )rÌ   r�   rå   r«  c              3   ó"   K  — | ]
}|d k    V — ŒdS rý  rp   rÌ  s     rW   rx   z3max_pool2d_with_indices_backward.<locals>.<genexpr>O  s&   è è € Ð
$Ð
$�aˆ1�Š6Ð
$Ð
$Ð
$Ð
$Ð
$Ð
$rY   c           
   3   ó�   •K  — | ]@}t          |‰d          z  t          d |‰d          z
  ‰d          z  ¦  «        z
  d¦  «        V — ŒAdS ©r   r$   N©rÂ  ©rs   r'  r9  r#  s     €€rW   rx   z3max_pool2d_with_indices_backward.<locals>.<genexpr>\  ój   øè è € ð ð àõ 	ˆA�˜”‰N�S  Q¨°Q¬Ñ%7¸FÀ1¼IÑ$EÑFÔFÑFÈÑJÔJðð ð ð ð ð rY   c           
   3   ó�   •K  — | ]@}t          |‰d          z  t          d|‰d          z
  ‰d          z  ¦  «        z
  d ¦  «        V — ŒAdS ©r$   r   Nrq  ©rs   rW  r9  r#  s     €€rW   rx   z3max_pool2d_with_indices_backward.<locals>.<genexpr>`  rs  rY   r?  c                 ód  •— | �^ }}}t          j        |‰z  |z   t          j        ¦  «        }|‰d         z   }|‰d         z   }t          j        t	          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t	          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t	          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        t	          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }d }	t          ‰¦  «        D �]}
t          ‰¦  «        D �]}t          j	        |t          j        |
t          j        ¦  «        ¦  «        }t          j	        |t          j        |t          j        ¦  «        ¦  «        }g |¢t          j
        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d         d¬¦  «        ‘t          j
        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d         d¬¦  «        ‘} ‰|¦  «        } ‰|¦  «        }t          j        ||¦  «        }|	€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }	�Œ�t          j        t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        |¦  «        }t          j        |t          j	        |	|¦  «        |	¦  «        }	�Œ�Œ|	€J ‚|	S )Nr   r$   éþÿÿÿFrˆ  r-  r5  )rB   r6  rO   r±  r   rV  r8  rW  rß   r|   rH  rh  râ  r¹  rT  r;  r:  )rö  r5  r'  rW  Ú
index_testÚphstartÚpwstartÚphendÚpwendÚgradientÚph_Úpw_ÚphÚpwÚ
grad_indexÚindex_actualÚ	grad_partr   rB  Úgrad_loaderÚh_window_sizerR  Úindices_sizer9  r%  Úpooled_heightÚpooled_widthr#  Úw_window_sizeÚwidths                      €€€€€€€€€€€rW   rK   z,max_pool2d_with_indices_backward.<locals>.fno  sƒ  ø€ Ø‰ˆ��AÝ”^ A¨¡I°¡Mµ5´;Ñ?Ô?ˆ
Ø�˜”
‰NˆØ�˜”
‰NˆÝ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆÝ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆå”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”˜E¥3¤>°-ÅÄÑ#MÔ#MÑNÔNˆÝ”˜E¥3¤>°,ÅÄÑ#LÔ#LÑMÔMˆàˆÝ˜Ñ'Ô'ð #	Wñ #	WˆCÝ˜]Ñ+Ô+ð "Wñ "W�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�ðØðåÔ)Ýœ B­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(TÑUÔUØ$ RÔ(Ø#ðñ ô ðõ Ô)Ýœ B­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(TÑUÔUØ$ RÔ(Ø#ðñ ô ð�
ð  .˜~¨jÑ9Ô9�Ø'˜K¨
Ñ3Ô3�	Ýœ˜|¨ZÑ8Ô8�àÐ#å"œyØ˜y­#¬,°s½E¼MÑ*JÔ*Jñ ô  �H‘Hõ œ8ÝœÝœF 2 uÑ-Ô-ÝœF 2 uÑ-Ô-ñô ð ñô �Dõ  #œy¨­s¬w°xÀÑ/KÔ/KÈXÑVÔV�H‘HñE"WðF Ð#Ð#Ð#ØˆrY   rD  )rZ   r5   r¡   r¢   rú  rÉ  rV  r2   r'   r�  r>  rÚ   r”   Údecide_layoutr†  rø   Ú)fallback_max_pool2d_with_indices_backwardr0  ry   rÂ  rß   rà   rh  r°  )Úgrad_outputrt   r9  r#  r%  rA  r:  r¾  Ú	gO_striderV  Úx_bufferÚx_strideÚis_channels_lastrû  Úheightr«   r  rB  rK   ré   r†  r‡  rR  rˆ  r‰  rŠ  r‹  rŒ  s     ```               @@@@@@@@rW   Ú max_pool2d_with_indices_backwardr•  &  s-  øøøøøøøøøøø€ ð �!‚|€|Ø�a�&ˆØ�1‚}€}Ø�q�6ˆØð Øˆå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆx‰=Œ=˜AÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&ð ×ÒÑÔÐØ×,Ò,Ñ.Ô.€Iå�!•YÑÔð (¥J¨q¬v¬{½IÑ$FÔ$Fð (ØŒvŒ{ˆÝÔ$ØÝÔ$Ø—’Ñ(Ô(Ø—n’nÑ&Ô&Ø—]’]‘_”_ðñ ô ð
 ð
ñ 
ô 
ˆð 	×ÒÑ Ô Ð Ø×&Ò&Ñ(Ô(ˆˆà×%Ò%Ñ'Ô'ˆà ¨Ð,ÐA°¸!´ÀÒ1Að Ø˜ÐÐ3 )¨A¤,°!Ò"3ð õ Ð
$Ð
$˜8Ð
$Ñ
$Ô
$Ñ$Ô$ð 
å8Ø˜˜K¨°¸(ÀIÈwñ
ô 
ð 	
ð ŸJšJ™LœLÑ€UˆF�EØ&1×&:Ò&:Ñ&<Ô&<Ñ#€Qˆ�|à×(Ò(Ñ*Ô*€NØ×)Ò)Ñ+Ô+€KÝ�A—J’J‘L”LÑ!Ô!€Håð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mõ ð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mð
   -Ñ/€Kà�RÒÐå8Ø˜˜K¨°¸(ÀIÈwñ
ô 
ð 	
ð ×#Ò#Ñ%Ô%€Lð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9õv Ô
Ø×%Ò%Ñ'Ô'Ø×#Ò#Ñ%Ô%ØØð	ñ ô €Cð ð ÝŒ×4Ò4°SÑ9Ô9Ð9àˆ
rY   r5  c                 ón   ‡‡— |                       ¦   «         �^ }}}|                      ¦   «         Šˆˆfd„}|S )Nc           
      óÒ  •‡ ‡‡‡	‡
— |\  ŠŠ	|\  ŠŠ
|\  }}t          j        t          j        t          j        ‰‰z   t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        t          j        t          j        ‰
‰	z   t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        ¦  «        }t          j        |ˆˆˆ	ˆ ˆ
ˆfd„‰¦  «        S )Nc                  ó2   •—  ‰g ‰¢‰ ‰z   ‘‰‰z   ‘¦  «        S r`   rp   )Úh_start_indexr/  rU  r5  Úw_start_indexr  s   €€€€€€rW   r4  z3pad_adaptive_loader.<locals>.load.<locals>.<lambda>Ì  s+   ø€ �H�HÐN˜vÐN }°rÑ'9ÐN¸=È2Ñ;MÐNÑOÔO€ rY   )rB   r;  r:  r6  rO   r7  r<  )r5  Ú
incrementsÚstart_indicesÚend_indicesÚh_end_indexÚw_end_indexrB  r™  r/  rU  rš  Úpad_valr  s   `      @@@@€€rW   r7  z!pad_adaptive_loader.<locals>.loadº  sÛ   øøøøøø€ Ø‰ˆˆBØ'4Ñ$ˆ�}Ø#.Ñ ˆ�[åŒxÝŒFÝ”˜}¨rÑ1µ5´;Ñ?Ô?Ý”˜{­E¬KÑ8Ô8ñô õ ŒFÝ”˜}¨rÑ1µ5´;Ñ?Ô?Ý”˜{­E¬KÑ8Ô8ñô ñ	
ô 	
ˆõ ŒzØØOÐOÐOÐOÐOÐOÐOÐOÐOØñ
ô 
ð 	
rY   r7  )rt   r   r«   r'  rW  r7  r  s    `    @rW   Úpad_adaptive_loaderr¡  ¶  sI   øø€ Ø�zŠz‰|Œ|�H€Qˆˆ1Ø�}Š}‰Œ€Hð
ð 
ð 
ð 
ð 
ð 
ð, €KrY   c                 óÆ   — t          j        | ||¬¦  «        }t          j        |||¬¦  «        }t          j        | ||¬¦  «        }t          j        |||¬¦  «        }	||||	fS )N)Úout_dimÚinp_dim)rì   rþ   )
Ústart_indexÚ	end_indexÚh_inra  rX  rZ  r™  rž  rš  rŸ  s
             rW   Ú compute_indices_adaptive_poolingr¨  Ó  sm   € ÝÔ% k¸5È$ÐOÑOÔO€MÝÔ# I°uÀdÐKÑKÔK€KåÔ% k¸5È$ÐOÑOÔO€MÝÔ# I°uÀdÐKÑKÔK€Kà˜+ }°kÐAÐArY   c                 ól   ‡‡‡‡‡‡— |\  }}|\  }}	t          | |||||	¦  «        \  ŠŠŠŠˆˆˆˆˆˆfd„}
|
S )Nc                 ó<  •— | �^ }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }d }	t          j        t          ‰d         ¦  «        t          ‰d         ¦  «        ¦  «        D ]*\  }
} |||
|g||g||g¦  «        }|	€|}	Œ ‰||	¦  «        }	Œ+|	S r¯  )rÜ   rL  rß   )rö  rp  r5  rO  rP  r™  rž  rš  rŸ  r,  r/  rU  rÖ  Úh_end_index_fnÚh_start_index_fnÚkernel_maxesÚ
pooling_fnÚw_end_index_fnÚw_start_index_fns                €€€€€€rW   rK   z _adaptive_pooling_fn.<locals>.fnì  sÛ   ø€ Ø‰ˆ��Rà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆàˆÝÔ'­¨l¸1¬oÑ(>Ô(>ÅÀlÐSTÄoÑ@VÔ@VÑWÔWð 
	1ð 
	1‰FˆB�Ø�&ØØ�R�Ø Ð.Ø˜kÐ*ñ	ô ˆCð ˆ~Ø��à#˜ C¨Ñ0Ô0��ØˆrY   ©r¨  )r¥  r¦  r­  Úin_sizesÚ	out_sizesr®  r§  ra  rX  rZ  rK   r«  r¬  r¯  r°  s     `  `     @@@@rW   Ú_adaptive_pooling_fnr´  Ý  s‚   øøøøøø€ ð �J€Dˆ$Ø�L€Eˆ5õ 	)Ø�Y  d¨E°5ñ	ô 	ñØØØØð
ð ð ð ð ð ð ð ð ð ð. €IrY   c                 óp   ‡‡‡
‡‡‡‡— |\  }Š|\  }}t          | ||‰||¦  «        \  ŠŠ
ŠŠˆ
ˆˆˆˆˆˆfd„}	|	S )Nc                 óò  •— | �^ }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }d }	d }
t          j        t          ‰d         ¦  «        t          ‰d         ¦  «        ¦  «        D ]ƒ\  }} ||||g||g||g¦  «        }t          j        ||z   ‰z  |z   |z   t
          j        ¦  «        }|
€|}
n)t          j        t          j        ||	¦  «        ||
¦  «        }
|	€|}	Œw ‰||	¦  «        }	Œ„|
S r¯  )	rÜ   rL  rß   rB   r6  rO   r7  r¹  rM  )rö  rp  r5  rO  rP  r™  rž  rš  rŸ  rQ  rR  r/  rU  rÖ  r  r«  r¬  r­  r®  r¯  ra  r°  s                  €€€€€€€rW   rK   z)_adaptive_pooling_fn_with_idx.<locals>.fn  s:  ø€ Ø‰ˆ��Rà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆàˆØˆÝÔ'­¨l¸1¬oÑ(>Ô(>ÅÀlÐSTÄoÑ@VÔ@VÑWÔWð 	1ð 	1‰FˆB�Ø�&ØØ�R�Ø Ð.Ø˜kÐ*ñ	ô ˆCõ ”NØ Ñ# tÑ+¨mÑ;¸bÑ@Å%Ä+ñô ˆEð ÐØ ��åœ9¥S¤V¨C°Ñ%8Ô%8¸%ÀÑJÔJ�àˆ~Ø��à#˜ C¨Ñ0Ô0��àˆrY   r±  )r¥  r¦  r­  r²  r³  r®  r§  rX  rZ  rK   r«  r¬  r¯  ra  r°  s     `  `    @@@@@rW   Ú_adaptive_pooling_fn_with_idxr·    s‰   øøøøøøø€ ð �J€Dˆ$Ø�L€Eˆ5õ 	)Ø�Y  d¨E°5ñ	ô 	ñØØØØð
!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ðF €IrY   c                 óF  ‡ ‡‡— t          ‰ t          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚‰                      ¦   «          ‰                      ¦   «         �^ }}}t
          j        j                             |¦  «        }t
          j        j                             |¦  «        }|\  }}||k    r||k    rt          ‰ ¦  «        S |dk    s|dk    r>g |¢|‘|‘}t          |‰                      ¦   «         ‰                      ¦   «         ¬¦  «        S ||z  dk    r#||z  dk    r||z  ||z  g}t          ‰ |¦  «        S t          ||z   dz
  |¦  «        }	t          ||z   dz
  |¦  «        }
t          |¦  «        ||gz   }‰                      ¦   «         }|	|
z  }|dk    rt!          ‰ |¦  «        S d„ }d„ }t#          |||	|
g||g||gt$          j        ¬¦  «        Št)          t+          ‰ ¦  «        ¦  «        Šˆˆˆ fd	„}t-          j        ‰                      ¦   «         |||¬
¦  «        }|S )Nr"   r   rû  r$   r?  c                 ó(   — t          | |z  |¦  «        S r`   ©r   ©r  r£  r¤  s      rW   r¥  z)_adaptive_avg_pool2d.<locals>.start_indexc  ó   € Ý˜ ™¨7Ñ3Ô3Ð3rY   c                 ó:   — t          | dz   |z  |z   dz
  |¦  «        S r¬  rº  r»  s      rW   r¦  z'_adaptive_avg_pool2d.<locals>.end_indexf  ó%   € Ý˜ ™ gÑ-°Ñ7¸!Ñ;¸WÑEÔEÐErY   ©r¥  r¦  r­  r²  r³  r®  c                 óp   •— t          j         ‰| t          ‰¦  «        ¦  «         ‰| ‰¦  «        ¦  «        S r`   )rB   Útruedivr¡  )rö  Úfn_sumÚones_loaderrt   s    €€€rW   rK   z _adaptive_avg_pool2d.<locals>.fnt  s=   ø€ ÝŒ{ØˆF�3Õ+¨AÑ.Ô.Ñ/Ô/°°¸¸[Ñ1IÔ1Iñ
ô 
ð 	
rY   rD  )rZ   r5   r¡   rú  r¢   rC   r  r	  rË  rw  r  r”   rÚ   Ú
avg_pool2dr8   ry   Úfallback_adaptive_avg_pool2dr´  rB   r|   r¡  Ú	ones_liker2   rà   )rt   rt  rû  r§  ra  rX  rZ  Úo_sizer9  Úh_kernel_maxÚw_kernel_maxr  r�   rB  r¥  r¦  rK   ÚrvrÂ  rÃ  s   `                 @@rW   Ú_adaptive_avg_pool2drË  @  sr  øøø€ å�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ø‡N‚NÑÔÐàŸš™œÑ€UˆD�$åŒ7Ô×1Ò1°$Ñ7Ô7€DÝŒ7Ô×1Ò1°$Ñ7Ô7€Dà�L€Eˆ5ð ˆu‚}€}˜ š˜Ý�Q‰xŒxˆà�‚z€z�U˜a’Z�ZØ'�5Ð'˜%Ð' Ð'ˆÝ�V 1§;¢;¡=¤=¸¿º¹¼ÐHÑHÔHÐHØˆe�|�qÒÐ˜T E™\¨QÒ.Ð.Ø˜u‘} d¨e¡mÐ4ˆÝ˜!˜[Ñ)Ô)Ð)å˜D 5™L¨1Ñ,¨uÑ5Ô5€LÝ˜D 5™L¨1Ñ,¨uÑ5Ô5€Lå�E‰{Œ{˜e U˜^Ñ+€HØ�KŠK‰MŒM€Eà Ñ-€KØ�RÒÐå+¨A¨{Ñ;Ô;Ð;ð4ð 4ð 4ðFð Fð Fõ "ØØØ" LÐ1Ø˜�Ø˜%�.Ý”7ðñ ô €Fõ &¥i°¡l¤lÑ3Ô3€Kð
ð 
ð 
ð 
ð 
ð 
ð 
õ
 
Ô	Ø�|Š|‰~Œ~ØØØð	
ñ 
ô 
€Bð €IrY   c                 óÎ  ‡ ‡‡— t          ‰ t          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚‰                      ¦   «          ‰                      ¦   «         �^ }}}t
          j        j                             |¦  «        }t
          j        j                             |¦  «        }|\  }}|dk    s|dk    rlg |¢|‘|‘}t          |‰  
                    ¦   «         ‰                      ¦   «         ¬¦  «        t          |t          j        ‰                      ¦   «         ¬¦  «        fS ||z  dk    r||z  dk    rt          ‚t          ||z   dz
  |¦  «        }t          ||z   dz
  |¦  «        }	t!          |¦  «        ||gz   }
‰  
                    ¦   «         }||	z  }|dk    rt#          ‰ |¦  «        S d„ }d„ }t%          ||||	g||g||gt&          j        ¬¦  «        Št+          ||||	g||g||gt&          j        ¬¦  «        Šˆˆ fd	„}ˆˆ fd
„}t-          j        ‰                      ¦   «         |||
¬¦  «        }t-          j        ‰                      ¦   «         t          j        ||
¬¦  «        }||fS )Nr"   r   rû  r$   r?  c                 ó(   — t          | |z  |¦  «        S r`   rº  r»  s      rW   r¥  z(adaptive_max_pool2d.<locals>.start_indexª  r¼  rY   c                 ó:   — t          | dz   |z  |z   dz
  |¦  «        S r¬  rº  r»  s      rW   r¦  z&adaptive_max_pool2d.<locals>.end_index­  r¾  rY   r¿  c           	      óR   •—  ‰| t          ‰t          d¦  «        ¦  «        ¦  «        S ©NrJ  ©r¡  r  )rö  Úinner_func_max_valrt   s    €€rW   Úinner_fn_max_valz-adaptive_max_pool2d.<locals>.inner_fn_max_valÂ  ó'   ø€ Ø!Ð! #Õ':¸1½eÀF¹m¼mÑ'LÔ'LÑMÔMÐMrY   c           	      óR   •—  ‰| t          ‰t          d¦  «        ¦  «        ¦  «        S rÐ  rÑ  )rö  Úinner_func_max_idxrt   s    €€rW   Úinner_fn_max_idxz-adaptive_max_pool2d.<locals>.inner_fn_max_idxÅ  rÔ  rY   rD  )rZ   r5   r¡   rú  r¢   rC   r  r	  rË  r  r”   rÚ   rO   r7  Ú
ValueErrorr8   ry   Úfallback_adaptive_max_pool2dr´  rB   rV  r·  r2   rà   )rt   rt  rû  r§  ra  rX  rZ  rÇ  rÈ  rÉ  r  r�   rB  r¥  r¦  rÓ  r×  rÊ  ÚrirÖ  rÒ  s   `                  @@rW   Úadaptive_max_pool2drÛ  ˆ  sâ  øøø€ å�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ø‡N‚NÑÔÐàŸš™œÑ€UˆD�$åŒ7Ô×1Ò1°$Ñ7Ô7€DÝŒ7Ô×1Ò1°$Ñ7Ô7€Dà�L€Eˆ5à�‚z€z�U˜a’Z�ZØ'�5Ð'˜%Ð' Ð'ˆÝ�V 1§;¢;¡=¤=¸¿º¹¼ÐHÑHÔHÍ%Ø�%œ+¨a¯lªl©n¬nðK
ñ K
ô K
ð 
ð 	
ð ˆe�|�qÒÐ˜T E™\¨QÒ.Ð.åÐå˜D 5™L¨1Ñ,¨uÑ5Ô5€LÝ˜D 5™L¨1Ñ,¨uÑ5Ô5€Lå�E‰{Œ{˜e U˜^Ñ+€HØ�KŠK‰MŒM€Eà Ñ-€KØ�RÒÐå+¨A¨{Ñ;Ô;Ð;ð4ð 4ð 4ðFð Fð Fõ .ØØØ" LÐ1Ø˜�Ø˜%�.Ý”;ðñ ô Ðõ 7ØØØ" LÐ1Ø˜�Ø˜%�.Ý”;ðñ ô ÐðNð Nð Nð Nð Nð NðNð Nð Nð Nð Nð Nõ 
Ô	Ø�|Š|‰~Œ~ØØ!Øð	
ñ 
ô 
€Bõ 
Ô	Ø�|Š|‰~Œ~ÝŒkØ!Øð	
ñ 
ô 
€Bð ˆrˆ6€MrY   c                 ó®   ‡ ‡‡‡‡‡‡— ‰‰         Š‰‰         Š‰‰         Št          ‰‰z
  ‰dz
  ¦  «        Š‰                      ¦   «         Šˆˆˆˆˆˆ ˆfd„}|S )Nr$   c                 ó6  •—  ‰g | ¢‰‘¦  «        }t          j        |‰                     ¦   «         ¦  «        }t          j        ‰‰                     ¦   «         ¦  «        }t          j        ||z   |z  ¦  «        t          j        ||z  ¦  «        z
  }t          j        |t
          j        ¦  «        }t          j        |t          j        ‰dz
  t
          j        ¦  «        ¦  «        }t          j        ||t          j        ‰	‰
z
  t
          j        ¦  «        ¦  «        S r¬  )	rB   r6  r”   rä  rÍ   rO   r7  r:  r¹  )r5  rÀ   ÚsampleÚi_exprÚ
alpha_exprÚseq_irB  r(  r¥   Úin_szÚ	kernel_szÚout_szÚsamplesÚsamples_loaders          €€€€€€€rW   r7  z)_fractional_pooling_offsets.<locals>.loadã  sî   ø€ Ø�  & ¨# Ñ/Ô/ˆÝ”  7×#4Ò#4Ñ#6Ô#6Ñ7Ô7ˆÝ”^ E¨7×+<Ò+<Ñ+>Ô+>Ñ?Ô?ˆ
Ý”	˜6 F™?¨jÑ8Ñ9Ô9½C¼IØ�ZÑñ=
ô =
ñ 
ˆõ ”˜U¥E¤KÑ0Ô0ˆåŒvØÝŒN˜6 A™:¥u¤{Ñ3Ô3ñ
ô 
ˆõ Œy˜˜u¥c¤n°U¸YÑ5FÍÌÑ&TÔ&TÑUÔUÐUrY   )r    r0  )rå  râ  rä  rã  r¥   r7  r(  ræ  s   ````` @@rW   Ú_fractional_pooling_offsetsrç  Ü  s–   øøøøøøø€ Ø�CŒ[€FØ�#ŒJ€EØ˜#”€IÝ�u˜yÑ(¨&°1©*Ñ5Ô5€EØ×(Ò(Ñ*Ô*€NðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð €KrY   c                 ó¼  ‡‡‡‡‡‡— |                       ¦   «          |                      ¦   «         �^ }ŠŠ‰\  }}|\  }}||z  dk    rt          | ‰||¦  «        S t          j        t
          |‰‰g|‰¬¦  «        }	 |	d¬¦  «        Š |	d¬¦  «        Š|                      ¦   «         Šˆˆˆˆˆˆfd„}
t          |¦  «        ||gz   }t          j	        |  
                    ¦   «         |                      ¦   «         t          j        |
d¬¦  «        |¬	¦  «        }t          j	        |  
                    ¦   «         t          j        t          j        |
d
¬¦  «        |¬	¦  «        }||fS )Nr?  )rå  râ  rä  rã  r   r2  r$   c           	      ó„  •— | �^ }}}t          j         ‰||¦  «        ‰¦  «        }t          j         ‰||¦  «        ‰¦  «        }d }d }t          j        t	          ‰d         ¦  «        t	          ‰d         ¦  «        ¦  «        D ]¶\  }	}
 ‰g |¢||	z   ‘||
z   ‘¦  «        }|r~t          j        ||	z   ‰z  |z   |
z   t          j        ¦  «        }|€|}nNt          j        t          j	        t          j
        ||¦  «        t          j        |¦  «        ¦  «        ||¦  «        }|€|}Œ¡t          j        ||¦  «        }Œ·|r|S |S r¯  )rB   rH  rÜ   rL  rß   r6  rO   r7  r¹  Úor_rM  rß  rV  )rö  rN  r5  rO  rP  r™  rš  rQ  rR  r/  rU  rÖ  r  Ú
h_index_fnÚinp_hÚinp_wr9  Ú
w_index_fnr  s                €€€€€€rW   rK   z!fractional_max_pool2d.<locals>.fn  sd  ø€ Ø‰ˆ��RåÔ-¨j¨j¸ÀÑ.DÔ.DÀeÑLÔLˆÝÔ-¨j¨j¸ÀÑ.DÔ.DÀeÑLÔLˆàˆØˆÝÔ'­¨k¸!¬nÑ(=Ô(=½uÀ[ÐQRÄ^Ñ?TÔ?TÑUÔUð 	2ð 	2‰FˆB�Ø�(ÐL˜VÐL ]°RÑ%7ÐL¸ÈÑ9KÐLÑMÔMˆCØð 	ÝœØ" RÑ'¨5Ñ0°=Ñ@À2ÑEÅuÄ{ñô �ð Ð#Ø$�H�Hå"œyÝœ¥¤ s¨FÑ 3Ô 3µS´Y¸s±^´^ÑDÔDÀeÈXñ ô  �Hð ˆ~Ø��åœ S¨&Ñ1Ô1��Øð 	ØˆOàˆMrY   FrV  rD  T)rú  r¢   Úfallback_fractional_max_pool2drì   rþ   rç  r0  ry   r2   rà   rÚ   r”   rO   r7  )rt   r9  rt  Úrandom_samplesrû  Úkernel_hÚkernel_wrX  rZ  Úgen_offsets_for_dimrK   r  rÊ  rÚ  rë  rì  rí  rî  r  s    `            @@@@@rW   Úfractional_max_pool2drô  õ  s¡  øøøøøø€ à‡N‚NÑÔÐØŸ:š:™<œ<Ñ€UˆE�5Ø$Ñ€HˆhØ�L€Eˆ5à�(Ñ˜bÒ Ð Ý-Øˆ{˜K¨ñ
ô 
ð 	
õ $Ô+Ý#ØØ�eˆnØØðñ ô Ðð %Ð$¨Ð+Ñ+Ô+€JØ$Ð$¨Ð+Ñ+Ô+€JØ�}Š}‰Œ€Hðð ð ð ð ð ð ð ð ð õ: �E‰{Œ{˜e U˜^Ñ+€HÝ	Ô	Ø�|Š|‰~Œ~Ø�kŠk‰mŒmÝÔ" 2°EÐ:Ñ:Ô:Øð	
ñ 
ô 
€Bõ 
Ô	Ø�|Š|‰~Œ~ÝŒkÝÔ" 2°DÐ9Ñ9Ô9Øð	
ñ 
ô 
€Bð ˆrˆ6€MrY   c                 ó�  ‡ ‡‡— ‰                       ¦   «          ‰                      ¦   «         �^ }}}t          j        j                             |¦  «        }t          j        j                             |¦  «        }|�^ }}}	||z  dk    r#||	z  dk    rt          ‰ ||z  ||	z  gd¬¦  «        S t          ||¦  «        }
t          ||	¦  «        }d„ Šˆfd„}t          ‰||
|g||g||	gt          j
        ¬¦  «        Šˆˆ fd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |t          |¦  «        ¬¦  «        }|S )	Nr   r$   )Údivisor_overridec                 óL   — t          | |z  t          j        |¦  «        ¦  «        S r`   )r   r•   rò  r»  s      rW   r¥  z0upsample_nearest2d_backward.<locals>.start_indexM  s    € Ý�u˜w‘­¬°gÑ(>Ô(>Ñ?Ô?Ð?rY   c                 ó$   •—  ‰| dz   ||¦  «        S r¬  rp   )r  r£  r¤  r¥  s      €rW   r¦  z.upsample_nearest2d_backward.<locals>.end_indexP  s   ø€ Øˆ{˜E A™I¨°Ñ9Ô9Ð9rY   r¿  c                 ó6   •—  ‰| t          ‰¦  «        ¦  «        S r`   )r¡  )rö  rÂ  rt   s    €€rW   rK   z'upsample_nearest2d_backward.<locals>.fn\  s   ø€ Øˆv�cÕ.¨qÑ1Ô1Ñ2Ô2Ð2rY   rD  )rú  r¢   rC   r  r	  rË  rÄ  r8   r´  rB   r|   r2   rà   rÚ   r”   ry   )rt   rt  Ú
input_sizer  r  rû  rì  rí  Úout_hÚout_wrÈ  rÉ  r¦  rK   rÊ  rÂ  r¥  s   `              @@rW   Úupsample_nearest2d_backwardrý  ;  s‰  øøø€ ð ‡N‚NÑÔÐàŸ:š:™<œ<Ñ€UˆE�5ÝŒGÔ×2Ò2°5Ñ9Ô9€EÝŒGÔ×2Ò2°5Ñ9Ô9€Eà%Ñ€UˆE�5àˆu�}˜ÒÐ˜e e™m¨qÒ0Ð0Ý˜!˜e u™n¨e°u©nÐ=ÐPQÐRÑRÔRÐRå˜5 %Ñ(Ô(€LÝ˜5 %Ñ(Ô(€Lð@ð @ð @ð:ð :ð :ð :ð :õ "ØØØ" LÐ1Ø˜�Ø˜%�.Ý”7ðñ ô €Fð3ð 3ð 3ð 3ð 3ð 3õ 
Ô	Ø�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�JÑÔð	
ñ 
ô 
€Bð €IrY   rp   c           
      ó0   — t          | ||||||d¬¦  «        S )Nr"   r2  ©Ú_avg_poolnd©rt   r9  r#  r%  r:  Úcount_include_padrö  s          rW   rÄ  rÄ  q  ó3   € õ Ø	ØØØØØØØð	ñ 	ô 	ð 	rY   c           
      ó0   — t          | ||||||d¬¦  «        S )Nrƒ   r2  rÿ  r  s          rW   Ú
avg_pool3dr  ‡  r  rY   c           	      óø  ‡‡‡‡‡‡‡‡‡‡‡— ‰s‰Š‰sdg‰z  Št          ‰‰¦  «        Št          ‰‰¦  «        Št          ‰‰¦  «        Št          | t          ¦  «        sJ ‚t          ‰¦  «        ‰k    sJ ‚t          ‰¦  «        ‰k    sJ ‚t          ‰¦  «        ‰k    sJ ‚t          |                      ¦   «         ¦  «        ‰dz   ‰dz   fv sJ ‚|                      ¦   «          |                      ¦   «         d ‰ …         }|                      ¦   «         ‰ d …         Št          ˆˆˆˆˆfd„t          ‰¦  «        D ¦   «         Ž \  }	}
t          ‰¦  «        st          |
¦  «        rt          | d‰¬¦  «        Šd}n|  
                    ¦   «         Šd}t          |¦  «        t          |	¦  «        z   }|                      ¦   «         Št          j        t          j        ‰¦  «        }|d	k    r?‰dk    rt"          }n ‰d
k    rt$          }nt'          d‰› �¦  «        ‚ || ‰‰‰‰‰|¦  «        S ˆˆˆˆfd„Š|r|r|rd|z  Šnd|z  Šˆˆˆˆfd„}nˆˆˆˆˆˆˆˆfd„}t)          j        |                      ¦   «         ‰||¬¦  «        }|S )Nr   r$   r"   c           
      óD   •— g | ]}t          ‰|         |‰‰‰‰¦  «        ‘ŒS rp   )r=  )rs   rÀ   r:  r'  r9  r%  r#  s     €€€€€rW   ru   z_avg_poolnd.<locals>.<listcomp>º  s?   ø€ ð 

ð 

ð 

àõ ˜˜1œ˜q +¨v°wÀ	ÑJÔJð

ð 

ð 

rY   r5  r2  TFr?  rƒ   zUnknown dim: c                 ó  •‡‡— | d ‰ …         }| ‰ d …         Šd }t          j        ˆ	fd„t          ‰¦  «        D ¦   «         Ž D ]IŠˆˆˆ
ˆfd„t          ‰¦  «        D ¦   «         } |g |¢|¢¦  «        }|€|}Œ4t          j        ||¦  «        }ŒJ|S )Nc                 ó:   •— g | ]}t          ‰|         ¦  «        ‘ŒS rp   )rß   )rs   rÀ   r9  s     €rW   ru   z/_avg_poolnd.<locals>.fn_sum.<locals>.<listcomp>â  s%   ø€ Ð%PÐ%PÐ%PÀ¥e¨K¸¬NÑ&;Ô&;Ð%PÐ%PÐ%PrY   c                 óV   •— g | ]%}‰|         ‰|         z  ‰|         z   ‰|         z
  ‘Œ&S rp   rp   )rs   rÀ   r  r/  r%  r#  s     €€€€rW   ru   z/_avg_poolnd.<locals>.fn_sum.<locals>.<listcomp>ã  s8   ø€ ÐMÐMÐM¸Q�1�Q”4˜& œ)Ñ# b¨¤eÑ+¨g°a¬jÑ8ÐMÐMÐMrY   )rÜ   rL  rß   rB   r|   )rö  rp  r5  Útotalr¤   rÖ  r  r/  r¥   r9  r%  r#  s         @@€€€€rW   rÂ  z_avg_poolnd.<locals>.fn_sumÞ  s½   øøø€ Ø�U�s�d�U”ˆØ����ŒJˆØˆÝÔ#Ð%PÐ%PÐ%PÐ%PÅUÈ3ÁZÄZÐ%PÑ%PÔ%PÐQð 	,ð 	,ˆBØMÐMÐMÐMÐMÐMÐMÅ%ÈÁ*Ä*ÐMÑMÔMˆCØ�&˜˜6˜ C˜Ñ)Ô)ˆCØˆ}Ø��åœ  UÑ+Ô+��ØˆrY   rm  c                 óh   •— t          j         ‰| ‰¦  «        t          j        ‰‰¦  «        ¦  «        S r`   )rB   rE  r8  )rö  r�   rÂ  rY  r  s    €€€€rW   rK   z_avg_poolnd.<locals>.fnñ  s-   ø€ Ý”7˜6˜6 # xÑ0Ô0µ#´,¸uÀeÑ2LÔ2LÑMÔMÐMrY   c                 ó4  •— | d ‰
 …         }| ‰
 d …         }g }t          ‰
¦  «        D ]²}||         ‰|         z  ‰|         z
  }t          j        |‰|         z   ‰|         ‰|         z   ¦  «        }‰	s0t          j        |d¦  «        }t          j        |‰|         ¦  «        }t	          j        ||z
  t          j        ¦  «        }|                     |¦  «         Œ³t          j
        t          j        |¦  «        }t	          j         ‰| ‰¦  «        |¦  «        S r§  )rß   r•   ÚMinÚMaxrB   r6  rO   r±  r®   rì   rÃ  rE  rÁ  )rö  r5  rO  Údivide_factorsrÀ   ÚhstartÚhendÚfactorÚdivide_factorr  r¥   rÂ  r'  r9  r%  r#  r  s            €€€€€€€€rW   rK   z_avg_poolnd.<locals>.fnö  s  ø€ Ø˜˜3˜$˜”ZˆFØ�c�T�U�U”ˆBàˆNÝ˜3‘Z”Zð .ð .�Ø˜Aœ ¨¤Ñ*¨W°Q¬ZÑ7�Ý”y ¨+°a¬.Ñ!8¸!¸A¼$ÀÈÄÑ:KÑLÔL�Ø(ð 1Ý"œY v¨qÑ1Ô1�FÝ œ9 T¨1¨Q¬4Ñ0Ô0�DÝœ¨¨v©µu´{ÑCÔC�Ø×%Ò% fÑ-Ô-Ð-Ð-Ý%Ô,­S¬W°nÑEÔEˆMÝ”;˜v˜v c¨8Ñ4Ô4°mÑDÔDÐDrY   rD  )r>   rZ   r5   r¡   r¢   rú  rÞ   rß   rø   r3  r0  ry   r”   rì   rÃ  rž  rE  Úfallback_avg_pool2dÚfallback_avg_pool3drØ  r2   rà   rÚ   )rt   r9  r#  r%  r:  r  rö  r¥   rû  rX  Ú
ceil_modesÚhad_paddingr  rB  ÚfallbackrK   rÊ  r�   rÂ  r'  rY  r  s    ````` `         @@@@@rW   r   r   �  so  øøøøøøøøøøø€ ð ð ØˆØð Ø�#˜‘)ˆÝ˜{¨CÑ0Ô0€KÝ˜& #Ñ&Ô&€FÝ˜7 CÑ(Ô(€Gå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜sÒ"Ð"Ð"Ð"Ýˆv‰;Œ;˜#ÒÐÐÐÝˆw‰<Œ<˜3ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ  q¡¨#°©'Ð 2Ð2Ð2Ð2Ð2à‡N‚NÑÔÐØ�JŠJ‰LŒL˜˜3˜$˜Ô€EØ	�
Š
‰Œ�c�T�U�UÔ€Aåð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

å˜3‘Z”Zð

ñ 

ô 

ðÑ€Eˆ:õ ˆ7�|„|ð •s˜:‘”ð Ý.¨q°#¸3Ð?Ñ?Ô?ˆØˆˆà—=’=‘?”?ˆØˆå�E‰{Œ{�T %™[œ[Ñ(€HØ�KŠK‰MŒM€EåÔ"¥8¤<°Ñ=Ô=€KØ�RÒÐà�!Š8ˆ8Ý*ˆHˆHØ�AŠXˆXÝ*ˆHˆHåÐ2¨SÐ2Ð2Ñ3Ô3Ð3àˆxØØØØØØØñ
ô 
ð 	
ðð ð ð ð ð ð ð ð ð EÐ*ð EØð 	&ØÐ(Ñ(ˆEˆEà˜+Ñ%ˆEð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð
	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eõ  
Ô	Ø�|Š|‰~Œ~ØØØð	
ñ 
ô 
€Bð €IrY   c                 ó¬  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰�‰dk    s
J d¦   «         ‚‰s‰Š‰sddgŠt          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                     ¦   «         �^ }ŠŠt          ‰d‰‰‰|¦  «        \  }	}
t          ‰d‰‰‰|¦  «        \  }}|                      ¦   «         Š‰d         p‰d         p|
p|Š|                      ¦   «         �^ }ŠŠt          |                     ¦   «         ¦  «        }|                     ¦   «         }t          ˆˆfd„t          ‰d         dz  ¦  «        D ¦   «         ¦  «        Št          ˆˆfd„t          ‰d         dz  ¦  «        D ¦   «         ¦  «        Š‰‰z  }|dk    rt          | |‰‰‰|‰‰¦  «        S ˆˆˆˆˆfd	„Šˆˆˆˆˆˆˆˆˆˆˆˆfd
„}t          j        |                      ¦   «         |||¬¦  «        }|S )Nr   údivisor must be not zeror"   r½  r$   c           
   3   ó�   •K  — | ]@}t          |‰d          z  t          d |‰d          z
  ‰d          z  ¦  «        z
  d¦  «        V — ŒAdS rp  rq  rr  s     €€rW   rx   z&avg_pool2d_backward.<locals>.<genexpr><  rs  rY   c           
   3   ó�   •K  — | ]@}t          |‰d          z  t          d|‰d          z
  ‰d          z  ¦  «        z
  d ¦  «        V — ŒAdS ru  rq  rv  s     €€rW   rx   z&avg_pool2d_backward.<locals>.<genexpr>@  rs  rY   r?  c           	      óÊ  •— t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        t          j        | |¦  «        |¦  «        }t          j        t          j        ||¦  «        |¦  «        }	t          j        t          j        ||¦  «        t          j        t          j        ‰t          j        ¦  «        |¦  «        ¦  «        }
t          j        t          j        |	|¦  «        t          j        t          j        ‰t          j        ¦  «        |¦  «        ¦  «        }t          j	        |t          j        dt          j        ¦  «        ¦  «        }t          j	        |	t          j        dt          j        ¦  «        ¦  «        }	t          j        |
t          j        ‰t          j        ¦  «        ¦  «        }
t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        t          j        |
|¦  «        t          j        ||	¦  «        ¦  «        }|S )z{
        This computes the scaling factor that we will divide an element
        by when `count_include_pad=False`
        r   r$   )
rB   r8  rO   r±  rh  rE  rW  r|   r6  rV  )r�  r‚  Ústride_hÚstride_wÚpad_hÚpad_wrñ  rò  r  Úwstartr  Úwendr  r”  r9  r%  r#  rŒ  s                €€€€€rW   Ú!compute_pool_size_without_paddingz>avg_pool2d_backward.<locals>.compute_pool_size_without_paddingS  sò  ø€ õ
 ”<  q¤	­5¬;Ñ7Ô7ˆÝ”<  q¤	­5¬;Ñ7Ô7ˆÝ”˜W QœZ­¬Ñ5Ô5ˆÝ”˜W QœZ­¬Ñ5Ô5ˆÝ”< ¨A¤µ´Ñ<Ô<ˆÝ”< ¨A¤µ´Ñ<Ô<ˆÝ”�œ  XÑ.Ô.°Ñ6Ô6ˆÝ”�œ  XÑ.Ô.°Ñ6Ô6ˆÝŒ{ÝŒG�F˜HÑ%Ô%ÝŒG•C”N 6­5¬;Ñ7Ô7¸Ñ?Ô?ñ
ô 
ˆõ Œ{ÝŒG�F˜HÑ%Ô%ÝŒG•C”N 5­%¬+Ñ6Ô6¸Ñ>Ô>ñ
ô 
ˆõ ”˜V¥S¤\°!µU´[Ñ%AÔ%AÑBÔBˆÝ”˜V¥S¤\°!µU´[Ñ%AÔ%AÑBÔBˆÝŒ{˜4¥¤°½¼Ñ!DÔ!DÑEÔEˆÝŒ{˜4¥¤°µu´{Ñ!CÔ!CÑDÔDˆÝœ¥¤¨¨fÑ 5Ô 5µs´w¸tÀVÑ7LÔ7LÑMÔMˆØÐrY   c                 ó  •— | �^ }}}|‰d         z   }|‰d         z   }t          j        t          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        t          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }d }t          ‰¦  «        D �]}	t          ‰¦  «        D �]ý}
t          j	        |t          j        |	t          j        ¦  «        ¦  «        }t          j	        |t          j        |
t          j        ¦  «        ¦  «        }‰�‰}n"‰s‰s‰d         ‰d         z  }n ‰||¦  «        }t          j
         ‰g |¢t          j        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d¬¦  «        ‘t          j        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d¬¦  «        ‘¦  «        |¦  «        }t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        }|€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }�ŒÔt          j        |t          j	        ||¦  «        |¦  «        }�Œÿ�Œ|€J ‚|S )Nr   r$   Frˆ  r5  )rB   r6  r   rO   r±  rV  r8  rW  rß   r|   rÁ  rH  rh  r;  r:  r¹  rT  )rö  r5  r'  rW  rz  r{  r|  r}  r~  r  r€  r�  r‚  rY  ÚpartrB  r%  r  rö  r†  r‡  r  r9  r%  r‰  rŠ  r#  r‹  s                   €€€€€€€€€€€€rW   rK   zavg_pool2d_backward.<locals>.fno  s‰  ø€ Ø‰ˆ��AØ�˜”
‰NˆØ�˜”
‰NˆÝ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆÝ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆå”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”˜E¥3¤>°-ÅÄÑ#MÔ#MÑNÔNˆÝ”˜E¥3¤>°,ÅÄÑ#LÔ#LÑMÔMˆàˆÝ˜Ñ'Ô'ð *	Rñ *	RˆCÝ˜]Ñ+Ô+ð )Rñ )R�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�à#Ð/Ø,�E�EØ&ð F¨kð FØ'¨œN¨[¸¬^Ñ;�E�Eà=Ð=¸bÀ"ÑEÔE�Eå”{Ø�KðØ#ðåÔ1Ý #¤Ø$&­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(Tñ!"ô !"ð !.Ø&+ðñ ô ðõ  Ô1Ý #¤Ø$&­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(Tñ!"ô !"ð !-Ø&+ðñ ô ðñô ð& ñ)ô �õ. ”xÝ”F˜2˜uÑ%Ô%Ý”F˜2˜uÑ%Ô%ñô �ð Ð#Ý"œy¨¨tµS´\À#ÅuÄ}Ñ5UÔ5UÑVÔV�H‘Hå"œy¨­s¬w°xÀÑ/FÔ/FÈÑQÔQ�H‘HñS)RðT Ð#Ð#Ð#ØˆrY   rD  )rZ   r5   r¡   r¢   rú  r=  r0  ry   r”   rÂ  rß   Úfallback_avg_pool2d_backwardr2   rà   rÚ   )r�  rt   r9  r#  r%  r:  r  rö  rû  rX  rY  rZ  r[  r«   r  r�   rB  rK   rÊ  r%  r†  r‡  r  r”  r‰  rŠ  r‹  rŒ  s     ``` ``           @@@@@@@@@rW   Úavg_pool2d_backwardr)    s8  øøøøøøøøøøøøøø€ ð Ð#Ð'7¸1Ò'<Ð'<Ð'<Ð>XÑ'<Ô'<Ð<Øð ØˆØð Ø�a�&ˆå�k¥9Ñ-Ô-Ð-Ð-Ð-Ý�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&à×ÒÑÔÐàŸJšJ™LœLÑ€UˆF�Eå$ V¨Q°¸VÀWÈiÑXÔXÑ€Eˆ:Ý$ U¨A¨{¸FÀGÈYÑWÔWÑ€Eˆ:à×)Ò)Ñ+Ô+€Kà˜!”*ÐF ¨¤
ÐF¨jÐF¸J€Kà&1×&:Ò&:Ñ&<Ô&<Ñ#€Qˆ�|Ý�A—J’J‘L”LÑ!Ô!€HØ�KŠK‰MŒM€Eåð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mõ ð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mð
   -Ñ/€KØ�RÒÐå+ØØØØØØØØñ	
ô 	
ð 		
ðð ð ð ð ð ð ð ð ð8?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?õB 
Ô	Ø×%Ò%Ñ'Ô'ØØØð	
ñ 
ô 
€Bð €IrY   c                 ój  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ — ‰�‰dk    s
J d¦   «         ‚‰s‰Š‰sg d¢Št          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                     ¦   «         �^ }ŠŠŠ t          ‰d‰‰‰|¦  «        \  }	}
t          ‰d‰‰‰|¦  «        \  }}t          ‰ d‰‰‰|¦  «        \  }}|                      ¦   «         Št          ‰¦  «        p|
p|p|Š|                      ¦   «         �^ }ŠŠŠt          |                     ¦   «         ¦  «        }| 	                    ¦   «         }ˆˆfd„t          d¦  «        D ¦   «         \  ŠŠŠ‰‰z  ‰z  }|d	k    rt          | |‰‰‰|‰‰¦  «        S ˆˆˆˆˆˆ fd
„Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆfd„}t          j        |                      ¦   «         |||¬¦  «        }|S )Nr   r  )r   r   r   rƒ   )r„   r…   r$   r"   c              3   ó€   •‡K  — | ]7Št          ˆˆˆfd „t          ‰‰         dz  ¦  «        D ¦   «         ¦  «        V — Œ8dS )c           
   3   ó�   •K  — | ]@}t          |‰‰         z  t          d |‰‰         z
  ‰‰         z  ¦  «        z
  d¦  «        V — ŒAdS rp  rq  )rs   rÍ  rÀ   r9  r#  s     €€€rW   rx   z0avg_pool3d_backward.<locals>.<genexpr>.<genexpr>è  sj   øè è € ð 
ð 
àõ ��V˜A”Y‘¥ Q¨¨[¸¬^Ñ);ÀÀqÄ	Ñ(IÑ!JÔ!JÑJÈAÑNÔNð
ð 
ð 
ð 
ð 
ð 
rY   r"   N)rÂ  rß   )rs   rÀ   r9  r#  s    @€€rW   rx   z&avg_pool3d_backward.<locals>.<genexpr>ç  s…   øøè è € ð 3ð 3ð
 õ	 	ð 
ð 
ð 
ð 
ð 
ð 
å˜; qœ>¨AÑ-Ñ.Ô.ð
ñ 
ô 
ñ 	
ô 	
ð3ð 3ð 3ð 3ð 3ð 3rY   é}   c           	      ó@  •— d„ ‰D ¦   «         \  }}}d„ ‰D ¦   «         \  }}}d„ ‰D ¦   «         \  }	}
}d„ t          | ||g|||g|||g¦  «        D ¦   «         \  }}}d„ t          |||g|	|
|g‰‰‰g|||g¦  «        D ¦   «         \  }}}d„ |||fD ¦   «         \  }}}d„ t          |||g‰‰‰g¦  «        D ¦   «         \  }}}t          j        t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        t          j        ||¦  «        ¦  «        }|S )Nc              3   óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r`   rg  r  s     rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>þ  s0   è è € Ð'UÐ'UÈ­¬°Q½¼Ñ(DÔ(DÐ'UÐ'UÐ'UÐ'UÐ'UÐ'UrY   c              3   óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r`   rg  r  s     rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>ÿ  s0   è è € ÐMÐMÀ�sœ|¨A­u¬{Ñ;Ô;ÐMÐMÐMÐMÐMÐMrY   c              3   óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r`   rg  )rs   rÂ   s     rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>   sA   è è € ð (
ð (
Ø-.�CŒL˜�EœKÑ(Ô(ð(
ð (
ð (
ð (
ð (
ð (
rY   c              3   ón   K  — | ]0\  }}}t          j        t          j        ||¦  «        |¦  «        V — Œ1d S r`   )rB   rh  rE  )rs   rG  rÐ  Úpads       rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>  sR   è è € ð "
ð "
á��1�cõ ŒG•C”G˜A˜q‘M”M 3Ñ'Ô'ð"
ð "
ð "
ð "
ð "
ð "
rY   c           
   3   óÐ   K  — | ]a\  }}}}t          j        t          j        ||¦  «        t          j        t          j        |t          j        ¦  «        |¦  «        ¦  «        V — Œbd S r`   )rB   rW  r|   r6  rO   r±  )rs   r  rÂ   r¥   r3  s        rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>
  sw   è è € ð 

ð 

ñ #��q˜#˜sõ ŒKÝ”˜˜qÑ!Ô!¥3¤7­3¬>¸#½u¼{Ñ+KÔ+KÈSÑ#QÔ#Qñô ð

ð 

ð 

ð 

ð 

ð 

rY   c              3   óz   K  — | ]6}t          j        |t          j        d t          j        ¦  «        ¦  «        V — Œ7dS rÀ  ©rB   rV  r8  rO   r±  )rs   r  s     rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>  sP   è è € ð "
ð "
àõ ŒK˜�sœ|¨A­u¬{Ñ;Ô;Ñ<Ô<ð"
ð "
ð "
ð "
ð "
ð "
rY   c              3   ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r`   ©rB   rW  r6  rO   r±  )rs   r  r¥   s      rW   rx   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>  sT   è è € ð 
ð 
á��Sõ ŒK˜�Sœ^¨Cµ´Ñ=Ô=Ñ>Ô>ð
ð 
ð 
ð 
ð 
ð 
rY   )rÞ   rB   rE  rh  )Úpdr�  r‚  Ústride_dr  r   Úpad_dr!  r"  Úkernel_drñ  rò  Údstartr  r#  Údendr  r$  r  Údepthr”  r9  r%  r#  rŒ  s                      €€€€€€rW   r%  z>avg_pool3d_backward.<locals>.compute_pool_size_without_paddingý  s¹  ø€ Ø'UÐ'UÈfÐ'UÑ'UÔ'UÑ$ˆ�(˜HØMÐMÀWÐMÑMÔMÑˆˆu�eð(
ð (
Ø2=ð(
ñ (
ô (
Ñ$ˆ�(˜Hð"
ð "
å Ø�R˜�˜x¨°8Ð<¸uÀeÈUÐ>Sñô ð"
ñ "
ô "
Ñˆ�˜ð

ð 

õ '*Ø˜ Ð(Ø˜8 XÐ.Ø˜ Ð&Ø˜˜uÐ%ñ	'ô 'ð	

ñ 

ô 

Ñˆˆd�Dð"
ð "
à  &¨&Ð1ð"
ñ "
ô "
Ñˆ�˜ð
ð 
å  t¨TÐ 2°U¸FÀEÐ4JÑKÔKð
ñ 
ô 
Ñˆˆd�Dõ œÝŒG•C”G˜D &Ñ)Ô)­3¬7°4¸Ñ+@Ô+@ÑAÔAÅ3Ä7È4ÐQWÑCXÔCXñ
ô 
ˆð ÐrY   c                 óX  •— | �^ }}}}d„ t          |||g‰¦  «        D ¦   «         \  }}}d„ t          |||g‰‰!¦  «        D ¦   «         \  }}}d„ t          |||g‰!¦  «        D ¦   «         \  }}	}
d„ |||fD ¦   «         \  }}}d„ t          ||	|
g‰‰‰ g¦  «        D ¦   «         \  }}	}
d }t          ‰¦  «        D �]o}t          ‰¦  «        D �][}t          ‰"¦  «        D �]G}d„ t          |||g|||g¦  «        D ¦   «         \  }}}‰�‰}n,‰s‰s‰d         ‰d         z  ‰d	         z  }n ‰|||¦  «        }t          j         ‰g |¢t          j        t          j        |t          j        |t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰d
¬¦  «        ‘t          j        t          j        |t          j        |	t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰d
¬¦  «        ‘t          j        t          j        |t          j        |
t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰ d
¬¦  «        ‘¦  «        |¦  «        }t          j
        t          j
        t          j        ||¦  «        t          j        ||	¦  «        ¦  «        t          j        ||
¦  «        ¦  «        }|€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }�Œt          j        |t          j        ||¦  «        |¦  «        }�ŒI�Œ]�Œq|€J ‚|S )Nc              3   ó&   K  — | ]\  }}||z   V — Œd S r`   rp   )rs   rÃ   r3  s      rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>$  s*   è è € ÐAÐA™v˜q #�1�s‘7ÐAÐAÐAÐAÐAÐArY   c              3   ó„   K  — | ];\  }}}t          j        t          ||z
  |z   |¦  «        t          j        ¦  «        V — Œ<d S r`   ©rB   r6  r   rO   r±  )rs   rÃ   rÂ   rÐ  s       rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>&  s\   è è € ð %
ð %
á��1�aõ ŒN�8 A¨¡E¨A¡I¨qÑ1Ô1µ5´;Ñ?Ô?ð%
ð %
ð %
ð %
ð %
ð %
rY   c              3   ó|   K  — | ]7\  }}t          j        t          ||¦  «        d z   t          j        ¦  «        V — Œ8dS rý  rC  )rs   rÃ   rÐ  s      rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>+  sU   è è € ð 
ð 
á��1õ ŒN�8 A q™>œ>¨AÑ-­u¬{Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
rY   c              3   óz   K  — | ]6}t          j        |t          j        d t          j        ¦  «        ¦  «        V — Œ7dS rÀ  r6  )rs   Úpstarts     rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>0  sP   è è € ð %
ð %
àõ ŒK˜¥¤¨Qµ´Ñ <Ô <Ñ=Ô=ð%
ð %
ð %
ð %
ð %
ð %
rY   c              3   ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r`   r8  )rs   ÚpendÚ
pooled_dims      rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>4  sT   è è € ð 
ð 
á ��jõ ŒK˜�cœn¨Z½¼ÑEÔEÑFÔFð
ð 
ð 
ð 
ð 
ð 
rY   c              3   ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r`   )rB   r|   r8  rO   r±  )rs   rF  Úp_s      rW   rx   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>@  sT   è è € ð "ð "á&˜F Bõ œ ­¬°R½¼Ñ(EÔ(EÑFÔFð"ð "ð "ð "ð "ð "rY   r   r$   r"   Frˆ  r5  )rÞ   rß   rB   rÁ  rH  rW  rh  r8  rO   r±  r;  r:  r¹  rT  r|   )#rö  r5  rÍ  r'  rW  Úpdstartrz  r{  Úpdendr|  r}  r~  Úpd_r  r€  r9  r�  r‚  rY  r'  rB  r%  r  Úd_window_sizerö  r†  r‡  r  r9  r%  Úpooled_depthr‰  rŠ  r#  r‹  s#                        €€€€€€€€€€€€€€rW   rK   zavg_pool3d_backward.<locals>.fn"  sÚ  ø€ ØÑˆ��A�qØAÐA­¨a°°A¨Y¸Ñ)@Ô)@ÐAÑAÔA‰ˆˆ1ˆað%
ð %
å  1 a˜y¨+°vÑ>Ô>ð%
ñ %
ô %
Ñ!ˆ�˜'ð

ð 
å˜Q  1˜I vÑ.Ô.ð
ñ 
ô 
Ñˆˆu�eð
%
ð %
à" G¨WÐ5ð%
ñ %
ô %
Ñ!ˆ�˜'ð
ð 
å$'Ø˜˜uÐ%¨°mÀ\Ð'Rñ%ô %ð
ñ 
ô 
Ñˆˆu�eð ˆå˜Ñ'Ô'ð 8	Vñ 8	VˆCÝ˜]Ñ+Ô+ð 7Vñ 7V�Ý  Ñ/Ô/ð 6Vñ 6V�Cð"ð "å*-Ø$ g¨wÐ7¸#¸sÀC¸ñ+ô +ð"ñ "ô "‘J�B˜˜Bð (Ð3Ø 0˜˜Ø*ð N°+ð NØ +¨A¤°¸Q´Ñ ?À+ÈaÄ.Ñ P˜˜à AÐ AÀ"ÀbÈ"Ñ MÔ M˜åœ;Ø#˜ðØ!'ðå #Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %1Ø*/ð!"ñ !"ô !"ðõ !$Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %2Ø*/ð!"ñ !"ô !"ðõ  !$Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %1Ø*/ð!"ñ !"ô !"ð!ñô ð4 ñ7ô �Dõ< œ8Ýœ¥¤¨¨EÑ!2Ô!2µC´F¸2¸uÑ4EÔ4EÑFÔFÝœ˜r 5Ñ)Ô)ñô �Dð  Ð'Ý#&¤9Ø  $­¬°S½%¼-Ñ(HÔ(Hñ$ô $˜™õ $'¤9¨Tµ3´7¸8ÀTÑ3JÔ3JÈHÑ#UÔ#U˜™ñm6Vñ7Vðp Ð#Ð#Ð#ØˆrY   rD  )rZ   r5   r¡   r¢   rú  r=  r0  rø   ry   r”   rß   Úfallback_avg_pool3d_backwardr2   rà   rÚ   )!r�  rt   r9  r#  r%  r:  r  rö  rû  Úd_outÚceil_mode_drX  Úceil_mode_hrZ  Úceil_mode_wr«   r  r�   rB  rK   rÊ  r%  rO  r?  r†  r‡  r  r”  rP  r‰  rŠ  r‹  rŒ  s!     ``` ``             @@@@@@@@@@@@rW   Úavg_pool3d_backwardrV  ¾  s+  øøøøøøøøøøøøøøøøø€ ð Ð#Ð'7¸1Ò'<Ð'<Ð'<Ð>XÑ'<Ô'<Ð<Øð ØˆØð Ø�)�)ˆå�k¥9Ñ-Ô-Ð-Ð-Ð-Ý�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&à×ÒÑÔÐà#$§:¢:¡<¤<Ñ €UˆE�6˜5å% e¨Q°¸VÀWÈiÑXÔXÑ€Eˆ;Ý%Ø��; ¨°ñô Ñ€Eˆ;õ & e¨Q°¸VÀWÈiÑXÔXÑ€Eˆ;à×)Ò)Ñ+Ô+€KÝ�g‘,”,ÐK +ÐK°ÐKÀ€Kà4?×4HÒ4HÑ4JÔ4JÑ1€Qˆ�m \Ý�A—J’J‘L”LÑ!Ô!€HØ�KŠK‰MŒM€Eð3ð 3ð 3ð 3ð 3õ
 �q‘”ð3ñ 3ô 3Ñ/€M�= -ð   -Ñ/°-Ñ?€KØ�SÒÐå+ØØØØØØØØñ	
ô 	
ð 		
ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ðJUð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uõn 
Ô	Ø×%Ò%Ñ'Ô'ØØØð	
ñ 
ô 
€Bð €IrY   c                 óÆ  — |                       ¦   «         }t          |t          ¦  «        r|g}n|st          t	          |¦  «        ¦  «        }t	          |¦  «        dk    r t          |¦  «        dv sJ d|› �¦   «         ‚g S t          |¦  «        }t          t	          |¦  «        ¦  «        D ]}||         dk     r.||xx         t	          |¦  «        rt	          |¦  «        ndz  cc<   d||         cxk    rt	          |¦  «        k     s#n t	          |¦  «        dk    r||         dk    sJ ‚Œ€t	          t          |¦  «        ¦  «        t	          |¦  «        k    s
J d¦   «         ‚|S )Nr   )rp   rx  rÐ  zinvalid axis: r$   zreduction axis not unique)r¢   rZ   r�   rß   r¡   rz   ry   r{   )rt   rI  rå   rÀ   s       rW   Ú_validate_reduction_axisrX  ‚  s^  € Ø�:Š:‰<Œ<€DÝ�$�ÑÔð  ØˆvˆˆØð  Ý•S˜‘Y”YÑÔˆÝ
ˆ4�y„y�A‚~€~Ý�T‰{Œ{Ð/Ð/Ð/Ð/Ð1HÀ$Ð1HÐ1HÑ/Ô/Ð/Øˆ	Ý�‰:Œ:€DÝ•3�t‘9”9ÑÔð Mð MˆØ�Œ7�QŠ;ˆ;Ø�ˆGˆGŒG¥C¨¡I¤IÐ4•s˜4‘y”y�y°1Ñ4ˆGˆG‰GØ�D˜”GÐ'Ð'Ò'Ð'�c $™iœiÒ'Ð'Ð'Ð'­C°©I¬I¸ªN¨N¸tÀA¼wÈ!º|¸|¸|ÐLøÝ�s�4‰yŒy‰>Œ>�S ™YœYÒ&Ð&Ð&Ð(CÑ&Ô&Ð&Ø€KrY   c                óØ  ‡‡
‡‡‡— |�t          | |¦  «        } |                      ¦   «         Št          t          | |¦  «        ¦  «        }g }g Šg }g Št	          t          ‰¦  «        ¦  «        D ]g}||v r1‰                     |¦  «         |                     ‰|         ¦  «         Œ7‰                     |¦  «         |                     ‰|         ¦  «         Œhˆ
ˆˆˆˆfd„}‰r)t          ‰¦  «        }	‰D ]}t          j	        j
        |	|<   Œn|}	|                      ¦   «         Š
t          |                      ¦   «         |p|                      ¦   «         |                      ¦   «         ||	|¬¦  «        S )Nc                 óÆ  •‡ — t          |¦  «        t          ‰¦  «        k    sJ ‚‰r0t          ‰ ¦  «        t          ‰	¦  «        k    sJ ‚ˆ fd„‰D ¦   «         Š t          ‰ ¦  «        t          ‰¦  «        k    sJ ‚d gt          ‰ ¦  «        t          |¦  «        z   z  }t          j        t          ‰‰ ¦  «        t          ‰|¦  «        ¦  «        D ]
\  }}|||<   Œ ‰|¦  «        S )Nc                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   )rs   rÀ   r  s     €rW   ru   z9_make_reduction_inner.<locals>.loader.<locals>.<listcomp>ª  s   ø€ Ð0Ð0Ð0 !�U˜1”XÐ0Ð0Ð0rY   )r¡   rÜ   rÝ   rÞ   )
r  Úreduction_indexrl  rö  ÚvarÚinner_loaderÚkeepdimsÚkept_idxÚreduced_idxrå   s
   `    €€€€€rW   rp  z%_make_reduction_inner.<locals>.loader¦  sô   øø€ Ý�?Ñ#Ô#¥s¨;Ñ'7Ô'7Ò7Ð7Ð7Ð7Øð 	1Ý�u‘:”:¥ T¡¤Ò*Ð*Ð*Ð*Ø0Ð0Ð0Ð0 xÐ0Ñ0Ô0ˆEÝ�5‰zŒz�S ™]œ]Ò*Ð*Ð*Ð*Ø�F�c %™jœj­3¨Ñ+?Ô+?Ñ?Ñ@ˆ	Ý!œÝ�˜%Ñ Ô ¥# k°?Ñ"CÔ"Cñ
ô 
ð 	!ð 	!‰HˆC�ð !ˆI�c‰NˆNØˆ|˜IÑ&Ô&Ð&rY   )rÌ   Ú	dst_dtypert  rC  rB  Úreduction_ranges)rÍ   r¢   r{   rX  rß   r¡   r®   ry   r•   r  r  r0  rî   rÚ   r”   )rt   rI  r_  r�   r#  Ú
kept_sizesÚreduced_sizesrÀ   rp  r  r^  r`  ra  rå   s     `       @@@@rW   Ú_make_reduction_innerrf  ”  s–  øøøøø€ ØÐÝ�Q˜ÑÔˆØ�:Š:‰<Œ<€DÝÕ'¨¨4Ñ0Ô0Ñ1Ô1€Dà€JØ€HØ€MØ€KÝ•3�t‘9”9ÑÔð 'ð 'ˆØ�ˆ9ˆ9Ø×Ò˜qÑ!Ô!Ð!Ø× Ò   a¤Ñ)Ô)Ð)Ð)à�OŠO˜AÑÔÐØ×Ò˜d 1œgÑ&Ô&Ð&Ð&ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð ð Ý˜‘:”:ˆØð 	&ð 	&ˆAÝœ'œ+ˆH�Q‰KˆKð	&ð ˆà—=’=‘?”?€LÝØ�|Š|‰~Œ~Ø'Ð8¨1¯;ª;©=¬=Ø—+’+‘-”-ØØØ&ðñ ô ð rY   rÝ  c                 ó   ‡ ‡— dd dœˆˆ fd„}|S )NFr‘   c                ó¾   •— t          | |||‰¬¦  «        }t          j        d‰| dœ|¤Ž}t          |j        j        t          ¦  «        r|                     ¦   «          |S )N©rI  r_  r�   r#  )rÝ  Ú
input_noderp   )rf  r3   rà   rZ   rV  rb  )rt   rI  r_  r�   r¹   r,  r#  rÝ  s         €€rW   rP  zmake_reduction.<locals>.innerÆ  sy   ø€ Ý&ØØØØØ"7ð
ñ 
ô 
ˆõ Ô!ÐX°ÈAÐXÐXÐQWÐXÐXˆÝØŒKÔ�iñ
ô 
ð 	ð �NŠNÑÔÐØˆrY   r³   rp   )rÝ  r#  rP  s   `` rW   Úmake_reductionrk  Å  s:   øø€ ð°Tð ð ð ð ð ð ð ð ð €LrY   c                ó*  — |�t          | |¦  «        } |                      ¦   «         }t          | |¦  «        }t          |                      ¦   «         |                      ¦   «         f|                      ¦   «         f|                      ¦   «         |¬¦  «        S )N)rÌ   ÚdtypesÚ	inner_fnsrå   rI  )rÍ   r¢   r  rî   rÚ   r”   r0  )rt   rI  r�   rå   s       rW   Ú_make_scan_innerro  Ø  s   € ØÐÝ�Q˜ÑÔˆØ�:Š:‰<Œ<€DÝ˜˜DÑ!Ô!€DåØ�|Š|‰~Œ~Ø—’‘”ÐØ—=’=‘?”?Ð$Ø�ZŠZ‰\Œ\Øðñ ô ð rY   r‘   c                ór  ‡— |�t          | |¦  «        } |                      ¦   «         Št          | |¦  «        }|                      ¦   «         }|t          j        t          j        fv rt          | t          j        ¦  «        } t          | ||¦  «        }t          ˆfd„|D ¦   «         ¦  «        }t          j        ||                      ¦   «         |                      ¦   «         ¬¦  «        }t          j        |t          |                     ¦   «         ¦  «        ¦  «        }t          t!          ||¦  «        |¦  «        S )Nc              3   ó(   •K  — | ]}‰|         V — Œd S r`   rp   ©rs   rÀ   rå   s     €rW   rx   zmean.<locals>.<genexpr>ò  ó'   øè è € Ð0Ð0 a˜$˜qœ'Ð0Ð0Ð0Ð0Ð0Ð0rY   r  )rÍ   r¢   rX  r”   rO   rK  rJ  r  Úsum_r@   r'   r-   rÚ   r,   rà   ry   Údiv)rt   rI  Úkeepdimr�   Úoutput_dtypeÚ
sum_resultÚdenområ   s          @rW   râ  râ  ç  s   ø€ àÐÝ�Q˜ÑÔˆØ�:Š:‰<Œ<€DÝ# A tÑ,Ô,€Dà—;’;‘=”=€LØ�œ¥u¤~Ð6Ð6Ð6Ý�Q�œÑ$Ô$ˆÝ�a˜˜wÑ'Ô'€JÝÐ0Ð0Ð0Ð0¨4Ð0Ñ0Ô0Ñ0Ô0€EÝÔ e°1·;²;±=´=ÈÏÊÉÌÐXÑXÔX€EÝÔ˜e¥T¨*×*=Ò*=Ñ*?Ô*?Ñ%@Ô%@ÑAÔA€EÝ•C˜
 EÑ*Ô*¨LÑ9Ô9Ð9rY   c                 ó¢  ‡
— |€d}|                       ¦   «         Š
t          | |¦  «        }t          | |d¬¦  «        }|r|                     ¦   «          t	          t          | |¦  «        ¦  «        }t          |||¦  «        }t          ˆ
fd„|D ¦   «         ¦  «        }|rt          j	        ||z
  d¦  «        }t          j        ||                      ¦   «         |                      ¦   «         ¬¦  «        }t          j        |t!          |                      ¦   «         ¦  «        ¦  «        }t#          ||¦  «        }	|s|	fS |r|nt%          ||¦  «        }|	|fS )Nr$   T)rv  c              3   ó(   •K  — | ]}‰|         V — Œd S r`   rp   rr  s     €rW   rx   z var_mean_sum_.<locals>.<genexpr>  rs  rY   r   r  )r¢   rX  râ  rb  Úsquarerh  rt  r@   r•   r  r'   r-   r”   rÚ   r,   rà   ry   ru  rÑ  )rt   rI  Ú
correctionrv  Úreturn_meanÚx_meanÚdiffsrx  ry  Úx_varrå   s             @rW   Úvar_mean_sum_r‚  ø  sI  ø€ ØÐØˆ
à�:Š:‰<Œ<€DÝ# A tÑ,Ô,€DÝ�!�T 4Ð(Ñ(Ô(€FØð Ø�ŠÑÔÐå•3�q˜&‘>”>Ñ"Ô"€EÝ�e˜T 7Ñ+Ô+€JåÐ0Ð0Ð0Ð0¨4Ð0Ñ0Ô0Ñ0Ô0€EØð 1Ý”	˜% *Ñ,¨aÑ0Ô0ˆÝÔ e°1·;²;±=´=ÈÏÊÉÌÐXÑXÔX€EÝÔ˜e¥T¨*×*=Ò*=Ñ*?Ô*?Ñ%@Ô%@ÑAÔA€EÝ�
˜EÑ"Ô"€EØð ØˆxˆàÐ9ˆVˆV¥G¨F°DÑ$9Ô$9€FØ�&ˆ=ÐrY   c                 ó  — t          | |¦  «        }t          | ||d d ¬¦  «        }|d         }t          |d         ¦  «        }t          |t          j        ¦  «        o/t          |¦  «        t          j        k     ot          |¦  «        dk    S )Nri  rB  rc  r$   )	rX  rf  r@   rZ   r•   rý  r�   r%   Úunroll_reductions_threshold)rt   rI  rv  r¹   rB  Úreduction_numels         rW   Úuse_two_step_variancer†    s�   € å# A tÑ,Ô,€DÝ"Ø	�˜w¨dÈ$ðñ ô €Fð �HÔ€FÝ# FÐ+=Ô$>Ñ?Ô?€Oå�?¥E¤MÑ2Ô2ð 	'Ý�Ñ Ô ¥6Ô#EÒEð	'å˜&Ñ!Ô! QÒ&ðrY   c                ój  ‡‡‡‡‡— ‰€dŠt          | ||d d ¬¦  «        }|                     d¦  «        }|                     d¦  «         |                     d¦  «         t          j        j        d|fd|                      ¦   «         dœ|¤Ž\  }}}	|                     ¦   «          |                      ¦   «         Š|                      ¦   «         Št          | |¦  «        }t          ˆfd„|D ¦   «         ¦  «        Šd	„ Šˆˆˆˆfd
„}
 t          |
¦  «        |¦  «        }|r|                     ¦   «          ||fS |fS )Nr$   ri  rC  rb  rt  Úwelford_reduce)rn  rÝ  r�   c              3   ó(   •K  — | ]}‰|         V — Œd S r`   rp   rr  s     €rW   rx   z$var_mean_welford_.<locals>.<genexpr>8  s'   øè è € Ð1Ð1 q˜4 œ7Ð1Ð1Ð1Ð1Ð1Ð1rY   c                 óÒ   — t          | t          j        ¦  «        r9| j        s2t	          j        t	          j        | t          j        ¦  «        |¦  «        S t	          j	        | |¦  «        S r`   )
rZ   r•   r–   Ú	is_numberrB   rÍ   r6  rO   r7  r8  r  s     rW   Úget_constant_or_index_exprz5var_mean_welford_.<locals>.get_constant_or_index_expr:  sS   € Ý�a�œÑ$Ô$ð 	G¨Q¬[ð 	GÝ”<¥¤¨qµ%´+Ñ >Ô >ÀÑFÔFÐFÝŒ|˜A˜uÑ%Ô%Ð%rY   c                 ó”   •—  ‰‰‰¦  «        } ‰‰‰¦  «        }t          j        d‰¦  «        }| t          j        |||z
  ¦  «        z  S r§  )rB   r8  rV  )rV  ÚcÚNÚzeror}  r�   rŒ  Úrnumels       €€€€rW   rõ  z#var_mean_welford_.<locals>.scale_fn?  sS   ø€ Ø&Ð& z°5Ñ9Ô9ˆØ&Ð& v¨uÑ5Ô5ˆÝŒ|˜A˜uÑ%Ô%ˆØ•c”k $¨¨A©Ñ.Ô.Ñ.Ð.rY   rp   )rf  r_  r'   ÚWelfordReductionrà   r”   rb  r¢   rX  r@   rQ  )rt   rI  r}  rv  r~  r¹   rp  râ  Úm2r«   rõ  r]  r�   rŒ  r‘  rå   s     `         @@@@rW   Úvar_mean_welford_r”  "  sz  øøøøø€ ØÐØˆ
å"Ø	�˜w¨dÈ$ðñ ô €Fð �ZŠZ˜
Ñ#Ô#€FØ
‡J‚Jˆ{ÑÔÐØ
‡J‚Jˆ{ÑÔÐåÔ%Ô,ð Ø�)Ø'Ø�kŠk‰mŒmðð ð ð	ð �K€Dˆ"ˆað ‡J‚J�L„L€Là�KŠK‰MŒM€EØ�:Š:‰<Œ<€DÝ# A tÑ,Ô,€DÝÐ1Ð1Ð1Ð1¨DÐ1Ñ1Ô1Ñ1Ô1€Fð&ð &ð &ð
/ð /ð /ð /ð /ð /ð /ð /ð #�.˜Ñ
"Ô
" 2Ñ
&Ô
&€Càð Ø�Š‰ŒˆØ�DˆyÐØˆ6€MrY   c                ó8  ‡— |                       ¦   «         Št          ‰¦  «        }t          | |d¬¦  «        } t          | ||||¬¦  «        }t	          | ||¬¦  «        rt          di |¤Žnt          di |¤Ž}t          ˆfd„|D ¦   «         ¦  «        }|s|d         n|S )NFr}  )rt   rI  r}  rv  r~  )rI  rv  c              3   ó<   •K  — | ]}t          |‰d ¬¦  «        V — ŒdS )Fr}  NrŠ  )rs   rt   Ú	out_dtypes     €rW   rx   z#var_mean_helper_.<locals>.<genexpr>]  s2   øè è € ÐFÐF¸!•8˜A˜y¨uÐ5Ñ5Ô5ÐFÐFÐFÐFÐFÐFrY   r   rp   )r”   r   rÍ   rî   r†  r‚  r”  rz   )	rt   rI  r}  rv  r~  Úcompute_dtyper¹   r  r—  s	           @rW   Úvar_mean_helper_r™  M  sÍ   ø€ Ø—’‘”€IÝ)¨)Ñ4Ô4€MÝ��M¨Ð.Ñ.Ô.€AÝØ
ØØØØðñ ô €Fõ ! ¨°wÐ?Ñ?Ô?ð	)�ÐÐ˜ÐÐÐåÐ(Ð( Ð(Ð(ð õ
 ÐFÐFÐFÐF¸vÐFÑFÔFÑFÔF€FØ'Ð3ˆ6�!Œ9ˆ9¨VÐ3rY   )r}  rv  c                ó*   — t          | |||d¬¦  «        S )NF©rI  r}  rv  r~  ©r™  ©rt   rI  r}  rv  s       rW   Úvar_rž  a  s$   € åØ	� °WÈ%ðñ ô ð rY   c                ó*   — t          | |||d¬¦  «        S )NTr›  rœ  r�  s       rW   Úvar_meanr   h  s$   € åØ	� °WÈ$ðñ ô ð rY   c                 ó.  — |dk     r$t          t          j        | ¦  «        | |¦  «        S |dk    rt          j        d|¦  «        S |dk    r| S t          | |dz  |¦  «        }t          j        ||¦  «        }|dz  dk    rt          j        || ¦  «        }|S )Nr   r$   r"   )Úpow_recursiverB   rU  r8  rE  )rt   r  r�   r,  s       rW   r¢  r¢  o  s›   € Øˆ1‚u€uÝ�Sœ^¨AÑ.Ô.°°°EÑ:Ô:Ð:ØˆA‚v€vÝŒ|˜A˜uÑ%Ô%Ð%ØˆA‚v€vØˆå˜1˜a 1™f eÑ,Ô,€FÝŒW�V˜VÑ$Ô$€FØ	ˆA‰�!‚|€|Ý”˜ Ñ#Ô#ˆØ€MrY   c                 ó,   — t          j        | |¦  «        S r`   )rB   Úpow©rÇ   r  s     rW   Ú
pow_nativer¦  ~  s   € åŒ7�1�a‰=Œ=ÐrY   )rº   c                 óX  ‡ ‡‡— t          ‰t          ¦  «        r0‰t          ‰¦  «        k    rt          ‰ t          ‰¦  «        ¦  «        S t          ‰t          ¦  «        r‰dk    rt	          ‰ ¦  «        S t          ‰t          ¦  «        r‰dk    rt          ‰ ¦  «        S t          d„ ‰ ‰fD ¦   «         ¦  «        }t          |¦  «        }t          ‰t          ¦  «        od‰cxk     odk     nc p|o‰dk    }|ri‰                      ¦   «         Šˆ ˆˆfd„}t          j
        ‰                      ¦   «         ‰                      ¦   «         |‰                      ¦   «         ¬¦  «        S t          ‰ t          ¦  «        rL‰ dk    rt          ‰d¦  «        S ‰ d	k    r0t!          ‰                     ¦   «         ¦  «        rt#          ‰¦  «        S |rZt          ‰ t          ¦  «        rt%          ‰ ‰¦  «        S t          ‰t          ¦  «        rt'          ‰ ‰¦  «        S t)          ‰ ‰¦  «        S t+          ‰ ‰¦  «        S )
Nrô  r$   c              3   ór   K  — | ]2}t          |t          j        ¦  «        ¯|                     ¦   «         V — Œ3d S r`   )rZ   r'   r5   r”   rr   s     rW   rx   zpow.<locals>.<genexpr>–  s;   è è € ÐNÐN 1µ*¸QÅÄÑ2MÔ2MÐN�—’‘”ÐNÐNÐNÐNÐNÐNrY   iàÿÿÿé    r   c                 ó\   •— t           ‰| ¦  «        ‰‰                     ¦   «         ¦  «        S r`   )r¢  r”   )rö  rÇ   r  rp  s    €€€rW   rK   zpow.<locals>.fn   s%   ø€ Ý   ¨¡¤¨a°·²±´Ñ?Ô?Ð?rY   rD  r"   )rZ   r  r�   r¤  Úsqrtrw  r   r   r0  r2   rà   rÚ   r”   r¢   r   rÛ  r   Úexp2Úfallback_pow_scalarÚfallback_pow_tensor_scalarÚfallback_pow_tensor_tensorr¦  )rÇ   r  r�   Úis_integer_powÚembed_exponentrK   rp  s   ``    @rW   r¤  r¤  Œ  s0  øøø€ å�!•UÑÔð  ¥S¨¡V¤V¢ Ý�1•c˜!‘f”f‰~Œ~ÐÝ	�A•uÑ	Ô	ð  ! s¢( (Ý�A‰wŒwˆÝ	�A•sÑ	Ô	ð   Q¢ Ý�Q‰xŒxˆõ ÐNÐN¨¨A¨ÐNÑNÔNÑNÔN€EÝ% eÑ,Ô,€Nõ   ¥3Ñ'Ô'ð ØˆaˆˆŠˆ�"ŠˆˆˆÐ3˜Ð2¨A°ªFð ð ð 
Ø—’‘”ˆð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@õ ÔØ—<’<‘>”>Ø—+’+‘-”-ØØ—:’:‘<”<ð	
ñ 
ô 
ð 	
õ �!•VÑÔð Ø�Š6ˆ6Ý˜Q ‘?”?Ð"Ø�Š6ˆ6•n Q§[¢[¡]¤]Ñ3Ô3ˆ6Ý˜‘7”7ˆNàð 4å�a�Ñ Ô ð 	4Ý& q¨!Ñ,Ô,Ð,Ý˜�6Ñ"Ô"ð 	4Ý-¨a°Ñ3Ô3Ð3å-¨a°Ñ3Ô3Ð3å�a˜ÑÔÐrY   c                 óü  — t          | t          ¦  «        r| j        }n| }t          |t          ¦  «        r|j        }t          |t          j        ¦  «        s�t          j        |                      ¦   «         |                      ¦   «         | 	                    ¦   «         |  
                    ¦   «         ¬¦  «        j        }t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «        ri|                     ¦   «         sU|                     ¦   «         sAt          |j        t          j        ¦  «        s"|                     ¦   «          |j        |_        | S t          j                             |||¬¦  «         | S )NrD  ©Úunsafe_alias)rZ   r5   rV  r'   rŒ  r2   rà   rÚ   r”   r0  r¢   Úis_input_bufferÚis_module_bufferÚ	NopKernelrb  r­  Úrealize_into)ÚchangedrÖ  r´  Úchanged_datas       rW   rÒ  rÒ  ¼  se  € Ý�'�9Ñ%Ô%ð Ø”|ˆˆàˆÝ�#•yÑ!Ô!ð ØŒhˆå�c�2œ=Ñ)Ô)ð .åÔØ×%Ò%Ñ'Ô'Ø×#Ò#Ñ%Ô%Ø—_’_Ñ&Ô&Ø×#Ò#Ñ%Ô%ð	
ñ 
ô 
ô
 ð 	õ ˜#�rœ}Ñ-Ô-Ð-Ð-Ð-å�,¥¤Ñ.Ô.ð 	Ø×$Ò$Ñ&Ô&ð	ð ×(Ò(Ñ*Ô*ð	õ �lÔ'­¬Ñ6Ô6ð		ð 	�Š‰ŒˆØœHˆÔØˆåÔ!×.Ò.Øˆ\¨ð /ñ ô ð ð €NrY   c                 ó>   — t          | t          | |¦  «        ¦  «        S r`   )rÒ  rÛ  )rt   r  s     rW   Úfill_r¼  ß  s   € å�Q�	 ! ZÑ0Ô0Ñ1Ô1Ð1rY   c                 óú   — | |u r| S t          ||                      ¦   «         ¦  «        }t          ||                      ¦   «         ¦  «        }t	          ||                      ¦   «         ¦  «        }t          | |¦  «        S r`   ©r›  rÚ   rÍ   r”   r  r¢   rÒ  )r…  rÓ  r˜  s      rW   rÄ  rÄ  ä  sg   € à
ˆc€z€zàˆ
Ý
�C˜ŸšÑ)Ô)Ñ
*Ô
*€CÝ
�3˜Ÿš™œÑ
(Ô
(€CÝ
��c—l’l‘n”nÑ
%Ô
%€CÝ�S˜#ÑÔÐrY   c                 ó,   — t          j        | |¦  «        S r`   )rB   Úfloordivr¥  s     rW   rÀ  rÀ  ï  ó   € åŒ<˜˜1ÑÔÐrY   c                 ó,   — t          j        | |¦  «        S r`   )rB   Útruncdivr¥  s     rW   rÃ  rÃ  ô  rÁ  rY   c                 óž  — t          | ¦  «        ot          |¦  «        }t          | ¦  «        ot          |¦  «        }|dk    r;|r
J d¦   «         ‚|rt          | |¦  «        nt          t	          | |¦  «        ¦  «        S |dk    r;|r
J d¦   «         ‚|rt          | |¦  «        nt          t	          | |¦  «        ¦  «        S t	          | |¦  «        S )Nrä  z5floordiv operands can not be boolean at the same timeré  z5truncdiv operands can not be boolean at the same time)r™   rœ   rÀ  rä  ru  rÃ  ré  )rÇ   r  Úrounding_modeÚboth_integerÚboth_booleans        rW   Údiv_moderÈ  ù  sÔ   € å" 1Ñ%Ô%Ð<­/¸!Ñ*<Ô*<€LÝ" 1Ñ%Ô%Ð<­/¸!Ñ*<Ô*<€Lð ˜ÒÐØÐXÐXÐ!XÑXÔXÐØ!-ÐC�x˜˜1‰~Œ~ˆ~µ5½¸QÀ¹¼Ñ3CÔ3CÐCØ˜ÒÐØÐXÐXÐ!XÑXÔXÐØ!-ÐC�x˜˜1‰~Œ~ˆ~µ5½¸QÀ¹¼Ñ3CÔ3CÐCÝˆq�!‰9Œ9ÐrY   c                 óÐ   — t          | ¦  «        ot          |¦  «        }|rt          | |¦  «        S t          t          j        j        ¦  «        } t          |¦  «        | |¦  «        S r`   )rœ   Úlogical_andr0   rŽ  rE  r   rQ  )rÇ   r  Ú	both_boolrK   s       rW   rE  rE  	  s`   € å Ñ"Ô"Ð9¥°qÑ'9Ô'9€IØð (Ý˜1˜aÑ Ô Ð å�œÔ*Ñ+Ô+ˆØ!�~˜bÑ!Ô! ! QÑ'Ô'Ð'rY   c                 óL  — t          | t          j        ¦  «        rt          | j        ¦  «        S t          | t          j        ¦  «        r!t          |                      ¦   «         ¦  «        S t          | t          j        ¦  «        r| S t          | t          j        ¦  «        sdS t          j
        j                             |                      ¦   «         ¦  «        }t          j        |¦  «        5  t!          j        t          j        dd¦  «        5   | j        |                      ¦   «         Ž }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          |t          j
        j        j        ¦  «        sJ ‚t          |j        t          j        ¦  «        r|j        S dS )z:Try convert an arbitrary IR node into an ir.Constant valueNÚallow_indexingT)rZ   r'   Ú
MutableBoxÚget_constant_valuerV  r  r  rÎ   ÚLoopsrO   Ú	_inductorÚops_handlerÚExtractConstantsHandlerrÚ   rC   Úset_ops_handlerr   Úobjectr>  rC  Úinner_fn_argsÚvirtualizedÚOpsValuerË   )rt   rÿ  ré   s      rW   rÏ  rÏ    sÚ  € õ
 �!•R”]Ñ#Ô#ð *Ý! !¤&Ñ)Ô)Ð)Ý�!•R”[Ñ!Ô!ð 3Ý! !§-¢-¡/¤/Ñ2Ô2Ð2Ý�!•R”[Ñ!Ô!ð Øˆõ �a�œÑ"Ô"ð ØˆtåŒoÔ)×AÒAÀ!Ç,Â,Á.Ä.ÑQÔQ€GÝ	
Ô	˜7Ñ	#Ô	#ð -ð -¥U¤\Ý
ÔÐ+¨Tñ&ô &ð -ð -ð ˆaŒj˜!Ÿ/š/Ñ+Ô+Ð,ˆð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ
 �c�5œ?Ô6Ô?Ñ@Ô@Ð@Ð@Ð@Ý�#”)�Rœ[Ñ)Ô)ð ØŒyÐØˆ4s6   Ã,!EÄD6Ä*EÄ6D:	Ä:EÄ=D:	Ä>EÅEÅEc                 óP  — t          d„ | |fD ¦   «         ¦  «        }|rt          | |¦  «        S t          |¦  «        x}�M|j        dk    r(t	          j        t          d¦  «        |j        ¦  «        }n
d|j        z  }t          | |¦  «        S d„ } t          |¦  «        | |¦  «        S )Nc              3   óR   K  — | ]"}t          |¦  «        pt          |¦  «        V — Œ#d S r`   )rœ   r™   rr   s     rW   rx   zdiv_prim.<locals>.<genexpr>4  s7   è è € ÐOÐOÀ1•o aÑ(Ô(Ð>­O¸AÑ,>Ô,>ÐOÐOÐOÐOÐOÐOrY   r   Úinfrm  c                  ó   — t          j        | Ž S r`   )rB   rÁ  rº  s    rW   rK   zdiv_prim.<locals>.fnA  s   € ÝŒ{˜DÐ!Ð!rY   )	r÷   rÃ  rÏ  rË   ÚmathÚcopysignr  rE  rQ  )rÇ   r  Úis_integralÚdivisorrU  rK   s         rW   Údiv_primrá  2  sº   € åÐOÐOÈÈAÈÐOÑOÔOÑOÔO€Kàð Ý˜˜1‰~Œ~Ðå% aÑ(Ô(Ð(ˆÐ5àŒ=˜AÒÐÝœ¥u¨U¡|¤|°W´]ÑCÔCˆJˆJà˜wœ}Ñ,ˆJÝ�1�jÑ!Ô!Ð!ð"ð "ð "ð �>˜"ÑÔ˜a Ñ#Ô#Ð#rY   c                 ób   — t          | |ft          j        ¬¦  «        \  } }t          | |¦  «        S r  )r%  r   ÚINT_TO_FLOATrá  r¥  s     rW   ru  ru  G  s9   € õ Ø	
ˆAˆÕ$CÔ$Pðñ ô �D€A€qõ �A�q‰>Œ>ÐrY   c                 ó‚   — t          | ¦  «        pt          | ¦  «        }|rd„ }nd„ } t          |¦  «        | |¦  «        S )Nc                 ó,   — t          j        | |¦  «        S r`   )rB   Úmodr¥  s     rW   rK   zfmod.<locals>.fnY  s   € Ý”7˜1˜a‘=”=Ð rY   c                 ó,   — t          j        | |¦  «        S r`   )rB   Úfmodr¥  s     rW   rK   zfmod.<locals>.fn^  s   € Ý”8˜A˜q‘>”>Ð!rY   )rœ   r™   rQ  )rÇ   r  rß  rK   s       rW   rè  rè  S  sc   € å! !Ñ$Ô$Ð:­¸Ñ(:Ô(:€Kàð "ð	!ð 	!ð 	!ð 	!ð
	"ð 	"ð 	"ð �>˜"ÑÔ˜a Ñ#Ô#Ð#rY   c                óâ   — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          d|¬¦  «        } || |||¬¦  «        S )NrÒ  rv  r‘   ©r   r”   r   rO   r7  rk  ©rt   rI  r_  r�   rK   s        rW   rt  rt  d  sk   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå	˜°UÐ	;Ñ	;Ô	;€BØˆ2ˆa��x uÐ-Ñ-Ô-Ð-rY   c                 óÖ  — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          |                      ¦   «         ¦  «        dk    r.|dv sJ ‚|p|                      ¦   «         }t          | |d¬¦  «        S d„ }t          | ||¬¦  «        }t          j
        j        d	i |¤d|i¤Ž\  }|€t          | ||¬¦  «        S |S )
Nr   ©r   r-  Tr}  c                 ó>   — | \  }|\  }t          j        ||¦  «        fS r`   )rB   r|   ©Úa_tupleÚb_tuplerÇ   r  s       rW   Ú
combine_fnzcumsum.<locals>.combine_fn‚  ó#   € Ø‰ˆØ‰ˆÝ”˜˜1‘”ÐÐrY   ©rI  r�   rò  ©r¥   r�   rp   )r   r”   r   rO   r7  r¡   r¢   rÍ   ro  r'   ÚScanrà   Úfallback_cumsum©rt   rI  r�   rò  r¹   r,  s         rW   Úcumsumrù  v  s÷   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆØÐ&˜Ÿš™œˆÝ˜˜5 tÐ,Ñ,Ô,Ð,ð ð  ð  õ
 ˜a d°%Ð8Ñ8Ô8€FÝ””Ð?Ð? Ð?Ð?°JÐ?Ð?Ð?�I€VØ€~Ý˜q d°%Ð8Ñ8Ô8Ð8Ø€MrY   c                 óÖ  — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          |                      ¦   «         ¦  «        dk    r.|dv sJ ‚|p|                      ¦   «         }t          | |d¬¦  «        S d„ }t          | ||¬¦  «        }t          j
        j        d	i |¤d|i¤Ž\  }|€t          | ||¬¦  «        S |S )
Nr   rí  Tr}  c                 ó>   — | \  }|\  }t          j        ||¦  «        fS r`   )rB   rE  rï  s       rW   rò  zcumprod.<locals>.combine_fnš  ró  rY   rô  rò  rõ  rp   )r   r”   r   rO   r7  r¡   r¢   rÍ   ro  r'   rö  rà   Úfallback_cumprodrø  s         rW   Úcumprodrý  Ž  s÷   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆØÐ&˜Ÿš™œˆÝ˜˜5 tÐ,Ñ,Ô,Ð,ð ð  ð  õ
 ˜a d°%Ð8Ñ8Ô8€FÝ””Ð?Ð? Ð?Ð?°JÐ?Ð?Ð?�I€VØ€~Ý  t°5Ð9Ñ9Ô9Ð9Ø€MrY   c                 ó*  — d„ }|                       ¦   «         }t          |                      ¦   «         ¦  «        dk    r|dv sJ ‚t          | ¦  «        S t	          | ||¬¦  «        }t          j        j        di |¤d|i¤Ž\  }|€t          | |¬¦  «        S |S )Nc           	      ó   — | \  }|\  }t          j        ||¦  «        }t          j        ||¦  «        }||k    t          j        |¦  «         z  }t          j        |t          j        t          j        ||z
  ¦  «        ¦  «        |z   |¦  «        fS r`   )rB   rW  rV  rÙ  r¹  Úlog1pÚexp)rð  rñ  rÇ   r  Úmin_vÚmax_vrB  s          rW   Úlog_add_exp_helperz(logcumsumexp.<locals>.log_add_exp_helper¨  s�   € Ø‰ˆØ‰ˆÝ”˜A˜qÑ!Ô!ˆÝ”˜A˜qÑ!Ô!ˆØ˜’¥C¤I¨eÑ$4Ô$4Ð#4Ñ5ˆÝ”	˜$¥¤	­#¬'°%¸%±-Ñ*@Ô*@Ñ AÔ AÀEÑ IÈ1ÑMÔMÐOÐOrY   r   rí  rô  rò  r2  rp   )	r”   r¡   r¢   rw  ro  r'   rö  rà   Úfallback_logcumsumexp)rt   r¥   r  r�   r¹   r,  s         rW   Úlogcumsumexpr  ¦  s¬   € ðPð Pð Pð �KŠK‰MŒM€EÝ
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�gˆ~ˆ~ˆ~ˆ~Ý�Q‰xŒxˆå˜a c°Ð7Ñ7Ô7€FÝ””ÐGÐG ÐGÐGÐ4FÐGÐGÐG�I€VØ€~Ý$ Q¨CÐ0Ñ0Ô0Ð0Ø€MrY   c                 óv  — t          |                      ¦   «         ¦  «        dk    r0|dv sJ ‚t          | ¦  «        t          | t          j        ¬¦  «        fS |                      ¦   «         }t          j        d|d¬¦  «        }|t          j	        u rdn8|j
        rt	          j        |¦  «        j        nt	          j        |¦  «        j        }t          | ||¬¦  «        }|t          j        f|d<   |                      ¦   «         d	„ f|d
<   t          j        j        di |¤d|i¤Ž\  }}|€t%          | |¬¦  «        S ||fS )Nr   rí  r‘   ÚargmaxF©r�   Úarg_break_ties_leftrô  rm  c                 ó   — dS ©NÚrindexrp   rR  s    rW   r4  zcummax.<locals>.<lambda>Ó  ó   € °h€ rY   rn  rò  r2  rp   )r¡   r¢   rw  r  rO   r7  r”   r'   Úget_reduction_combine_fnr›   r‰  rŠ  rÁ  rŒ  ro  r0  rö  rà   Úfallback_cummax)rt   rI  r�   rò  r\  r¹   rÙ   r¾  s           rW   Úcummaxr  ¼  sI  € å
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆÝ�Q‰xŒx� A­U¬[Ð9Ñ9Ô9Ð9Ð9à�KŠK‰MŒM€EÝÔ,Ø˜°5ðñ ô €Jð •E”JÐÐð 	ˆð Ô&ð(�EŒK˜ÑÔÔ"Ð"å”˜UÑ#Ô#Ô'ð õ ˜a d°%Ð8Ñ8Ô8€FØ�uœ{Ð+€Fˆ8ÑØŸ=š=™?œ?Ð,>Ð,>Ð?€Fˆ;ÑÝ”g”nÐEÐE vÐEÐE¸*ÐEÐEÐE�O€FˆGØ€~Ý˜q dÐ+Ñ+Ô+Ð+Ø�7ˆ?ÐrY   c                 óv  — t          |                      ¦   «         ¦  «        dk    r0|dv sJ ‚t          | ¦  «        t          | t          j        ¬¦  «        fS |                      ¦   «         }t          j        d|d¬¦  «        }|t          j	        u rdn8|j
        rt	          j        |¦  «        j        nt	          j        |¦  «        j        }t          | ||¬¦  «        }|t          j        f|d	<   |                      ¦   «         d
„ f|d<   t          j        j        di |¤d|i¤Ž\  }}|€t%          | |¬¦  «        S ||fS )Nr   rí  r‘   ÚargminFr	  Trô  rm  c                 ó   — dS r  rp   rR  s    rW   r4  zcummin.<locals>.<lambda>ñ  r  rY   rn  rò  r2  rp   )r¡   r¢   rw  r  rO   r7  r”   r'   r  r›   r‰  rŠ  rÂ  rŒ  ro  r0  rö  rà   Úfallback_cummin)rt   rI  r�   rò  Ú	max_valuer¹   rÙ   r¾  s           rW   Úcumminr  Ú  sI  € å
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆÝ�Q‰xŒx� A­U¬[Ð9Ñ9Ô9Ð9Ð9à�KŠK‰MŒM€EÝÔ,Ø˜°5ðñ ô €Jð •E”JÐÐð 	ˆð Ô&ð(�EŒK˜ÑÔÔ"Ð"å”˜UÑ#Ô#Ô'ð õ ˜a d°%Ð8Ñ8Ô8€FØ�uœ{Ð+€Fˆ8ÑØŸ=š=™?œ?Ð,>Ð,>Ð?€Fˆ;ÑÝ”g”nÐEÐE vÐEÐE¸*ÐEÐEÐE�O€FˆGØ€~Ý˜q dÐ+Ñ+Ô+Ð+Ø�7ˆ?ÐrY   c                óâ   — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          d|¬¦  «        } || |||¬¦  «        S )NrÓ  rv  r‘   rê  rë  s        rW   rÓ  rÓ  ø  sk   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå	˜°eÐ	<Ñ	<Ô	<€BØˆ2ˆa��x uÐ-Ñ-Ô-Ð-rY   c                 ól   — t          | t          j        ¦  «        }  t          d¦  «        | ||¬¦  «        S )Nrø   ©rI  r_  )rÍ   rO   r›   rk  ©rt   r¥   rv  s      rW   Ú
reduce_anyr    s2   € å�•E”JÑÔ€AØ �>˜%Ñ Ô  ¨°wÐ?Ñ?Ô?Ð?rY   c                 ór   — |�$t          | ||¬¦  «        t          | ||¬¦  «        fS t          | d |¬¦  «        S ©Nr  )Úreduce_amaxÚreduce_argmaxr  s      rW   Ú
reduce_maxr!  	  óL   € à
€å˜ ¨gÐ6Ñ6Ô6Ý˜! #°Ð8Ñ8Ô8ð
ð 	
õ
 �q˜t¨gÐ6Ñ6Ô6Ð6rY   c                 ór   — |�$t          | ||¬¦  «        t          | ||¬¦  «        fS t          | d |¬¦  «        S r  )Úreduce_aminÚreduce_argminr  s      rW   Ú
reduce_minr&    r"  rY   Úxor_sumrÂ  rÁ  r  rv  r  Ú
logical_or)rM  rA  ©Ústabler¥   Ú
descendingc          	      óà  — |€d}|                       ¦   «         }|                      ¦   «         }t          t          |¦  «        |¦  «        }t          |¦  «        dk    r+t	          | ¦  «        t          d|t          j        |¦  «        fS t          |¦  «        r||         nd}t          j	        j
                             |t          j        t          j        ¦  «        j        ¦  «        st          | |||¬¦  «        S t!          |ddt          j        |d¬¦  «        }dgt          |¦  «        z  }t          |¦  «        r|||<   t#          ||¦  «        }t%          ||¦  «        }t&          j                             || j        |j        f|                      ¦   «         |                     ¦   «         f||||¬¦  «        \  }	}|	€t          | |||¬¦  «        S |€J ‚|	t1          |t          j        ¦  «        fS )NFr   r$   r)  )r  r  r�   rÌ   rÞ  )rÌ   rm  rn  rå   rI  r*  r+  )r¢   rÚ   r   r¡   rw  r  rO   r7  rC   r  r	  Ústatically_known_ltrŒ  Úint16rÂ  Úsort_fallbackrß  r�  r  r'   ÚSortrà   r�   r0  rÍ   )
rt   r*  r¥   r+  ró  rÌ   ré  r¾  Ú
view_shaperÙ   s
             rW   Úsort_stabler2  0  sÊ  € à€~Øˆà�JŠJ‰LŒL€EØ�\Š\‰^Œ^€FÝ
�3˜u™:œ: sÑ
+Ô
+€CÝ
ˆ5�z„z�Q‚€Ý�Q‰xŒx�˜q &­%¬+°uÑ=Ô=Ð=Ð=å  ™ZœZÐ.ˆu�SŒzˆz¨Q€HÝŒ7Ô×/Ò/°½%¼+ÅeÄkÑ:RÔ:RÔ:VÑWÔWð OÝ˜Q v°3À:ÐNÑNÔNÐNåØ˜ ­¬¸VÐSXðñ ô €Gð �•s˜5‘z”zÑ!€JÝ
ˆ5�z„zð #Ø"ˆ
�3‰Ý�7˜JÑ'Ô'€GÝ�W˜eÑ$Ô$€Gå”g—n’nØØ”˜œÐ'Ø—=’=‘?”? G×$7Ò$7Ñ$9Ô$9Ð:ØØØØð %ñ ô �O€FˆGð €~Ý˜Q v°3À:ÐNÑNÔNÐNàÐÐÐØ•8˜G¥U¤[Ñ1Ô1Ð1Ð1rY   c                 ó(   — t          | d||¬¦  «        S )NFr)  )r2  )rt   r¥   r+  s      rW   Úsortr4  X  s   € å�q ¨C¸JÐGÑGÔGÐGrY   c                 ó<   — t          | |t          j        |¬¦  «        S )N©rµ   r�   rO  ©r£  r   rã  )r¶   rµ   rO  s      rW   Úregister_pointwise_numericr8  ]  s(   € ÝØ
ØÝ;ÔHØ'ð	ñ ô ð rY   c                 ó:   — t          | t          j        d¬¦  «        S )NT)r�   r¡  r7  r¦  s    rW   Ú register_pointwise_numeric_ldf64r:  f  s%   € ÝØ
Ý;ÔHØ"ðñ ô ð rY   r´  Úlogical_not)rA  )r�   r»   r#  Úidentity)r`  Úpointwise_overrides_datac              #   óH  ‡K  — t           |         Št          | ‰j        d ¦  «        }|€d S ˆfd„}t          |t          j        j        ¦  «        r>|                     ¦   «         D ]'}t          ||¦  «        }|‰j         ||¦  «        fV — Œ(d S |‰j         ||¦  «        fV — d S )Nc                 ó4   •— ‰j         €t          | ¦  «        S d S r`   )Útritonr�  )r¶   rV  s    €rW   Úmake_triton_fallbackz6_get_pointwise_overrides.<locals>.make_triton_fallbackÓ  s!   ø€ ØŒ;ÐÝ# BÑ'Ô'Ð'ð ÐrY   )	r=  re   rµ   rZ   rO   r[   r}   r   r�   )Únsrµ   r¶   rA  Úolnamer.  rV  s         @rW   Ú_get_pointwise_overridesrD  Í  sä   øè è € Ý# DÔ)€DÝ	��T”Y Ñ	%Ô	%€BØ	€zØˆð(ð (ð (ð (ð (õ �"•e”jÔ1Ñ2Ô2ð EØ—l’l‘n”nð 	Ið 	IˆFÝ˜˜VÑ$Ô$ˆBØ�dÔ.Ð0DÐ0DÀRÑ0HÔ0HÐHÐHÐHÐHÐHð	Ið 	Ið �$Ô*Ð,@Ð,@ÀÑ,DÔ,DÐDÐDÐDÐDÐDÐDrY   r6  c                 óz   ‡— | t           |<   t                               | ¦  «         ˆfd„}t          | |¦  «         d S )Nc                  óž   •—  ‰| i |¤Ž}g }t          | d         |¦  «        D ]*\  }}|                     t          ||d¬¦  «        ¦  «         Œ+|S )Nr   Tr³  )rÞ   r®   rÒ  )r©   r¹   ÚresultsÚmut_resultsr¨   r,  Úoutplace_ops         €rW   rK   z$register_foreach_inplace.<locals>.fn  sk   ø€ Ø�+˜tÐ. vÐ.Ð.ˆØˆÝ˜t Aœw¨Ñ0Ô0ð 	Jð 	J‰KˆC�Ø×Ò�y¨¨fÀ4ÐHÑHÔHÑIÔIÐIÐIàÐrY   )rJ   rI   r|   rñ   )Úaten_opÚoutplace_aten_oprI  rK   s     ` rW   Úregister_foreach_inplacerL    sT   ø€ Ø07ÕÐ,Ñ-Ý×Ò˜GÑ$Ô$Ð$ðð ð ð ð õ ˜w¨Ñ+Ô+Ð+Ð+Ð+rY   c                 ó@   ‡— t          | d ¬¦  «        ˆfd„¦   «         }|S )Nry  c                  ó�   •—  ‰| i |¤Ž}t          || d                              ¦   «         ¦  «        }t          | d         |¦  «        S r§  )rÍ   r”   rÒ  )r©   r¹   r,  rI  s      €rW   rK   zregister_inplace.<locals>.fn?  sJ   ø€ à�˜dÐ- fÐ-Ð-ˆÝ˜& $ q¤'×"3Ò"3Ñ"5Ô"5Ñ6Ô6ˆÝ˜˜aœ &Ñ)Ô)Ð)rY   )rÿ   )rJ  rI  rK   s    ` rW   Úregister_inplacerO  >  s;   ø€ Ý�w°DÐ9Ñ9Ô9ð*ð *ð *ð *ñ :Ô9ð*ð
 €IrY   c                 ó   — d S r`   rp   rÀ  s      rW   Úsym_constrain_rangerQ  h  ó   € àˆ4rY   c                 óŠ   — t           j        j        j        d         }t	          |t
          j        ¦  «        sJ ‚|j        j        S ©NrÖ  ©	rC   r  r2  rH  rZ   rO   r
  rf  r  ©rÇ   r¥   rÖ  s      rW   Úsym_sizerW  m  s8   € å
Œ'Ô
Ô
# EÔ
*€Cõ �c�5œ<Ñ(Ô(Ð(Ð(Ð(ØŒ8Œ=ÐrY   c                 óŠ   — t           j        j        j        d         }t	          |t
          j        ¦  «        sJ ‚|j        j        S rT  rU  rV  s      rW   Ú
sym_striderY  ~  s6   € å
Œ'Ô
Ô
# EÔ
*€Cå�c�5œ<Ñ(Ô(Ð(Ð(Ð(ØŒ8Œ=ÐrY   c                 ó*   — |                       ¦   «         S r`   )rK  )rÇ   s    rW   Ú	sym_numelr[  †  s   € à�;Š;‰=Œ=ÐrY   c                 ó   — t          j        | Ž S r`   )r•   ÚAddrº  s    rW   Úsym_sumr^  �  s   € åŒ9�dÐÐrY   c                 ó    — t          d¦  «        ‚)NzHelpful for debuggingri   )r‘  r©   r¹   s      rW   Úfoobarr`  ”  s   € å
Ð5Ñ
6Ô
6Ð6rY   c                 óH   — |                       ¦   «          t          | ¦  «        S r`   )rb  rw  r˜   s    rW   Ú_realizerb  ™  s   € à‡I‚I�K„K€KÝ�‰8Œ8€OrY   c                 óX   — |                       ¦   «          t          j        | |¦  «         | S r`   )rb  r'   ÚResizeStorageBytes)Úvariabler  s     rW   Úresize_storage_bytes_rf  Ÿ  s,   € à×ÒÑÔÐÝÔ˜( HÑ-Ô-Ð-Ø€OrY   c                 ó    — |                       ¦   «          |                      ¦   «          t          j        t          j        | |¦  «        ¦  «        S r`   )rb  r5   rà   r'   ÚSetSourceTensorKernel)r‘  Úsource_tensors     rW   Úset__source_tensorrj  ¦  s?   € à‡L‚L�N„N€NØ×ÒÑÔÐÝÔ�BÔ4°T¸=ÑIÔIÑJÔJÐJrY   rÄ  c                 óú   — | |u r| S t          ||                      ¦   «         ¦  «        }t          ||                      ¦   «         ¦  «        }t	          ||                      ¦   «         ¦  «        }t          | |¦  «        S r`   r¾  )r…  rÓ  s     rW   Ú
fsdp_copy_rl  ¯  sg   € à�#ˆ:ˆ:àˆJÝ˜˜SŸ^š^Ñ-Ô-Ñ.Ô.ˆÝ�s˜CŸMšM™OœOÑ,Ô,ˆÝ�S˜#Ÿ,š,™.œ.Ñ)Ô)ˆÝ˜˜cÑ"Ô"Ð"rY   c                óô  ‡	‡
‡‡— t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚|€t          j        }|t          j        k    rt          d|› �¦  «        ‚|t          j        k    rt          |¦  «        dk    sJ ‚|t          j
        k    rt          |¦  «        dk    sJ ‚|                      ¦   «         Š
|                      ¦   «         }|                      ¦   «         }t          | j        t          j        ¦  «        r| j                             ¦   «         | _        t	          j        ¦   «         rat          j        j        j        rKt-          |¦  «        rt/          d¦  «        Šn.t1          |¦  «        rt	          j        |¦  «        j        ŠndŠndŠt6          j        j                             ‰
d¦  «        rt?          |‰||¬¦  «        S tA          | ‰
gd	g¦  «        }| !                    ¦   «         Š	t          j"         #                    ||¦  «        }t          j$        ||||¦  «         %                    ¦   «         Šˆ	ˆ
ˆˆfd
„}tM          j'        |||t          |¦  «        ¬¦  «        }|S )Nzunsupported memory format: r„   r…   ÚnanTr5  r   rû  r$   c                 óö   •‡—  ‰| ¦  «        Št          j        ‰t          j        ¦  «        }t          j        ‰t          j        ¦  «        }t          j        ||¦  «        }t          j        |ˆˆfd„‰¦  «        S )Nc                  ó   •—  ‰‰ g¦  «        S r`   rp   )Ú
flat_indexÚflat_loaders   €€rW   r4  z*resize.<locals>.inner_fn.<locals>.<lambda>ó  s   ø€ ¨¨°Z°LÑ(AÔ(A€ rY   )rB   r6  rO   r7  r:  r<  )	rö  Úflat_index_exprÚlimitrB  rq  rr  Ú	old_numelÚout_indexerÚuninitalized_vals	       @€€€€rW   rC  zresize.<locals>.inner_fnî  sl   øø€ Ø �[ Ñ%Ô%ˆ
Ýœ.¨µU´[ÑAÔAˆÝ”˜y­%¬+Ñ6Ô6ˆÝŒv�o uÑ-Ô-ˆÝŒz˜$Ð AÐ AÐ AÐ AÐ AÐCSÑTÔTÐTrY   rD  )(rZ   r5   ry   rz   rO   Úcontiguous_formatÚpreserve_formatr,  Úchannels_lastr¡   Úchannels_last_3drK  r”   r!  rV  r'   r  r  rš  rc   r�  Úfill_uninitialized_memoryr   r  r   rŒ  rÂ  rC   r  r	  Ústatically_known_equalsrE  r(  r0  r>  Ú stride_ordered_for_memory_formatr!  r@  r2   rà   )rt   rå   rÓ  r�   rÌ   Úx_flatÚ
out_striderC  ré   rr  ru  rv  rw  s            @@@@rW   Úresizer�  º  s�  øøøø€ å�a�Ñ#Ô#Ð#Ð#Ð#Ý�d�T¥5˜MÑ*Ô*Ð*Ð*Ð*àÐÝÔ/ˆØ�Ô-Ò-Ð-ÝÐH¸ÐHÐHÑIÔIÐIà�Ô+Ò+Ð+Ý�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~Ø�Ô.Ò.Ð.Ý�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~à—’‘”€IØ�KŠK‰MŒM€EØ×"Ò"Ñ$Ô$€Få�!”&�"œ+Ñ&Ô&ð &Ø”×#Ò#Ñ%Ô%ˆŒõ 	Ô2Ñ4Ô4ðåŒKÔ%Ô?ðõ ˜%Ñ Ô ð 	$Ý$ U™|œ|ÐÐÝ˜eÑ$Ô$ð 	$Ý$œ{¨5Ñ1Ô1Ô5ÐÐà#ÐÐð Ðå„wÔ×/Ò/°	¸1Ñ=Ô=ð HÝ�DÐ*°%ÀÐGÑGÔGÐGåØ	àð	
ð ð	
ñô €Fð ×$Ò$Ñ&Ô&€KÝÔ"×CÒCÀDÈ-ÑXÔX€JÝ”. ¨°°jÑAÔA×NÒNÑPÔP€KðUð Uð Uð Uð Uð Uð Uð Uõ Ô
Ø˜U¨X½dÀ4¹j¼jðñ ô €Cð €JrY   )Úauto_functionalizedc                 ó¬   — ddl m} |                     |¦  «        }t          j        | ||i |¥|¥¬¦  «         d„ |                     ¦   «         D ¦   «         S )Nr   )Úkernel_side_table)Ú
kernel_idxÚgridÚtma_descriptor_metadataÚkernel_argsc                 óD   — i | ]\  }}t          |t          ¦  «        ¯||“ŒS rp   r¾   )rs   r²  rÖ  s      rW   rÒ   z'triton_kernel_wrap_.<locals>.<dictcomp>  s-   € ÐRÐRÐR™˜˜cµzÀ#ÅyÑ7QÔ7QÐRˆC�ÐRÐRÐRrY   )Ú*torch._higher_order_ops.triton_kernel_wrapr„  Úget_constant_argsr'   ÚUserDefinedTritonKernelr×   )r…  Úconstant_args_idxr†  r‡  r¹   r„  Úconstant_argss          rW   Útriton_kernel_wrap_r�    sz   € ð MÐLÐLÐLÐLÐLà%×7Ò7Ð8IÑJÔJ€MÝÔØØØ 7Ø/�vÐ/ Ð/ð	ñ ô ð ð SÐR V§\¢\¡^¤^ÐRÑRÔRÐRrY   c                 óX  — t          d„ | g|¢D ¦   «         ¦  «        rFd}t          j        j        j                             dd ¦  «        x}r|› d|› �}|t          j        _        t          j         	                    | |||¦  «        }t          t          t          j	        |¦  «        ¦  «        S )Nc              3   ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r`   r+  rr   s     rW   rx   zcond.<locals>.<genexpr>  s7   è è € Ð
MÐ
M°a�:�a�Ñ Ô Ð1¥Y¨q¡\¤\Ð
MÐ
MÐ
MÐ
MÐ
MÐ
MrY   z"control flow operator: torch.cond.r˜  r™  )rø   rC   r  r2  rH  rI  r›  r'   ÚConditionalrà   ry   Úmapr5   )ÚpredÚtrue_fnÚfalse_fnÚoperandsrl   r˜  r,  s          rW   rk   rk     s¦   € å
Ð
MÐ
M¸DÐ;LÀ8Ð;LÐ
MÑ
MÔ
MÑMÔMð 0Ø2ˆÝœ'Ô.Ô3×7Ò7¸ÀtÑLÔLÐLˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åŒ^×"Ò" 4¨°(¸HÑEÔE€FÝ••IÔ$ fÑ-Ô-Ñ.Ô.Ð.rY   c                 óX  — t          d„ ||z   D ¦   «         ¦  «        rFd}t          j        j        j                             dd ¦  «        x}r|› d|› �}|t          j        _        t          j         	                    | |||¦  «        }t          t          t          j	        |¦  «        ¦  «        S )Nc              3   ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r`   r+  rr   s     rW   rx   zwhile_loop.<locals>.<genexpr>$  sK   è è € ð ð àõ 	�1•fÑÔÐ.¥)¨A¡,¤,ðð ð ð ð ð rY   z(control flow operator: torch.while_loop.r˜  r™  )rø   rC   r  r2  rH  rI  r›  r'   Ú	WhileLooprà   ry   r“  r5   )Úcond_fnÚbody_fnÚcarried_inputsÚadditional_inputsrl   r˜  r,  s          rW   Ú
while_looprŸ  "  s¶   € å
ð ð àÐ"3Ñ3ðñ ô ñ ô ð 0ð 9ˆÝœ'Ô.Ô3×7Ò7¸ÀtÑLÔLÐLˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åŒ\× Ò  ¨'°>ÐCTÑUÔU€FÝ••IÔ$ fÑ-Ô-Ñ.Ô.Ð.rY   Úsubgraph_fnÚ
identifierc                 ó�   — t           j                             | |¦  «        }t          t	          t
          j        |¦  «        ¦  «        S r`   )r'   ÚInvokeSubgraphrà   ry   r“  r5   )r   r¡  r—  r,  s       rW   Úinvoke_subgraphr¤  1  s5   € åÔ×%Ò% k°8Ñ<Ô<€FÝ••IÔ$ fÑ-Ô-Ñ.Ô.Ð.rY   rò  c                 ó~  ‡‡	— ddl mŠm} ˆfd„t          j        ||¦  «        D ¦   «         } || |¦  «        Š	ˆ	fd„}t          |d         |d ¬¦  «        }t          d„ |D ¦   «         ¦  «        |d<   t          d	„ |D ¦   «         ¦  «        |d
<   t          j        j	        d|ddœ|¤Ž}|d         €t          d¦  «        ‚|S )Nr$   )ÚInputDescriptorÚlower_pointwise_subgraphc                 ór   •— g | ]3} ‰|                      ¦   «         |                     ¦   «         ¬ ¦  «        ‘Œ4S )rû  )r”   rÚ   )rs   rt   r¦  s     €rW   ru   z$associative_scan.<locals>.<listcomp>;  sH   ø€ ð ð ð àð 	ˆ˜aŸkšk™mœm°A·L²L±N´NÐCÑCÔCðð ð rY   c                 ó`   •—  ‰g t          j        | ¦  «        ¢t          j        |¦  «        ¢R Ž S r`   )rû  r  )ÚlhsÚrhsÚlowered_combine_fns     €rW   Úwrapped_combine_fnz,associative_scan.<locals>.wrapped_combine_fnA  sC   ø€ Ø!Ð!ð 
ÝÔ Ñ$Ô$ð
åÔ Ñ$Ô$ð
ð 
ð 
ð 	
rY   r   rô  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r`   r`  rr   s     rW   rx   z#associative_scan.<locals>.<genexpr>H  s*   è è € Ð7Ð7¨q˜QŸ[š[™]œ]Ð7Ð7Ð7Ð7Ð7Ð7rY   rm  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r`   r/  rr   s     rW   rx   z#associative_scan.<locals>.<genexpr>I  s*   è è € Ð<Ð<°A §¢¡¤Ð<Ð<Ð<Ð<Ð<Ð<rY   rn  F)rò  Úcan_fallback_to_atenz/Unable to generate code for associative_scan oprp   )Úsubgraph_loweringr¦  r§  rÜ   rÝ   ro  rz   r'   rö  rà   r,  )
rò  Úxsr¥   r§  Úsubgraph_inputsr­  r¹   r,  r¦  r¬  s
           @@rW   Úassociative_scanr´  7  s'  øø€ àLÐLÐLÐLÐLÐLÐLÐLðð ð ð å”  RÑ(Ô(ðñ ô €Oð 2Ð1°*¸oÑNÔNÐð
ð 
ð 
ð 
ð 
õ ˜b œe¨#°TÐ:Ñ:Ô:€FÝÐ7Ð7°BÐ7Ñ7Ô7Ñ7Ô7€Fˆ8ÑÝÐ<Ð<¸Ð<Ñ<Ô<Ñ<Ô<€Fˆ;ÑÝŒWŒ^ð Ø%Ø"ðð ð ðð €Fð
 ˆa„yÐÝÐLÑMÔMÐMØ€MrY   c                 ó   — d S r`   rp   )Útokenss    rW   Ú_sink_tokensr·  T  rR  rY   c                 ó<  — t          j        j        |g|¢R i |¤Ž}ddlm}  ||||¦  «        }|€J ‚t
          j        j        |         }|€|fS t          j	        t           j
        t          j        |¦  «        }t          |t          t          f¦  «        s||fS |g|¢R S )Nr   )Úget_effect_key)r'   ÚEffectfulKernelrà   Útorch._higher_order_ops.effectsr¹  rC   r  Úeffectful_opsrû  r¨  ÚMultiOutputr5   rZ   ry   rz   )Útokenr¶   r©   r¹   r,  r¹  Úeffect_typeÚeffectful_kernels           rW   Úwith_effectsrÁ  Y  s¿   € åÔÔ& rÐ;¨DÐ;Ð;Ð;°FÐ;Ð;€Fà>Ð>Ð>Ð>Ð>Ð>à �.  T¨6Ñ2Ô2€KØÐ"Ð"Ð"Ý”wÔ,¨[Ô9Ðà€~Ø Ð"Ð"åÔ!¥"¤.µ)Ô2BÀFÑKÔK€FÝ�f�t¥U˜mÑ,Ô,ð +Ø  &Ð)Ð)à Ð* 6Ð*Ð*Ð*rY   )Úregister_comm_lowerings)rþ  )Úquantized_lowerings)Úmkldnn_lowerings)Újagged_lowerings)NN)NNNNFN)Fr`   )r   r   r  r$   Trx  )r   r   r$   rÐ  )T)NTF)r   NNr$   )r-  FF)r"   F)NNN)Nrm  N)r5  )NNNN)rp   r   FTNr³   )r-  F(È  r:  rì   rÜ   ÚloggingrÝ  rž  r!  r  Úcollectionsr   Útypingr   r   r   r   r   r	   r
   r   r   Úunittest.mockr   r•   rO   Ú$torch.ao.quantization.fx._decomposedÚtorch.fxÚtorch.utils._pytreerc   Ú_pytreerû  Ú(torch._higher_order_ops.associative_scanr   rŠ  r   Útorch._prims_commonr   r   r   r   r   r   r   r   r   r   r   Útorch.fx.experimental.sym_noder   r   Útorch.utils._sympy.functionsr   r   r   r    r!   Ú_dynamo.utilsr#   Ú r%   r&   r'   r(   Údecompositionr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r×  rB   rC   ÚFALLBACK_ALLOW_LISTÚ	getLoggerr   r)  rD   rV  Ú__annotations__rE   r[   r\   r{   rF   rŽ  Útr_c10dr‚  rG   rH   rI   rJ   Úquantized_decomposedr^   r]   rm   rq   r‚   r(  r-  rÄ  r)  ÚbmmÚconvolutionÚconvolution_backwardÚmax_pool2d_with_indicesr•  Úmmr
  r  Ú_int_mmr†  r…  r.  r±  r7  rK  rT  r:  Ú	complex32Ú	complex64r›   rJ  r�   r�   r’   r™   rœ   r¬   r±   r¸   ræ   rñ   rû   r  rÿ   r  r%  rQ  rq  r�   rÍ   rƒ  r†  r“  r�  r–  rÌ   r›  Ú
device_putr�  r£  r²  r¶  r¹  rÛ   ÚaliasÚdetachÚdetach_ÚliftÚview_ofrÆ  rÅ   rÇ  rÑ  rÓ  r×  rÙ  rß  rá  rä  rç  r„  ré  r  r÷  rù  r  Ú_unsafe_viewÚreshaper
  Úslicer  r*  rF  Úquantize_per_channelrc  Údequantize_per_channelrj  Úquantize_per_tensorr  rp  Údequantize_per_tensorrs  r2  r~  r�  r¤  rÎ  rÐ  rÔ  r×  rÜ  rÞ  rá  rì  rò  rð  r  rö  r�  Ú	lru_cacher  rL  r  r  r  r  r  r/  r4  ÚrngprimsrD  rF  rK  Ú	bernoullirG  rO  rS  rW  rZ  r7  r`  r]  r^  re  rd  rc  ÚrandintÚforce_stride_orderrl  rA  rn  rv  rq  Úlookup_seedrw  Úrandomr|  r‚  r–   rˆ  rŠ  r¡  r˜  r«  r­  r°  rS   rÑ  Ú_adaptive_avg_pool3dÚadaptive_max_pool3dÚfractional_max_pool3dÚmax_pool3d_with_indicesÚuniformÚexponentialÚ_pdist_forwardÚsoft_margin_loss_backwardÚ_cdist_forwardÚ_cdist_backwardÚ
_trilinearÚsegment_reduceÚ_segment_reduce_backwardÚhistcÚ	histogramÚbin_ctÚ_histogramdd_bin_edgesÚ_histogramdd_from_bin_ctsÚaddbmmÚ_addmm_activationÚ
_cudnn_rnnÚ_cudnn_rnn_backwardÚ_embedding_bagÚ_embedding_bag_forward_onlyÚ_embedding_bag_backwardÚ*_embedding_bag_per_sample_weights_backwardÚ_fused_moving_avg_obs_fq_helperÚ*_fused_moving_avg_obs_fq_helper_functionalÚ max_pool3d_with_indices_backwardÚ_adaptive_avg_pool2d_backwardÚ_adaptive_avg_pool3d_backwardÚadaptive_max_pool2d_backwardÚadaptive_max_pool3d_backwardÚfractional_max_pool2d_backwardÚfractional_max_pool3d_backwardÚreplication_pad1d_backwardÚreplication_pad2d_backwardÚupsample_linear1d_backwardÚupsample_bicubic2d_backwardÚupsample_trilinear3d_backwardÚgrid_sampler_2d_backwardÚ_pdist_backwardr4  r*  ÚkthvalueÚtopkry  ÚmedianÚ	nanmedianÚrandpermÚresize_Ú
resize_as_Ú_linalg_detÚlinalg_householder_productÚlinalg_inv_exÚlinalg_ldl_factor_exÚlinalg_ldl_solveÚ	linalg_luÚlinalg_lu_factor_exÚlinalg_lu_solveÚlinalg_matrix_expÚ	linalg_qrÚ_linalg_slogdetÚ_linalg_solve_exÚlinalg_solve_triangularÚ_linalg_svdÚ	lu_unpackÚormqrÚ_linalg_check_errorsÚlinalg_pinvÚatol_rtol_tensorÚ_linalg_eighÚtriangular_solveÚlinalg_cholesky_exÚcholesky_inverseÚcholesky_solveÚgeqrfÚ_fft_r2cÚnonzeroÚgcdÚ_thnn_fused_lstm_cellÚ_primsÚ	rng_primsÚrun_and_save_rng_stateÚrun_with_rng_stateÚmasked_scatterÚmasked_scatter_backwardr  ÚangleÚ_efficientzerotensorÚ(_sparse_coo_tensor_with_dims_and_tensorsÚ	to_sparseÚ
_to_sparser£   r!  Ú'_scaled_dot_product_efficient_attentionrÇ  Ú#_scaled_dot_product_flash_attentionÚ,_scaled_dot_product_flash_attention_backwardÚ#_scaled_dot_product_cudnn_attentionÚ,_scaled_dot_product_cudnn_attention_backwardÚ+_scaled_dot_product_flash_attention_for_cpuÚ4_scaled_dot_product_flash_attention_for_cpu_backwardÚ_flash_attention_forwardÚ_flash_attention_backwardÚ_efficient_attention_forwardÚ_efficient_attention_backwardÚindex_reducerx  rw  rÙ  r  rß  rä  rì  rî  Úscalar_tensorr   Ú
LongTensorr  r  r  r  rÛ  r  r  r  r½  r  rÆ  Ú
zeros_liker2  r6  r(  r>  rC  rE  rM  r[  rf  ry  r|  r{  r  rŒ  r‘  r”  r–  rž  rŽ  r£  r“  r¹  Úfallback__unsafe_masked_indexr¾  Ú,fallback__unsafe_masked_index_put_accumulater  rÆ  r°  rÎ  rÈ  rÚ  rØ  rÞ  rÕ  rý  r  r  r  r  rS  r  r¥  r  r  r+  r3  r=  rC  rH  r^  rl  rŽ  r¡  r¨  r´  r·  rË  rÅ  rÛ  rÙ  rô  rï  rç  rý  r  r  r  r   r(  rV  rQ  rX  rf  rk  ro  râ  r‚  r†  r”  r™  r]  rž  r   r¢  r¦  r¤  ÚTensor_Tensorr¯  ÚScalarr­  ÚTensor_Scalarr®  rÒ  r¼  rÄ  rÀ  rÃ  ru  rÈ  rE  rÎ   rÏ  rá  Útrue_dividerã  rè  rÒ  rt  rù  r÷  rý  rü  r  r  r  r  r  r  rÓ  rø   r  rÂ  r!  rÁ  r&  r'  rà  r  rá  r$  r  r   r  r%  r|   r/  r2  r8  r:  Úrsqrtr  r¬  Úexpm1Úrelurô  r«  r|  rh  ÚcosÚsinÚabsÚbitwise_andÚbitwise_left_shiftÚbitwise_notÚ
bitwise_orÚbitwise_right_shiftÚbitwise_xorÚlgammaÚerfÚspecial_erfr   ÚtanÚtanhrÊ  r;  r(  Úlogical_xorrV  rW  Ú	clamp_minÚ	clamp_maxÚnegrU  Ú	remainderÚsignÚsignbitÚ	_neg_viewÚler:  r9  rM  râ  ÚneÚcoshÚsinhÚacosÚacoshÚasinÚasinhÚatan2ÚatanÚatanhrÞ  ÚerfcÚerfinvÚhypotÚlog10Úlog2Ú	nextafterÚcodegen.commonr`  r=  rD  rµ   r¶   r�   rO  Ú_foreach_addÚforeach_add_listÚforeach_add_scalarÚ_foreach_mulÚforeach_mul_listÚforeach_mul_scalarÚ_foreach_subÚ_foreach_negÚ_foreach_absÚ_foreach_powÚScalarAndTensorÚ_foreach_divÚforeach_div_listÚforeach_div_scalarÚ_foreach_sqrtÚ_foreach_rsqrtÚ_foreach_maximumÚ_foreach_minimumÚ_foreach_clamp_minÚ_foreach_clamp_maxÚ_foreach_reciprocalÚ_foreach_signÚ_foreach_copyrL  Ú_foreach_add_Ú_foreach_mul_Ú_foreach_div_rO  Úadd_Úbitwise_and_Úbitwise_left_shift_Úbitwise_not_Úbitwise_or_Úbitwise_right_shift_Úbitwise_xor_Úmul_Údiv_ÚTensor_modeÚlogical_and_Úlogical_not_Úlogical_or_Úlogical_xor_Úsub_Úrelu_Úsigmoid_Ú__and__Ú
__lshift__Ú__or__Ú
__rshift__Ú__xor__Ú__iand__Ú__ilshift__Ú__ior__Ú__irshift__Ú__ixor__rQ  rW  rY  r[  r×   ÚmethodÚfuncr^  r`  Ú_inductor_testrb  rb  Úinductorrf  Úset_Úsource_Tensorrj  Úfsdprl  r�  Ú*torch._higher_order_ops.auto_functionalizer‚  r�  Úhigher_orderrk   rŸ  r¤  ÚSubgraphr´  r·  rÁ  Úcomm_loweringrÂ  rþ  rÃ  Úregister_quantized_opsÚregister_woq_mm_opsrÄ  Úregister_onednn_fusion_opsrÅ  Úregister_jagged_opsrp   rY   rW   ú<module>rÓ     sôN  ðð Ð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ Ð Ð Ð Ð Ð à €€€à €€€Ø +Ð +Ð +Ð +Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø HÐ HÐ HÐ HÐ HÐ HØ UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð Ð Ð ð ØðÐ ð
 €gÔ˜Ñ!Ô!€ØFH€	ˆ4��h˜s C˜xÔ(¨#Ð-Ô.°¸¸c¸Ô0BÐBÔCÐ HÐ HÑ Hð ð ˜4Ø	„JÔ˜8 H¨S°#¨XÔ$6Ô7Ð7ôð ð ñ ð ),¨©¬€	ˆ3ˆuŒzÔ$Ô%Ð -Ð -Ñ -Ø„y„~€Ø
Œ)Ô
€ØŒ	Œ€Ø47°C±E´EÐ �s˜5œ:Ô0Ô1Ð 9Ð 9Ñ 9Ø*-¨#©%¬%€ˆS�”Ô&Ô'Ð /Ð /Ñ /Ø25°#±%´%Ð �S˜œÔ.Ô/Ð 7Ð 7Ñ 7ØNPÐ ˜˜eœjÔ3°U´ZÔ5JÐJÔKÐ PÐ PÑ PØ”yÔ5Ð ð- ¨#¨s¨(Ô!3ð -¸ÀÈ#ÈsÈ(ÔASÔ8Tð -ð -ð -ð -ð6
Mð 
Mð 
MðFð Fð Fð

ð 
ð 
ð3ð 3ð 3ð Ð àŒØÔØŒØÔ ØŒØÔØÔ!ØÔ$ØÔ-ØŒØÔØÔ&ØŒðñô ð ð* „{Ø„zØ„{Ø„{Ø„{Ø„}Ø„}Ø„}Ø„Ø„ØŒØŒ
ØŒðð €ð.˜ð ð ð ð ð"ð "ð "ð#ð #ð #ðÐ3Rð ð ð ð ðð ð ð ð ð ðDØ
ˆsŒ)ðDà��c�ŒNðDð ðDð "Ð"AÔBð	Dð
  ðDð ˆ4�Œ9�d˜3 ˜8”nÐ$Ô%ðDð Dð Dð DðNð ð ð23ð "Ð"AÔBð	3ð 3ð 3ð 3ðp ð 	(Ô/Øðð ð "Ø'ôðð ð ð ð(#ð #ð #ñ40ð 0ð 0ð 0ðj ØØ $Ø!%ØØñYð Yð Yð YñxMð Mð Mð Mñ`Eð E�	ð E %¤+ð Eð Eð Eð Eð Ð�5Ô-À4ÐHÑHÔHð)˜Yð )¨u¬{ð )ð )ð )ñ IÔHð)ð @Eð 5ð 5ð 5˜	ð 5¨%¬+ð 5ð 5ð 5ð 5ð( Ð�4”9”?¸Ð=Ñ=Ô=ð&�9ð & U¤[ð &ð &ð &ñ >Ô=ð&ð ;@Èeð Kð Kð K�ð K E¤Lð Kð Kð Kð Kð Ð�5Ô#¸Ð>Ñ>Ô>ñFð F�9ð F e¤lð Fð Fð Fñ ?Ô>ðFð 
ØØ7Ô?ØØØ $ØØØð1ð 1ð 1ð 1ðhð ð ð> €Ñ Ô Ð ð ñð ð ð ð Ð�4”:¨ÀDÐIÑIÔIðð ñ JÔIðð0 Ð�4Ô)°UÐPTÐUÑUÔUð ð  ñ VÔUð ðF Ð�D”J ¤¨T¬\¸4¼9ÀeÄmÐTÑUÔUðð ñ VÔUðð €7ˆ4�ÑÔð ,Ø&ÐÐ�d”oÑ&Ô& sÑ+Ô+Ð+ð Ð�4”<°TÐ:Ñ:Ô:ñBð Bð Bñ ;Ô:ðBð2 Ð�4Ô$¸$Ð?Ñ?Ô?ñ"ð "ð "ñ @Ô?ð"ð Ð�D”M�?Ñ#Ô#ñð ð ñ $Ô#ðð Ð�4”:ÑÔðCð Cñ ÔðCð Ð�4”:ÑÔðCð Cñ ÔðCð Ð�4”9ÑÔð!ð !ñ Ôð!ð Ð�4”:ÑÔð!ð !ñ Ôð!ð Ð�4”:Ô%Ñ&Ô&ð%ð %ñ 'Ô&ð%ð Ð�4”:ÑÔð!ð !ñ Ôð!ð Ð�4”;°DÐ9Ñ9Ô9ð>ð >ñ :Ô9ð>ð2 Ð�5Ô)¸tÐDÑDÔDð
ð 
ñ EÔDð
ð Ð�4”>°tÐ<Ñ<Ô<ð#ð #ñ =Ô<ð#ð Ð�4”;ÑÔð.ð .ñ  Ôð.ðb Ð�4Ô$¸$Ð?Ñ?Ô?ØÐ�4”9°$Ð7Ñ7Ô7ØÐ�4”<°TÐ:Ñ:Ô:ð1ð 1ñ ;Ô:ñ 8Ô7ñ @Ô?ð1ð Ð�4”<°TÐ:Ñ:Ô:ð>ð >ñ ;Ô:ð>ð Ð�4”:°4Ð8Ñ8Ô8ñVð Vð Vñ 9Ô8ðVð Ð�4”?¸Ð=Ñ=Ô=ñJð Jð Jñ >Ô=ðJð$ Ð�4Ô#¸Ð>Ñ>Ô>ñð ð ñ ?Ô>ðð Ð�4Ô'¸TÐBÑBÔBñð ð ñ CÔBðñ
Bð Bð Bð BðJ ÐÐ'Ô<ÐRVÐWÑWÔWð/Øð/àð/ð ð/ð ð	/ð
 ð/ð ð/ð Œ;ð/ð ð/ð /ð /ñ XÔWð/ðd ÐØÔ/ÀTðñ ô ð)Øð)àð)ð ð)ð ð	)ð
 ð)ð ð)ð Œ;ð)ð ð)ð )ð )ñô ð)ðX ÐØÔ,Ô4È$ðñ ô ð!Øð!àð!ð ð!ð ð	!ð
 ð!ð Œ;ð!ð ð!ð !ð !ñô ð!ðH ÐØÔ.Ô6ÈDðñ ô ðØðàðð ðð ð	ð
 ðð Œ;ðð ðð ð ñô ðð< ÐØÔ,Ô3Èðñ ô ð*Øð*àð*ð ð*ð ð	*ð
 ð*ð Œ;ð*ð ð*ð *ð *ñô ð*ðZ ÐØÔ.Ô5È4ðñ ô ð&Øð&àð&ð ð&ð ð	&ð
 ð&ð Œ;ð&ð ð&ð &ð &ñô ð&ðR Ð�4”8ÑÔñy:ð y:ð y:ñ Ôðy:ðx Ð�4”=°dÐ;Ñ;Ô;ñ3Eð 3E˜Cð 3E¨3ð 3E¸#ð 3Eð 3Eð 3Eñ <Ô;ð3Eðl Ð�4Ô%¸4Ð@Ñ@Ô@ñ6ð 6 ð 6°ð 6¸sð 6ð 6ð 6ñ AÔ@ð6ð Ð�4Ô(¸dÐCÑCÔCñð ¨ð ¸ð Àsð ð ð ñ DÔCðð Ð�4”;°DÐ9Ñ9Ô9ð6ð 6ñ :Ô9ð6ð
 Ð�4”:°4Ð8Ñ8Ô8ñð ð ñ 9Ô8ðð8 Ð�4Ô(¸dÐCÑCÔCñ ð  ð  ñ DÔCð ð Ð�4”;°DÐ9Ñ9Ô9ñð ð ñ :Ô9ðð Ð�4”;°DÐ9Ñ9Ô9ðDð Dñ :Ô9ðDð4 Ð�4”>°tÐ<Ñ<Ô<ðð ñ =Ô<ðð Ð�4”?¸Ð=Ñ=Ô=ðð ñ >Ô=ðñð ð ð ð Ð�4”8ÑÔñð ð ñ Ôðñð ð ð ð €Ô�TÑÔðð ñ Ôðñð  ¤ð ð ð ð ñ3ð 3 ¤ð 3ð 3ð 3ð 3ñ"<ð "<°´´ð "<ð "<ð "<ð "<ñJ/Nð /Nð /Nð /Nðd	,ð 	,ð 	,ð Ð�5”9Ô%Ô1ÀtÐLÑLÔLð#+ð #+ñ MÔLð#+ðL Ð�4Ô&¸DÐAÑAÔAðGð Gñ BÔAðGð Ð�4”?¸Ð=Ñ=Ô=ðð ñ >Ô=ðð Ð�4”>Ô#¸Ð>Ñ>Ô>ð'ð 'ñ ?Ô>ð'ð Ð�4”<Ñ Ô ðð ñ !Ô ðð €Ô�QÑÔðBð Bñ ÔðBð/ð /ð /ð
 )Ð(¨¬Ô):Ñ;Ô;Ð Ø*Ð*¨4¬9Ô+>Ñ?Ô?Ð Ø)Ð)¨$¬*Ô*<Ñ=Ô=Ð Ø+Ð+¨D¬JÔ,@ÑAÔAÐ Ø €ˆd�lÑ Ô Ð ð Ð�4”9ÑÔðJð Jñ ÔðJð Ð�4”:ÑÔðJð Jñ ÔðJð Ð�>Õ4È$ÐOÑOÔOðLð Lñ PÔOñLð
 Ð�>Õ&¸DÐAÑAÔAðK˜%œ,ð Kð Kð Kñ BÔAñKð Ð�>Õ'¸TÐBÑBÔBðJð Jñ CÔBñJð
 Ð�>Õ-À4ÐHÑHÔHð	ð 	ñ IÔHñ	ð Ð�>Õ(¸dÐCÑCÔCØRSð ð ð ˜$˜sœ)ð ¨9ð ¸Cð ÈCð ð ð ñ DÔCñð6 Ð�>Õ)¸tÐDÑDÔDàLMðð ð Ø	ðØðØ# CœyðØ09ðØFIðð ð ñ EÔDñð8˜9ð ¨¨s°EµJÀÅ
ÈEÍJÐ/VÔ)Wð ð ð ñ ð.�yð . U¨3°µ
¨?Ô%;ð .ð .ð .ñ .ð Ð�4Õ$Ô+ÀÐFÑFÔFð
 ØØØ"&ðZð Zð ZØðZà
ðZð ð	Zð
 ðZð �3Œ-ðZð �YÔðZð ðZð Zð Zñ GÔFñZðz Ð�4•>°tÐ<Ñ<Ô<ð
 Øð,ð ,ð ,Øð,àð,ð ð	,ð
 ð,ð ,ð ,ñ =Ô<ñ,ð^ð ñ ðð ñ ðð ñ ðð ñ ð$Mð Mñ Mðb €ˆdÕ'Ñ (Ô (Ð (Ø €ˆdÕ&Ñ 'Ô 'Ð 'Ø €ˆdÕ(Ñ )Ô )Ð )Ø €ˆdÕ*Ñ +Ô +Ð +ð €ˆd�l Ð 'Ñ 'Ô 'Ð 'Ø €ˆdÕÔ&¨UÐ 3Ñ 3Ô 3Ð 3Ø €ˆdÕ!Ñ "Ô "Ð "Ø €ˆdÕ,°5Ð 9Ñ 9Ô 9Ð 9ð €ˆdÕ!Ñ "Ô "Ð "Ø €ˆdÕ"Ñ #Ô #Ð #ð €ˆd�oÑ Ô Ð ð €ˆdÕ!Ô)Ñ *Ô *Ð *Ø €ˆdÕ+Ô3Ñ 4Ô 4Ð 4ð €ˆd�jÑ Ô Ð Ø €ˆd�nÕ#Ñ $Ô $Ð $Ø €ˆdÕ)Ô1Ñ 2Ô 2Ð 2Ø €ˆdÕ,Ô4Ñ 5Ô 5Ð 5ð €ˆd�kÑ Ô Ð Ø €ˆdÕ$¨5Ð 1Ñ 1Ô 1Ð 1ð €ˆdÔ'Ñ)@Ñ AÔ AÐ AØ €ˆd�o™}Ñ -Ô -Ð -Ø €ˆdÕ&Ñ(:Ñ ;Ô ;Ð ;ð €ˆdÕ!Ñ#5Ñ 6Ô 6Ð 6Ø €ˆdÕ.Ñ0BÑ CÔ CÐ CØ €ˆdÕ*Ñ +Ô +Ð +Ø €ˆdÕ=Ñ >Ô >Ð >Ø €ˆdÕ=Ñ >Ô >Ð >Ø €ˆdÕ2Ñ 3Ô 3Ð 3Ø €ˆdÕ=Ñ >Ô >Ð >ð €ˆdÕ3Ñ 4Ô 4Ð 4Ø €ˆdÕ0±-Ñ @Ô @Ð @Ø €ˆdÕ0Ñ 1Ô 1Ð 1Ø €ˆdÕ/Ñ 0Ô 0Ð 0Ø €ˆdÕ/Ñ 0Ô 0Ð 0Ø €ˆdÕ1Ñ 2Ô 2Ð 2Ø €ˆdÕ1Ñ 2Ô 2Ð 2Ø €ˆdÕ-Ñ .Ô .Ð .Ø €ˆdÕ-Ñ .Ô .Ð .Ø €ˆdÕ-Ñ .Ô .Ð .Ø €ˆdÕ.Ñ0BÑ CÔ CÐ CØ €ˆdÕ0Ñ 1Ô 1Ð 1Ø €ˆdÕ+©]Ñ ;Ô ;Ð ;Ø €ˆdÕ"Ñ #Ô #Ð #ð €ˆd�iÑ Ô Ð Ø €ˆd�iÕÑ Ô Ð Ø €ˆd�mÑ Ô Ð Ø €ˆd�iÑ Ô Ð Ø €ˆd�iÑ Ô Ð Ø €ˆd�kÑ Ô Ð Ø €ˆd�nÑ Ô Ð Ø €ˆd�mÑ Ô Ð à €ˆd�lÑ Ô Ð Ø €ˆd�oÑ Ô Ð ð €ˆdÕÑ Ô Ð Ø €ˆdÕ-Ñ .Ô .Ð .Ø €ˆdÕ Ñ !Ô !Ð !Ø €ˆdÕ'Ñ (Ô (Ð (Ø €ˆdÕ#Ñ $Ô $Ð $Ø €ˆd�nÑ Ô Ð Ø €ˆdÕ&Ñ 'Ô 'Ð 'Ø €ˆdÕ"Ñ #Ô #Ð #Ø €ˆdÕ$Ñ %Ô %Ð %Ø €ˆd�nÑ Ô Ð Ø €ˆdÕ"Ñ #Ô #Ð #Ø €ˆdÕ#Ñ $Ô $Ð $Ø €ˆdÕ*Ñ +Ô +Ð +Ø €ˆdÕÑ Ô Ð Ø €ˆd�nÑ Ô Ð Ø €ˆd�jÑ Ô Ð Ø €ˆdÕ'Ñ (Ô (Ð (Ø €ˆdÕÕ/Ñ 0Ô 0Ð 0Ø €ˆdÕÑ  Ô  Ð  Ø €ˆdÕ#Ñ $Ô $Ð $Ø €ˆdÕ%Ñ &Ô &Ð &Ø €ˆdÕ#Ñ $Ô $Ð $Ø €ˆdÕ!Ñ "Ô "Ð "Ø €ˆd�jÑ Ô Ð Ø €ˆd�mÑ Ô Ð ð €ˆd�lÔ"Ñ #Ô #Ð #ð €ˆd�hÔ UÐ +Ñ +Ô +Ð +Ø €ˆdÕ(©-Ñ 8Ô 8Ð 8Ø €ˆe�lÕ$Õ;Ñ <Ô <Ð <Ø €ˆe�lÕ$Õ7Ñ 8Ô 8Ð 8ð €ˆdÕ!Ñ "Ô "Ð "Ø €ˆdÕ*Ñ +Ô +Ð +ð €ˆdÕ"Ñ$6Ñ 7Ô 7Ð 7Ø €ˆd�jÑ Ô Ð ð €ˆdÕ'Ñ (Ô (Ð (ð €ˆdÕ;Ñ <Ô <Ð <Ø €ˆd�nÑ Ô Ð Ø €ˆd�oÑ Ô Ð ð €ˆd�jÕÑ Ô Ð ð €ØÕ0Ô8ÙØ	ðñ ô ð ð
 €ØÕ9ÔAÙØ	ðñ ô ð ð
 €ØÕ,Ô4ÙØ	ðñ ô ð ð
 €ØÕ5Ô=ÙØ	ðñ ô ð ð
 €ØÕ,Ô4ÙØ	ðñ ô ð ð
 €ØÕ5Ô=ÙØ	ðñ ô ð ð
 €ØÕ4Ô<ÙØ	ðñ ô ð ð
 €ØÕ=ÔEÙØ	ðñ ô ð ð
 €ˆdÕ+Ô3±_Ñ EÔ EÐ EØ €ˆdÕ,Ô4±oÑ FÔ FÐ FØ €ˆdÕ/Ô7¹Ñ IÔ IÐ IØ €ˆdÕ0Ô8¹/Ñ JÔ JÐ Jð €ˆdÕÑ  Ô  Ð  ð
 Ð�4•9°$Ð7Ñ7Ô7ñ
ð 
ð 
ñ 8Ô7ñ
ð Ð�4•:ÑÔØ"ð ð ð ð ñ Ôñðð ñ ð( €7ˆ4Ð"Ñ#Ô#ð 3Ø+ÐÐ�dÕ*Ñ+Ô+©EÑ2Ô2Ð2ð Ð�5•:ÑÔðð ñ Ôñð( Ð�4Õ&¸DÐAÑAÔAð ð ¨Cð ð ð ñ BÔAñð: Ð�4Õ%¸4Ð@Ñ@Ô@ñ@ð @ð @ñ AÔ@ñ@ðFð ñ ð Ð�E”L $Õ"4Ð5Ñ6Ô6Ø t°DÀUð 5ð 5ð 5ð 5ñ 7Ô6ð5ðp Ð�5•?Ñ#Ô#ñ4ð 4ð 4ñ $Ô#ñ4ð Ð�5Õ#Ñ$Ô$ð+ð +ñ %Ô$ñ+ð Ð�4Õ+Ñ,Ô,ð+"ð +"ñ -Ô,ñ+"ð\ Ð�4Õ&Ñ'Ô'ðð ñ (Ô'ñðð ñ ð< Ð�4•>°tÐ<Ñ<Ô<ðKð Kñ =Ô<ñKðð ñ ð8 Ð�E•K ¥Ð,Ñ-Ô-ð Ø
ØØØØðð ð ð ñ .Ô-ñð$ð ñ ð.>ð >ñ >ð 0ÐÐ˜t�Ñ/Ô/Ð0BÑ0BÁ5Ñ0IÔ0IÑJÔJ�
ØÑÐ1Ñ1°!Ñ4Ô4Ñ5Ô5�	ØÑÐ 2Ñ 2°1Ñ 5Ô 5Ñ6Ô6�
ðð ñ ð Ð�4•>Ñ"Ô"Ø $¨T¸$È4ð ð ð ð ñ #Ô"ñð Ð�4Õ%Ñ&Ô&à¨°TÀdðð ð ð ñ 'Ô&ñð> Ð�4Õ)Ñ*Ô*à"¨4¸Èðð ð ð ñ +Ô*ñð" Ð�5Õ%Ô-Ñ.Ô.ðAð Añ /Ô.ñAð Ð�E•J ¥	Ð*Ñ+Ô+ð:ð :ñ ,Ô+ñ:ð
 Ð�4•;°DÐ9Ñ9Ô9ñ"ð "ð "ñ :Ô9ñ"ðJ Ð�4•>°tÐ<Ñ<Ô<ñð ð ñ =Ô<ñð8#ð #ñ #ðB ñFð Fð Fñ FðRð ñ ñ"1ð "1ð "1ñ "1ðJ Ð�4•:°4Ð8Ñ8Ô8ð
ð 
ñ 9Ô8ñ
ð Ð�4Õ%¸4Ð@Ñ@Ô@ð/ð /ñ AÔ@ñ/ð Ð�4•>Ñ"Ô"ñ=ð =ð =ñ #Ô"ñ=ð Ð�4Õ)Ñ*Ô*ñOð Oð Oñ +Ô*ñOð;ð ;ñ ;ðð ñ ð  Ð�4•?¸Ð=Ñ=Ô=ñJð Jð Jñ >Ô=ñJð Ð�>Õ4È$ÐOÑOÔOñKð Kð Kñ PÔOñKðXð Xñ Xðv !1Ð 0ØÕÔ%¸5ð!ñ !ô !Ñ ð 0@Ð/?ØÕ,Ô4È%ð0ñ 0ô 0Ñ ,ð
 Ð�4Õ,À$ÐGÑGÔGðð ñ HÔGñð, Ð�4Õ;ÐQUÐVÑVÔVð	Pð 	Pñ WÔVñ	Pð ð1ð 1ñ „ñ1ð Ð�4Õ*ÀÐEÑEÔEñð ð ñ FÔEñð Ð�4•<°TÐ:Ñ:Ô:ð9�Cð 9ð 9ð 9ñ ;Ô:ñ9ð !Øðð ð Ø”Ô&ðð 
ðð �SŒMðð ðð ð ñ ðB Ð�4•=°dÐ;Ñ;Ô;ØDHð :ð :ð :˜ð :°H¸S´Mð :ð :ð :ñ <Ô;ñ:ð" Ð�4Õ#¸Ð>Ñ>Ô>ð3˜ð 3ð 3ð 3ñ ?Ô>ñ3ð Ð�4Õ$¸$Ð?Ñ?Ô?ð6˜ð 6ð 6ð 6ñ @Ô?ñ6ð Ð�4Õ&¸DÐAÑAÔAðP˜3ð Pð Pð Pñ BÔAñPð Ð�4Õ'¸TÐBÑBÔBØPTð mð mð m˜sð mÈð mð mð mñ CÔBñmðh Øñ,ð ,ð �H˜U”O SÐ(Ô)ð,ð ð	,ð
 ð,ð ,ð ,ñ ,ð^ Ð�4Õ*Ô2Ñ3Ô3ñ>ð >¨x¸¬ð >ð >ð >ñ 4Ô3ñ>ð Ð�4Õ1Ô9Ñ:Ô:ñJð J°h¸u´oð Jð Jð Jñ ;Ô:ñJð Ð�4Ô*Ô2Ñ3Ô3àRVñIð IØ& uœoðIØ@HÈÄðIð Ið Iñ 4Ô3ðIð Ð�4Ô1Ô9Ñ:Ô:àRVñUð UØ& uœoðUØ@HÈÄðUð Uð Uñ ;Ô:ðUð Ð�4Õ*Ô2Ñ3Ô3ð !%Ø $Ø $ñSð Sð �uŒoðSð �uŒoð	Sð
 �uŒoðSð Sð Sñ 4Ô3ñSð Ð�4Õ1Ô9Ñ:Ô:ð !%Ø $Ø $ñ	ð 	ð �uŒoð	ð �uŒoð		ð
 �uŒoð	ð 	ð 	ñ ;Ô:ñ	ñ7ð 7ñ 7ð Ð�5•9Ô$Ñ%Ô%ñð ñ &Ô%ñð* Ð�4Õ'¸TÐBÑBÔBñ.ñ .ð .ñ CÔBñ.ñb�e•jð  u¨U­Z¸¨_Ô'=ð ñ ð ñ ñ�u•zð ¨­ð ñ ð ñ ñ�%•*ð  E¥Jð °UµZð ñ ð ñ ð :>ññ ð ñ ñ<ð ñ ñ,>ð >ñ >ð CGñ@ð @ñ @ð @ñ @ð: Ð�5Õ<ÐRVÐWÑWÔWð ñEñ Eð Eñ XÔWñEðP ÐØ	Õ3Èðñ ô ñð ñô ñðB €ˆdÔ*Ñ +Ô +Ð +ð -=Ð,<ØÔ)Ô1Øð-ñ -ô -Ñ )ð Ð�4Ô8ÈdÐSÑSÔSñLð Lñ TÔSðLñ^ñ ð ñ ñ:Bð Bñ Bñ&ð &ñ &ñR2ð 2ñ 2ðj  0Ð/ØÕÔ%¸5ð ñ  ô  Ñ ð
 Ð�4Õ,Ñ-Ô-ñ?ð ?ñ .Ô-ñ?ðD  0Ð/ØÕÔ$¸%ð ñ  ô  Ñ ð
 Ð�4Õ+Ñ,Ô,ñKð Kñ -Ô,ñKð\ "2Ð!1ØÕÔ&¸Eð"ñ "ô "Ñ ñ
ð ñ ð2 Ð�4Õ-Ñ.Ô.ñBð Bñ /Ô.ñBðJ Ð�4Õ3Ô;Ñ<Ô<àBFñ*ñ *ð *ñ =Ô<ñ*ðZ 'Ð&Ø„OÔ°ðñ ô Ñ ð 'Ð&Ø…OÔ°ðñ ô Ñ ð
 Ð�4”?¸Ð=Ñ=Ô=ð ØØØØññ ð ñ >Ô=ðð* Ð�4•?¸Ð=Ñ=Ô=ð ØØØØññ ð ñ >Ô=ññ*pð pñ pðf  0Ð/ØÔÔ$¸%ð ñ  ô  Ñ ð
 Ð�4Ô+ÀÐFÑFÔFð ñ`ñ `ð `ñ GÔFð`ðF  0Ð/ØÕÔ$¸%ð ñ  ô  Ñ ð
 Ð�4Õ+ÀÐFÑFÔFð ñ@ñ @ð @ñ GÔFñ@ñFð ñ ñ$.ð .ñ .ñbñ  3ð ñ ð ñ ñ&ð ñ ð Ð�4•9ÑÔñ:¨tñ :ð :ñ :ð :ñ Ôñ:ñ ð ñ ñ4ð ñ ñ (ð (ñ (ñV4ð 4ñ 4ð( Ð�D•H˜e�iÐ(Ñ)Ô)ñ T°5ñ ð ñ ð ñ *Ô)ñð Ð�4•=Ñ!Ô!ñ¨°uñ ð ñ ð ñ "Ô!ññð ñ ð ñð ñ „ñð .Ð-Ø…HÕ°ðñ ô Ñ ð 'Ð& t¥x¥ÈEÐRÑRÔRÑ Ø-Ð-Ø…HÕ°ðñ ô Ñ ð
 Ð�4•8 tÑ,Ñ,Ô,ñ,ð ,ñ -Ô,ñ,ñ^ ñ  ð  ñ  ðF Ð�4•:ÑÔñ2ð 2ñ Ôñ2ð Ð�4•:°4Ð8Ñ8Ô8ññ ð ñ 9Ô8ñð ñð ñ „ñð ñð ñ „ñð Ð�4•8 tÑ,Ñ,Ô,ññ ð ñ -Ô,ñð Ð�D•H�:¨Ñ.Ñ.Ô.ñ(ð (ñ /Ô.ñ(ð˜"œ)ð ¨°µÔ(=ð ñ ð ñ ð> Ð�E•I�;¨$Ñ/Ñ/Ô/ñ$ð $ñ 0Ô/ñ$ð( ÐØ	Õ�t•x”Ð'ØØ7ÕDðñ ô ñ
ð ñô ñ
ð Ð�D•I˜u�zÐ*°dÑ;Ñ;Ô;ñ$ð $ñ <Ô;ñ$ð  Ð�D•H˜e�iÐ(Ñ)Ô)ñ.°ñ .ð .ñ .ð .ñ *Ô)ñ.ð #Ð" 4¥;Ô#6Ñ7Ô7�Ø#Ð# D¥LÔ$8Ñ9Ô9Ñ Ø(Ð(¨Õ):Ô)BÑCÔCÑ Ø"Ð" 4¥;Ô#6Ñ7Ô7�Ø"Ð" 4¥;Ô#6Ñ7Ô7�ð Ð�4•;ÑÔññ ð ñ  Ôñð. Ð�4•<Ñ Ô ññ ð ñ !Ô ñð. Ð�4Õ$Ñ%Ô%ñð ñ &Ô%ñð* Ð�4•;°DÐ9Ñ9Ô9ññ ð ñ :Ô9ñð: Ð�4•;°DÐ9Ñ9Ô9ññ ð ñ :Ô9ñð: Ð�4•9ÑÔñ.°ñ .ð .ñ .ð .ñ Ôñ.ð Ð�4•8ÑÔñ@ñ @ð @ñ Ôñ@ð
 Ð�4•8°Ð6Ñ6Ô6ñ7ñ 7ð 7ñ 7Ô6ñ7ð Ð�4•8°Ð6Ñ6Ô6ñ7ñ 7ð 7ñ 7Ô6ñ7ð !Ð Ð �%•-Ñ  Ô   ¡±	Ñ!:Ô!:Ñ ;Ô ;Ð ;Ø*ÐÐ ¥	Ñ*Ô*¨>©>¹%Ñ+@Ô+@ÑAÔA�Ø*ÐÐ ¥	Ñ*Ô*¨>©>¹%Ñ+@Ô+@ÑAÔA�Ø.Ð!Ð! $¥+Ñ.Ô.Ø�N‘8°5´;Ñ?Ñ?Ô?ñô �ð /Ð!Ð! $¥+Ñ.Ô.Ø�N‘8°5´;Ñ?Ñ?Ô?ñô �ð ÐØ…H˜$¹Lññ ô �ð !Ð  ¥Õ!1ÀuÐMÑMÔM�ð Ð�4•9Õ#¸Ð>Ñ>Ô>Ø! r°eñ $2ð $2ñ $2ð $2ñ ?Ô>ñ$2ðN Ð�4•9Ô$¸$Ð?Ñ?Ô?ñHñ Hð Hñ @Ô?ñHññ ð ñ ñð ñ ð 	#Ñ" 4¥:Ñ.Ô.�Ø&Ñ& t¥xÑ0Ô0�Ø!Ñ! $¥)Ñ,Ô,�Ø"Ñ" 4¥:Ñ.Ô.�ØÐ˜$�)Ñ$Ô$�Ø
*Ñ
*¨4­<Ñ
8Ô
8�Ø'Ñ'¨­	Ñ2Ô2�Ø	Ð	˜D�KÑ	(Ô	(�ØÐ˜�¨tÑ4Ñ4Ô4�Ø  Ñ   ¥Ñ *Ô *Ð *Ø  Ñ   ¥Ñ *Ô *Ð *ØÐ˜�Ñ"Ô"�Ø Ð  Õ!1Ñ2Ô2�Ø'Ð'¨Õ(?Ñ@Ô@Ñ Ø Ð ØÕ±-ññ ô �ð  Ð ¥Ñ0Ô0�
Ø(Ð(¨Õ)AÑBÔBÑ Ø Ð  Õ!1Ñ2Ô2�Ø Ñ ˜4�;Ñ 'Ô 'Ð 'Ø Ñ  ¥Ñ*Ô*�ðÐ Ð ØÕÐ*IÕ*Vðñ ô áñô ð ð Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�8Ñ $Ô $Ð $Ø Ñ ˜4�9Ñ %Ô %Ð %Ø  Ñ   ¤Ñ *Ô *Ð *Ø Ð ØÕØØØœ*ñ	ñ ô �ð !Ð ØÕØØØœ*ñ	ñ ô �ð  ÐØ…OØØØœ*ñ	ñ ô �
ð !Ð ØÕØØØœ*ñ	ñ ô �ð Ð
˜T�\Ñ
*Ô
*�Ø
Ð
˜T�\Ñ
*Ô
*�Ø !Ð Ð �$•.Ñ !Ô !¡'Ñ *Ô *Ð *Ø !Ð Ð �$•.Ñ !Ô !¡'Ñ *Ô *Ð *ØÐ˜�Ñ"Ô"�ØÐ˜�Ñ"Ô"�Ø'Ñ'¨­Ñ8Ô8�
Ø Ð �4•>Ñ "Ô "Ð "ØÐ˜$�)ÁÑLÑLÔL�Ø Ð �4”9Ñ Ô Ð Ø Ð �4•<°u´zÑ BÑ BÔ BÐ Bà !Ð Ð �$•.Ñ !Ô !¡#Ñ &Ô &Ð &à Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =ØÐ˜�°u´zÑBÑBÔB�Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =à Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�=Ñ )Ô )Ð )Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�;Ñ 'Ô 'Ð 'Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�>Ñ *Ô *Ð *à DÑ DÑ DÑ DÑ DÑ DÑ DÐ DñEð Eñ Eñ$ %ð 
ð 
�DØ4LÑ4LØ‰dñ5ô 5ð 
ð 
Ñ0‰Ñ¡ð 	ÐÙÙÙ 3Ù+ñ		
ñ 	
ô 	
ð 	
ð 	
ð 5MÑ4LØ‰tñ5ô 5ð 
ð 
Ñ0‰Ñ¡ð 	ÐÙÙÙ 3Ù+ñ		
ñ 	
ô 	
ð 	
ð 	
ð
ð .Ð-ØÕÔ™C¨Tññ ô Ñ ð 0Ð/ØÕÕ™c¨tññ ô Ñ ð Ð ˜4Õ,Ô3±SÀdÑ KÑ KÔ KÐ KØ-Ð-¨dÕ.?Ô.DÁcÑJÔJÑ Ø Ð ˜4Õ,Ô3±SÑ 9Ô 9Ð 9Ø/Ð/°Õ0AÕ0HÉ#ÑNÔNÑ Ø Ð ˜4Õ,Ô1±3Ñ 7Ô 7Ð 7Ø Ð ˜4Õ,Õ3±SÑ 9Ô 9Ð 9Ø Ð ˜4Õ,Ô4±cÑ :Ô :Ð :Ø Ð ˜4Õ,Ô4±cÑ :Ô :Ð :Ø Ð ˜4Õ,Õ3±SÑ 9Ô 9Ð 9Ø Ð ˜4Õ,Ô1±3Ñ 7Ô 7Ð 7Ø Ð ˜4Õ,Õ<¹cÑ BÔ BÐ BØ-Ð-¨dÕ.?Ô.DÁcÑJÔJÑ Ø Ð ˜4Õ,Ô3±SÑ 9Ô 9Ð 9Ø/Ð/°Õ0AÕ0HÉ#ÑNÔNÑ Ø Ð ˜4Õ-©tÑ 4Ô 4Ð 4Ø Ð ˜4Õ.±Ñ 6Ô 6Ð 6Ø Ð ˜4Õ0Ô5±wÑ ?Ô ?Ð ?Ø Ð ˜4Õ0Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ0Ô5±wÑ ?Ô ?Ð ?Ø Ð ˜4Õ0Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Ô7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Õ9¹7Ñ CÔ CÐ CØ Ð ˜4Õ2Ô7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Õ9¹7Ñ CÔ CÐ CØ Ð ˜4Õ3±ZÑ @Ô @Ð @Ø Ð ˜4Õ-©tÑ 4Ô 4Ð 4Ø Ð ˜4Õ-©tÑ 4Ô 4Ð 4ñ,ð ,ñ ,ð Ñ ØÕÔ˜TÕ.Ô3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ð Ñ ØÕÔ˜TÕ.Ô3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ð Ñ ØÕÔ˜TÕ.Ô3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ñ
ð ñ ð Ñ �•™CÑ  Ô  Ð  Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ)Ñ+=Ñ >Ô >Ð >Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ!¡:Ñ .Ô .Ð .Ø Ñ �Õ*Ñ,?Ñ @Ô @Ð @Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �•™CÑ  Ô  Ð  Ø Ñ �•Ô!¡3Ñ 'Ô 'Ð 'Ø Ñ �•Õ&©Ñ 1Ô 1Ð 1Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ!¡:Ñ .Ô .Ð .Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �•™CÑ  Ô  Ð  Ø Ñ �•™TÑ "Ô "Ð "Ø Ñ �•¡Ñ (Ô (Ð (ð  Ð Ð �$•,Ñ Ô ¡Ñ ,Ô ,Ð ,Ø "Ð Ð �$•/Ñ "Ô "Ñ#5Ñ 6Ô 6Ð 6Ø Ð Ð �$•+Ñ Ô ™zÑ *Ô *Ð *Ø "Ð Ð �$•/Ñ "Ô "Ñ#6Ñ 7Ô 7Ð 7Ø Ð Ð �$•,Ñ Ô ¡Ñ ,Ô ,Ð ,à Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• ¥Ñ -Ô -Ð -ð Ð�4Õ+Ñ,Ô,ññ ð ñ -Ô,ñð Ð�4•=Ô$Ñ%Ô%ñð ñ &Ô%ñð  Ð�4•?Ô&Ñ'Ô'ñð ñ (Ô'ñð Ð�4•>Ñ"Ô"ñð ñ #Ô"ñð (�MÕ'Ñ)Ô)ð 8ð 8�L�F‰DØ1ÐÐÐ(Ð(©Ñ0Ô0Ñ1Ô1±$Ñ7Ô7Ð7Ð7ð Ð�5•=Ñ!Ô!ñð ñ "Ô!ñð Ð�4”<Ñ Ô ñ7ð 7ñ !Ô ñ7ð Ð�5”9Õ+Õ3Ñ4Ô4ñð ñ 5Ô4ñð
 Ð�5”9Õ%Õ;Ñ<Ô<ñð ñ =Ô<ñð Ð�5”9”>Õ&Õ4Ñ5Ô5ñKð Kñ 6Ô5ñKð €7ˆ5Œ9�>™7Ñ#Ô#ð 
#àÐ�u”y•~Õ+Ô3Ñ4Ô4ñ#ð #ñ 5Ô4ñ#ð Ð�5”9”>Õ(Ñ)Ô)Ø%)ð =ð =ñ =ð =ñ *Ô)ñ=ð@ KÑ JÑ JÑ JÑ JÐ Jð €Ñ!Ñ "Ô "Ð "ð ÐÐ1Ñ2Ô2ñSð Sñ 3Ô2ñSð( Ð�5”9Õ)Õ.Ñ/Ô/ñ/ð /ñ 0Ô/ñ/ð Ð�5”9Õ)Õ4Ñ5Ô5ñ/ð /ñ 6Ô5ñ/ð Ð�5”9Õ)Õ9ÈtÐTÑTÔTñ/ ¥ñ /¸#ð /ñ /ð /ñ UÔTñ/ð
 ÐÐ&¸DÐAÑAÔAñ ¥ð °sð ñ ð ñ BÔAñð8 Ð�5”9”?Õ/Ô7Ñ8Ô8ñð ñ 9Ô8ñð Ð�5”9Õ)Õ6ÈDÐQÑQÔQñ+ð +ñ RÔQñ+ð& 3Ñ 2Ñ 2Ñ 2Ñ 2Ð 2ð Ñ Ñ Ô Ð ð Ñ Ð Ñ Ñ Ð ð Ð ‘Ñ Ô Ð à !Ñ !Ð !Ñ !Ñ !Ð !ð +Ñ Õ *Ñ ,Ô ,Ð ,Ø 'Ñ Õ 'Ñ )Ô )Ð )à Ñ Ð Ñ Ñ Ð ð ,Ñ Õ +Ñ -Ô -Ð -à Ñ Ð Ñ Ñ Ð ð %Ñ Õ $Ñ &Ô &Ð &Ð &Ð &rY   