§
    ‹ŠtjÚÍ  ã                   óh  — U d dl Z d dlmZ d dlmZmZmZ eeef         Z	d dl
Z
dee         dee         fd„Zdee         dee         dee         fd„Zdee         dedee         fd	„Zd
ee         dee         fd„Zd
ee         fd„Zd
ee         fd„Zdee         dee         fd„Zd
ee         dee         fd„Zd
ee         dee         defd„Zdee         dedee         fd„Zdee         fd„Zd
ee         dee         fd„Zddœd
ee         dee         defd„Zd
ee         deee                  ded efd!„Zd
ee         d"edefd#„Zd$ed%efd&„Zd'ed(ed)ed*ed+ed,ed-efd.„Zd'ed(ed)ed+ed,ed-efd/„Zd0ee         d1ed2ed3ed4ed5ed6ed7ed8ed9ed:ed;ed<ed=efd>„Zd0ee         d?ee         d+ee         d@ee         d,ee         d-efdA„Z d0ee         d?ee         d+ee         d@ee         d,ee         d-efdB„Z!d0ee         dCeee                  dDeee                  fdE„Z"d
ee         dFee         fdG„Z#d
ee         dHee         fdI„Z$d
ee         dJee         fdK„Z%dLee         d"efdM„Z&dLee         fdN„Z'dLee         d"efdO„Z(dLee         dPee         fdQ„Z)d
ee         d"edRee         fdS„Z*	 	 	 �ddUee         dVee         dWedXedYef
dZ„Z+d[„ Z,d
ee         d"ed\ee         d]ee         d^ef
d_„Z-d`eee                  fda„Z.d"edbeee                  fdc„Z/dHee         fdd„Z0deee         dfee         dgedRefdh„Z1d`eee                  d"efdi„Z2d`eee                  d"efdj„Z3d
ee         d"edRefdk„Z4dlee         dmee         fdn„Z5d
ee         fdo„Z6d
ee         dpedqefdr„Z7d0ee         dUee         dseee                  fdt„Z8d
ee         duee         dFee         dvedwef
dx„Z9dyee         defdz„Z:d0ee         d{ee         dseee                  d+ee         d@ee         d,ee         d|efd}„Z;d~ee         dee         dseee                  d+ee         d@ee         d,ee         d|efd€„Z<d0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efd�„Z=d0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efd‚„Z>dƒee         d0ee         dUee         d„eee                  fd…„Z?	 	 	 	 	 	 �dd0ee         dUee         dseee                  d+eee                  d@eee                  d‡eee                  d|ed,eee                  dee         fdˆ„Z@d0ee         dUee         dseee                  d+ee         d@ee         d,ee         d‰ed‡ee         d|edee         fdŠ„ZAd0ee         dUee         dseee                  d+ee         d@ee         d,ee         d‰ed‡ee         d|ed‹edŒed�edŽedee         fd�„ZBd0ee         dUeee                  dseee                  d�eee                  d‘eee                  d’ed“ed”ed�efd•„ZCd0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efd–„ZD�dd"ed˜ed™efdš„ZEd0efd›„ZFdLee         fdœ„ZGd]e	ded�edžedŸef
d „ZHd\e	d]e	ded�edžedŸefd¡„ZId\e	d]e	d^e	ded�edžedŸefd¢„ZJd0ee         dPee         fd£„ZKd
ee         d¤ee         d¥ee         dee         fd¦„ZLd0ee         d§ed¨efd©„ZMd0ee         fdª„ZNd0ee         fd«„ZOd
ee         d"ed¬efd­„ZP	 �dd
ee         d"ee         d¬edee         fd®„ZQd
ee         dFee         dee         fd¯„ZRd
ee         dee         fd°„ZS�dd
ee         d±ed"edeTee         ee         f         fd²„ZUd
ee         d³ee         dUeee                  d´edeTee         ee         f         f
dµ„ZVd0ee         d¶ee         deTee         ee         ee         f         fd·„ZWd0ee         dUeee                  dseee                  d�eee                  d‘eee                  d’edeTee         ee         ee         f         fd¸„ZXd0ee         dUeee                  dseee                  d�eee                  d‘eee                  deTee         ee         ee         ee         f         fd¹„ZY	 	 	 	 �dd
ee         d³ee         dUeee                  d´ed¼ed½edee         fd¾„ZZ	 e
j[        j\        Z]i a^e_e`e]f         ead¿<   i Zbe_e`eTe]e]f         f         eadÀ<   i Zce_ee]f         eadÁ<   dÂefdÃ„ZddÄe`dÂefdÅ„ZedÄe`dÆedÇefdÈ„Zf eedÉe¦  «          eedÊe¦  «          eedËe¦  «          eedÌe¦  «          eedÍeF¦  «          eedÎeF¦  «          eedÏe¦  «          eedÐe¦  «          eedÑeH¦  «          eedÒeI¦  «          eedÓeJ¦  «          eedÔe'¦  «          eedÕe(¦  «          eedÖe)¦  «          eed×e&¦  «          eedØe-¦  «          eedÙe4¦  «          eedÚe*¦  «          eedÛe¦  «          eedÜe¦  «          eedÝe¦  «          eedÞe¦  «          eedße+¦  «          eedàe#¦  «          eedáe$¦  «          eedâe%¦  «          eedãe5¦  «          eedäe8¦  «          eedåe ¦  «          eedæe!¦  «          eedçe6¦  «          eedèe7¦  «          eedée=¦  «          eedêe>¦  «          eedëeC¦  «          eedìeD¦  «          eedíe?¦  «          eedîeA¦  «          eedïeB¦  «          eedðe@¦  «          eedñeM¦  «          eedòe2¦  «          eedóe3¦  «          eedôeK¦  «          eedõeL¦  «          eedöe¦  «          eed÷e¦  «          eedøe¦  «          eedùe¦  «          eedúe¦  «          eedûe¦  «          eedüeF¦  «          eedýeF¦  «          eedþe9¦  «          eedÿe"¦  «          ee�d e¦  «          ee�de¦  «          ee�de¦  «          ee�de¦  «          ee�deQ¦  «          ee�deR¦  «          ee�deS¦  «          ee�deU¦  «          ee�deV¦  «          ee�d	eW¦  «          ee�d
eX¦  «          ee�deX¦  «          ee�deX¦  «          ee�deY¦  «          ee�deZ¦  «          ee�de¦  «          ee�de¦  «          ee�de¦  «          ef�deNeO¦  «         dS (  é    N)ÚCallable)ÚAnyÚOptionalÚUnionÚaÚbc           	      óˆ  — t          | ¦  «        }t          |¦  «        }t          ||¦  «        }g }t          |¦  «        D ]�}|dz
  |z
  }|dz
  |z
  }|dz
  |z
  }	|dk    r| |         nd}
|	dk    r||	         nd}|
|k    r$|
dk    r|dk    rt          d|
› d|› d|› �¦  «        ‚|                     |
dk    r|n|
¦  «         Œ‚|S )Né   r   zThe size of tensor a z" must match the size of tensor b (z) at non-singleton dimension )ÚlenÚmaxÚrangeÚAssertionErrorÚappend)r   r   ÚdimsAÚdimsBÚndimÚexpandedSizesÚiÚoffsetÚdimAÚdimBÚsizeAÚsizeBs               úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/jit/_shape_functions.pyÚ	broadcastr      s  € Ý�‰FŒF€EÝ�‰FŒF€EÝˆu�eÑÔ€DØ!€Må�4‰[Œ[ð =ð =ˆØ˜‘˜A‘ˆØ�q‰y˜6Ñ!ˆØ�q‰y˜6Ñ!ˆØ  AšI˜I��$”�¨AˆØ  AšI˜I��$”�¨Aˆà�EŠ>ˆ>˜e qšj˜j¨U°aªZ¨Zå Øx¨ÐxÐxÐQVÐxÐxÐuvÐxÐxñô ð ð 	×Ò e¨q¢j j˜U˜U°eÑ<Ô<Ð<Ð<àÐó    Úcc                 ó>   — t          t          | |¦  «        |¦  «        S ©N©r   ©r   r   r   s      r   Úbroadcast_threer"   4   s   € Ý•Y˜q !‘_”_ aÑ(Ô(Ð(r   c                 ó"   — t          | |¦  «        S r   r    r!   s      r   Úbroadcast_one_threer$   8   s   € Ý�Q˜‰?Œ?Ðr   ÚselfÚoutc                 ó&  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚t          | ¦  «        dk    s2t          | ¦  «        dk    st          dt          | ¦  «        › �¦  «        ‚t          dt          | ¦  «        ¦  «        D ]!}| |         dk    rt          d|› d	�¦  «        ‚Œ"g }t          dt          | ¦  «        dz
  ¦  «        D ]}|                     | |         ¦  «         Œ|D ]}|                     |¦  «         Œ|S )
Né   z'Expected out to have length 2, but got é   é   z-Expected self to have length 3 or 4, but got r
   r   zExpected self[z] to be non-zero, but got 0)r   r   r   r   )r%   r&   r   ÚshapeÚelems        r   Úadaptive_avg_pool2dr-   <   s)  € Ý
ˆ3�x„x�1‚}€}ÝÐQÅsÈ3ÁxÄxÐQÐQÑRÔRÐRÝ�‰IŒI˜ŠNˆN�c $™iœi¨1šn˜nÝØG½CÀ¹I¼IÐGÐGñ
ô 
ð 	
õ �1•c˜$‘i”iÑ Ô ð Rð RˆØ�Œ7�aŠ<ˆ<Ý Ð!P°!Ð!PÐ!PÐ!PÑQÔQÐQð ð €EÝ�1•c˜$‘i”i !‘mÑ$Ô$ð ð ˆØ�Š�T˜!”WÑÔÐÐØð ð ˆØ�Š�TÑÔÐÐØ€Lr   c                 ó>   — g }| D ]}|                      |¦  «         Œ|S r   ©r   )r%   r&   r,   s      r   Ú_copyr0   O   s0   € Ø€CØð ð ˆØ�
Š
�4ÑÔÐÐØ€Jr   c                 ó    — t          | ¦  «        S r   ©r0   ©r%   s    r   Úunaryr4   V   s   € Ý�‰;Œ;Ðr   c                 óX  — t          | ¦  «        }t          |¦  «        }||k    rt          d|› d|› d�¦  «        ‚t          |¦  «        D ]R}||z
  |z   }| |         }|dk    r||         nd}||k    r*|dk    r$t          d                     |||¦  «        ¦  «        ‚ŒSt	          | ¦  «        S )NzThe dims of tensor b (z6) must be less than or equal to the dims of tensor a (z) r   r
   zZThe size of tensor a {} must match the size of tensor b ({}) at non-singleton dimension {})r   r   r   Úformatr0   )r   r   r   r   r   r   r   r   s           r   Úbroadcast_inplacer7   Z   sÔ   € Ý�‰FŒF€EÝ�‰FŒF€EØˆu‚}€}ÝØk UÐkÐkÐbgÐkÐkÐkñ
ô 
ð 	
õ �e‘”ð 	ð 	ˆØ�u‰}˜tÑ#ˆØ�$”ˆØ  AšI˜I��$”�¨AˆØ�EŠ>ˆ>˜e qšj˜jå ð4ß4:²F¸5À%ÈÑ4NÔ4Nñô ð øõ �‰8Œ8€Or   Úsizesc                 ó8  — t          |¦  «        t          | ¦  «        k     r0t          dt          |¦  «        › dt          | ¦  «        › d�¦  «        ‚t          |¦  «        }t          | ¦  «        }|dk    rt          |¦  «        S g }t          |¦  «        D ]„}|dz
  |z
  }|dz
  |z
  }|dk    r| |         nd}||         }	|	dk    r|dk     rt          d|› d�¦  «        ‚|}	||	k    r|dk    rt          d	|› d
|	› d�¦  «        ‚|	}|                     |¦  «         Œ…|S )NzExpected len(sizes) (z) >= len(self) (ú)r   r
   éÿÿÿÿúExpected dim (z) >= 0 when targetSize is -1zExpected size (z ) == 1 when size != targetSize ()r   r   r0   r   r   )
r%   r8   r   Ú
tensor_dimr&   r   r   ÚdimÚsizeÚ
targetSizes
             r   ÚexpandrA   n   s]  € Ý
ˆ5�z„z•C˜‘I”IÒÐÝØL¥C¨¡J¤JÐLÐLÅÀDÁ	Ä	ÐLÐLÐLñ
ô 
ð 	
õ ˆu‰:Œ:€DÝ�T‘”€JØˆq‚y€yÝ�U‰|Œ|ÐØ€CÝ�4‰[Œ[ð ð ˆØ˜‘˜A‘ˆØ˜1‰n˜vÑ%ˆØ 1šH˜Hˆt�CŒyˆy¨!ˆØ˜1”Xˆ
Ø˜ÒÐØ�QŠwˆwÝ$Ð%W°cÐ%WÐ%WÐ%WÑXÔXÐXØˆJØ�:ÒÐØ�qŠyˆyÝ$ØY dÐYÐYÈJÐYÐYÐYñô ð ð ˆDØ�
Š
�4ÑÔÐÐØ€Jr   Úinp0c                 ó"   — t          | |¦  «        S r   )rA   )r%   r8   rB   s      r   Úexpand_one_unusedrD   ‹   s   € Ý�$˜ÑÔÐr   r+   ÚnumelÚreturnc                 óV  — d}d }t          t          | ¦  «        ¦  «        D ]H}| |         dk    r|�t          d¦  «        ‚|}Œ"| |         dk    r|| |         z  }Œ:t          d¦  «        ‚||k    s |�|dk    r	||z  dk    st          d¦  «        ‚t          | ¦  «        }|�||z  ||<   |S )Nr
   r;   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r0   )r+   rE   ÚnewsizeÚ	infer_dimr>   r&   s         r   Úinfer_size_implrJ   �   sÙ   € Ø€GØ#€IÝ•S˜‘Z”ZÑ Ô ð =ð =ˆØ�Œ:˜ÒÐØÐ$Ý$Ð%IÑJÔJÐJØˆIˆIØ�3ŒZ˜1Š_ˆ_Ø�u˜S”zÑ!ˆGˆGå Ð!;Ñ<Ô<Ð<à�ÒÐØÐ! g°¢k k°e¸g±oÈÒ6JÐ6Jå˜_Ñ-Ô-Ð-Ý
�‰,Œ,€CØÐØ 'Ñ)ˆˆI‰Ø€Jr   c                 ó   — d}| D ]}||z  }Œ|S ©Nr
   © )r8   rE   r,   s      r   rE   rE   ¦   s&   € Ø€EØð ð ˆØ�‰ˆˆØ€Lr   c                 ó<   — t          |t          | ¦  «        ¦  «        S r   )rJ   rE   )r%   r8   s     r   ÚviewrO   ­   s   € Ý˜5¥%¨¡+¤+Ñ.Ô.Ð.r   F)ÚimplicitrP   c                ó"   — t          | |¦  «        S r   )rO   )r%   r8   rP   s      r   Úview_one_unusedrR   ±   s   € Ý��eÑÔÐr   Úopt_dimsÚkeep_dimÚdtc           	      óˆ  — g }|�t          |¦  «        dk    r*t          t          t          | ¦  «        ¦  «        ¦  «        }n|}t          t          | ¦  «        ¦  «        D ]a}d}|D ]%}|t          |t          | ¦  «        ¦  «        k    rd}Œ&|r|r|                     d¦  «         ŒF|                     | |         ¦  «         Œb|S )Nr   FTr
   )r   Úlistr   Úmaybe_wrap_dimr   )	r%   rS   rT   rU   r&   ÚdimsÚidxÚis_mean_dimÚ
reduce_dims	            r   Úsum_mean_dimr]   µ   sÑ   € ð €CØÐ�3˜x™=œ=¨AÒ-Ð-Ý�u¥S¨¡Y¤YÑ/Ô/Ñ0Ô0ˆˆàˆå•S˜‘Y”YÑÔð 	"ð 	"ˆØ!ˆØð 	#ð 	#ˆJØ•n Zµ°T±´Ñ;Ô;Ò;Ð;Ø"�øØð 	"Øð Ø—
’
˜1‘”�øà�JŠJ�t˜C”yÑ!Ô!Ð!Ð!Ø€Jr   r>   c                 ó0   — t          | |g|d ¦  «        }||fS r   )r]   )r%   r>   rT   r&   s       r   Úmax_dimr_   Ë   s    € Ý
�t˜c˜U H¨dÑ
3Ô
3€CØ�ˆ8€Or   ÚxÚyc                 ó   — | |z  S r   rM   )r`   ra   s     r   Údiv_rtnrc   Ñ   s   € Ø�‰6€Mr   Ú	inputSizeÚ
kernelSizeÚpad_lÚpad_rÚstrideÚdilationÚ	ceil_modec                 ó�   — t          | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |¦  «        dz   }|r|dz
  |z  | |z   k    r|dz
  }|S ©Nr
   r   )rc   )rd   re   rf   rg   rh   ri   rj   Ú
outputSizes           r   Úpooling_output_shape_pad_lrrn   Õ   sž   € õ 	ØØñàñð ˜* q™.Ñ)ñ*ð ñ	ð
 'Ð-ˆv˜‰zˆz¨Añ/ð ñ	
ô 	
ð ñ		ð ð ð (Ø˜‰N˜fÑ$¨	°EÑ(9Ò9Ð9Ø# a™ˆJØÐr   c           	      óV   — |dk    rt          d¦  «        ‚t          | ||||||¦  «        S )Nr   zstride should not be zero)r   rn   )rd   re   rf   rh   ri   rj   s         r   Úpooling_output_shaperp   ð   s=   € ð �‚{€{ÝÐ8Ñ9Ô9Ð9Ý&Ø�:˜u e¨V°X¸yñô ð r   ÚinputÚkHÚkWÚdHÚdWÚpadHÚpadWÚ	dilationHÚ	dilationWÚnInputPlaneÚinputHeightÚ
inputWidthÚoutputHeightÚoutputWidthc                 óF  — t          | ¦  «        }|dk    r|dk    st          d|› d|› d�¦  «        ‚|dk    r|dk    st          d|› d|› d�¦  «        ‚|dk    r|dk    st          d|› d|› d�¦  «        ‚| d	         dk    o| d
         dk    }|dk    r| d         dk    r|s)|dk    r|r| d         dk    st          d|› d| › �¦  «        ‚|d
z  |k    r	|d
z  |k    s"t          d|d
z  › d|› d|d
z  › d|› d�	¦  «        ‚|d	k    r|d	k    st          d|› d|› d�¦  «        ‚d S )Nr   zExpected kW (z) > 0 and kH (z) > 0zExpected dW (z) > 0 and dH (zExpected dilationH (z) > 0 and dilationW (r
   r(   r)   r*   zInvalid input dimensions: ndim=z, input=zExpected kW//2 (z) >= padW (z) and kH//2 (z) >= padH (r:   zExpected outputWidth (z) >= 1 and outputHeight (z) >= 1©r   r   )rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   Ú
valid_dimss                   r   Úpool2d_shape_checkr‚   ÿ   sã  € õ  ˆu‰:Œ:€Dà�ŠFˆF�r˜A’v�vÝÐH¨RÐHÐH¸rÐHÐHÐHÑIÔIÐIØ�ŠFˆF�r˜A’v�vÝÐH¨RÐHÐH¸rÐHÐHÐHÑIÔIÐIØ˜ŠMˆM˜i¨!šm˜mÝØS 9ÐSÐSÀ9ÐSÐSÐSñ
ô 
ð 	
ð �q”˜Q’Ð0 5¨¤8¨q¢=€Jà�Š	ˆ	Ø�!ŒH˜ŠMˆMØð à�AŠIˆI˜*ˆI¨¨q¬°Qª¨åÐT¸tÐTÐTÈUÐTÐTÑUÔUÐUà�!‰G�tŠOˆO  a¡¨4¢ Ýð2˜r Q™wð 2ð 2°4ð 2ð 2Ø˜A‘gð2ð 2Ø*.ð2ð 2ð 2ñ
ô 
ð 	
ð ˜1ÒÐ °Ò!2Ð!2Ýð2 [ð 2ð 2Ø)ð2ð 2ð 2ñ
ô 
ð 	
ð "3Ð!2r   Úkernel_sizeÚpaddingc                 ó  — t          |¦  «        dk    s"t          |¦  «        dk    st          d¦  «        ‚|d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    s5t          |¦  «        dk    s"t          |¦  «        dk    st          d¦  «        ‚t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|}	nt          |¦  «        dk    r|}	n|d         }	t          |¦  «        dk    s"t          |¦  «        dk    st          d¦  «        ‚|d         }
t          |¦  «        dk    r|
n|d         }t          |¦  «        dk    s"t          |¦  «        dk    st          d¦  «        ‚|d         }t          |¦  «        dk    r|n|d         }t          | ¦  «        dk    s2t          | ¦  «        d	k    st          d
t          | ¦  «        › �¦  «        ‚t          | ¦  «        d	k    r| d         nd}| d         }| d         }| d         }t          |||
|||¦  «        }t          ||||	||¦  «        }t          | ||||	|
||||||||¦  «         t          | ¦  «        dk    r|||gS ||||gS )Nr
   r(   zKmax_pool2d: kernel_size must either be a single int, or a tuple of two intsr   zOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intszGmax_pool2d: padding must either be a single int, or a tuple of two intszHmax_pool2d: dilation must be either a single int, or a tuple of two intsr)   r*   z&Expected input length 3 or 4, but got éüÿÿÿéýÿÿÿéþÿÿÿr;   )r   r   rp   r‚   )rq   rƒ   rh   r„   ri   rj   rr   rs   rt   ru   rv   rw   rx   ry   Únbatchrz   r{   r|   r}   r~   s                       r   Ú
max_pool2drŠ   /  sÉ  € õ �ÑÔ Ò!Ð!¥S¨Ñ%5Ô%5¸Ò%:Ð%:ÝØYñ
ô 
ð 	
ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå�‰KŒK˜1ÒÐ¥ F¡¤¨qÒ 0Ð 0µC¸±K´KÀ1Ò4DÐ4DÝØ]ñ
ô 
ð 	
õ �6‰{Œ{˜aÒÐˆˆ V¨A¤Y€BÝ
ˆ6�{„{�aÒÐØˆˆÝ	ˆV‰Œ˜Ò	Ð	Øˆˆà�AŒYˆå�‰LŒL˜AÒÐ¥ W¡¤°Ò!2Ð!2ÝØUñ
ô 
ð 	
ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då�‰MŒM˜QÒÐ¥# h¡-¤-°1Ò"4Ð"4ÝØVñ
ô 
ð 	
ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå�‰JŒJ˜!ŠOˆO�s 5™zœz¨Qš˜ÝÐRÅcÈ%ÁjÄjÐRÐRÑSÔSÐSå˜e™*œ*¨š/˜/ˆU�2ŒYˆY¨q€FØ˜”)€KØ˜”)€KØ�r”€Jå'¨°R¸¸rÀ9ÈiÑXÔX€LÝ& z°2°t¸RÀÈIÑVÔV€KåØØ
Ø
Ø
Ø
ØØØØØØØØØñô ð õ" ˆ5�z„z�Q‚€Ø˜\¨;Ð7Ð7à˜ \°;Ð?Ð?r   c                 ó2   — t          | |||||¦  «        }||fS r   )rŠ   )rq   rƒ   rh   r„   ri   rj   r&   s          r   Úmax_pool2d_with_indicesrŒ   z  s%   € õ �U˜K¨°¸(ÀIÑ
NÔ
N€CØ�ˆ:Ðr   Úoutput_sizeÚscale_factorsc                 óà  — g }|                      | d         ¦  «         |                      | d         ¦  «         |€|€t          d¦  «        ‚|�y|�t          d¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|                      |d         ¦  «         |                      |d         ¦  «         |�¥|�t          d¦  «        ‚t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|                      t          | d         |d         z  ¦  «        ¦  «         |                      t          | d         |d         z  ¦  «        ¦  «         |S )	Nr   r
   z5Either output_size or scale_factors must be presentedz9Must specify exactly one of output_size and scale_factorsr(   z/Expected output_size to have length 2, but got z1Expected scale_factors to have length 2, but got r)   )r   r   r   Úint)rq   r�   rŽ   r&   s       r   Úupsample_nearest2dr‘   †  sŠ  € ð
 €CØ‡J‚Jˆu�QŒxÑÔÐØ‡J‚Jˆu�QŒxÑÔÐàÐ Ð!4ÝÐTÑUÔUÐUàÐØÐ$Ý ØKñô ð õ ˆ{ÑÔ˜qÒ Ð Ý ØTÅ#ÀkÑBRÔBRÐTÐTñô ð ð 	�
Š
�;˜q”>Ñ"Ô"Ð"Ø�
Š
�;˜q”>Ñ"Ô"Ð"àÐ ØÐ"Ý ØKñô ð õ ˆ}ÑÔ Ò"Ð"Ý ØXÅCÈÑDVÔDVÐXÐXñô ð ð 	�
Š
•3�u˜Q”x -°Ô"2Ñ2Ñ3Ô3Ñ4Ô4Ð4Ø�
Š
•3�u˜Q”x -°Ô"2Ñ2Ñ3Ô3Ñ4Ô4Ð4à€Jr   Úmat2c                 óT  — t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚| d         |d         k    r!t          d| d         › d|d         › �¦  «        ‚| d         |d         gS )	Nr(   zself must be a matrix (got z dimensions)zmat2 must be a matrix (got r
   r   z.Matrix dimensions don't match for mm: self[1]=ú
, mat2[0]=r€   ©r%   r’   s     r   Úmmr–   ­  s¸   € Ý
ˆ4�y„y�A‚~€~ÝÐR½3¸t¹9¼9ÐRÐRÐRÑSÔSÐSÝ
ˆ4�y„y�A‚~€~ÝÐR½3¸t¹9¼9ÐRÐRÐRÑSÔSÐSàˆA„w�$�q”'ÒÐÝØY¸TÀ!¼WÐYÐYÐPTÐUVÔPWÐYÐYñ
ô 
ð 	
ð �ŒG�T˜!”WÐÐr   Útensorc                 ó  — t          | ¦  «        dk    rt          |¦  «        dk    s/t          dt          | ¦  «        › dt          |¦  «        › �¦  «        ‚| d         |d         k    r!t          d| d         › d|d         › �¦  «        ‚g }|S )Nr
   z+Expected 1D tensors for dot, got len(self)=z, len(tensor)=r   z(Dot product dimension mismatch: self[0]=z, tensor[0]=r€   )r%   r—   r&   s      r   Údotr™   º  s¬   € Ý�‰IŒI˜ŠNˆN�s 6™{œ{¨aÒ/Ð/Ýð)½#¸d¹)¼)ð )ð )Ý˜v™;œ;ð)ð )ñ
ô 
ð 	
ð ˆA„w�&˜”)ÒÐÝØW°t¸A´wÐWÐWÈFÐSTÌIÐWÐWñ
ô 
ð 	
ð €CØ€Jr   Úvecc                 ó$  — t          | ¦  «        dk    rt          |¦  «        dk    s/t          dt          | ¦  «        › dt          |¦  «        › �¦  «        ‚| d         |d         k    r!t          d| d         › d|d         › �¦  «        ‚| d         gS )Nr(   r
   z0Expected 2D matrix and 1D vector, got len(self)=z, len(vec)=r   z*Matrix-vector dimension mismatch: self[1]=z	, vec[0]=r€   )r%   rš   s     r   Úmvrœ   È  s«   € Ý�‰IŒI˜ŠNˆN�s 3™xœx¨1š}˜}Ýð#½sÀ4¹y¼yð #ð #Ý˜C™œð#ð #ñ
ô 
ð 	
ð ˆA„w�#�a”&ÒÐÝØS¸¸a¼ÐSÐSÈ3ÈqÌ6ÐSÐSñ
ô 
ð 	
ð �ŒGˆ9Ðr   Úlic                 ó�   — t          |t          | ¦  «        dz   ¦  «        }t          | ¦  «        }|                     |d¦  «         |S rL   )rX   r   r0   Úinsert)r�   r>   r&   s      r   Ú	unsqueezer    Ö  s?   € Ý
˜�c "™gœg¨™kÑ
*Ô
*€CÝ
�‰)Œ)€CØ‡J‚Jˆs�AÑÔÐØ€Jr   c                 ó–   — g }t          t          | ¦  «        ¦  «        D ])}| |         dk    r|                     | |         ¦  «         Œ*|S rL   )r   r   r   )r�   r&   r   s      r   Úsqueeze_nodimr¢   Ý  sK   € Ø€CÝ•3�r‘7”7‰^Œ^ð ð ˆØˆaŒ5�AŠ:ˆ:Ø�JŠJ�r˜!”uÑÔÐøØ€Jr   c                 ó  — g }t          |t          | ¦  «        ¦  «        }t          t          | ¦  «        ¦  «        D ]K}||k    r(| |         dk    r|                     | |         ¦  «         Œ0|                     | |         ¦  «         ŒL|S rL   )rX   r   r   r   )r�   r>   r&   Úwrapped_dimr   s        r   Úsqueezer¥   å  s„   € Ø€CÝ  ¥c¨"¡g¤gÑ.Ô.€KÝ•3�r‘7”7‰^Œ^ð ð ˆØ�ÒÐØ�!Œu˜ŠzˆzØ—
’
˜2˜aœ5Ñ!Ô!Ð!øà�JŠJ�r˜!”uÑÔÐÐØ€Jr   rY   c                 ó¨  — t          |¦  «        dk    r| S t          |¦  «        }t          t          |¦  «        ¦  «        D ](}t          ||         t          | ¦  «        ¦  «        ||<   Œ)g }t          t          | ¦  «        ¦  «        D ]I}| |         dk    r ||vr|                     | |         ¦  «         Œ.|                     | |         ¦  «         ŒJ|S ©Nr   r
   )r   r0   r   rX   r   )r�   rY   Úwrapped_dimsr   Úresults        r   Úsqueeze_dimsrª   ñ  sÌ   € Ý
ˆ4�y„y�A‚~€~Øˆ	Ý˜‘;”;€LÝ•3�t‘9”9ÑÔð Cð CˆÝ(¨°a¬½#¸b¹'¼'ÑBÔBˆ�Q‰ˆØ€FÝ•3�r‘7”7‰^Œ^ð !ð !ˆØˆaŒ5�AŠ:ˆ:Ø˜Ð$Ð$Ø—’˜b œeÑ$Ô$Ð$øà�MŠM˜"˜Qœ%Ñ Ô Ð Ð Ø€Mr   Úindexc                 óê  — t          |t          | ¦  «        ¦  «        }t          |¦  «        }t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|dk    s6|t          | ¦  «        k     s#t          d|› dt          | ¦  «        › d�¦  «        ‚g }t	          t          | ¦  «        ¦  «        D ]9}||k    r|                     |¦  «         Œ|                     | |         ¦  «         Œ:|S )Nr
   z"Expected len(index) <= 1, but got r   r<   z) == 0 or dim < len(self) (r:   )rX   r   Úmultiply_integersr   r   r   )r%   r>   r«   rE   Úresult_sizer   s         r   Úindex_selectr¯     sú   € Ý
˜�c $™iœiÑ
(Ô
(€CÝ˜eÑ$Ô$€EÝ
ˆ5�z„z�A‚~€~ÝÐNÅ#ÀeÁ*Ä*ÐNÐNÑOÔOÐOØ�1ŠHˆH˜�c $™iœiš˜ÝØI˜SÐIÐI½SÀ¹Y¼YÐIÐIÐIñ
ô 
ð 	
ð  €KÝ•3�t‘9”9ÑÔð (ð (ˆØ�!Š8ˆ8Ø×Ò˜uÑ%Ô%Ð%Ð%à×Ò˜t AœwÑ'Ô'Ð'Ð'ØÐr   r;   ÚweightÚindicesÚpadding_idxÚscale_grad_by_freqÚsparsec                 ó  — t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          |¦  «        dk    rt          | d|¦  «        S t          |¦  «        }|                     | d         ¦  «         |S )Nr(   z"Expected weight to be 2D, but got ÚDr
   r   )r   r   r¯   r0   r   )r°   r±   r²   r³   r´   r?   s         r   Ú	embeddingr·     s~   € õ ˆ6�{„{�aÒÐÝÐPÅ#ÀfÁ+Ä+ÐPÐPÐPÑQÔQÐQÝ
ˆ7�|„|�qÒÐÝ˜F A wÑ/Ô/Ð/Ý�‰>Œ>€DØ‡K‚K��q”	ÑÔÐØ€Kr   c                  ó   — dS )Nl   ÿÿÿÿ rM   rM   r   r   Úmax_intr¹   #  s   € ØÐr   ÚstartÚendÚstepc                 óò  — t          | ¦  «        }|dk    rt          d¦  «        ‚t          ||¦  «        }|�|nd}|�|nt          ¦   «         }|dk    rt          d|› �¦  «        ‚|t          ¦   «         k    rd}|dk     r|| |         z  }|dk     r|| |         z  }|dk     rd}n|| |         k    r| |         }||k     r|}n|| |         k    r| |         }||z
  }t	          | ¦  «        }	||z   dz
  |z  |	|<   |	S )Nr   z#Cannot slice a 0-dimensional tensorzExpected step > 0, but got r
   )r   r   rX   r¹   r0   )
r%   r>   rº   r»   r¼   r   Ú	start_valÚend_valÚ	slice_lenr&   s
             r   ÚslicerÁ   '  s;  € õ ˆt‰9Œ9€DØˆq‚y€yÝÐBÑCÔCÐCÝ
˜˜dÑ
#Ô
#€CØÐ*��°€IØ�_ˆcˆc­'©)¬)€GØˆq‚y€yÝÐA¸4ÐAÐAÑBÔBÐBØ•G‘I”IÒÐØˆ	Ø�1‚}€}Ø�T˜#”YÑˆ	Ø�‚{€{Ø�4˜”9ÑˆØ�1‚}€}Øˆ	ˆ	Ø	�T˜#”YÒ	Ð	Ø˜”Iˆ	Ø�ÒÐØˆˆØ	�D˜”IÒ	Ð	Ø�s”)ˆØ˜)Ñ#€IÝ
�‰+Œ+€CØ˜DÑ  1Ñ$¨Ñ-€Cˆ�HØ€Jr   Útensorsc                 óT   — | D ]$}t          |¦  «        dk    rt          d¦  «        ‚Œ%d S )Nr   z+Cannot concatenate tensor with 0 dimensionsr€   )rÂ   r—   s     r   Úcheck_cat_no_zero_dimrÄ   F  sD   € Øð Pð PˆÝˆv‰;Œ;˜!ÒÐÝ Ð!NÑOÔOÐOð ðPð Pr   Útensor_sizesc                 ó˜   — d }|D ]@}t          |¦  «        dk    r|d         dk    s|€t          | t          |¦  «        ¦  «        }ŒA|€| }|S rl   )r   rX   )r>   rÅ   Úout_dimr?   s       r   Úlegacy_cat_wrap_dimrÈ   L  s[   € Ø!€GØð 9ð 9ˆÝ�D‘	”	˜Q’� 4¨¤7¨a¢< <ØˆÝ(¨­c°$©i¬iÑ8Ô8�øØ€ØˆØ€Nr   c                 óN   — t          | ¦  «        dk    ot          | ¦  «        dk    S r§   ©rE   r   )r—   s    r   Úshould_skiprË   W  s#   € Ý�‰=Œ=˜AÒÐ2¥# f¡+¤+°Ò"2Ð2r   ÚfirstÚsecondÚ	dimensionc                 ó  — t          | ¦  «        }t          |¦  «        }||k    rt          d|› d|› �¦  «        ‚t          d|¦  «        D ]A}||k    r9| |         ||         k    r't          d|› d| |         › d||         › d|› �¦  «        ‚ŒBd S )Nz1Tensors must have same number of dimensions, got z and r   z0Sizes of tensors must match except in dimension ú, got z at dimension )r   r   r   )rÌ   rÍ   rÎ   r«   Ú
first_dimsÚsecond_dimsr>   s          r   Úcheck_cat_shape_except_dimrÓ   [  sô   € õ �U‘”€JÝ�f‘+”+€KØ�[Ò Ð ÝðÀ
ð ð Øðð ñ
ô 
ð 	
õ �Q˜
Ñ#Ô#ð ð ˆØ�)ÒÐØ�SŒz˜V Cœ[Ò(Ð(Ý$ðMÀyð Mð MØ  œ:ðMð MØ,2°3¬KðMð MØGJðMð Mñô ð øðð r   c                 ó”  — t          | ¦  «         t          || ¦  «        }t          | ¦  «        dk    rt          d¦  «        ‚d }| D ]}t	          |¦  «        s|}Œ|€dgS d}t          t          | ¦  «        ¦  «        D ]6}| |         }t	          |¦  «        st          ||||¦  «         |||         z   }Œ7t          |¦  «        }|||<   |S )Nr   z(Cannot concatenate empty list of tensors)rÄ   rÈ   r   r   rË   r   rÓ   r0   )rÂ   r>   Únot_skipped_tensorr—   Úcat_dim_sizer   r®   s          r   Úcatr×   n  sõ   € Ý˜'Ñ"Ô"Ð"Ý
˜c 7Ñ
+Ô
+€CÝ
ˆ7�|„|�qÒÐÝÐGÑHÔHÐHØ.2ÐØð (ð (ˆÝ˜6Ñ"Ô"ð 	(Ø!'ÐøØÐ!Øˆsˆ
à€Lå•3�w‘<”<Ñ Ô ð 6ð 6ˆØ˜”ˆÝ˜6Ñ"Ô"ð 	6Ý&Ð'9¸6À3ÈÑJÔJÐJØ'¨&°¬+Ñ5ˆLøåÐ*Ñ+Ô+€KØ#€K�ÑØÐr   c                 óz   — g }| D ]'}t          ||¦  «        }|                     |¦  «         Œ(t          ||¦  «        S r   )r    r   r×   )rÂ   r>   Úunsqueezed_tensorsr—   Ú
unsqueezeds        r   ÚstackrÛ   ‡  sN   € Ø*,ÐØð .ð .ˆÝ˜v sÑ+Ô+ˆ
Ø×!Ò! *Ñ-Ô-Ð-Ð-ÝÐ! 3Ñ'Ô'Ð'r   c                 óH  — t          | ¦  «        }|dk    rt          d¦  «        ‚t          ||¦  «        }| |         }|| k     s||k    rt          d|› d|› d|› �¦  «        ‚|dk     r||z  }g }t          |¦  «        D ]#}||k    r|                     | |         ¦  «         Œ$|S )Nr   z)Cannot select from a 0-dimensional tensorzIndex z  is out of bounds for dimension z with size )r   r   rX   r   r   )r%   r>   r«   r   r?   r&   r   s          r   ÚselectrÝ   �  sÐ   € Ýˆt‰9Œ9€DØˆq‚y€yÝÐHÑIÔIÐIÝ
˜˜dÑ
#Ô
#€CØ�Œ9€DØ�ˆu‚}€}˜ š˜ÝØR�UÐRÐR¸CÐRÐRÈDÐRÐRñ
ô 
ð 	
ð ˆq‚y€yØ�‰ˆØ€CÝ�4‰[Œ[ð  ð  ˆØ�Š8ˆ8Ø�JŠJ�t˜A”wÑÔÐøØ€Jr   Útensor1Útensor2c                 ó  — t          | ¦  «        }t          |¦  «        }|dk    r|dk    rt          | |¦  «        S |dk    r|dk    rt          | |¦  «        S |dk    r2|dk    r,t          t	          t          | d¦  «        |¦  «        d¦  «        S |dk    r|dk    rt	          | |¦  «        S |dk    rÌ|dk    rÆ|dk    r| d         nd}g }t          |dz
  ¦  «        D ]}|                     | |         ¦  «         Œ|d         }g }t          |dz
  ¦  «        D ]}|                     ||         ¦  «         Œt          ||¦  «        }	|	}
|dk    r|
                     |¦  «         |dk    r|
                     |¦  «         |
S t          d¦  «        ‚)Nr
   r(   r   rˆ   r;   z/both arguments to matmul need to be at least 1D)
r   r™   rœ   r¥   r–   r    r   r   r   r   )rÞ   rß   Údim_tensor1Údim_tensor2ÚnÚbatch_tensor1r   ÚpÚbatch_tensor2Úexpand_batch_portionÚoutput_shapes              r   Úmatmulré   ¢  sÓ  € Ý�g‘,”,€KÝ�g‘,”,€KØ�aÒÐ˜K¨1Ò,Ð,Ý�7˜GÑ$Ô$Ð$Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý�'˜7Ñ#Ô#Ð#Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý•r�) G¨QÑ/Ô/°Ñ9Ô9¸1Ñ=Ô=Ð=Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý�'˜7Ñ#Ô#Ð#Ø	˜Ò	Ð	˜k¨QÒ.Ð.ð '¨š?˜?ˆG�BŒKˆK°ˆØ#%ˆå�{ Q‘Ñ'Ô'ð 	-ð 	-ˆAØ× Ò  ¨¤Ñ,Ô,Ð,Ð,Ø�BŒKˆØ#%ˆå�{ Q‘Ñ'Ô'ð 	-ð 	-ˆAØ× Ò  ¨¤Ñ,Ô,Ð,Ð,õ  )¨¸ÑFÔFÐð ,ˆØ˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"à˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"àÐåÐNÑOÔOÐOr   c                 óÖ   — t          | ¦  «        dk    rt          dt          | ¦  «        › �¦  «        ‚t          | ¦  «        }|dk    rg }|S |dk    r	| d         gS | d         | d         gS )Nr(   z1Expected tensor to have <= 2 dimensions, but got r   r
   r€   )r%   Úself_lenr&   s      r   Útrì   Ë  s|   € Ý
ˆ4�y„y�1‚}€}ÝØKÅÀDÁ	Ä	ÐKÐKñ
ô 
ð 	
õ �4‰yŒy€HØ�1‚}€}ØˆØˆ
Ø	�QŠˆØ�Q”ˆyÐà�Q”˜˜aœÐ!Ð!r   Údim0Údim1c                 ót  — t          | ¦  «        }t          ||¦  «        }t          ||¦  «        }||k    rt          | ¦  «        S g }t          |¦  «        D ]a}||k    r|                     | |         ¦  «         Œ$||k    r|                     | |         ¦  «         ŒF|                     | |         ¦  «         Œb|S r   )r   rX   r0   r   r   )r%   rí   rî   Úndimsr&   r   s         r   Ú	transposerñ   Ú  s¼   € Ý�‰IŒI€EÝ˜$ Ñ&Ô&€DÝ˜$ Ñ&Ô&€DØˆt‚|€|Ý�T‰{Œ{ÐØ€CÝ�5‰\Œ\ð  ð  ˆØ�Š9ˆ9Ø�JŠJ�t˜D”zÑ"Ô"Ð"Ð"Ø�$ŠYˆYØ�JŠJ�t˜D”zÑ"Ô"Ð"Ð"à�JŠJ�t˜A”wÑÔÐÐØ€Jr   Úbiasc                 ó–   — t          | t          |¦  «        ¦  «        }|�)t          ||¦  «        |k    rt          d|› d|› �¦  «        ‚|S )NzBias shape z& is not broadcastable to output shape )ré   rì   r   r   )rq   r°   rò   r&   s       r   Úlinearrô   ë  s^   € Ý
��˜&™	œ	Ñ
"Ô
"€CØÐÝ�T˜3ÑÔ 3Ò&Ð&Ý ØO˜dÐOÐOÈ#ÐOÐOñô ð ð €Jr   Úmat1ÚbetaÚalphac                 ó>   — t          | t          ||¦  «        ¦  «        S r   )r   r–   )r%   rõ   r’   rö   r÷   s        r   Úaddmmrù   õ  s   € Ý�T�2˜d D™>œ>Ñ*Ô*Ð*r   Úarrayc                 ó$   — d}| D ]
}|dk     rd}Œ|S )NFr   TrM   )rú   Únon_negativeÚvals      r   Úcheck_non_negativerþ   ù  s+   € à€LØð  ð  ˆØ�Š7ˆ7ØˆLøØÐr   Úweight_sizesÚgroupsc           	      ó²  — t          | ¦  «        }t          |¦  «        }t          |¦  «        rt          d|› �¦  «        ‚t          |¦  «        rt          d|› �¦  «        ‚||k    rt          d|› d|› d�¦  «        ‚|d         |k     rt          d|d         › d|› d�¦  «        ‚|d         |z  dk    rt          d|d         › d	|› d�¦  «        ‚| d
         |d
         |z  k    r%t          d| d
         › d|d
         |z  › d�¦  «        ‚|�@t          |¦  «        d
k    r|d         |d         k    st          d|d         › d|› �¦  «        ‚t          d|¦  «        D ]z}	| |	         d||	dz
           z  z   ||	dz
           ||	         d
z
  z  d
z   k     rEt          d| |	         d||	dz
           z  z   › d||	dz
           ||	         d
z
  z  d
z   › d|	› �¦  «        ‚Œ{d S )Nz"Padding must be non-negative, got z!Stride must be non-negative, got zExpected weight_dim (z) == k (r:   r   zExpected weight_sizes[0] (z) >= groups (z) to be divisible by groups (r
   zExpected input[1] (z) == weight_sizes[1] * groups (zFExpected bias to be None or have shape [1] with value weight_sizes[0]=rÐ   r(   zCalculated padded input size (z)) is smaller than effective kernel size (z) at dimension )r   rþ   r   r   )
rq   rÿ   rò   rh   r„   ri   r   ÚkÚ
weight_dimr   s
             r   Úcheck_shape_forwardr    s¼  € õ 	ˆE‰
Œ
€AÝ�\Ñ"Ô"€Jõ ˜'Ñ"Ô"ð MÝÐKÀ'ÐKÐKÑLÔLÐLÝ˜&Ñ!Ô!ð KÝÐIÀÐIÐIÑJÔJÐJà�Q‚€ÝÐM°ZÐMÐMÈÐMÐMÐMÑNÔNÐNØ�A„˜ÒÐÝØP¨°a¬ÐPÐPÀvÐPÐPÐPñ
ô 
ð 	
ð 	�QŒ˜&Ñ  QÒ&Ð&Ýð!¨°a¬ð !ð !Øð!ð !ð !ñ
ô 
ð 	
ð
 ˆQ„x�< ”? VÑ+Ò+Ð+Ýð, %¨¤(ð ,ð ,Ø˜Q” &Ñ(ð,ð ,ð ,ñ
ô 
ð 	
ð Ð¥ T¡¤¨a¢ °D¸´G¸|ÈA¼Ò4NÐ4NÝð=Ø+¨Aœð=ð =Ø6:ð=ð =ñ
ô 
ð 	
õ
 �1�a‰[Œ[ð ð ˆØ�!ŒH�q˜7 1 q¡5œ>Ñ)Ñ)Ø�Q˜‘UŒO˜|¨Aœ°Ñ2Ñ3°aÑ7ò
ð 
õ !ðT°°q´¸AÀÈÈAÉÄÑ<NÑ1Nð Tð Tà˜Q ™U”O |°A¤¸Ñ':Ñ;¸aÑ?ðTð TàPQðTð Tñô ð ð
ðð r   Ú
input_sizeÚweight_sizec           	      óÊ  — t          | ||||||¦  «         t          |¦  «        dk    }t          | ¦  «        }g }	d}
d}|	                     | |
         ¦  «         |	                     ||         ¦  «         t          d|¦  «        D ]^}|r||dz
           nd}|||         dz
  z  dz   }|	                     | |         d||dz
           z  z   |z
  ||dz
           z  dz   ¦  «         Œ_|	S )Nr   r(   r
   )r  r   r   r   )r  r  rò   rh   r„   ri   r   Úhas_dilationr>   r�   Úinput_batch_size_dimÚweight_output_channels_dimÚdÚ	dilation_Úkernels                  r   Úconv_output_sizer  8  s!  € õ Ø�K  v¨w¸À&ñô ð õ �x‘=”= 1Ò$€LÝ
ˆj‰/Œ/€CØ€KØÐØ!"ÐØ×Ò�zÐ"6Ô7Ñ8Ô8Ð8Ø×Ò�{Ð#=Ô>Ñ?Ô?Ð?å�1�c‰]Œ]ð 
ð 
ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø˜k¨!œn¨qÑ0Ñ1°AÑ5ˆØ×ÒØ˜Œ]˜a '¨!¨a©%¤.Ñ0Ñ1°FÑ:¸vÀaÈ!Áe¼}ÑLÈqÑPñ	
ô 	
ð 	
ð 	
ð Ðr   c           	      óø   — t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          | ||||||¦  «        S )Nr)   z#Expected 3D weight for conv1d, got r¶   z"Expected 3D input for conv1d, got ©r   r   r  ©rq   r°   rò   rh   r„   ri   r   s          r   Úconv1dr  V  ó~   € õ ˆ6�{„{�aÒÐÝÐQÅ3ÀvÁ;Ä;ÐQÐQÐQÑRÔRÐRÝ
ˆ5�z„z�Q‚€ÝÐOÅ#ÀeÁ*Ä*ÐOÐOÐOÑPÔPÐPÝ˜E 6¨4°¸À(ÈFÑSÔSÐSr   c           	      óø   — t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          | ||||||¦  «        S )Nr*   z#Expected 4D weight for conv2d, got r¶   z"Expected 4D input for conv2d, got r  r  s          r   Úconv2dr  f  r  r   Úgrad_outputÚbiasesc                 óN   — t          |¦  «        t          |¦  «        | d         gfS rL   r2   )r  rq   r°   r  s       r   Úconv_backwardsr  v  s$   € õ �‰<Œ<�˜v™œ¨°Q¬Ð(8Ð8Ð8r   r
   Úoutput_paddingc                 óî  — |€ddg}|€ddg}|€ddg}|€ddg}t          |¦  «        dk    }t          | ¦  «        }	g }
d}d}|
                     | |         ¦  «         |
                     ||         |z  ¦  «         t          d|	¦  «        D ]j}|r||dz
           nd}|||         dz
  z  }|
                     | |         dz
  ||dz
           z  d||dz
           z  z
  |z   ||dz
           z   dz   ¦  «         Œk|
S )Nr
   r   r(   ©r   r   r   )rq   r°   rò   rh   r„   r  r   ri   r  r>   r�   r	  r
  r  r  r  s                   r   Úconv_transpose2d_inputr  €  sY  € ð €~Ø�Q�ˆØ€Ø�a�&ˆØÐØ˜Q˜ˆØÐØ�q�6ˆÝ�x‘=”= 1Ò$€LÝ
ˆe‰*Œ*€CØ€KØÐØ!"ÐØ×Ò�uÐ1Ô2Ñ3Ô3Ð3Ø×Ò�vÐ8Ô9¸FÑBÑCÔCÐCå�1�c‰]Œ]ð 	
ð 	
ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø˜f Qœi¨!™mÑ,ˆØ×ÒØ�1ŒX˜‰\˜V A¨¡Eœ]Ñ*Ø�'˜!˜a™%”.Ñ ñ!àñð ˜Q ™UÔ#ñ$ð ñ	ñ	
ô 	
ð 	
ð 	
ð Ðr   Ú
transposedc	                 óÔ  — t          |¦  «        dk    }	t          |¦  «        dk    }
t          | ¦  «        }g }d}|rdnd}|                     | |         ¦  «         |r|                     ||         |z  ¦  «         n|                     ||         ¦  «         t          d|¦  «        D ]À}|	r||dz
           nd}|
r||dz
           nd}|rQ|||         dz
  z  }|                     | |         dz
  ||dz
           z  d||dz
           z  z
  |z   |z   dz   ¦  «         Œs|||         dz
  z  dz   }|                     | |         d||dz
           z  z   |z
  ||dz
           z  dz   ¦  «         ŒÁ|S )Nr   r
   r(   r  )rq   r°   rò   rh   r„   ri   r  r  r   r  Úhas_output_paddingr>   r�   r	  r
  r  r  Úoutput_padding_r  s                      r   Úconv_forwardsr"  §  sÝ  € õ �x‘=”= 1Ò$€LÝ˜^Ñ,Ô,¨qÒ0ÐÝ
ˆe‰*Œ*€CØ€KØÐØ&0Ð!7  °aÐØ×Ò�uÐ1Ô2Ñ3Ô3Ð3Øð ?Ø×Ò˜6Ð"<Ô=ÀÑFÑGÔGÐGÐGà×Ò˜6Ð"<Ô=Ñ>Ô>Ð>å�1�c‰]Œ]ð ð ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø3EÐL˜.¨¨Q©Ô/Ð/È1ˆØð 	Ø &¨¤)¨a¡-Ñ0ˆFØ×ÒØ�q”˜A‘ ¨¨A©¤Ñ.Ø�g˜a !™e”nÑ$ñ%àñð "ñ"ð ñ	ñô ð ð ð  &¨¤)¨a¡-Ñ0°1Ñ4ˆFØ×ÒØ�q”˜Q ¨¨Q©¤Ñ/Ñ0°6Ñ9¸fÀQÈÁU¼mÑKÈaÑOñô ð ð ð Ðr   Ú	benchmarkÚdeterministicÚcudnn_enabledÚ
allow_tf32c                 ó0   — t          | ||||||||¦	  «	        S r   )r"  )rq   r°   rò   rh   r„   ri   r  r  r   r#  r$  r%  r&  s                r   Ú_conv_forwardsr(  Ò  s1   € õ ØØØØØØØØØñ
ô 
ð 
r   Úrunning_meanÚrunning_varÚtrainingÚmomentumÚepsc	                 ó>   — g }	| D ]}
|	                      |
¦  «         Œ|	S r   r/   )rq   r°   rò   r)  r*  r+  r,  r-  r%  r&   r,   s              r   Ú
batch_normr/  î  s2   € ð €CØð ð ˆØ�
Š
�4ÑÔÐÐØ€Jr   c           	      óø   — t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          | ||||||¦  «        S )Né   z#Expected 5D weight for conv3d, got r¶   z"Expected 5D input for conv3d, got r  r  s          r   Úconv3dr2  ÿ  r  r   TÚdim_post_exprÚwrap_scalarc           	      ó¨   — |dk    r|st          d¦  «        ‚d}| }|dz
  }| |k     s| |k    rt          d| › d|› d|› d�¦  «        ‚| dk     r| |z  } | S )Nr   z7Expected wrap_scalar to be True when dim_post_expr <= 0r
   z
Dimension z( out of range (expected to be in range [z, z]))r   )r>   r3  r4  Úminr   s        r   rX   rX     s�   € Ø˜ÒÐØð 	Ý ØIñô ð ð ˆØˆ.€CØ
˜!Ñ
€CØ
ˆS‚y€y�C˜#’I�IÝØT˜ÐTÐTÀcÐTÐTÈSÐTÐTÐTñ
ô 
ð 	
ð ˆQ‚w€wØˆ}ÑˆØ€Jr   c                 ó
   — g }|S r   rM   )rq   r&   s     r   Úzero_dim_tensorr8  !  s   € Ø€CØ€Jr   c                 ó   — d}| D ]}||z  }Œ|S rL   rM   )r�   r&   r,   s      r   r­   r­   &  s&   € Ø
€CØð ð ˆØ�D‰jˆˆØ€Jr   Úinp1Úinp2Úinp3c                 óx   — | dk     rt          d| › d�¦  «        ‚t          t          j        | ¦  «        ¦  «        gS )Nr   úExpected end (ú) >= 0©r   r�   ÚmathÚceil)r»   rB   r:  r;  r<  s        r   Ú
arange_endrC  -  s>   € Ø
ˆQ‚w€wÝÐ9¨cÐ9Ð9Ð9Ñ:Ô:Ð:Ý•”	˜#‘”ÑÔÐ Ð r   c                 ó¶   — |dk     rt          d|› d�¦  «        ‚|| k     rt          d|› d| › d�¦  «        ‚t          t          j        || z
  ¦  «        ¦  «        gS )Nr   r>  r?  ú) >= start (r:   r@  )rº   r»   rB   r:  r;  r<  s         r   Úarange_startrF  3  sq   € ð ˆQ‚w€wÝÐ9¨cÐ9Ð9Ð9Ñ:Ô:Ð:Ø
ˆU‚{€{ÝÐG¨cÐGÐG¸uÐGÐGÐGÑHÔHÐHÝ•”	˜# ™+Ñ&Ô&Ñ'Ô'Ð(Ð(r   c                 óú   — |dk    rt          d¦  «        ‚|dk     r| |k     rt          d| › d|› d�¦  «        ‚n|| k     rt          d|› d| › d�¦  «        ‚t          t          j        || z
  |z  ¦  «        ¦  «        gS )	Nr   zstep must not be zerozExpected start (z
) >= end (z) when step < 0r>  rE  z) when step > 0r@  )rº   r»   r¼   rB   r:  r;  r<  s          r   Úarange_start_steprH  =  s´   € ð ˆq‚y€yÝÐ4Ñ5Ô5Ð5Øˆa‚x€xØ�3Š;ˆ;Ý ØH 5ÐHÐH°CÐHÐHÐHñô ð ð ð
 �Š;ˆ;Ý ØH ÐHÐH°%ÐHÐHÐHñô ð õ •”	˜3 ™;¨$Ñ.Ñ/Ô/Ñ0Ô0Ð1Ð1r   c                 ó  — t          | ¦  «        t          |¦  «        k    r0t          dt          | ¦  «        › dt          |¦  «        › d�¦  «        ‚t          |¦  «        }g }g }t          |¦  «        D ]H}t          ||         |¦  «        }|                     |¦  «         |                     | |         ¦  «         ŒIt          d|¦  «        D ]?}t          |¦  «        D ]-}||         ||         k    rt          d||         › d�¦  «        ‚Œ.Œ@|S )NúExpected len(input) (z) == len(dims) (r:   r
   zRepeated dimension z in permute dimensions)r   r   r   rX   r   )rq   rY   r   Ú	seen_dimsÚnewSizesr   r>   Újs           r   ÚpermuterN  O  s-  € Ý
ˆ5�z„z•S˜‘Y”YÒÐÝØL¥C¨¡J¤JÐLÐLÅÀDÁ	Ä	ÐLÐLÐLñ
ô 
ð 	
õ ˆt‰9Œ9€DØ€IØ€HÝ�4‰[Œ[ð $ð $ˆÝ˜T !œW dÑ+Ô+ˆØ×Ò˜ÑÔÐØ�Š˜˜cœ
Ñ#Ô#Ð#Ð#Ý�1�d‰^Œ^ð ð ˆÝ�q‘”ð 	ð 	ˆAØ˜Œ|˜y¨œ|Ò+Ð+Ý$ØN¨)°A¬,ÐNÐNÐNñô ð ð ,ð	ð
 €Or   ÚsourceÚdestinationc                 óN  — t          | ¦  «        }|dk    r| S g }g }t          t          |¦  «        ¦  «        D ]T}|                     t          ||         |¦  «        ¦  «         |                     t          ||         |¦  «        ¦  «         ŒUd„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         }	t          t          |¦  «        ¦  «        D ])}||         |||         <   d|||         <   d|	||         <   Œ*g }
g }|D ]}|dk    r|
                     |¦  «         Œ|	D ]}|dk    r|                     |¦  «         Œ|t          |¦  «        z
  }t          |¦  «        D ]}|
|         |||         <   Œt	          | |¦  «        S )Nr
   c                 ó   — g | ]}d ‘ŒS ©r;   rM   ©Ú.0r   s     r   ú
<listcomp>zmovedim.<locals>.<listcomp>m  s   € Ð)Ð)Ð)�AˆRÐ)Ð)Ð)r   c                 ó   — g | ]}|‘ŒS rM   rM   rT  s     r   rV  zmovedim.<locals>.<listcomp>n  ó   € Ð+Ð+Ð+�a�Ð+Ð+Ð+r   c                 ó   — g | ]}|‘ŒS rM   rM   rT  s     r   rV  zmovedim.<locals>.<listcomp>o  rX  r   r;   )r   r   r   rX   rN  )r%   rO  rP  Úself_dimÚnormalized_srcÚnormalized_dstr   ÚorderÚsrc_dimsÚdst_dimsÚsource_dimsÚdestination_dimsÚeleÚrest_dims                 r   Úmovedimrd  d  sÙ  € Ý�4‰yŒy€HØ�1‚}€}ØˆØ "€NØ "€NÝ•3�v‘;”;ÑÔð Hð HˆØ×Ò�n¨V°A¬Y¸ÑAÔAÑBÔBÐBØ×Ò�n¨[¸¬^¸XÑFÔFÑGÔGÐGÐGØ)Ð)�˜x™œÐ)Ñ)Ô)€EØ+Ð+�5 ™?œ?Ð+Ñ+Ô+€HØ+Ð+�5 ™?œ?Ð+Ñ+Ô+€Hå•3�v‘;”;ÑÔð )ð )ˆØ#1°!Ô#4ˆˆn˜QÔÑ Ø&(ˆ� Ô"Ñ#Ø&(ˆ� Ô"Ñ#Ð#à€KØ"$ÐØð $ð $ˆØ�"Š9ˆ9Ø×Ò˜sÑ#Ô#Ð#øØð )ð )ˆØ�"Š9ˆ9Ø×#Ò# CÑ(Ô(Ð(øà�#˜f™+œ+Ñ%€HÝ�8‰_Œ_ð 4ð 4ˆØ%0°¤^ˆÐ˜qÔ!Ñ"Ð"Ý�4˜ÑÔÐr   Ú	start_dimÚend_dimc                 óp  — t          |t          | ¦  «        ¦  «        }t          |t          | ¦  «        ¦  «        }||k    rt          d|› d|› d�¦  «        ‚t          | ¦  «        dk    rdgS ||k    rg }| D ]}|                     |¦  «         Œ|S d}t	          ||dz   ¦  «        D ]}|| |         z  }Œg }t	          |¦  «        D ]}|                     | |         ¦  «         Œ|                     |¦  «         t	          |dz   t          | ¦  «        ¦  «        D ]}|                     | |         ¦  «         Œ|S )NzExpected start_dim (z) <= end_dim (r:   r   r
   )rX   r   r   r   r   )rq   re  rf  r&   r,   Úslice_numelr   r+   s           r   Úflattenri  …  sd  € Ý˜y­#¨e©*¬*Ñ5Ô5€IÝ˜W¥c¨%¡j¤jÑ1Ô1€GØ�7ÒÐÝÐW°IÐWÐWÈWÐWÐWÐWÑXÔXÐXÝ
ˆ5�z„z�Q‚€Øˆsˆ
Ø�GÒÐàˆØð 	ð 	ˆDØ�JŠJ�tÑÔÐÐØˆ
Ø€KÝ�9˜g¨™kÑ*Ô*ð  ð  ˆØ�u˜Q”xÑˆˆð €EÝ�9ÑÔð ð ˆØ�Š�U˜1”XÑÔÐÐØ	‡L‚L�ÑÔÐÝ�7˜Q‘;¥ E¡
¤
Ñ+Ô+ð ð ˆØ�Š�U˜1”XÑÔÐÐØ€Lr   c                 ó$   — dt          | ¦  «        gS ©Nr   ©r   ©rq   s    r   Únonzero_lower_boundrn     s   € Ø�s�5‰zŒzˆ?Ðr   c                 ó>   — t          | ¦  «        t          | ¦  «        gS r   rÊ   rm  s    r   Únonzero_upper_boundrp  ¤  s   € Ý�%‰LŒL�#˜e™*œ*Ð%Ð%r   Úkeepdimc                 óÔ   — t          |t          | ¦  «        ¦  «        }g }t          | ¦  «        D ]8\  }}||k    r|r|                     d¦  «         Œ#|                     |¦  «         Œ9|S rL   )rX   r   Ú	enumerater   )r%   r>   rq  r&   r   rZ  s         r   Ú_reduce_along_dimrt  ¨  sp   € Ý
˜�c $™iœiÑ
(Ô
(€CØ€CÝ  ‘”ð !ð !‰ˆˆ8Ø�Š8ˆ8Øð Ø—
’
˜1‘”�øà�JŠJ�xÑ Ô Ð Ð Ø€Jr   c                 ó,   — |€g S t          | ||¦  «        S r   )rt  )r%   r>   rq  s      r   Úargmaxrv  ´  s    € ð €{Øˆ	Ý˜T 3¨Ñ0Ô0Ð0r   c                 óÈ  — t          | ¦  «        dk    r t          dt          | ¦  «        › d�¦  «        ‚t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚| d         |d         k    r!t          d| d         › d|d         › �¦  «        ‚| d         |d         k    r!t          d	| d         › d
|d         › �¦  «        ‚| d         | d         |d         gS )Nr)   z"bmm only supports 3D tensors, got r¶   r   z%mismatching batch dimension: self[0]=r”   r(   r
   z+mismatching contracting dimension: self[2]=z
, mat2[1]=r€   r•   s     r   Úbmmrx  ¼  sþ   € Ý
ˆ4�y„y�A‚~€~ÝÐNÅ#ÀdÁ)Ä)ÐNÐNÐNÑOÔOÐOÝ
ˆ4�y„y�A‚~€~ÝÐNÅ#ÀdÁ)Ä)ÐNÐNÐNÑOÔOÐOØˆA„w�$�q”'ÒÐÝØP°D¸´GÐPÐPÀtÈAÄwÐPÐPñ
ô 
ð 	
ð ˆA„w�$�q”'ÒÐÝØV¸$¸q¼'ÐVÐVÈTÐRSÌWÐVÐVñ
ô 
ð 	
ð �ŒG�T˜!”W˜d 1œgÐ&Ð&r   c                 ó"   — t          | ¦  «        gS r   rl  r3   s    r   Ú_shape_as_tensorrz  Ì  s   € Ý�‰IŒIˆ;Ðr   r  c           	      ó²   — t          | ¦  «        dk    rg }n>|| |         k    rt          d|› d|› d| |         › �¦  «        ‚t          | ¦  «        }|||<   ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r   r0   )r%   r  r>   r©   s       r   Útopkr|  Ð  sv   € Ý
ˆ4�y„y�A‚~€~Øˆˆàˆt�CŒyŠ=ˆ=Ý ØM�aÐMÐM°CÐMÐMÀ$ÀsÄ)ÐMÐMñô ð õ �t‘”ˆØˆˆs‰Ø�6ˆ>Ðr   ÚtargetÚ	reductionc                 óê  — t          | ¦  «        }t          |¦  «        }d|cxk     rdk    sn t          d|› �¦  «        ‚|dk    rt          d|› �¦  «        ‚|dk    o|dk    }|s3| d         |d         k    s!t          d| d         › d|d         › �¦  «        ‚| d         }g }|�4t          |¦  «        dk    r|d         |k    st          d	|› d
|› �¦  «        ‚|dk    r|dk    r
| d         g}	n|}	|	|fS )Nr   r(   z-Expected 0 < self_dim <= 2, but got self_dim=r
   z"Expected target_dim <= 1, but got zBatch size mismatch: self[0]=z, target[0]=r;   z:Expected weight to be None or have shape [n_classes], got z with n_classes=r€   )
r%   r}  r°   r~  rZ  Ú
target_dimÚno_batch_dimÚ	n_classesÚscalar_shapeÚreduction_shapes
             r   Únll_loss_forwardr…  Ý  s^  € õ �4‰yŒy€HÝ�V‘”€JØ�ÐÐÒÐ˜AÒÐÐÐÝÐWÈXÐWÐWÑXÔXÐXØ�A‚~€~ÝÐNÀ*ÐNÐNÑOÔOÐOØ˜q’=Ð4 Z°1¢_€LØð 
˜T !œW¨¨q¬	Ò1Ð1ÝØL¨D°¬GÐLÐLÀÈÄÐLÐLñ
ô 
ð 	
ð �R”€IØ €LØÐ¥3 v¡;¤;°!Ò#3Ð#3¸¸q¼	ÀYÒ8NÐ8NÝð7Øð7ð 7Ø+4ð7ð 7ñ
ô 
ð 	
ð �A‚~€~˜( aš-˜-Ø œ7˜)ˆˆà&ˆØ˜LÐ(Ð(r   Únormalized_shapec                 ó˜  — g }t          | ¦  «        t          |¦  «        z
  }|dk     r0t          dt          | ¦  «        › dt          |¦  «        › d�¦  «        ‚t          |¦  «        D ]}|                     | |         ¦  «         Œt          |t          | ¦  «        ¦  «        D ]}|                     d¦  «         Œt	          | ¦  «        ||fS )Nr   rJ  z) >= len(normalized_shape) (r:   r
   )r   r   r   r   r0   )rq   r†  r„  Únum_unreduced_dimensionsr   s        r   Únative_layer_normr‰  ú  sñ   € ð "$€OÝ" 5™zœz­CÐ0@Ñ,AÔ,AÑAÐØ !Ò#Ð#Ýð)¥C¨¡J¤Jð )ð )ÝÐ$Ñ%Ô%ð)ð )ð )ñ
ô 
ð 	
õ Ð+Ñ,Ô,ð )ð )ˆØ×Ò˜u QœxÑ(Ô(Ð(Ð(ÝÐ+­S°©Z¬ZÑ8Ô8ð "ð "ˆØ×Ò˜qÑ!Ô!Ð!Ð!Ý�‰<Œ<˜¨/Ð9Ð9r   c                 óD   — |r
| d         g}ndg}t          | ¦  «        ||fS rl   r2   )rq   r°   rò   r)  r*  r+  Ú_sizes          r   Únative_batch_normrŒ    s3   € ð ð Ø�q”�
ˆˆà�ˆÝ�‰<Œ<˜ Ð%Ð%r   c                 ó<   — | d         g}t          | ¦  «        ||dgfS rl   r2   )rq   r°   rò   r)  r*  r‹  s         r   Ú_batch_norm_with_updaterŽ    s&   € ð �1ŒXˆJ€EÝ�‰<Œ<˜ ¨ sÐ*Ð*r   éœÿÿÿç        Úignore_indexÚlabel_smoothingc                 ó6   — t          | |||¦  «        d         }|S rk  )r…  )r%   r}  r°   r~  r‘  r’  Úresult_shapes          r   Úcross_entropy_lossr•  %  s"   € õ $ D¨&°&¸)ÑDÔDÀQÔG€LØÐr   Úshape_compute_graph_mappingÚbounded_compute_graph_mappingÚscript_func_mapÚfuncc                 ó|  — | t           vr§t          j                             | ¦  «        }t          j                             |j        ¦  «         t          d¦  «        D ]J}t          j                             |j        ¦  «         t          j         	                    |j        ¦  «         ŒK|t           | <   t           |          S )Nr(   )
r˜  ÚtorchÚjitÚscriptÚ_CÚ_jit_pass_inlineÚgraphr   Ú_jit_pass_peepholeÚ_jit_pass_constant_propagation)r™  Úscripted_funcÚ_s      r   Úprocess_funcr¥  J  sœ   € Ø•?Ð"Ð"Ýœ	×(Ò(¨Ñ.Ô.ˆåŒ×!Ò! -Ô"5Ñ6Ô6Ð6å�q‘”ð 	Ið 	IˆAÝŒH×'Ò'¨Ô(;Ñ<Ô<Ð<ÝŒH×3Ò3°MÔ4GÑHÔHÐHÐHà -�˜ÑÝ˜4Ô Ð r   Úoperator_schemac                 ó4   — t          |¦  «        t          | <   d S r   )r¥  r–  )r¦  r™  s     r   Úadd_shape_compute_mappingr¨  X  s   € õ 4@ÀÑ3EÔ3EÕ Ñ0Ð0Ð0r   Úlower_bound_funcÚupper_bound_funcc                 óV   — t          |¦  «        t          |¦  «        f}|t          | <   d S r   )r¥  r—  )r¦  r©  rª  Úfnss       r   Úadd_bounded_compute_mappingr­  ^  s1   € õ Ð(Ñ)Ô)­<Ð8HÑ+IÔ+IÐ
J€CØ58Õ! /Ñ2Ð2Ð2r   z^aten::contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a)zFaten::rsub.Tensor(Tensor self, Scalar other, Scalar alpha=1) -> Tensorz:aten::dropout(Tensor input, float p, bool train) -> TensorzDaten::adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensorz,prim::NumToTensor.Scalar(Scalar a) -> Tensorz(prim::NumToTensor.bool(bool a) -> Tensorzuaten::zeros(int[] size, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z{aten::to.dtype(Tensor(a) self, int dtype, bool non_blocking=False, bool copy=False, int? memory_format=None) -> (Tensor(a))zvaten::arange(Scalar end, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z’aten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz¤aten::arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz*aten::squeeze(Tensor(a) self) -> Tensor(a)z7aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)z:aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)z5aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)zfaten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> Tensor(a)zAaten::select.int(Tensor(a) self, int dim, int index) -> Tensor(a)z@aten::index_select(Tensor self, int dim, Tensor index) -> Tensorz‘aten::layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> TensorzIaten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensorzhaten::_no_grad_embedding_renorm_(Tensor weight, Tensor input, float max_norm, float norm_type) -> Tensorzgaten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)z~aten::embedding(Tensor weight, Tensor indices, int padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensorz,aten::mm(Tensor self, Tensor mat2) -> Tensorz/aten::dot(Tensor self, Tensor tensor) -> Tensorz+aten::mv(Tensor self, Tensor vec) -> Tensorz1aten::matmul(Tensor self, Tensor other) -> TensorzFaten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensorzˆaten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> TensorzŸaten::max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)z$aten::t(Tensor(a) self) -> Tensor(a)zDaten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)zŠaten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> TensorzŠaten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensorz¯aten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> TensorzŠaten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensorzïaten::convolution_backward(Tensor grad_output, Tensor input, Tensor weight, int[]? bias_sizes, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor)z¦aten::convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensorzðaten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensorz³aten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> TensorzVaten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)z0aten::cat(Tensor[] tensors, int dim=0) -> Tensorz2aten::stack(Tensor[] tensors, int dim=0) -> Tensorz6aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)zSaten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)z3aten::view(Tensor(a) self, int[] size) -> Tensor(a)z:aten::expand_as(Tensor(a) self, Tensor other) -> Tensor(a)zMaten::expand(Tensor(a) self, int[] size, *, bool implicit=False) -> Tensor(a)zaaten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensorzhaten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> TensorzZaten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)z<aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensorz;aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensorz^aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensorzbaten::upsample_nearest2d.vec(Tensor input, int[]? output_size, float[]? scale_factors) -> (Tensor)z_aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensorzraten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensorz'aten::dequantize(Tensor self) -> TensorzNquantized::add(Tensor qa, Tensor qb, float scale, int zero_point) -> Tensor qczFaten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensorz-aten::bmm(Tensor self, Tensor mat2) -> Tensorz-aten::_shape_as_tensor(Tensor self) -> Tensorzraten::topk(Tensor self, int k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)z‹aten::nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)z‚aten::native_layer_norm(Tensor input, int[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)z´aten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z¹aten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zÂaten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z³_batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor)zœaten::cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> TensorzCaten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> TensorzMaten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> TensorzQaten::add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)z&aten::nonzero(Tensor self) -> (Tensor))r;   FF)NNNNr
   N)T)NFrS  )Nr
   r�  r�  )grA  Úcollections.abcr   Útypingr   r   r   r�   ÚfloatÚnumberr›  rW   r   r"   r$   r-   r0   r4   r7   rA   rD   rJ   rE   rO   ÚboolrR   r]   r_   rc   rn   rp   r‚   rŠ   rŒ   r‘   r–   r™   rœ   r    r¢   r¥   rª   r¯   r·   r¹   rÁ   rÄ   rÈ   rË   rÓ   r×   rÛ   rÝ   ré   rì   rñ   rô   rù   rþ   r  r  r  r  r  r  r"  r(  r/  r2  rX   r8  r­   rC  rF  rH  rN  rd  ri  rn  rp  rt  rv  rx  rz  Útupler|  r…  r‰  rŒ  rŽ  r•  rž  ÚScriptFunctionÚScriptFnr–  ÚdictÚstrÚ__annotations__r—  r˜  r¥  r¨  r­  rM   r   r   ú<module>r¹     s¦  ðà €€€€Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð 
ˆs�EˆzÔ	€ð$ €€€ð��c”ð ˜t Cœyð ð ð ð ð0)�t˜C”yð ) T¨#¤Yð )°4¸´9ð )ð )ð )ð )ð˜4 œ9ð ¨ð °°c´ð ð ð ð ð˜d 3œið ¨d°3¬ið ð ð ð ð&��S”	ð ð ð ð ð��S”	ð ð ð ð ð˜˜cœð  t¨C¤yð ð ð ð ð(��c”ð  4¨¤9ð ð ð ð ð:˜D œIð ¨d°3¬ið ¸sð ð ð ð ð˜4 œ9ð ¨Sð °T¸#´Yð ð ð ð ð.��c”ð ð ð ð ð/ˆt�CŒyð /  c¤ð /ð /ð /ð /ð LQð ð ð ˜$˜sœ)ð ¨D°¬Ið ÀDð ð ð ð ðØ
ˆsŒ)ðØ'¨¨S¬	Ô2ðØ>BðØHKðð ð ð ð,�$�s”)ð  #ð °ð ð ð ð ðˆsð �sð ð ð ð ðØðàðð ðð ð	ð
 ðð ðð ðð ð ð ð6Øðàðð ðð ð	ð
 ðð ðð ð ð ð-
Ø�Œ9ð-
àð-
ð 	ð-
ð 	ð	-
ð
 	ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð ð-
ð -
ð -
ð -
ð`H@Ø�Œ9ðH@à�c”ðH@ð �ŒIðH@ð �#ŒYð	H@ð
 �3ŒiðH@ð ðH@ð H@ð H@ð H@ðV	Ø�Œ9ð	à�c”ð	ð �ŒIð	ð �#ŒYð		ð
 �3Œið	ð ð	ð 	ð 	ð 	ð$Ø�Œ9ð$à˜$˜sœ)Ô$ð$ð ˜D œKÔ(ð$ð $ð $ð $ðN
ˆT�#ŒYð 
˜d 3œið 
ð 
ð 
ð 
ðˆd�3Œið   c¤ð ð ð ð ðˆT�#ŒYð ˜T #œYð ð ð ð ð�$�s”)ð  #ð ð ð ð ð�d˜3”ið ð ð ð ð	��S”	ð 	 ð 	ð 	ð 	ð 	ð�T˜#”Yð  d¨3¤ið ð ð ð ð �t˜C”yð  sð °4¸´9ð ð ð ð ð* Ø$Øñð Ø�ŒIðà�#ŒYðð ðð ð	ð
 ðð ð ð ð ð ð ðØ
ˆsŒ)ðØðØ&.¨s¤mðØ:BÀ3¼-ðØORðð ð ð ð>P 4¨¨S¬	¤?ð Pð Pð Pð Pð˜Sð °°T¸#´Y´ð ð ð ð ð3˜˜Sœ	ð 3ð 3ð 3ð 3ðØ�Œ9ðØ" 3œiðØ47ðØ@Cðð ð ð ð&��d˜3”i”ð  sð ð ð ð ð2(�4˜˜Sœ	”?ð (¨ð (ð (ð (ð (ð��c”ð  ð ¨Sð ð ð ð ð&&P�D˜”Ið &P¨¨S¬	ð &Pð &Pð &Pð &PðR"ˆD�ŒIð "ð "ð "ð "ð�D˜”Ið  Sð °ð ð ð ð ð"�$�s”)ð  T¨#¤Yð °h¸tÀC¼yÔ6Ið ð ð ð ð+��S”	ð +  c¤ð +°$°s´)ð +À3ð +Èsð +ð +ð +ð +ð˜d 3œið ¨Dð ð ð ð ð1Ø�Œ9ð1à�s”)ð1ð �4˜”9Ô
ð1ð �ŒIð	1ð
 �#ŒYð1ð �3Œið1ð ð1ð 1ð 1ð 1ðlØ�S”	ðà�c”ðð �4˜”9Ô
ðð �ŒIð	ð
 �#ŒYðð �3Œiðð ðð ð ð ð<TØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð Tð TØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð Tð 9Ø�c”ð9à�Œ9ð9ð �ŒIð9ð �T˜#”YÔð	9ð 9ð 9ð 9ð !%Ø"&Ø#'Ø*.ØØ$(ñ$ð $Ø�Œ9ð$à�ŒIð$ð �4˜”9Ô
ð$ð �T˜#”YÔð	$ð
 �d˜3”iÔ ð$ð ˜T #œYÔ'ð$ð ð$ð �t˜C”yÔ!ð$ð 
ˆ#„Yð$ð $ð $ð $ðN(Ø�Œ9ð(à�ŒIð(ð �4˜”9Ô
ð(ð �ŒIð	(ð
 �#ŒYð(ð �3Œið(ð ð(ð ˜”Ið(ð ð(ð 
ˆ#„Yð(ð (ð (ð (ðVØ�Œ9ðà�ŒIðð �4˜”9Ô
ðð �ŒIð	ð
 �#ŒYðð �3Œiðð ðð ˜”Iðð ðð ðð ðð ðð ðð 
ˆ#„Yðð ð ð ð8Ø�Œ9ðà�T˜#”YÔðð �4˜”9Ô
ðð ˜4 œ9Ô%ð	ð
 ˜$˜sœ)Ô$ðð ðð ðð 
ðð ðð ð ð ð"TØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð Tñ ð ˜ð ¨Cð ¸dð ð ð ð ð$˜3ð ð ð ð ð
˜$˜sœ)ð ð ð ð ð!�Fð ! #ð !¨Sð !¸ð !À3ð !ð !ð !ð !ð)Øð)Øð)Ø&)ð)Ø14ð)Ø<?ð)ØGJð)ð )ð )ð )ð2Øð2Øð2Ø&,ð2Ø47ð2Ø?Bð2ØJMð2ØUXð2ð 2ð 2ð 2ð$�4˜”9ð  D¨¤Ið ð ð ð ð* �$�s”)ð   T¨#¤Yð  ¸TÀ#¼Yð  È4ÐPSÌ9ð  ð  ð  ð  ðB�4˜”9ð ¨ð °sð ð ð ð ð6˜t Cœyð ð ð ð ð&˜t Cœyð &ð &ð &ð &ð	˜D œIð 	¨Cð 	¸$ð 	ð 	ð 	ð 	ð AFñ1ð 1Ø
ˆsŒ)ð1Ø" 3œ-ð1Ø9=ð1à	ˆ#„Yð1ð 1ð 1ð 1ð'ˆd�3Œið '˜t Cœyð '¨T°#¬Yð 'ð 'ð 'ð 'ð ˜4 œ9ð ¨¨c¬ð ð ð ð ñ
ð 
ˆt�CŒyð 
˜Sð 
 sð 
°E¸$¸s¼)ÀTÈ#ÄYÐ:NÔ4Oð 
ð 
ð 
ð 
ð)Ø
ˆsŒ)ð)Ø! #œYð)Ø08¸¸c¼Ô0Cð)ØPSð)à
ˆ4�Œ9�d˜3”iÐÔ ð)ð )ð )ð )ð::Ø�Œ9ð:Ø(,¨S¬	ð:à
ˆ4�Œ9�d˜3”i  c¤Ð*Ô+ð:ð :ð :ð :ð"&Ø�Œ9ð&à�T˜#”YÔð&ð �4˜”9Ô
ð&ð ˜4 œ9Ô%ð	&ð
 ˜$˜sœ)Ô$ð&ð ð&ð ˆ4�Œ9�d˜3”i  c¤Ð*Ô+ð&ð &ð &ð &ð+Ø�Œ9ð+à�T˜#”YÔð+ð �4˜”9Ô
ð+ð ˜4 œ9Ô%ð	+ð
 ˜$˜sœ)Ô$ð+ð ˆ4�Œ9�d˜3”i  c¤¨D°¬IÐ5Ô6ð+ð +ð +ð +ð #'ØØØ ñ	ð 	Ø
ˆsŒ)ð	à�ŒIð	ð �T˜#”YÔð	ð ð		ð
 ð	ð ð	ð 
ˆ#„Yð	ð 	ð 	ð 	ðð& Œ8Ô"€Ø35Ð ˜T # x -Ô0Ð 5Ð 5Ñ 5ØFHÐ ˜t C¨¨x¸Ð/AÔ)BÐ$BÔCÐ HÐ HÑ HØ,.€��h Ð(Ô)Ð .Ð .Ñ .ð!�xð !ð !ð !ð !ðF¨sð F¸(ð Fð Fð Fð Fð9Øð9Ø,4ð9ØHPð9ð 9ð 9ð 9ð Ð ØdØ	ñô ð ð Ð ØLÈeñô ð ð Ð Ø@À%ñô ð ð Ð ØJØñô ð ð Ð Ø2°Oñô ð ð Ð ÐDÀoÑ VÔ VÐ VØ Ð Ø{Ø	ñô ð ð Ð ð BØ	ñô ð ð Ð Ø|Øñô ð ð Ð ð YØñô ð ð Ð ð kØñô ð ð Ð ÐFÈÑ VÔ VÐ VØ Ð Ø=¸wñô ð ð Ð Ø@À,ñô ð ð Ð Ø;¸Yñô ð ð Ð ØlØ	ñô ð ð Ð ØGÈñô ð ð Ð ØFÈñô ð ð Ð ð9à	ñô ð ð
 Ð ØOÐQVñô ð ð Ð ØnØ	ñô ð ð Ð ØmØ	ñô ð ð Ð ð EØñô ð ð Ð ÐHÈ"Ñ MÔ MÐ MØ Ð ÐKÈSÑ QÔ QÐ QØ Ð ÐGÈÑ LÔ LÐ LØ Ð ÐMÈvÑ VÔ VÐ VØ Ð ØLÈfñô ð ð Ð ð OØñô ð ð Ð ð fØñô ð ð Ð Ð@À!Ñ DÔ DÐ DØ Ð ØJÈIñô ð ð Ð ð QØ
ñô ð ð Ð ð QØ
ñô ð ð Ð ð vØñô ð ð Ð ð QØ
ñô ð ð Ð ð vØñô ð ð Ð ð mØñô ð ð Ð ð wØñô ð ð Ð ð zØñô ð ð Ð Ø\Øñô ð ð Ð ÐLÈcÑ RÔ RÐ RØ Ð ÐNÐPUÑ VÔ VÐ VØ Ð Ø<¸gñô ð ð Ð ØYØñô ð ð Ð ÐOÐQUÑ VÔ VÐ VØ Ð Ø@À&ñô ð ð Ð ØSØñô ð ð Ð ØgØñô ð ð Ð ØnØñô ð ð Ð Ø`Øñô ð ð Ð ØBÀOñô ð ð Ð ØAÀ?ñô ð ð Ð ØdØ	ñô ð ð Ð ØhØñô ð ð Ð ÙeØ	ñô ð ð Ð ÙxØ	ñô ð ð Ð ÑCÀUÑ KÔ KÐ KØ Ð ÙTØñô ð ð Ð ÙLÈfñô ð ð Ð ÑIÈ3Ñ OÔ OÐ OØ Ð Ù3Ð5Eñô ð ð Ð ÙxØñô ð ð Ð ñ RØñô ð ð Ð ñ IØñô ð ð Ð ñ {Øñô ð ð Ð ñ @Øñô ð ð Ð ñ IØñô ð ð Ð ñ zØñô ð ð
 Ð ñ cØñô ð ð Ð ÙIØñô ð ð Ð ÙSØñô ð ð Ð ÙWØñô ð ð Ð Ù,Ð.AÐCVñô ð ð ð r   