ó
    -VðišA ã            -       óP}  • S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKJr  S SKJrJrJr  S SKJrJrJrJr  S S	KJr  S S
KJrJr  S SKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  S SK(J)r)J*r*J+r+J,r,J-r-  S SK.J/r/J0r0  S SK1J2r3  S SK4J5r5J6r6  S SK7J8r9  \	" S5      r:\" S5      r;\Rx                  Rz                  r=\R|                  R                  SSS5      r@\A" S5      u  rBrCrDS rES rFS\\\;\:4   /\\;\:4   4   4S jrGS\!4S jrHS rIS rJ\G" \=R–                  \=R˜                  /5      \-" 5       SSS\Rš                  SS4S  j5       5       rN\G" \=Rž                  R                   \=Rž                  R¢                  /5      \-" 5       S! 5       5       rR\G" \=R¦                  R                   \=R¦                  R¢                  /5      \-" 5       S"S#.S$ j5       5       rS\G" \=R¨                  5      \-" 5       S% 5       5       rT\G" \=Rª                  R                   \=Rª                  R¢                  \=R¬                  R                   \=R¬                  R¢                  /5      \-" S&S'5      S( 5       5       rW\G" \=R°                  R                   \=R°                  R¢                  /5      \-" 5       S) 5       5       rXS* rYGS2S+\S,\Z\[   S-\\4S. jjr]\G" \=R¼                  R                   \=R¼                  R¢                  /5      \-" 5       S/ 5       5       r_Sr`S,\Z\[   4S0 jra\G" \=RÄ                  R                   \=RÄ                  R¢                  /5      \-" 5       S1 5       5       rc\G" \=RÈ                  RÊ                  5      SS2.S3 j5       rf\G" \=RÈ                  R                   5      \RÎ                  SSSS4.S5 j5       rh\G" \=RÒ                  R                   \=RÒ                  R¢                  /5      \-" 5       \RÎ                  SSSS4.S6 j5       5       rj\G" \=RÒ                  RÖ                  \=RÒ                  RØ                  /5      \-" 5       \RÎ                  SSSS4.S7 j5       5       rm\G" \=RÜ                  R                   \=RÜ                  R¢                  /5      \-" 5       SSSSS4.S8 j5       5       ro\G" \=Rà                  R                   \=Rà                  R¢                  /5      \-" 5       S+\S,\Z\[   S9\[S:\[4S; j5       5       rq\G" \=Rä                  R                   5      GS2S< j5       rsS= rt\G" \=Rê                  R                   5      S> 5       rv\G" \=Rî                  5         GS3S?\S@\SA\SB\S-  SC\xS-  SD\Rò                  S-  4SE jj5       rz\G" \=Rö                  5       GS4SF\SG\SH\SD\Rò                  S-  4SI jj5       r|\G" \=Rú                  5      SJSJSSK.S?\SF\SG\SH\SD\Rò                  S-  4
SL jj5       r~\G" \=Rþ                  5             GS5SM\R$                  SN\R$                  SB\S-  SO\S-  SD\Rò                  S-  SP\\SQ\[SR\[SS\[4ST jj5       r€\G" \=GR                  R                   5      SUSV.S+\S,\[SW\SX\R$                  SY\xSZ\\S\4S[ jj5       r‚\G" \=GR                  R                   5      SUSV.S+\S,\[SW\SX\R$                  SY\xSZ\\S\4S\ jj5       r„\-" 5       \G" \=GR
                  R                   5      S] 5       5       r†\G" \=GR                  R                   5      SSSS SSS^.S_\SY\xS`\S-  S'\S-  Sa\S-  Sb\[Sc\\S\4Sd jj5       rˆ\G" \=GR                  R                   \=GR                  GR                  /5      \-" 5       Se 5       5       r‹\G" \=GR                  GR                  5      GS2Sf j5       r�\G" \=GR                  R                   \=GR                  GR                  /5      \-" 5       Sg 5       5       r�\G" \=GR                  GR                  5      GS2Sh j5       r�\G" \=GR"                  R                   5      Si 5       r’\G" \=GR"                  R¢                  5      Sj 5       r“\G" \=GR(                  R                   5      Sk 5       r•\G" \=GR(                  GR,                  5      Sl 5       r—\G" \=GR0                  R                   5      Sm 5       r™\G" \=GR4                  R                   5      SSSSSSn.So j5       r›\G" \=GR8                  R                   5      GS6Sp j5       rœ\G" \=GR:                  R                   5      GS3Sq j5       rž\G" \=GR>                  R                   5      GS6Sr j5       rŸ\G" \=GR@                  R                   5      Ss 5       r¡\G" \=GRD                  GR,                  5      St 5       r£S+\Su\x4Sv jr¤S+\Sw\Sx\x4Sy jr¥ GS7Sz\Su\xS{\\4S| jjr¦GS8Sw\Su\xS}\x4S~ jjr§Sw\S\S€\\Su\x4S� jr¨ GS9Sƒ\xS‚\S?\S„\x4S… jjr©S†\x4S‡ jrª\G" \=GRV                  R                   \=GRV                  GRX                  /5      \-" SˆS‰5      GS:Sw\S†\xS‹\\4SŒ jj5       5       r­\G" \=GR\                  R                   \=GR^                  R¢                  /5      \-" 5       S?\S\4S� j5       5       r°\G" \=GRb                  /5      \-" SˆS‰5      S?\4SŽ j5       5       r²S�\S\4S� jr³\G" \=GRh                  5      \-" 5       S+\Sw\S‘\\S\4S’ j5       5       r´\G" \=GRj                  5      \-" 5       GS2S+\Sw\S‘\\S\4S“ jj5       5       rµ\G" \=GRl                  5      \-" 5       GS2S+\S‘\\S\4S” jj5       5       r¶\G" \=GRn                  5      \-" 5       GS2S+\S‘\\S\4S• jj5       5       r·\G" \=GRp                  R                   5      GS;Sw\S‘\\S–\\4S— jj5       r¸\G" \=GRr                  R                   \=GRr                  R¢                  /5      \-" 5       S?\S˜\S\4S™ j5       5       r¹\G" \=GRt                  R                   5      GS2Sw\S–\\4Sš jj5       r»\G" \=GRx                  R                   \=GRx                  R¢                  /5      \-" S›SœS�5      SSSž.S+\SŸ\\S–\\S\½\\\4   4S  jj5       5       r¾\G" \=GR~                  R                   \=GR~                  R¢                  /5      \-" 5       SS¡.S›\Sœ\S\SŸ\\S\4
S¢ jj5       5       rÀ\G" \=GR‚                  R                   \=GR‚                  R¢                  /5      \-" S£SŠS¤5      SUS¥.Sw\S¦\\S\½\\\4   4S§ jj5       5       rÂ\G" \=GR†                  R                   \=GR†                  R¢                  /5      \-" S¨SœS�5      SUSS©.Sw\S¦\\S–\\S\½\\\4   4Sª jj5       5       rÄ\G" \=GRŠ                  R                   \=GRŠ                  R¢                  /5      \-" 5       SUSS«.S¨\Sœ\S\S€\\S¬\\S\4S­ jj5       5       rÆ\G" \=GRŽ                  5      \-" S£SŠS¤5        GS<S¨\Sœ\S®\\S¯\\S\½\\\4   4
S° jj5       5       rÈS±\xS\½\\\\4   4S² jrÉ\G" \=GR”                  R                   \=GR”                  R¢                  /5      \-" S³S´5      GS=Sw\S±\xS\½\\4   4Sµ jj5       5       rË\G" \=GR˜                  R                   \=GR˜                  GRš                  /5      \-" S¶S·S¨Sœ5      Sw\S\½\\\\4   4S¸ j5       5       rÌ\G" \=GRœ                  R                   5         GS>Sw\S¹\\Sº\\S»\xS-  4S¼ jj5       rÏS½\S¾\S\½\Z\[   \Z\[   4   4S¿ jrÐS½\S¾\Sx\xS-  S\½\\4   4SÀ jrÑS?\SÁ\S\\4SÂ jrÒ\G" \=GR¦                  5      SUSSSSSSÃ.Sw\S\S€\\S–\\S‚\S-  S¨\S-  Sœ\S-  S�\S-  S\½\\\\4   4SÄ jj5       rÓ\G" \=GR¨                  R                   \=GR¨                  R¢                  /5      SUSSSÅ.Sw\S\S‘\\S€\\SÆ\\SÇ\S-  S\4SÈ jj5       rÕ\G" \=GR¬                  5      \-" SÉSÊSUSË9   GS?S+\Sw\S‘\\SÌ\\SÆ\\S\½\\4   4SÍ jj5       5       r×\G" \=GR°                  R                   5      SÎ 5       rÙ\G" \=GR´                  5      \-" 5         GS@S?\S˜\SÁ\S€\\SÌ\\S\4SÏ jj5       5       rÚSÐ rÛSÑ rÜ\G" \=GRº                  5      \-" 5       SÒ 5       5       rÞ\G" \=GR¾                  5      \-" 5       SÓ 5       5       ràSÔ rá\G" \=GRÄ                  5      \-" SÕ5      SÖ 5       5       rã\G" \=GRÈ                  5      \-" SÕ5      S× 5       5       råSØ ræ\G" \=GRÎ                  5      \-" 5       SÙ 5       5       rè\G" \=GRÒ                  5      \-" 5       SÚ 5       5       rê\G" \=GRÖ                  R                   5      SÛ 5       rì\G" \=GRÚ                  R                   \=GRÚ                  GRÜ                  \=GRÞ                  R                   \=GRÞ                  GRÜ                  /5      \-" SÕ5      SÜ 5       5       rðSÝ rñ\G" \=GRä                  5      \-" 5       SÞ 5       5       ró\G" \=GRè                  5      \-" 5       Sß 5       5       rõ\G" \=GRì                  R                   \=GRì                  GRÜ                  \=GRî                  R                   \=GRî                  GRÜ                  /5      \-" SÕ5      Sà 5       5       rø\G" \=GRò                  5      \-" 5       GSAS+\Sá\úS\4Sâ jj5       5       rû\G" \=GRø                  5      \-" 5       Sã\S+\Sá\úSä\S\4
Så j5       5       rý\G" \=GRü                  R                   \=GRü                  R¢                  /5      \-" SUSË9SJSJSæ.Sç j5       5       rÿ\G" \=GR                   R                   \=GR                   R¢                  /5      \-" 5       SS2.Sè j5       5       Gr\G" \=GR                  GRô                  5      GSBSé j5       Gr\G" \=GR                   GR                  5      GSBSê j5       Gr\G" \=GR                  R                   \=GR                  R¢                  /5      \-" 5       GS4Së j5       5       Gr\G" \=GR                  R                   5        GS;Sì j5       Gr	\G" \=GR                  5      \-" SUSË9GS4SD\Rò                  S-  4Sí jj5       5       GrSî GrGSCSï jGr GS4Sð\R$                  S@\R$                  Sñ\Z\[   \[-  Sò\Z\[   \[-  Só\Z\[   \[-  Sô\\Sõ\[Sö\Z\[   \[-  S-  4S÷ jjGrSø Gr\G" \=GR                   R                   5      Sð\R$                  S@\R$                  SB\R$                  S-  Sù\R$                  S-  Sú\R$                  S-  Sû\\Sü\úSý\ú4Sþ j5       Gr\G" \=GR$                  R                   5      Sð\R$                  S@\R$                  SB\R$                  Sñ\Z\[   Sò\Z\[   Só\Z\[   Sô\\Sö\Z\[   Sõ\[4Sÿ j5       Gr\GR(                  GR*                  (       Ga
  \R|                  R                  GS SS5      Gr\G" \Rx                  GR.                  GR0                  R                   5      GS 5       Gr\G" \Rx                  GR.                  GR4                  R                   5      GS 5       Gr\GR(                  GR8                  (       aO  \R|                  R                  GSSS5      Gr\G" \Rx                  GR<                  GR>                  5      GS 5       Gr \R|                  R                  GSSS5      Gr!\G" \Rx                  GRD                  GRF                  R                   5      \G" \Rx                  GRD                  GRH                  R                   5      \G" \Rx                  GRD                  GRH                  GRJ                  5      GS 5       5       5       Gr&\G" \Rx                  GRD                  GRF                  GRN                  5      \G" \Rx                  GRD                  GRF                  GRP                  5      GS 5       5       Gr)\G" \Rx                  GRD                  GRT                  R                   5      \G" \Rx                  GRD                  GRT                  GRJ                  5      GS 5       5       Gr+\G" \Rx                  GRD                  GRT                  GRN                  5      \G" \Rx                  GRD                  GRT                  GRP                  5      GS	 5       5       Gr,\G" \Rx                  GRD                  GRZ                  R                   5      \G" \Rx                  GRD                  GR\                  R                   5      GS
 5       5       Gr/\R|                  R                  GSSS5      Gr0\G" \Rx                  GRb                  GRd                  5          GSDGS j5       Gr3\G" \Rx                  GRb                  GRh                  5      GS 5       Gr5GS Gr6\G" \=GRn                  R                   5           GSEGS j5       Gr8GS Gr9\G" \=GRt                  R                   5      GS 5       Gr;\G" \=GRx                  5      \-" 5            GSEGS j5       5       Gr=\G" \=GR|                  5      \-" SÕ5      GS 5       5       Gr?\G" \=GR€                  R                   5      GS 5       GrA\G" \=GR„                  R                   5      GS 5       GrC\G" \=GRˆ                  R                   5      GS 5       GrE\G" \=GRŒ                  5      \-" SÕ5      GS 5       5       GrGGS\S}\x4GS jGrH\G" \=GR’                  5      \-" SÇS'5      GS 5       5       GrJ\G" \=GR–                  5      \-" SÕ5      GS 5       5       GrL\G" \=GRš                  5      \-" SÇS'5      GS 5       5       GrN\G" \=GRž                  5      \-" SÕ5      GS 5       5       GrP\G" \=GR¢                  R$                  5      GS4GS  j5       GrR\G" \=GR¦                  R                   \=GR¦                  R¢                  /5      \-" 5       GS! 5       5       GrT\G" \=GRª                  R                   \=GRª                  R¢                  /5      \-" 5       S"GS".GS#\[4GS$ jj5       5       GrU\G" \Rx                  Rz                  GR¬                  R                   \Rx                  Rz                  GR¬                  R¢                  /5      \-" 5       GS% 5       5       GrV\G" \=GR®                  R$                  \=GR°                  R$                  /5      GS& 5       GrY\G" \=GR´                  R                   /5      GS' 5       Gr[\G" \=GR¸                  R                   \=GR¸                  R¢                  /5      \-" SUSË9SJSJSæ.GS( j5       5       Gr]\G" \=GR¼                  R$                  /5      GS) 5       Gr_\G" \=GRÀ                  R                   \=GRÂ                  R                   /5      SSGS*.GS+ j5       Grb\G" \=GRÆ                  R                   /5      SSGS*.GS, j5       Grd\G" \=GRÊ                  /5      \-" 5       GS- 5       5       Grf\G" \=GRÎ                  /5      GS. 5       Grh\G" \=GRÒ                  /5      GS/ 5       Grj\G" \=GRÖ                  /5      GS0 5       Grl\G" \=GRÚ                  /5      GS1 5       Grn\G" \=GRÞ                  /5      GS2 5       GroGS3\[GS4\[S\[4GS5 jGrpGS6 Grq\G" \=GRä                  /5      SB\S-  4GS7 j5       Grs\G" \=GRè                  /5      GS8 5       Gru\G" \=GRì                  /5      GS9 5       Grw\G" \=GRð                  R                   5      GS: 5       Gry\G" \=GRô                  5      \-" 5       GS; 5       5       Gr{\G" \=GRø                  R                   5            GSFGS< j5       Gr}\G" \=GRü                  R                   5      GS= 5       GrGS7GS> jGr€\G" \=GR                  R                   \=GR                  R¢                  /5      \-" 5       GSGSGS?.GS@ jj5       5       Gr‚\G" \=GR                  R                   \=GR                  R                   /5      GSA 5       Gr…\G" \=GR                  GR                  \=GR                  GR                  \=GR                  GR                  \=GR                  GR                  \=GR                  R                   \=GR                  GR                  /5      \-" S&S'5      GSHGSB j5       5       Gr‰\G" \=GR                  R                   5      GSC 5       Gr‹\G" \=GR                  R                   5      GSD 5       Gr�\G" \=GR                  R                   5      GSE 5       Gr�\G" \=GR                   GR"                  \=GR$                  GR"                  \=GR                   R$                  \=GR$                  R$                  \=GR&                  R                   \=GR(                  R                   \=GR*                  R                   /5      GSF 5       Gr–\G" \=GR.                  GR"                  \=GR0                  GR"                  \=GR.                  R$                  \=GR0                  R$                  /5      GSGSG j5       Gr™\G" \=GR4                  GR"                  \=GR6                  GR"                  /5      GSGSH j5       Grœ\G" \=GR:                  R                   \=GR:                  GR<                  /5      GSI 5       GrŸGSJ Gr \G" \=GRB                  R$                  \=GRB                  GR"                  /5      GSK 5       Gr¢\G" \=GRF                  R$                  \=GRF                  GR"                  /5      GSL 5       Gr¤\G" \=GRJ                  R                   5      GSM 5       Gr¦\G" \=GRN                  R$                  \=GRN                  GR"                  /5      GSN 5       Gr¨\G" \=GRR                  R$                  \=GRR                  GR"                  /5      GSO 5       Grª\G" \=GRV                  R                   5      GSP 5       Gr¬\G" \=GRZ                  R$                  5      \-" 5       GSS\4GSQ jj5       5       Gr®\G" \=GR^                  /5      \-" 5        GSIGSR j5       5       Gr°\G" \=GRb                  /5       GSIGSS j5       Gr²\G" \=GRf                  /5       GSIGST j5       Gr´\G" \=GRj                  R                   \=GRl                  R                   /5      GS2GSU j5       Gr·\G" \=GRp                  GR"                  5      GSV 5       Gr¹\G" \=GRt                  R                   5      GSW 5       Gr»\G" \=GRx                  5      GSX 5       Gr½\G" \=GR|                  5      \-" 5       GSY 5       5       Gr¿\G" \=GR€                  5      GSZ 5       GrÁ\G" \=GR„                  R                   5      GS2GS[ j5       GrÃGS6GS\ jGrÄ\G" \=GRŠ                  R                   5      GS] 5       GrÆ\G" \=GRŠ                  Rò                  5      GS^ 5       GrÇGS_ GrÈGS` GrÉGSa GrÊGSb GrË GS2S?\GSc\[GSd\[GSe\[GSf\[GSg\[GSh\[GSi\[GSj\[GSk\[GSl\[GSm\[GSn\[GSo\[GSp\[GSq\[GSr\[GSs\[GSt\[GSu\[Sƒ\xGSv\\4,GSw jjGrÌGSx GrÍS?\GS\GSc\[GSd\[GSe\[GSf\[GSg\[GSh\[GSi\[GSj\[GSk\[GSl\[GSp\[GSq\[GSr\[GSs\[GSt\[GSu\[Sƒ\x4&GSy jGrÎGSz GrÏ\G" \=GR                   R                   5      GS{ 5       GrÑ\G" \=GR¤                  R                   5          GSDGS| j5       GrÓ\G" \=GR¨                  R                   5      GS} 5       GrÕ\G" \=GR¬                  5      \-" SÇS'5          GSDGS~ j5       5       Gr×\G" \=GR°                  5      \-" SÕ5      GS 5       5       GrÙS?\GS€\4GS� jGrÚ " GS‚ GSƒ\5      GrÛS?\GS€\GS„\[4GS… jGrÜ\G" \=GRº                  R                   5      GS† 5       GrÞ\G" \=GR¾                  5      \-" 5       GS‡ 5       5       Grß\G" \=GRÀ                  5      \-" SÕGSˆ5      GS‰ 5       5       Grà\G" \=GRÂ                  R                   /5      GSŠ 5       Grá\G" \=GRÄ                  R                   5           GSJGS‹ j5       Grâ\G" \=GRÆ                  R                   \=GRÆ                  R¢                  /5      \-" 5       SSSSSGSŒ.GS� j5       5       Grä\G" \=GRÊ                  R                   \=GRÊ                  R¢                  /5      \-" 5       SSSSSGSŒ.GSŽ j5       5       Græ\G" \=GRÎ                  R                   5      GS� 5       Grè\G" \=GRÒ                  R                   5      GSKGS� j5       GrêGS7S,\[GS‘\[GS’\\4GS“ jjGrëGS” GrìGS• Grí\G" \=GRÜ                  R                   5      GS2GS– j5       GrïGS2GS— jGrðGS4GS˜ jGrñGS™ GròGS4GSš jGróGSLGS› jGrô\G" \=GRê                  R                   5      GSœ 5       Grö\G" \=GRî                  5      GS� 5       Grø\G" \=GRò                  GRô                  \=GRò                  GRö                  \=GRò                  GRø                  \=GRò                  GRú                  /5      \-" 5       GS4GSž j5       5       Grþ\G" \=GRþ                  GRô                  \=GRþ                  GRö                  \=GRþ                  GRø                  \=GRþ                  GRú                  /5      GS4GSŸ j5       Gr \G" \=GR                  /5          GSMGS \GS¡\GS¢\GS£\úGS¤\\GS¥\\GS¦\úS-  4GS§ jj5       GrGS \GS¨\½\[GS©4   4GSª jGr\G" \=GR                  /5          GSMGS \GS¡\GS¢\GS«\S-  GS¬\\GS£\úGS¤\\GS¥\\GS¦\úS-  4GS­ jj5       Gr\G" \=GR                  /5           GSNGS \GS¡\GS¢\GS«\S-  GS£\úGS¤\\GS¥\\GS¦\úS-  4GS® jj5       Gr\G" \=GR                  /5       GS4GS¯\GS \GS¡\GS¢\SÇ\GS°\GS±\GS²\GS³\[GS´\[GS£\úGS¤\\GSµ\GS¶\GS¦\úS-  4GS· jj5       Gr	\G" \=GR                  /5          GSOGS \GS¡\GS¢\GS£\úGS¤\\GS¸\S-  GS¦\úS-  4GS¹ jj5       Gr\G" \=GR                  /5        GS6GS¯\GS \GS¡\GS¢\SÇ\GS°\GS£\úGS¤\\GS¸\S-  GS¦\úS-  4GSº jj5       Gr\G" \=GR                  /5           GSPGS \GS¡\GS¢\GS¸\S-  GS£\úGS¤\\GS»\S-  GS¦\úS-  S\½\\4   4GS¼ jj5       Gr\G" \=GR                   /5         GSQGS \GS¡\GS¢\GS«\S-  GS¬\\GS¤\\GS¦\úS-  4GS½ jj5       Gr\G" \=GR$                  /5        GSRGS¯\GS \GS¡\GS¢\GS«\S-  SÇ\GS°\GSµ\GS¶\GS£\úGS¾\Z\\   GS¤\\GS¦\úS-  4GS¿ jj5       Gr\G" \=GR(                  /5       GS4GS¯\GS \GS¡\GS¢\SÇ\GS°\GSµ\GS¶\GS«\GS±\GS²\GS³\[GS´\[GS£\úGS¤\\GS¦\úS-  4 GSÀ jj5       Gr\G" \=GR,                  /5           GSJGS \GS¡\GS¢\GS±\S-  GS²\S-  GS³\[GS´\[GS£\úGS¤\\GS¥\\GS¦\úS-  GSÁ\[S-  GSÂ\[S-  GSÃ\S-  GSÄ\S-  4GSÅ jj5       Gr\G" \=GR0                  /5         GS3GS¯\GS \GS¡\GS¢\SÇ\GS°\GS±\GS²\GS³\[GS´\[GS£\úGS¤\\GSµ\GS¶\GS¦\úS-  GSÁ\[S-  GSÂ\[S-  4"GSÆ jj5       Gr\G" \=GR4                  /5           GSSGS \GS¡\GS¢\SB\S-  GSÇ\S-  GSÈ\S-  GSÉ\[S-  GSÊ\[S-  GS£\úGSË\[GS¬\\GS¦\úS-  GSÌ\S-  GSÍ\S-  GSÎ\[S-  4GSÏ jj5       Gr\G" \=GR8                  /5         GSLGS¯\GS \GS¡\GS¢\SB\S-  GSÇ\S-  GSÈ\S-  GSÉ\GR:                  GSÊ\GR:                  GS°\GS£\úGSµ\GS¶\GSË\[GSÐ\\GS¦\úS-  GSÑ\[S-  GSÒ\\4$GSÓ jj5       Gr    GSTS+\R$                  SH\R$                  GSÔ\R$                  GSÕ\R$                  SB\R$                  S-  GSÖ\R$                  S-  SD\Rò                  S-  GS×\\4GSØ jjGr\G" \=GR@                  R                   /5          GSTS+\R$                  SH\R$                  GSÔ\R$                  GSÕ\R$                  SB\R$                  S-  GSÖ\R$                  S-  SD\Rò                  S-  GS×\\4GSÙ jj5       Gr!     GSUS+\R$                  SH\R$                  GSÔ\Z\R$                     GSÚ\Z\5   GSÕ\Z\R$                     GSÛ\Z\5   SB\R$                  S-  SD\Rò                  S-  GSÜ\Z\6   S-  GSÝ\Z\6   S-  GS×\\4GSÞ jjGr"\G" \=GRF                  R                   /5          GSTS+\R$                  SH\R$                  GSÔ\Z\R$                     GSÚ\Z\5   GSÜ\Z\6   GSÕ\Z\R$                     GSÛ\Z\5   GSÝ\Z\6   SB\R$                  S-  GSß\Rò                  S-  GSà\Z\[   S-  GS×\\4GSá jj5       Gr$\G" \=GRJ                  GRL                  \=GRJ                  GRN                  /5      \-" 5       GS7GSâ j5       5       Gr(\G" \=GRR                  GRL                  5      GS7GSã j5       Gr*\G" \=GRV                  R                   \=GRV                  R¢                  /5      \-" 5       GS2SS2.GSä jj5       5       Gr,GSå Gr-GSæ Gr.\G" \=GR^                  R                   \=GR`                  R                   /5      GS4GSç j5       Gr/\G" \=GRb                  R                   \=GRd                  R                   /5      GS6GSè j5       Gr1\G" \=GRf                  R                   \=GRh                  R                   /5        GS6GS\GSé\\[\GR:                  -     GSê\\[\GR:                  -     GSë\úS-  GSì\úS-  4
GSí jj5       Gr3\G" \=GRj                  R                   \=GRl                  R                   /5      GS3GSî j5       Gr5\G" \=GRn                  R                   \=GRn                  GRp                  \=GRn                  GR                  \=GRn                  GRr                  /5      GSVGSï j5       Gr:GSð Gr;\G" \=GRx                  R                   5        GS6GSñ j5       Gr=\G" \=GR|                  R                   5      GSò 5       Gr>\G" \=GR~                  R                   5      GSó 5       Gr?GSô Gr@GSõ GrA\G" \=GR„                  R                   \=GR†                  R                   /5      GSGGSö j5       GrD\G" \=GRŠ                  R                   5      GSWGS÷ j5       GrE\G" \=GRŒ                  R                   5      GSXGSø j5       GrG\G" \=GR�                  5      \-" 5        GSYGSù j5       5       GrI\G" \=GR”                  R                   \=GR”                  GR                  /5      \-" S&S'5      GSHGSú j5       5       GrK\GR˜                  GrMGSû GrN\G" \=GRž                  R                   5      GSü 5       GrO\G" \=GR                   R                   5      GSý 5       GrP\G" \=GR¢                  R                   5      GSþ 5       GrR\G" \=GR¦                  R                   5      GSÿ 5       GrS\G" \=GR¨                  R$                  \=GR¨                  GRª                  /5      \-" 5       SSGS .GS j5       5       GrV\G" \=GR®                  /5      \-" 5       GSZGS j5       5       GrX\G" \=GR²                  R                   \=GR´                  R                   /5        GS6GS j5       Gr[\G" \=GR¸                  R                   /5        GS6GS j5       Gr]\G" \=GR¼                  R                   5      GS 5       Gr^\G" \=GR¾                  R                   \=GR¾                  R¢                  /5      \-" 5       GS3GS j5       5       Gr_\G" \Rx                  Rz                  GRÀ                  5      GS 5       Gr`\G" \Rx                  Rz                  GRÂ                  5      GS 5       Gra\G" \=GRÄ                  5      \-" 5       SSSSGS	.GS
 j5       5       GrcGS Grd\G" \=GRÊ                  5      GS 5       Grf\G" \=GRÎ                  5       GS[GS j5       Grh\G" \=GRÒ                  5       GS[GS j5       Grj\G" \=GRÖ                  5       GS[GS j5       Grl\G" \=GRÚ                  5      \-" 5       SSGS.GS j5       5       Grn\G" \=GRÞ                  5      \-" 5       GS\[S+\S\4GS j5       5       Grp\G" \=GRâ                  5      S+\4GS j5       Grr\G" \=GRæ                  5      \-" SUSË9S+\S\4GS j5       5       Grs\G" \=GRè                  5      \-" 5       S+\S\4GS j5       5       GrtGS Gru     GSUGS\GS\GSÔ\R$                  S-  GSÕ\R$                  S-  GS\S-  SB\S-  GSÖ\R$                  S-  SD\Rò                  S-  GS×\\4GS jjGrv\G" \=GRî                  5      \-" 5          GS3GS\GS\GS\S-  SB\S-  SD\Rò                  S-  S\4GS jj5       5       Grx\G" \=GRò                  /5           GSUGS\R$                  GS\R$                  GSÔ\R$                  GSÕ\R$                  GS\R$                  S-  SB\R$                  S-  GSÖ\R$                  S-  SD\Rò                  S-  GS×\\4GS jj5       Grz\G" \=GRö                  5      \-" 5       GS\S,\[GS\\S\4GS  j5       5       Gr|\G" \=GRú                  5      \-" 5       GSGS! j5       5       Gr~\G" \=GRþ                  5      \-" 5          GS\S@\S'\GS"\[GS#\\GS$\\S\4GS% jj5       5       Gr\G" \=GR                   R                   5       GS]S&\Sa\Z\   GS&\Z\[   GS'\ú4GS( jj5       Gr�GS) Gr‚\G" \=GR                  R                   5          GS^GS* j5       Gr„GS+ Gr…G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\‚" \=GR                  5        G\…" \=GR                  5        G\…" \=GR                   5        G\…" \=GR"                  5        G\…" \=GR$                  5        G\…" \=GR&                  5        G\…" \=GR(                  5        G\…" \=GR*                  5        G\…" \=GR,                  5        G\…" \=GR.                  5        G\…" \=GR0                  5        G\…" \=GR2                  5        G\…" \=GR4                  5        GS, Gr›\G" \=GR8                  5      \-" 5       GS- 5       5       Grœ\G" \=GR:                  5      \-" 5       SJGS..GS/ j5       5       Gr�\G" \=GR<                  5      \-" 5       SJGS..GS0 j5       5       GržG\›" \=GR8                  5      GrŸG\›" \=GR:                  5      Gr G\›" \=GR<                  5      Gr¡S SK.rS SGK¢rS SGK£rGS1 Gr¤G\¤" 5         g(_  é    N)ÚCallableÚSequence)ÚEnum)Úwraps)ÚTypeVar)Ú	ParamSpec)ÚSymBoolÚSymFloatÚTensor)Ú_add_op_to_registryÚ_convert_out_paramsÚglobal_decomposition_tableÚ
meta_table)Ú
OpOverload)Ú_prim_elementwise_metaÚ$ELEMENTWISE_PRIM_TYPE_PROMOTION_KIND)ÚBoolLikeÚcorresponding_complex_dtypeÚcorresponding_real_dtypeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚ	FloatLikeÚIntLikeÚmake_contiguous_strides_forÚNumberÚsuggest_memory_formatÚ
TensorLike)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_resize_output_checkÚ_safe_copy_outÚout_wrapper)Ú_broadcast_shapesÚ_maybe_broadcast)Ú_config)ÚScalingTypeÚSwizzleType)Ú_pytreeÚ_TÚ_PÚatenÚIMPLÚMetaé   c                 ó   • X-   S-
  U-  $ ©Né   © ©ÚaÚbs     Ú^D:\a\ltx-desktop-ci\ltx-desktop-ci\python-embed\Lib\site-packages\torch\_meta_registrations.pyÚceil_divr7   7   s   € Ø‰E�A‰I˜!ÑÐó    c                 ó   • X-   S-
  U-  U-  $ )z$Rounds up x to nearest multiple of yr1   r2   ©ÚxÚys     r6   Úround_upr=   ;   s   € à‰U�Q‰Y˜1Ñ Ñ!Ð!r8   Úreturnc                 ó   ^ • U 4S jnU$ )Nc                 óZ   >^ • [        T 5      m U 4S jn[        R                  " UT5        T $ )Nc                 ó(   >• [        [        U T5        g ©N)r   r   )ÚopÚfns    €r6   ÚregisterÚ0register_meta.<locals>.wrapper.<locals>.registerD   s   ø€ Ü¤
¨B°Õ3r8   )r   ÚpytreeÚ	tree_map_)rD   rE   rC   s   ` €r6   ÚwrapperÚregister_meta.<locals>.wrapperA   s)   ù€ Ü  Ó$ˆõ	4ô 	×Ò˜ 2Ô&Øˆ	r8   r2   )rC   rI   s   ` r6   Úregister_metarK   @   s   ø€ õð €Nr8   Útype_promotionc                 ó´   • [         R                  " USU 06u  p#U Vs/ s H  n[        XC5      PM     nn[        U6 n[	        US[
        R                  06$ s  snf )NÚtype_promotion_kindrL   )Úutilsr   r   r$   r   r   ÚDEFAULT)rL   ÚargsÚ_Úresult_dtyper;   s        r6   Úelementwise_metarT   M   sp   € ô
 ×.Ò.Ø	ðà*ñ�O€Añ ?CÓCºd¸Ô# AÖ4¹d€DÐCô ˜TÐ"€Dô "Ø	ðÜB×JÑJñð ùò Ds   �Ac                 óÜ   • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  0nUR                  X 5      $ rB   )ÚtorchÚ	complex32ÚhalfÚcfloatÚfloatÚcdoubleÚdoubleÚget)ÚdtypeÚfrom_complexs     r6   ÚtoRealValueTyper`   a   sC   € ä�‰œŸ™Ü�‰”e—k‘kÜ�‰”u—|‘|ð€Lð
 ×Ñ˜EÓ)Ð)r8   c                 óp   ^ ^• [        [        T /UQ76 5      m[        R                  " TT :H  UU 4S j5        g )Nc                  ó   >• ST ST  3$ )Nzoutput with shape z# doesn't match the broadcast shape r2   )Úbroadcasted_shapeÚ
self_shapes   €€r6   Ú<lambda>Ú)check_inplace_broadcast.<locals>.<lambda>n   s   ø€ Ð$ Z LÐ0SÐTeÐSfÑgr8   )Útupler#   rV   Ú_check)rd   Ú
args_shaperc   s   ` @r6   Úcheck_inplace_broadcastrj   j   s0   ù€ ÜÔ/°
ÐH¸ZÒHÓIÐÜ	‡L‚LØ˜ZÑ'Ýgõr8   Fc	           	      óŒ  ^ ^^^^	• [        T [        R                  5      (       a)  [        R                  " T R	                  5       S:H  S 5        [        T[        R                  5      (       a)  [        R                  " TR	                  5       S:H  S 5        [        S T TT4 5       5      (       a`  [        R                  " [        R                  " 5       5      m	Tc  T	mOO[        R                  " [        R                  " T5      U	U4S j5        OT=(       d    [        R                  " 5       m[        T[        R                  5      (       d   e[        R                  " [        T[        5      UU U4S j5        [        T[        5      (       d   e[        R                  " TS:¬  S 5        [        R                  " T4TUSUUS	9$ )
Nr   c                  ó   • g©Nz:linspace only supports 0-dimensional start and end tensorsr2   r2   r8   r6   re   Ú(meta_linspace_logspace.<locals>.<lambda>‚   ó   € ÐPr8   c                  ó   • grm   r2   r2   r8   r6   re   rn   ‡   ro   r8   c              3   óB   #   • U  H  n[        U[        5      v •  M     g 7frB   )Ú
isinstanceÚcomplex)Ú.0Úargs     r6   Ú	<genexpr>Ú)meta_linspace_logspace.<locals>.<genexpr>Š   s   é € Ð
CÒ/B¨Œ:�cœ7×#Ð#Ò/Bùs   ‚c                  ó   >• ST  ST 3$ )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r2   )Údefault_complex_dtyper^   s   €€r6   re   rn   “   s   ø€ Ð5Ð6KÐ5LÐLrÐsxÐryÑzr8   c                  óŽ   >• S[        T5      R                   S[        T 5      R                   S[        T5      R                   S3$ )Nz4received an invalid combination of arguments - got (ú, Ú))ÚtypeÚ__name__)ÚendÚstartÚstepss   €€€r6   re   rn   œ   sB   ø€ ð Ü€uƒ+×ÑÐ�rœ$˜s›)×,Ñ,Ð-¨R´°U³×0DÑ0DÐ/EÀQñHr8   c                  ó   • g)Nz$number of steps must be non-negativer2   r2   r8   r6   re   rn       s   € Ð%Kr8   Úmeta©r^   ÚlayoutÚdeviceÚ
pin_memoryÚrequires_grad)rr   rV   r   rh   ÚdimÚanyrO   r   Úget_default_dtypeÚis_complex_dtyper^   Ú_check_typer   Úempty)
r€   r   r�   Úbaser^   r†   r…   r‡   rˆ   ry   s
   ``` `    @r6   Úmeta_linspace_logspacer�   r   s[  ü€ ô �%œŸ™×&Ñ&Ü�ŠØ�I‰I‹K˜1ÑÙPô	
ô �#”u—|‘|×$Ñ$Ü�ŠØ�G‰G‹I˜‰NÙPô	
ô
 Ñ
C°°s¸EÑ/BÓ
C×CÑCÜ %× AÒ AÜ×#Ò#Ó%ó!
Ðð ‰=Ø)‰Eä�LŠLÜ×&Ò& uÓ-Ýzõð
 ×2œ×0Ò0Ó2ˆÜ�eœUŸ[™[×)Ñ)Ð)Ð)ô 
×ÒÜ�5œ'Ó"ö	Hôô
 �eœW×%Ñ%Ð%Ð%Ü	‡L‚L�˜!‘ÑKÔLä�;Š;Ø	ˆØØØØØ#ñð r8   c                 ó6  ^• [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " U R                  5       S:H  =(       a    TR                  5       S:g  (       + S 5        U R                  TR                  5      $ )Nc                  ó"   >• ST R                    3$ )Nz2take(): Expected a long tensor for index, but got ©r^   ©Úindexs   €r6   re   Úmeta_take.<locals>.<lambda>²   s   ø€ ÐDÀUÇ[Á[ÀMÑRr8   r   c                  ó   • g)Nz*take(): tried to take from an empty tensorr2   r2   r8   r6   re   r–   ·   s   € Ð<r8   )rV   rh   r^   ÚlongÚ_check_indexÚnumelÚ	new_emptyÚshape)Úselfr•   s    `r6   Ú	meta_takerž   ¬   sm   ø€ ô 
‡L‚LØ�‰”u—z‘zÑ!ÜRôô
 
×ÒØ�Z‰Z‹\˜QÑ×5 5§;¡;£=°AÑ#5Ô6Ù<ôð �>‰>˜%Ÿ+™+Ó&Ð&r8   éÿÿÿÿ©r‰   c                ób  ^ ^^• T R                   nTR                   n[        R                  " X4:H  S 5        [        R                  " T R                  T5      S:H  =(       a    TR                  T5      S:H  UUU 4S j5        [	        T R
                  TR
                  5      nT R                  U5      $ )Nc                  ó   • g)Nz=linalg.cross: inputs must have the same number of dimensions.r2   r2   r8   r6   re   Úlinalg_cross.<locals>.<lambda>Ã   ó   € ÐOr8   r.   c                  óV   >• ST  STR                  T 5       STR                  T 5       3$ )Nzlinalg.cross: inputs dimension z must have length 3. Got ú and ©Úsize)r‰   Úotherr�   s   €€€r6   re   r£   Ç   s1   ø€ Ø-¨c¨Uð 3Ø—9‘9˜S“>Ð" %¨¯
©
°3«Ð'8ñ:r8   )ÚndimrV   rh   r¨   r#   rœ   r›   )r�   r©   r‰   Úx_dÚy_dÚ	out_shapes   ```   r6   Úlinalg_crossr®   ¼   s…   ú€ ð �)‰)€CØ
�*‰*€CÜ	‡L‚LØ‰
ÙOôô 
‡L‚LØ�	‰	�#‹˜!Ñ×4 §
¡
¨3£°1Ñ 4ö	
ôô " $§*¡*¨e¯k©kÓ:€IØ�>‰>˜)Ó$Ð$r8   c                 óx   • [        U S5        [        U S5        [        R                  " U [        R                  S9$ )Nzlinalg.matrix_exp©Úmemory_format)ÚsquareCheckInputsÚcheckFloatingOrComplexrV   Ú
empty_likeÚcontiguous_format©r�   s    r6   Úlinalg_matrix_expr·   Ð   s3   € ô �dÐ/Ô0Ü˜4Ð!4Ô5Ü×Ò˜D´×0GÑ0GÑHÐHr8   ÚvaluesÚindicesc                 óR  • [         R                  " U R                  U R                  U R                  S9n[         R                  " U R                  U R                  [         R
                  S9nU R                  5       S:w  a%  U R                  S:w  a  [        XR                  5        X#4$ )N©r†   r^   r   )	rV   rŽ   rœ   r†   r^   Úint64rš   rª   Úmaybe_wrap_dim)r�   r‰   r¸   r¹   s       r6   Ú	cummaxminr¾   Ø   sl   € ô
 �[Š[˜Ÿ™¨D¯K©K¸t¿z¹zÑJ€FÜ�kŠk˜$Ÿ*™*¨T¯[©[ÄÇÁÑL€GØ‡z�zƒ|�qÓ˜TŸY™Y¨!›^ä�sŸI™IÔ&Øˆ?Ðr8   c                 ór   • [        XR                  5        [        R                  " U [        R                  S9$ ©Nr°   )r½   rª   rV   r´   rµ   )r�   r‰   s     r6   ÚlogcumsumexprÁ   å   s)   € ô �3Ÿ	™	Ô"Ü×Ò˜D´×0GÑ0GÑHÐHr8   c                óV  ^• UR                   n[        U5      nXV-
  n[        [        U5      5      n[        U5       V	s/ s H  n	SPM     n
n	U H  nSX«'   M	     / / pÜU H0  nX«   (       d  UR	                  U5        M  UR	                  U5        M2     XÍ-   n[        U5      nUR                  5       mUS U nUR                  U4S jSS9  XøUS  -   nUR                  U5      nS/[        UR                  US  5      -   nUR                  U5      nUR                  S5      nUUS'   [        U5      n[        [        U5      5       H  nX#U      UUS-   '   M     U R                  U[        R                  S9  [        U5       V	s/ s H  n	SPM     nn	SnUS-
  nUS:¼  a1  UU R                  S5      -  UUU   '   UX(U      -  nUS-  nUS:¼  a  M1  [        Xu5       H   nU R                  SUU-
  -   5      UUU   '   M"     U R                  UUU R                  5       5        U $ s  sn	f s  sn	f )	NFTc                 ó   >• TU    $ rB   r2   )r;   Úself_stridess    €r6   re   Ú_exec_fft.<locals>.<lambda>
  s	   ø€ ˜<¨š?r8   ©ÚkeyÚreverserŸ   r   r1   r°   )rª   ÚlenÚlistÚrangeÚappendÚstrideÚsortÚpermuterœ   Úreshaper¨   Úresize_rV   rµ   Úas_strided_Ústorage_offset)Úoutr�   Ú	out_sizesr‰   Úforwardrª   Úsignal_ndimÚ
batch_dimsÚdim_permuterR   Úis_transformed_dimÚdÚleftÚrightÚ	batch_endÚtmpÚinputÚbatched_sizesÚ
batch_sizeÚbatched_out_sizesÚiÚout_stridesÚbatch_numelrÄ   s                          @r6   Ú	_exec_fftrç   ò   s4  ø€ Ø�9‰9€DÜ�c“(€KØÑ#€Jô ”u˜T“{Ó#€Kä).¨t¬Ó5ª A›%©ÐÐ5ÛˆØ $ÐÓñ ð �bˆ%ÛˆØ!×$Ø�K‰K˜ŽNà�L‰L˜ŽOñ	 ð
 ‘,€KÜ�D“	€Ià—;‘;“=€LØ
�j�yÐ
!€CØ‡H�HÔ*°D€HÑ9Ø I JÐ/Ñ/€KØ�L‰L˜Ó%€Eð �Dœ4 §¡¨J¨KÐ 8Ó9Ñ9€MØ�M‰M˜-Ó(€Eà—‘˜A“€JØ!€M�!ÑÜ˜]Ó+ÐÜ”3�s“8Ž_ˆØ#,°©VÑ#4Ð˜!˜a™%Ó ñ à‡K�KÐ!´×1HÑ1H€KÑIô $ DœkÓ*šk˜“1™k€KÐ*Ø€KØ�Q‰€AØ
ˆq‹&Ø&1°C·J±J¸q³MÑ&Aˆ�K ‘NÑ#Ø�y¨Q¡Ñ0Ñ0ˆØ	ˆQ‰ˆð ˆq�&ô �:Ö$ˆØ&)§j¡j°°a¸*±nÑ1EÓ&Fˆ�K ‘NÓ#ñ %à‡O�O�I˜{¨C×,>Ñ,>Ó,@ÔAà€JùòW 6ùò@ +s   ¾H!ÆH&r�   r‰   Úexclude_lastc                 ó”   ^• [        U5      nU R                  5       mUS [        U5      [        U5      -
   R	                  U4S jS9  U$ )Nc                 ó   >• TU    $ rB   r2   )rä   rÄ   s    €r6   re   Ú_sort_dims.<locals>.<lambda>,  s	   ø€ �l 1’or8   )rÇ   )rÊ   rÍ   rÉ   ÚintrÎ   )r�   r‰   rè   Úsorted_dimsrÄ   s       @r6   Ú
_sort_dimsrî   (  sL   ø€ Ü�s“)€KØ—;‘;“=€LØÐ6”#�kÓ"¤S¨Ó%6Ñ6Ð7×<Ñ<Ü%ð =ñ ð Ðr8   c                 ó
  • [         R                  " U R                  R                  5        U(       d  U R	                  5       $ [        X5      nU R                  U R                  5       5      n[        XPU R                  5       XCS9$ )N©rÖ   )	rV   rh   r^   Ú
is_complexÚclonerî   r›   r¨   rç   )r�   r‰   ÚnormalizationrÖ   rí   rÔ   s         r6   Úmeta_fft_c2crô   3  s\   € ô 
‡L‚L�—‘×&Ñ&Ô'ÞØ�z‰z‹|Ðä˜TÓ'€KØ
�.‰.˜Ÿ™›Ó
%€CÜ�S §	¡	£¨[ÑJÐJr8   c                 ón   • [        U 5      [        :”  d!  [        U 5      S:¼  a  U S   S:X  a
  U S   S:X  a  gg)Né   r   r1   FT)rÉ   Úcufft_max_ndimr    s    r6   Úuse_optimized_cufft_pathrø   B  s3   € Ü
ˆ3ƒx”.Ó ¤S¨£X°£]°s¸1±vÀ³{ÀsÈ1ÁvÐQRÃ{Øàr8   c                 ó|  ^• [         R                  " U R                  R                  5        [	        U R                  5       5      n[	        U5      nUS   nXF   S-  S-   n[	        U5      nXxU'   U(       a  XuU'   [        U 5      S:X  d  [        U 5      S:X  Gax  U R                  U[        R                  " U R                  5      S9n	U n
[        U 5      S:X  a  [        U5      (       a  [        XšXQSS9  OÝ[        U5      S:X  a  UOUn[        XšX¶/SS9  [        U5      S:”  a.  U R                  U[        R                  " U R                  5      S9n
US S nU(       au  X©p©U
R                  5       mUR                  U4S	 jSS
9  [        [         [        U5      5      nU[        U5      U-
  S  n[        XšXŽSS9  US [        U5      U-
   nU(       a  Mu  U(       d7  U	R                  U5      XV   :w  a   U
R#                  U[         R$                  S9  U
n	U	$ U R                  U[        R                  " U R                  5      S9$ )NrŸ   rö   r1   ÚcudaÚxpur“   Trð   c                 ó   >• TU    $ rB   r2   )rä   Ústridess    €r6   re   Úmeta_fft_r2c.<locals>.<lambda>p  s	   ø€  '¨!¢*r8   rÆ   r°   )rV   rh   r^   Úis_floating_pointrÊ   r¨   Údevice_hintr›   rO   r   rø   rç   rÉ   rÍ   rÎ   Úminr÷   rÑ   rµ   )r�   r‰   ró   ÚonesidedÚinput_sizesrÕ   Úlast_dimÚlast_dim_halfsizeÚonesided_sizesÚoutputÚworking_tensorÚtarget_sizesrí   Úmax_dimsÚ	last_dimsrý   s                  @r6   Úmeta_fft_r2cr  I  s+  ø€ ô 
‡L‚L�—‘×-Ñ-Ô.Ü�t—y‘y“{Ó#€KÜ�[Ó!€IØ�2‰w€HØ#Ñ-°Ñ2°QÑ6ÐÜ˜+Ó&€NØ0�8ÑæØ/�(Ñä�4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ð —‘ØœU×>Ò>¸t¿z¹zÓJð  ð 
ˆð ˆÜ�tÓ Ó&Ô+CÀC×+HÑ+HÜ�f¨iÀdÓKô ),¨C«°A«™9¸>ˆLÜ�f¨l¸JÐPTÒUÜ�3‹x˜!‹|Ø!%§¡Ø¤U×%FÒ%FÀtÇzÁzÓ%Rð "0ð "�ð
 ˜c˜r˜(ˆKÞØ)7˜Ø(×/Ñ/Ó1�Ø× Ñ Ü,°dð !ñ ô œ~¬s°;Ó/?Ó@�Ø'¬¨KÓ(8¸8Ñ(CÐ(EÐF�	ÜØ¨NÈtòð *Ð*G¬C°Ó,<¸xÑ,GÐH�÷ �+ö Ø�{‰{˜8Ó$¨	Ñ(;Ó;Ø×&Ñ& yÄ×@WÑ@WÐ&ÑXØ'�àˆð �~‰~ØœU×>Ò>¸t¿z¹zÓJð ð 
ð 	
r8   )Ú	generatorc                óD   • [        U[        R                  " U /5      5      $ rB   )r   rV   ÚSize)Únr  rÔ   s      r6   Úmeta_randpermr  †  s   € ä˜S¤%§*¢*¨a¨S£/Ó2Ð2r8   ©r^   r…   r†   r‡   c                ó.   • [         R                  " XX#US9$ ©Nr  ©rV   rŽ   )r  r^   r…   r†   r‡   s        r6   Úmeta_randperm_defaultr  ‹  s   € ô �;Š;Ø	˜vÀñð r8   c                ót   ^ ^• Sm[         R                  " T T:„  U U4S j5        [         R                  " XX4US9$ )Nr   c                  ó   >• ST ST  3$ ©Nz:random_ expects 'from' to be less than 'to', but got from=z >= to=r2   ©ÚhighÚlows   €€r6   re   Úmeta_randint.<locals>.<lambda>§  ó   ø€ ÐLÈSÈEÐQXÐY]ÐX^Ñ_r8   r  ©rV   rh   rŽ   )r  r¨   r^   r…   r†   r‡   r  s   `     @r6   Úmeta_randintr   ™  s:   ù€ ð €CÜ	‡L‚LØˆs‰
Ý_ôô �;Š;Ø &ÀJñð r8   c                óp   ^ ^• [         R                  " TT :„  UU 4S j5        [         R                  " X#XEUS9$ )Nc                  ó   >• ST ST  3$ r  r2   r  s   €€r6   re   Ú"meta_randint_low.<locals>.<lambda>¼  r  r8   r  r  )r  r  r¨   r^   r…   r†   r‡   s   ``     r6   Úmeta_randint_lowr$  ®  s5   ù€ ô 
‡L‚LØˆs‰
Ý_ôô �;Š;Ø &ÀJñð r8   c                ó.   • [         R                  " XX#US9$ r  r  )r¨   r^   r…   r†   r‡   s        r6   Úmeta_rand_defaultr&  Ã  s   € ô �;Š;Ø &ÀJñð r8   ró   Úlastdimc                 óê  • [         R                  " U R                  R                  5        [	        U 5      S:X  aÇ  [        U R                  5       5      nX4US   '   U R                  U[        U R                  5      S9n[        U5      (       a(  [        UU R                  [         R                  S9UUSS9$ [        U5      S:”  a  [        XS S SU5      nOU R                  [         R                  S9n[        XVXAS   /SS9$ U n[        U5      S:”  a  US S n[        XUSS9nUSS  n[        UR                  5       5      nX4US   '   U R                  U[        U R                  5      S9n	[        X—XASS9$ )	Nrú   rŸ   r“   r°   Frð   r1   r   )rV   rh   r^   rñ   r   rÊ   r¨   r›   r`   rø   rç   rò   rµ   rÉ   rô   )
r�   r‰   ró   r'  rÕ   r  Útemprà   Úc2c_dimsrÔ   s
             r6   Úmeta_fft_c2rr+  Ë  s^  € ô 
‡L‚L�—‘×&Ñ&Ô'ä�4Ó˜FÓ"Ü˜Ÿ™›Ó%ˆ	Ø$�#�b‘'Ñà—‘ 	´ÀÇÁÓ1L�ÐMˆä# C×(Ñ(ÜØØ—
‘
¬×)@Ñ)@�
ÐAØØØñð ô �3‹x˜!‹|Ü# D¨c¨r¨(°A°wÓ?‘à—z‘z´×0GÑ0G�zÐH�Ü˜V¨9¸2±w°iÈÑOÐOð ˆÜˆs‹8�a‹<Ø˜3˜B�xˆHÜ  °ÈÑNˆEØ�b�c�(ˆCä˜Ÿ™›Ó&ˆ	Ø$�#�b‘'ÑØ�n‰n˜Y¬o¸d¿j¹jÓ.IˆnÐJˆÜ˜ Y¸UÑCÐCr8   c                 ó`  • SSK Jn  U" U 5      (       d%  [        R                  " U 5      S:X  a  [	        S5      e[        U[        5      (       a`  UR                  X5      nU R                  5       UR                  5       :w  a-  [        R                  R                  X@R                  5       5        U $ )Nr   )Úfree_unbacked_symbolsr1   zQmore than one element of the written-to tensor refers to a single memory location)Ú%torch.fx.experimental.symbolic_shapesr-  rV   Ú_debug_has_internal_overlapÚRuntimeErrorrr   r   Útor¨   r+   Úexpand_copyÚdefault)r�   ÚsrcÚnon_blockingr-  Úintermediates        r6   Ú
meta_copy_r7  ô  s‹   € õ Lñ " $×'Ñ'¬E×,MÒ,MÈdÓ,SÐWXÓ,XäØ_ó
ð 	
ô �#”v×ÑØ—v‘v˜dÓ1ˆØ�9‰9‹;˜,×+Ñ+Ó-Ó-Ü×Ñ×$Ñ$ \·9±9³;Ô?Ø€Kr8   c                 óî   • [        U R                  5       5      n[        U R                  5       5      nXR                  5       :¼  a  SOX!   X1   -  nUR	                  US5        UR	                  X5        X#4$ r0   )rÊ   r¨   rÍ   r‰   Úinsert)Útensorr‰   Úresult_sizesÚresult_stridesÚ
new_strides        r6   ÚinferUnsqueezeGeometryr>    sf   € Ü˜Ÿ™›Ó&€LÜ˜&Ÿ-™-›/Ó*€NàŸZ™Z›\Ó)‘¨|Ñ/@À>ÑCVÑ/V€Jà×Ñ˜˜QÔà×Ñ˜#Ô*ØÐ'Ð'r8   c                 óz   • [        XR                  5       S-   5      n[        X5      u  p#U R                  X#5        U $ r0   )r½   r‰   r>  rÒ   )r�   r‰   Úg_sizesÚ	g_stridess       r6   Úmeta_unsqueeze_rB    s6   € ä
˜Ÿh™h›j¨1™nÓ
-€CÜ/°Ó:Ñ€GØ×Ñ�WÔ(Ø€Kr8   rà   ÚweightÚ_metaÚbiasÚ_activation_optÚ	out_dtypec                 ó@  • [        U R                  5      nUb+  UR                  S5      UR                  S5      :X  d   S5       eUR                  S5      U R                  S5      S-  :X  d   eUR                  S5      US'   [        U R                  5      S:X  d   S5       eSU R                  S5      4nUb9  U R                  [
        R                  :X  a  U[
        R                  :X  d   S5       eU R                  UUc  U R                  OUS9R                  Xg5      nU$ )	Nr   zoutput size mismatchr1   rŸ   rö   z*we can only handle the squashed input caseú9out_dtype is only supported for i8i8->i32 linear operatorr“   )
rÊ   rœ   r¨   rÉ   r^   rV   Úint8Úint32r›   Ú
as_strided)	rà   rC  rD  rE  rF  rG  Úoutput_sizesÚtransposed_stridesr  s	            r6   Úmeta_sparse_structured_linearrO  !  s  € ô ˜Ÿ™Ó$€LØÑØ�{‰{˜1‹~ §¡¨1£Ó-ÐEÐ/EÓEÐ-Ø�;‰;�q‹>˜UŸZ™Z¨›^¨aÑ/Ó/Ð/Ð/Ø—{‘{ 1“~€L�Ñô ˆu�{‰{Ó˜qÓ ÐNÐ"NÓNÐ Ø˜UŸZ™Z¨›]Ð+ÐàÑØ�{‰{œeŸj™jÓ(¨Y¼%¿+¹+Ó-Eð 	
ØGó	
ÐEð �_‰_ØØ&Ñ.ˆe�kŠk°Ið ð ÷ �j�Ó2ð ð
 €Mr8   Úmat1Ú	mat1_metaÚmat2c                 óô  • [        U R                  5      S:X  d   e[        UR                  5      S:X  d   e[        UR                  5      S:X  d   eU R                  S5      UR                  S5      S-  :X  d   eU R                  S5      UR                  S5      /nUb9  UR                  [        R
                  :X  a  U[        R                  :X  d   S5       eUR                  UUc  UR                  OUS9nU$ )Nrö   r1   r   rI  r“   ©rÉ   rœ   r¨   r^   rV   rJ  rK  r›   )rP  rQ  rR  rG  rM  r  s         r6   Úmeta_sparse_structured_mmrU  C  sâ   € ô ˆt�z‰z‹?˜aÓÐÐÜˆy�‰Ó 1Ó$Ð$Ð$Üˆt�z‰z‹?˜aÓÐÐØ�9‰9�Q‹<˜4Ÿ9™9 Q›<¨!Ñ+Ó+Ð+Ð+Ø—I‘I˜a“L $§)¡)¨A£,Ð/€LàÑØ�z‰zœUŸZ™ZÓ'¨I¼¿¹Ó,Dð 	
ØGó	
ÐDð �^‰^ØØ%Ñ-ˆd�jŠj°9ð ð €Fð
 €Mr8   r1   )ÚalphaÚbetarG  c                óŠ  • [        U R                  5      S:X  d   S5       e[        UR                  5      S:X  d   e[        UR                  5      S:X  d   e[        UR                  5      S:X  d   eU R                  S5      UR                  S5      :X  d   S5       eUR                  S5      UR                  S5      S-  :X  d   eUR                  S5      UR                  S5      /nUb9  UR                  [        R
                  :X  a  U[        R                  :X  d   S5       eUR                  UUc  UR                  OUS9nU$ )Nr1   zEonly input broadcasted to columns of mat1 * mat2 product is supportedrö   r   rI  r“   rT  )	rà   rP  rQ  rR  rV  rW  rG  rM  r  s	            r6   Úmeta_sparse_structured_addmmrY  \  s/  € ô ˆu�{‰{Ó˜qÓ ð ØOóÐ ô ˆt�z‰z‹?˜aÓÐÐÜˆy�‰Ó 1Ó$Ð$Ð$Üˆt�z‰z‹?˜aÓÐÐØ�:‰:�a‹=˜DŸI™I a›LÓ(ð ØOóÐ(ð �9‰9�Q‹<˜4Ÿ9™9 Q›<¨!Ñ+Ó+Ð+Ð+Ø—I‘I˜a“L $§)¡)¨A£,Ð/€LàÑØ�z‰zœUŸZ™ZÓ'¨I¼¿¹Ó,Dð 	
ØGó	
ÐDð �^‰^ØØ%Ñ-ˆd�jŠj°9ð ð €Fð
 €Mr8   Úcompressed_AÚdense_BrV  Útranspose_resultÚalg_idÚsplit_kÚsplit_k_modec	                 óx  • UR                   [        R                  [        R                  [        R                  [        R
                  [        R                  1;   d   S5       eU R                   UR                   :X  d   S5       e[        UR                  5      S:X  d   S5       eU R                   [        R
                  [        R                  4;   n	U	(       a  UR                  5       (       a   S5       eUR                  S5      n
U R                  S5      nUb  X²R                  S5      :X  d   eUbn  U	(       aB  U[        R                  [        R                  [        R                  [        R                  1;   d%   SU R                    S	UR                    S
U S35       eU(       a  X«4OXº4nUR                  XÄS9$ )Nz;_cslt_sparse_mm only supports fp16, bf16, int8, and fp8e4m3zinputs must have the same dtyperö   z'_cslt_sparse_mm only supports 2d inputsz.dense input must be transposed for 8bit dtypesr1   r   zout_dtype is not supported for z x z -> z matmul!r“   )r^   rV   Úfloat32Úfloat16Úbfloat16rJ  Úfloat8_e4m3fnrÉ   rœ   Úis_contiguousr¨   rK  r›   )rZ  r[  rE  rV  rG  r\  r]  r^  r_  Úis_8bit_input_typer  ÚmÚoutput_shapes                r6   Úmeta__cslt_sparse_mmri    s—  € ð �=‰=Ü�‰Ü�‰Ü�‰Ü�
‰
Ü×Ñðó ð Eð EóEð ð ×Ñ §¡Ó.ÐQÐ0QÓQÐ.Üˆw�}‰}Ó Ó"ÐMÐ$MÓMÐ"à%×+Ñ+´·
±
¼E×<OÑ<OÐ/PÑPÐæØ×(Ñ(×*Ñ*ð 	
Ø<ó	
Ð*ð 	�‰�Q‹€AØ×Ñ˜!Ó€AØÑØ—I‘I˜a“LÓ Ð Ð àÑÞ! iÜ�M‰MÜ�N‰NÜ�K‰KÜ×Ñð	4
ó '
ð 	
ð .¨l×.@Ñ.@Ð-AÀÀWÇ]Á]ÀOÐSWÐXaÐWbÐbjÐkó	
ð 
ö .�A‘6°A°6€LØ×Ñ˜\ÐÐ;Ð;r8   T)Úinclude_selfr•   ÚsourceÚreducerj  c                óH   • [         R                  " U [         R                  S9$ rÀ   ©rV   r´   rµ   ©r�   r‰   r•   rk  rl  rj  s         r6   Úmeta_index_reducerp  ®  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr8   c                ó   • U $ rB   r2   ro  s         r6   Úmeta_index_reduce_rr  »  s	   € ð €Kr8   c                 ó¢   • [        U R                  5       5      nU R                  5       S:”  a  UR                  5       X1'   U R	                  U5      $ ©Nr   )rÊ   r¨   r‰   rš   r›   )r�   r‰   r•   Úresult_sizes       r6   Úmeta_index_selectrv  É  s>   € ô �t—y‘y“{Ó#€KØ‡x�xƒz�Aƒ~Ø Ÿ;™;›=ˆÑØ�>‰>˜+Ó&Ð&r8   )Úlengthsr¹   ÚoffsetsÚaxisÚunsafeÚinitialÚdatarw  rx  ry  rz  c                óÌ   ^ ^• Ub  [        S5      eUU 4S jnUb  U" UR                  5      $ Ub+  UR                  S S UR                  S   S-
  4-   n	U" U	5      $ [        S5      e)Nz?segment_reduce(): indices based reduction is not supported yet.c                 óˆ   >• [         R                  " U TR                  TS-   S  -   TR                  S[         R                  S9$ )Nr1   rƒ   ©r^   r†   r±   )rV   rŽ   rœ   r^   rµ   )Úlengths_shapery  r|  s    €€r6   Úsegment_reduce_lengths_tensorÚ:meta_segment_reduce.<locals>.segment_reduce_lengths_tensorã  s>   ø€ Ü�{Š{Ø˜DŸJ™J t¨a¡x zÐ2Ñ2Ø—*‘*ØÜ×1Ñ1ñ	
ð 	
r8   rŸ   r1   z<segment_reduce(): Either lengths or offsets must be defined.)ÚNotImplementedErrorrœ   r0  )
r|  rl  rw  r¹   rx  ry  rz  r{  r�  r€  s
   `    `    r6   Úmeta_segment_reducer„  Ò  s|   ù€ ð ÑÜ!ØMó
ð 	
ö
ð ÑÙ,¨W¯]©]Ó;Ð;ð ÑàŸ™ c rÐ*¨g¯m©m¸BÑ.?À!Ñ.CÐ-EÑEˆÙ,¨]Ó;Ð;Ü
ÐUÓ
VÐVr8   c                 ó$   • U R                  S5      $ ©Nr2   ©r›   r¶   s    r6   Úmeta_maxrˆ  ö  ó   € ð �>‰>˜"ÓÐr8   c                 ó¼   • [         R                  " U R                  U45      n[        XU5      nU R	                  U5      U R	                  U[
        R                  S94$ ©Nr“   ©rO   Úreduction_dimsrœ   Ú_compute_reduction_shaper›   rV   r˜   ©r�   r‰   Úkeepdimrh  s       r6   Úmeta_max_dimr‘  ü  óP   € ä
×
Ò
˜tŸz™z¨C¨6Ó
2€CÜ+¨D°wÓ?€Là�‰�|Ó$Ø�‰�|¬5¯:©:ˆÐ6ðð r8   c                 ó$   • U R                  S5      $ r†  r‡  r¶   s    r6   Úmeta_minr”    r‰  r8   c                 ó¼   • [         R                  " U R                  U45      n[        XU5      nU R	                  U5      U R	                  U[
        R                  S94$ r‹  rŒ  r�  s       r6   Úmeta_min_dimr–    r’  r8   c                 ó´   • U R                  5       (       a  [        U R                  5      nO[        U [        R
                  S9u  p![        R                  " XS9$ ©N©rN   r“   )rñ   r   r^   r   r   ÚINT_TO_FLOATrV   r´   )r�   rS   rR   s      r6   Ú
meta_angler›    sH   € à‡�×ÑÜ/°·
±
Ó;‰ä,ØÜ ?× LÑ Lñ
‰ˆô ×Ò˜DÑ5Ð5r8   c                 óª   • [         R                  " XR                  5       U R                  5        UR	                  [         R
                  " U 5      5      $ rB   )rV   Ú_resize_output_r¨   r†   Úcopy_Úangle)r�   rÔ   s     r6   Úmeta_angle_outr   "  s4   € ä	×Ò˜#Ÿy™y›{¨D¯K©KÔ8Ø�9‰9”U—[’[ Ó&Ó'Ð'r8   c                 ó   • g rB   r2   )Úvals    r6   Úassert_asyncr£  (  ó   € à
r8   c                 ó   • g rB   r2   )r¢  Ú
assert_msgs     r6   Úassert_async_metar§  -  r¤  r8   c                 ó   • g rB   r2   )Úss    r6   Ú
print_metarª  2  r¤  r8   ©r^   r…   r†   r‡   r±   c                 ó,   • [         R                  " SSS9$ )Nr   rƒ   ©r†   r  r«  s        r6   Úmake_dep_tokenr®  7  s   € ô �;Š;�q Ñ(Ð(r8   c                 ój   • SSK Jn  [        U [        [        45      (       a  [        S5      eU" XUS9  g )Nr   )Úconstrain_rangeú'Constraining SymFloat or Symbool is nyi©r  Úmax)r.  r°  rr   r
   r	   Ú
ValueError)r¨   r  r³  r°  s       r6   Úsym_constrain_rangerµ  C  s0   € õ Fä�$œ¤7Ð+×,Ñ,ÜÐBÓCÐCÙ�D sÓ+r8   c                 ó.   • [         R                  XUS9  U$ ©Nr²  )r+   rµ  ©r¨   r  r³  Ú	dep_tokens       r6   Úfunctional_sym_constrain_rangerº  M  s   € ä×Ñ˜T°ÐÑ4ØÐr8   c                 ó<  • SSK Jn  Uc  Uc  [        R                  " U S:¬  5        g [	        U [
        [        45      (       a  [        S5      e[        U 5      [        L a7  Ub  [        R                  " X:¬  5        Ub  [        R                  " X:*  5        g U" XUS9  g )Nr   )Ú_constrain_range_for_sizer±  r²  )
r.  r¼  rV   rh   rr   r
   r	   r´  r}   rì   )r¨   r  r³  r¼  s       r6   Úsym_constrain_range_for_sizer½  S  s�   € õ Pà
�{�s‘{Ü�Š�T˜Q‘YÔØä�$œ¤7Ð+×,Ñ,ÜÐBÓCÐCÜˆDƒz”SÒØ‰?Ü�LŠL˜™Ô%Ø‰?Ü�LŠL˜™Ô%ØÙ˜d°Ó5r8   c                 ó.   • [         R                  XUS9  U$ r·  )r+   r½  r¸  s       r6   Ú'functional_sym_constrain_range_for_sizer¿  g  s   € ä×%Ñ% d¸Ð%Ñ=ØÐr8   c                 ó   • U$ rB   r2   )r¢  r¦  r¹  s      r6   Úfunctional_assert_async_metarÁ  m  s   € àÐr8   Úf_namec                 óä   • U R                  5       S:¼  d
   U S35       eU R                  S5      U R                  S5      :X  d.   U SU R                  S5       SU R                  S5       S35       eg )Nrö   z3: The input tensor must have at least 2 dimensions.rŸ   éþÿÿÿz5: A must be batches of square matrices, but they are ú by ú	 matrices)r‰   r¨   )r�   rÂ  s     r6   r²   r²   s  s}   € Ø�8‰8‹:˜‹?ð Øˆ(ÐEÐFóˆ?ð �9‰9�R‹=˜DŸI™I b›MÓ)ð Øˆ(ÐGÈÏ	É	ÐRTËÀÐVZÐ[_×[dÑ[dÐegÓ[hÐZiÐirÐsóÑ)r8   ÚAÚnamec                 óÊ  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " TR	                  S5      TR	                  S5      :H  U4S j5        [         R                  " TR	                  S5      T R	                  S5      :H  UUU 4S j5        g )Nc                  ó>   >• STR                    ST R                    S3$ )Nz:Expected b and A to be on the same device, but found b on z
 and A on ú	 instead.r­  ©rÇ  r�   s   €€r6   re   Ú(linearSolveCheckInputs.<locals>.<lambda>‚  s    ø€ ØHØ�{‰{ˆm˜: a§h¡h Z¨yñ:r8   c                  ó>   >• STR                    ST R                    S3$ )Nz=Expected b and A to have the same dtype, but found b of type z and A of type rË  r“   rÌ  s   €€r6   re   rÍ  Š  s    ø€ ØKØ�z‰zˆl˜/¨!¯'©'¨°)ñ=r8   rŸ   rÄ  c                  óR   >• ST R                  S5       ST R                  S5       S3$ )Nz3A must be batches of square matrices, but they are rÄ  rÅ  rŸ   rÆ  r§   ©rÇ  s   €r6   re   rÍ  ’  s+   ø€ ðØŸF™F 2›J˜< t¨A¯F©F°2«J¨<°yñBr8   c                  óž   >• ST ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       3
$ )NzIncompatible matrix sizes for z: each A matrix is rŸ   rÅ  z but each b matrix is rÄ  r§   )rÇ  rÈ  r�   s   €€€r6   re   rÍ  š  sM   ø€ Ø,¨T¨Fð 3ØŸ™ ›˜ D¨¯©°«¨Ø$ T§Y¡Y¨r£] O°4¸¿	¹	À"»°ñHr8   )rV   rh   r†   r^   r¨   )r�   rÇ  rÈ  s   ```r6   ÚlinearSolveCheckInputsrÒ    s�   ú€ Ü	‡L‚LØ�‰�q—x‘xÑõ	
ôô 
‡L‚LØ�
‰
�a—g‘gÑõ	
ôô 
‡L‚LØ	�‰ˆr‹
�a—f‘f˜R“jÑ ô	
ôô 
‡L‚LØ	�‰ˆr‹
�d—i‘i “mÑ#ö	
õr8   ÚtÚallow_low_precision_dtypesc                 óh  ^^• U R                   m[        R                  " U R                  5       =(       d    U R	                  5       UU4S j5        U(       d\  [        R                  " T[        R
                  [        R                  [        R                  [        R                  4;   UU4S j5        g g )Nc                  ó   >• T ST  3$ )Nz<: Expected a floating point or complex tensor as input. Got r2   ©r^   rÂ  s   €€r6   re   Ú(checkFloatingOrComplex.<locals>.<lambda>«  s   ø€ �6�(ÐVÐW\ÐV]Ñ^r8   c                  ó   >• T ST  3$ )Nz*: Low precision dtypes not supported. Got r2   r×  s   €€r6   re   rØ  °  s   ø€ �v�hÐHÈÈÑPr8   )	r^   rV   rh   rÿ   rñ   rZ   r\   rY   r[   )rÓ  rÂ  rÔ  r^   s    ` @r6   r³   r³   £  sn   ù€ ð
 �G‰G€EÜ	‡L‚LØ	×ÑÓ×/ §¡£Ý^ôö &Ü�ŠØ”e—k‘k¤5§<¡<´·±¼u¿}¹}ÐMÑMÝPõ	
ð &r8   Úarg_namec                 ób   ^^• [         R                  " U R                  5       S:¬  UU4S j5        g )Nrö   c                  ó   >• T ST  S3$ )Nz: The input tensor z! must have at least 2 dimensions.r2   )rÚ  rÂ  s   €€r6   re   ÚcheckIsMatrix.<locals>.<lambda>¸  s   ø€ �6�(Ð-¨h¨ZÐ7XÑYr8   )rV   rh   r‰   )rÇ  rÂ  rÚ  s    ``r6   ÚcheckIsMatrixrÞ  µ  s   ù€ Ü	‡L‚LØ	�‰‹�1‰ÝYõr8   ÚBrÜ   c                 ó  ^ ^^^• [        T T5        [        TT5        [        R                  " T(       a#  T R	                  S5      TR	                  S5      :H  O"T R	                  S5      TR	                  S5      :H  U UUU4S j5        g )NrÄ  rŸ   c                  ó¶   >• T ST(       a  SOS ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S	3$ )
Nz2: Incompatible shapes of A and B for the equation zAX = BzXA = Bz (rÄ  r;   rŸ   r¦   r|   r§   )rÇ  rß  rÂ  rÜ   s   €€€€r6   re   Ú#checkInputsSolver.<locals>.<lambda>Á  sV   ø€ ØˆhÐHÞ‰x XÐ.Ø�—‘˜“�˜A˜aŸf™f R›j˜\¨¨q¯v©v°b«z¨l¸!¸A¿F¹FÀ2»J¸<ÀqñJr8   )r²   rÞ  rV   rh   r¨   )rÇ  rß  rÜ   rÂ  s   ````r6   ÚcheckInputsSolverrã  ¼  sY   û€ Ü�a˜Ô Ü�!�VÔÜ	‡L‚LÞ$(ˆ�‰ˆr‹
�a—f‘f˜R“jÒ ¨a¯f©f°R«j¸A¿F¹FÀ2»JÑ.F÷	
õr8   ÚresultÚfn_nameÚresult_namec                 óv   ^ ^^^• [         R                  " TR                  TR                  :H  U UUU4S j5        g )Nc            	      óL   >• T  ST ST STR                    STR                    3	$ )Nz: Expected z5 and input tensors to be on the same device, but got z on z and input on r­  )rå  rà   rä  ræ  s   €€€€r6   re   Ú!checkSameDevice.<locals>.<lambda>Ñ  s0   ø€ Øˆi�{ ; -Ð/dØˆm˜4 §¡˜¨n¸U¿\¹\¸NñLr8   )rV   rh   r†   )rå  rä  rà   ræ  s   ````r6   ÚcheckSameDevicerê  É  s&   û€ ô 
‡L‚LØ�‰˜Ÿ™Ñ%÷	
õr8   ÚUPLOc                 ó¤   ^ • T R                  5       n[        R                  " [        T 5      S:H  =(       a    US:H  =(       d    US:H  U 4S j5        g )Nr1   ÚUÚLc                  ó   >• ST  3$ )Nz1Expected UPLO argument to be 'L' or 'U', but got r2   )rë  s   €r6   re   ÚcheckUplo.<locals>.<lambda>Ü  s   ø€ ÐCÀDÀ6ÑJr8   )ÚupperrV   rh   rÉ   )rë  ÚUPLO_uppercases   ` r6   Ú	checkUploró  Ø  s<   ø€ Ø—Z‘Z“\€NÜ	‡L‚LÜˆD‹	�Q‰×K˜N¨cÑ1×J°^ÀsÑ5JÜJõr8   ÚeigenvaluesÚeigenvectorsrî  Ú	compute_vc                 óP  • [        U S5        [        U5        [        U R                  5      nU(       a,  U R	                  U5      nUR                  U[        USS95        OU R	                  S/5      nUR                  5         U R	                  U[        U R                  5      S9nXT4$ )Nzlinalg.eighF©Ú	row_majorr   r“   )
r²   ró  rÊ   rœ   r›   rÒ   r   Úpopr`   r^   )rÇ  rë  rö  rœ   ÚvecsÚvalss         r6   Úmeta__linalg_eighrý  à  s‡   € ô �a˜Ô'Üˆd„Oä�—‘‹M€EÞØ�{‰{˜5Ó!ˆØ×Ñ˜Ô ;¸EÈUÑ SÕTà�{‰{˜A˜3Óˆà	‡I�I„KØ�;‰;�u¤O°A·G±GÓ$<ˆ;Ð=€Dàˆ:Ðr8   c                 óö   • [        U S5        [        R                  " U R                  5      (       a  U R                  O[        R                  " U R                  5      nU R                  U R                  S S US9$ )Nzlinalg.eigvalsrŸ   r“   )r²   rO   rŒ   r^   r   r›   rœ   )rà   Úcomplex_dtypes     r6   Úmeta__linalg_eigvalsr   ó  sf   € ô �eÐ-Ô.ô ×!Ò! %§+¡+×.Ñ.ð 	�Šä×.Ò.¨u¯{©{Ó;ð ð
 �?‰?˜5Ÿ;™; s¨Ð+°=ˆ?ÐAÐAr8   c                 ó¨  • [        U S5        [        R                  " U R                  5      (       a  U R                  O[        R                  " U R                  5      nU R                  U R                  S S US9nU R                  U R                  US9n[        U 5      S:H  nUR                  U R                  [        U R                  US95        X#4$ )Nz
linalg.eigrŸ   r“   rú   rø  )
r²   rO   rŒ   r^   r   r›   rœ   r   rÒ   r   )rà   rÿ  r¸   ÚvectorsÚis_cudas        r6   Úmeta_linalg_eigr  ÿ  s¶   € ô �e˜\Ô*ô ×!Ò! %§+¡+×.Ñ.ð 	�Šä×.Ò.¨u¯{©{Ó;ð ð
 �_‰_˜UŸ[™[¨¨"Ð-°]ˆ_ÐC€FØ�o‰o˜eŸk™k°ˆoÐ?€GÜ˜%Ó  FÑ*€GØ×ÑØ�‰Ô0°·±ÈÑPôð ˆ?Ðr8   r4  c                 óp   • U R                   R                  [        R                  S9R	                  SS5      $ )Nr°   rÄ  rŸ   )ÚmTrò   rV   rµ   Ú	transpose)r4  s    r6   ÚcloneBatchedColumnMajorr    s*   € Ø�6‰6�<‰<¤e×&=Ñ&=ˆ<Ð>×HÑHÈÈRÓPÐPr8   rñ  c                 ó   • [        U 5      $ rB   )r  )r�   rÇ  rñ  s      r6   Ú_cholesky_solve_helperr
    s   € ô # 4Ó(Ð(r8   c                 óÜ   ^ ^• [         R                  " T R                  S:¬  U 4S j5        [         R                  " TR                  S:¬  U4S j5        [        T TS5      u  p4[	        X4U5      $ )Nrö   c                  ó$   >• ST R                    S3$ )Nz-b should have at least 2 dimensions, but has ú dimensions instead©rª   r¶   s   €r6   re   Ú cholesky_solve.<locals>.<lambda>   s   ø€ Ð?ÀÇ	Á	¸{ÐJ]Ñ^r8   c                  ó$   >• ST R                    S3$ )Nz-u should have at least 2 dimensions, but has r  r  rÐ  s   €r6   re   r  $  s   ø€ Ð?ÀÇÁ¸xÐGZÑ[r8   Úcholesky_solve)rV   rh   rª   Ú!_linalg_broadcast_batch_dims_namer
  )r�   rÇ  rñ  Úself_broadcastedÚA_broadcasteds   ``   r6   r  r    sd   ù€ ô 
‡L‚LØ�	‰	�Q‰Ü^ôô 
‡L‚LØ	�‰�!‰Ü[ôô 'HØˆaÐ!ó'Ñ#Ðô "Ð"2À5ÓIÐIr8   c                 óž   • U R                  5       S:X  a#  [        R                  " U [        R                  S9$ [	        U S5        [        U 5      $ )Nr   r°   Úcholesky)rš   rV   r´   Úlegacy_contiguous_formatr²   r  ©r�   rñ  s     r6   r  r  ,  s@   € ð ‡z�zƒ|�qÓÜ×Ò ´E×4RÑ4RÑSÐSÜ�d˜JÔ'Ü" 4Ó(Ð(r8   c                 ó0   • [        U S5        [        U 5      $ )NÚcholesky_inverse)r²   r  r  s     r6   r  r  5  s   € ô �dÐ.Ô/Ü" 4Ó(Ð(r8   Úcheck_errorsc                 ó
  • [        U S5        [        U S5        U R                  n[        U5      n[	        US5      nU R                  U5      nUR                  X55        U R                  USUS-
   [        R                  S9nXg4$ )Nzlinalg.choleskyFr   rö   r“   )	r²   r³   rœ   rÉ   r   r›   rÒ   rV   rK  )rÇ  rñ  r  ÚA_shaperª   Ú	L_stridesrî  Úinfoss           r6   Úlinalg_cholesky_exr   =  s|   € ä�aÐ*Ô+Ü˜1Ð/Ô0à�g‰g€GÜˆw‹<€Dô ,¨G°UÓ;€IØ	�‰�GÓ€AØ‡M�M�'Ô%ð �K‰K˜  D¨1¡HÐ-´U·[±[ˆKÐA€EØˆ8€Or8   Útauc                 óJ  ^ ^^• [         R                  " T R                  S:¬  S 5        [         R                  " T R                  S5      T R                  S5      :¬  S 5        [         R                  " T R                  S5      TR                  S5      :¬  S 5        [         R                  " T R                  TR                  -
  S:H  U U4S j5        T R                  S:”  a<  T R                  S S nTR                  S S m[         R                  " TU:H  U4S	 j5        [         R                  " TR
                  T R
                  :H  U U4S
 j5        [        STT S5        [         R                  " T R                  [        T R                  SS9T R
                  T R                  S9$ )Nrö   c                  ó   • g)NzHtorch.linalg.householder_product: input must have at least 2 dimensions.r2   r2   r8   r6   re   Ú,linalg_householder_product.<locals>.<lambda>V  ó   € ÐZr8   rÄ  rŸ   c                  ó   • g)Nzbtorch.linalg.householder_product: input.shape[-2] must be greater than or equal to input.shape[-1]r2   r2   r8   r6   re   r$  Z  s   € Ðtr8   c                  ó   • g)Nz`torch.linalg.householder_product: input.shape[-1] must be greater than or equal to tau.shape[-1]r2   r2   r8   r6   re   r$  ^  s   € Ðrr8   r1   c                  ó<   >• STR                    ST R                    3$ )Nzptorch.linalg.householder_product: Expected tau to have one dimension less than input, but got tau.ndim equal to ú and input.ndim is equal to r  ©rà   r!  s   €€r6   re   r$  c  ó"   ø€ ð)Ø),¯©¨
Ð2NÈuÏzÉzÈlñ\r8   c                  ó   >• ST  3$ )Nzltorch.linalg.householder_product: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r2   ©Úactual_batch_tau_shapes   €r6   re   r$  m  ó   ø€ ð6Ø6LÐ5MñOr8   c                  ó<   >• STR                    ST R                    3$ )Nz,torch.linalg.householder_product: tau dtype z does not match input dtype r“   r*  s   €€r6   re   r$  u  s   ø€ Ø:¸3¿9¹9¸+Ø*¨5¯;©;¨-ñ9r8   z torch.linalg.householder_productr!  Frø  ©r¨   rÍ   r^   r†   )
rV   rh   rª   r¨   rœ   r^   rê  Úempty_stridedr   r†   )rà   r!  Úexpected_batch_tau_shaper.  s   `` @r6   Úlinalg_householder_productr4  O  sK  ú€ ô
 
‡L‚LØ�
‰
�a‰ÙZôô 
‡L‚LØ�
‰
�2‹˜%Ÿ*™* R›.Ñ(Ùtôô 
‡L‚LØ�
‰
�2‹˜#Ÿ(™( 2›,Ñ&Ùrôô
 
‡L‚LØ�
‰
�S—X‘XÑ Ñ"õ	
ôð ‡z�z�Aƒ~Ø#(§;¡;¨s°Ð#3Ð Ø!$§¡¨3¨B ÐÜ�ŠØ"Ð&>Ñ>ôô	
ô 
‡L‚LØ�	‰	�U—[‘[Ñ õ	
ôô Ð6¸¸UÀEÔJä×ÒØ�[‰[Ü*¨5¯;©;À%ÑHØ�k‰kØ�|‰|ñ	ð r8   c                 ó  • [        U S5        [        U SSS9  U R                  U R                  5      nUR	                  U R                  [        U R                  SS95        U R                  U R                  S S [        R                  S9nX#4$ )Nzlinalg.inv_exF)rÔ  rø  rÄ  r“   ©r²   r³   r›   rœ   rÒ   r   rV   rK  )rÇ  r  rî  r  s       r6   Úlinalg_inv_ex_metar7  …  so   € ä�a˜Ô)Ü˜1˜oÈ%ÒPà	�‰�A—G‘GÓ€AØ‡M�M�!—'‘'Ô6°q·w±wÈ%ÑPÔQà�K‰K˜Ÿ™  ˜¬E¯K©KˆKÐ8€EØˆ8€Or8   ÚLDÚpivotsÚinfo)Ú	hermitianr  r;  c                ót  • [        U S5        [        U S5        [        R                  " U R                  [        U R                  SS9U R                  U R                  S9nU R                  U R                  S S [        R                  S9nU R                  U R                  S S [        R                  S9nX4U4$ )Nztorch.linalg.ldl_factor_exFrø  r1  rŸ   r“   rÄ  )
r²   r³   rV   r2  rœ   r   r^   r†   r›   rì   )r�   r;  r  r8  r9  r:  s         r6   Úlinalg_ldl_factor_ex_metar=  ‘  sš   € ô �dÐ8Ô9Ü˜4Ð!=Ô>Ü	×	Ò	Ø�Z‰ZÜ*¨4¯:©:ÀÑGØ�j‰jØ�{‰{ñ	
€Bð �^‰^˜DŸJ™J s¨˜O´5·9±9ˆ^Ð=€FØ�>‰>˜$Ÿ*™* S b˜/´·±ˆ>Ð;€DØ�tÐÐr8   )r;  c                ój  ^ ^^• [        T S5        [        T S5        [        TT S5        [        R                  " TR
                  S:¬  U4S j5        T R                  S S n[        R                  " UTR                  :H  U4S j5        [        R                  " [        R                  " TR                  5      U4S j5        [        R                  " T R                  TR                  :H  UU 4S j5        [        TT 5      u  pV[        R                  " U[        USS	9TR                  TR                  S
9$ )Nztorch.linalg.ldl_solverö   c                  ó$   >• ST R                    S3$ )NzMtorch.linalg.ldl_solve: Expected B to have at least 2 dimensions, but it has r  r  )rß  s   €r6   re   Ú'linalg_ldl_solve_meta.<locals>.<lambda>´  ó   ø€ ðØŸ&™&˜Ð!4ñ6r8   rŸ   c                  ó$   >• ST R                    S3$ )Nzjtorch.linalg.ldl_solve: Expected LD.shape[:-1] and pivots.shape to be the same, but got pivots with shape ú instead©rœ   ©r9  s   €r6   re   r@  ¼  ó   ø€ ð)Ø)/¯©¨°hñ@r8   c                  ó"   >• ST R                    3$ )Nz<torch.linalg.ldl_solve: Expected pivots to be integers. Got r“   rE  s   €r6   re   r@  Ã  s   ø€ ÐNÈvÏ|É|ÈnÑ]r8   c                  ó<   >• STR                    ST R                    3$ )Nz!torch.linalg.ldl_solve: LD dtype z does not match b dtype r“   )rß  r8  s   €€r6   re   r@  Ç  s    ø€ Ð3°B·H±H°:Ð=UÐVW×V]ÑV]ÐU^Ñ_r8   Frø  r1  )r²   r³   rÒ  rV   rh   rª   rœ   rO   Úis_integer_dtyper^   Ú_linalg_broadcast_batch_dimsr2  r   r†   )r8  r9  rß  r;  Úexpected_pivots_shapeÚB_broadcast_sizerR   s   ```    r6   Úlinalg_ldl_solve_metarM  ¦  sø   ú€ ô �bÐ2Ô3Ü˜2Ð7Ô8Ü˜1˜bÐ":Ô;Ü	‡L‚LØ	�‰�!‰ô	
ôð ŸH™H S b˜MÐÜ	‡L‚LØ §¡Ñ-ô	
ôô 
‡L‚LÜ×Ò˜vŸ|™|Ó,Ü]ôô 
‡L‚LØ
�‰�A—G‘GÑÝ_ôô 7°q¸"Ó=ÑÐÜ×ÒØÜ*Ð+;ÀuÑMØ�g‰gØ�x‰xñ	ð r8   ÚPrí  )ÚpivotrO  c                ój  ^ • [         R                  " T R                  S:¬  U 4S j5        [        T R                  5      nUS   nUS   n[        X45      nX2S'   U(       a  T R                  U5      nOT R                  S/5      nXRS'   T R                  U5      nXRS'   XBS'   T R                  U5      nXgU4$ )Nrö   c                  ó$   >• ST R                    S3$ )Nz@linalg.lu: Expected tensor with 2 or more dimensions. Got size: rC  rD  rÐ  s   €r6   re   Ú linalg_lu_meta.<locals>.<lambda>×  s   ø€ ÐRÐST×SZÑSZÐR[Ð[cÑdr8   rÄ  rŸ   r   )rV   rh   rª   rÊ   rœ   r  r›   )	rÇ  rO  Úsizesrg  r  ÚkrN  rî  rí  s	   `        r6   Úlinalg_lu_metarU  Ò  s«   ø€ ô 
‡L‚LØ	�‰�!‰Üdôô
 �—‘‹M€EØˆb‰	€AØˆb‰	€AÜˆA‹	€Aàˆ"�IÞØ�K‰K˜Ó‰à�K‰K˜˜Óˆàˆ"�IØ	�‰�EÓ€Aàˆ"�IØˆ"�IØ	�‰�EÓ€AØ�ˆ7€Nr8   ÚLU)rO  r  c                óÔ  ^ • [         R                  " T R                  S:¬  U 4S j5        [        T R                  5      nUS   nUS   n[         R
                  " U[        USS9T R                  T R                  S9nUR                  5         [        XE5      US'   T R                  U[         R                  S9nUR                  5         T R                  U[         R                  S9nXgU4$ )	Nrö   c                  ó$   >• ST R                    S3$ )NzFtorch.lu_factor: Expected tensor with 2 or more dimensions. Got size: rC  rD  rÐ  s   €r6   re   Ú*linalg_lu_factor_ex_meta.<locals>.<lambda>ø  s   ø€ ÐXÐYZ×Y`ÑY`ÐXaÐaiÑjr8   rÄ  rŸ   Frø  r1  r“   )rV   rh   rª   rÊ   rœ   r2  r   r^   r†   rú  r  r›   rì   )	rÇ  rO  r  rS  rg  r  rV  r9  r:  s	   `        r6   Úlinalg_lu_factor_ex_metarZ  î  sÅ   ø€ ô 
‡L‚LØ	�‰�!‰Üjôô
 �—‘‹M€EØˆb‰	€AØˆb‰	€Aä	×	Ò	ØÜ*¨5¸EÑBØ�g‰gØ�x‰xñ	
€Bð 
‡I�I„KÜ�A“	€Eˆ"�IØ�[‰[˜¤e§i¡iˆ[Ð0€Fð 
‡I�I„KØ�;‰;�u¤E§I¡Iˆ;Ð.€Dà�tÐÐr8   )rÜ   Úadjointr[  c                ó
  ^ ^^• [        T S5        [        R                  " T R                  TR                  :H  UU 4S j5        [        R                  " TR                  [        R                  :H  S 5        [        T S5        [        T TUS5        [        R                  " T R                  S5      TR                  S5      :H  S 5        [        R                  " T R                  S S TR                  :H  U4S j5        [        TT 5      u  pV[        R                  " U[        XS(       + S9TR                  TR                  S	9nUR                  5       S
:w  a,  U(       d%  UR                  5       (       a  UR                  5       nU$ )Nztorch.linalg.lu_solvec                  ó>   >• STR                    ST R                    S3$ )NzPlinalg.lu_solve: Expected LU and B to have the same dtype, but found LU of type ú and B of type rC  r“   )rß  rV  s   €€r6   re   Ú&linalg_lu_solve_meta.<locals>.<lambda>   s#   ø€ ð$Ø$&§H¡H :¨_¸Q¿W¹W¸IÀXñOr8   c                  ó   • g)NzElinalg.lu_solve: pivots should be a Tensor of scalar type torch.int32r2   r2   r8   r6   re   r_  '  s   € ÐWr8   zlinalg.lu_solverŸ   c                  ó   • g)NzYlinalg.lu_solve: Number of pivots per batch should be same as the dimension of the matrixr2   r2   r8   r6   re   r_  /  s   € Ðkr8   c                  ó$   >• ST R                    S3$ )Nzclinalg.lu_solve: Expected LU.shape[:-1] and pivots.shape to be the same, but got pivots with shape rC  rD  rE  s   €r6   re   r_  5  rF  r8   rø  r1  r   )r³   rV   rh   r^   rì   r²   rã  r¨   rœ   rJ  r2  r   r†   rš   rñ   Úconj)rV  r9  rß  rÜ   r[  rL  rR   rä  s   ```     r6   Úlinalg_lu_solve_metard    s-  ú€ ô ˜2Ð6Ô7Ü	‡L‚LØ
�‰�A—G‘GÑõ	
ôô 
‡L‚LØ�‰œŸ	™	Ñ!ÙWôô �bÐ1Ô2Ü�b˜!˜TÐ#4Ô5Ü	‡L‚LØ
�‰�‹�v—{‘{ 2“Ñ&Ùkôô 
‡L‚LØ
�‰��"ˆ˜Ÿ™Ñ%ô	
ôô 7°q¸"Ó=ÑÐä× Ò ØÜ*Ð+;ÄxÑPØ�g‰gØ�x‰xñ	€Fð ‡|�|ƒ~˜Ó¦4Ø×Ñ×ÑØ—[‘[“]ˆFà€Mr8   Úunpack_dataÚunpack_pivotsc                 ó6  ^ • [         R                  " T R                  S:¬  U 4S j5        U(       a3  [         R                  " UR                  [         R                  :H  S 5        [        T R                  5      nUS   nUS   n[        XV5      nXTS'   U(       a  T R                  U5      nOT R                  S/5      nU(       a/  XtS'   T R                  U5      n	XtS'   XdS'   T R                  U5      n
O$T R                  S/5      n	T R                  S/5      n
X‰U
4$ )Nrö   c                  ó$   >• ST R                    S3$ )NzFtorch.lu_unpack: Expected tensor with 2 or more dimensions. Got size: rC  rD  )rV  s   €r6   re   Ú lu_unpack_meta.<locals>.<lambda>U  s   ø€ ÐXÐY[×YaÑYaÐXbÐbjÑkr8   c                  ó   • g)Nz´torch.lu_unpack: LU_pivots is expected to be a contiguous tensor of torch.int32 dtype.
Note: this function is intended to be used with the output produced by torch.linalg.lu_factorr2   r2   r8   r6   re   ri  Z  s   € ðpr8   rÄ  rŸ   r   )	rV   rh   rª   r^   rK  rÊ   rœ   r  r›   )rV  r9  re  rf  rS  rg  r  rT  rN  rî  rí  s   `          r6   Úlu_unpack_metark  K  sô   ø€ ô 
‡L‚LØ
�‰�1‰Ükôö Ü�ŠØ�L‰LœEŸK™KÑ'ñô	
ô �—‘‹N€EØˆb‰	€AØˆb‰	€AÜˆA‹	€AØˆ"�IÞØ�L‰L˜Ó‰à�L‰L˜!˜ÓˆÞØˆb‰	Ø�L‰L˜ÓˆØˆb‰	Øˆb‰	Ø�L‰L˜Ó‰à�L‰L˜!˜ÓˆØ�L‰L˜!˜ÓˆØ�ˆ7€Nr8   Úmodec                 ó�   ^ • T S:X  a  SnSnX4$ T S:X  a  SnSnX4$ T S:X  a  SnSnX4$ [         R                  " SU 4S j5        WW4$ )NÚreducedTÚcompleteFÚrc                  ó   >• ST  S3$ )Nzqr received unrecognized mode 'z=' but expected one of 'reduced' (default), 'r', or 'complete'r2   )rl  s   €r6   re   Ú _parse_qr_mode.<locals>.<lambda>‚  s   ø€ Ø1°$°ð 8Nñ Or8   ©rV   rh   )rl  Ú	compute_qrn  s   `  r6   Ú_parse_qr_moderu  u  s€   ø€ ØˆyÓØˆ	Øˆð ÐÐð 
�Ó	Øˆ	Øˆð ÐÐð 
�‹Øˆ	Øˆð ÐÐô 	�ŠØôô	
ð �gÐÐr8   ÚQÚRc                 ó  • [        U S5        [        U S5        [        U5      u  p#U R                  S   nU R                  S   n[	        XE5      nU(       aO  [        U R                  5      nU(       a  UOUUS'   U R                  U5      nUR                  U[        USS95        OU R                  S/5      n[        U R                  5      n	U(       d  U(       d  UOUU	S'   U R                  U	5      n
U
R                  U	[        U	SS95        XŠ4$ )Nz	linalg.qrrÄ  rŸ   Frø  r   )	rÞ  r³   ru  rœ   r  rÊ   r›   rÒ   r   )rÇ  rl  rt  Úreduced_moderg  r  rT  ÚQ_shaperv  ÚR_shaperw  s              r6   Úlinalg_qr_metar|  Š  sâ   € ô �!�[Ô!Ü˜1˜kÔ*ä,¨TÓ2Ñ€Ià	�‰�‰€AØ	�‰�‰€AÜˆA‹	€AæÜ�q—w‘w“-ˆÞ'‘a¨Qˆ�‰Ø�K‰K˜Ó ˆØ	�‰�gÔ:¸7ÈeÑTÕUà�K‰K˜˜Óˆô �1—7‘7‹m€GÞ#®9‘!¸!€GˆB�KØ	�‰�GÓ€AØ‡M�M�'Ô6°wÈ%ÑPÔQØˆ4€Kr8   ÚsignÚ	logabsdetc                 ót  • [        U S5        [        U SS5        U R                  nU R                  US S 5      nU R                  US S [	        U R
                  5      S9n[        R                  " U[        US5      U R
                  U R                  S9nU R                  US S [        R                  S9nX#XE4$ )Nzlinalg.slogdetFrÄ  r“   r1  rŸ   )r²   r³   rœ   r›   r`   r^   rV   r2  r   r†   rK  )rÇ  rœ   r}  r~  rV  r9  s         r6   Ú_linalg_slogdetr€  ¦  s®   € ô �aÐ)Ô*Ü˜1Ð.°Ô6Ø�G‰G€EØ�;‰;�u˜S˜b�zÓ"€DØ—‘˜E # 2˜J¬o¸a¿g¹gÓ.F�ÐG€IÜ	×	Ò	ØÜ*¨5°%Ó8Ø�g‰gØ�x‰xñ	
€Bð �[‰[˜˜s ˜¬5¯;©;ˆ[Ð7€FØ˜BÐ&Ð&r8   Úfull_matricesÚ
compute_uvÚdriverc                 ób  • [        U S5        [        U S5        [        U R                  S S 5      nU R                  S   nU R                  S   n[	        XV5      nU(       a‚  XEU(       a  UOU/-   nU R                  U5      n	U	R                  U[        USS95        XA(       a  UOUU/-   n
U R                  U
5      n[        U 5      S:H  nUR                  U
[        X¬S95        O$U R                  S/5      n	U R                  S/5      nU R                  XG/-   [        U R                  5      S9nX�U4$ )	Nz
linalg.svdrÄ  rŸ   Frø  rú   r   r“   )rÞ  r³   rÊ   rœ   r  r›   rÒ   r   r   r`   r^   )rÇ  r�  r‚  rƒ  rØ   rg  r  rT  ÚU_shaperí  ÚV_shapeÚVr  ÚSs                 r6   Ú_linalg_svd_metar‰  º  s  € ô �!�\Ô"Ü˜1˜lÔ+ä�a—g‘g˜c˜r�lÓ#€JØ	�‰�‰€AØ	�‰�‰€AÜˆA‹	€AæØ®¡1¸1Ð=Ñ=ˆØ�K‰K˜Ó ˆØ	�‰�gÔ:¸7ÈeÑTÔUà¥]¡¸¸1Ð=Ñ=ˆØ�K‰K˜Ó ˆô
 ˜a“. FÑ*ˆØ	�‰�gÔ:¸7ÑVÕWð �K‰K˜˜ÓˆØ�K‰K˜˜Óˆð 	
�‰�J Ñ$¬O¸A¿G¹GÓ,DˆÐE€AØ�ˆ7€Nr8   Úarg1Úarg2c                 ó  • U R                   S S nUR                   S S n[        X#5      n[        U5      nXPR                  S5      U R                  S5      /-  n[        U5      nXaR                  S5      UR                  S5      /-  nXV4$ )NrÄ  rŸ   )rœ   r#   rÊ   r¨   )rŠ  r‹  Úarg1_batch_sizesÚarg2_batch_sizesÚexpand_batch_portionÚarg1_expand_sizeÚarg2_expand_sizes          r6   rJ  rJ  à  s�   € ð
 —z‘z # 2�ÐØ—z‘z # 2�ÐÜ,Ð-=ÓPÐäÐ0Ó1ÐØŸ™ 2›¨¯	©	°"«Ð6Ñ6ÐäÐ0Ó1ÐØŸ™ 2›¨¯	©	°"«Ð6Ñ6ÐØÐ-Ð-r8   c                 óÐ   • U(       a  [        XU5        [        X5      u  p4X0R                  :X  a  U OU R                  U5      nXAR                  :X  a  UOUR                  U5      nXV4$ rB   )rÒ  rJ  rœ   Úexpand)rŠ  r‹  rÈ  r�  r‘  Úarg1_broadcastedÚarg2_broadcasteds          r6   r  r  ñ  sh   € ö Ü˜t¨4Ô0ä)EÀdÓ)QÑ&Ðð !§J¡JÓ.‰°D·K±KÐ@PÓ4Qð ð !§J¡JÓ.‰°D·K±KÐ@PÓ4Qð ð Ð-Ð-r8   r©   c                 ó´   • U R                   S S nUR                  S:H  =(       d2    U R                  S-
  UR                  :H  =(       a    UR                   U:H  nU$ )NrŸ   r1   )rœ   rª   )rà   r©   Úexpected_batched_rhs_shapeÚvector_cases       r6   Úlinalg_solve_is_vector_rhsr™    sS   € Ø!&§¡¨S¨bÐ!1ÐØ—*‘* ‘/÷ Ø�
‰
�Q‰˜%Ÿ*™*Ñ$×R¨¯©Ð8RÑ)Rð ð Ðr8   )rÜ   r  rä  rV  r9  r:  c                óì  ^ ^• [        T S5        [        R                  " T R                  TR                  :H  U U4S j5        [	        T T5      nU(       a  TR                  S5      OTn	[        T X’S5        [        U	T 5      u  p«[        R                  " U=(       d    U(       + S 5        U(       a  U
S S OU
n[        R                  " U[        XÂ(       + 5      TR                  TR                  S9nT R                  n[        R                  " U[        US5      T R                  T R                  S9nT R                  US S [        R                  S9nT R                  US S [        R                  S9nXEXg4nXßUU4n[        S	 U 5       5      (       aa  [        UU5       HQ  u  nn[!        UUR                  5        UR#                  UR                  UR%                  5       5        ['        UUSS
9  MS     U$ )Nzlinalg.solvec                  ó>   >• ST R                    STR                    S3$ )NzKlinalg.solve: Expected A and B to have the same dtype, but found A of type r^  rC  r“   )rÇ  rß  s   €€r6   re   Ú"_linalg_solve_ex.<locals>.<lambda>  s    ø€ ØYØ�w‰wˆi� q§w¡w i¨xñ9r8   rŸ   c                  ó   • g)Nz•linalg.solve: Vector broadcasting of the left hand side is not supported for left=False. In this case linalg.solve is equivalent to B / A.squeeze(-1)r2   r2   r8   r6   re   rœ  '  s   € ðKr8   r1  Fr“   rÄ  c              3   ó(   #   • U  H  oS Lv •  M
     g 7frB   r2   )rt   r;   s     r6   rv   Ú#_linalg_solve_ex.<locals>.<genexpr>>  s   é € Ð
&¢#˜Q�D�=¢#ùs   ‚)Ú	copy_fromÚcopy_toÚexact_dtype)r³   rV   rh   r^   r™  Ú	unsqueezerã  rJ  r2  r   r†   rœ   r›   rK  ÚallÚzipr   rÒ   rÍ   r!   )rÇ  rß  rÜ   r  rä  rV  r9  r:  r˜  ÚB_ÚB_broad_shaperR   Úresult_shapeÚresult_rœ   ÚLU_Úpivots_Úinfo_rÔ   Úresrp  Úos   ``                    r6   Ú_linalg_solve_exr¯    s¦  ù€ ô ˜1˜nÔ-Ü	‡L‚LØ	�‰�1—7‘7Ñõ	
ôô -¨Q°Ó2€KÞ'ˆ�‰�RŒ¨Q€BÜ�a˜ >Ô2Ü3°B¸Ó:Ñ€MÜ	‡L‚LØ×�K”ñ	
ôö *5�=  "Ñ%¸-€LÜ×!Ò!ØÜ*¨<¼ÓBØ�g‰gØ�x‰xñ	€Gð �G‰G€EÜ
×
Ò
ØÜ*¨5°%Ó8Ø�g‰gØ�x‰xñ	€Cð �k‰k˜%  ˜*¬E¯K©KˆkÐ8€GØ�K‰K˜˜c˜r˜
¬%¯+©+ˆKÐ6€EØ�vÐ
$€CØ˜ %Ð
(€CÜ
Ñ
&¡#Ó
&×&Ñ&Ü˜˜S–M‰DˆAˆqä˜a §¡Ô)à�M‰M˜!Ÿ'™' 1§8¡8£:Ô.Ü Q°¸uÔEñ "ð €Jr8   )rÜ   ÚunitriangularrÔ   r°  rÔ   c                óì  • Uc  U R                  S/5      n[        U[        5      (       d   e[        XUS5        [	        XS 5      u  pgUR                  SS5      R                  5       =(       a    UR                  5       nU(       a  [        XVR                  5      nU$ [        XVR                  5      (       a=  UR                  UR                  SS5      R                  5        UR                  SS5        U$ )Nr   zlinalg.solve_triangularrÄ  rŸ   )r›   rr   r   rã  r  r  re  Úis_conjr   rœ   r    rÑ   Ú
transpose_)	rÇ  rß  rñ  rÜ   r°  rÔ   r¦  ÚA_Úavoid_copy_As	            r6   Úlinalg_solve_triangular_metar¶  H  sÄ   € ð �{Ø�k‰k˜1˜#ÓˆÜ�cœ:×&Ñ&Ð&Ð&Ü�a˜DÐ";Ô<Ü.¨q°TÓ:�F€BØ—<‘<  BÓ'×5Ñ5Ó7×H¸B¿J¹J»L€LÞÜ §X¡XÓ.ˆð €Jô   §X¡X×.Ñ.Ø�K‰K˜Ÿ™ R¨Ó,×2Ñ2Ô3Ø�N‰N˜2˜rÔ"Ø€Jr8   ÚXÚM)r¢  r  c                 óð  ^ ^• [         R                  " T R                  S:¬  U 4S j5        [         R                  " TR                  S:¬  U4S j5        [        T TS5        TR                  [         R
                  :X  aw  [        T T5      u  pV[         R                  " U[        USS9T R                  T R                  S9n[         R                  " U[        USS9TR                  TR                  S9nXx4$ TR                  [         R                  :X  d  TR                  [         R                  :X  a+  [         R                  " T 5      nT R                  S/5      nXx4$ [         R                  " SS	 5        WW4$ )
Nrö   c                  ó$   >• ST R                    S3$ )NzMtorch.triangular_solve: Expected b to have at least 2 dimensions, but it has r  r  r¶   s   €r6   re   Ú'triangular_solve_meta.<locals>.<lambda>m  s   ø€ ðØŸ)™)˜Ð$7ñ9r8   c                  ó$   >• ST R                    S3$ )NzMtorch.triangular_solve: Expected A to have at least 2 dimensions, but it has r  r  rÐ  s   €r6   re   r»  t  rA  r8   Útriangular_solveFrø  r1  r   c                  ó   • g)Nz+triangular_solve: Got an unexpected layout.r2   r2   r8   r6   re   r»  Ž  s   € Ð$Qr8   )rV   rh   rª   rÒ  r…   ÚstridedrJ  r2  r   r^   r†   Ú
sparse_csrÚ
sparse_bsrr´   r›   )	r�   rÇ  rñ  r  r°  Úself_broadcast_sizeÚA_broadcast_sizeÚsolutionÚcloned_coefficients	   ``       r6   Útriangular_solve_metarÆ  b  sC  ù€ ô 
‡L‚LØ�	‰	�Q‰ô	
ôô 
‡L‚LØ	�‰�!‰ô	
ôô ˜4 Ð$6Ô7à‡x�x”5—=‘=Ó Ü0LÈTÐSTÓ0UÑ-ÐÜ×&Ò&Ø$Ü.Ð/BÈeÑTØ—*‘*Ø—;‘;ñ	
ˆô #×0Ò0Ø!Ü.Ð/?È5ÑQØ—'‘'Ø—8‘8ñ	
Ðð Ð'Ð'ð 
�‰”U×%Ñ%Ó	%¨¯©´U×5EÑ5EÓ)EÜ×#Ò# DÓ)ˆØ!Ÿ^™^¨Q¨CÓ0Ðð Ð'Ð'ô 	�Š�UÑQÔRØÐ'Ð'Ð'r8   c                 ó^  • [        U S5        [        U S5        U R                  U R                  S S 5      nU R                  U R                  5      nUR	                  U R                  [        U R                  SS95        U R                  U R                  S S [        R                  S9nXU4$ )Nz
linalg.detrÄ  Frø  rŸ   r“   r6  )rÇ  ÚdetrV  r9  s       r6   Ú_linalg_det_metarÉ  “  sˆ   € ä�a˜Ô&Ü˜1˜lÔ+à
�+‰+�a—g‘g˜c˜r�lÓ
#€Cà	
�‰�Q—W‘WÓ	€BØ‡N�N�1—7‘7Ô7¸¿¹È5ÑQÔRà�[‰[˜Ÿ™  "˜¬U¯[©[ˆ[Ð9€FØ�Fˆ?Ðr8   c                 óX  ^ ^^^^^• [         R                  " T R                  S:¬  S 5        [         R                  " TR                  S:¬  S 5        U(       a  SOSm[         R                  " TR                  T   TR                  S   :¬  U4S j5        [         R                  " TR                  T   T R                  S   :H  U4S j5        [         R                  " TR                  S   T R                  S   :*  S 5        [         R                  " T R                  TR                  -
  S	:H  U U4S
 j5        [         R                  " T R                  TR                  :H  U U4S j5        T R                  S:”  ai  T R                  S S nTR                  S S m[         R                  " TU:H  U4S j5        TR                  S S m[         R                  " TU:H  U4S j5        [         R                  " TR                  T R                  :H  U U4S j5        [         R                  " TR                  T R                  :H  U U4S j5        [        STT S5        [        STT S5        [         R                  " TR                  [        TR                  SS9TR                  TR                  S9$ )Nrö   c                  ó   • g)Nz3torch.ormqr: input must have at least 2 dimensions.r2   r2   r8   r6   re   Úormqr.<locals>.<lambda>«  ó   € Ð!Vr8   c                  ó   • g)Nz3torch.ormqr: other must have at least 2 dimensions.r2   r2   r8   r6   re   rÌ  ®  rÍ  r8   rÄ  rŸ   c                  ó   >• ST  S3$ )Nútorch.ormqr: other.shape[z0] must be greater than or equal to tau.shape[-1]r2   ©Úleft_size_conditions   €r6   re   rÌ  ´  s   ø€ Ð+Ð,?Ð+@Ð@pÑqr8   c                  ó   >• ST  S3$ )NrÐ  z"] must be equal to input.shape[-2]r2   rÑ  s   €r6   re   rÌ  ¸  s   ø€ Ð+Ð,?Ð+@Ð@bÑcr8   c                  ó   • g)NzHtorch.ormqr: tau.shape[-1] must be less than or equal to input.shape[-1]r2   r2   r8   r6   re   rÌ  ½  r%  r8   r1   c                  ó<   >• STR                    ST R                    3$ )Nz[torch.ormqr: Expected tau to have one dimension less than input, but got tau.ndim equal to r)  r  r*  s   €€r6   re   rÌ  Â  r+  r8   c                  ó<   >• STR                    ST R                    3$ )Nzhtorch.ormqr: Expected other to have the same number of dimensions as input, but got other.ndim equal to r)  r  ©rà   r©   s   €€r6   re   rÌ  É  s&   ø€ ð+Ø+0¯:©:¨,Ð6RÐSX×S]ÑS]ÐR^ñ`r8   c                  ó   >• ST  3$ )NzWtorch.ormqr: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r2   r-  s   €r6   re   rÌ  Ô  r/  r8   c                  ó   >• ST  3$ )NzYtorch.ormqr: Expected batch dimensions of other to be equal to input.shape[:-2], but got r2   )Úactual_batch_other_shapes   €r6   re   rÌ  Ý  s   ø€ ð6Ø6NÐ5OñQr8   c                  ó<   >• ST R                    STR                    3$ )NzPtorch.ormqr: Expected input and tau to have the same dtype, but input has dtype z and tau has dtype r“   r*  s   €€r6   re   rÌ  å  s"   ø€ ð#Ø#(§;¡; -Ð/BÀ3Ç9Á9À+ñOr8   c                  ó<   >• ST R                    STR                    3$ )NzRtorch.ormqr: Expected input and other to have the same dtype, but input has dtype z and other has dtype r“   r×  s   €€r6   re   rÌ  ì  s"   ø€ ð#Ø#(§;¡; -Ð/DÀUÇ[Á[ÀMñSr8   ztorch.ormqrr!  r©   Frø  r1  )	rV   rh   rª   rœ   r^   rê  r2  r   r†   )	rà   r!  r©   rÜ   r  Úexpected_batch_shaperÚ  r.  rÒ  s	   ```   @@@r6   ÚormqrrÞ  ¡  s  ý€ ô 
‡L‚LØ�
‰
�a‰ÑVôô 
‡L‚LØ�
‰
�a‰ÑVôö !%™"¨"ÐÜ	‡L‚LØ�‰Ð'Ñ(¨C¯I©I°b©MÑ9Üqôô 
‡L‚LØ�‰Ð'Ñ(¨E¯K©K¸©OÑ;Ücôô
 
‡L‚LØ�	‰	�"‰˜Ÿ™ R™Ñ(ÙZôô
 
‡L‚LØ�
‰
�S—X‘XÑ Ñ"õ	
ôô 
‡L‚LØ�
‰
�e—j‘jÑ õ	
ôð ‡z�z�Aƒ~Ø$Ÿ{™{¨3¨BÐ/ÐØ!$§¡¨3¨B ÐÜ�ŠØ"Ð&:Ñ:ôô	
ð $)§;¡;¨s°Ð#3Ð Ü�ŠØ$Ð(<Ñ<ôô	
ô 
‡L‚LØ�	‰	�U—[‘[Ñ õ	
ôô 
‡L‚LØ�‰�u—{‘{Ñ"õ	
ôô �M 3¨¨uÔ5Ü�M 5¨%°Ô9ä×ÒØ�[‰[Ü*¨5¯;©;À%ÑHØ�k‰kØ�|‰|ñ	ð r8   c                ó²  ^ ^^• [         R                  " [        T5      ST-  :H  UU4S j5        T R                  nUTS-   :H  nUnU(       + nU(       a1  [	        SU5       H   nU=(       a    T R                  U5      S:g  nM"     O/[	        U5       H   nU=(       a    T R                  U5      S:g  nM"     [         R                  " U=(       d    UUU 4S j5        g )Nrö   c                  ó,   >• SST -   S[        T5       3$ )Nzpadding size is expected to be rö   z, but got: ©rÉ   )r‰   Úpaddings   €€r6   re   Ú,_padding_check_valid_input.<locals>.<lambda>   s   ø€ Ð1°!°c±'°¸+ÄcÈ'ÃlÀ^ÑTr8   r1   r   c                  ó:   >• ST S-    ST S-    STR                    3$ )Nú	Expected r1   zD or rö   zcD (batch mode) tensor with possibly 0 batch size and other non-zero dimensions for input, but got: rD  )r‰   rà   s   €€r6   re   rã    s-   ø€ Ø˜˜a™�y  c¨A¡g Yð /AØAFÇÁÀñOr8   )rV   rh   rÉ   rª   rË   r¨   )rà   râ  r‰   Ú	input_dimÚis_batch_modeÚvalid_batch_modeÚvalid_non_batch_moderÛ   s   ```     r6   Ú_padding_check_valid_inputrê  ý  s»   ú€ Ü	‡L‚LÜˆG‹˜˜C™ÑÝTôð
 —
‘
€Ià #¨¡'Ñ*€Mà$ÐØ,Ô,Ðæä�q˜)Ö$ˆAØ/×F°E·J±J¸q³MÀQÑ4FÒò %ô �yÖ!ˆAØ#7×#N¸E¿J¹JÀq»MÈQÑ<NÒ ñ "ô 
‡L‚LØ×0Ð0õ	
õr8   c                óö  ^ ^^^^	^
• SnSmSnT R                   S:X  a  T R                  S5      nTS-  mUS-  n[        T USS9  Uu  m	m
T R                  U5      nT R                  T5      mTT	-   T
-   mU(       a-  [        R                  " T	T:  =(       a    T
T:  UU U	U
4S j5        [        R                  " TS:¬  UU4S j5        T R                   S:X  a  T R                  UT45      $ T R                  XET45      $ )Nr   r1   r.   r    c                  ó4   >• ST ST ST  STR                    3$ ©NzcArgument #4: Padding size should be less than the corresponding input dimension, but got: padding (r{   ú) at dimension ú
 of input rD  ©Údim_wrà   Úpad_lÚpad_rs   €€€€r6   re   Ú_pad1d_common.<locals>.<lambda>1  ó-   ø€ ð%Ø%* G¨2¨e¨W°OÀEÀ7È*ÐUZ×U`ÑU`ÐTañcr8   c                  ó   >• ST  ST 3$ )Nz
input (W: z%) is too small. Calculated output W: r2   )Úinput_wÚoutput_ws   €€r6   re   rô  9  s   ø€ �*˜W˜IÐ%JÈ8È*ÑUr8   rö   )rª   r¨   rê  rV   rh   r›   )rà   râ  Úis_reflectionÚ	dim_planeÚnbatchÚnplanerñ  r÷  rø  rò  ró  s   `     @@@@@r6   Ú_pad1d_commonrý    sì   ý€ Ø€IØ€EØ€Fà‡z�z�QƒØ—‘˜A“ˆØ�‰
ˆØ�Q‰ˆ	ä˜u g°1Ò5à�L€Eˆ5à�Z‰Z˜	Ó"€FØ�j‰j˜Ó€GØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�A‰ÝUôð
 ‡z�z�QƒØ�‰ ¨Ð1Ó2Ð2à�‰ °Ð9Ó:Ð:r8   c                 ó   • [        XSS9$ ©NT©rù  )rý  ©rà   râ  s     r6   Úmeta_reflection_pad1dr  B  ó   € ô ˜°tÑ<Ð<r8   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad1d" not implemented for 'Ú'©r^   Ú__str__©rà   s   €r6   re   Ú(meta_replication_pad1d.<locals>.<lambda>M  ó   ø€ Ð=¸e¿k¹k×>QÑ>QÓ>SÐ=TÐTUÑXr8   Fr   )rV   rh   r^   Úboolrý  r  s   ` r6   Úmeta_replication_pad1dr  H  ó5   ø€ ô 
‡L‚LØ�‰”u—z‘zÑ!ÜXôô ˜ °uÑ=Ð=r8   c                óÊ  ^ ^^^^^• SmU(       d$  [         R                  " [        U5      S:H  S 5        TR                  S:X  a  TS-  mUu  mmTR	                  T5      nUT-   T-   mU(       a-  [         R                  " TU:  =(       a    TU:  UUUU4S j5        [         R                  " TT R	                  T5      :H  UU U4S j5        TR                  TR                  5      $ )Nr1   rö   c                  ó   • g)Nz padding size is expected to be 2r2   r2   r8   r6   re   Ú(_pad1d_backward_common.<locals>.<lambda>U  s   € Ð0Rr8   r.   c                  ó4   >• ST ST ST  STR                    3$ rí  rD  rð  s   €€€€r6   re   r  b  rõ  r8   c                  ó2   >• ST STR                  T 5       3$ ©Nz(grad_output width unexpected. Expected: ú, Got: r§   ©rñ  Úgrad_outputrø  s   €€€r6   re   r  j  ó    ø€ Ð:¸8¸*ÀGÈK×L\ÑL\Ð]bÓLcÐKdÑer8   ©rV   rh   rÉ   rª   r¨   r›   rœ   )	r  rà   râ  rù  r÷  rñ  rø  rò  ró  s	   ``   @@@@r6   Ú_pad1d_backward_commonr  R  s¹   ý€ Ø€EÞÜ�Š”S˜“\ QÑ&Ñ(RÔSà‡z�z�QƒØ�‰
ˆà�L€Eˆ5à�j‰j˜Ó€GØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôð
 �?‰?˜5Ÿ;™;Ó'Ð'r8   Ú
grad_inputc                 ó   • [        XUSS9$ rÿ  ©r  ©r  rà   râ  s      r6   Úmeta_reflection_pad1d_backwardr  p  s   € ô " +°gÈTÑRÐRr8   c                 ó   • [        XUSS9$ )NFr   r  r  s      r6   Úmeta_replication_pad1d_backwardr!  v  s   € ô " +°gÈUÑSÐSr8   c                óÂ  ^ ^^^	^
^^^^^^• SmSmSnSn[        T USS9  T R                  nUS:X  a   T R                  S5      nTS-  mTS-  mUS-  nUu  mmmmT R                  U5      nT R                  T5      m	T R                  T5      m
T	T-   T-   mT
T-   T-   mU(       aZ  [        R                  " TT
:  =(       a    TT
:  UU UU4S j5        [        R                  " TT	:  =(       a    TT	:  UU UU4S j5        [        R                  " TS:¬  =(       d    TS:¬  U	U
UU4S j5        T R                  S	:X  a  T R                  UTT45      $ T R                  XFTT45      $ )
Nrö   r1   r   r    é   c                  ó4   >• ST ST ST  STR                    3$ rí  rD  rð  s   €€€€r6   re   Ú_pad2d_common.<locals>.<lambda>–  rõ  r8   c                  ó4   >• ST ST ST  STR                    3$ ©NzcArgument #6: Padding size should be less than the corresponding input dimension, but got: padding (r{   rî  rï  rD  ©Údim_hrà   Úpad_bÚpad_ts   €€€€r6   re   r%  �  rõ  r8   c                  ó    >• ST  ST ST ST 3$ )Nz
input (H: ú W: z%) is too small. Calculated output H: r2   )Úinput_hr÷  Úoutput_hrø  s   €€€€r6   re   r%  ¥  s%   ø€ Ø˜˜	  g Yð /$Ø$, :¨T°(°ñ=r8   r.   ©rê  rª   r¨   rV   rh   r›   )rà   râ  rù  Ú
dim_slicesrû  rª   rü  r)  rñ  r.  r÷  r/  rø  r*  rò  ró  r+  s   `      @@@@@@@@@@r6   Ú_pad2d_commonr2  |  sS  ÿú€ Ø€EØ€EØ€JØ€Fä˜u g°1Ò5à�:‰:€DØˆqƒyØ—‘˜A“ˆØ�‰
ˆØ�‰
ˆØ�a‰ˆ
à!(Ñ€Eˆ5�%˜à�Z‰Z˜
Ó#€FØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ˜‰ Ñ&€HØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×/ ¨¡÷ô	
ô 
‡L‚LØ�A‰×&˜ Q™÷	
ôð ‡z�z�QƒØ�‰ ¨°(Ð;Ó<Ð<à�‰ °¸(ÐCÓDÐDr8   c                 ó   • [        XSS9$ rÿ  )r2  r  s     r6   Úmeta_reflection_pad2dr4  ±  r  r8   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad2d" not implemented for 'r  r  r	  s   €r6   re   Ú(meta_replication_pad2d.<locals>.<lambda>¼  r  r8   Fr   )rV   rh   r^   r  r2  r  s   ` r6   Úmeta_replication_pad2dr8  ·  r  r8   c                 ó`   • [         R                  " U5      n[         R                  " U5      nXV4$ rB   ©rV   r´   )Úgrad_wÚsaved_vÚsaved_gÚsaved_normsr‰   Úgrad_vÚgrad_gs          r6   Úmeta_weight_norm_backwardrA  Á  s,   € ô ×Ò˜gÓ&€FÜ×Ò˜gÓ&€FØˆ>Ðr8   c                 ó¢  ^ ^^^^• SmSmSnUR                   nUR                  5       S:X  a  TS-  mTS-  mUS-  nUu  pVpxUT   n	UT   n
X—-   U-   mX¥-   U-   m[        R                  " TT R	                  T5      :H  UU U4S j5        [        R                  " TT R	                  T5      :H  UU U4S j5        UR                  UR                   5      $ )Nrö   r1   r   r#  c                  ó2   >• ST STR                  T 5       3$ r  r§   r  s   €€€r6   re   Ú%meta_pad2d_backward.<locals>.<lambda>ç  r  r8   c                  ó2   >• ST STR                  T 5       3$ ©Nz)grad_output height unexpected. Expected: r  r§   ©r)  r  r/  s   €€€r6   re   rD  ë  ó    ø€ Ð;¸H¸:ÀWÈ[×M]ÑM]Ð^cÓMdÐLeÑfr8   )rœ   r‰   rV   rh   r¨   r›   )r  r�   râ  rú  rd   rò  ró  r+  r*  r.  r÷  r)  rñ  r/  rø  s   `          @@@@r6   Úmeta_pad2d_backwardrI  Ê  sÖ   ü€ ð €EØ€EØ€Ià—‘€JØ‡x�xƒz�QƒØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à!(Ñ€E�%à˜Ñ€GØ˜Ñ€GØ‰ Ñ&€HØ‰ Ñ&€Hä	‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þfôð �>‰>˜$Ÿ*™*Ó%Ð%r8   c          	      ó~  ^ ^^^	^
^^^^^^^^^^^• Sm	SmSmSn[        T USS9  T R                  S:H  nU(       a%  T R                  S5      nT	S-  m	TS-  mTS-  mUS-  nUu  mmmmmmT R                  U5      nT R                  T5      m
T R                  T5      mT R                  T	5      mT
T-   T-   mTT-   T-   mTT-   T-   mU(       a‡  [        R                  " TT:  =(       a    TT:  U	U UU4S j5        [        R                  " TT:  =(       a    TT:  UU UU4S j5        [        R                  " TT
:  =(       a    TT
:  UU UU4S	 j5        [        R                  " TS:¬  =(       d    TS:¬  =(       d    TS:¬  U
UUUUU4S
 j5        U(       a  T R                  WUTTT45      $ T R                  UTTT45      $ )Nr.   rö   r1   r   r    é   c                  ó4   >• ST ST ST  STR                    3$ rí  rD  rð  s   €€€€r6   re   Ú_pad3d_common.<locals>.<lambda>  rõ  r8   c                  ó4   >• ST ST ST  STR                    3$ r'  rD  r(  s   €€€€r6   re   rM    rõ  r8   c                  ó4   >• ST ST ST  STR                    3$ )NzcArgument #8: Padding size should be less than the corresponding input dimension, but got: padding (r{   rî  rï  rD  )Údim_drà   Úpad_bkÚpad_fs   €€€€r6   re   rM    s-   ø€ ð%Ø%* G¨2¨f¨X°_ÀUÀGÈ:ÐV[×VaÑVaÐUbñdr8   c                  ó,   >• ST  ST ST ST ST ST 3$ )Nz
input (D: ú H: r-  z%) is too small. Calculated output D: r2   )Úinput_dr.  r÷  Úoutput_dr/  rø  s   €€€€€€r6   re   rM  #  s2   ø€ Ø˜˜	  g Y¨d°7°)ð <$Ø$, :¨T°(°¸4À¸zñKr8   r0  )rà   râ  rù  rú  Ú
batch_moderû  rü  rP  r)  rñ  rU  r.  r÷  rV  r/  rø  r*  rQ  rR  rò  ró  r+  s   `      @@@@@@@@@@@@@@@r6   Ú_pad3d_commonrX  ð  s¬  ÿÿ€ Ø€EØ€EØ€EØ€Iä˜u g°1Ò5à—‘˜q‘€JÞØ—‘˜A“ˆØ�‰
ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à07Ñ-€Eˆ5�%˜  và�Z‰Z˜	Ó"€FØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€HæÜ�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×/ ¨¡÷ô	
ô 	�ŠØ�G‰O×0 ¨Ñ 0÷ô	
ô 
‡L‚LØ�A‰×7˜ Q™×7¨(°a©-÷	
ñ 	
ôö Ø�‰ ¨°¸(ÀHÐMÓNÐNà�‰ ¨°(¸HÐEÓFÐFr8   c                 ó   • [        XSS9$ rÿ  )rX  r  s     r6   Úmeta_reflection_pad3drZ  /  r  r8   c                 ó†   ^ • [         R                  " T R                  [         R                  :g  U 4S j5        [	        T USS9$ )Nc                  ó@   >• ST R                   R                  5        S3$ )Nz)"replication_pad3d" not implemented for 'r  r  r	  s   €r6   re   Ú(meta_replication_pad3d.<locals>.<lambda>:  r  r8   Fr   )rV   rh   r^   r  rX  r  s   ` r6   Úmeta_replication_pad3dr^  5  r  r8   c                 óê  ^ ^^^^^^• [         R                  " [        U5      S:H  S 5        UR                  S:”  d   eT R                  UR                  :X  d   eSmSmSmUR                  S:X  a  TS-  mTS-  mTS-  mUu  p4pVpxUR	                  T5      n	UR	                  T5      n
UR	                  T5      nX—-   U-   mX¥-   U-   mX³-   U-   m[         R                  " TT R	                  T5      :H  UU U4S j5        [         R                  " TT R	                  T5      :H  UU U4S j5        [         R                  " TT R	                  T5      :H  UU U4S	 j5        UR                  UR                  5      $ )
Né   c                  ó   • g)Nz padding size is expected to be 6r2   r2   r8   r6   re   Ú%meta_pad3d_backward.<locals>.<lambda>I  s   € Ð,Nr8   r.   rö   r1   rK  c                  ó2   >• ST STR                  T 5       3$ r  r§   r  s   €€€r6   re   rb  a  r  r8   c                  ó2   >• ST STR                  T 5       3$ rF  r§   rG  s   €€€r6   re   rb  e  rH  r8   c                  ó2   >• ST STR                  T 5       3$ )Nz(grad_output depth unexpected. Expected: r  r§   )rP  r  rV  s   €€€r6   re   rb  i  r  r8   r  )r  rà   râ  rò  ró  r+  r*  rR  rQ  rU  r.  r÷  rP  r)  rñ  rV  r/  rø  s   `           @@@@@@r6   Úmeta_pad3d_backwardrf  ?  sS  þ€ ô 
‡L‚L”�W“ Ñ"Ñ$NÔOØ�:‰:˜‹>Ðˆ>Ø×Ñ˜uŸz™zÓ)Ð)Ð)à€EØ€EØ€Eà‡z�z�QƒØ�‰
ˆØ�‰
ˆØ�‰
ˆà07Ñ-€E�% à�j‰j˜Ó€GØ�j‰j˜Ó€GØ�j‰j˜Ó€GØ‰ Ñ'€HØ‰ Ñ&€HØ‰ Ñ&€Hä	‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þfôô 
‡L‚LØ�K×$Ñ$ UÓ+Ñ+Þeôð
 �?‰?˜5Ÿ;™;Ó'Ð'r8   Úpc                 ó@  • [         R                  " U R                  5       S 5        U R                  S5      nUS::  a-  U R	                  S/5      R                  [         R                  S9$ U R	                  X"S-
  -  S-  45      R                  [         R                  S9$ )Nc                  ó   • g)Nz(_pdist_forward requires contiguous inputr2   r2   r8   r6   re   Ú%meta__pdist_forward.<locals>.<lambda>s  s   € Ð&Pr8   r   r1   r°   rö   )rV   rh   re  r¨   r›   r1  r  )r�   rg  r  s      r6   Úmeta__pdist_forwardrk  o  s’   € ô 
‡L‚LØ×ÑÓÑPôð 	�	‰	�!‹€AØˆAƒvØ�~‰~˜q˜cÓ"×%Ñ%´E×4RÑ4RÐ%ÐSÐSà�~‰~˜q¨¡E™{¨aÑ/Ð1Ó2×5Ñ5Ü×8Ñ8ð 6ð 
ð 	
r8   ÚgradÚpdistc                 óà   • [         R                  " UR                  5       S 5        [         R                  " UR                  5       S 5        [         R                  " U[         R                  S9$ )Nc                  ó   • g)Nz._pdist_backward requires self to be contiguousr2   r2   r8   r6   re   Ú&meta__pdist_backward.<locals>.<lambda>‚  s   € Ð&Vr8   c                  ó   • g)Nz/_pdist_backward requires pdist to be contiguousr2   r2   r8   r6   re   rp  …  s   € Ð'Xr8   r°   )rV   rh   re  r´   r  )rl  r�   rg  rm  s       r6   Úmeta__pdist_backwardrr  ~  sW   € ô 
‡L‚LØ×ÑÓÑVôô 
‡L‚LØ×ÑÓÑXôô ×Ò˜D´×0NÑ0NÑOÐOr8   )rW  rV  c          
      ób  ^ ^^^^^• SSK JnJn  TR                  S5      nTR                  S5      nTR                  S5      n	U" [        R
                  " U" T R                  XxU	45      5      5      (       a  T R                  XxU	45      m [        R                  " TR                  5       S:H  S 5        [        R                  " TR                  5       S:H  S 5        [        R                  (       dN  [        R                  " T R                  TR                  s=:H  =(       a    TR                  :H  Os  UUU 4S j5        TR                  n
TR                  mU
S   mU
S   m[        R                  " TS   T:H  =(       a    TS   T:H  UUU4S	 j5        T R                  T R                  5       5      $ )
Nr   )Úguard_or_trueÚsym_eqr1   rö   r.   c                  ó   • g©Nzbatch1 must be a 3D tensorr2   r2   r8   r6   re   Úmeta_baddbmm.<locals>.<lambda>”  ó   € Ð,Hr8   c                  ó   • g©Nzbatch2 must be a 3D tensorr2   r2   r8   r6   re   rx  •  ry  r8   c                  óV   >• STR                    ST R                    STR                    3$ )Nz+Input dtypes must be the same, got: input: z
, batch1: z
, batch2: r“   )Úbatch1Úbatch2r�   s   €€€r6   re   rx  ™  s.   ø€ ÐAÀ$Ç*Á*ÀÈZÐX^×XdÑXdÐWeÐeoÐpv×p|Ñp|Ðo}Ñ~r8   c            	      ó.   >• ST ST ST S    ST S    S3	$ ©Nz@Expected size for first two dimensions of batch2 tensor to be: [r{   z] but got: [r   r1   ú].r2   ©Úbatch2_sizesÚbsÚcontraction_sizes   €€€r6   re   rx  ¡  s5   ø€ ðØˆt�2Ð&Ð' |°LÀ±OÐ3DÀBÀ|ÐTUÁÐFWÐWYñ[r8   )r.  rt  ru  r¨   rV   Úsym_notrœ   r“  rh   r‰   Ú
exp_configÚ&skip_dtype_check_in_meta_registrationsr^   r›   )r�   r}  r~  rW  rV  rt  ru  Údim1Údim2Údim3Úbatch1_sizesrƒ  r„  r…  s   ```        @@@r6   Úmeta_baddbmmr�  Š  s9  ý€ ÷ Là�;‰;�q‹>€DØ�;‰;�q‹>€DØ�;‰;�q‹>€DÙ”U—]’]¡6¨$¯*©*°tÀ4Ð6HÓ#IÓJ×KÑKØ�{‰{˜D¨Ð-Ó.ˆÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ×<×<Ü�ŠØ�J‰J˜&Ÿ,™,×6Ó6¨&¯,©,Ô6Þ~ô	
ð —<‘<€LØ—<‘<€LØ	�a‰€BØ# A‘ÐÜ	‡L‚LØ�Q‰˜2Ñ×E ,¨q¡/Ð5EÑ"Eö	
ôð �>‰>˜$Ÿ)™)›+Ó&Ð&r8   c                óH   • [         R                  " U [         R                  S9$ rÀ   rn  ©r�   r  s     r6   Úmeta_bernoullir�  ©  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr8   c                 ó   • U $ rB   r2   ©r�   rg  r  s      r6   Úmeta_bernoulli_r“  °  ó   € à€Kr8   c                 óH   • [         R                  " U [         R                  S9$ rÀ   rn  r’  s      r6   Úmeta_bernoulli_pr–  µ  s   € ô ×Ò˜D´×0GÑ0GÑHÐHr8   c                 ó.   • [         R                  " U 5      $ rB   r:  r�  s     r6   Úmeta_poissonr˜  »  ó   € ô ×Ò˜DÓ!Ð!r8   c                 óÈ   • [         R                  " X R                  5       :  S 5        [         R                  " U [         R                  S9n[         R                  " U 5      U4$ )Nc                  ó   • g)NzJError in fused_moving_avg_obs_fake_quant_cpu: ch_axis must be < self.dim()r2   r2   r8   r6   re   Ú6meta__fused_moving_avg_obs_fq_helper.<locals>.<lambda>Ó  ó   € Ð\r8   r“   )rV   rh   r‰   r´   r  )r�   Úobserver_onÚfake_quant_onÚrunning_minÚrunning_maxÚscaleÚ
zero_pointÚaveraging_constÚ	quant_minÚ	quant_maxÚch_axisÚper_row_fake_quantÚsymmetric_quantÚmasks                 r6   Ú$meta__fused_moving_avg_obs_fq_helperr«  Á  sM   € ô  
‡L‚LØ—(‘(“*ÑÙ\ôô ×Ò˜D¬¯
©
Ñ3€DÜ×Ò˜TÓ" DÐ)Ð)r8   c                 ó\  ^^^^• [         R                  " U R                  5       S:H  S 5        [         R                  " UR                  5       S:H  S 5        U R                  u  mmUR                  u  mm[         R                  " TT:H  UUUU4S j5        Ubr  [         R                  " X R                  :H  =(       dG    U[         R
                  :H  =(       a-    U R                  [         R                  [         R                  4;   S 5        Uc  U R                  OUnU R                  TT4US9$ )Nrö   c                  ó   • g)Nza must be 2Dr2   r2   r8   r6   re   Úmeta_mm.<locals>.<lambda>Ü  ó   €  ~r8   c                  ó   • g)Nzb must be 2Dr2   r2   r8   r6   re   r®  Ý  r¯  r8   c            	      ó"   >• ST ST  ST ST S3	$ )Nz/a and b must have same reduction dim, but got [r{   z] X [r�  r2   )ÚM1ÚM2ÚNrN  s   €€€€r6   re   r®  â  s&   ø€ ÐAÀ!ÀÀBÀrÀdÈ%ÐPRÈtÐSUÐVWÐUXÐXZÑ[r8   c                  ó   • g)NzFout_dtype must be the same as input dtype or fp32 for fp16/bf16 inputsr2   r2   r8   r6   re   r®  ë  s   € Ð\r8   r“   )	rV   rh   r‰   rœ   r^   ra  rb  rc  r›   )r4   r5   rG  rS   r²  r³  r´  rN  s       @@@@r6   Úmeta_mmr¶  Ù  sà   û€ ô 
‡L‚L�—‘“˜A‘Ñ5Ô6Ü	‡L‚L�—‘“˜A‘Ñ5Ô6Ø�G‰G�E€A€rØ�G‰G�E€BˆÜ	‡L‚LØ
ˆb‰ß[ôð ÑÜ�ŠØŸ™Ñ ÷ àœUŸ]™]Ñ*÷ ?Ø—G‘G¤§¡¬u¯~©~Ð>Ñ>á\ô	
ð (Ñ/�1—7’7°Y€LØ�;‰;˜˜1�v \ˆ;Ð2Ð2r8   c                 ó¨   ^ ^• U(       a)  [        UU 4S j[        T R                  5       5       5      $ [        R                  " T R
                  T5      $ )Nc              3   óP   >#   • U  H  oT;  a  TR                   U   OS v •  M     g7f)r1   NrD  )rt   rä   Údimsr�   s     €€r6   rv   Ú+_compute_reduction_shape.<locals>.<genexpr>ó  s$   øé € ÐUÒDT¸q¨t£m�T—Z‘Z ’]¸Ô:ÒDTùs   ƒ#&)rg   rË   rª   rO   Úcompute_reduction_output_shaperœ   )r�   r¹  r�  s   `` r6   rŽ  rŽ  ñ  s7   ù€ ÞÜÕUÄEÈ$Ï)É)ÔDTÓUÓUÐUä×/Ò/°·
±
¸DÓAÐAr8   c                 ó:  • [        U [        R                  R                  5      (       a  U R                  R
                  $ [        U S5      (       aK  [        U R                  S5      (       a0  U R                  R
                  S:w  a  U R                  R
                  $ g)Nr†   r}   rƒ   rú   )rr   rV   Ú_subclassesÚ
FakeTensorÚfake_devicer}   Úhasattrr†   )r:  s    r6   r   r   ü  sp   € Ü�&œ%×+Ñ+×6Ñ6×7Ñ7Ø×!Ñ!×&Ñ&Ð&ä�˜×!Ñ!Ü�F—M‘M 6×*Ñ*Ø�M‰M×Ñ &Ó(à�}‰}×!Ñ!Ð!àr8   Úinput_tensorrÍ   râ  ÚdilationÚis_transposedÚgroupsÚoutput_paddingc                 ór  ^^• S[         S[         S[         S[         S[         S[         4S jnS[         S[         S[         S[         S[         S[         S[         4S	 jn	UR                  S
S  n
U R                  S
S  mU(       a  XaR                  S   -  nO=UR                  S   nUR                  S   U-  U R                  S   :w  a  [        S5      eU R                  S   U/m[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  n[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  n[        U[        5      (       a  U/[        T5      -  nO![        U5      S:X  a  US   /[        T5      -  nS nU(       aI  [        U[        5      (       a  U/[        T5      -  nO$[        U5      S:X  a  US   /[        T5      -  nOUn[        [        T5      5       H[  nU(       a+  TR                  U	" TU   X=   XM   X­   X-   XÍ   5      5        M5  TR                  U" TU   X=   XM   X­   X-   5      5        M]     SSKJ	n  [        R                  " U" TS
S   Vs/ s H  oÿS:„  PM	     sn6 UU4S j5        T$ s  snf )NÚlnrg  rÛ   rT  r©  r>   c                 ó4   • U SU-  -   X#S-
  -  -
  S-
  U-  S-   $ )aE  
Formula to apply to calculate the length of some dimension of the output

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

Args:
    ln: length of the dimension
    p: padding in that dim
    d: dilation in that dim
    k: kernel size in that dim
    s: stride in that dim
Returns:
    The output length
rö   r1   r2   )rÇ  rg  rÛ   rT  r©  s        r6   Ú_formulaÚ+calc_conv_nd_return_shape.<locals>._formula	  s,   € ð �Q˜‘U‘
˜Q a¡%™[Ñ(¨1Ñ,°Ñ2°QÑ6Ð6r8   rC   c                 ó:   • U S-
  U-  SU-  -
  X#S-
  -  -   U-   S-   $ )a”  
Formula to apply to calculate the length of some dimension of the output
if transposed convolution is used.
See: https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html

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

Returns:
    The output length
r1   rö   r2   )rÇ  rg  rÛ   rT  r©  rC   s         r6   Ú_formula_transposedÚ6calc_conv_nd_return_shape.<locals>._formula_transposed$	  s0   € ð" �Q‘˜!‰|˜a !™eÑ# a¨q©5¡kÑ1°BÑ6¸Ñ:Ð:r8   rö   r1   r   zInvalid channel dimensions)Úsym_orc                  ó.   >• S[        T 5       STSS   S3$ )NzGiven input size per channel: z&. Calculated output size per channel: rö   z. Output size is too small)rÊ   )r¹  Ú	ret_shapes   €€r6   re   Ú+calc_conv_nd_return_shape.<locals>.<lambda>v	  s(   ø€ Ð0´°d³°ð =/Ø/8¸¸¨}¨oð >#ñ$r8   )rì   rœ   r0  rr   r   rÉ   rË   rÌ   r.  rÎ  rV   rh   )rÁ  rC  rÍ   râ  rÂ  rÃ  rÄ  rÅ  rÉ  rÌ  Úkernel_sizeÚout_channelsÚoutput_padding_listrä   rÎ  r;   r¹  rÐ  s                   @@r6   Úcalc_conv_nd_return_shaperÕ  		  s²  ù€ ð7”Sð 7œSð 7¤Sð 7¬Sð 7´Sð 7¼Sô 7ð";¤ð ;¬ð ;´ð ;¼ð ;Äð ;Ìð ;ÔQTô ;ð& —,‘,˜q˜rÐ"€KØ×Ñ˜a˜bÐ!€DÞØ§¡¨Q¡Ñ/‰à—|‘| A‘ˆØ�<‰<˜‰?˜VÑ# |×'9Ñ'9¸!Ñ'<Ó<ÜÐ;Ó<Ð<à×#Ñ# AÑ&¨Ð5€IÜ�&œ'×"Ñ"à�œC ›IÑ%‰Ü	ˆV‹˜Ó	Ø˜‘)�œs 4›yÑ(ˆä�'œ7×#Ñ#à�)œc $›iÑ'‰Ü	ˆW‹˜Ó	Ø˜1‘:�,¤ T£Ñ*ˆä�(œG×$Ñ$à�:¤ D£	Ñ)‰Ü	ˆX‹˜!Ó	Ø˜Q‘K�=¤3 t£9Ñ,ˆà,0ÐÞÜ�n¤g×.Ñ.à#1Ð"2´S¸³YÑ">ÑÜ�Ó  AÓ%Ø#1°!Ñ#4Ð"5¼¸D»	Ñ"AÑà"0Ðä”3�t“9ÖˆæØ×ÑÙ#Ø˜‘Gà‘Jà‘KØ‘Nà‘IØ'Ñ*ó
öð ×Ñá˜˜a™ '¡*¨h©k¸;¹>È6É9ÓUöñ# õ* =ä	‡L‚LÙ 	¨!¨"¡Ó.¢˜1�Q”¡Ñ.Ð/õ	$ôð Ðùò /s   ÊJ4c                 ób   • [         R                  R                  U 5      [         R                  :H  $ rB   ©rV   Ú_prims_commonr   Úchannels_last©Útens    r6   Úis_channels_lastrÜ  ~	  s$   € Ü×Ñ×4Ñ4°SÓ9¼U×=PÑ=PÑPÐPr8   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc                 óz  ^ • T R                   nUb  UR                   OUR                   n	Ub  UR                   OUR                   n
U 4S jnT R                  U5      R                  U" 5       S9nU(       a#  T R                  U	5      nT R                  U
5      nO"T R                  S5      nT R                  S5      nXÍU4$ )Nc                  óÈ   >• [        T 5      (       a  [        R                  $ T R                  [        R                  S9(       a  [        R                  $ [        R                  $ rÀ   )rÜ  rV   rÙ  re  rµ   )rÁ  s   €r6   Úpick_memory_formatÚ2meta_miopen_batch_norm.<locals>.pick_memory_format•	  sI   ø€ Ü˜L×)Ñ)Ü×&Ñ&Ð&Ø×%Ñ%´E×4KÑ4KÐ%ÖLÜ×*Ñ*Ð*Ü×&Ñ&Ð&r8   r°   ©r   )rœ   r›   r1  )rÁ  rC  rE  rÝ  rÞ  rß  rà  rá  r­   Úsave_mean_shapeÚsave_var_shaperä  rÔ   Ú	save_meanÚsave_vars   `              r6   Úmeta_miopen_batch_normrë  ‚	  sµ   ø€ ð ×"Ñ"€Ið -9Ñ,D�l×(Ò(È&Ï,É,€OØ*5Ñ*A�[×&Ò&ÀvÇ|Á|€Nõ'ð ×
 Ñ
  Ó
+×
.Ñ
.Ñ=OÓ=QÐ
.Ð
R€CæØ ×*Ñ*¨?Ó;ˆ	Ø×)Ñ)¨.Ó9‰à ×*Ñ*¨4Ó0ˆ	Ø×)Ñ)¨$Ó/ˆà˜8Ð#Ð#r8   c	           
      ó˜   • [        U UUUUUUU(       a  UOS 5      n	Sn
SnU R                  U
5      S:X  a  SX›'   U R                  U	5      nU$ ©Nr1   r   )rÕ  r¨   r›   )rÁ  rC  rE  rÍ   râ  rÂ  rÃ  rÅ  rÄ  Ú	shape_outÚinput_channels_dimÚoutput_channels_dimrÔ   s                r6   Ú	meta_convrñ  ¨	  si   € ô *ØØØØØØØÞ'‰¨Tó	€Ið ÐØÐØ×ÑÐ+Ó,°Ó1Ø)*ˆ	Ñ&à
×
 Ñ
  Ó
+€CØ€Jr8   Úmkldnnc
           
      óÎ   • [        XXCUSU/ 5      n
U R                  U
5      n[        R                  nU R	                  5       S:X  a  [        R
                  nUR                  US9nU$ )NFrK  r°   )rÕ  r›   rV   rÙ  r‰   Úchannels_last_3dr1  )rÁ  rC  rE  râ  rÍ   rÂ  rÄ  ÚattrÚscalarsÚ	algorithmrî  rÔ   Úout_memory_formats                r6   Úmeta_mkldnn_convolution_defaultrù  Í	  sl   € ô .Ø &°8¸UÀFÈBó
ˆ	ð ×$Ñ$ YÓ/ˆÜ!×/Ñ/ÐØ×ÑÓ Ó"Ü %× 6Ñ 6ÐØ�f‰fÐ#4ˆfÐ5ˆØˆ
r8   c                 ób   • U R                  / U R                  S S QUR                  S   P75      $ ©NrŸ   r   ©r›   rœ   )rÁ  rC  rE  rõ  rö  r÷  s         r6   Úmeta_linear_pointwise_defaultrý  ä	  s5   € ð ×%Ñ%Ð&Q¨×(:Ñ(:¸3¸BÐ(?Ð&QÀÇÁÈaÁÑ&QÓRÐRr8   Úmklc                 ób   • U R                  / U R                  S S QUR                  S   P75      $ rû  rü  )rÁ  Úpacked_weightÚorig_weightrE  râ   s        r6   Úmeta_mkl_linearr  ï	  s:   € à×)Ñ)Ø@�,×$Ñ$ S bÐ)Ð@¨;×+<Ñ+<¸QÑ+?Ñ@óð r8   Úonednnc           
      óÐ  • [        U UUUU	SU
S 5      nUc  U R                  nU[        R                  [        R                  [        R
                  [        R                  [        R                  4;   d   eU R                  UUS9n[        U5      S;   d   S5       e[        R                  [        R                  [        R                  S.[        U5         nUR                  US9nU$ )NFr“   )r.   r#  rK  z-Expect output to be 3d/4d/5d for conv1d/2d/3dr°   )rÕ  r^   rV   ra  rc  Úuint8rJ  rd  r›   rÉ   rµ   rÙ  rô  r1  )r;   Úx_scaleÚx_zpÚwÚw_scaleÚw_zprE  rÍ   râ  rÂ  rÄ  Úoutput_scaleÚoutput_zero_pointÚoutput_dtyperõ  rö  r÷  rî  rÔ   Úformats                       r6   Úmeta_qconv_pointwiser  ù	  sì   € ô, .ØØØØØØØØó	
ˆ	ð ÑØŸ7™7ˆLØÜ�M‰MÜ�N‰NÜ�K‰KÜ�J‰JÜ×Ñð 
ó 
ð 	
ð 
ð �k‰k˜)¨<ˆkÐ8ˆÜ�9‹~ Ó*ð 	
Ø;ó	
Ð*ô ×&Ñ&Ü×"Ñ"Ü×%Ñ%ñ
ô ˆi‹.ñ	ˆð
 �f‰f 6ˆfÐ*ˆØˆ
r8   c                 ó   • US:X  d   eU$ )NÚsumr2   )r;   r  r  r  r	  r
  ÚaccumrE  rÍ   râ  rÂ  rÄ  r  r  r  Úaccum_scaleÚaccum_zero_pointÚbinary_op_namerV  Úunary_op_nameÚunary_op_argsÚunary_op_algorithms                         r6   Úmeta_qconv2d_pointwise_binaryr  .
  s   € ð4  Ó&Ð&Ð&Øˆr8   c                 ó  • [        U R                  5      nUR                  S   US'   U	[        R                  [        R                  [        R
                  [        R                  [        R                  4;   d   eU R                  XÙS9nU$ )Nr1   rŸ   r“   )	rÊ   rœ   rV   ra  rc  rJ  r  rd  r›   )r;   r  r  r  r	  r
  rE  r  r  r  Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrh  rÔ   s                  r6   Úmeta_qlinear_pointwiser  K
  sv   € ô" ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØÜ�M‰MÜ�N‰NÜ�J‰JÜ�K‰KÜ×Ñð 
ó 
ð 	
ð 
ð �k‰k˜,ˆkÐ;ˆØˆ
r8   c                 ó*  • US:X  a  U$ [        U R                  5      nUR                  S   US'   U
[        R                  [        R                  [        R
                  [        R                  [        R                  4;   d   eU R                  UU
S9nU$ )Nr  r1   rŸ   r“   )	rÊ   rœ   rV   ra  rc  r  rJ  rd  r›   )r;   r  r  r  r	  r
  Úx_2rE  r  r  r  Úx2_scaleÚx2_zpr  rV  r  r  r  rh  rÔ   s                       r6   Úmeta_qlinear_pointwise_binaryr#  i
  s…   € ð, ˜UÓ"ØˆJÜ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØÜ�M‰MÜ�N‰NÜ�K‰KÜ�J‰JÜ×Ñð 
ó 
ð 	
ð 
ð �k‰k˜,¨lˆkÐ;ˆØˆ
r8   c                 óv   • [        U R                  5      nUR                  S   US'   U R                  U5      nU$ )Nr1   rŸ   )rÊ   rœ   r›   )r;   r  rE  rh  rÔ   s        r6   Úmeta_linear_dynamic_fp16r%  Ž
  s6   € ô ˜AŸG™G“}ˆàŸ7™7 1™:ˆ�RÑØ�k‰k˜,Ó'ˆØˆ
r8   Ú	quantizedræ  ©r1   c                 ó"  • [        XX#XE5      u  nnnU R                  5       S:X  a  U R                  S5      OSn	[        R                  n
U R                  5       S:X  a  XgU/nOX–Xx/n[        R
                  " UU R                  U R                  U
S9$ ©Nr#  éüÿÿÿr1   r.   r  )Ú#max_pool2d_checks_and_compute_shaper‰   r¨   rV   rÙ  rŽ   r^   r†   ©rà   rÒ  rÍ   râ  rÂ  Ú	ceil_modeÚnInputPlaneÚoutputHeightÚoutputWidthrû  r±   r¨   s               r6   Úmeta_quantized_max_pool2dr1  Ÿ
  s‘   € ô 0Ø °ó
ñ		
ØØØð $)§9¡9£;°!Ó#3�—‘˜B”¸ˆÜ×+Ñ+ˆØ�9‰9‹;˜!ÓØ¨{Ð;‰Dà¨ÐCˆDÜ�{Š{ØØ—+‘+Ø—<‘<Ø'ñ	
ð 	
r8   c                 ó  ^ ^^^• [         R                  " T R                  5       S:H  U 4S j5        [         R                  " TR                  5       S:H  U4S j5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " TR                  T R                  :H  U4S j5        T R                  T R                  S5      TR                  S5      T R                  S	9$ )
Nrö   c                  ó,   >• ST R                  5        S3$ )Nzx must be a 2D tensor, got ÚDr    ©r;   s   €r6   re   Ú/meta_int4mm_packed_weight_cpu.<locals>.<lambda>¾
  ó   ø€ Ð-HÈÏÉËÈ	ÐQRÑ+Sr8   c                  ó,   >• ST R                  5        S3$ )Nzw must be a 2D tensor, got r4  r    ©r  s   €r6   re   r6  ¿
  r7  r8   c                  ó"   >• ST R                    3$ ©Nz#expected x to be f32/f16/bf16, got r“   r5  s   €r6   re   r6  Â
  s   ø€ Ð9¸!¿'¹'¸ÑCr8   c                  ó"   >• ST R                    3$ ©Nzexpected w to be uint8, got r“   r9  s   €r6   re   r6  Å
  s   ø€ Ð.JÈ1Ï7É7È)Ñ,Tr8   c                  ó"   >• ST R                    3$ )Nz q_group_size must be int64, got r“   )Úq_group_sizes   €r6   re   r6  É
  s   ø€ Ð6°|×7IÑ7IÐ6JÑKr8   c                  ó"   >• ST R                    3$ )Nz5q_scale_and_zeros must have the same dtype as x, got r“   )Úq_scale_and_zeross   €r6   re   r6  Í
  s   ø€ ÐKÐL]×LcÑLcÐKdÑer8   r   r“   )rV   rh   r‰   r^   ra  rb  rc  r  r¼   r›   r¨   ©r;   r  r?  rA  s   ````r6   Úmeta_int4mm_packed_weight_cpurC  ¼
  sõ   û€ ä�Š�Q—U‘U“W ‘\Ô#SÔTÜ�Š�Q—U‘U“W ‘\Ô#SÔTÜ�ŠØ�G‰GœŸ™¤u§}¡}´e·n±nÐEÑEÜCô	
ô 	�ŠØ�G‰G”u—{‘{Ñ"Ô$Tô	
ô 	�ŠØ×Ñ¤%§+¡+Ñ-ÜKô	
ô 	�ŠØ×#Ñ# q§w¡wÑ.Üeô	
ð �{‰{˜1Ÿ6™6 !›9 a§f¡f¨Q£i°q·w±wˆ{Ð?Ð?r8   c                 óœ   ^ ^^^• [         R                  " T R                  5       T:H  =(       a    T R                  T   T:H  UUUU 4S j5        g )Nc                  ój   >• ST  ST ST S3STR                  5        ST STR                  T    3-   $ )NzExpected a tensor of dimension z and tensor.size[z] == r{   zbut got : dimension z] = ©r‰   rœ   )r‰   Údim_sizer¨   r:  s   €€€€r6   re   Ú check_dim_size.<locals>.<lambda>Ö
  sN   ø€ Ð1°#°Ð6GÈÀzÐQVÐW[ÐV\Ð\^Ð_Ø  §¡£ Ð.?À¸zÈÈfÏlÉlÐ[cÑNdÐMeÐ
fògr8   )rV   rh   r‰   rœ   )r:  r‰   rG  r¨   s   ````r6   Úcheck_dim_sizerI  Ó
  s6   û€ Ü	‡L‚LØ�
‰
‹˜Ñ×> §¡¨XÑ 6¸$Ñ >÷	gõr8   c                 óà  ^ • S nU" SU5      u  p‰[         R                  " [        U5      S;   S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  [         R                  4;  U 4S j5        [        U5      S:X  a  X‰pºO$[        U5      S:X  a
  US   US   pºOU" SU5      u  p«U" S	U5      u  pÍ[         R                  " US L =(       d    US:g  S
 5        T R                  5       S:X  a  T R                  S5      OSnT R                  S5      nT R                  S5      nT R                  S5      n[        UXŒU
SU5      n[        UX�USU5      n[        R                  " T 5      n[        T UU	U
UUUSSUUUUUU5        T R                  5       S:X  a  UUU/nOXïUU/n[         R                  " UT R                  T R                  US9$ )Nc                 óŽ   ^ • [         R                  " [        U5      S;   U 4S j5        US   n[        U5      S:X  a  UOUS   nX#4$ )N©r1   rö   c                  ó   >• ST  S3$ )Nzavg_pool2d: ú4 must either be a single int, or a tuple of two intsr2   ©rÈ  s   €r6   re   Ú1meta_avg_pool2d.<locals>.unpack.<locals>.<lambda>è
  ó   ø€ �l 4 &Ð(\Ñ]r8   r   r1   ©rV   rh   rÉ   ©rÈ  r¢  ÚHÚWs   `   r6   ÚunpackÚmeta_avg_pool2d.<locals>.unpackå
  óE   ø€ Ü�ŠÜ�‹H˜ÑÜ]ô	
ð �‰FˆÜ�S“˜Q“‰A C¨¡FˆØˆtˆr8   rÒ  ©r   r1   rö   c                  ó   • g©NzOavg_pool2d: stride must either be omitted, a single int, or a tuple of two intsr2   r2   r8   r6   re   Ú!meta_avg_pool2d.<locals>.<lambda>ñ
  ó   € Ðar8   c                  ó@   >• ST R                   R                  5        S3$ )Nz""avg_pool2d" not implemented for 'r  r  r	  s   €r6   re   r\  õ
  ó   ø€ Ð6°u·{±{×7JÑ7JÓ7LÐ6MÈQÑQr8   r   r1   rÍ   râ  c                  ó   • g©Nzdivisor must be not zeror2   r2   r8   r6   re   r\    ó   € Ð*r8   r#  r*  éýÿÿÿrÄ  rŸ   r.   r  )rV   rh   rÉ   r^   r  Úuint16Úuint32Úuint64r‰   r¨   Úpooling_output_shaperO   r   Úpool2d_shape_checkrŽ   r†   )rà   rÒ  rÍ   râ  r-  Úcount_include_padÚdivisor_overriderV  ÚkHÚkWÚdHÚdWÚpadHÚpadWrû  r.  ÚinputHeightÚ
inputWidthr/  r0  r±   r¨   s   `                     r6   Úmeta_avg_pool2drs  Û
  sÐ  ø€ òñ �M ;Ó/�F€BÜ	‡L‚LÜˆF‹�yÑ Ùaôô 
‡L‚LØ�‰œEŸK™K¬¯©´u·|±|ÄUÇ\Á\ÐRÑRÜQôô ˆ6ƒ{�aÓØ‰BÜ	ˆV‹˜Ó	Ø˜‘˜F 1™I‰Bá˜ &Ó)‰ˆá˜	 7Ó+�J€Dä	‡L‚LØ˜DÐ ×9Ð$4¸Ñ$9Ù*ôð
  %Ÿy™y›{¨aÓ/ˆU�Z‰Z˜Œ^°Q€FØ—*‘*˜R“.€KØ—*‘*˜R“.€KØ—‘˜B“€Jä'¨°R¸rÀ1ÀiÓP€LÜ& z°2¸RÀÀIÓN€Kä×/Ò/°Ó6€MÜØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØôð$ ‡y�yƒ{�aÓØ˜\¨;Ð7‰à \°;Ð?ˆÜ�;Š;ØØ�k‰kØ�|‰|Ø#ñ	ð r8   c                 óº   • [        U UUUUUUSSU	U
UUUU5        U R                  5       nU	n[        XUS-
  U5        [        XUS-
  U5        [        XUS-
  U5        g )Nr1   r.   rö   )rh  r‰   rI  )rà   Ú
gradOutputrû  rk  rl  rm  rn  ro  rp  r.  rq  rr  r/  r0  Ú
mem_formatrª   ÚnOutputPlanes                    r6   Úavg_pool2d_backward_shape_checkrx  -  s{   € ô" ØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØôð$ �9‰9‹;€DØ€Lä�: T¨A¡X¨|Ô<Ü�: T¨A¡X¨|Ô<Ü�: T¨A¡X¨{Õ;r8   c                 ó  • [         R                  " [        U5      S:H  =(       d    [        U5      S:H  S 5        US   n[        U5      S:X  a  UOUS   n	[         R                  " [        U5      S:H  =(       d#    [        U5      S:H  =(       d    [        U5      S:H  S 5        [        U5      S:X  a  UOUS   n
[        U5      S:X  a  U	O[        U5      S:X  a  U
OUS   n[         R                  " [        U5      S:H  =(       d    [        U5      S:H  S 5        US   n[        U5      S:X  a  UOUS   n[         R                  " US L =(       d    US:g  S 5        UR                  nUR	                  5       S:X  a  US	   OSnUS
   nUS   nUS   n[        UXŒU
SU5      n[        UX�USU5      n[        R                  " U5      n[        UU UUU	U
UUUUUUUUU5        [         R                  " UUR                  UR                  US9$ )Nr1   rö   c                  ó   • g)NzKavg_pool2d: kernel_size must either be a single int, or a tuple of two intsr2   r2   r8   r6   re   Ú*meta_avg_pool2d_backward.<locals>.<lambda>g  s   € Ð]r8   r   c                  ó   • gr[  r2   r2   r8   r6   re   r{  m  r]  r8   c                  ó   • g)NzGavg_pool2d: padding must either be a single int, or a tuple of two intsr2   r2   r8   r6   re   r{  s  s   € ÐYr8   c                  ó   • gra  r2   r2   r8   r6   re   r{  z  rb  r8   r#  r*  rc  rÄ  rŸ   r  )rV   rh   rÉ   rœ   r‰   rg  rO   r   rx  rŽ   r^   r†   )ÚgradOutput_rà   rÒ  rÍ   râ  r-  ri  rj  rk  rl  rm  rn  ro  rp  Ú
input_sizerû  r.  rq  rr  r/  r0  rv  s                         r6   Úmeta_avg_pool2d_backwardr�  Y  sý  € ô 
‡L‚LÜˆKÓ˜AÑ×6¤ [Ó!1°QÑ!6Ù]ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ	‡L‚LÜˆF‹�qÑ×@œC ›K¨1Ñ,×@´°F³¸qÑ0@Ùaôô �6‹{˜aÓ‰ V¨A¡Y€BÜ�6‹{˜aÓ‰¬3¨v«;¸!Ó+;¡RÀÈÁ€BÜ	‡L‚LÜˆG‹˜Ñ×.œS ›\¨QÑ.ÙYôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ˜DÐ ×9Ð$4¸Ñ$9Ù*ôð
 —‘€JØ$Ÿy™y›{¨aÓ/ˆZ˜Š^°Q€FØ˜R‘.€KØ˜R‘.€KØ˜B‘€Jä'¨°R¸rÀ1ÀiÓP€LÜ& z°2¸RÀÀIÓN€Kä×,Ò,¨UÓ3€Jä#ØØØØ
Ø
Ø
Ø
ØØØØØØØØôô$ �;Š;ØØ�k‰kØ�|‰|Ø ñ	ð r8   c                 ón  ^ • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n	[         R                  " U(       + =(       d    [        U5      S;   S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  [         R                  4;  U 4S j5        U(       d  UOUS   n
U(       d  UO[        U5      S:X  a  U
OUS   nU(       d  U	O[        U5      S:X  a  U
OUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " T R                  S	;   S
 5        [         R                  " U(       + =(       d    US:g  S 5        T R                  S5      nT R                  S5      nT R                  S5      nT R                  S5      nT R                  S5      n[        UX}U
SU5      n[        UXŽUSU5      n[        UXŸUSU5      n[        T UUUU	U
UUUUUSSSUUUUUUSSS9  T R                  S:X  a  T R                  UUUU45      $ T R                  UUUUU45      $ )N©r1   r.   c                  ó   • g©NzFavg_pool3d: kernel_size must be a single int, or a tuple of three intsr2   r2   r8   r6   re   Ú!meta_avg_pool3d.<locals>.<lambda>¯  ó   € ÐXr8   r   r1   rö   c                  ó   • g©NzJavg_pool3d: stride must be omitted, a single int, or a tuple of three intsr2   r2   r8   r6   re   r†  ·  r�  r8   c                  ó@   >• ST R                   R                  5        S3$ )Nz""avg_pool3d" not implemented for 'r  r  r	  s   €r6   re   r†  »  r_  r8   c                  ó   • g©NzBavg_pool3d: padding must be a single int, or a tuple of three intsr2   r2   r8   r6   re   r†  Ã  ó   € ÐTr8   ©r#  rK  c                  ó   • g©Nz9non-empty 4D or 5D (batch mode) tensor expected for inputr2   r2   r8   r6   re   r†  Ë  ó   € ÐKr8   c                  ó   • gra  r2   r2   r8   r6   re   r†  Ð  rb  r8   r*  rc  rÄ  rŸ   zavg_pool3d()T)Úcheck_input_sizer#  )rV   rh   rÉ   r^   r  rd  re  rf  rª   r¨   rg  Úpool3d_shape_checkr›   )rà   rÒ  rÍ   râ  r-  ri  rj  ÚkTrk  rl  ÚdTrm  rn  ÚpadTro  rp  rû  ÚnslicesÚitimeÚiheightÚiwidthÚotimeÚoheightÚowidths   `                       r6   Úmeta_avg_pool3drŸ  ¢  s†  ø€ ô 
‡L‚LÜˆKÓ˜FÑ"ÙXôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ù\ôô 
‡L‚LØ�‰œEŸK™K¬¯©´u·|±|ÄUÇ\Á\ÐRÑRÜQôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙTôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ�
‰
�fÑÙKôô
 
‡L‚LØÔ×5Ð 0°AÑ 5Ù*ôð
 �Z‰Z˜‹]€FØ�j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä  ¨°"°a¸ÓC€EÜ" 7¨B°b¸!¸YÓG€GÜ! &¨"°B¸¸9ÓE€FäØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØ	Ø	Ø	ØØØØØØØØò-ð2 ‡z�z�QƒØ�‰ ¨°¸Ð@ÓAÐAà�‰ ¨°¸ÀÐHÓIÐIr8   c                 óB  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n	[        U5      S:X  a  UOUS   n
[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   nU(       d  U	O[        U5      S:X  a  UOUS   nU(       d  U
O[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " UR                  S;   S	 5        [         R                  " U(       + =(       d    US:g  S
 5        UR	                  S5      nUR	                  S5      nUR	                  S5      nUR	                  S5      n[        UXŽUSU5      n[        UXŸUSU5      n[        UU
UUSU5      n[        UU UUU	U
UUUUUUUUUUUUS5        UR                  UR                  5      $ )Nrƒ  c                  ó   • gr…  r2   r2   r8   r6   re   Ú*meta_avg_pool3d_backward.<locals>.<lambda>
  r‡  r8   r   r1   rö   c                  ó   • gr‰  r2   r2   r8   r6   re   r¢    r�  r8   c                  ó   • grŒ  r2   r2   r8   r6   re   r¢    r�  r8   rŽ  c                  ó   • gr�  r2   r2   r8   r6   re   r¢  "  r‘  r8   c                  ó   • gra  r2   r2   r8   r6   re   r¢  '  rb  r8   r*  rc  rÄ  rŸ   zavg_pool3d_backward())	rV   rh   rÉ   rª   r¨   rg  Úavg_pool3d_backward_shape_checkr›   rœ   )r  rà   rÒ  rÍ   râ  r-  ri  rj  r•  rk  rl  r–  rm  rn  r—  ro  rp  r˜  r™  rš  r›  Úotime_for_shape_checkÚoheight_for_shape_checkÚowidth_for_shape_checks                           r6   Úmeta_avg_pool3d_backwardr«  ü  s  € ô 
‡L‚LÜˆKÓ˜FÑ"ÙXôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ù\ôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙTôð �1‰:€DÜ�w“< 1Ó$‰4¨'°!©*€DÜ�w“< 1Ó$‰4¨'°!©*€Dä	‡L‚LØ�
‰
�fÑÙKôô
 
‡L‚LØÔ×5Ð 0°AÑ 5Ù*ôð
 �j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä0°¸À"ÀaÈÓSÐÜ2°7¸BÀbÈ!ÈYÓWÐÜ1°&¸"¸dÀBÈÈ9ÓUÐä#ØØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØô'ð, �?‰?˜5Ÿ;™;Ó'Ð'r8   c                 ó8  ^ • [         R                  " T R                  S:H  =(       d    T R                  S:H  U 4S j5        T R                  S S [	        U5      -   n[
        R                  " T 5      n[         R                  " UT R                  T R                  US9$ )Nr.   r#  c                  ó"   >• ST R                    3$ )Nz"Expected 3D or 4D tensor, but got rD  r¶   s   €r6   re   Ú*meta_adaptive_avg_pool2d.<locals>.<lambda>P  ó   ø€ Ð4°T·Z±Z°LÑAr8   rÄ  r  )
rV   rh   rª   rœ   rg   rO   r   rŽ   r^   r†   )r�   Úoutput_sizerh  r±   s   `   r6   Úmeta_adaptive_avg_pool2dr±  L  s|   ø€ ä	‡L‚LØ�	‰	�Q‰×(˜$Ÿ)™) q™.ÜAôð —:‘:˜c˜r�?¤U¨;Ó%7Ñ7€LÜ×/Ò/°Ó5€Mô �;Š;ØØ�j‰jØ�{‰{Ø#ñ	ð r8   c                 óÔ   ^ • [         R                  " T R                  S:H  =(       d    T R                  S:H  U 4S j5        T R                  T R                  S S [        U5      -   5      $ )Nr#  rK  c                  ó"   >• ST R                    3$ )Nz"Expected 4D or 5D tensor, but got rD  r¶   s   €r6   re   Ú*meta_adaptive_avg_pool3d.<locals>.<lambda>b  r¯  r8   rc  )rV   rh   rª   r›   rœ   rg   )r�   r°  s   ` r6   Úmeta_adaptive_avg_pool3drµ  ^  sO   ø€ ä	‡L‚LØ�	‰	�Q‰×(˜$Ÿ)™) q™.ÜAôð �>‰>˜$Ÿ*™* S b˜/¬E°+Ó,>Ñ>Ó?Ð?r8   c                 ó  ^ ^^• T R                   n[        SU5       H1  m[        R                  " T R	                  T5      S:„  U U4S j5        M3     [        R                  " US:H  =(       d    US:H  U4S j5        [        R                  " TR
                  T R
                  :H  U U4S j5        [        R                  n[        T5      (       a  [        R                  nTR                  TR                  5      R                  US9$ )	Nr1   r   c                  ó*   >• ST R                    ST S3$ )Nz{adaptive_avg_pool2d_backward(): Expected grad_output to have non-zero                       size for non-batch dimensions, ú with dimension ú being emptyrD  )Úgrad_outrä   s   €€r6   re   Ú4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>m  s$   ø€ ð 6Ø6>·n±nÐ5EÐEUÐVWÐUXÐXdñfr8   r.   r#  c                  ó"   >• ST R                    3$ )NzBadaptive_avg_pool2d_backward(): Expected 3D or 4D tensor, but got rD  r¶   s   €r6   re   r»  r  s   ø€ ÐTÐUY×U_ÑU_ÐT`Ñar8   c                  ó<   >• STR                    ST R                    3$ ©Núexpected dtype z! for `grad_output` but got dtype r“   )rº  r�   s   €€r6   re   r»  v  s   ø€ �/ $§*¡* Ð-NÈxÏ~É~ÐN^Ñ_r8   r°   )rª   rË   rV   rh   r¨   r^   rµ   rÜ  rÙ  r›   rœ   r1  )rº  r�   rª   r±   rä   s   ``  @r6   Ú"meta__adaptive_avg_pool2d_backwardrÀ  g  sÅ   ú€ à�=‰=€DÜ�1�dŽ^ˆÜ�ŠØ�M‰M˜!Ó˜qÑ õfö	
ñ ô 
‡L‚LØ�‰	×�T˜Q‘YÜaôô 
‡L‚LØ�
‰
�h—n‘nÑ$Ý_ôô ×+Ñ+€MÜ˜×ÑÜ×+Ñ+ˆØ�>‰>˜$Ÿ*™*Ó%×(Ñ(°}Ð(ÐEÐEr8   c                 ó`   • [        U S5        [        R                  " U[        R                  S9$ )NÚadaptive_avg_pool3d_backwardr°   )Ú!_adaptive_pool_empty_output_checkrV   r´   r  ©r  r�   s     r6   Ú"meta__adaptive_avg_pool3d_backwardrÅ  ~  s(   € ô & kÐ3QÔRÜ×Ò˜D´×0NÑ0NÑOÐOr8   r  c                 ó¦   ^ ^^• T R                   n[        SU5       H2  m[        R                  " T R	                  T5      S:„  UU U4S j5        M4     g )Nr1   r   c                  ó.   >• T  STR                    ST S3$ )Nzc(): Expected grad_output to have non-zero size for non-batch dimensions, but grad_output has sizes r¸  r¹  rD  )rÚ  r  rä   s   €€€r6   re   Ú3_adaptive_pool_empty_output_check.<locals>.<lambda>Š  s*   ø€ Ø�*ð -Ø-8×->Ñ->Ð,?Ð?OÐPQÈsÐR^ñ`r8   )rª   rË   rV   rh   r¨   )r  rÚ  rª   rä   s   `` @r6   rÃ  rÃ  …  sB   ú€ Ø×Ñ€DÜ�1�dŽ^ˆÜ�ŠØ×Ñ˜QÓ !Ñ#öö	
ò r8   c                 ó  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        SU5       H1  m[        R                  " T R	                  T5      S:„  UU 4S j5        M3     [        R                  " [        U5      S:H  S 5        SnSnSnT R                   S:X  a  T R	                  S5      nUS-  nT R	                  US-
  5      nUu  pgT R                   S	:X  a6  XVU4nT R                  U5      n	T R                  U[        R                  S
9n
Xš4$ XEXg4n[        R                  " T 5      nT R                  U5      R                  US9n	T R                  U[        R                  S
9R                  US9n
Xš4$ )N©r.   r#  c                  ó"   >• ST R                    3$ )Nz:adaptive_max_pool2d(): Expected 3D or 4D tensor, but got: rD  r	  s   €r6   re   Ú*meta_adaptive_max_pool2d.<locals>.<lambda>—  ó   ø€ ÐLÈUÏ[É[ÈMÑZr8   r1   r   c                  ó*   >• STR                    ST  S3$ )Nzjadaptive_max_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r¸  r¹  rD  ©rä   rà   s   €€r6   re   rÌ  œ  ó    ø€ ð'Ø',§{¡{ mÐ3CÀAÀ3ÀlñTr8   rö   c                  ó   • g)NzCadaptive_max_pool2d(): internal error: output_size.size() must be 2r2   r2   r8   r6   re   rÌ  ¤  ó   € ÐUr8   r#  r.   r“   r°   )rª   rV   rh   rË   r¨   rÉ   r›   r¼   rO   r   r1  )rà   r°  rª   ÚdimHÚsizeBÚsizeDÚosizeHÚosizeWr­   rÔ   r¹   r±   rä   s   `           @r6   Úmeta_adaptive_max_pool2drØ  ‘  sk  ù€ ð �:‰:€DÜ	‡L‚LØ�‰ÜZôô �1�dŽ^ˆÜ�ŠØ�J‰J�q‹M˜AÑõö	
ñ ô 
‡L‚LÜˆKÓ˜AÑÙUôð
 €DØ€EØ€Eà‡z�z�QƒØ—
‘
˜1“ˆØ�‰	ˆà�J‰J�t˜a‘xÓ €EØ �N€Fà‡z�z�QƒØ FÐ+ˆ	Ø�o‰o˜iÓ(ˆØ—/‘/ )´5·;±;�/Ð?ˆØˆ|Ðà 6Ð2ˆ	Ü×3Ò3°EÓ:ˆØ�o‰o˜iÓ(×+Ñ+¸-Ð+ÐHˆØ—/‘/ )´5·;±;�/Ð?×BÑBØ'ð Cð 
ˆð ˆ|Ðr8   c                 óT  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        T S5        [        R                  " TR                  T R                  :H  U U4S j5        [
        R                  " T5      nTR                  TR                  5      R                  US9$ )NrÊ  c                  ó"   >• ST R                    3$ )NzKadaptive_max_pooling2d_backward(): Expected 3D or 4D grad_output, but got: rD  ©r  s   €r6   re   Ú3meta_adaptive_max_pool2d_backward.<locals>.<lambda>Ç  s   ø€ Ð]Ð^i×^oÑ^oÐ]pÑqr8   Úadaptive_max_pool2d_backwardc                  ó<   >• STR                    ST R                    3$ r¾  r“   )r  rà   s   €€r6   re   rÜ  Î  s   ø€ �/ %§+¡+ Ð.OÐP[×PaÑPaÐObÑcr8   r°   )
rª   rV   rh   rÃ  r^   rO   r   r›   rœ   r1  )r  rà   r¹   rª   r±   s   ``   r6   Ú!meta_adaptive_max_pool2d_backwardrß  Á  s‡   ù€ ð ×Ñ€DÜ	‡L‚LØ�‰Üqôô
 & kÐ3QÔRä	‡L‚LØ�‰�{×(Ñ(Ñ(Ýcôô
 ×/Ò/°Ó6€MØ�?‰?˜5Ÿ;™;Ó'×*Ñ*¸Ð*ÐGÐGr8   c                 ó  ^ ^• T R                   n[        R                  " US;   U 4S j5        [        SU5       H1  m[        R                  " T R	                  T5      S:„  UU 4S j5        M3     [        R                  " [        U5      S:H  S 5        SnSnSnUS:X  a  T R	                  S5      nUS-  nT R	                  U5      nUu  pgnUS	:X  a  XVXx4n	OXEXgU4n	T R                  U	5      n
T R                  U	[        R                  S
9nX«4$ )NrŽ  c                  ó"   >• ST R                    3$ )Nz:adaptive_max_pool3d(): Expected 4D or 5D tensor, but got: rD  r	  s   €r6   re   Ú*meta_adaptive_max_pool3d.<locals>.<lambda>Û  rÍ  r8   r1   r   c                  ó*   >• STR                    ST  S3$ )Nzjadaptive_max_pool3d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r¸  r¹  rD  rÏ  s   €€r6   re   râ  à  rÐ  r8   r.   c                  ó   • g)NzCadaptive_max_pool3d(): internal error: output_size.size() must be 3r2   r2   r8   r6   re   râ  è  rÒ  r8   rK  r#  r“   )rª   rV   rh   rË   r¨   rÉ   r›   r¼   )rà   r°  rª   ÚdimDrÔ  rÕ  ÚosizeTrÖ  r×  r­   rÔ   r¹   rä   s   `           @r6   Úmeta_adaptive_max_pool3drç  Õ  s  ù€ ð �:‰:€DÜ	‡L‚LØ�‰ÜZôô �1�dŽ^ˆÜ�ŠØ�J‰J�q‹M˜AÑõö	
ñ ô 
‡L‚LÜˆKÓ˜AÑÙUôð
 €DØ€EØ€EàˆqƒyØ—
‘
˜1“ˆØ�‰	ˆà�J‰J�tÓ€EØ(Ñ€F�FàˆqƒyØ FÐ3‰	à 6°6Ð:ˆ	à
�/‰/˜)Ó
$€CØ�o‰o˜i¬u¯{©{ˆoÐ;€Gàˆ<Ðr8   c                 óP   • [        U S5        UR                  UR                  5      $ )NÚadaptive_max_pool3d_backward)rÃ  r›   rœ   )r  rà   r¹   s      r6   Ú!meta_adaptive_max_pool3d_backwardrê    s"   € ô & kÐ3QÔRØ�?‰?˜5Ÿ;™;Ó'Ð'r8   c                 ó@   • Uc  [        S5      eU R                  U5      $ )Nz:cannot repeat_interleave a meta tensor without output_size)r0  r›   )Úrepeatsr°  s     r6   Úmeta_repeat_interleave_Tensorrí    s%   € àÑÜÐWÓXÐXØ×Ñ˜[Ó)Ð)r8   c                 ó4  • U R                   R                  (       d   eUR                   R                  (       d   e[        U R                  [	        U R                   5      5      UR                  [	        UR                   5      5      [
        R                  S9nU$ ©N©rL   )r^   rÿ   rT   r1  r   r   rP   )ÚrealÚimagrä  s      r6   Úmeta_complexró    sp   € ð �:‰:×'×'Ð'Ð'Ø�:‰:×'×'Ð'Ð'ÜØ�‰Ô+¨D¯J©JÓ7Ó8Ø�‰Ô+¨D¯J©JÓ7Ó8Ü6×>Ñ>ñ€Fð
 €Mr8   )Ú
fill_valuerô  c                ó\   • U R                  XR                  5       4[        R                  S9$ r‹  )r›   r‰   rV   r˜   )r�   r¨   rô  s      r6   Únonzero_staticrö    s$   € ð �>‰>˜4§¡£Ð,´E·J±Jˆ>Ð?Ð?r8   c                 ó  • [         R                  " [        R                  S 5        [         R                  " U R                  5       U R                  5       4SU R                  5       4[         R                  U R                  S9$ )Nc                  ó   • g)NaY  The register_meta function for torch.nonzero() raises unimplemented by default, as a correct data-independent implementation does not exist. This implementation returns a fake value, assuming all elements of the tensor are non-zero. To enable this registration, please set 'torch.fx.experimental._config.meta_nonzero_assume_all_nonzero' to True.r2   r2   r8   r6   re   Únonzero.<locals>.<lambda>'  s   € ð Sr8   r1   ©r^   r†   )	rV   Ú_check_not_implementedr‡  Úmeta_nonzero_assume_all_nonzeror2  rš   r‰   r˜   r†   r¶   s    r6   Únonzerorý  "  sf   € ô 
× Ò Ü×2Ñ2ñ	Sôô ×ÒØ	�‰‹�t—x‘x“zÐ"Ø	
ˆD�J‰J‹LÐÜ�j‰jØ�{‰{ñ	ð r8   c           
      ón	  ^ ^^^^^^^^• [         R                  " [        T5      S 5        / n[        T5       GHŽ  u  mmTGbr  [         R                  " TR                  [         R
                  [         R                  [         R                  [         R                  4;   S 5        TR                  [         R                  [         R                  4;   aÏ  TR                  5       n[        U5      m[         R                  " TTR                  -   T R                  :*  U 4S j5        [        TR                  5       Hc  m[         R                  " TR                  T   T R                  TT-      :H  UUUUU 4S j5        UR                  UR                  ST5      5        Me     GMi  UR                  T5        GM}  UR                  T5        GM‘     Um[         R                  " [        T5      T R                  :*  UU 4S j5        SS KJn  [%        UR&                  " T6 5      m[        T5      T R                  :  a,  TR                  S 5        [        T5      T R                  :  a  M,  SnSnT H&  mUS:X  a	  Tb  SnM  M  US:X  a	  Tc  S	nM  M!  Tc  M&    O   S
nU(       d�  / n/ n[        T5       H-  u  mmTc  M  UR                  T5        UR                  T5        M/     [        T5       H-  u  mmTb  M  UR                  T5        UR                  T5        M/     T R)                  U5      m Um/ m/ m/ m[        T5       He  u  n	mTcG  T(       a   TR                  T R                  U	   5        M0  TR                  T R                  U	   5        MP  [%        TR                  5      mMg     UUU4S jn
T R+                  TT-   T-   5      nSSKJn  U" T R1                  5       S:H  5      (       a  U$ U
" T 5      n[2        R4                  " U5      u  pï[%        U5      [%        [        [        U5      5      5      :w  a‚  [2        R6                  " UR                  U5      n[2        R8                  " U5      n[2        R6                  " U[2        R:                  " U5      5      nUR=                  UR?                  5       U5      nU$ )Nc                  ó   • g)Nz#at least one index must be providedr2   r2   r8   r6   re   Ú#meta_index_Tensor.<locals>.<lambda>7  s   € Ð(Mr8   c                  ó   • g)Nz?tensors used as indices must be long, int, byte or bool tensorsr2   r2   r8   r6   re   r   ?  s   € ÐYr8   c                  ó"   >• ST R                    3$ )Nú)too many indices for tensor of dimension r  r¶   s   €r6   re   r   F  s   ø€ ÐGÈÏ	É	À{ÑSr8   c            	      óN   >• STR                    ST  STR                    STT-    3$ )NzThe shape of the mask ú
 at index z0 does not match the shape of the indexed tensor rD  )rä   r•   ÚjrT  r�   s   €€€€€r6   re   r   K  s:   ø€ Ð"8¸¿¹¸ÀZÐPQÈsð SJØJNÏ*É*ÈÐU_Ð`aÐdeÑ`eÐ_fñ!hr8   r1   c                  ó<   >• STR                    S[        T 5       S3$ )Nr  z (got r|   )rª   rÉ   )r¹   r�   s   €€r6   re   r   V  s   ø€ Ð;¸D¿I¹I¸;ÀfÌSÐQXË\ÈNÐZ[Ñ\r8   r   Frö   Tc                 óÜ   >• TT-   T-   n[        U R                  5       5      nS/[        T5      -  U[        T5      [        U R                  5      [        T5      -
  & U R	                  X5      $ )z9
This follows restride_src in TensorAdvancedIndexing.cpp
r   )rÊ   rÍ   rÉ   rœ   rL  )r�   rœ   rý   Úafter_shapeÚbefore_shapeÚreplacement_shapes      €€€r6   Ú_restride_srcÚ(meta_index_Tensor.<locals>._restride_src—  sm   ø€ ð Ð0Ñ0°;Ñ>ˆÜ�t—{‘{“}Ó%ˆàKLÈ#ÔPSØóQ
ñ K
ˆ”�LÓ!¤C¨¯
©
£O´c¸+Ó6FÑ$FÐGð �‰˜uÓ.Ð.r8   ©Úguard_or_false) rV   rh   r  Ú	enumerater^   r˜   rì   rJ  rý  rÉ   r™   rª   rË   rœ   rÌ   ÚselectÚtorch._refsÚ_refsrÊ   r$   rÏ   r›   r.  r  rš   rO   Ú3compute_elementwise_output_logical_to_physical_permÚ
apply_permr   Úinvert_permrL  r¨   )r�   r¹   rä  rý  ÚrefsÚstateÚhas_contiguous_subspacer¹  Útransposed_indicesr‰   r  rÔ   r  Úrestrided_selfÚpermrR   Ú
perm_shaper=  r	  r
  rä   r•   r  rT  r  s   ``                @@@@@@@r6   Úmeta_index_Tensorr  5  sË  ÿø€ ä	‡L‚L”�g“Ñ MÔNð #%€FÜ˜g×&‰ˆˆ5ØÒÜ�LŠLØ—‘¤§
¡
¬E¯I©I´u·z±zÄ5Ç:Á:ÐNÑNÙYôð �{‰{œuŸz™z¬5¯:©:Ð6Ó6ØŸ-™-›/�Ü˜“K�Ü×"Ò"Ø˜Ÿ
™
‘N d§i¡iÑ/ÜSôô ˜uŸz™zÖ*�AÜ×&Ò&ØŸ™ A™¨$¯*©*°Q¸±UÑ*;Ñ;÷hð hôð
 —M‘M '§.¡.°°AÓ"6Ö7ô +ð —‘˜e×$à�M‰M˜%× ñ/ 'ð0 €GÜ	‡L‚LÜˆG‹˜Ÿ	™	Ñ!Ý\ôõ
 ä�4×(Ò(¨'Ð2Ó3€Gä
ˆg‹,˜Ÿ™Ó
"Ø�‰�tÔô ˆg‹,˜Ÿ™Õ
"ð €EØ#ÐÛˆØ�A‹:ØÑ Ø’ñ !à�a‹ZØ‰}Ø’ñ ð Ó Ùñ ð #'Ðö
 #ØˆØÐÜ! 'Ö*‰HˆAˆuØÓ Ø—‘˜A”Ø"×)Ñ)¨%Ö0ñ +ô " 'Ö*‰HˆAˆuØ‹}Ø—‘˜A”Ø"×)Ñ)¨%Ö0ñ +ð �|‰|˜DÓ!ˆØ$ˆð !€LØ€KØ#%ÐÜ Ö(‰
ˆˆUØ‰=Þ Ø×"Ñ" 4§:¡:¨c¡?Ö3à×#Ñ# D§J¡J¨s¡OÖ4ä $ U§[¡[Ó 1Òñ )÷
/ð �.‰.˜Ð(9Ñ9¸KÑGÓ
H€CÝDá�d—j‘j“l aÑ'×(Ñ(àˆ
ñ
 # 4Ó(€NÜ×GÒGÈÓW�G€Dô ˆDƒz”Tœ%¤ D£	Ó*Ó+Ó+Ü×%Ò% c§i¡i°Ó6ˆ
Ü×6Ò6°zÓBˆ
Ü×%Ò% j´%×2CÒ2CÀDÓ2IÓJˆ
Ø�n‰n˜SŸX™X›Z¨Ó4ˆØ€Jr8   c                 óð   • S nS nS nU
S   (       a  U R                  UR                  5       5      nU
S   (       a  U R                  UR                  5       5      nU
S   (       a  U R                  U5      nX¼U4$ ©Nr   r1   rö   ©r›   r¨   )Úgrad_output_Úinput_Úweight_Úbias_sizes_optrÍ   râ  rÂ  Ú
transposedrÅ  rÄ  Úoutput_maskÚbackend_grad_inputÚbackend_grad_weightÚbackend_grad_biass                 r6   Úmeta_convolution_backwardr+  ¹  sv   € ð  ÐØÐØÐà�1‡~Ø)×3Ñ3°F·K±K³MÓBÐØ�1‡~Ø*×4Ñ4°W·\±\³^ÓDÐØ�1‡~Ø(×2Ñ2°>ÓBÐàÐ5FÐGÐGr8   c                óÎ  ^^• TR                  S5      nTR                  S5      nU R                  XV45      n [        R                  " TR	                  5       S:H  S 5        [        R                  " TR	                  5       S:H  S 5        [        R                  " TR                  S5      TR                  S5      :H  UU4S j5        [        R                  " TR                  S5      TR                  S5      :H  UU4S j5        [        R                  " U R                  S5      U:H  =(       a    U R                  S5      U:H  S	 5        U R                  U R                  5       5      $ )
Nr1   rö   r.   c                  ó   • grw  r2   r2   r8   r6   re   Úmeta_addbmm.<locals>.<lambda>Ý  ry  r8   c                  ó   • gr{  r2   r2   r8   r6   re   r.  Þ  ry  r8   r   c                  óP   >• ST R                  S5       STR                  S5       3$ )Nz8batch1 and batch2 must have same number of batches, got r   r¦   r§   ©r}  r~  s   €€r6   re   r.  á  s,   ø€ ÐJÈ6Ï;É;ÐWXË>ÐJZÐZ_Ð`f×`kÑ`kÐlmÓ`nÐ_oÑpr8   c            
      óš   >• ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S3	$ )Nz#Incompatible matrix sizes for bmm (r1   r;   rö   r¦   r|   r§   r1  s   €€r6   re   r.  å  sL   ø€ Ø1°&·+±+¸a³.Ð1AÀÀ6Ç;Á;ÈqÃ>ÐBRð SØ—;‘;˜q“>Ð" ! F§K¡K°£NÐ#3°1ñ6r8   c                  ó   • g)Nz.self tensor does not match matmul output shaper2   r2   r8   r6   re   r.  ì  s   € Ð@r8   )r¨   r“  rV   rh   r‰   r›   )r�   r}  r~  rW  rV  r‰  rŠ  s    ``    r6   Úmeta_addbmmr4  ×  sÿ   ù€ ð �;‰;�q‹>€DØ�;‰;�q‹>€DØ�;‰;˜�|Ó$€DÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚LØ�‰�A‹˜&Ÿ+™+ a›.Ñ(Ýpôô 
‡L‚LØ�‰�A‹˜&Ÿ+™+ a›.Ñ(õ	
ôô 
‡L‚LØ�	‰	�!‹˜Ñ×5 §¡¨1£°Ñ!5Ù@ôð �>‰>˜$Ÿ)™)›+Ó&Ð&r8   c                 ó@   • U R                  U R                  5       5      $ rB   r!  )r�   r  Úkwargss      r6   Úmeta_randint_liker7  ñ  s   € à�>‰>˜$Ÿ)™)›+Ó&Ð&r8   )Ú
grad_scaleÚ	found_infc       	         óp   ^• XX#XE4 H,  m[         R                  " [        T[        5      U4S j5        M.     g )Nc                  ó    >• S[        T 5       3$ ©Nz'exponent must be a tensor list but got ©r}   ©Úls   €r6   re   Ú#meta__fused_adam_.<locals>.<lambda>  ó   ø€ Ð=¼dÀ1»g¸YÑGr8   ©rV   rh   rr   rÊ   )r�   ÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚlrÚbeta1Úbeta2Úweight_decayÚepsÚamsgradÚmaximizer8  r9  r?  s                  @r6   Úmeta__fused_adam_rO  ö  s0   ø€ ð& ˜8°/ÓOˆÜ�ŠÜ�qœ$ÓÜGö	
ò Pr8   c       	         ó¾   ^• XX#XE4 H,  m[         R                  " [        T[        5      U4S j5        M.     S nU" U 5      U" U5      U" U5      U" U5      U" U5      4$ )Nc                  ó    >• S[        T 5       3$ r<  r=  r>  s   €r6   re   Ú"meta__fused_adam.<locals>.<lambda>&  rA  r8   c                 óZ   • U  Vs/ s H  n[         R                  " U5      PM     sn$ s  snf rB   r:  )Útensor_listrÓ  s     r6   Úempty_like_listÚ)meta__fused_adam.<locals>.empty_like_list)  s%   € Ù-8Ó9ª[¨”× Ò  Ö#©[Ñ9Ð9ùÒ9s   … (rB  )r�   rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  r8  r9  rU  r?  s                   @r6   Úmeta__fused_adamrW    si   ø€ ð& ˜8°/ÓOˆÜ�ŠÜ�qœ$ÓÜGö	
ñ Pò:ñ 	˜ÓÙ˜ÓÙ˜Ó!Ù˜Ó$Ù˜Ó(ðð r8   c                 ót  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        [         R                  " TR                  [         R                  L U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        T R                  T R                  S5      TR                  S5      4[         R                  S	9$ )
Nrö   c                  ó   • g)Nza must be a 2D tensorr2   r2   r8   r6   re   Úmeta__int_mm.<locals>.<lambda>8  ó   € Ð'>r8   c                  ó   • g)Nzb must be a 2D tensorr2   r2   r8   r6   re   rZ  9  r[  r8   c                  ó"   >• ST R                    3$ )Nzexpected self to be int8, got r“   )r4   s   €r6   re   rZ  <  ó   ø€ Ð0°·±°	Ñ:r8   c                  ó"   >• ST R                    3$ )Nzexpected mat2 to be int8, got r“   )r5   s   €r6   re   rZ  @  r^  r8   r1   r   c            
      óš   >• ST R                  S5       ST R                  S5       STR                  S5       STR                  S5       S3	$ )Nz'Incompatible matrix sizes for _int_mm (r   r;   r1   r¦   r|   r§   r3   s   €€r6   re   rZ  D  sH   ø€ Ø5°a·f±f¸Q³i°[ÀÀ!Ç&Á&ÈÃ)Àð MØ—6‘6˜!“9�+˜Q˜qŸv™v a›y˜k¨ñ,r8   r“   )rV   rh   r‰   r^   rJ  r¨   r›   rK  r3   s   ``r6   Úmeta__int_mmra  5  sÐ   ù€ ô 
‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—:‘:ÐÜ:ôô 
‡L‚LØ	�‰”5—:‘:ÐÜ:ôô 
‡L‚LØ	�‰ˆq‹	�Q—V‘V˜A“YÑõ	
ôð �;‰;˜Ÿ™˜q›	 1§6¡6¨!£9Ð-´U·[±[ˆ;ÐAÐAr8   c                 ód  ^ • [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        T R                  S5      nT R                  S5      S-  nT R                  US-  X1S-  -  SUS-  4[         R                  S	9$ )
Nrö   c                  ó   • g©Nzw must be a 2D tensorr2   r2   r8   r6   re   Ú2meta__convert_weight_to_int4pack.<locals>.<lambda>N  r[  r8   c                  ó"   >• ST R                    3$ r=  r“   r9  s   €r6   re   re  Q  ó   ø€ Ð.¨q¯w©w¨iÑ8r8   r   r1   é   é   é    r“   )rV   rh   r‰   r^   r  r¨   r›   rK  ©r  Úinner_k_tilesr  rT  s   `   r6   Ú meta__convert_weight_to_int4packrm  L  sœ   ø€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—;‘;ÐÜ8ôð 	
�‰ˆq‹	€AØ	�‰ˆq‹	�A‰€AØ�;‰;à�‰FØ "Ñ$Ñ%ØØ˜QÑð		
ô �k‰kð ð ð r8   c                 óH  ^ • [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  L U 4S j5        T R                  S5      nT R                  S5      nT R                  X#S-  4[         R                  S9$ )Nrö   c                  ó   • grd  r2   r2   r8   r6   re   Ú:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>b  r[  r8   c                  ó"   >• ST R                    3$ ©Nzexpected w to be int32, got r“   r9  s   €r6   re   rp  e  rg  r8   r   r1   r“   )rV   rh   r‰   r^   rK  r¨   r›   r  rk  s   `   r6   Ú(meta__convert_weight_to_int4pack_for_cpurs  `  s}   ø€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—;‘;ÐÜ8ôð 	
�‰ˆq‹	€AØ	�‰ˆq‹	€AØ�;‰;Ø	
�‰FˆÜ�k‰kð ð ð r8   c                 ó6  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      S-  T R                  S	9$ )
Nrö   c                  ó   • g©Nzx must be a 2D tensorr2   r2   r8   r6   re   Ú*meta__weight_int4pack_mm.<locals>.<lambda>q  r[  r8   r#  c                  ó   • g)Nzw must be a 4D tensorr2   r2   r8   r6   re   rw  r  r[  r8   c                  ó"   >• ST R                    3$ r;  r“   r5  s   €r6   re   rw  u  ó   ø€ Ð5°a·g±g°YÑ?r8   c                  ó"   >• ST R                    3$ rr  r“   r9  s   €r6   re   rw  y  rg  r8   r   rh  r“   ©
rV   rh   r‰   r^   ra  rb  rc  rK  r›   r¨   rB  s   ``  r6   Úmeta__weight_int4pack_mmr}  o  s³   ù€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚LØ	�‰”5—;‘;ÐÜ8ôð �;‰;�q—v‘v˜a“y !§&¡&¨£)¨a¡-°q·w±wˆ;Ð?Ð?r8   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrö   c                  ó   • grv  r2   r2   r8   r6   re   Ú2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>€  r[  r8   c                  ó   • grd  r2   r2   r8   r6   re   r€  �  r[  r8   c                  ó"   >• ST R                    3$ r;  r“   r5  s   €r6   re   r€  „  rz  r8   c                  ó"   >• ST R                    3$ r=  r“   r9  s   €r6   re   r€  ˆ  rg  r8   r   r“   )
rV   rh   r‰   r^   ra  rb  rc  r  r›   r¨   rB  s   ``  r6   Ú meta__weight_int4pack_mm_for_cpur„  ~  ó¯   ù€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚LØ	�‰”5—;‘;ÐÜ8ôð �;‰;�q—v‘v˜a“y !§&¡&¨£)°1·7±7ˆ;Ð;Ð;r8   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " TR                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrö   c                  ó   • grv  r2   r2   r8   r6   re   Ú;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>�  r[  r8   c                  ó   • grd  r2   r2   r8   r6   re   rˆ  �  r[  r8   c                  ó"   >• ST R                    3$ r;  r“   r5  s   €r6   re   rˆ  “  rz  r8   c                  ó"   >• ST R                    3$ rr  r“   r9  s   €r6   re   rˆ  —  rg  r8   r   r“   r|  )r;   r  r?  ÚqScaleÚqZeross   ``   r6   Ú)_weight_int4pack_mm_with_scales_and_zerosrŽ  �  r…  r8   r4   r5   c                 ó   • X-   S-
  U-  U-  $ r0   r2   r3   s     r6   Úkai_roundupr�  œ  s   € Ø‰U�Q‰Y˜1Ñ Ñ!Ð!r8   c                 ó  ^	^
^^^^^^^^^• U S:X  a{  X2:X  a(  SnSnSnSmSmSmS mUUUU4S jmU4S jnU" XXEU5      $ US-  S	:X  aD  X#-  S	:X  a;  SnSnSnSmSmSmSm	U	UU4S
 jnU	U
UUUUU4S jmS m
U	4S jmU	4S jmU" XXEXc5      $ g g g )Nr#  rh  ri  rö   c                 ó4   • [        X-  S5      n[        X5      $ )Nr#  ©r�  )rT  ÚkrÚsrÚkr_sr_roundedup4s       r6   Úkai_k_roundedupÚ3get_kai_packed_weight_size.<locals>.kai_k_roundedup¬  s   € ô $/¨r©w¸Ó#:Ð Ü" 1Ó7Ð7r8   c                 óX   >• T" XU5      nUS-  S:X  d   S5       eUUS-  T-   T-   T-   -  $ )Nrö   r   zk_internal must be evenr2   )	rT  Únrr”  r•  Ú
k_internalr—  Úkai_num_bytes_biasÚkai_num_bytes_multiplier_rhsÚkai_num_bytes_sum_rhss	        €€€€r6   Ú9kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0Ú]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0²  sW   ø€ ñ -¨Q°BÓ7�
à" Q™¨1Ó,ÐGÐ.GÓGÐ,àØ 1‘_Ø2ñ3à+ñ,ð )ñ)ñð r8   c                 ó8   >• [        X5      U-  nUT" XX45      -  $ rB   r“  )r  rT  rš  r”  r•  Únum_rowsrŸ  s         €r6   Ú7kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0Ú[get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0À  s0   ø€ ô ' qÓ-°Ñ3�ð ÙOØ˜róñðr8   rj  r   c                 óz   >• XS-  S:X  d   eUT	-  S:X  d   eUT-  S:X  d   e[        X5      U-  nUT" XX4U5      -  $ rt  r“  )
r  rT  rš  r”  r•  Úblr¢  Úkai_bl_multiple_ofÚ;kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Úkai_nr_multiple_ofs
          €€€r6   Ú9kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Ú]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Ø  sh   ø€ ð ™ A“~Ð%�~ØÐ/Ñ/°AÓ5Ð5Ð5ØÐ/Ñ/°AÓ5Ð5Ð5ä& qÓ-°Ñ3�ð ÙQØ˜r róñðr8   c                 óŒ   >• XB-  S:X  d   eUT
-  S:X  d   eUT-  S:X  d   eT	" 5       nT" X5      nT" XE5      nUXv-  T-   T-   -  $ rt  r2   )rT  rš  r”  r•  r¦  Únum_bytes_multiplier_rhsÚnum_blocks_per_rowÚnum_bytes_per_blockr§  Ú#kai_get_bf16_datatype_size_in_bytesr©  Úkai_num_blocks_per_rowrœ  Úkai_num_bytes_per_blockrž  s           €€€€€€€r6   r¨  Ú_get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0è  s…   ø€ ð ™ A“~Ð%�~ØÐ/Ñ/°AÓ5Ð5Ð5ØÐ/Ñ/°AÓ5Ð5Ð5ñ ,OÓ+PÐ(Ù%;¸AÓ%BÐ"Ù&=Øó'Ð#ð Ø(Ñ=Ø+ñ,à(ñ)ñð r8   c                  ó   • g)Nrö   r2   r2   r8   r6   r°  ÚGget_kai_packed_weight_size.<locals>.kai_get_bf16_datatype_size_in_bytesþ  s   € Ør8   c                 ó6   >• UT-  S:X  d   e[        X5      U-  $ rt  r“  )rT  r¦  r§  s     €r6   r±  Ú:get_kai_packed_weight_size.<locals>.kai_num_blocks_per_row  s'   ø€ ØÐ/Ñ/°AÓ5Ð5Ð5Ü" 1Ó)¨RÑ/Ð/r8   c                 ó*   >• U T-  S:X  d   eU S-  U-   $ )Nr   rö   r2   )r¦  r­  r§  s     €r6   r²  Ú;get_kai_packed_weight_size.<locals>.kai_num_bytes_per_block  s'   ø€ ØÐ/Ñ/°AÓ5Ð5Ð5Ø˜a™Ð#;Ñ;Ð;r8   r2   )Ún_bitsr´  ÚKÚ	groupsizeÚkai_nrÚkai_krÚkai_srr£  rª  r§  r°  r¨  rŸ  r—  r©  r±  rœ  r�  r²  rž  s            @@@@@@@@@@@r6   Úget_kai_packed_weight_sizerÀ     sÞ   ÿú€ Ø�ƒ{à‹>àˆFØˆFØˆFØ$%Ð!Ø+,Ð(Ø!"Ðò8÷ð õ
ñ KØ�f fóð ð ˜‰^˜qÓ  Q¡]°aÓ%7ØˆFØˆFØˆFØ$%Ð!Ø!"ÐØ!"ÐØ!#Ð÷÷ ó ò,õ0õ<ñ MØ�f fóð ðu &8Ð ð] r8   c                 ó†  ^ • [         R                  " T R                  [         R                  L U 4S j5        [         R                  R
                  R                  5       (       a‹  X4:X  a  UR                  [         R                  :X  d4  X4:  ac  US-  S:X  aZ  XC-  S:X  aR  UR                  [         R                  :X  a4  [        SXTU5      nT R                  [        U5      [         R                  S9$ T R                  5       UR                  5       -   nUb  XbR                  5       -  nT R                  U[         R                  S9$ )Nc                  ó"   >• ST R                    3$ r=  r“   )Úweightss   €r6   re   Ú2meta__dyn_quant_pack_4bit_weight.<locals>.<lambda>  s   ø€ Ð.¨w¯}©}¨oÑ>r8   rj  r   r#  r“   )rV   rh   r^   r  ÚbackendsÚkleidiaiÚis_availablerZ   rc  rÀ  r›   rì   rš   )rÃ  Úscales_zerosrE  Ú
block_sizeÚin_featuresÚout_featuresÚpacked_weight_sizes   `      r6   Ú meta__dyn_quant_pack_4bit_weightrÍ    s  ø€ ô 
‡L‚LØ�‰œŸ™Ð$Ü>ôô ‡~�~×Ñ×+Ñ+×-Ñ-Ø	Ó	" |×'9Ñ'9¼U¿[¹[Ó'HàÓ$Ø˜R‘ 1Ó$ØÑ(¨AÓ-Ø×"Ñ"¤e§n¡nÓ4ô 8Øˆ|¨*ó
Ðð × Ñ ¤Ð%7Ó!8ÄÇÁÐ ÐLÐLØ Ÿ™›¨<×+=Ñ+=Ó+?Ñ?ÐØÑØŸj™j›lÑ*ÐØ×ÑÐ/´u·{±{ÐÐCÐCr8   c                 ó€  ^ ^^• [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  :H  =(       d)    T R                  [         R
                  :H  =(       a    TT:H  UUU 4S j5        T R                  S5      nT R                  XTT R                  S9$ )Nrö   c                  ó   • g)Nzinput must be a 2D tensorr2   r2   r8   r6   re   Ú-meta__dyn_quant_matmul_4bit.<locals>.<lambda>1  s   € Ð)Dr8   c                  ó.   >• STR                    ST  ST 3$ )NzPexpected input to be f32 or bf16 (bf16 requires block_size == in_features), got z with block_size=z and in_features=r“   )rÉ  rÊ  Úinps   €€€r6   re   rÐ  5  s%   ø€ ðØ—9‘9�+Ð.¨z¨lÐ:KÈKÈ=ñZr8   r   r“   )rV   rh   r‰   r^   ra  rc  r¨   r›   )rÒ  Úpacked_weightsrÉ  rÊ  rË  r¸  s   ` ``  r6   Úmeta__dyn_quant_matmul_4bitrÔ  )  s…   ú€ ô 
‡L‚L�—‘“˜a‘Ñ!DÔEÜ	‡L‚LØ	�‰”e—m‘mÑ	#÷ 	GØ�I‰IœŸ™Ñ'×E¨J¸+Ñ,Eö	
ôð 	�‰�‹€AØ�=‰=˜°·	±	ˆ=Ð:Ð:r8   c                 ó0  ^ ^• [         R                  " T R                  5       S:H  S 5        [         R                  " T R                  [         R                  [         R
                  [         R                  4;   U 4S j5        [         R                  " TR                  5       S:H  S 5        [         R                  " TR                  [         R                  L U4S j5        T R                  T R                  S5      TR                  S5      T R                  S9$ )Nrö   c                  ó   • grv  r2   r2   r8   r6   re   Ú*meta__weight_int8pack_mm.<locals>.<lambda>@  r[  r8   c                  ó"   >• ST R                    3$ r;  r“   r5  s   €r6   re   r×  C  rz  r8   c                  ó   • grd  r2   r2   r8   r6   re   r×  E  r[  r8   c                  ó"   >• ST R                    3$ )Nzexpected w to be int8, got r“   r9  s   €r6   re   r×  H  s   ø€ Ð-¨a¯g©g¨YÑ7r8   r   r“   )
rV   rh   r‰   r^   ra  rb  rc  rJ  r›   r¨   )r;   r  Úq_scaless   `` r6   Úmeta__weight_int8pack_mmrÜ  >  s¯   ù€ ä	‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”E—M‘M¤5§=¡=´%·.±.ÐAÑAÜ?ôô 
‡L‚L�—‘“˜A‘Ñ>Ô?Ü	‡L‚LØ	�‰”5—:‘:ÐÜ7ôð �;‰;�q—v‘v˜a“y !§&¡&¨£)°1·7±7ˆ;Ð;Ð;r8   c                 óŒ  ^ ^^• [         R                  " T R                  5       S:¬  U 4S j5        [         R                  " TR                  5       S:¬  U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        [         R                  " [        R
                  " T R                  5      U 4S j5        [         R                  " [        R
                  " TR                  5      U4S j5        [         R                  " US:¬  S	 5        [         R                  " TS
;   U4S j5        T R                  S5      nTR                  S5      nT R                  S S nTR                  S S n[        [         R                  " Xg5      5      nUR                  XE/5        T R                  U5      $ )Nrö   c                  ó,   >• ST R                  5        S3$ )Nz1cdist only supports at least 2D tensors, X1 got: r4  r    ©Úx1s   €r6   re   Ú$meta_cdist_forward.<locals>.<lambda>Q  ó   ø€ ÐCÀBÇFÁFÃHÀ:ÈQÑOr8   c                  ó,   >• ST R                  5        S3$ )Nz1cdist only supports at least 2D tensors, X2 got: r4  r    ©Úx2s   €r6   re   rá  U  râ  r8   rŸ   c                  óP   >• ST R                  S5       STR                  S5       3$ )Nz4X1 and X2 must have the same number of columns. X1: rŸ   z X2: r§   )rà  rå  s   €€r6   re   rá  Y  s*   ø€ ÐFÀrÇwÁwÈrÃ{ÀmÐSXÐY[×Y`ÑY`ÐacÓYdÐXeÑfr8   c                  ó"   >• ST R                    3$ )Nz3cdist only supports floating-point dtypes, X1 got: r“   rß  s   €r6   re   rá  ]  ó   ø€ ÐEÀbÇhÁhÀZÑPr8   c                  ó"   >• ST R                    3$ )Nz3cdist only supports floating-point dtypes, X2 got: r“   rä  s   €r6   re   rá  a  rè  r8   r   c                  ó   • g)Nz)cdist only supports non-negative p valuesr2   r2   r8   r6   re   rá  c  s   € Ð!Lr8   r   c                  ó   >• ST  3$ )Nz(possible modes: None, 0, 1, 2, but was: r2   )Úcompute_modes   €r6   re   rá  f  s   ø€ Ð:¸<¸.ÑIr8   rÄ  )rV   rh   r‰   r¨   rO   Úis_float_dtyper^   rœ   rÊ   Úbroadcast_shapesÚextendr›   )	rà  rå  rg  rì  Úr1Úr2Úbatch_tensor1Úbatch_tensor2rh  s	   `` `     r6   Úmeta_cdist_forwardrô  M  sF  ú€ ä	‡L‚LØ
�‰‹�A‰ÜOôô 
‡L‚LØ
�‰‹�A‰ÜOôô 
‡L‚LØ
�‰�‹�r—w‘w˜r“{Ñ"Ýfôô 
‡L‚LÜ×Ò˜RŸX™XÓ&ÜPôô 
‡L‚LÜ×Ò˜RŸX™XÓ&ÜPôô 
‡L‚L��a‘ÑLÔMÜ	‡L‚LØ˜Ñ'ÜIôð 
�‰�‹€BØ	�‰�‹€BØ—H‘H˜S˜b�M€MØ—H‘H˜S˜b�M€MÜœ×.Ò.¨}ÓLÓM€LØ×Ñ˜˜Ô!Ø�<‰<˜Ó%Ð%r8   c                 ó<  • UR                   S   nUR                   S   nUR                   S   nUR                   S S nUR                   S S n	[        [        R                  " X‰5      5      n
U
R	                  5       nUR                  Xe/5        [        R                  " U
5      nUS:X  d  US:X  d  US:X  d  US:X  a  [        R                  " U5      $ U[        UR                   5      :w  a  UR                  U5      n[        R                  " U[        R                  S9$ )NrŸ   rÄ  r   r°   )rœ   rÊ   rV   rî  Úcopyrï  ÚmathÚprodÚ
zeros_liker“  r´   rµ   )rl  rà  rå  rg  ÚcdistÚc1rð  rñ  rò  ró  r�  Útensor1_expand_sizeÚbatch_products                r6   Úmeta_cdist_backwardrþ  q  sð   € ð 
�‰�"‰€BØ	�‰�"‰€BØ	�‰�"‰€BØ—H‘H˜S˜b�M€MØ—H‘H˜S˜b�M€MÜ¤× 6Ò 6°}Ó TÓUÐØ.×3Ñ3Ó5ÐØ×Ñ ˜xÔ(Ü—I’IÐ2Ó3€MØ	ˆQƒw�"˜“'˜R 1›W¨¸Ó(:Ü×Ò Ó#Ð#Øœd 2§8¡8›nÓ,Ø�Y‰YÐ*Ó+ˆÜ×Ò˜B¬e×.EÑ.EÑFÐFr8   c	                 óZ  ^ ^^^^^• [         R                  " TR                  [         R                  [         R                  4;   U4S j5        [         R                  " TR                  [         R                  [         R                  4;   U4S j5        [         R                  " [
        R                  " T R                  5      U 4S j5        TR                  S5      n	U(       a   [         R                  " U	S:¬  S 5        U	S-  n	T R                  U	T R                  S5      5      n
Tb‚  [         R                  " U[        :H  S 5        [         R                  " TR                  S:H  U4S j5        [         R                  " TR                  5       TR                  5       :H  UU4S	 j5        U4S
 jmS mUU4S jn[        T5      S:w  a}  TR                  TR                  S5      5      nTR                  TR                  5       5      nU[        :X  a"  TR                  U	T R                  S5      5      nOõTR                  S5      nOãU" T TX¨5      nU[        [        4;   d  U(       d!  TR                  TR                  S5      5      nOTR                  S5      nTR                  U	5      nTR                  S   nU[        :X  aG  U(       a   [         R                  " US:¬  S 5        US-  nTR                  UT R                  S   5      nOTR                  UR                  5       5      nX¬XÞ4$ )Nc                  ó"   >• ST R                    3$ )Nz(expected indices to be long or int, got r“   )r¹   s   €r6   re   Ú$meta_embedding_bag.<locals>.<lambda>–  ó   ø€ Ð:¸7¿=¹=¸/ÑJr8   c                  ó"   >• ST R                    3$ )Nz(expected offsets to be long or int, got r“   )rx  s   €r6   re   r  š  r  r8   c                  ó"   >• ST R                    3$ )Nz/expected weight to be floating point type, got r“   )rC  s   €r6   re   r  ž  s   ø€ ÐAÀ&Ç,Á,ÀÑPr8   r   r1   c                  ó   • g©Nz1include_last_offset: numBags should be at least 1r2   r2   r8   r6   re   r  ¥  s   € ÐGr8   c                  ó   • g)Nz@embedding_bag: per_sample_weights only supported with mode='sum'r2   r2   r8   r6   re   r  ®  s   € ÐVr8   c                  ó$   >• ST R                    S3$ )Nz1expected per_sample_weights to be 1D tensor, got r4  r  )Úper_sample_weightss   €r6   re   r  ²  s   ø€ ÐGÐHZ×H_ÑH_ÐG`Ð`aÑbr8   c                  óN   >• STR                  5        ST R                  5        S3$ )Nz%expected per_sample_weights.numel() (z$ to be the same as indices.numel() (r|   ©rš   )r¹   r	  s   €€r6   re   r  ¶  s/   ø€ Ø7Ð8J×8PÑ8PÓ8RÐ7Sð T6Ø6=·m±m³oÐ5FÀañIr8   c                 óL   >• T" XU5      =(       a    UR                  S5      S:H  $ ©Nr   r1   ©rÍ   )r4  r¢  r  Úpadding_idxÚis_fast_path_index_selects       €r6   Úis_fast_path_index_select_scaleÚ;meta_embedding_bag.<locals>.is_fast_path_index_select_scale¼  s&   ø€ á% c°;Ó?×XÀEÇLÁLÐQRÃOÐWXÑDXð	
r8   c                 ó  • U R                   [        R                  :H  =(       d    U R                   [        R                  :H  =(       a;    U R	                  S5      S:H  =(       a     UR	                  S5      S:H  =(       a    US:  $ rí  )r^   rV   rZ   rX   rÍ   )r4  r  r  s      r6   r  Ú5meta_embedding_bag.<locals>.is_fast_path_index_selectÁ  sb   € à�Y‰Yœ%Ÿ+™+Ñ%×@¨¯©´e·j±jÑ)@÷  Ø—
‘
˜1“ Ñ"÷ à—‘˜aÓ  AÑ%÷ ð ˜a‘ð		
r8   c                 ó.   >• Ub	  T" XX#5      $ T" XU5      $ rB   r2   )r4  r¢  r  r  r  r  s       €€r6   Úis_fast_pathÚ(meta_embedding_bag.<locals>.is_fast_pathÉ  s#   ø€ ØÑÙ2°3¸vÓSÐSá,¨S¸+ÓFÐFr8   Úcpuc                  ó   • gr  r2   r2   r8   r6   re   r  ã  s   € ÐOr8   )rV   rh   r^   r˜   rì   rO   rí  r¨   r›   ÚMODE_SUMrª   rš   r   ÚMODE_MAXÚ	MODE_MEANrœ   )rC  r¹   rx  Úscale_grad_by_freqrl  Úsparser	  Úinclude_last_offsetr  Únum_bagsr  r  Ú
offset2bagÚbag_sizeÚmax_indicesÚfast_path_sumÚnumBagsr  r  s   ```   `          @@r6   Úmeta_embedding_bagr&  ˆ  sw  ý€ ô 
‡L‚LØ�‰œ%Ÿ*™*¤e§i¡iÐ0Ñ0ÜJôô 
‡L‚LØ�‰œ%Ÿ*™*¤e§i¡iÐ0Ñ0ÜJôô 
‡L‚LÜ×Ò˜VŸ\™\Ó*ÜPôð
 �|‰|˜A‹€HÞÜ�ŠØ˜‰MÙGô	
ð 	�A‰ˆà×Ñ˜h¨¯©°A«Ó7€FàÑ%Ü�ŠØ”HÑÙVô	
ô 	�ŠØ×#Ñ# qÑ(Übô	
ô 	�ŠØ×$Ñ$Ó&¨'¯-©-«/Ñ9õô	
õ
ò

öGô �7Ó˜uÓ$Ø×&Ñ& w§|¡|°A£Ó7ˆ
Ø×$Ñ$ W§\¡\£^Ó4ˆØ”8ÓØ!×+Ñ+¨H°f·k±kÀ!³nÓE‰Kà!×+Ñ+¨AÓ.‰Ká$ VÐ-?ÀÓUˆØ”IœxÐ(Ó(¶Ø ×*Ñ*¨7¯<©<¸«?Ó;‰Jà ×*Ñ*¨1Ó-ˆJØ×$Ñ$ XÓ.ˆà—-‘- Ñ"ˆØ”8ÓÞ"Ü—’Ø˜q‘LÙOôð ˜1‘�Ø!×+Ñ+¨G°V·\±\À!±_ÓE‰Kà!×+Ñ+¨H¯M©M«OÓ<ˆKØ˜xÐ4Ð4r8   c                 ó†   • [        XU/UQ76 u  pEpg[        U5      S:X  a  UR                  UR                  5       5      nXEXg4$ )Nr  )r&  r   r›   r¨   )rC  r¹   rx  rQ   r  r!  r"  r#  s           r6   Úmeta_embedding_bag_forward_onlyr(  ì  sN   € ä0BØ˜ð1Ø#'ò1Ñ-€F˜ô �7Ó˜uÓ$Ø×$Ñ$ W§\¡\£^Ó4ˆØ˜xÐ4Ð4r8   c                 óÞ   • U(       a  U$ U R                   R                  (       d  U R                   R                  (       a  U R                   $ U(       a  [        R                  $ U R                   $ rB   )r^   rÿ   rñ   rV   r˜   )rà   r^   Úpromote_int_to_longs      r6   Ú_get_reduction_dtyper+  ö  sD   € æØˆà‡{�{×$×$¨¯©×(>×(>Ø�{‰{ÐÞ	Ü�z‰zÐà�;‰;Ðr8   r“   c                óŽ   • [        XSS9n[        R                  " U R                  U5      n[	        XU5      nU R                  XTS9$ )NT)r*  r“   )r+  rO   r�  rœ   rŽ  r›   )rà   r¹  r�  r^   r  rh  s         r6   Úmeta_nansumr-    sC   € ô (¨È$ÑO€LÜ×Ò §¡¨TÓ2€DÜ+¨E¸ÓA€LØ�?‰?˜<ˆ?Ð<Ð<r8   c           	      ó¦   • [         R                  " U R                  [        [	        U R                  5       5      5      5      nU R                  U5      $ rB   )rO   r»  rœ   rg   rË   r‰   r›   )rà   rh  s     r6   Úmeta_medianr/    s<   € ä×7Ò7Ø�‰”Uœ5 §¡£Ó-Ó.ó€Lð �?‰?˜<Ó(Ð(r8   c                 ó  • [        U 5      S:X  a  [        R                  " S5        [        R                  " U R                  U45      n[        XU5      nU R                  U5      U R                  U[        R                  S94$ )Nrú   zmedian CUDA with indices outputr“   )	r   rO   Úalert_not_deterministicr�  rœ   rŽ  r›   rV   r˜   )rà   r‰   r�  rh  s       r6   Úmeta_median_mode_dimr2    sn   € ô �5Ó˜VÓ#Ü×%Ò%Ð&GÔHÜ
×
Ò
˜uŸ{™{¨S¨FÓ
3€CÜ+¨E¸Ó@€Là�‰˜Ó%Ø�‰˜¬E¯J©JˆÐ7ðð r8   c                 ó   • U $ rB   r2   r¶   s    r6   Úmeta_logical_not_r4  *  r”  r8   c                 óÂ  ^^• [         R                  " [        U5      U R                  5       :¬  S 5        [	        U5       H%  u  mm[         R                  " TS:¬  UU4S j5        M'     [        U5      U R                  5       -
  nSU-  [        U R                  5      -   n[        [        U5      5       Vs/ s H  oCU   X   -  PM     nnU R                  U5      $ s  snf )Nc                  ó   • g)NzZNumber of dimensions of repeat dims can not be smaller than number of dimensions of tensorr2   r2   r8   r6   re   Úmeta_repeat.<locals>.<lambda>3  s   € Ðlr8   r   c                  ó   >• ST ST  3$ )Nz"Repeats cannot be negative, found r  r2   )rä   Úreps   €€r6   re   r7  8  s   ø€ Ð8¸¸¸ZÈÀsÑKr8   r'  )	rV   rh   rÉ   r‰   r  rg   rœ   rË   r›   )r�   rì  Únum_new_dimensionsÚpadded_sizerä   Útarget_sizer9  s       ` @r6   Úmeta_repeatr=  /  s¼   ù€ ä	‡L‚LÜˆG‹˜Ÿ™›
Ñ"Ùlôô ˜GÖ$‰ˆˆ3Ü�ŠØ�1‰HÝKö	
ñ %ô ˜W›¨¯©«
Ñ2ÐØÐ+Ñ+¬e°D·J±JÓ.?Ñ?€KÜ8=¼cÀ'»lÔ8KÓLÒ8K°1˜q‘> G¡JÔ.Ñ8K€KÐLØ�>‰>˜+Ó&Ð&ùò Ms   Â6Cc                 ó   • U $ rB   r2   r¶   s    r6   Ú
meta_zero_r?  C  r”  r8   c                 ó„   • [        U[        R                  5      (       a   [        U R                  UR                  5        U $ rB   )rr   rV   r   rj   rœ   ©r�   r©   s     r6   Úmeta_binop_inplacerB  H  s,   € ô �%œŸ™×&Ñ&Ü §
¡
¨E¯K©KÔ8Ø€Kr8   c                 ó*  • S nS nS nU" U 5      (       a  U" U5      (       a  [        S5      eU" U 5      (       a  U" U5      (       d  [        S5      e[        U[        R                  5      (       a   [	        U R
                  UR
                  5        U $ )a  
Some checks for inplace ops.
Checks for promotion rules for some dtypes.
int.add/sub_(float) and bool.add/sub_(others) are rejected.
Promoting in these in-place operations would require reallocating
and copying over elements, hence not allowed.
Checks for alpha param.
c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rB   )rr   r   rO   rI  r^   r   ©ru   s    r6   Úis_integericÚ.meta_binop_inplace_alpha.<locals>.is_integerick  s1   € Ü�cœ:×&Ñ&Ü×)Ò)¨#¯)©)Ó4Ð4ä˜c¤7Ó+Ð+r8   c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rB   )rr   r   rO   rí  r^   r   rE  s    r6   Ú
is_floaticÚ,meta_binop_inplace_alpha.<locals>.is_floaticq  s1   € Ü�cœ:×&Ñ&Ü×'Ò'¨¯	©	Ó2Ð2ä˜c¤9Ó-Ð-r8   c                 óŒ   • [        U [        5      (       a   [        R                  " U R                  5      $ [        U [
        5      $ rB   )rr   r   rO   Úis_boolean_dtyper^   r   rE  s    r6   Úis_booleanicÚ.meta_binop_inplace_alpha.<locals>.is_booleanicw  s1   € Ü�cœ:×&Ñ&Ü×)Ò)¨#¯)©)Ó4Ð4ä˜c¤8Ó,Ð,r8   z]Promotion of int.add/sub_(float) in in-place ops are not possible due to element size change.z_Promotion of book.add/sub_(others) in in-place ops are not possible due to element size change.)r0  rr   rV   r   rj   rœ   )r�   r©   rV  rF  rI  rM  s         r6   Úmeta_binop_inplace_alpharO  Y  s‰   € ò$,ò.ò-ñ �D×Ñ™j¨×/Ñ/ÜØkó
ð 	
ñ
 �D×Ñ¡,¨u×"5Ñ"5ÜØmó
ð 	
ô �%œŸ™×&Ñ&Ü §
¡
¨E¯K©KÔ8Ø€Kr8   c                 ó2   • [        X[        R                  S9$ rï  ©rT   r   rP   ©r�   r©   rV  s      r6   Úmeta_binop_alpharS  Ž  s   € ô ØÔ$C×$KÑ$Kñð r8   c                 ó2   • [        U [        R                  S9$ rï  rQ  )r�   r6  s     r6   Ú
meta_roundrU  š  s   € äØÔ<×DÑDñð r8   c                 ó†  ^ ^^• [         R                  " [        R                  " TR                  5      U U4S j5        [        T[         R                  5      (       a;  [         R                  " [        R                  " TR                  5      U U4S j5        g [         R                  " [        T[        5      U U4S j5        g )Nc                  ó&   >• T  STR                    3$ )Nz7: Expected input tensor to have an integral dtype. Got r“   )rå  r�   s   €€r6   re   Ú#shift_dtype_check.<locals>.<lambda>¤  s   ø€ �7�)ÐRÐSW×S]ÑS]ÐR^Ñ_r8   c                  ó&   >• T  STR                    3$ )Nz6: Expected shift value to have an integral dtype. Got r“   ©rå  r¢  s   €€r6   re   rX  ©  s   ø€ �w�iÐUÐVY×V_ÑV_ÐU`Ñar8   c                  ó   >• T  ST 3$ )Nz): Expected shift value to be an int. Got r2   rZ  s   €€r6   re   rX  ®  s   ø€ �w�iÐHÈÈÑNr8   )rV   rh   rO   rI  r^   rr   r   r   )rå  r�   r¢  s   ```r6   Úshift_dtype_checkr\  ¡  ss   ú€ Ü	‡L‚LÜ×Ò˜tŸz™zÓ*Ý_ôô �#”u—|‘|×$Ñ$Ü�ŠÜ×"Ò" 3§9¡9Ó-Ýaõ	
ô
 	�ŠÜ�sœGÓ$ÝNõ	
r8   c                 óJ   • [        SX5        [        X[        R                  S9$ )NÚrshiftrð  ©r\  rT   r   rP   rA  s     r6   Úmeta_rshiftsr`  ²  ó%   € ä�h Ô,ÜØÔ$C×$KÑ$Kñð r8   c                 óJ   • [        SX5        [        X[        R                  S9$ )NÚlshiftrð  r_  rA  s     r6   Úmeta_lshiftsrd  º  ra  r8   c                 ó8   • U R                  U R                  5      $ rB   rü  r¶   s    r6   Ú	meta_zerorf  Â  s   € à�>‰>˜$Ÿ*™*Ó%Ð%r8   c                 ó   • U $ rB   r2   ©r�   r¢  s     r6   Ú
meta_fill_ri  Ç  r”  r8   c                 ó.   • [         R                  " U 5      $ rB   r:  rh  s     r6   Ú	meta_fillrk  Ì  ó   € ä×Ò˜DÓ!Ð!r8   c                 ó   • U $ rB   r2   r¶   s    r6   Ú
meta_relu_rn  Ñ  r”  r8   c                 ó2   • [        X[        R                  S9$ rï  rQ  rR  s      r6   Úmeta__add_relurp  Ö  s   € ô ØÔ$C×$KÑ$Kñð r8   c                 ó.   • [         R                  " U 5      $ rB   r:  ©r�   ÚnoiseÚlowerrñ  rß  r  s         r6   Úmeta_rrelu_with_noiseru  Þ  s   € ô
 ×Ò˜DÓ!Ð!r8   c                 óZ   • [         R                  " U 5      [         R                  " U5      4$ rB   r:  rr  s         r6   Ú meta_rrelu_with_noise_functionalrw  æ  s%   € ô ×Ò˜DÓ!¤5×#3Ò#3°EÓ#:Ð:Ð:r8   c                 ó   • U $ rB   r2   )r�   rt  rñ  rß  r  s        r6   Úmeta_rrelu_with_noise_ry  í  s	   € ð €Kr8   c                 ó.   • [         R                  " U 5      $ rB   r:  ©r�   r¹   r¸   Ú
accumulates       r6   Úmeta_index_putr}  ô  rl  r8   c                 óF   • [        U R                  UR                  5        U $ rB   ©rj   rœ   )r�   rª  Úvalues      r6   Úmeta_masked_fill_r�  ù  s   € ä˜DŸJ™J¨¯
©
Ô3Ø€Kr8   c                 ó†   • U R                  U R                  5       5      R                  [        R                  " U 5      S9nU$ rÀ   )r›   r¨   r1  rO   r   )r�   rª  r¢  Úmasked_scales       r6   Úmeta__masked_scaler„  ÿ  s<   € à—>‘> $§)¡)£+Ó.×1Ñ1Ü×1Ò1°$Ó7ð 2ð €Lð Ðr8   c                 óö   ^ ^• [         R                  " UR                  [         R                  [         R                  4;   S 5        [         R                  " T R                  TR                  :H  U U4S j5        T $ )Nc                  ó   • g)NzMask must be bool or uint8r2   r2   r8   r6   re   Ú&meta_masked_scatter_.<locals>.<lambda>
  s   € Ð9Ur8   c                  ó<   >• ST R                    STR                    3$ )NzEmasked_scatter: expected self and source to have same dtypes but got r¦   r“   )r�   rk  s   €€r6   re   r‡    s    ø€ ð ØŸ*™*˜ U¨6¯<©<¨.ñ:r8   )rV   rh   r^   r  r  )r�   rª  rk  s   ` `r6   Úmeta_masked_scatter_r‰    sU   ù€ ä	‡L‚LØ�
‰
”u—z‘z¤5§;¡;Ð/Ñ/Ñ1Uôô 
‡L‚LØ�
‰
�f—l‘lÑ"õ	:ôð
 €Kr8   c                 óz   • [        X5      u  p[        R                  " U [        R                  S9n[	        X1U5      $ rÀ   )r$   rV   r´   rµ   r‰  )r�   rª  rk  r  s       r6   Úmeta_masked_scatterr‹    s5   € ô " $Ó-�J€DÜ×Ò˜d´%×2IÑ2IÑJ€FÜ ¨fÓ5Ð5r8   c                 ó$   • U R                  U5      $ rB   r‡  )r�   rª  rS  s      r6   Úmeta_masked_scatter_backwardr�    s   € à�>‰>˜%Ó Ð r8   c                 ó   • U $ rB   r2   r{  s       r6   Úmeta_index_put_r�  !  r”  r8   c           	      óî  ^^^^^• SSK JnJn  [        R                  " U R                  5       S:H  S 5        [        R                  " UR                  5       S:H  S 5        U R                  5       nUR                  5       mUS   mUS   mUS   nTS   n	TX‰4m[        R                  " U" U" TS   T5      U" TS   T5      5      UUU4S j5        U(       a©  U R                  [        R                  :H  =(       d    U R                  [        R                  :H  =(       a    U[        R                  :H  n
[        R                  " X@R                  :H  =(       d    U
S	 5        UR                  T5      R                  U5      nOUR                  T5      nU(       d]  TbZ  [        R                  " TR                  5       S:H  S
 5        [        R                  " U" TR                  5       T5      UU4S j5        U$ )Nr   )Úsym_andru  r.   c                  ó   • grw  r2   r2   r8   r6   re   Ú)common_meta_baddbmm_bmm.<locals>.<lambda>)  ry  r8   c                  ó   • gr{  r2   r2   r8   r6   re   r“  *  ry  r8   rö   r1   c            	      ó.   >• ST ST ST S    ST S    S3	$ r€  r2   r‚  s   €€€r6   re   r“  7  s3   ø€ ÐRÐSUÐRVØ
ÐÐ˜l¨<¸©?Ð*;¸2¸lÈ1¹oÐ=NÈbñRr8   c                  ó   • g)Nzfout_dtype only supported for torch.float32 output with float16/bfloat16 inputs or same as input dtypesr2   r2   r8   r6   re   r“  @  s   € Ð|r8   c                  ó   • g)Nzself must be a 3D tensorr2   r2   r8   r6   re   r“  H  s   € Ð6Pr8   c                  ó0   >• ST  STR                  5        3$ )Nz*Expected an input tensor shape with shape z but got shape: r§   )r°  Úself_baddbmms   €€r6   re   r“  K  s   ø€ Ð@ÀÀÐM]Ð^j×^oÑ^oÓ^qÐ]rÑsr8   )r.  r‘  ru  rV   rh   r‰   r¨   r^   rb  rc  ra  r›   r1  )r}  r~  Úis_bmmr™  rG  r‘  ru  rŒ  Úres_rowsÚres_colsÚsupported_out_dtyper  rƒ  r„  r…  r°  s      `        @@@@r6   Úcommon_meta_baddbmm_bmmrž  &  s�  ü€ ßEä	‡L‚L�—‘“ Ñ"Ñ$HÔIÜ	‡L‚L�—‘“ Ñ"Ñ$HÔIà—;‘;“=€LØ—;‘;“=€Là	�a‰€BØ# A‘ÐØ˜A‰€HØ˜A‰€HØ�xÐ*€Kä	‡L‚LÙ‘�| A‘¨Ó+©V°LÀ±OÐEUÓ-VÓWö	Rôö
 à�L‰LœEŸM™MÑ)×K¨V¯\©\¼U¿^¹^Ñ-K÷)àœ5Ÿ=™=Ñ(ð 	ô 	�ŠØŸ™Ñ%×<Ð)<Ù|ô	
ð ×!Ñ! +Ó.×1Ñ1°)Ó<‰ð ×!Ñ! +Ó.ˆæ�lÑ.Ü�Š�\×%Ñ%Ó'¨1Ñ,Ñ.PÔQÜ�ŠÙ�<×$Ñ$Ó&¨Ó4Ýsô	
ð
 €Mr8   c                 ó   • [        XS5      $ )NT©rž  )r�   rR  s     r6   Úmeta_bmmr¡  Q  s   € ä" 4¨tÓ4Ð4r8   c                 ó   • [        XSUS9$ )NT)rG  r   )r�   rR  rG  s      r6   Úmeta_bmm_dtyper£  V  s   € ä" 4¨t¸yÑIÐIr8   c                 óh   • X-  nX-  nUS:w  a#  [        US:  5      [        US:  5      :w  a  US-  nU$ r  )r  )r;   r<   Úqrp  s       r6   Údiv_rtnr¦  [  s>   € Ø	‰€AØ	‰€Að 	ˆAƒv”4˜˜A™“;¤$ q¨1¡u£+Ó-Ø	ˆQ‰ˆØ€Hr8   c                 ó˜   • [        U U-   U-   XQS-
  -  -
  S-
  U(       a  US-
  OS-   U5      S-   nU(       a  US-
  U-  X-   :¼  a  US-  nU$ rí  )r¦  )Ú	inputSizeÚ
kernelSizerò  ró  rÍ   rÂ  r-  Ú
outputSizes           r6   Úpooling_output_shape_pad_lrr«  e  sˆ   € ô 	ØØñàñð  q™.Ñ)ñ*ð ñ	ö
 'ˆv˜Šz¨Añ/ð ó	
ð ñ		ð ö Ø˜‰N˜fÑ$¨	Ñ(9Ó9Ø˜!‰OˆJØÐr8   c           	      óô   ^^^• [         R                  " US:g  S 5        [         R                  " TS:¬  U4S j5        [         R                  " TTS-
  T-  S-   S-  :*  UUU4S j5        [        U TTTUTU5      $ )Nr   c                  ó   • g)Nzstride should not be zeror2   r2   r8   r6   re   Ú&pooling_output_shape.<locals>.<lambda>�  s   € Ð&Ar8   c                  ó   >• ST  3$ )Nz'pad must be non-negative, but got pad: r2   ©Úpads   €r6   re   r®  ‚  s   ø€ Ð%LÈSÈEÑ#Rr8   r1   rö   c                  ó   >• ST ST ST  3$ )NzApad should be at most half of effective kernel size, but got pad=z, kernel_size=z and dilation=r2   )rÂ  r©  r±  s   €€€r6   re   r®  …  s"   ø€ ØOÐPSÈuð UØ%˜, n°X°Jñ@r8   )rV   rh   r«  )r¨  r©  r±  rÍ   rÂ  r-  s    `` ` r6   rg  rg  €  ss   ú€ Ü	‡L‚L�˜1‘ÑAÔBÜ	‡L‚L�˜‘ÔRÔSÜ	‡L‚LØ�˜a‘ 8Ñ+¨aÑ/°AÑ5Ñ5ö	
ôô 'Ø�:˜s C¨°¸9óð r8   c           	      óü  ^ ^^^^^^^^^	^
^^^^• T R                  5       nT	m[        R                  " TS:„  =(       a    TS:„  UU4S j5        [        R                  " TS:„  =(       a    TS:„  UU4S j5        [        R                  " TS:„  =(       a    TS:„  UU4S j5        T R                  S5      S:g  =(       a    T R                  S5      S:g  nU[        R                  :X  aC  [        R                  " US:H  =(       a    U=(       a    T R                  S5      S:g  U 4S	 j5        Or[        R                  " US:H  =(       a    T R                  S5      S:g  =(       a    U=(       d)    US:H  =(       a    U=(       a    T R                  S5      S:g  U 4S
 j5        [        R                  " TS-  T:¬  =(       a    TS-  T:¬  UUUU4S j5        [        R                  " TS:¬  =(       a    TS:¬  U
UU	UUU4S j5        g )Nr   c                  ó   >• ST  ST 3$ )Nz5kernel size should be greater than zero, but got kH: ú, kW: r2   )rk  rl  s   €€r6   re   Ú$pool2d_shape_check.<locals>.<lambda>¥  s   ø€ ÐGÈÀtÈ6ÐRTÐQUÑVr8   c                  ó   >• ST  ST 3$ )Nz0stride should be greater than zero, but got dH: ú, dW: r2   )rm  rn  s   €€r6   re   r¶  ©  s   ø€ ÐBÀ2À$ÀfÈRÈDÑQr8   c                  ó   >• ST  ST 3$ )Nz9dilation should be greater than zero, but got dilationH: ú, dilationW: r2   )Ú	dilationHÚ	dilationWs   €€r6   re   r¶  ­  s   ø€ ÐKÈIÈ;ÐVcÐdmÐcnÑor8   r1   rö   r#  r.   c                  ó*   >• ST R                  5        3$ )Nz€Expected 4D (batch mode) tensor expected for input with channels_last layout with optional 0 dim batch size for input, but got: r§   r	  s   €r6   re   r¶  µ  s   ø€ ð CØCHÇ:Á:Ã<À.ñRr8   c                  ó*   >• ST R                  5        3$ )NzYExpected 3D or 4D (batch mode) tensor with optional 0 dim batch size for input, but got: r§   r	  s   €r6   re   r¶  ¼  s   ø€ ÐoÐpu×pzÑpzÓp|Ðo}Ñ~r8   c                  ó    >• ST ST ST ST  3$ )NzKpad should be smaller than or equal to half of kernel size, but got padW = z	, padH = z, kW = z, kH = r2   )rk  rl  ro  rp  s   €€€€r6   re   r¶  Á  s$   ø€ ð Ø��y   g¨b¨T°¸¸ñ>r8   c                  ó.   >• ST ST  ST ST ST ST S3$ ©NzGiven input size: (r;   z). Calculated output size: (z). Output size is too smallr2   )rq  rr  r.  rw  r/  r0  s   €€€€€€r6   re   r¶  Ç  s8   ø€ Ð% k ]°!°K°=ÀÀ*Àð N$Ø$0 >°°<°.ÀÀ+Àð O#ñ#r8   )r‰   rV   rh   r¨   rÙ  )rà   rk  rl  rm  rn  ro  rp  r»  r¼  r.  rq  rr  r/  r0  r±   rª   Ú
valid_dimsrw  s   ``````````````   @r6   rh  rh  �  sƒ  ÿþ€ ð" �9‰9‹;€DØ€Lä	‡L‚LØ
ˆQ‰×�2˜‘6ÝVôô 
‡L‚LØ
ˆQ‰×�2˜‘6ÝQôô 
‡L‚LØ�A‰×'˜) a™-Ýoôð
 —‘˜A“ !Ñ#×:¨¯
©
°1«¸Ñ(:€Jàœ×+Ñ+Ó+Ü�ŠØ�A‰I×;˜*×;¨¯©°A«¸!Ñ);ôRõ	
ô 	�ŠØ�Q‰Y×<˜5Ÿ:™: a›=¨AÑ-×<°*÷ AØ˜‘	×?˜j×?¨U¯Z©Z¸«]¸aÑ-?Ü~ô	
ô 
‡L‚LØ
ˆa‰�4‰×+˜B !™G t™O÷	>ôô 
‡L‚LØ�qÑ×.˜\¨QÑ.÷	#ñ 	#õr8   r˜  r•  rk  rl  r–  rm  rn  ÚpTÚpHÚpWÚ	dilationTr»  r¼  r™  rš  r›  rœ  r�  rž  r“  c           
      óø  ^ ^^^^^^^^^	^
^^^^^^^^^^^• T R                   n[        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " TS:„  =(       a    TS:„  =(       a    TS:„  UUU4S j5        [        R                  " US;   UU 4S j5        [        U5       H@  mUS:X  a  TS:X  a  M  [        R                  " T R	                  T5      S:„  UUU 4S j5        MB     U(       a;  [        R                  " TT:¬  =(       a    TT:¬  =(       a    TT:¬  UUUUUU4S	 j5        [        R                  " TS
-  T:¬  =(       a    TS
-  T
:¬  =(       a    TS
-  T	:¬  UUUU	UU
4S j5        [        R                  " TS:¬  =(       a    TS:¬  =(       a    TS:¬  UUUUUUU4S j5        g )Nr   c                  ó   >• ST ST  ST 3$ )Nz5kernel size should be greater than zero, but got kT: z, kH: rµ  r2   )rk  r•  rl  s   €€€r6   re   Ú$pool3d_shape_check.<locals>.<lambda>é  s   ø€ ðØ�$�f˜R˜D  r dñ,r8   c                  ó   >• ST ST  ST 3$ )Nz0stride should be greater than zero, but got dT: z, dH: r¸  r2   )rm  r–  rn  s   €€€r6   re   rÉ  ð  s   ø€ Ø>¸r¸dÀ&ÈÈÈFÐSUÐRVÑWr8   c                  ó   >• ST ST  ST 3$ )Nz9dilation should be greater than zero, but got dilationT: z, dilationH: rº  r2   )r»  rÆ  r¼  s   €€€r6   re   rÉ  ö  s   ø€ ðØ#˜ M°)°¸MÈ)ÈñVr8   rŽ  c                  ó&   >• T  STR                    3$ )Nz/: Expected 4D or 5D tensor for input, but got: rD  )rå  rà   s   €€r6   re   rÉ  þ  s   ø€ �7�)ÐJÈ5Ï;É;È-ÑXr8   rK  c                  óL   >• T  STR                    STR                  T5       S3$ )NzZ: Expected input's non-batch dimensions to have positive length, but input has a shape of z and non-batch dimension z has length zero!)rœ   r¨   )rå  rä   rà   s   €€€r6   re   rÉ    s.   ø€ Ø�)ð -Ø-2¯[©[¨MØ+¨E¯J©J°q«M¨?Ð:KñMr8   c                  ó.   >• ST ST  ST ST ST ST S3$ )Nzinput image (T: rT  r-  z ) smaller than kernel size (kT: ú kH: ú kW: r|   r2   )rš  r™  r›  rk  r•  rl  s   €€€€€€r6   re   rÉ    s4   ø€ Ø" 5 '¨¨g¨Y°d¸6¸(ð C$Ø$& 4 u¨R¨D°°b°T¸ñ<r8   rö   c                  ó,   >• ST ST ST  ST ST ST 3$ )NzHpad should be smaller than or equal to half of kernel size, but got kT: rÐ  rÏ  z padT: z padW: z padH: r2   )rk  r•  rl  rÄ  rÃ  rÅ  s   €€€€€€r6   re   rÉ    s1   ø€ ðØ�$�e˜B˜4˜u R D¨°¨t°7¸2¸$¸gÀbÀTñKr8   r1   c                  ó:   >• ST ST ST  ST ST ST ST ST S3$ rÁ  r2   )rš  r™  r›  r˜  r�  rœ  rž  s   €€€€€€€r6   re   rÉ  !  sD   ø€ Ø! ' ¨!¨E¨7°!°G°9¸A¸f¸Xð F(Ø(/ y°°%°¸¸'¸À!ÀFÀ8ð L'ñ(r8   )rª   rV   rh   rË   r¨   )rà   r˜  r•  rk  rl  r–  rm  rn  rÃ  rÄ  rÅ  rÆ  r»  r¼  r™  rš  r›  rœ  r�  rž  rå  r“  rª   rä   s   `````````````````````  @r6   r”  r”  Í  s�  ÿÿý€ ð0 �:‰:€Dä	‡L‚LØ
ˆQ‰×$�2˜‘6×$˜b 1™fö	
ôô 
‡L‚LØ
ˆQ‰×$�2˜‘6×$˜b 1™fö	
ôô 
‡L‚LØ�A‰×9˜) a™-×9¨I¸©Mö	
ôô 
‡L‚LØ�‰ÝXôô
 �4Ž[ˆØ�1‹9˜˜a›áÜ�ŠØ�J‰J�q‹M˜AÑöö	
ñ	 ö Ü�ŠØ�R‰K×:˜G r™M×:¨f¸©l÷ñ ô	
ô 
‡L‚LØ
ˆQ‰�"‰×6˜˜a™ 2™×6¨"¨q©&°B©,÷	
ñ 	
ôô 
‡L‚LØ�‰
×3�v ‘{×3 w°!¡|÷	
ò 	
õr8   c                 ój  • U R                   n[        U UUUUUUU	U
UUUUUUUUUUUU5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        g )Nr#  r.   rö   r1   ©rª   r”  rI  )rà   r  r¹   r˜  r•  rk  rl  r–  rm  rn  rÃ  rÄ  rÅ  rÆ  r»  r¼  r™  rš  r›  rœ  r�  rž  rå  rª   s                           r6   Úmax_pool3d_backward_shape_checkrÕ  )  sæ   € ð2 �:‰:€DäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØô+ô0 �;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô6Ü�;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô7ä�7˜D $¨¡(¨GÔ4Ü�7˜D $¨¡(¨EÔ2Ü�7˜D $¨¡(¨GÔ4Ü�7˜D $¨¡(¨FÕ3r8   c                 óä   • U R                   n[        U UUUUUUUU	U
USSSUUUUUUUS5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        [        UUUS-
  U5        g )Nr1   Tr#  r.   rö   rÔ  )rà   r  r˜  r•  rk  rl  r–  rm  rn  rÃ  rÄ  rÅ  r™  rš  r›  rœ  r�  rž  rå  rª   s                       r6   r§  r§  g  s¡   € ð* �:‰:€DäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø	Ø	Ø	ØØØØØØØØô-ô2 �;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Ô6Ü�;  d¨Q¡h°Ô8Ü�;  d¨Q¡h°Õ7r8   c                 óú  • S nU" SU5      u  px[         R                  " [        U5      S;   S 5        [        U5      S:X  a  Xxp©OU" SU5      u  pšU" SU5      u  p¼U" SU5      u  pÞU R                  S	5      nU R                  S
5      nU R                  S5      n[        R
                  " U 5      nU[         R                  :X  a*  [         R                  " U R                  5       S:H  S 5        OVU[         R                  :X  a*  [         R                  " U R                  5       S;   S 5        O[         R                  " SS 5        [        UX{X�U5      n[        UXŒX®U5      n[        U UUU	U
UUUUUUUUUU5        UUU4$ )Nc                 óŽ   ^ • [         R                  " [        U5      S;   U 4S j5        US   n[        U5      S:X  a  UOUS   nX#4$ )NrL  c                  ó   >• ST  S3$ )Nzmax_pool2d: rN  r2   rO  s   €r6   re   ÚEmax_pool2d_checks_and_compute_shape.<locals>.unpack.<locals>.<lambda>©  rQ  r8   r   r1   rR  rS  s   `   r6   rV  Ú3max_pool2d_checks_and_compute_shape.<locals>.unpack¦  rX  r8   rÒ  rY  c                  ó   • g)NzOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intsr2   r2   r8   r6   re   Ú5max_pool2d_checks_and_compute_shape.<locals>.<lambda>³  r]  r8   r   rÍ   râ  rÂ  rc  rÄ  rŸ   r#  c                  ó   • g)NzMnon-empty 4D (batch mode) tensor expected for input with channels_last layoutr2   r2   r8   r6   re   rÝ  Ä  s   € Ðcr8   rÊ  c                  ó   • g)Nz9non-empty 3D or 4D (batch mode) tensor expected for inputr2   r2   r8   r6   re   rÝ  É  ó   € ÐOr8   Fc                  ó   • g)NzAUnsupported memory format. Supports only ChannelsLast, Contiguousr2   r2   r8   r6   re   rÝ  Î  s   € ÐWr8   )rV   rh   rÉ   r¨   rO   r   rÙ  r‰   rµ   rg  rh  )rà   rÒ  rÍ   râ  rÂ  r-  rV  rk  rl  rm  rn  ro  rp  r»  r¼  r.  rq  rr  r±   r/  r0  s                        r6   r+  r+  �  sy  € òñ �M ;Ó/�F€Bä	‡L‚LÜˆF‹�yÑ Ùaôô ˆ6ƒ{�aÓØ‰Bá˜ &Ó)‰ˆá˜	 7Ó+�J€DÙ! *¨hÓ7Ñ€IØ—*‘*˜R“.€KØ—*‘*˜R“.€KØ—‘˜B“€Jä×/Ò/°Ó6€MØœ×+Ñ+Ó+Ü�ŠØ�I‰I‹K˜1ÑÙcõ	
ð 
œ%×1Ñ1Ó	1Ü�ŠØ�I‰I‹K˜6Ñ!ÙOõ	
ô
 	�ŠØÙWô	
ô
 (¨°R¸rÈiÓX€LÜ& z°2¸RÈIÓV€KäØØ
Ø
Ø
Ø
ØØØØØØØØØØôð$ ˜ kÐ1Ð1r8   c                 ó|  ^ ^^^^^• [        TX#XEU5      u  nmm[        R                  " TR                  T R                  :H  U U4S j5        UmTR                  mUUUU4S jn	U	" T 5        U	" U5        [
        R                  " T5      n
[        R                  " TR                  TR                  TR                  U
S9$ )Nc                  ó<   >• STR                    ST R                    3$ )NzExpected dtype z  for `gradOutput` but got dtype r“   rÄ  s   €€r6   re   Ú7meta_max_pool2d_with_indices_backward.<locals>.<lambda>þ  s   ø€ �/ $§*¡* Ð-MÈk×N_ÑN_ÐM`Ñar8   c                 ól   >• [        U TTS-
  T5        [        U TTS-
  T5        [        U TTS-
  T5        g )Nr.   rö   r1   )rI  )rÓ  rw  rª   r/  r0  s    €€€€r6   Ú_check_dim_sizeÚ>meta_max_pool2d_with_indices_backward.<locals>._check_dim_size  s9   ø€ Ü�q˜$  q¡¨,Ô7Ü�q˜$  q¡¨,Ô7Ü�q˜$  q¡¨+Õ6r8   r  )
r+  rV   rh   r^   rª   rO   r   rŽ   rœ   r†   )r  r�   rÒ  rÍ   râ  rÂ  r-  r¹   r.  ræ  r±   rw  rª   r/  r0  s   ``         @@@@r6   Ú%meta_max_pool2d_with_indices_backwardrè  é  s¬   ý€ ô 	,Øˆk 7°ió	ñ	ØØØô
 
‡L‚LØ�
‰
�k×'Ñ'Ñ'Ýaôð
 €LØ�9‰9€D÷7ð 7ñ
 �KÔ Ù�GÔä×/Ò/°Ó5€MÜ�;Š;Ø�
‰
Ø�j‰jØ�{‰{Ø#ñ	ð r8   c                 óŒ  • [        XX#XE5      u  nnnU R                  5       S:X  a  U R                  S5      OSn	[        R                  " U 5      n
U R                  5       S:X  a  XgU/nOX–Xx/n[
        R                  " UU R                  U R                  U
S9[
        R                  " U[
        R                  U R                  U
S94$ r)  )
r+  r‰   r¨   rO   r   rV   rŽ   r^   r†   r¼   r,  s               r6   Úmeta_max_pool2d_with_indicesrê    s½   € ô 	,Ø˜F¨Xó	ñ	ØØØð
  %Ÿy™y›{¨aÓ/ˆU�Z‰Z˜Œ^°Q€FÜ×/Ò/°Ó6€MØ‡y�yƒ{�aÓØ¨;Ð7‰à \Ð?ˆä�ŠØØ—+‘+Ø—<‘<Ø'ñ		
ô 	�ŠØÜ—+‘+Ø—<‘<Ø'ñ		
ðð r8   c                 ó�  ^ ^^^
^^• [         R                  " T R                  S;   U 4S j5        T R                  n[        US-
  U5       H1  m
[         R                  " T R	                  T
5      S:„  U
U 4S j5        M3     [         R                  " [        T5      S:H  S 5        [         R                  " [        U5      S:H  S 5        T R	                  S	5      nT R	                  S
5      mT R	                  S5      mUS:X  a  T R	                  S5      nOSn[         R                  " T R                  TR                  :H  S 5        [         R                  " TR                  S:H  U4S j5        TR	                  S5      nTR	                  S5      nTR	                  S5      m
[         R                  " Xv:¬  S 5        [         R                  " X…:H  S 5        [         R                  " T
S:H  U
4S j5        [         R                  " US   TS   -   S-
  T:*  UU4S j5        [         R                  " US   TS   -   S-
  T:*  UU4S j5        T R                  5       S:X  a  XeUS   US   /n	O
XRS   US   /n	[         R                  " U	T R                  T R                  S9[         R                  " U	[         R                  T R                  S94$ )NrÊ  c                  ó"   >• ST R                    3$ )Nz:fractional_max_pool2d: Expected 3D or 4D tensor, but got: r  r¶   s   €r6   re   Ú,meta_fractional_max_pool2d.<locals>.<lambda>@  s   ø€ ÐLÈTÏYÉYÈKÑXr8   r.   r   c                  ó2   >• STR                  5        ST  S3$ )Nz_fractional_max_pool2d: Expected input to have non-zero  size for non-batch dimensions, but got r¸  z emptyr§   )rÛ   r�   s   €€r6   re   rí  G  s%   ø€ ð 7Ø7;·y±y³{°mÐCSÐTUÐSVÐV\ñ^r8   rö   c                  ó   • g)NzNfractional_max_pool2d: kernel_size musteither be a single int or tuple of Intsr2   r2   r8   r6   re   rí  N  ó   € ð 2r8   c                  ó   • g)NzOfractional_max_pool2d: output_size must either be a single int or tuple of Intsr2   r2   r8   r6   re   rí  S  rð  r8   rc  rÄ  rŸ   r#  r1   c                  ó   • g)Nz6Expect _random_samples to have the same dtype as inputr2   r2   r8   r6   re   rí  a  s   € ÐHr8   c                  ó"   >• ST R                    3$ )Nz1Expect _random samples to have 3 dimensions got, r  )Úrandom_sampless   €r6   re   rí  e  s   ø€ ÐCÀN×DWÑDWÐCXÑYr8   c                  ó   • g)Nz=Expect _random_samples.size(0) no less then input batch size.r2   r2   r8   r6   re   rí  m  r¤   r8   c                  ó   • g)Nz<Expect _random_samples.size(1) equals to input channel size.r2   r2   r8   r6   re   rí  q  ó   € ÐNr8   c                  ó   >• ST  S3$ )Nz/Expect _random_samples.size(2) equals to 2 got Ú.r2   )rÛ   s   €r6   re   rí  s  s   ø€ Ð#RÐSTÐRUÐUVÑ!Wr8   c                  ó   >• STS    ST  3$ )Nz%fractional_max_pool2d: kernel height r   z' is too large relative to input height r2   )Úinput_heightrÒ  s   €€r6   re   rí  w  s   ø€ Ð7¸ÀA¹Ð7GÐGnÐo{Ðn|Ñ}r8   c                  ó   >• STS    ST  3$ )Nz$fractional_max_pool2d: kernel width r1   z& is too large relative to input width r2   )Úinput_widthrÒ  s   €€r6   re   rí  {  s   ø€ Ð6°{À1±~Ð6FÐFlÐmxÐlyÑzr8   rú  )rV   rh   rª   rË   r¨   rÉ   r^   r‰   rŽ   r†   r¼   )r�   rÒ  r°  rô  rª   Úinput_channelsÚinput_batchr  Úcr¨   rÛ   rû  rý  s   `` `      @@@r6   Úmeta_fractional_max_pool2dr  <  sf  ý€ ä	‡L‚LØ�	‰	�VÑÜXôð �9‰9€Dä�4˜!‘8˜TÖ"ˆÜ�ŠØ�I‰I�a‹L˜1Ñõ^ö	
ñ #ô 
‡L‚LÜˆKÓ˜AÑñ	2ôô
 
‡L‚LÜˆKÓ˜AÑñ	2ôð —Y‘Y˜r“]€NØ—9‘9˜R“=€LØ—)‘)˜B“-€KØˆqƒyØ—i‘i “l‰àˆä	‡L‚LØ�
‰
�n×*Ñ*Ñ*ÙHôô 
‡L‚LØ×Ñ˜qÑ ÜYôð
 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ	‡L‚LØ	ÑÙOôô 
‡L‚LØ	ÑÙNôô 
‡L‚L��a‘ÔWÔXä	‡L‚LØ�A‰˜ Q™Ñ'¨!Ñ+¨|Ñ;Ý}ôô 
‡L‚LØ�A‰˜ Q™Ñ'¨!Ñ+¨{Ñ:Ýzôð
 ‡x�xƒz�QƒØ¨[¸©^¸[È¹^ÐL‰à¨A¡°¸A±Ð?ˆô 	�ŠØØ—*‘*Ø—;‘;ñ	
ô
 	�ŠØÜ—+‘+Ø—;‘;ñ	
ðð r8   c                 óÜ  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   n	U(       d  UO[        U5      S:X  a  U	OUS   n
U(       d  UO[        U5      S:X  a  U	OUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " U R                  S	;   S
 5        U R                  S:X  a  U R	                  S5      OSnU R	                  S5      nU R	                  S5      nU R	                  S5      nU R	                  S5      n[        UXlXŸU5      n[        UX}U
UU5      n[        UXŽUUU5      n[        U UUUUU	U
UUUUUUUUUUUUUS5        U R                  S:H  =(       a'    [        R                  " U 5      [         R                  :H  nU R                  S:X  aQ  U R                  S5      nUR                  5       (       + =(       a    UR                  [         R                  S9nUUUU4nOUUUUU4nU R                  U5      nU R                  U[         R                  S9nU(       a:  UR                  [         R                  S9nUR                  [         R                  S9nUU4$ )Nrƒ  c                  ó   • g©NzMmax_pool3d: kernel_size must either be a single int, or a tuple of three intsr2   r2   r8   r6   re   Ú.meta_max_pool3d_with_indices.<locals>.<lambda>�  ó   € Ð_r8   r   r1   rö   c                  ó   • g©NzQmax_pool3d: stride must either be omitted, a single int, or a tuple of three intsr2   r2   r8   r6   re   r  ¥  ó   € Ðcr8   c                  ó   • g©NzImax_pool3d: padding must either be a single int, or a tuple of three intsr2   r2   r8   r6   re   r  ­  ó   € Ð[r8   c                  ó   • g©NzJmax_pool3d: dilation must be either a single int, or a tuple of three intsr2   r2   r8   r6   re   r  µ  r�  r8   rŽ  c                  ó   • gr�  r2   r2   r8   r6   re   r  ½  r‘  r8   rK  éûÿÿÿr*  rc  rÄ  rŸ   zmax_pool3d_with_indices()r#  r°   r“   )rV   rh   rÉ   rª   r¨   rg  r”  rO   r   rô  r£  re  r›   r¼   r1  )rà   rÒ  rÍ   râ  rÂ  r-  r•  rk  rl  r–  rm  rn  rÃ  rÄ  rÅ  rÆ  r»  r¼  rû  r˜  r™  rš  r›  rœ  r�  rž  rÙ  Úinput_channels_last_checkr­   rÔ   r¹   s                                  r6   Úmeta_max_pool3d_with_indicesr  ‘  sB  € ô 
‡L‚LÜˆKÓ˜FÑ"Ù_ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ùcôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙ[ôð 
�‰€BÜ�7‹|˜qÓ ‰ g¨a¡j€BÜ�7‹|˜qÓ ‰ g¨a¡j€Bä	‡L‚LÜˆH‹˜ÑÙ\ôð ˜‘€IÜ  ›]¨aÓ/‘	°X¸a±[€IÜ  ›]¨aÓ/‘	°X¸a±[€Iä	‡L‚LØ�
‰
�fÑÙKôð
  %Ÿz™z¨Q›ˆU�Z‰Z˜Œ^°A€FØ�j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fä  ¨°¸yÓI€EÜ" 7¨B°B¸	À9ÓM€GÜ! &¨"°"°iÀÓK€FäØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ô+ð2 	�
‰
�a‰×XœE×7Ò7¸Ó>Ä%×BXÑBXÑXð ð ‡z�z�QƒØ$)§O¡O°AÓ$6Ð!à)×7Ñ7Ó9Ô9÷
à'×5Ñ5Ü×0Ñ0ð 6ð 
ð 	ð
 ˜e W¨fÐ5‰	à˜W e¨W°fÐ=ˆ	à
�/‰/˜)Ó
$€CØ�o‰o˜i¬u¯{©{ˆoÐ;€GæØ�f‰f¤5×#9Ñ#9ˆfÐ:ˆØ—*‘*¬5×+AÑ+A�*ÐBˆà�ˆ<Ðr8   c                 ó&  • [         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n	[        U5      S:X  a  UOUS   n
[         R                  " U(       + =(       d    [        U5      S;   S 5        U(       d  UOUS   nU(       d  U	O[        U5      S:X  a  UOUS   nU(       d  U
O[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " [        U5      S;   S 5        US   n[        U5      S:X  a  UOUS   n[        U5      S:X  a  UOUS   n[         R                  " UR                  S	;   S
 5        UR	                  S5      nUR	                  S5      nUR	                  S5      nUR	                  S5      nU R	                  S5      nU R	                  S5      nU R	                  S5      n[        UU UUUU	U
UUUUUUUUUUUUUUUS5        UR                  S:H  =(       a'    [        R                  " U5      [         R                  :H  nUR                  S:X  aJ  UR                  S5      nUR                  5       (       + =(       a    UR                  [         R                  S9nUR                  UR                  5      nU(       a  UR                  [         R                  S9nU$ )Nrƒ  c                  ó   • gr  r2   r2   r8   r6   re   Ú7meta_max_pool3d_with_indices_backward.<locals>.<lambda>  r  r8   r   r1   rö   c                  ó   • gr  r2   r2   r8   r6   re   r    r	  r8   c                  ó   • gr  r2   r2   r8   r6   re   r    r  r8   c                  ó   • gr  r2   r2   r8   r6   re   r     r�  r8   rŽ  c                  ó   • gr�  r2   r2   r8   r6   re   r  (  r‘  r8   r*  rc  rÄ  rŸ   z"max_pool3d_with_indices_backward()rK  r#  r°   )rV   rh   rÉ   rª   r¨   rÕ  rO   r   rô  r£  re  r›   rœ   r1  )r  rà   rÒ  rÍ   râ  rÂ  r-  r¹   r•  rk  rl  r–  rm  rn  rÃ  rÄ  rÅ  rÆ  r»  r¼  r˜  r™  rš  r›  rœ  r�  rž  rÙ  r  r  s                                 r6   Ú%meta_max_pool3d_with_indices_backwardr  ú  sá  € ô 
‡L‚LÜˆKÓ˜FÑ"Ù_ôð 
�Q‰€BÜ�;Ó 1Ó$‰¨+°a©.€BÜ�;Ó 1Ó$‰¨+°a©.€Bä	‡L‚LØŒ
×+”c˜&“k VÑ+Ùcôö ‰˜v a™y€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€BÞ‰¤c¨&£k°QÓ&6¡¸FÀ1¹I€Bä	‡L‚LÜˆG‹˜ÑÙ[ôð 
�‰€BÜ�7‹|˜qÓ ‰ g¨a¡j€BÜ�7‹|˜qÓ ‰ g¨a¡j€Bä	‡L‚LÜˆH‹˜ÑÙ\ôð ˜‘€IÜ  ›]¨aÓ/‘	°X¸a±[€IÜ  ›]¨aÓ/‘	°X¸a±[€Iä	‡L‚LØ�
‰
�fÑÙKôð
 �j‰j˜‹n€GØ�J‰J�r‹N€EØ�j‰j˜‹n€GØ�Z‰Z˜‹^€Fà×Ñ˜RÓ €EØ×Ñ˜rÓ"€GØ×Ñ˜bÓ!€Fä#ØØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ,ô/ð6 	�
‰
�a‰×XœE×7Ò7¸Ó>Ä%×BXÑBXÑXð ð ‡z�z�QƒØ$)§O¡O°AÓ$6Ð!à)×7Ñ7Ó9Ô9÷
à'×5Ñ5Ü×0Ñ0ð 6ð 
ð 	ð —‘ §¡Ó-€JæØ—]‘]´×1GÑ1G�]ÐHˆ
àÐr8   Úgridc                 óœ  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        [         R                  " T R                  [         R                  :H  =(       a    TR                  [         R                  :H  UU 4S j5        [         R                  " T R
                  S   TR
                  S   :H  UU 4S j5        [         R                  " TR
                  S   T R                  S-
  :H  UU 4S j5        [        ST R                  5       H/  m[         R                  " T R
                  T   S:„  UU 4S j5        M1     g )	Nc                  ó<   >• STR                    ST R                    3$ )NzNgrid_sampler(): expected input and grid to be on same device, but input is on z and grid is on r­  ©r  rà   s   €€r6   re   Ú+check_grid_sampler_common.<locals>.<lambda>d  s"   ø€ ðØ—\‘\�NÐ"2°4·;±;°-ñAr8   c                  ó<   >• STR                    ST R                    3$ )NzTgrid_sampler(): expected input and grid to have torch.strided layout, but input has z and grid has )r…   r  s   €€r6   re   r  k  s!   ø€ ðØŸ™˜ n°T·[±[°MñCr8   r   c                  ó<   >• STR                    ST R                    3$ )NzZgrid_sampler(): expected grid and input to have same batch size, but got input with sizes ú and grid with sizes rD  r  s   €€r6   re   r  r  s"   ø€ ð Ø %§¡˜}Ð,AÀ$Ç*Á*ÀñOr8   rŸ   rö   c                  óB   >• STR                   S-
   ST R                   3$ )Nz+grid_sampler(): expected grid to have size rö   z, in last dimension, but got grid with sizes )rª   rœ   r  s   €€r6   re   r  y  s'   ø€ Ø9¸%¿*¹*Àq¹.Ð9Ið J2Ø26·*±*°ñ?r8   c                  ó*   >• STR                    ST  S3$ )NzYgrid_sampler(): expected input to have non-empty spatial dimensions, but input has sizes r¸  r¹  rD  rÏ  s   €€r6   re   r  ‚  rÐ  r8   )rV   rh   r†   r…   r¿  rœ   rª   rË   )rà   r  rä   s   ``@r6   Úcheck_grid_sampler_commonr%  a  sç   ú€ Ü	‡L‚LØ�‰˜Ÿ™Ñ#õ	
ôô 
‡L‚LØ�‰œŸ™Ñ%×F¨$¯+©+¼¿¹Ñ*Fõ	
ôô 
‡L‚LØ�‰�A‰˜$Ÿ*™* Q™-Ñ'õ	
ôô 
‡L‚LØ�
‰
�2‰˜%Ÿ*™* q™.Ñ(õ	
ôô �1�e—j‘jÖ!ˆÜ�ŠØ�K‰K˜‰N˜QÑõö	
ò "r8   c                   ó    • \ rS rSrSrSrSrSrg)ÚGridSamplerInterpolationi‰  r   r1   rö   r2   N)r~   Ú
__module__Ú__qualname__Ú__firstlineno__ÚBILINEARÚNEARESTÚBICUBICÚ__static_attributes__r2   r8   r6   r'  r'  ‰  s   † Ø€HØ€GØƒGr8   r'  Úinterpolation_modec                 ó6  ^ ^• [         R                  " T R                  S:H  =(       a    T R                  TR                  :H  UU 4S j5        [         R                  " T R                  S:H  =(       a    U[        R                  R
                  :H  (       + S 5        g )NrK  c                  ó<   >• STR                    ST R                    3$ )Nzdgrid_sampler(): expected 5D input and grid with same number of dimensions, but got input with sizes r"  rD  r  s   €€r6   re   Ú'check_grid_sampler_3d.<locals>.<lambda>’  s!   ø€ ð4Ø49·K±K°=Ø# D§J¡J <ñ1r8   c                  ó   • g)Nz<grid_sampler(): bicubic interpolation only supports 4D inputr2   r2   r8   r6   re   r2  �  r÷  r8   )rV   rh   rª   r'  r-  r€  )rà   r  r/  s   `` r6   Úcheck_grid_sampler_3dr4  �  sp   ù€ Ü	‡L‚LØ�
‰
�a‰×3˜EŸJ™J¨$¯)©)Ñ3õ	
ôô 
‡L‚Là�J‰J˜!‰O÷ MØ"Ô&>×&FÑ&F×&LÑ&LÑLô	
ñ 	Oõr8   c                 ó²   • US   nU(       a$  [         R                  " U[         R                  S9nOS n[         R                  " U[         R                  S9n	X‰4$ ©Nr   r°   )rV   rù  rµ   r´   ©
r  rà   r  r/  Úpadding_modeÚalign_cornersr'  Úinput_requires_gradr  Ú	grad_grids
             r6   Úgrid_sampler_2d_backward_metar<  ¡  sO   € ð & a™.ÐÞÜ×%Ò% e¼5×;RÑ;RÑS‰
àˆ
Ü× Ò  ´U×5LÑ5LÑM€IØÐ"Ð"r8   c                 óî   • [        X5        [        XU5        U R                  S   nU R                  S   nUR                  S   nUR                  S   nUR                  S   n	U R                  XVXxU	45      $ )Nr   r1   rö   r.   )r%  r4  rœ   r›   )
rà   r  r/  r8  r9  r´  ÚCÚout_DÚout_HÚout_Ws
             r6   Úgrid_sampler_3drB  ´  sn   € ô ˜eÔ*Ü˜%Ð'9Ô:Ø�‰�A‰€AØ�‰�A‰€AØ�J‰J�q‰M€EØ�J‰J�q‰M€EØ�J‰J�q‰M€EØ�?‰?˜A %°Ð6Ó7Ð7r8   r;  c                 óà   • [        X5        [        XU5        US   nU(       a$  [        R                  " U[        R                  S9nOS n[        R
                  " U[        R                  S9n	X‰4$ r6  )r%  r4  rV   rù  r  r´   r7  s
             r6   Úgrid_sampler_3d_backwardrD  Ç  sg   € ô ˜eÔ*Ü˜%Ð'9Ô:Ø% a™.ÐÞÜ×%Ò%Ø¤×!?Ñ!?ñ
‰
ð ˆ
Ü× Ò  ´U×5SÑ5SÑT€IØÐ Ð r8   c                 óš   • UR                  S5      nU(       d  [        R                  " U5      nXCS'   [        R                  " U /UQ70 UD6$ )Nr^   )r]   rO   Ú	get_dtyperV   rŽ   )r¨   rô  rQ   r6  r^   s        r6   ÚfullrG  ß  sA   € à�J‰J�wÓ€EÞÜ—’ 
Ó+ˆØˆ7�Oä�;Š;�tÐ-˜dÒ- fÑ-Ð-r8   c           	      óV  • U[         R                  :X  aá  [         R                  " US L S 5        [         R                  " SUc  U R                  OUUUc  U R
                  OUUS9nU R                  (       a>  UR                  U R                  5       U R                  5       U R                  5       5        O/UR                  U R                  5       U R                  5       S5        UR                  S5        U$ [        R                  R                  U UUUUUS9nUR!                  S5        U$ )Nc                  ó   • g)Nz9memory format option is only supported by strided tensorsr2   r2   r8   r6   re   Úzeros_like.<locals>.<lambda>ö  rà  r8   r   r  Tr«  )rV   Ú
sparse_coorh   rŽ   r^   r†   Ú	is_sparseÚsparse_resize_and_clear_r¨   Ú
sparse_dimÚ	dense_dimr‰   Ú_coalesced_r+   r´   r3  Úfill_)r�   r^   r…   r†   r‡   r±   r­  s          r6   rù  rù  ê  sü   € ð ”×!Ñ!Ó!Ü�ŠØ˜TÐ!ÙOô	
ô
 �kŠkØØ %¡�$—*’*°5ØØ"(¡.�4—;’;°fØ!ñ
ˆð �>�>Ø×(Ñ(Ø—	‘	“˜TŸ_™_Ó.°·±Ó0@õð ×(Ñ(¨¯©«°d·h±h³jÀ!ÔDà�‰˜ÔØˆ
Ü
�/‰/×
!Ñ
!ØØØØØØ#ð "ð €Cð ‡I�Iˆa„LØ€Jr8   r„   c                ó´   • Uc  [         R                  " 5       nUc  [         R                  " 5       nUc  [         R                  n[         R                  " XX#US9$ r  ©rV   r‹   Úget_default_devicer¿  rŽ   ©r¨   r^   r…   r†   r‡   rˆ   s         r6   Ú	meta_onesrV    óP   € ð �}Ü×'Ò'Ó)ˆØ�~Ü×)Ò)Ó+ˆØ�~Ü—‘ˆÜ�;Š;Ø &ÀJñð r8   c                ó´   • Uc  [         R                  " 5       nUc  [         R                  " 5       nUc  [         R                  n[         R                  " XX#US9$ r  rS  rU  s         r6   Ú
meta_zerosrY  -  rW  r8   c                 ó.   • [         R                  " U 5      $ rB   ©rO   Úclone_preserve_strides)r�   r4  r‰   r•   s       r6   Úmeta_select_scatterr]  C  ó   € ä×'Ò'¨Ó-Ð-r8   c                 ó.   • [         R                  " U 5      $ rB   r[  )r�   r4  r‰   r€   r   Ústeps         r6   Úmeta_slice_scatterra  H  r^  r8   Údim_post_exprÚwrap_scalarc                 ó‚   • US::  a  U(       d   eSnU* nUS-
  nX:  d  X:”  a   SU  SU SU S35       eU S:  a  X-  n U $ )Nr   r1   zdim z out of bounds (r{   r|   r2   )r‰   rb  rc  r  r³  s        r6   r½   r½   N  sg   € Ø˜ÓÞÐˆ{ØˆØˆ.€CØ
˜!Ñ
€CØ“	˜S›YÐR¨4°¨uÐ4DÀSÀEÈÈCÈ5ÐPQÐ)RÓRÐ'Ø
ˆQƒwØÑˆØ€Jr8   c                 óL   • U R                  5       S:X  a  S$ U R                  U   $ r  rF  )rÓ  r‰   s     r6   Úensure_nonempty_sizerf  Z  s!   € Ø—‘“˜1“ˆ1Ð. !§'¡'¨#¡,Ð.r8   c                 óF  ^ ^^^• [        T R                  5       S5      n[        TR                  5       S5      n[        R                  " X4:H  S 5        [	        U5       H@  mTT:w  d  M  [        R                  " [        TT5      [        T T5      :*  UUUU 4S j5        MB     g )Nr1   c                  ó   • g)NzDIndex tensor must have the same number of dimensions as input tensorr2   r2   r8   r6   re   Ú$gather_shape_check.<locals>.<lambda>d  s   € ÐVr8   c                  óN   >• ST STR                    3STR                    ST  3-   $ )Nz!Size does not match at dimension z expected index ú to be no larger than self ú apart from dimension rD  )r‰   rä   r•   r�   s   €€€€r6   re   ri  j  s5   ø€ Ð;¸A¸3Ð>NÈuÏ{É{ÈmÐ\Ø/°·
±
¨|Ð;QÐRUÐQVÐWòXr8   )r³  r‰   rV   rh   rË   rf  )r�   r‰   r•   Ú	self_dimsÚ
index_dimsrä   s   ```  @r6   Úgather_shape_checkro  _  s}   û€ Ü�D—H‘H“J Ó"€IÜ�U—Y‘Y“[ !Ó$€JÜ	‡L‚LØÑÙVôô �9ÖˆØ��8Ü�LŠLÜ$ U¨AÓ.Ô2FÀtÈQÓ2OÑO÷Xöò r8   c                 ó„  ^• SSK Jn  [        XR                  5       5      nU" TR	                  5       S:H  5      nU(       df  [
        R                  " TR                  [
        R                  :H  =(       d    TR                  [
        R                  :H  U4S j5        [        XT5        U R                  TR                  5      $ )Nr   r  c                  ó"   >• ST R                    3$ )Nz8gather(): Expected dtype int32/int64 for index, but got r“   r”   s   €r6   re   Úmeta_gather.<locals>.<lambda>x  s   ø€ ÐNÈuÏ{É{ÈmÑ\r8   )r.  r  r½   r‰   rš   rV   rh   r^   r˜   rì   ro  r›   rœ   )r�   r‰   r•   Úsparse_gradr  Úwrapped_dimÚis_index_emptys     `    r6   Úmeta_gatherrv  o  s~   ø€ åDä  §h¡h£jÓ1€KÙ# E§K¡K£M°QÑ$6Ó7€NÞÜ�ŠØ�K‰Kœ5Ÿ:™:Ñ%×A¨¯©¼¿	¹	Ñ)AÜ\ô	
ô 	˜4¨eÔ4Ø�>‰>˜%Ÿ+™+Ó&Ð&r8   c                 óÖ   • U(       a<  U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
[         R                  " SS 5        g U S:X  a  gU S:X  a  g[         R                  " SS 5        g )Nr  Ú
REDUCE_ADDrø  ÚREDUCE_MULTIPLYÚmeanÚREDUCE_MEANÚamaxÚREDUCE_MAXIMUMÚaminÚREDUCE_MINIMUMFc                  ó   • g)Nz=reduce argument must be either sum, prod, mean, amax or amin.r2   r2   r8   r6   re   Ú#get_operator_enum.<locals>.<lambda>�  s   € ÐSr8   ÚaddÚmultiplyc                  ó   • g)Nz/reduce argument must be either add or multiply.r2   r2   r8   r6   re   r�  •  s   € Ð$Ur8   rs  )Úreduce_Úuse_new_optionss     r6   Úget_operator_enumr‡    s{   € ÞØ�eÓØØ˜ÓØ$Ø˜ÓØ Ø˜ÓØ#Ø˜ÓØ#Ü�ŠØÙSô	
ð 	à�eÓØØ˜
Ó"Ø$Ü�Š�UÑUÔVØr8   c                 ón  ^ • SSK Jn  U" UR                  5       S:g  5      (       aZ  [        R                  " UR
                  [        R                  :H  =(       d    UR
                  [        R                  :H  U 4S j5        Ub3  [        R                  " UR
                  UR
                  :H  U 4S j5        g g )Nr   )rt  c                  ó   >• T  S3$ )Nz((): Expected dtype int32/int64 for indexr2   ©Úmethod_names   €r6   re   Ú,scatter_gather_dtype_check.<locals>.<lambda>   s   ø€ �{�mÐ#KÑLr8   c                  ó   >• T  S3$ )Nz0(): Expected self.dtype to be equal to src.dtyper2   rŠ  s   €r6   re   rŒ  ¦  s   ø€ �{�mÐ#SÑTr8   )r.  rt  rš   rV   rh   r^   r˜   rì   )r‹  r�   r•   Úsrc_optrt  s   `    r6   Úscatter_gather_dtype_checkr�  š  sy   ø€ ÝCá�U—[‘[“] aÑ'×(Ñ(Ü�ŠØ�K‰Kœ5Ÿ:™:Ñ%×A¨¯©¼¿	¹	Ñ)AÜLô	
ð
 ÑÜ�ŠØ�J‰J˜'Ÿ-™-Ñ'ÜTõ	
ð r8   c                 ó   • [        U S5      $ r0   )r³  r    s    r6   Úensure_nonempty_dimr‘  ª  s   € Üˆs�A‹;Ðr8   c                 ó.  ^ ^^^• SSK Jn  U" TR                  5       S:H  5      (       a  g [        R                  " [        T R                  5       5      [        TR                  5       5      :H  S 5        Sn[        T R                  5       5      n[        U5       H+  n[        TU5      nUT:X  a  M  U[        T U5      :”  d  M)  Sn  O   U(       d5  Tb2  [        U5       H#  n[        TU5      nU[        TU5      :”  d  M!  Sn  O   Tbm  [        R                  " [        T R                  5       5      [        TR                  5       5      :H  S 5        [        R                  " U(       + UUU U4S j5        g [        R                  " U(       + UUU 4S j5        g )	Nr   r  c                  ó   • g©NzCIndex tensor must have the same number of dimensions as self tensorr2   r2   r8   r6   re   Ú%scatter_shape_check.<locals>.<lambda>¶  rÒ  r8   FTc                  ó   • gr”  r2   r2   r8   r6   re   r•  Ð  s   € ÐYr8   c                  ób   >• STR                    STR                    3ST  STR                    3-   $ )NúExpected index rk  rl  z and to be no larger than src rD  )r‰   r•   r�   rŽ  s   €€€€r6   re   r•  Ô  s6   ø€ �o e§k¡k ]Ð2MÈdÏjÉjÈ\ÐZØ& s eÐ+IÈ'Ï-É-ÈÐYòZr8   c                  óH   >• STR                    STR                    3ST  3-   $ )Nr˜  rk  rl  rD  )r‰   r•   r�   s   €€€r6   re   r•  Ú  s*   ø€ �o e§k¡k ]Ð2MÈdÏjÉjÈ\ÐZØ& s eÐ,ò-r8   )	r.  r  rš   rV   rh   r‘  r‰   rË   rf  )	r�   r‰   r•   rŽ  r  Úis_wrong_shaperm  rÛ   Úindex_d_sizes	   ````     r6   Úscatter_shape_checkrœ  ¯  sI  û€ ÝDá�e—k‘k“m qÑ(×)Ñ)ØÜ	‡L‚LÜ˜DŸH™H›JÓ'Ô+>¸u¿y¹y»{Ó+KÑKÙUôð
 €NÜ# D§H¡H£JÓ/€Iô �9ÖˆÜ+¨E°1Ó5ˆØ�‹8ÙØÔ.¨t°QÓ7Õ7Ø!ˆNÙñ ö ˜gÑ1Ü�yÖ!ˆAÜ/°°qÓ9ˆLØÔ2°7¸AÓ>Õ>Ø!%�Ùñ	 "ð ÑÜ�ŠÜ §¡£
Ó+Ô/BÀ5Ç9Á9Ã;Ó/OÑOÙYô	
ô 	�ŠØÔ÷Zõ	
ô 	�ŠØÔö-õ	
r8   c                 ó†   • [        XR                  5       5      n[        SXU5        [        XX#5        Ub  [	        XE5        g g )NÚscatter)r½   r‰   r�  rœ  r‡  )r�   r‰   r•   r4  r…  r†  rt  s          r6   Úscatter_meta_implrŸ  à  s;   € Ü  §h¡h£jÓ1€KÜ˜y¨$°sÔ;Ü˜¨5Ô6ØÑä˜'Õ3ð r8   c                 óR   • [        XX#S5        U R                  U R                  5      $ ©Nr‚  ©rŸ  r›   rœ   ©r�   r‰   r•   r4  s       r6   Úmeta_scatter_addr¤  é  s!   € ä�d ¨UÔ3Ø�>‰>˜$Ÿ*™*Ó%Ð%r8   c                 ó    • [        XX#S5        U $ r¡  ©rŸ  r£  s       r6   Úmeta_scatter_add_r§  ï  s   € ä�d ¨UÔ3Ø€Kr8   c                 ó˜   • [        U[        R                  5      (       a  UOS n[        XX%U5        U R	                  U R
                  5      $ rB   )rr   rV   r   rŸ  r›   rœ   ©r�   r‰   r•   Úsrc_or_valuerl  r4  s         r6   Úmeta_scatterr«  õ  s:   € ô % \´5·<±<×@Ñ@‰,Àd€CÜ�d ¨VÔ4Ø�>‰>˜$Ÿ*™*Ó%Ð%r8   c                 óf   • [        U[        R                  5      (       a  UOS n[        XX%U5        U $ rB   )rr   rV   r   rŸ  r©  s         r6   Úmeta_scatter_r­    s,   € ô % \´5·<±<×@Ñ@‰,Àd€CÜ�d ¨VÔ4Ø€Kr8   ÚqueryrÇ   r€  Ú	dropout_pÚ	is_causalÚreturn_debug_maskr¢  c           	      ó4  • U R                  S5      nU R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      n[        R                  " U 5      n[        R                  " XxU	4[        R                  U R
                  S9nU(       a`  U
S:”  a  SOSn[        R                  " Xž-  5      nUS::  a  SnOUS::  a  Sn[        R                  " XxXŸ4U R                  U R
                  S9nO*[        R                  " SU R                  U R
                  S9n[        R                  R                  (       a#  [        R                  R                  5       (       d  [        U 5      S	:X  aI  [        R                  " S
[        R                  SS9n[        R                  " S
[        R                  SS9nOH[        R                  " S[        R                  SS9n[        R                  " S
[        R                  SS9nUUS S U	UUUU4	$ )Nr   r1   rö   r.   rú  é@   é€   é   rû   r2   rƒ   )r¨   rV   r´   rŽ   rZ   r†   r÷  Úceilr^   ÚversionÚhiprú   rÇ  r   r˜   rf  )r®  rÇ   r€  r¯  r°  r±  r¢  râ   Ú	num_headsÚmax_seqlen_batch_qÚhead_dimÚmax_seqlen_batch_kÚ	attentionÚ	logsumexpÚblocksize_cÚmax_seqlen_kÚ
debug_maskÚseedÚoffsets                      r6   Ú(meta__scaled_dot_product_flash_attentionrÄ    s¨  € ð —‘˜A“€JØ—
‘
˜1“€IØŸ™ A›ÐØ�z‰z˜!‹}€HØŸ™ !›Ðä× Ò  Ó'€IÜ—’Ø	Ð 2Ð3Ü�k‰kØ�|‰|ñ€Iö Ø%¨›]‘c°ˆÜ—y’yÐ!3Ñ!AÓBˆØ Ó$Ø‰LØ 3Ó&ØˆLÜ—[’[ØÐ$6ÐEØ—+‘+Ø—<‘<ñ
‰
ô —[’[ ¨%¯+©+¸e¿l¹lÑKˆ
ô ‡}�}××œUŸZ™Z×4Ñ4×6Ñ6¼+ÀeÓ:LÐPUÓ:Uä�{Š{˜2¤U§Z¡Z¸Ñ?ˆÜ—’˜R¤u§z¡z¸&ÑA‰ä�{Š{˜A¤e§l¡l¸6ÑBˆÜ—’˜R¤u§|¡|¸FÑCˆð 	ØØØØØØØØð
ð 
r8   Ú	res_shape.c                 óž  ^ • [        T R                  5      U:X  a  [        R                  " T 5      nU$ [	        / SQU 4S jSS9nU Vs/ s H  oAU   PM	     nn[        [        U5      5       Vs/ s H  ocR                  U5      PM     nn[        R                  " UT R                  T R                  S9R                  U5      nU$ s  snf s  snf )N)r   r1   rö   r.   c                 ó*   >• TR                  5       U    $ rB   r  )Úidxr®  s    €r6   re   Ú,alloc_with_matching_layout.<locals>.<lambda>Z  s   ø€ ¨%¯,©,«.¸Ò*=r8   TrÆ   rú  )rg   rœ   rV   r´   ÚsortedrË   rÉ   r•   rŽ   r^   r†   rÏ   )r®  rÅ  r­  Ú	dim_orderrÈ  Úpermuted_shaperä   Úfinal_permutes   `       r6   Úalloc_with_matching_layoutrÎ  R  s¸   ø€ ô ˆU�[‰[Ó˜YÓ&Ü×Ò˜uÓ%ˆð €Jô ÚÔ=Àtñ
ˆ	ñ 5>Ó>²I¨S Cœ.±IˆÐ>Ü5:¼3¸y»>Ô5JÓKÒ5J°Ÿ™¨Ö+Ñ5JˆÐKÜ�kŠkØ %§+¡+°e·l±lñ
ç
‰'�-Ó
 ð 	ð €Jùò ?ùÚKs   ÁCÁ.C
Ú	attn_biasÚcompute_log_sumexpc	           	      óÒ  • U R                  S5      n	U R                  S5      n
U R                  S5      nUR                  S5      nUR                  S5      nXšX½4n[        X5      n[        R                  " XšUS4[        R                  U R
                  S9n[        R                  " S[        R                  SS9n[        R                  " S[        R                  SS9nUUS S UUUUS 4	$ ©Nr   r1   rö   rŸ   rú  r2   rƒ   ©r¨   rÎ  rV   rŽ   rZ   r†   r˜   )r®  rÇ   r€  rÏ  rÐ  r¯  r°  r±  r¢  rß  rT  ÚS_QÚS_KVÚD_VrÅ  r­  Ú
logsum_exprÂ  rÃ  s                      r6   Ú(meta__scaled_dot_product_cudnn_attentionrØ  e  sÓ   € ð 	�
‰
�1‹€AØ�
‰
�1‹€AØ
�*‰*�Q‹-€CØ�8‰8�A‹;€DØ
�*‰*�R‹.€Cà�sÐ €IÜ
$ UÓ
6€Cä—’Ø	
ˆs�AˆÜ�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fð 	ØØØØØØØØð
ð 
r8   c           	      óÐ  • U R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      nUR                  S5      nX‰X¬4n[        X5      n[        R                  " X‰U
4[        R                  U R
                  S9n[        R                  " S[        R                  SS9n[        R                  " S[        R                  SS9nUUS S U
UUUS 4	$ rÒ  rÓ  )r®  rÇ   r€  rÏ  r¯  r°  r±  r¢  rß  ÚH_QrÔ  rÕ  rÖ  rÅ  r­  r×  rÂ  rÃ  s                     r6   Ú5meta__scaled_dot_product_fused_attention_overrideablerÛ  ‘  sÑ   € ð 	�
‰
�1‹€AØ
�*‰*�Q‹-€CØ
�*‰*�Q‹-€CØ�8‰8�A‹;€DØ
�*‰*�R‹.€Cà˜Ð"€IÜ
$ UÓ
6€Cä—’Ø	
�ˆÜ�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fð 	ØØØØØØØØð
ð 
r8   rº  r¾  Ú	cum_seq_qÚ	cum_seq_kÚmax_qÚmax_kÚphilox_seedÚphilox_offsetc                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rB   r:  )rº  r®  rÇ   r€  rÔ   r¾  rÜ  rÝ  rÞ  rß  r¯  r°  rà  rá  r¢  Úgrad_qÚgrad_kr?  s                     r6   Ú'meta__scaled_dot_product_flash_backwardrå  ¼  sA   € ô, ×Ò˜eÓ$€FÜ×Ò˜cÓ"€FÜ×Ò˜eÓ$€FØ�6˜6Ð!Ð!r8   Ú	attn_maskc                 ó  • U R                  S5      nU R                  S5      nU R                  S5      n	[        R                  " U 5      n
[        R                  " UU	U4[        R                  U R
                  S9R                  SS5      nU
U4$ )Nr   r1   rö   rú  )r¨   rV   r´   rŽ   rZ   r†   r  )r®  rÇ   r€  r¯  r°  ræ  r¢  râ   r¹  rº  r½  r¾  s               r6   Ú0meta__scaled_dot_product_flash_attention_for_cpurè  Ø  sŠ   € ð —‘˜A“€JØ—
‘
˜1“€IØŸ™ A›Ðä× Ò  Ó'€IÜ—’àØØð	
ô
 �k‰kØ�|‰|ñ÷ �i��1ƒoð ð 	Øðð r8   c
                 ó`  • [         R                  " UR                  5       SUR                  UR                  S9n
[         R                  " UR                  5       SUR                  UR                  S9n[         R                  " UR                  5       SUR                  UR                  S9nX«U4$ )N©r   rö   r1   r.   rú  )rV   Úempty_permutedr¨   r^   r†   )rº  r®  rÇ   r€  rÔ   r¾  r¯  r°  ræ  r¢  rã  rä  r?  s                r6   Ú9meta__scaled_dot_product_flash_attention_for_cpu_backwardrì  ú  s“   € ô& ×!Ò!Ø�
‰
‹ØØ�k‰kØ�|‰|ñ	€Fô ×!Ò!Ø�‰‹
ØØ�i‰iØ�z‰zñ	€Fô ×!Ò!Ø�
‰
‹ØØ�k‰kØ�|‰|ñ	€Fð ˜6Ð!Ð!r8   Údropout_maskc                 ó  ^ ^^^^^^^• S nU" T 5      u  mmU" U5      u  pšU" U5      u  pºTR                   u  mmmmU	R                   u  p¬mn
UUUUUU U4S jnUUUUU4S jnTS:¼  d  UT:  a  TS:¼  a  U" 5       $ U" 5       $ )Nc                 óp  • U R                  5       S:X  a  U R                  S5      S4$ U R                  5       S:”  ax  Sn[        U R                  5       S-
  5       H  nXR                  U   -  nM     U R	                  XR                  S5      U R                  S5      U R                  S5      5      S4$ U S	4$ )
Nr.   r   Tr#  r1   rc  rÄ  rŸ   F)r‰   r£  rË   rœ   Úviewr¨   )r;   râ   rä   s      r6   Ú	ensure_4dÚBmeta__scaled_dot_product_attention_math_for_mps.<locals>.ensure_4d.  s–   € Ø�5‰5‹7�a‹<Ø—;‘;˜q“> 4Ð'Ð'Ø�U‰U‹W�q‹[ØˆJÜ˜1Ÿ5™5›7 Q™;Ö'�ØŸg™g a™jÑ(’
ñ (à—6‘6˜*§f¡f¨R£j°!·&±&¸³*¸a¿f¹fÀR»jÓIÈ4ÐOÐOà�e�8ˆOr8   c                  ój  >• TR                  TR                  5      n T	(       a  U R                  T5      n TR                  TTTT45      nT	(       aa  TR                  5       S:X  a  UR	                  S5      nX4$ [        TR                  S S 5      UR                  SS -   nUR                  U5      nX4$ )Nr.   r   rc  r1   r#  )r›   rœ   Úview_asr‰   ÚsqueezerÊ   rð  )
rÔ   Úattnrœ   râ   Úmax_seq_lengthÚnum_headÚq_Úq_sizer®  Ú
unsqueezeds
      €€€€€€€r6   Úsdpa_vector_fast_mpsÚMmeta__scaled_dot_product_attention_math_for_mps.<locals>.sdpa_vector_fast_mps@  s¡   ø€ Ø�l‰l˜2Ÿ8™8Ó$ˆÞØ—+‘+˜eÓ$ˆCà�|‰|˜Z¨°6¸>ÐJÓKˆÞØ�y‰y‹{˜aÓØ—|‘| A“�ð ˆyÐô ˜UŸ[™[¨¨"Ð-Ó.°·±¸A¸a°Ñ@�Ø—y‘y Ó'�ØˆyÐr8   c                  óp   >• Sn TR                  TR                  5      nTR                  TTTU T45      nX4$ )Nrj  rü  )ÚblocksrÔ   r6  râ   Ú	head_sizerø  rù  rú  s      €€€€€r6   Úsdpa_vector_2pass_mpsÚNmeta__scaled_dot_product_attention_math_for_mps.<locals>.sdpa_vector_2pass_mpsN  s<   ø€ ØˆØ�l‰l˜2Ÿ8™8Ó$ˆØ—|‘| Z°¸6À6È9Ð$UÓVˆØÐ Ð r8   i   i   rD  )r®  rÇ   r€  ræ  r¯  r°  rí  r¢  rñ  Úk_rR   Úv_Úk_sizerü  r  râ   r   r÷  rø  rù  rú  rû  s   `              @@@@@@@r6   Ú/meta__scaled_dot_product_attention_math_for_mpsr  #  sŽ   ÿ€ ò	ñ ˜uÓ%�N€Bˆ
Ù�c‹N�E€BÙ�eÓ�E€Bà.0¯h©hÑ+€J�˜& )Ø#%§8¡8Ñ €Aˆ~˜q÷ó ÷!ñ !ð 	˜$Ó F¨V£O¸È$Ó8NÙ$Ó&Ð&á#Ó%Ð%r8   c           	      óR  • U R                  SS5      n UR                  SS5      nUR                  SS5      nU R                  S5      nU R                  S5      n	U R                  S5      n
UR                  S5      n[        R                  " X‰X«U R                  U R
                  S9n[        R                  R                  (       a0  [        R                  R                  5       (       a   U(       a  U	OSnO%U(       a  [        R                  " U	S-  5      S-  OSn[        R                  " XŠU4[        R                  U R
                  S9nUR                  SS5      n[        R                  " S[        R                  S	S9n[        R                  " S[        R                  S	S9nXÎUU4$ )
Nr1   rö   r   rÄ  rŸ   rú  rj  r2   rƒ   )r  r¨   rV   rŽ   r^   r†   r·  r¸  rú   rÇ  r÷  r¶  rZ   r˜   )r®  rÇ   r€  rÏ  rÐ  r¯  r°  r¢  rß  r¸  r¹  ÚKvr­  Úlogsumexp_dimr×  rÂ  rÃ  s                    r6   Ú,meta__scaled_dot_product_efficient_attentionr
  Z  s?  € ð �O‰O˜A˜qÓ!€EØ
�-‰-˜˜1Ó
€CØ�O‰O˜A˜qÓ!€Eà�
‰
�1‹€AØ�
‰
�1‹€AØ—
‘
˜2“€IØ	�‰�B‹€Bä
�+Š+�a˜I°·±ÀUÇ\Á\Ñ
R€Cä‡}�}××œUŸZ™Z×4Ñ4×6Ñ6ð	ö 0™°Q‰æ2DœŸ	š	 ! b¡&Ó)¨BÒ.È!ˆä—’Ø	
�}Ð%Ü�k‰kØ�|‰|ñ€Jð �-‰-˜˜1Ó
€Cô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fà˜D &Ð(Ð(r8   Úgrad_input_maskc                 óü  • UR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        R                  " XÞUU4SUR                  UR                  S9n[        R                  " XÞUU4SUR                  UR                  S9n[        R                  " XÞUU4SUR                  UR                  S9nS nUb‚  U
S   (       ax  UR                  S5      nUS-  S:X  a  UO
US-   US-  -
  n[        UR                  5       5      nUUS'   [        R                  " UUR                  UR                  S9nUS	S U24   nUUUU4$ )
Nr   r1   rö   r.   rê  rú  rŸ   ri  .)r¨   rV   rë  r^   r†   rÊ   rŽ   )rº  r®  rÇ   r€  rÏ  rÔ   r¾  rà  rá  r¯  r  r°  r¢  râ   r¹  rÞ  r»  Ú
head_dim_vrß  rã  rä  r?  Ú	grad_biasÚlastDimÚlastDimAlignedÚ	new_sizess                             r6   Ú+meta__scaled_dot_product_efficient_backwardr  ‡  su  € ð( —‘˜A“€JØ—
‘
˜1“€IØ�J‰J�q‹M€EØ�z‰z˜!‹}€HØ—‘˜A“€Jà�H‰H�Q‹K€Eä×!Ò!Ø	  xÐ0ØØ�k‰kØ�|‰|ñ	€Fô ×!Ò!Ø	  xÐ0ØØ�i‰iØ�z‰zñ	€Fô ×!Ò!Ø	  zÐ2ØØ�k‰kØ�|‰|ñ	€Fð €IØÑ °×!3Ø—.‘. Ó$ˆØ$+¨b¡L°AÓ$5™¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÜ˜Ÿ™Ó)Ó*ˆ	Ø&ˆ	�"‰Ü—K’KØ˜YŸ_™_°Y×5EÑ5Eñ
ˆ	ð ˜c 8 G 8˜mÑ,ˆ	à�6˜6 9Ð,Ð,r8   c                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rB   r:  )rº  r®  rÇ   r€  rÔ   r¾  rà  rá  rÏ  rÜ  rÝ  rÞ  rß  r¯  r°  r¢  rã  rä  r?  s                      r6   Ú'meta__scaled_dot_product_cudnn_backwardr  Ã  sA   € ô. ×Ò˜eÓ$€FÜ×Ò˜cÓ"€FÜ×Ò˜eÓ$€FØ�6˜6Ð!Ð!r8   Úwindow_size_leftÚwindow_size_rightÚ	seqused_kÚalibi_slopesc                 óê  • Uc  U R                  S5      OUR                  5       S-
  nUc  U R                  S5      OUnUc  UR                  S5      OUnU R                  S5      nU R                  S5      n[        R                  " U 5      nUc2  [        R                  " UUU4[        R
                  U R                  S9nOAU R                  S5      n[        R                  " UU4[        R
                  U R                  S9nU	(       ac  US:”  a  SOSn[        R                  " UU-  5      nUS::  a  SnOUS::  a  Sn[        R                  " UUUU4U R                  U R                  S9nO*[        R                  " SU R                  U R                  S9nS	u  nn[        R                  R                  (       al  [        R                  R                  5       (       aI  [        R                  " S
[        R                  SS9n[        R                  " S
[        R                  SS9nOH[        R                  " S[        R                  SS9n[        R                  " S
[        R                  SS9nUUUUU4$ )Nr   r1   rÄ  rŸ   rú  r³  r´  rµ  ©NNr2   rƒ   rö   )r¨   rš   rV   r´   rŽ   rZ   r†   r÷  r¶  r^   r·  r¸  rú   rÇ  r˜   rf  )r®  rÇ   r€  rÜ  rÝ  rÞ  rß  r¯  r°  r±  r¢  r  r  r  r  râ   rº  r¼  r¹  r»  r½  r¾  Útotal_qr¿  rÀ  rÁ  rÂ  rÃ  s                               r6   Úmeta__flash_attention_forwardr  à  sø  € ð4 #,Ñ"3�—‘˜A”¸¿¹Ó9JÈQÑ9N€JØ*3Ñ*;˜Ÿ™ AœÀÐØ(1Ñ(9˜Ÿ™ !œ¸uÐØ—
‘
˜2“€IØ�z‰z˜"‹~€Hô × Ò  Ó'€IØÑÜ—K’KØ˜Ð$6Ð7Ü—+‘+Ø—<‘<ñ
‰	ð —*‘*˜Q“-ˆÜ—K’KØ˜Ð ¬¯©¸E¿L¹Lñ
ˆ	ö Ø%¨›]‘c°ˆÜ—y’yÐ!3°kÑ!AÓBˆØ Ó$Ø‰LØ 3Ó&ØˆLÜ—[’[Ø˜Ð$6¸ÐEØ—+‘+Ø—<‘<ñ
‰
ô —[’[ ¨%¯+©+¸e¿l¹lÑKˆ
ð �L€Dˆ&Ü‡}�}××œUŸZ™Z×4Ñ4×6Ñ6ä�{Š{˜2¤U§Z¡Z¸Ñ?ˆÜ—’˜R¤u§z¡z¸&ÑA‰ä�{Š{˜A¤e§l¡l¸6ÑBˆÜ—’˜R¤u§|¡|¸FÑCˆàØØØØðð r8   c                 ó�   • [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUUU4$ rB   r:  )rº  r®  rÇ   r€  rÔ   r¾  rÜ  rÝ  rÞ  rß  r¯  r°  rà  rá  r¢  r  r  Ú
grad_queryÚgrad_keyÚ
grad_values                       r6   Úmeta__flash_attention_backwardr!  0  sA   € ô0 ×!Ò! %Ó(€JÜ×Ò Ó$€HÜ×!Ò! %Ó(€Jà�x Ð+Ð+r8   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qrÀ  Úcustom_mask_typeÚcausal_diagonalÚseqlen_kÚwindow_sizec           	      óª  • U R                  S5      nU R                  S5      nUR                  S5      nU R                  S5      nUR                  S5      n[        R                  " UUUUU R                  U R                  S9nUb  UR                  S5      S-
  OUnUnUb  Uc   eUnUb  UOUnU
(       a  [
        R                  " US-  5      S-  OSn[        R                  " UUU4[        R                  U R                  S9n[        R                  " S[        R                  SS9n[        R                  " S[        R                  SS9nUUUUUU4$ )	Nr   r1   rÄ  rŸ   rú  rj  r2   rƒ   )	r¨   rV   rŽ   r^   r†   r÷  r¶  rZ   r˜   )r®  rÇ   r€  rE  r"  r#  r$  rÀ  r¯  r%  rÐ  r¢  r&  r'  r(  rß  r¸  r´  r¹  r  r­  Úlogsumexp_batch_dimÚactual_max_seqlen_qÚactual_max_seqlen_kr	  r×  rÂ  rÃ  s                               r6   Ú!meta__efficient_attention_forwardr-  O  s9  € ð, 	�
‰
�1‹€AØ�
‰
�1‹€AØ�‰�‹€AØ—
‘
˜2“€IØ	�‰�B‹€Bä
�+Š+�a˜˜I r°·±ÀUÇ\Á\Ñ
R€Cà7CÑ7O˜,×+Ñ+¨AÓ.°Ò2ÐVWÐØÐØÑØÑ'Ð'Ð'Ø*ÐØ*6Ñ*B™,ÈÐæ4FŒ�	Š	Ð%¨Ñ*Ó+¨bÒ0ÈAð ô —’Ø	˜i¨Ð7Ü�k‰kØ�|‰|ñ€Jô �;Š;�r¤§¡°FÑ;€DÜ�[Š[˜¤5§:¡:°fÑ=€Fà�
˜D &Ð*=Ð?RÐRÐRr8   Úbias_requires_gradÚnum_splits_keyÚshared_storage_dqdkdvc                 óÌ  • U(       aû  [         R                  " UR                  S   UR                  S   :H  S 5        [         R                  " UR                  S   UR                  S   :H  S 5        [         R                  " / UR                  SS QSPUR                  S   PUR                  S   P7UR                  UR
                  S9nUR                  S	S5      nUR                  S	S5      nUR                  S	S
5      nOB[         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUby  UR                  S5      nUS-  S:X  a  UO
US-   US-  -
  n[        UR                  5       5      nUUS'   [         R                  " UUR                  UR
                  S9nUSS U24   nO[         R                  " SUR
                  S9nUUUU4$ )Nr1   c                  ó   • g)Nz,seqlen must match for `shared_storage_dqdkdvr2   r2   r8   r6   re   Ú4meta__efficient_attention_backward.<locals>.<lambda>Ÿ  s   € ÐBr8   r.   c                  ó   • g)Nz3embedding dim must match for `shared_storage_dqdkdvr2   r2   r8   r6   re   r3  £  ó   € ÐIr8   r   rÄ  rŸ   rú  rc  rö   ri  .r2   r­  )
rV   rh   rœ   rŽ   r^   r†   r  r´   r¨   rÊ   )rº  r®  rÇ   r€  rE  r"  r#  r$  rÀ  r¾  r¯  rà  rá  r%  r.  r¢  r/  r0  Úchunkr  r  r   r  r  r  r  s                             r6   Ú"meta__efficient_attention_backwardr7  ƒ  s¤  € ö2 Ü�ŠØ�K‰K˜‰N˜cŸi™i¨™lÑ*ÙBô	
ô 	�ŠØ�K‰K˜‰N˜cŸi™i¨™lÑ*ÙIô	
ô —’ØEˆe�k‰k˜!˜BÐÐE ÐE E§K¡K°¡OÐE°U·[±[À±_ÑEØ—+‘+Ø—<‘<ñ
ˆð
 —\‘\ " aÓ(ˆ
Ø—<‘<  AÓ&ˆØ—\‘\ " aÓ(‰
ä×%Ò% eÓ,ˆ
Ü×#Ò# CÓ(ˆÜ×%Ò% eÓ,ˆ
àÑØ—)‘)˜B“-ˆØ$+¨b¡L°AÓ$5™¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÜ˜Ÿ™›Ó%ˆ	Ø&ˆ	�"‰Ü—K’K 	°·±ÀDÇKÁKÑPˆ	Ø˜c 8 G 8˜mÑ,‰	ä—K’K ¨5¯<©<Ñ8ˆ	à�x ¨YÐ6Ð6r8   Úscale_aÚscale_bÚscale_resultÚuse_fast_accumc                 ó´  ^ ^^^^^^^^• S n[         R                  " T R                  5       S:H  =(       a    TR                  5       S:H  UU 4S j5        [         R                  " U" T R                  5      =(       a    U" TR                  5      UU 4S j5        [	        T 5      S:X  d  [	        T 5      S:X  GaR  S n	S n
S	 n[         R                  " U	" T R                  5       5      =(       d    U" T 5      U 4S
 j5        [         R                  " U
" TR                  5       5      =(       d    U" T5      U4S j5        [         R                  " T R                  S5      S-  S:H  U 4S j5        [         R                  " TR                  S5      S-  S:H  =(       a    TR                  S5      S-  S:H  U4S j5        T R                  u  mmTR                  S5      mTR                  [         R                  :H  =(       a    TR                  [         R                  :H  =(       dA    TR                  [         R                  :H  =(       a    TR                  [         R                  :H  nTR                  5       S:X  am  TR                  5       S:X  aY  [         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  S 5        GO%U(       aÿ  TR                  [         R                  :X  a  SnTS-  mOSnSn[        TU5      n[        US5      S-  nU[        TU5      -  U-  mU[        TU5      -  U-  mTR                  5       T:X  ab  TR                  5       T:X  aN  [         R                  " TR                  5       S 5        [         R                  " TR                  5       S 5        GO?[         R                  " SUUUU4S j5        GO[         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  S 5        [         R                  " TR                  5       S:H  =(       a    TR                  5       S:H  UU4S j5        TR                  S5      T:X  a}  TR                  S5      S:X  ah  TR                  S5      S:X  aS  TR                  S5      T:X  a>  [         R                  " TR                  5       =(       a    TR                  5       S 5        OïTR                  S5      T:X  aX  TR                  S5      TR                  S5      s=:X  a  [        TS5      :X  a#  O  O TR                  S5      [        TS5      :X  a  O‚TR                  S5      T:X  aN  TR                  S5      TR                  S5      s=:X  a  [        TS5      :X  a  O  OTR                  S5      T:X  a  O[         R                  " SUUUUU4S j5        Ub  UOT R                  n[         R                  " T R                  S5      TR                  S5      UT R                  S9$ )Nc                 ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ rB   ©rV   rd  Úfloat8_e5m2Úfloat8_e4m3fnuzÚfloat8_e5m2fnuzÚfloat4_e2m1fn_x2r“   s    r6   Úis_fp8_or_fp4_typeÚ2_check_scaled_mm_sizes.<locals>.is_fp8_or_fp4_typeÉ  óA   € ØÜ×ÑÜ×ÑÜ×!Ñ!Ü×!Ñ!Ü×"Ñ"ð
ñ 
ð 	
r8   rö   c                  óL   >• STR                  5        ST R                  5        3$ ©Nz%Inputs must be 2D but got self.dim()=z and mat2.dim()=r    ©rR  r�   s   €€r6   re   Ú(_check_scaled_mm_sizes.<locals>.<lambda>Ô  ó%   ø€ Ð7¸¿¹»
°|ÐCSÐTX×T\ÑT\ÓT^ÐS_Ñ`r8   c                  ó<   >• STR                    ST R                    3$ ©Nz?Expected both inputs to be fp8 or fp4 types but got self.dtype=z and mat2.dtype=r“   rH  s   €€r6   re   rI  Ø  ó$   ø€ ÐQÐRV×R\ÑR\ÐQ]Ð]mÐnr×nxÑnxÐmyÑzr8   rú   rû   c                 ó6   • U S   U S   :„  =(       a    U S   S:H  $ r  r2   r  s    r6   Úis_row_majorÚ,_check_scaled_mm_sizes.<locals>.is_row_majorÝ  ó"   € Ø˜!‘9˜v a™yÑ(×;¨V°A©Y¸!©^Ð;r8   c                 ó0   • U S   S:H  =(       a    U S   S:„  $ r  r2   r  s    r6   Úis_col_majorÚ,_check_scaled_mm_sizes.<locals>.is_col_majorà  ó   € Ø˜!‘9 ‘>×3 f¨Q¡i°!¡mÐ3r8   c                 ó`   • U R                  S5      S:H  =(       d    U R                  S5      S:H  $ r  r§   ©Ú	tensor_2ds    r6   Úhas_zero_dimÚ,_check_scaled_mm_sizes.<locals>.has_zero_dimã  ó)   € Ø—>‘> !Ó$¨Ñ)×C¨Y¯^©^¸AÓ->À!Ñ-CÐCr8   c                  ó*   >• ST R                  5        3$ ©Nz#self must be row_major, got stride r  r¶   s   €r6   re   rI  è  ó   ø€ Ð9¸$¿+¹+»-¸ÑIr8   c                  ó*   >• ST R                  5        3$ ©Nz#mat2 must be col_major, got stride r  ©rR  s   €r6   re   rI  ì  r^  r8   r1   ri  r   c                  ó,   >• ST R                  S5       3$ ©NzBExpected self.size(1) to be divisible by 16, but got self.size(1)=r1   r§   r¶   s   €r6   re   rI  ð  ó   ø€ ÐXÐY]×YbÑYbÐcdÓYeÐXfÑgr8   c                  ó"   >• ST R                    3$ ©Nz?Expected both dimensions of mat2 to be divisible by 16 but got rD  ra  s   €r6   re   rI  ô  ó   ø€ ÐUÐVZ×V`ÑV`ÐUaÑbr8   c                  ó   • g)NzNFor tensorwise scaling, both scale_a and scale_b must be float (fp32) tensors.r2   r2   r8   r6   re   rI    s   € Ðhr8   rj  r´  r#  c                  ó   • g)Nzscale_a must be contiguousr2   r2   r8   r6   re   rI  +  ó   € Ð8r8   c                  ó   • g)Nzscale_b must be contiguousr2   r2   r8   r6   re   rI  /  rj  r8   Fc            	      óZ   >• ST  STR                  5        ST STR                  5        S3	$ )NzTInvalid blockwise scaling configuration. For blockwise scaling, scale_a should have ú elements, got z, scale_b should have rù  r  )Úexpected_a_sizeÚexpected_b_sizer8  r9  s   €€€€r6   re   rI  4  sC   ø€ ðFØFUÐEVÐVeÐfm×fsÑfsÓfuÐevð w/Ø/>Ð.?¸ÈwÏ}É}ËÐN_Ð_`ñbr8   c                  ó   • g)NzKFor rowwise scaling, both scale_a and scale_b must be float (fp32) tensors.r2   r2   r8   r6   re   rI  =  s   € Ðer8   c                  óP   >• ST R                  5       < STR                  5       < 3$ )NzLFor non-tensorwise scaling, scale tensors must be 2D, but got scale_a.dim()=z and scale_b.dim()=r    ©r8  r9  s   €€r6   re   rI  B  s*   ø€ ÐgÐY`×YdÑYdÓYfÑXhÐh|Ðnu×nyÑnyÓn{Ñm}Ñ~r8   c                  ó   • g)Nz@Both scale_a and scale_b must be contiguous for rowwise scaling.r2   r2   r8   r6   re   rI  N  s   € Ð^r8   c                  óJ  >• ST ST ST S[        T S5       S3	S[        T S5       S[        TS5       ST S[        T S5       S3	-   S[        T S5       ST S	TR                  S
5       STR                  S5       STR                  S
5       STR                  S5       S3-   $ ©Nz}Invalid scaling configuration. For tensorwise scaling, both scales should be scalar. For rowwise scaling, scale_a should be (z, 1), scale_b should be (1, z>). For (BlockWise1x128, BlockWise128x128), scale_a should be (r{   r´  z), zscale_b should be (z<). For (BlockWise1x128, BlockWise1x128), scale_a should be (z). Got scale_a.size()=(r   r1   z) and scale_b.size()=(r|   ©r7   r¨   )Ú_krg  r  r8  r9  s   €€€€€r6   re   rI  b  sù   ø€ ðCàCDÀ#ÐEaÐbcÐadð eVØVWÐUXÐXZÔ[cÐdfÐhkÓ[lÐZmÐmpðrð 0´¸¸SÓ0AÐ/BÀ"ÄXÈaÐQTÓEUÐDVð WTØTUÐSVÐVXÔYaÐbdÐfiÓYjÐXkÐknðpñ	pð 0´¸¸SÓ0AÐ/BÀ"ÀQÀCð H/Ø/6¯|©|¸A«Ð.?¸rÀ'Ç,Á,ÈqÃ/ÐARð S/Ø/6¯|©|¸A«Ð.?¸rÀ'Ç,Á,ÈqÃ/ÐARÐRSðUòUr8   rú  )rV   rh   r‰   r^   r   rÍ   r¨   rœ   Úfloat8_e8m0fnurd  rš   ra  r7   re  rŽ   r†   )r�   rR  r8  r9  rE  r:  rG  r;  rC  rO  rS  rY  Úis_blockwise_scalingÚblock_size_kÚblock_size_mnÚnum_k_blocksÚpadded_num_k_blocksÚ
_out_dtyperw  rn  ro  rg  r  s   ````              @@@@@r6   Ú_check_scaled_mm_sizesr  ¿  sÁ  ÿø€ ò
ô 
‡L‚LØ�‰‹
�a‰×+˜DŸH™H›J¨!™OÝ`ôô 
‡L‚LÙ˜4Ÿ:™:Ó&×IÑ+=¸d¿j¹jÓ+IÝzôô
 �4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ò	<ò	4ò	Dô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"Ügô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"×= t§y¡y°£|°bÑ'8¸AÑ'=Übô	
ð —
‘
‰ˆˆ2Ø�I‰I�a‹Lˆð —‘¤×!5Ñ!5Ñ5÷ :Ø—M‘M¤U×%9Ñ%9Ñ9÷ð
 —‘¤×!4Ñ!4Ñ4÷ 9Ø—M‘M¤U×%8Ñ%8Ñ8ð 	ð �=‰=‹?˜aÓ G§M¡M£O°qÓ$8ä�LŠLØ—‘¤§¡Ñ.×Q°7·=±=ÄEÇMÁMÑ3QÙhöö "ð �}‰}¤× 3Ñ 3Ó3ð  "�Ø˜!‘V‘à!�àˆMä# B¨Ó5ˆLÜ"*¨<¸Ó";¸aÑ"?Ðð ¤¨¨MÓ :Ñ:Ð=PÑPð ð ¤¨¨MÓ :Ñ:Ð=PÑPð ð
 —‘“ ?Ó2Ø—M‘M“O Ó6ä—’Ø×)Ñ)Ó+Ù8ôô —’Ø×)Ñ)Ó+Ù8öô
 —’Ø÷öô �LŠLØ—‘¤§¡Ñ.×Q°7·=±=ÄEÇMÁMÑ3QÙeôô
 �LŠLØ—‘“ Ñ"×9 w§{¡{£}¸Ñ'9Ý~ôð —‘˜Q“ 1Ó$Ø—L‘L “O qÓ(Ø—L‘L “O qÓ(Ø—L‘L “O qÓ(ô —’Ø×)Ñ)Ó+×G°×0EÑ0EÓ0GÙ^õð
 —‘˜Q“ 1Ó$Ø—L‘L “O w§|¡|°A£ÕK¼(À2ÀsÓ:KÖKØ—L‘L “O¤x°°3Ó'7Ó7ð à—‘˜Q“ 1Ó$Ø—L‘L “O w§|¡|°A£ÕK¼(À2ÀsÓ:KÖKØ—L‘L “O qÓ(ð ô —’Ø÷
ð 
ôð (Ñ3‘¸¿¹€JÜ�;Š;�t—y‘y “| T§Y¡Y¨q£\¸ÈDÏKÉKÑXÐXr8   c           
      ó   • [        XX#XEXg5      $ rB   )r  )r�   rR  r8  r9  rE  r:  rG  r;  s           r6   Úmeta_scaled_mmr�  s  s   € ô "Ø�G d¸)óð r8   Úscale_recipe_aÚscale_recipe_bÚ	swizzle_aÚ	swizzle_bc           
      ó¼  ^ ^^^^^	^^^^ ^!^"^#^$^%• S nS n[         R                  " T R                  5       S:H  =(       a    TR                  5       S:H  UU 4S j5        [         R                  " U" T R                  5      =(       a    U" TR                  5      UU 4S j5        T R                  S   mT R                  S   mTR                  S   m U" T R                  5      (       a  U" TR                  5      (       a  SnTU-  mU Vs/ s H  n[        U5      PM     nnU Vs/ s H  n[        U5      PM     nnT(       a  T Vs/ s H  n[        U5      PM     snmO[        R                  /mT	(       a  T	 Vs/ s H  n[        U5      PM     snm	O[        R                  /m	[        T 5      S:X  d  [        T 5      S	:X  GaU  S
 nS nS n[         R                  " U" T R                  5       5      =(       d    U" T 5      U 4S j5        [         R                  " U" TR                  5       5      =(       d    U" T5      U4S j5        [         R                  " T R                  S5      S-  S:H  U 4S j5        [         R                  " TR                  S5      S-  S:H  =(       a    TR                  S5      S-  S:H  U4S j5        S[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnS[        [
           S[        [
           4S jnU" X55      (       a™  [         R                  " TS   R                  5       S:H  =(       ad    TS   R                  5       S:H  =(       aG    TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  S 5        G	OÓU" X55      (       a»  [         R                  " TS   R                  S   T:H  =(       a�    TS   R                  5       T:H  =(       ad    TS   R                  [         R                  :H  =(       a=    TS   R                  5       T :H  =(       a     TS   R                  [         R                  :H  UUUU 4S j5        G	OU" X55      (       Ga´  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  nTS   m$T$R                  S   T:H  =(       a    T$R                  S   TS-  :H  =(       ac    T$R                  S5      S:H  =(       aH    T$R                  S5      T:H  =(       d-    T$R                  S   S:H  =(       a    T$R                  S5      S:H  nTS   m%T%R                  S   T :H  =(       a    T%R                  S   TS-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T :H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUUU U$U%4S j5        GOIU" X55      (       GaÄ  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  n[        TS-  S5      mTS   m$T$R                  S   T:H  =(       a    T$R                  S   TS-  :H  =(       ac    T$R                  S5      S:H  =(       aH    T$R                  S5      T:H  =(       d-    T$R                  S   S:H  =(       a    T$R                  S5      S:H  nTS   m%T%R                  S   T :H  =(       a    T%R                  S   TS-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T :H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUUUU U$U%4S  j5        GOwU" X55      (       GaÄ  TS   R                  [         R                  :H  =(       a     TS   R                  [         R                  :H  n[        TS-  S5      mTS   m$T$R                  S   T:H  =(       a    T$R                  S   TS-  :H  =(       ac    T$R                  S5      S:H  =(       aH    T$R                  S5      T:H  =(       d-    T$R                  S   S:H  =(       a    T$R                  S5      S:H  nTS   m%T%R                  S   T:H  =(       a    T%R                  S   T S-  :H  =(       ac    T%R                  S5      S:H  =(       aH    T%R                  S5      T:H  =(       d-    T%R                  S   S:H  =(       a    T%R                  S5      S:H  n[         R                  " U=(       a    U=(       a    UUUUU U$U%4S! j5        GO¥U" X55      (       GaÌ  [         R                  R                   (       ac  [#        T R                  S   S"5      T R                  S   -  m![#        T R                  S   S"5      T R                  S   -  m"[        R                  m#OŠ[        T R                  S   S5      [        [#        T R                  S   S"5      S5      -  m![        TR                  S   S5      [        [#        T R                  S   S"5      S5      -  m"[        R$                  m#[         R                  " TS   R                  5       T!:H  =(       a‚    TS   R                  [         R&                  :H  =(       a[    TS   R                  5       T":H  =(       a>    TS   R                  [         R&                  :H  =(       a    TS   T#:H  =(       a    T	S   T#:H  U!U"U#UUUU	4S# j5        GOËU" X55      (       Gaž  [        TS5      [        [#        TS5      S5      -  m![        T S5      [        [#        TS5      S5      -  m"[        R$                  m#[         R                  " TS   R                  5       T!:H  =(       Ga
    TS   R                  [         R(                  :H  =(       aã    TS   R                  5       S:H  =(       aÆ    TS   R                  [         R                  :H  =(       aŸ    TS   R                  5       T":H  =(       a‚    TS   R                  [         R(                  :H  =(       a[    TS   R                  5       S:H  =(       a>    TS   R                  [         R                  :H  =(       a    TS   T#:H  =(       a    T	S   T#:H  U!U"U#UUUU	4S$ j5        O[         R                  " S%UUU UU4S& j5        Ub  UOT R                  n[         R*                  " TT UT R,                  S'9$ s  snf s  snf s  snf s  snf )(Nc                 ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ rB   r>  r“   s    r6   rC  Ú5_check_scaled_mm_sizes_v2.<locals>.is_fp8_or_fp4_type�  rE  r8   c                 ó*   • U [         R                  4;   $ rB   )rV   rB  r“   s    r6   Úis_fp4_typeÚ._check_scaled_mm_sizes_v2.<locals>.is_fp4_type™  s   € Øœ×/Ñ/Ð1Ñ1Ð1r8   rö   c                  óL   >• STR                  5        ST R                  5        3$ rG  r    rH  s   €€r6   re   Ú+_check_scaled_mm_sizes_v2.<locals>.<lambda>ž  rJ  r8   c                  ó<   >• STR                    ST R                    3$ rL  r“   rH  s   €€r6   re   r�  ¢  rM  r8   r   r1   rú   rû   c                 ó6   • U S   U S   :„  =(       a    U S   S:H  $ r  r2   r  s    r6   rO  Ú/_check_scaled_mm_sizes_v2.<locals>.is_row_majorÃ  rQ  r8   c                 ó0   • U S   S:H  =(       a    U S   S:„  $ r  r2   r  s    r6   rS  Ú/_check_scaled_mm_sizes_v2.<locals>.is_col_majorÆ  rU  r8   c                 ó`   • U R                  S5      S:H  =(       d    U R                  S5      S:H  $ r  r§   rW  s    r6   rY  Ú/_check_scaled_mm_sizes_v2.<locals>.has_zero_dimÉ  r[  r8   c                  ó*   >• ST R                  5        3$ r]  r  r¶   s   €r6   re   r�  Î  r^  r8   c                  ó*   >• ST R                  5        3$ r`  r  ra  s   €r6   re   r�  Ò  r^  r8   ri  c                  ó,   >• ST R                  S5       3$ rc  r§   r¶   s   €r6   re   r�  Ö  rd  r8   c                  ó"   >• ST R                    3$ rf  rD  ra  s   €r6   re   r�  Ú  rg  r8   Úrecipe_aÚrecipe_bc                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   Ú
TensorWise©r™  rš  s     r6   Úis_tensorwiseÚ0_check_scaled_mm_sizes_v2.<locals>.is_tensorwiseÝ  sT   € ä�H“ Ñ"÷ :Ü˜“M QÑ&÷:à˜Q‘K¤;×#9Ñ#9Ñ9÷:ð ˜Q‘K¤;×#9Ñ#9Ñ9ð	r8   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   ÚRowWiser�  s     r6   Ú
is_rowwiseÚ-_check_scaled_mm_sizes_v2.<locals>.is_rowwiseå  sT   € ä�H“ Ñ"÷ 7Ü˜“M QÑ&÷7à˜Q‘K¤;×#6Ñ#6Ñ6÷7ð ˜Q‘K¤;×#6Ñ#6Ñ6ð	r8   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   ÚBlockWise1x32r�  s     r6   Úis_mxÚ(_check_scaled_mm_sizes_v2.<locals>.is_mxí  sT   € ä�H“ Ñ"÷ =Ü˜“M QÑ&÷=à˜Q‘K¤;×#<Ñ#<Ñ<÷=ð ˜Q‘K¤;×#<Ñ#<Ñ<ð	r8   c                 ó0  • [        U 5      S:H  =(       a‚    [        U5      S:H  =(       am    U S   [        R                  :H  =(       aP    U S   [        R                  :H  =(       a3    US   [        R                  :H  =(       a    US   [        R                  :H  $ )Nrö   r   r1   )rÉ   r&   ÚBlockWise1x16rœ  r�  s     r6   Úis_nvÚ(_check_scaled_mm_sizes_v2.<locals>.is_nvõ  s†   € ä�H“ Ñ"÷ :Ü˜“M QÑ&÷:à˜Q‘K¤;×#<Ñ#<Ñ<÷:ð ˜Q‘K¤;×#9Ñ#9Ñ9÷:ð ˜Q‘K¤;×#<Ñ#<Ñ<÷	:ð
 ˜Q‘K¤;×#9Ñ#9Ñ9ðr8   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   ÚBlockWise1x128r�  s     r6   Úis_1x128_1x128Ú1_check_scaled_mm_sizes_v2.<locals>.is_1x128_1x128ÿ  sT   € ä�H“ Ñ"÷ >Ü˜“M QÑ&÷>à˜Q‘K¤;×#=Ñ#=Ñ=÷>ð ˜Q‘K¤;×#=Ñ#=Ñ=ð	r8   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   r­  ÚBlockWise128x128r�  s     r6   Úis_1x128_128x128Ú3_check_scaled_mm_sizes_v2.<locals>.is_1x128_128x128  sW   € ä�H“ Ñ"÷ @Ü˜“M QÑ&÷@à˜Q‘K¤;×#=Ñ#=Ñ=÷@ð ˜Q‘K¤;×#?Ñ#?Ñ?ð	r8   c                 ó¼   • [        U 5      S:H  =(       aH    [        U5      S:H  =(       a3    U S   [        R                  :H  =(       a    US   [        R                  :H  $ rí  )rÉ   r&   r±  r­  r�  s     r6   Úis_128x128_1x128Ú3_check_scaled_mm_sizes_v2.<locals>.is_128x128_1x128  sT   € ä�H“ Ñ"÷ >Ü˜“M QÑ&÷>à˜Q‘K¤;×#?Ñ#?Ñ?÷>ð ˜Q‘K¤;×#=Ñ#=Ñ=ð	r8   c                  ó   • g)Nz\For Tensorwise scaling, both scale_a and scale_b must be single element float (fp32) tensorsr2   r2   r8   r6   re   r�     s   € Ðvr8   c            	      óš   >• STR                   S    STS   R                  5        ST R                   S    STS   R                  5        S3	$ )Nz'For Rowwise scaling, scale_a must have r   z elements (got: z), and scale_b must have r1   r|   )rœ   rš   )rR  r8  r9  r�   s   €€€€r6   re   r�  )  s\   ø€ Ø=¸d¿j¹jÈ¹m¸_ÐL\Ð]dÐefÑ]g×]mÑ]mÓ]oÐ\pð q/Ø/3¯z©z¸!©}¨oÐ=MÈgÐVWÉj×N^ÑN^ÓN`ÐMaÐabñdr8   r´  c                  ó¢   >• ST ST S-   STR                    ST STR                   ST ST S-   STR                    ST STR                   S3$ )Nz>For 1x128 x 1x128 blockwise scaling, scale a must have shape [r{   r´  ú] (got: ú) and stride [1, ú)scale b must have shape [r|   ©rœ   rÍ   )r»  r¸  r´  ÚsaÚsbs   €€€€€r6   re   r�  F  sy   ø€ ð0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwð x0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwÐwxñzr8   r#  c                  ó¢   >• ST STS-   STR                    ST STR                   ST ST S-   STR                    ST STR                   S3$ )Nz]For 128x128 x 1x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r{   r´  rº  r»  r¼  r|   r½  ©r»  ÚL4r¸  r´  r¾  r¿  s   €€€€€€r6   re   r�  e  sy   ø€ ð0Ø02¨t°2°a¸3±h°Z¸xÈÏÉÀzÐQbÐceÐbfÐfnÐoq×oxÑoxÐnyð z0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwÐwxñzr8   c                  ó¢   >• ST ST S-   STR                    ST STR                   ST STS-   STR                    ST STR                   S3$ )Nz]For 1x128 x 128x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r{   r´  rº  r»  r¼  r|   r½  rÁ  s   €€€€€€r6   re   r�  „  sy   ø€ ð0Ø01¨s°"°Q¸#±X°J¸hÀrÇxÁxÀjÐPaÐbcÐadÐdlÐmo×mvÑmvÐlwð x0Ø02¨t°2°a¸3±h°Z¸xÈÏÉÀzÐQbÐceÐbfÐfnÐoq×oxÑoxÐnyÐyzñ|r8   rj  c                  óæ   >• ST  STS   R                  5        ST STS   R                  5        S[        R                   STS   R                   STS   R                   ST S	TS    STS    S
3$ )Nz!for MX scaling scale_a must have ú (got: r   ú) and scale_b must have z). Scales must have types z (for self: ú	, mat_b: z) Must have swizzle type ú (got self: r|   )rš   rV   rx  r^   ©Úexpected_scale_a_elemsÚexpected_scale_b_elemsÚexpected_swizzler8  r9  r„  r…  s   €€€€€€€r6   re   r�  Ÿ  s«   ø€ Ø7Ð8NÐ7OÈwÐW^Ð_`ÑWa×WgÑWgÓWiÐVjð k-Ø-CÐ,DÀGÈGÐTUÉJ×L\ÑL\ÓL^ÐK_ð `"Ü"'×"6Ñ"6Ð!7°|ÀGÈAÁJ×DTÑDTÐCUÐU^Ð_fÐghÑ_i×_oÑ_oÐ^pð q.Ø.>Ð-?¸|ÈIÐVWÉLÈ>ÐYbÐclÐmnÑcoÐbpÐpqñsr8   c                  ó„   >• ST  STS   R                  5        ST STS   R                  5        ST STS    STS    S3$ )	Nz!for NV scaling scale_a must have rÅ  r   rÆ  z). Must have swizzle type rÈ  rÇ  r|   r  rÉ  s   €€€€€€€r6   re   r�  µ  sq   ø€ Ø7Ð8NÐ7OÈwÐW^Ð_`ÑWa×WgÑWgÓWiÐVjð k-Ø-CÐ,DÀGÈGÐTUÉJ×L\ÑL\ÓL^ÐK_ð `$Ø$4Ð#5°\À)ÈAÁ,ÀÈyÐYbÐcdÑYeÐXfÐfgñir8   Fc                  ób  >• ST ST ST S[        T S5       S3	S[        T S5       S[        TS5       ST S[        T S5       S3	-   S[        T S5       ST S	TS
   R                  S
5       STS
   R                  S5       STS
   R                  S
5       STS
   R                  S5       S3-   $ ru  rv  )r»  r¸  r´  r8  r9  s   €€€€€r6   re   r�  ¾  s  ø€ ð?à?@¸cÐA]Ð^_Ð]`ð aRØRSÐQTÐTVÔW_Ð`aÐcfÓWgÐVhÐhkðmð ,¬H°Q¸Ó,<Ð+=¸RÄÈÈCÓ@PÐ?Qð RPØPQÈsÐRTÔU]Ð^_ÐadÓUeÐTfÐfiðkñ	kð ,¬H°Q¸Ó,<Ð+=¸RÀ¸sð C+Ø+2°1©:¯?©?¸1Ó+=Ð*>¸bÀÈÁÇÁÐQRÓASÐ@Tð U+Ø+2°1©:¯?©?¸1Ó+=Ð*>¸bÀÈÁÇÁÐQRÓASÐ@TÐTUðWòWr8   rú  )rV   rh   r‰   r^   rœ   r&   r'   Ú
NO_SWIZZLEr   rÍ   r¨   rÊ   rš   ra  r=   r·  r¸  r7   ÚSWIZZLE_32_4_4rx  rd  rŽ   r†   )&r�   rR  r8  r‚  r9  rƒ  rE  rG  r„  r…  r;  rC  rŠ  ÚK_packed_multiplierÚsirO  rS  rY  rž  r¢  r¦  rª  r®  r²  rµ  Útypes_okÚ
scale_a_okÚ
scale_b_okr~  r»  rÂ  r¸  r´  rÊ  rË  rÌ  r¾  r¿  s&   ``` `   ``                   @@@@@@@@@r6   Ú_check_scaled_mm_sizes_v2rÖ  ƒ  s(  ÿþ€ ò
ò2ô 
‡L‚LØ�‰‹
�a‰×+˜DŸH™H›J¨!™OÝ`ôô 
‡L‚LÙ˜4Ÿ:™:Ó&×IÑ+=¸d¿j¹jÓ+IÝzôð 	�
‰
�1‰€AØ�
‰
�1‰€AØ�
‰
�1‰€Añ �4—:‘:×Ñ¡;¨t¯z©z×#:Ñ#:ØÐØ	Ð Ñ ˆá0>Ó?²¨"”k "–o±€NÐ?Ù0>Ó?²¨"”k "–o±€NÐ?æÙ/8Ó9ªy¨”[ –_©yÑ9‰	ô ×"Ñ"ð
ˆ	ö Ù/8Ó9ªy¨”[ –_©yÑ9‰	ô ×"Ñ"ð
ˆ	ô �4Ó˜FÓ"¤k°$Ó&7¸5Ô&@ò	<ò	4ò	Dô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠÙ˜Ÿ™›Ó'×=©<¸Ó+=ÜIô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"Ügô	
ô 	�ŠØ�I‰I�a‹L˜2Ñ Ñ"×= t§y¡y°£|°bÑ'8¸AÑ'=Übô	
ð
	¤D¬Ñ$5ð 	ÄÄkÑARô 	ð	¤¤kÑ!2ð 	¼dÄ;Ñ>Oô 	ð	œD¤Ñ-ð 	¼¼kÑ9Jô 	ð	œD¤Ñ-ð 	¼¼kÑ9Jô 	ð	¤T¬+Ñ%6ð 	Ä$Ä{ÑBSô 	ð	¤t¬KÑ'8ð 	ÄDÌÑDUô 	ð	¤t¬KÑ'8ð 	ÄDÌÑDUô 	ñ ˜×8Ñ8ä�LŠLØ˜‘
× Ñ Ó" aÑ'÷ 6Ø˜A‘J×$Ñ$Ó&¨!Ñ+÷6à˜A‘J×$Ñ$¬¯©Ñ5÷6ð ˜A‘J×$Ñ$¬¯©Ñ5Ùvöñ ˜×7Ñ7Ü�LŠLØ˜‘
× Ñ  Ñ# qÑ(÷ 6Ø˜A‘J×$Ñ$Ó&¨!Ñ+÷6à˜A‘J×$Ñ$¬¯©Ñ5÷6ð ˜A‘J×$Ñ$Ó&¨!Ñ+÷6ð ˜A‘J×$Ñ$¬¯©Ñ5÷ö
ñ ˜N×;Ò;ð
 ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ô �LŠLØ×6˜Z×6¨J÷ð öñ ˜n×=Ò=ð ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ô ˜!˜c™' 1Ó%ˆBØ˜‘ˆBà—‘˜‘˜rÑ!÷ UØ—H‘H˜Q‘K 1¨¡8Ñ+÷Uà—I‘I˜a“L AÑ%÷Uð —Y‘Y˜q“\ RÑ'×S¨B¯H©H°Q©K¸1Ñ,<×,RÀÇÁÈ1ÃÐQRÑARð	 ð ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ô �LŠLØ×6˜Z×6¨J÷ñ öñ ˜n×=Ò=ð ˜‘
× Ñ ¤E§M¡MÑ1×W°g¸a±j×6FÑ6FÌ%Ï-É-Ñ6Wð ô ˜!˜c™' 1Ó%ˆBØ˜‘ˆBà—‘˜‘˜qÑ ÷ TØ—H‘H˜Q‘K 1¨¡8Ñ+÷Tà—I‘I˜a“L AÑ%÷Tð —Y‘Y˜q“\ QÑ&×R¨2¯8©8°A©;¸!Ñ+;×+QÀÇ	Á	È!ÃÐPQÑ@Qð	 ð ˜‘ˆBà—‘˜‘˜rÑ!÷ UØ—H‘H˜Q‘K 1¨¡8Ñ+÷Uà—I‘I˜a“L AÑ%÷Uð —Y‘Y˜q“\ RÑ'×S¨B¯H©H°Q©K¸1Ñ,<×,RÀÇÁÈ1ÃÐQRÑARð	 ô �LŠLØ×6˜Z×6¨J÷ñ öñ �>×2Ò2Ü�}‰}× × ä)1°$·*±*¸Q±-ÀÓ)DÀtÇzÁzÐRSÁ}Ñ)TÐ&Ü)1°$·*±*¸Q±-ÀÓ)DÀtÇzÁzÐRSÁ}Ñ)TÐ&Ü#.×#9Ñ#9Ñ ä)1°$·*±*¸Q±-ÀÓ)EÌÜ˜TŸZ™Z¨™]¨BÓ/°óIñ *Ð&ô *2°$·*±*¸Q±-ÀÓ)EÌÜ˜TŸZ™Z¨™]¨BÓ/°óIñ *Ð&ô $/×#=Ñ#=Ð Ü�LŠLØ˜‘
× Ñ Ó"Ð&<Ñ<÷ 5Ø˜A‘J×$Ñ$¬×(<Ñ(<Ñ<÷5à˜A‘J×$Ñ$Ó&Ð*@Ñ@÷5ð ˜A‘J×$Ñ$¬×(<Ñ(<Ñ<÷5ð ˜a‘LÐ$4Ñ4÷	5ð
 ˜a‘LÐ$4Ñ4÷ò öñ �>×2Ò2Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü%-¨a°Ó%5¼ÄÈ!ÈRÃÐRSÓ8TÑ%TÐ"Ü*×9Ñ9ÐÜ�LŠLØ˜‘
× Ñ Ó"Ð&<Ñ<÷ 	5ð 	5Ø˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷	5à˜A‘J×$Ñ$Ó&¨!Ñ+÷	5ð ˜A‘J×$Ñ$¬¯©Ñ5÷	5ð ˜A‘J×$Ñ$Ó&Ð*@Ñ@÷		5ð
 ˜A‘J×$Ñ$¬×(;Ñ(;Ñ;÷	5ð ˜A‘J×$Ñ$Ó&¨!Ñ+÷	5ð ˜A‘J×$Ñ$¬¯©Ñ5÷	5ð ˜a‘LÐ$4Ñ4÷	5ð ˜a‘LÐ$4Ñ4÷ò õô$ �LŠLØ÷
ð 
ôð (Ñ3‘¸¿¹€JÜ�;Š;�q˜! :°d·k±kÑBÐBùòw @ùÚ?ùò :ùò :s   Äy
Ä#yÅyÅ:yr  Úcontraction_dimsc                 ó(   • [        U UUUUUUU	UUUS9$ )N)rE  rG  r„  r…  r;  )rÖ  )r�   rR  r8  r‚  r„  r9  rƒ  r…  rE  r  r×  r;  s               r6   Úmeta_scaled_mm_v2rÙ  Ï  s2   € ô %ØØØØØØØØØØØ%ñð r8   c           	      óP   • [        XX#USS9  U R                  U R                  5      $ ©NT)r†  r¢  ©r�   r‰   r•   r4  rl  rj  s         r6   Úmeta_scatter_reduce_tworÝ  í  s%   € ô �d ¨VÀTÒJØ�>‰>˜$Ÿ*™*Ó%Ð%r8   c           	      ó   • [        XX#USS9  U $ rÛ  r¦  rÜ  s         r6   Úmeta_scatter_reduce__tworß  ô  s   € ä�d ¨VÀTÒJØ€Kr8   c                ó|  ^ • [         R                  " ST R                  5       s=:  =(       a    S:*  Os  U 4S j5        T R                  5       S:X  a.  [         R                  " U[         R                  T R
                  S9$ [         R                  " T R                  S5      U[         R                  T R
                  S9$ )Nr   rö   c                  ó*   >• ST R                  5        3$ )NzAThe probability distributions dimensions must be 1 or 2, but got r    r	  s   €r6   re   Ú"meta_multinomial.<locals>.<lambda>ÿ  s   ø€ ÐSÐTY×T]ÑT]ÓT_ÐS`Ñar8   r1   rú  )rV   rh   r‰   rŽ   r˜   r†   r¨   )rà   Únum_samplesÚreplacementr  s   `   r6   Úmeta_multinomialrå  ú  s   ø€ ô 
‡L‚LØ	ˆE�I‰I‹K×Ó˜1ÔÜaôð ‡y�yƒ{�aÓÜ�{Š{˜;¬e¯j©jÀÇÁÑNÐNÜ�;Š;Ø�
‰
�1‹�{¬%¯*©*¸U¿\¹\ñð r8   c                 ó$   • SnU  H  nX-  nM	     U$ r0   r2   )Úvsrp  Úvs      r6   Úmultiply_integersré    s   € Ø	€AÛˆØ	‰Šñ à€Hr8   c                 ó^  ^ ^^^• [         R                  " [        T5      T:H  UU4S j5        TS-   m[         R                  " [        T 5      T:H  UU 4S j5        [         R                  " [        S T SS   5       5      =(       a    [        S T 5       5      U U4S j5        T S S u  p4X4/TQ7$ )Nc                  ó&   >• ST  S[        T5       3$ )Nz%It is expected output_size equals to ú, but got size rá  )Únum_spatial_dimsr°  s   €€r6   re   Ú'upsample_common_check.<locals>.<lambda>  s   ø€ Ð7Ð8HÐ7IÈÔY\Ð]hÓYiÐXjÑkr8   rö   c                  ó&   >• ST  S[        T5       3$ )Nz$It is expected input_size equals to rì  rá  )Úexpected_input_dimsr€  s   €€r6   re   rî    s   ø€ Ð6Ð7JÐ6KÈ?Ô[^Ð_iÓ[jÐZkÑlr8   c              3   ó*   #   • U  H	  oS :„  v •  M     g7f©r   Nr2   ©rt   r©  s     r6   rv   Ú(upsample_common_check.<locals>.<genexpr>  s   é € Ð*š>�a�ŽEš>ùó   ‚c              3   ó*   #   • U  H	  oS :„  v •  M     g7frò  r2   ró  s     r6   rv   rô    s   é € Ð2NÂ+¸Q°q¶5Â+ùrõ  c                  ó   >• ST  ST 3$ )NzDInput and output sizes should be greater than 0, but got input size z and output size r2   )r€  r°  s   €€r6   re   rî    s   ø€ ð Ø �\Ð!2°;°-ñAr8   )rV   rh   rÉ   r¤  )r€  r°  rí  rû  Úchannelsrð  s   ```  @r6   Úupsample_common_checkrù    sŸ   û€ Ü	‡L‚LÜˆKÓÐ,Ñ,Ýkôð +¨QÑ.ÐÜ	‡L‚LÜˆJ‹Ð.Ñ.Ýlôô
 
‡L‚LÜÑ*˜: a b™>Ó*Ó*×N¬sÑ2NÁ+Ó2NÓ/Nõ	Aôð " " 1�~Ñ€FØÐ+˜{Ñ+Ð+r8   c                 ó8  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      R                  [        R                  " T 5      S9$ )Nr   r1   c                  ó*   >• ST R                  5        3$ )Nz>Non-empty 3D data tensor expected but got a tensor with sizes r§   r	  s   €r6   re   Ú$upsample_nearest1d.<locals>.<lambda>*  ó   ø€ ÐPÐQV×Q[ÑQ[ÓQ]ÐP^Ñ_r8   ©rí  r°   ©
rV   rh   rš   ré  r¨   rù  r›   r1  rO   r   )rà   r°  ÚscalesÚfull_output_sizes   `   r6   Úupsample_nearest1dr	  $  ó†   ø€ ô 
‡L‚LØ�‰‹˜Ñ×AÔ/°·
±
³¸Q¸RÐ0@ÓAÜ_ôô -Ø�
‰
‹�k°AñÐð �?‰?Ð+Ó,×/Ñ/Ü×1Ò1°%Ó8ð 0ð ð r8   c                 óÄ  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      n[        R                  " T 5      nT R                  u  px  nT R                  R                  S:X  a  US:  a  [         R                  nUR                  US9nU$ )	Nr   r1   c                  ó*   >• ST R                  5        3$ ©Nz>Non-empty 4D data tensor expected but got a tensor with sizes r§   r	  s   €r6   re   Ú$upsample_nearest2d.<locals>.<lambda>:  rý  r8   rö   rþ  rú   r#  r°   )rV   rh   rš   ré  r¨   rù  r›   rO   r   rœ   r†   r}   rµ   Ú
contiguous)	rà   r°  Úscales_hÚscales_wr	  r  r±   rR   Ú
n_channelss	   `        r6   Úupsample_nearest2dr	  4  sÄ   ø€ ô 
‡L‚LØ�‰‹˜Ñ×AÔ/°·
±
³¸Q¸RÐ0@ÓAÜ_ôô -Ø�
‰
‹�k°AñÐð �_‰_Ð-Ó.€Fô ×/Ò/°Ó6€Mð  Ÿ+™+Ñ€A�1�aØ‡|�|×Ñ˜FÓ" z°A£~Ü×/Ñ/ˆà×Ñ¨]ÐÐ;€Fà€Mr8   r°  r€  r		  r
	  c                 óX  ^ ^^• [        X!SS9m[        R                  " T R                  S:H  U 4S j5        [	        S5       H5  m[        R                  " T R                  T5      TT   :H  UU U4S j5        M7     T R                  U5      R                  [        R                  " T 5      S9$ )Nrö   rþ  r#  c                  ó"   >• ST R                    3$ ©NzFExpected grad_output to be a tensor of dimension 4 but got: dimension r  rÛ  s   €r6   re   Ú-upsample_nearest2d_backward.<locals>.<lambda>`  ó   ø€ ÐXÐYd×YiÑYiÐXjÑkr8   c            
      óD   >• ST ST T    ST STR                  T5       3$ )NzCExpected grad_output to have the same shape as output; output.size(ú) = z but got grad_output.size(r§   ©r	  r  rä   s   €€€r6   re   r	  e  s9   ø€ ð Ø !˜s $Ð'7¸Ñ':Ð&;Ø,¨Q¨C¨t°K×4DÑ4DÀQÓ4GÐ3HñJr8   r°   )
rù  rV   rh   rª   rË   r¨   r›   r1  rO   r   )r  r°  r€  r		  r
	  r	  rä   s   `    @@r6   Úupsample_nearest2d_backwardr	  N  s¡   ú€ ô -Ø°!ñÐô 
‡L‚LØ×Ñ˜AÑÜkôô �1ŽXˆÜ�ŠØ×Ñ˜QÓÐ#3°AÑ#6Ñ6öö	
ñ ð × Ñ  Ó,×/Ñ/Ü×1Ò1°+Ó>ð 0ð ð r8   c                 ó8  ^ • [         R                  " T R                  5       S:g  =(       d    [        T R	                  5       SS  5      U 4S j5        [        T R	                  5       USS9nT R                  U5      R                  [        R                  " T 5      S9$ )Nr   r1   c                  ó*   >• ST R                  5        3$ )Nz>Non-empty 5D data tensor expected but got a tensor with sizes r§   r	  s   €r6   re   Ú$upsample_nearest3d.<locals>.<lambda>w  rý  r8   r.   rþ  r°   rÿ  )rà   r°  Úscales_dr		  r
	  r	  s   `     r6   Úupsample_nearest3dr	  q  r	  r8   c                 ó²  • [         R                  " U 5      [         R                  " U [         R                  S9pvUbš  Ub—  [        U[        5      (       d   e[        U[        5      (       d   eUR
                  nUR                  5       n	[        XH5      n[        XX5      nUR                  X‰5        UR                  X‰5        [        XdS9  [        XuS9  XE4$ Xg4$ )Nr“   )r   r¡  )
rV   r´   r¼   rr   r   rœ   rÍ   r   rÒ   r!   )
r�   Ústabler‰   Ú
descendingr¸   r¹   rè  rä   r­   Ú
out_strides
             r6   Ú	meta_sortr	  �  s½   € ô ×Ò˜DÓ!¤5×#3Ò#3°DÄÇÁÑ#L€qØÑ˜gÑ1Ü˜&¤*×-Ñ-Ð-Ð-Ü˜'¤:×.Ñ.Ð.Ð.ð —G‘Gˆ	Ø—X‘X“Zˆ
Ü" 6Ó5ˆÜ# GÓ7ˆØ×Ñ˜9Ô1Ø×Ñ˜IÔ2Ü Ò3Ü Ò4ØˆÐØˆ4€Kr8   c           	      ó>  ^ ^^^^^^^• [         R                  " T R                  S:H  U 4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        T R	                  S5      mTbˆ  [         R                  " TR                  S:H  U4S j5        [         R                  " TR                  5       T:H  UU4S j5        [         R                  " TR                  TR                  :H  UU4S j5        [         R                  " TR                  S:H  U4S j5        T R	                  S	5      T-  T-  m[         R                  " TR                  5       T:H  UUUU U4S
 j5        [         R                  " [        U 4S jTTTT4 5       5      S 5        g )Nrö   c                  ó"   >• T R                    S3$ ©Nz != 2r  )Úinput_gatess   €r6   re   Ú%rnn_cell_checkSizes.<locals>.<lambda>¤  ó   ø€ °;×3CÑ3CÐ2DÀEÑ0Jr8   c                  ó:   >• TR                    ST R                    3$ ©Nú != rD  )Úhidden_gatesr#	  s   €€r6   re   r$	  §  s   ø€ �;×$Ñ$Ð% T¨,×*<Ñ*<Ð)=Ñ>r8   r1   c                  ó"   >• T R                    S3$ )Nz != 1r  )Ú
input_biass   €r6   re   r$	  «  s   ø€ °j·o±oÐ5FÀeÑ3Lr8   c                  ó.   >• TR                  5        ST  3$ r'	  r  )Ú
gates_sizer+	  s   €€r6   re   r$	  ®  s   ø€ �z×'Ñ'Ó)Ð*¨$¨z¨lÑ;r8   c                  ó:   >• TR                    ST R                    3$ r'	  rD  )Úhidden_biasr+	  s   €€r6   re   r$	  ²  s   ø€ �z×'Ñ'Ð(¨¨[×->Ñ->Ð,?Ñ@r8   c                  ó"   >• T R                    S3$ r"	  r  )Úprev_hiddens   €r6   re   r$	  ´  r%	  r8   r   c            
      ó`   >• TR                  5        STR                  S5       ST ST ST  S3
$ )Nr(	  r   z * z // z (aka r|   )rš   r¨   )Úexpected_prev_hidden_numelÚfactorr-	  r#	  r1	  s   €€€€€r6   re   r$	  ¸  s@   ø€ �;×$Ñ$Ó&Ð' t¨K×,<Ñ,<¸QÓ,?Ð+@ÀÀJÀ<ÈtÐTZÐS[Ð[aÐb|Ða}Ð}~Ñr8   c              3   óV   >#   • U  H  nUR                   TR                   :H  v •  M      g 7frB   r­  )rt   r;   r#	  s     €r6   rv   Ú&rnn_cell_checkSizes.<locals>.<genexpr>»  s*   øé € ð 
ò J�ð �H‰H˜×*Ñ*Ö*ÚIùs   ƒ&)c                  ó   • g)Nz%expected all inputs to be same devicer2   r2   r8   r6   re   r$	  À  s   € Ð7r8   )rV   rh   rª   rœ   r¨   rš   r¤  )r#	  r)	  r+	  r/	  r4	  r1	  r3	  r-	  s   ``````@@r6   Úrnn_cell_checkSizesr8	  œ  sE  ÿ€ ô 
‡L‚L�×!Ñ! QÑ&Ô(JÔKÜ	‡L‚LØ×Ñ˜\×/Ñ/Ñ/Ý>ôð ×!Ñ! !Ó$€JØÑÜ�Š�Z—_‘_¨Ñ)Ô+LÔMÜ�ŠØ×ÑÓ *Ñ,Ý;ô	
ô 	�ŠØ×Ñ × 1Ñ 1Ñ1Ý@ô	
ô 
‡L‚L�×!Ñ! QÑ&Ô(JÔKØ!,×!1Ñ!1°!Ó!4°zÑ!AÀVÑ!KÐÜ	‡L‚LØ×ÑÓÐ9Ñ9ßÐôô 
‡L‚LÜô 
ð # J°¸[ÑIó
ó 	
ñ
 	8õr8   c                 óø   • [        XX4SU5        [        R                  " U [        R                  S9n[        R                  " U[        R                  S9n[        R                  " U[        R                  S9nXgU4$ )Nr#  r°   )r8	  rV   r´   rµ   )r#	  r)	  Úcxr+	  r/	  Ú	workspaceÚhyÚcys           r6   Ú_thnn_fused_lstm_cell_metar>	  Ä  se   € ô ˜°:ÈAÈrÔRÜ× Ò  ¼E×<SÑ<SÑT€IÜ	×	Ò	˜"¬E×,CÑ,CÑ	D€BÜ	×	Ò	˜"¬E×,CÑ,CÑ	D€BØ�IÐÐr8   c                 ó¢  • [        U5      S:g  nU(       a   [        U5      nUS   nU R                  S   nOLU
(       a  U R                  S   OU R                  S   nU
(       a  U R                  S   OU R                  S   nSnU(       a  SOSnUS:w  a  UOUnU(       a  UUU-  /nOU
(       a  UUUU-  /OUUUU-  /nU R                  U5      nU	U-  UU/nUc   [        R                  " SU R
                  S9nOUR                  U5      nUR                  U	U-  UU/5      nU(       a  SOSnU R                  U[        R                  S9nUUUUU4$ )Nr   r1   rŸ   rö   r­  r“   )rÉ   rœ   r›   rV   rŽ   r†   r  )rà   rC  Úweight_stride0Ú
weight_bufÚhxr:	  rl  Úhidden_sizeÚ	proj_sizeÚ
num_layersÚbatch_firstÚdropoutÚtrainÚbidirectionalÚbatch_sizesÚdropout_stateÚis_input_packedÚ
seq_lengthÚ
mini_batchÚbatch_sizes_sumÚnum_directionsÚout_sizer­   r  Ú
cell_shaper=	  r<	  Úreserve_shapeÚreserves                                r6   Ú
_cudnn_rnnrU	  Ó  sS  € ô& ˜+Ó&¨!Ñ+€OÞÜ˜Ó%ˆ
Ø  ‘^ˆ
ØŸ+™+ a™.‰æ'2�U—[‘[ ’^¸¿¹ÀA¹ˆ
Þ'2�U—[‘[ ’^¸¿¹ÀA¹ˆ
Øˆæ'‘Q¨Q€NØ%¨›N‰y°€HÞØ$ h°Ñ&?Ð@‰	ö ð ˜ X°Ñ%>Ñ?à˜j¨(°^Ñ*CÐDð 	ð
 �_‰_˜YÓ'€Fà˜~Ñ-¨z¸;ÐG€JØ	�zÜ�[Š[˜ 5§<¡<Ñ0‰à�\‰\˜*Ó%ˆà	�‰�z NÑ2°JÀÐIÓ	J€Bö ‘A A€MØ�o‰o˜m´5·;±;ˆoÐ?€Gà�2�r˜7 JÐ.Ð.r8   c                 ó>  • U(       a  U R                   S   OU R                   S   nU(       a  U R                   S   OU R                   S   nU
nU(       a  UUU/OUUU/nU R                  U5      nUc   [        R                  " SU R                  S9nOUR                  UR                   5      nUc   [        R                  " SU R                  S9nOUR                  UR                   5      n[        R                  " SU R                  [        R
                  S9nUUUU4$ )Nr1   r   r­  r»   )rœ   r›   rV   rŽ   r†   r  )rà   Úw0Úw1Úw2Úw3Úhx_Úcx_rÈ   rJ	  rl  rC	  rE	  Ú
has_biasesrI	  rF	  rH	  rM	  rN	  Úoutput_chanelsr­   r  r<	  r=	  r;	  s                           r6   Úmkldnn_rnn_layerr_	    sê   € ö& $/�—‘˜Q’°E·K±KÀ±N€JÞ#.�—‘˜Q’°E·K±KÀ±N€JØ €Nö ð 
�Z Ñ0à˜* nÐ5ð ð
 �_‰_˜YÓ'€FØ
�{Ü�[Š[˜ 5§<¡<Ñ0‰à�]‰]˜3Ÿ9™9Ó%ˆØ
�{Ü�[Š[˜ 5§<¡<Ñ0‰à�]‰]˜3Ÿ9™9Ó%ˆÜ—’˜A e§l¡l¼%¿+¹+ÑF€IØ�2�r˜9Ð$Ð$r8   c                 óÜ   ^^• U R                   S:X  a,  [        R                  " TS:H  =(       d    TS:H  UU4S j5        g [        R                  " U R                  T5      S:g  UU4S j5        g )Nr   rŸ   c                  ó   >• T ST  3$ )Nz4: Expected reduction dim -1 or 0 for scalar but got r2   ©r‰   rå  s   €€r6   re   Ú'zero_numel_check_dims.<locals>.<lambda>7  s   ø€ �w�iÐSÐTWÐSXÑYr8   c                  ó   >• T ST  S3$ )Nz: Expected reduction dim z to have non-zero size.r2   rb	  s   €€r6   re   rc	  <  s   ø€ �w�iÐ8¸¸Ð=TÑUr8   )rª   rV   r™   r¨   )r�   r‰   rå  s    ``r6   Úzero_numel_check_dimsre	  3  sR   ù€ Ø‡y�y�Aƒ~Ü×ÒØ�1‰H×!˜˜r™	ÝYõ	
ô
 	×ÒØ�I‰I�c‹N˜aÑÝUõ	
r8   c                 ó°   ^ • Ub&  [        X!R                  5       5      n[        XT 5        g [        R                  " UR                  5       S:g  U 4S j5        g )Nr   c                  ó   >• T  S3$ )Nz@: Expected reduction dim to be specified for input.numel() == 0.r2   rO  s   €r6   re   Ú%check_argmax_argmin.<locals>.<lambda>H  s   ø€ �t�fÐ\Ñ]r8   )r½   r‰   re	  rV   rh   rš   )rÈ  r�   r‰   s   `  r6   Úcheck_argmax_argminri	  A  s?   ø€ Ø
�Ü˜S§(¡(£*Ó-ˆÜ˜d¨Õ.ä�ŠØ�J‰J‹L˜AÑÜ]õ	
r8   c                 ó¼   • [        SX5        [        R                  " U R                  Ub  U4OS 5      n[	        XU5      nU R                  U[        R                  S9$ )NÚargmaxr“   )ri	  rO   r�  rœ   rŽ  r›   rV   r¼   )r�   r‰   r�  r¹  rœ   s        r6   Úargmax_argmin_metarl	  L  sM   € ä˜ $Ô,Ü×Ò §
¡
°c±o¨S©FÈ4ÓP€DÜ$ T°Ó9€EØ�>‰>˜%¤u§{¡{ˆ>Ð3Ð3r8   c                 óv   • U[         R                  :X  a  [         R                  n[         R                  " SXX4S9$ )Nr2   r  )rV   Újaggedr¿  rŽ   )r©  r^   r…   r†   r‡   s        r6   Úscalar_tensorro	  T  s1   € ð
 ”—‘ÓÜ—‘ˆÜ�;Š;Ø
�%¨vñð r8   c                 ó”  • [        X R                  5       SS9nU R                  5       S:X  a  SOU R                  U5      n[        R                  " US:¬  5        [        R                  " X:*  S 5        [        U R                  5      n[        U5      S:”  a  XU'   U R                  U5      U R                  U[        R                  S94$ )NT©rc  r   r1   c                  ó   • g)Nzk not in range for dimensionr2   r2   r8   r6   re   Útopk_meta.<locals>.<lambda>f  s   € Ð)Gr8   r“   )
r½   r‰   r¨   rV   rh   rÊ   rœ   rÉ   r›   r¼   )r�   rT  r‰   ÚlargestrÊ  Ú	sliceSizeÚtopKSizes          r6   Ú	topk_metarw	  `  s˜   € ô ˜Ÿh™h›j°dÑ
;€CØ—X‘X“Z 1“_‘¨$¯)©)°C«.€IÜ	‡L‚L��a‘ÔÜ	‡L‚L�‘Ñ!GÔHä�D—J‘JÓ€HÜ
ˆ8ƒ}�qÓØ�‰Ø�>‰>˜(Ó# T§^¡^°HÄEÇKÁK ^Ð%PÐPÐPr8   c                 óÆ   • Uc
  Uc   S5       eUR                  5       nU R                  5       n	[        R                  " UU	R                  U	R                  U	R
                  S9$ )Nz;segment_reduce(): Either lengths or offsets must be defined)r^   r†   r…   )r	  rV   r´   r^   r†   r…   )
rl  r  r|  rl  rw  rx  ry  r{  Údata_contigÚgrad_contigs
             r6   Úmeta__segment_reduce_backwardr{	  n  sj   € ð
 Ñ 'Ñ"5ð ØEóÐ5ð —/‘/Ó#€KØ—/‘/Ó#€KÜ×ÒØØ×ÑØ×!Ñ!Ø×!Ñ!ñ	ð r8   c                 óì  ^• SSK Jn  [        TU R                  5       SS9mU R                  5       S:”  a  U R	                  T5      OSn[
        R                  " U" US:¬  X:*  5      U4S j5        [        U R                  S T U R                  TS-   S  -   5      nU(       a&  U R                  5       S:”  a  UR                  TS5        U R                  U5      U R                  U[
        R                  S94$ )Nr   )r‘  Trq	  r1   c                  ó   >• ST  3$ )Nz9kthvalue(): selected number k out of range for dimension r2   r    s   €r6   re   Úkthvalue_meta.<locals>.<lambda>‰  s   ø€ ÐKÈCÈ5ÑQr8   r“   )r.  r‘  r½   r‰   r¨   rV   rh   rÊ   rœ   r9  r›   r¼   )r�   rT  r‰   r�  r‘  ÚdimSizerœ   s     `    r6   Úkthvalue_metar€	  €  sÃ   ø€ õ >ä
˜˜dŸh™h›j°dÑ
;€CØ $§¡£
¨Q£ˆd�i‰i˜Œn°A€GÜ	‡L‚LÙ��Q‘˜™Ó%ÜQôô
 �—‘˜D˜SÐ! D§J¡J¨s°Q©w¨yÐ$9Ñ9Ó:€EÞ�4—8‘8“: “>Ø�‰�S˜!ÔØ�>‰>˜%Ó  $§.¡.°¼e¿k¹k .Ð"JÐJÐJr8   c                 ó”  • U b  U OUn[         R                  " UR                  5       S:H  S 5        UR                  5       nU b)  [         R                  " U R                  5       U:H  S 5        Ub)  [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       U:H  S 5        [         R                  " UR                  5       S:H  S 5        [         R                  " UR	                  5       US   US	   -  S
-  :H  S 5        g )Nrö   c                  ó   • g©NÚ r2   r2   r8   r6   re   Ú(checkLSTMBackwardSizes.<locals>.<lambda>˜  s   € °"r8   c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	  ›  ó   € ¸r8   c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	  �  r‡	  r8   c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	  ž  ó   € °r8   c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	  Ÿ  rŠ	  r8   c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	     s   € ¨rr8   r   r1   r#  c                  ó   • grƒ	  r2   r2   r8   r6   re   r…	  ¡  s   € ÈRr8   )rV   rh   r‰   r¨   rš   )Úgrad_hyÚgrad_cyr:	  r=	  r;	  Údefined_gradÚexp_sizes          r6   ÚcheckLSTMBackwardSizesr’	  –  sí   € Ø%Ñ1‘7°w€LÜ	‡L‚L�×!Ñ!Ó# qÑ(©*Ô5Ø× Ñ Ó"€HØÑÜ�Š�W—\‘\“^ xÑ/±Ô<ØÑÜ�Š�W—\‘\“^ xÑ/±Ô<Ü	‡L‚L�—‘“˜hÑ&©
Ô3Ü	‡L‚L�—‘“˜hÑ&©
Ô3Ü	‡L‚L�—‘“ AÑ%¡zÔ2Ü	‡L‚L�—‘Ó" h¨q¡k°H¸Q±KÑ&?À!Ñ&CÑCÁZÕPr8   c                 óÈ   • U c  Uc  g[        XX#U5        [        R                  " U[        S9n[        R                  " U[        S9nU(       a  UR	                  SSS9OS nXgU4$ )N©NNNr°   r   F)r�  )r’	  rV   r´   Úlegacy_contiguous_memory_formatr  )	rŽ	  r�	  r:	  r=	  r;	  Úhas_biasÚ
grad_gatesÚgrad_cxr  s	            r6   Ú#_thnn_fused_lstm_cell_backward_implr™	  ¥  sf   € à�˜7™?ØÜ˜7¨R°YÔ?Ü×!Ò!ØÔ!@ñ€Jô ×Ò˜rÔ1PÑQ€GÞ4<�
—‘˜q¨%�Ñ0À$€IØ 	Ð)Ð)r8   c                 ó2  • S nS nS nUS   (       a  UR                  U R                  5       5      nUS   (       d
  US   (       aQ  UR                  UR                  S5      U R                  S5      45      nUR                  UR                  S5      5      nXEU4$ )Nr   r1   rö   rŸ   r!  )r#  r"  r$  r'  r  Úgrad_weightr  s          r6   Úlinear_backwardrœ	  ³  sŠ   € à€JØ€KØ€IØ�1‡~Ø!×+Ñ+¨F¯K©K«MÓ:ˆ
Ø�1‡~˜ QŸØ"×,Ñ,¨l×.?Ñ.?ÀÓ.CÀVÇ[Á[ÐQSÃ_Ð-UÓVˆØ ×*Ñ*¨<×+<Ñ+<¸RÓ+@ÓAˆ	Ø YÐ/Ð/r8   c                 ó˜  ^ ^• [        T R                  5      S:”  a  T R                  S   X-  -  S:X  d   ST R                   SU 35       eS mUU 4S jnT R                  S   X-  -  nT R                  S   U-  nT R                  S	   U-  n/ T R                  S S QUPUPUP7nT R                  U5      nUR                  U" 5       S
9nU$ )Nrö   rc  r   z'Invalid input shape for pixel_shuffle: z with upscale_factor = c                 ób   • [         R                  R                  U 5      [         R                  :H  $ rB   r×  rÚ  s    r6   rÜ  Ú,meta_pixel_shuffle.<locals>.is_channels_lastÈ  s$   € Ü×"Ñ"×8Ñ8¸Ó=Ä×ATÑATÑTÐTr8   c                  óF  >• T " T5      (       a/  [        T5      S:X  a  [        R                  $ [        R                  $ TR	                  [        R                  S9(       a  [        R                  $ TR	                  [        R
                  S9(       a  [        R
                  $ g )Nrú   r°   )r   rV   rµ   rÙ  re  Úpreserve_format)rÜ  r�   s   €€r6   rä  Ú.meta_pixel_shuffle.<locals>.pick_memory_formatË  s   ø€ Ù˜D×!Ñ!Ü˜4Ó  FÓ*Ü×.Ñ.Ð.ä×*Ñ*Ð*Ø×Ñ¬e×.EÑ.EÐÖFÜ×*Ñ*Ð*Ø×Ñ¬e×.CÑ.CÐÖDÜ×(Ñ(Ð(ð Er8   rÄ  rŸ   r°   )rÉ   rœ   r›   r1  )	r�   Úupscale_factorrä  r>  ÚHrÚWrr­   rÔ   rÜ  s	   `       @r6   Úmeta_pixel_shuffler¦	  À  sã   ù€ ô 	ˆD�J‰J‹˜!Ó §
¡
¨2¡°.Ñ2QÑ RÐVWÓ Wðð 2°$·*±*°Ð=TÐUcÐTdÐeóØWò
Uö	)ð 	�
‰
�2‰˜>Ñ:Ñ;€AØ	�‰�B‰˜.Ñ	(€BØ	�‰�B‰˜.Ñ	(€BØ-�$—*‘*˜S˜b�/Ð- 1Ð- bÐ-¨"Ñ-€Ià
�.‰.˜Ó
#€CØ
�&‰&Ñ1Ó3ˆ&Ð
4€CØ€Jr8   c                 óX  • U R                  U R                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUR                  UR                  5      nUUUUUUU4$ rB   rü  )rà   Úweight0Úweight1Úweight2Úweight3r[	  Úcx_tmpr  Úhy_Úcy_Úgrad_output_r_optÚgrad_hy_r_optÚgrad_cy_r_optrÈ   rl  rC	  rE	  r]	  rH	  rI	  rJ	  rF	  r;	  Údiff_xÚdiff_hxÚdiff_cxÚdiff_w1Údiff_w2Údiff_bs                                r6   Úmkldnn_rnn_layer_backwardr¸	  à  s�   € ð4 �_‰_˜UŸ[™[Ó)€FØ�m‰m˜CŸI™IÓ&€GØ×Ñ˜vŸ|™|Ó,€GØ×Ñ §¡Ó.€GØ×Ñ §¡Ó.€GØ×Ñ˜wŸ}™}Ó-€FØ�7˜G V¨V°W¸gÐEÐEr8   )Ú	out_int32rÝ   c                ó”   • [         R                  " U U(       a  [         R                  O[         R                  [         R                  S9$ )N©r^   r±   )rV   r´   rK  r¼   rµ   )r�   Ú
boundariesr¹	  rÝ   s       r6   Úmeta_bucketizer½	    s2   € ô ×ÒØÞ&Œe�kŠk¬E¯K©KÜ×-Ñ-ñð r8   c                 ó¾  ^ ^^^^• Sm[        T 5      S:X  a)  [        R                  " T R                  5       U 4S j5        [        T 5      S:X  a+  T R                  5       (       a  [        R
                  " S5        [        R                  " [        T[        5      UU4S j5        [        R                  " TS:„  UU4S j5        [        R                  " [        T[        5      UU4S	 j5        [        R                  " [        T[        5      UU4S
 j5        [        R                  " TT:¬  U4S j5        [        R                  " TT R                  T R                  S9$ )Nzhistc()r  c                  ó$   >• ST R                    S3$ )Nz%"histogram_cpu" not implemented for 'r  r“   r	  s   €r6   re   Úmeta_histc.<locals>.<lambda>  s   ø€ Ð=¸e¿k¹k¸]È!ÑLr8   rú   z%_histc_cuda with floating point inputc                  ó$   >• T S[        T 5       3$ )Nz#: argument 'bins' must be int, not r=  ©Úbinsrå  s   €€r6   re   rÀ	    s   ø€ �7�)Ð>¼tÀD»z¸lÑKr8   r   c                  ó   >• T ST  3$ )Nz: bins must be > 0, but got r2   rÂ	  s   €€r6   re   rÀ	    s   ø€  g YÐ.JÈ4È&Ñ#Qr8   c                  ó$   >• T  S[        T5       3$ )Nz%: argument 'min' must be Number, not r=  )rå  r  s   €€r6   re   rÀ	    ó   ø€ �7�)Ð@ÄÀcÃÀÑLr8   c                  ó$   >• T  S[        T5       3$ )Nz%: argument 'max' must be Number, not r=  )rå  r³  s   €€r6   re   rÀ	  #  rÆ	  r8   c                  ó   >• T  S3$ )Nz: max must be larger than minr2   )rå  s   €r6   re   rÀ	  %  s   ø€ ¨ yÐ0MÑ%Nr8   r»   )r   rV   rh   rÿ   rO   r1  rr   r   r   rŽ   r†   r^   )rà   rÃ	  r  r³  rå  s   ````@r6   Ú
meta_histcrÉ	    sð   ü€ ð €GÜ�5Ó˜UÓ"Ü�ŠØ×#Ñ#Ó%ÜLô	
ô �5Ó˜VÓ#¨×(?Ñ(?×(AÑ(AÜ×%Ò%Ð&MÔNÜ	‡L‚LÜ�4œÓ!ÝKôô 
‡L‚L�˜‘ÕQÔRÜ	‡L‚LÜ�3œÓÝLôô 
‡L‚LÜ�3œÓÝLôô 
‡L‚L�˜‘ÔNÔOÜ�;Š;�t E§L¡L¸¿¹ÑDÐDr8   c                 óF  ^ • [        T R                  5       USS9n[        R                  " T R	                  5       S:g  =(       d#    [        S T R                  5       SS   5       5      U 4S j5        T R                  U5      R                  [        R                  " T 5      S9$ )Nrö   rþ  r   c              3   ó*   #   • U  H	  oS :„  v •  M     g7frò  r2   )rt   r¨   s     r6   rv   Ú,meta_upsample_bimode2d_aa.<locals>.<genexpr>7  s   é € Ð!HÒ7G¨t¨¦(Ò7Gùrõ  r1   c                  ó*   >• ST R                  5        3$ r	  r§   r	  s   €r6   re   Ú+meta_upsample_bimode2d_aa.<locals>.<lambda>8  rý  r8   r°   )
rù  r¨   rV   rh   rš   r¤  r›   r1  rO   r   )rà   r°  r9  r		  r
	  r	  s   `     r6   Úmeta_upsample_bimode2d_aarÏ	  )  s‹   ø€ ô -Ø�
‰
‹�k°AñÐô 
‡L‚LØ�‰‹˜Ñ×HœcÑ!H°u·z±z³|ÀAÀBÑ7GÓ!HÓHÜ_ôð �?‰?Ð+Ó,×/Ñ/Ü×1Ò1°%Ó8ð 0ð ð r8   c                 óT  ^ ^^• [        X!SS9m[        R                  " T R                  S:H  U 4S j5        [	        S5       H3  m[        R                  " T R
                  T   TT   :H  UU U4S j5        M5     T R                  U5      R                  [        R                  " T 5      S9$ )Nrö   rþ  r#  c                  ó"   >• ST R                    3$ r	  r  rÛ  s   €r6   re   Ú4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>M  r	  r8   c            
      óD   >• ST ST T    ST STR                  T5       3$ )NzD
Expected grad_output to have the same shape as output; output.size(r	  z
but got grad_output_size(r§   r	  s   €€€r6   re   rÒ	  R  s>   ø€ ð DØDEÀ3ÀdÐK[Ð\]ÑK^ÐJ_ð `Ø˜˜D ×!1Ñ!1°!Ó!4Ð 5ñ9r8   r°   )
rù  rV   rh   rª   rË   rœ   r›   r1  rO   r   )r  r°  r€  r9  r		  r
	  r	  rä   s   `     @@r6   Ú"meta_upsample_bimode2d_aa_backwardrÔ	  ?  s¡   ú€ ô -Ø°!ñÐô 
‡L‚LØ×Ñ˜AÑÜkôô �1ŽXˆÜ�ŠØ×Ñ˜aÑ Ð$4°QÑ$7Ñ7ö9ö	
ñ ð × Ñ  Ó,×/Ñ/Ü×1Ò1°+Ó>ð 0ð ð r8   c                 óX  • [         R                  " UR                  5       S:H  S 5        [         R                  " UR                  5       S:H  S 5        [         R                  " UR                  R                  S 5        [         R                  " UR                  R                  S 5        g )Nr1   c                  ó   • g)Nz%found_inf must be a 1-element tensor.r2   r2   r8   r6   re   Ú<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>_  ó   € Ð(Or8   c                  ó   • g)Nz%inv_scale must be a 1-element tensor.r2   r2   r8   r6   re   r×	  b  rØ	  r8   c                  ó   • g)Nz!found_inf must be a float tensor.r2   r2   r8   r6   re   r×	  f  ó   € Ð3r8   c                  ó   • g)Nz!inv_scale must be a float tensor.r2   r2   r8   r6   re   r×	  j  rÛ	  r8   )rV   rh   rš   r^   rÿ   )r�   r9  Ú	inv_scales      r6   Ú*_amp_foreach_non_finite_check_and_unscale_rÞ	  \  s|   € ä	‡L‚LØ�‰Ó˜QÑÑ Oôô 
‡L‚LØ�‰Ó˜QÑÑ Oôô 
‡L‚LØ�‰×)Ñ)Ù3ôô 
‡L‚LØ�‰×)Ñ)Ù3õr8   c                 ó.   • [         R                  " U 5      $ rB   r:  )r�   ÚnanÚposinfÚneginfs       r6   Ú
nan_to_numrã	  o  r™  r8   c                 óÔ  • U R                   [        R                  [        R                  [        R                  [        R
                  1;  d   SU R                    S35       eU R                  n[        X5      n[        X#5      nX:X  a  U $ [        U R                  5       5      n[        U R                  5       5      nXR   XQ   sXQ'   XR'   XB   XA   sXA'   XB'   U R                  XE5        U $ )Nz>torch.transpose_: in-place transposition is not supported for z layout)r…   rV   rÀ  Ú
sparse_cscrÁ  Ú
sparse_bscrª   r½   rÊ   r¨   rÍ   rÒ   )r�   Údim0r‰  Úndimsr¨   rÍ   s         r6   r³  r³  u  sÞ   € à�;‰;Ü×ÑÜ×ÑÜ×ÑÜ×Ñð	ó ð ð IÈÏÉÈÐU\Ð]óð ð �I‰I€Eä˜$Ó&€DÜ˜$Ó&€Dàƒ|Øˆä�—	‘	“Ó€DÜ�$—+‘+“-Ó €Fà!'¡¨v©|Ð€F�L�&‘,Ø!™Z¨©Ð€D�J�‘
à×Ñ�TÔ"Ø€Kr8   c                 ó"  • U R                   nU R                  (       a;  U R                  5       nU R                  5       nUS::  a  US:X  d   SU SU S35       eOU R	                  5       S::  d   SU S35       e[        U SUS:  a  S5      $ S5      $ )	Nrö   r   zEt_ expects a tensor with <= 2 sparse and 0 dense dimensions, but got z sparse and z dense dimensionsz6t_ expects a tensor with <= 2 dimensions, but self is r4  r1   )rª   rL  rN  rO  r‰   r³  )r�   rè	  rN  rO  s       r6   Út_rê	  ’  s¥   € à�I‰I€Eà‡~‡~Ø—_‘_Ó&ˆ
Ø—N‘NÓ$ˆ	Ø˜Q‹ 9°£>ð 	
ðØ!�l ,¨y¨kÐ9JðLó	
Ð1 >ð
 �x‰x‹z˜Q‹ð 	
ØDÀUÀGÈ1ÐMó	
ˆô �d˜A E¨A£I˜qÓ5Ð5°1Ó5Ð5r8   )r¹	  rÝ   ÚsideÚsorterc                óš  ^ ^^• [         R                  " [        T R                  5      S:*  =(       d    T R                  S S TR                  S S :H  UU 4S j5        [         R                  " TS L =(       d    T R                  TR                  :H  U U4S j5        [         R                  " US:g  =(       d    U(       + S 5        U(       a  [         R                  O[         R
                  n[        T[         R                  5      (       a$  [         R                  " TU[         R                  S9$ [         R                  " SUT R                  S	9$ )
Nr1   rŸ   c                  ó`   >• S[        TR                  5       S[        T R                  5       3$ )Nz¯torch.searchsorted(): boundaries tensor should be 1 dimension or the first N-1 dimensions of boundaries tensor and input value tensor must match, but we got boundaries tensor z and input value tensor ©rÊ   rœ   )r�   Úsorted_sequences   €€r6   re   Ú#meta_searchsorted.<locals>.<lambda>µ  s3   ø€ ð3ä37¸×8MÑ8MÓ3NÐ2Oð P"Ü"& t§z¡zÓ"2Ð!3ñ5r8   c                  ón   >• S[        T R                  5       STb  [        TR                  5       3$ /  3$ )Nz[torch.searchsorted(): boundary and sorter must have the same size, but got boundary tensor z and got sorter tensor rï	  )rð	  rì	  s   €€r6   re   rñ	  À  sB   ø€ ð#Ü#'¨×(=Ñ(=Ó#>Ð"?Ð?VØ%+Ñ%7Œt�F—L‘LÓ!Ð@ñBà=?Ð@ñBr8   rÜ   c                  ó   • g)Nzetorch.searchsorted(): side and right can't be set to opposites, got side of left while right was Truer2   r2   r8   r6   re   rñ	  Ê  s   € ð $r8   r»	  r2   rú  )rV   rh   rÉ   rœ   rK  r¼   rr   r   r´   rµ   rŽ   r†   )rð	  r�   r¹	  rÝ   rë	  rì	  r^   s   ``   ` r6   Úmeta_searchsortedrô	  ¥  sû   ú€ ô 
‡L‚LÜˆO×!Ñ!Ó" aÑ'÷ 	9Ø× Ñ   "Ð%¨¯©°C°R¨Ñ8õ	
ô	ô 
‡L‚LØ�$ˆ×?˜/×/Ñ/°6·<±<Ñ?õ	
ôô 
‡L‚LØ�‰×#˜eœ)ñ	$ôö %ŒE�KŠK¬%¯+©+€EÜ�$œŸ™×%Ñ%Ü×ÒØ˜¬U×-DÑ-Dñ
ð 	
ô �{Š{˜2 U°?×3IÑ3IÑJÐJr8   c                 óœ   ^ • [         R                  " T [         R                  [         R                  [         R                  4;  U 4S j5        g )Nc                  ó   >• ST  3$ )Nz/Unsupported input type encountered for isin(): r2   r“   s   €r6   re   Ú3_check_for_unsupported_isin_dtype.<locals>.<lambda>Ú  s   ø€ ÐAÀ%ÀÑIr8   )rV   rh   r  Ú
complex128Ú	complex64r“   s   `r6   Ú!_check_for_unsupported_isin_dtyperú	  ×  s/   ø€ Ü	‡L‚LØ”e—j‘j¤%×"2Ñ"2´E·O±OÐDÑDÜIõr8   c                 óH   • U R                  X R                  S5      45      nU$ )NrŸ   r!  )r  r¹   Únum_weightsr  r  r›	  s         r6   Úmeta_embedding_dense_backwardrý	  Þ  s(   € ð ×'Ñ'¨×6FÑ6FÀrÓ6JÐ(KÓL€KØÐr8   c                 ót   • U	(       a  [         R                  U UUUUUUUU
U5
      $ [        U UUUUUUUU
U5
      $ rB   )r+   Ú_embedding_bag_sparse_backwardÚ!meta_embedding_bag_dense_backward)rl  r¹   rx  r!  r"  Úmaximum_indicesrü	  r  rl  r  r	  r  s               r6   Úmeta_embedding_bag_backwardr
  ê  se   € ö Ü×2Ñ2ØØØØØØØØØØó
ð 	
ô 1ØØØØØØØØØØó
ð 	
r8   c
                 óX  ^ • [         R                  " T R                  [         R                  [         R                  [         R
                  [         R                  4;   U 4S j5        U[        :X  a  [         R                  " US L5        T R                  UT R                  S5      45      n
U
$ )Nc                  ó"   >• ST R                    3$ )Nz$Unsupported input type encountered: r“   )rl  s   €r6   re   Ú3meta_embedding_bag_dense_backward.<locals>.<lambda>$  s   ø€ Ð6°t·z±z°lÑCr8   r1   )
rV   rh   r^   rb  rc  ra  Úfloat64r  r›   r¨   )rl  r¹   r!  r"  r
  rü	  r  rl  r	  r  Úindex_grad_weights   `          r6   r 
  r 
    sv   ø€ ô 
‡L‚LØ�
‰
”u—}‘}¤e§n¡n´e·m±mÄUÇ]Á]ÐSÑSÜCôð ŒxÓÜ�Š�_¨DÐ0Ô1ØŸ™¨°T·Y±Y¸q³\Ð'BÓCÐØÐr8   c                 óæ  • U R                  S5      n[        R                  " U[        :H  S 5        [        R                  " U R	                  5       S:H  5        [        R                  " UR	                  5       S:H  5        UR                  S5      n[        R                  " UR	                  5       S:H  5        [        R                  " UR                  S5      U:H  5        U R                  U45      n	U	$ )Nr1   c                  ó   • g)NzHembedding_bag_backward: per_sample_weights only supported for mode='sum'r2   r2   r8   r6   re   Ú@meta_embedding_bag_per_sample_weights_backward.<locals>.<lambda>9  r%  r8   rö   r   )r¨   rV   rh   r  r‰   r›   )
rl  rC  r¹   rx  r!  rl  r  Úembedding_featuresrã  r  s
             r6   Ú.meta_embedding_bag_per_sample_weights_backwardr
  ,  s«   € ð Ÿ™ 1›ÐÜ	‡L‚LØ”ÑÙZôô 
‡L‚L�—‘“˜q‘Ô!Ü	‡L‚L�—‘“ !Ñ#Ô$Ø—,‘,˜q“/€KÜ	‡L‚L�—‘“ Ñ"Ô#Ü	‡L‚L�—‘˜Q“Ð#5Ñ5Ô6Ø�^‰^˜[˜NÓ+€FØ€Mr8   )Úassume_uniqueÚinvertc                óâ  • [         R                  " [        U [        5      =(       d    [        U[        5      S 5        [        U [        5      (       d  [         R                  " XR
                  S9n [        U[        5      (       d  [         R                  " XR
                  S9n[        U R                  5        [        UR                  5        [         R                  " U [         R                  S9$ )Nc                  ó   • g)Nz<At least one of elements and test_elements must be a Tensor.r2   r2   r8   r6   re   Úmeta_isin.<locals>.<lambda>I  r÷  r8   r­  r“   )
rV   rh   rr   r   r:  r†   rú	  r^   r´   r  )ÚelementsÚtest_elementsr
  r
  s       r6   Ú	meta_isinr
  D  sœ   € ô 
‡L‚LÜ�8œVÓ$×I¬
°=Ä&Ó(IÙNôô �h¤×'Ñ'Ü—<’< ×1EÑ1EÑFˆä�m¤V×,Ñ,ÜŸš ]¿?¹?ÑKˆä% h§n¡nÔ5Ü% m×&9Ñ&9Ô:Ü×Ò˜H¬E¯J©JÑ7Ð7r8   r  c                 ó”   • [         R                  " U S:¬  S 5        [        U[        R                  S9u  p#[         R
                  " XS9$ )Nr   c                  ó   • g)Nz,polygamma(n, x) does not support negative n.r2   r2   r8   r6   re   Ú meta_polygamma.<locals>.<lambda>Y  s   € Ð!Or8   r™  r“   )rV   rh   r   r   rš  r´   )r  r�   rR   rS   s       r6   Úmeta_polygammar
  V  sB   € ô 
‡L‚L��a‘ÑOÔPÜ(ØÜ;×HÑHñ�O€Aô ×Ò˜DÑ5Ð5r8   c                 ó   • [        S5      e)Nz.Tensor.item() cannot be called on meta tensors)r0  r¶   s    r6   Úmeta_local_scalar_denser
  a  s   € ä
ÐGÓ
HÐHr8   c                 ó.   • [         R                  " U 5      $ rB   r:  r¶   s    r6   Úsilur
  f  r™  r8   c                 ó^   • [        U [        R                  S9u  p[        R                  " XS9$ r˜  )r   r   rš  rV   r´   )r�   rR   rS   s      r6   Úsigmoidr
  l  s/   € ô )ØÜ;×HÑHñ�O€Aô ×Ò˜DÑ5Ð5r8   c                 ó|  • U R                  5       S:H  nUR                  5       S:H  nU(       a—  U(       a4  UR                  S5      U R                  S5      UR                  S5      /nGO*[        R                  " UR                  S5      UR                  S5      :H  S 5        U R                  S5      UR                  S5      /nOÎU(       a\  [        R                  " UR                  S5      U R                  S5      :H  S 5        U R                  S5      UR                  S5      /nOk[        R                  " U R                  S5      UR                  S5      :H  S 5        U R                  S5      U R                  S5      UR                  S5      /nU=(       d    U R                  n[        R
                  R                  (       aV  SUR                  -  nUS   U-   S-
  U-  U-  nXE:X  a  US   U-  US/n	OUS/n	[        R                  " XiX0R                  S	9n
U
$ [        R                  " XcU R                  S	9n
U
$ )
Nrö   r   r1   c                  ó   • g©Nz matrix batch sizes have to matchr2   r2   r8   r6   re   Ú2_create_grouped_mm_output_tensor.<locals>.<lambda>  ó   € Ð6Xr8   rŸ   c                  ó   • gr!
  r2   r2   r8   r6   re   r"
  …  r#
  r8   c                  ó   • g)Nzbatched dimension has to matchr2   r2   r8   r6   re   r"
  ‹  s   € Ð6Vr8   ri  rú  )r‰   r¨   rV   rh   r^   r·  rú   Úitemsizer2  r†   rŽ   )rP  rR  ÚoffsrG  Ú
mat1_is_2dÚ
mat2_is_2drQ	  Ú	alignmentÚsize_paddedr	  rÔ   s              r6   Ú _create_grouped_mm_output_tensorr,
  v  sÊ  € Ø—‘“˜q‘€JØ—‘“˜q‘€JæÞØŸ	™	 !› d§i¡i°£l°D·I±I¸a³LÐAŠHä�LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Xôð Ÿ	™	 !› d§i¡i°£mÐ4‰HæÜ�LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Xôð Ÿ	™	 !› d§i¡i°£lÐ3‰Hô �LŠLØ—	‘	˜!“ §	¡	¨!£Ñ,Ñ.Vôð Ÿ	™	 !› d§i¡i°£l°D·I±I¸b³MÐBˆHà×'˜TŸZ™Z€Iä‡}�}××Ø˜)×,Ñ,Ñ,ˆ	Ø ‘| iÑ/°!Ñ3¸	ÑAÀIÑMˆØÓ#Ø" 1™+¨Ñ3°[À!ÐD‰Jà% qÐ)ˆJÜ×!Ò!Ø¨	¿+¹+ñ
ˆð
 €Jô �kŠk˜(¸D¿K¹KÑHˆØ€Jr8   Úmat_aÚmat_br'
  c	                 óü  ^ ^^^^^• [         R                  " TS L TS L :H  S 5        TS L=(       a    TS Ln	U	(       a  [         R                  R                  (       a  [         R                  O[         R
                  n
[         R                  " T R                  U
:H  =(       a    TR                  U
:H  U U4S j5        O[[         R                  " T R                  [         R                  :H  =(       a    TR                  [         R                  :H  U U4S j5        [         R                  " T R                  5       S;   =(       a    TR                  5       S;   U U4S j5        T R                  5       S:H  nTR                  5       S:H  nU(       a  U(       d9  [         R                  " T R                  S5      TR                  S5      :H  S	 5        U	(       aH  S
 nS n[         R                  " U" T 5      U 4S j5        [         R                  " U" T5      U4S j5        S nU" ST 5        U" ST5        TGbD  TGb@  [         R                  " TR                  [         R                  :H  =(       a    TR                  [         R                  :H  =(       dA    TR                  [         R                  :H  =(       a    TR                  [         R                  :H  UU4S j5        TR                  [         R                  :H  =(       a    TR                  [         R                  :H  mSU4S jjnTb  U(       a  U(       a  TR                  S   OSnU" STT SU5        U" STTSU5        [         R                  " US L S 5        U(       d  U(       a„  [         R                  " TS LU U4S j5        Tbb  [         R                  " TR                  5       S:H  U4S j5        [         R                  " TR                  [         R                  :H  U4S j5        O[         R                  " TS L S 5        [         R                  " US L S 5        [         R                  " US L =(       d    U[         R                  :H  S 5        [        T TTU5      $ )Nc                  ó   • g)Nz,Either both scale factors are given, or noner2   r2   r8   r6   re   Ú)_meta_grouped_mm_common.<locals>.<lambda>­  s   € Ð>r8   c                  ó>   >• ST R                    STR                    S3$ )Nz5Expected inputs of E4M3 FP8 type but got mat_a.dtype=ú and mat_b.dtype=rù  r“   ©r-
  r.
  s   €€r6   re   r1
  ¹  s#   ø€ ÐKÈEÏKÉKÈ=ÐXiÐjo×juÑjuÐivÐvwÑxr8   c                  ó>   >• ST R                    STR                    S3$ )Nz1Expected inputs of BF16 type but got mat_a.dtype=r3
  rù  r“   r4
  s   €€r6   re   r1
  ¾  s#   ø€ ÐGÈÏÉÀ}ÐTeÐfk×fqÑfqÐerÐrsÑtr8   )rö   r.   c                  óL   >• ST R                  5        STR                  5        3$ )Nz3Multiplicands must be 2D or 3D but got mat_a.dim()=z and mat_b.dim()=r    r4
  s   €€r6   re   r1
  Ã  s%   ø€ ÐEÀeÇiÁiÃkÀ]ÐRcÐdi×dmÑdmÓdoÐcpÑqr8   rö   rŸ   rÄ  c                  ó   • g)Nz3contraction dimension of mat_a and mat_b must matchr2   r2   r8   r6   re   r1
  Ì  r5  r8   c                 óP   • U R                  5       nUS   S:„  =(       a    US   S:H  $ ©NrÄ  r1   rŸ   r  ©ÚmatÚ
mat_strides     r6   rO  Ú-_meta_grouped_mm_common.<locals>.is_row_majorÑ  s*   € ØŸ™›ˆJØ˜b‘> AÑ%×=¨*°R©.¸AÑ*=Ð=r8   c                 óP   • U R                  5       nUS   S:H  =(       a    US   S:„  $ r9
  r  r:
  s     r6   rS  Ú-_meta_grouped_mm_common.<locals>.is_col_majorÕ  s*   € ØŸ™›ˆJØ˜b‘> QÑ&×=¨:°b©>¸AÑ+=Ð=r8   c                  ó0   >• ST R                  5       SS   3$ )NzNExpected mat_a tensor to be row major in the last two dimensions, got strides rÄ  r  )r-
  s   €r6   re   r1
  Û  s!   ø€ ÐdÐej×eqÑeqÓesÐtvÐtwÐexÐdyÑzr8   c                  ó0   >• ST R                  5       SS   3$ )NzQExpected mat_b tensor to be column major in the last two dimensions, got strides rÄ  r  )r.
  s   €r6   re   r1
  ß  s!   ø€ ÐgÐhm×htÑhtÓhvÐwyÐwzÐh{Ðg|Ñ}r8   c                 ó  ^ ^^^• TR                  5       S-
  mSTR                  5       -  nTR                  5       mTTS-
     S:X  aJ  TT   [        STR                  TS-
     5      :¼  a'  [
        R                  " TT   U-  S:H  UU U4S j5        g TT   S:X  aM  TTS-
     [        STR                  T   5      :¼  a*  [
        R                  " TTS-
     U-  S:H  UU U4S j5        g [
        R                  " SUU4S j5        g )Nr1   ri  r   c                  ó"   >• ST ST  STT     S3$ )Nrå  ú stride along ú% dim to be multiple of 16 bytes, got rù  r2   ©Úend_dimÚmat_namer<
  s   €€€r6   re   ÚF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>ë  s'   ø€ ˜) H :¨^¸G¸9ÐDiÐjtÐu|Ñj}Ði~Ð~ñ  Ar8   c                  ó.   >• ST ST S-
   STT S-
      S3$ )Nrå  rD
  r1   rE
  rù  r2   rF
  s   €€€r6   re   rI
  ò  sI   ø€ ˜) H :¨^¸GÀa¹K¸=ÐHmÐnxð  zAð  DEñ  zEñ  oFð  nGð  GHñ  Ir8   Fc                  ó*   >• ST ST R                    S3$ )NzInvalid strides/sizes, got z for strides and z for sizes.rD  r:
  s   €€r6   re   rI
  ÷  s   ø€ Ð5°j°\ÐARÐSV×S\ÑS\ÐR]Ð]hÑir8   )r‰   Úelement_sizerÍ   r³  rœ   rV   rh   )rH
  r;
  r*
  rG
  r<
  s   `` @@r6   Úcheck_valid_stridesÚ4_meta_grouped_mm_common.<locals>.check_valid_stridesâ  s   û€ Ø—'‘'“)˜a‘-ˆØ˜#×*Ñ*Ó,Ñ,ˆ	Ø—Z‘Z“\ˆ
Ø�g ‘kÑ" aÓ'¨J°wÑ,?Ä3Øˆs�y‰y˜ 1™Ñ%óD
ó -
ô �LŠLØ˜7Ñ# iÑ/°1Ñ4ö Aõð ˜Ñ  AÓ%¨*°W¸q±[Ñ*AÄSØˆs�y‰y˜Ñ!óF
ó +
ô �LŠLØ˜7 Q™;Ñ'¨)Ñ3°qÑ8ö Iõô
 �LŠLØÝiõr8   r-
  r.
  c                  ó>   >• ST R                    STR                    S3$ )NzhFor FP8 scales must both be float32, or for MXFP8 both scales must be float8_e8m0fnu. Got scale_a.dtype=z and scale_b.dtype=rù  r“   rr  s   €€r6   re   r1
    sR   ø€ Ð~ð  @G÷  @Mñ  @Mð  Nð  Nað  bi÷  boñ  boð  apð  pqñ  rr8   r1   c                 ó   >^ ^^^^^^	^
• TR                  5       S:X  aÚ  [        R                  " TR                  5       U 4S j5        T(       a=  [        R                  " TR                  5       TR                  5       :H  UUU 4S j5        g [        R                  " TR                  5       S:H  UU 4S j5        [        R                  " TR                  S   TR                  T   T-  :H  UUUU U4S j5        g [        R                  " TR                  S5      S:H  U 4S	 j5        [        R                  " TR                  S   TR                  S   :H  UUU 4S
 j5        T(       a®  [        R                  " TR                  TR                  S-
  :H  UUU 4S j5        TR                  u  mpVSn[        XW-  S5      m	[        US5      m
[        R                  " TR                  S   T:H  =(       a    TR                  S   T	T
-  :H  UU	U
UU4S j5        g [        R                  " TR                  5       S:H  UU 4S j5        [        R                  " TR                  S   TR                  ST-      :H  UUU U4S j5        g )Nrö   c                  ó   >• ST  S3$ )Nrå  z to be contiguous.r2   ©Ú
scale_names   €r6   re   Ú>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>  s   ø€ ˜i¨
 |Ð3EÑFr8   c                  óB   >• ST ST R                    STR                    3$ )NzKFor MXFP8, scale must have same number of dimensions as target tensor, but ú has mat.ndim=ú and scale.ndim=r  ©r;
  r¢  rS
  s   €€€r6   re   rT
    sX   ø€ Ð"mÐnxÐmyð  zHð  IL÷  IQñ  IQð  HRð  Rbð  ch÷  cmñ  cmð  bnñ  !or8   r1   c                  ó2   >• ST ST R                  5        S3$ )Nrå  z to be 1D tensor, but got ú	D tensor.r    ©r¢  rS
  s   €€r6   re   rT
    ó!   ø€  )¨J¨<Ð7QÐRW×R[ÑR[ÓR]ÐQ^Ð^gÑ hr8   r   c                  óV   >• ST ST R                   T   T-   STR                   S    S3$ )Nrå  z	 to have rm  r   z
 elements.rD  )r;
  r¢  Úscale_multiplierrS
  Ú
scaled_dims   €€€€€r6   re   rT
  !  sU   ø€  )¨J¨<°yÀÇÁÈ:ÑAVÐYiÑAiÐ@jÐjyÐz÷  {Fñ  {Fð  GHñ  {Ið  zJð  JTñ  !Ur8   rŸ   c                  ó   >• ST  S3$ )Nrå  z( to be contiguous in the last dimension.r2   rR
  s   €r6   re   rT
  &  s   ø€ ˜i¨
 |Ð3[Ñ\r8   c                  óP   >• ST ST R                   S    STR                   S    S3$ )Nrå  z batch dimension to be r   ú, got rù  rD  rX
  s   €€€r6   re   rT
  *  s4   ø€ ˜i¨
 |Ð3JÈ3Ï9É9ÐUVÉ<È.ÐX^Ð_d×_jÑ_jÐklÑ_mÐ^nÐnoÑpr8   c                  óB   >• ST ST R                    STR                    3$ )Nz0For MXFP8, 3d tensor should have 2d scales, but rV
  rW
  r  rX
  s   €€€r6   re   rT
  1  sD   ø€ Ð"RÐS]ÐR^Ð^lÐmp×muÑmuÐlvð  wGð  HM÷  HRñ  HRð  GSñ  !Tr8   rj  r#  r´  c                  óN   >• STR                    ST  STT-   STR                    3$ )NzFor MXFP8, expected mat.shape=z to have scale shape of (Ú,z), but got rD  )ÚGÚ	blocked_KÚ	blocked_Nr;
  r¢  s   €€€€€r6   re   rT
  ;  sO   ø€ Ð"@ÀÇÁÀÐKdÐefÐdgÐghÐirÐu~Ñi~Ðhð  @Kð  LQ÷  LWñ  LWð  KXñ  !Yr8   c                  ó2   >• ST ST R                  5        S3$ )Nrå  z to be 2D tensor, but got rZ
  r    r[
  s   €€r6   re   rT
  @  r\
  r8   c                  óV   >• ST ST R                   ST-       STR                   S    S3$ )Nrå  z non-batch dimension to be r1   rb
  rù  rD  )r;
  r¢  rS
  r_
  s   €€€€r6   re   rT
  D  sR   ø€  )¨J¨<Ð7RÐSV×S\ÑS\Ð]^ÐakÑ]kÑSlÐRmÐmsÐty×tÑtð  ABñ  uCð  tDð  DEñ  !Fr8   )r‰   rV   rh   re  rœ   rÍ   rª   r=   )rS
  r¢  r;
  r_
  r^
  r»  r´  rÉ  rf
  rg
  rh
  Úis_mxfp8s   `````   @@@€r6   Úcheck_scaleÚ,_meta_grouped_mm_common.<locals>.check_scale  sâ  ÿø€ Ø�w‰w‹y˜A‹~Ü—’Ø×'Ñ'Ó)ÜFôö Ü—L’LØŸ	™	› s§w¡w£yÑ0ö oõô
 —L’LØŸ	™	› qÑ(Ýhôô —L’LØŸ™ A™¨#¯)©)°JÑ*?ÐBRÑ*RÑR÷ Uð  Uõô
 —’Ø—L‘L Ó$¨Ñ)Ü\ôô —’Ø—K‘K ‘N c§i¡i°¡lÑ2Þpôö Ü—L’LØŸ
™
 c§h¡h°¡lÑ2ö Tôð "Ÿi™i‘G�A�qØ!#�JÜ (¨©¸Ó ;�IÜ (¨¨CÓ 0�IÜ—L’LØŸ™ A™¨!Ñ+×W°·±¸A±À)ÈiÑBWÑ0W÷ Yð  Yõô
 —L’LØŸ	™	› qÑ(Ýhôô —L’LØŸ™ A™¨#¯)©)°A¸
±NÑ*CÑC÷ Fõr8   r   r8  r9  c                  ó   • g)Nz:Scale result tensor provided, but it is not supported yet.r2   r2   r8   r6   re   r1
  O  ro   r8   c                  óN   >• ST R                  5        STR                  5        S3$ )Nz/Offsets tensor not provided, but is needed for zD/zD multiplicand layouts.r    r4
  s   €€r6   re   r1
  U  s(   ø€ ÐEÀeÇiÁiÃkÀ]ÐRTÐUZ×U^ÑU^ÓU`ÐTaÐaxÑyr8   c                  ó,   >• ST R                  5        S3$ )Nz.Offsets tensor must be 1D, but got offs.dim()=rù  r    ©r'
  s   €r6   re   r1
  Z  s   ø€ ÐHÈÏÉËÈÐTUÑVr8   c                  ó$   >• ST R                    S3$ )Nz7Offsets tensor must be integer (int32) tensor, but got rù  r“   rq
  s   €r6   re   r1
  ^  s   ø€ ÐQÐRV×R\ÑR\ÐQ]Ð]^Ñ_r8   c                  ó   • g)NzJOffsets tensor provided, but is not needed for 3D/3D multiplicand layouts.r2   r2   r8   r6   re   r1
  c  s   € Ð`r8   c                  ó   • g)Nz2Bias tensor provided, but it is not supported yet.r2   r2   r8   r6   re   r1
  h  s   € ÐDr8   c                  ó   • g)Nz4If output dtype provided, it must be torch.bfloat16.r2   r2   r8   r6   re   r1
  m  s   € ÐFr8   r'  )rV   rh   r·  r¸  r@  rd  r^   rc  r‰   r¨   ra  rx  rœ   rK  r,
  )r-
  r.
  r8  r9  r'
  rE  r:  rG  r;  ÚscaledÚ	fp8_dtypeÚmat_a_is_2dÚmat_b_is_2drO  rS  rM
  rl
  r^
  rk
  s   `````             @r6   Ú_meta_grouped_mm_commonrz
     s]  ý€ ô 
‡L‚LØ	�Dˆ˜g¨˜oÑ.Ù>ôð ˜DÐ ×8 W°DÐ%8€Fö Ü-2¯]©]×->×->”E×)Ò)ÄE×DWÑDWˆ	Ü�ŠØ�K‰K˜9Ñ$×A¨¯©¸	Ñ)AÝxõ	
ô
 	�ŠØ�K‰Kœ5Ÿ>™>Ñ)×K¨e¯k©k¼U¿^¹^Ñ.KÝtô	
ô
 
‡L‚LØ�	‰	‹�vÑ×7 %§)¡)£+°Ñ"7Ýqôð
 —)‘)“+ Ñ"€KØ—)‘)“+ Ñ"€KæžkÜ�ŠØ�J‰J�r‹N˜eŸj™j¨›nÑ,ÙIô	
ö
 ò	>ò	>ô 	�ŠÙ˜ÓÜzô	
ô 	�ŠÙ˜ÓÜ}ô	
ò
ñ0 ˜ Ô'Ù˜ Ô'àÒ˜wÒ2Ü�ŠØ�]‰]œeŸm™mÑ+×N°·±ÄÇÁÑ0N÷ à—‘¤×!5Ñ!5Ñ5÷ :Ø—M‘M¤U×%9Ñ%9Ñ9õ rô	
ð �M‰MœU×1Ñ1Ñ1÷ 6Ø—‘¤×!5Ñ!5Ñ5ð 	÷
:	ðz "Ñ-¶+Æ+ˆD�J‰J�qŠMÐSTð 	ñ 	�I˜w¨¨qÐ2BÔCÙ�I˜w¨¨qÐ2BÔCä�ŠØ˜DÐ ÙPô	
ö
 –kÜ�ŠØ˜ÐÝyô	
ð ÑÜ�LŠLØ—‘“
˜a‘ÜVôô �LŠLØ—
‘
œeŸk™kÑ)Ü_ôøô
 	�ŠØ�DˆLÙ`ô	
ô
 
‡L‚LØ�ˆÙDôô
 
‡L‚LØ�TÐ×8˜Y¬%¯.©.Ñ8ÙFôô
 ,¨E°5¸$À	ÓJÐJr8   c                 ó"   • [        U US S UUS US9$ )N)r8  r9  r'
  rE  r:  rG  )rz
  )r-
  r.
  r'
  rE  rG  s        r6   Úmeta_grouped_mmr|
  s  s)   € ô #ØØØØØØØØñ	ð 	r8   c	                 óV   • U=(       d    [         R                  n[        U UUUUUUUUS9	$ )N)r8  r9  r'
  rE  r:  rG  r;  )rV   rc  rz
  )	r-
  r.
  r8  r9  r'
  rE  r:  rG  r;  s	            r6   Úmeta_scaled_grouped_mmr~
  ˆ  s:   € ð ×+œUŸ^™^€Iä"ØØØØØØØ!ØØ%ñ
ð 
r8   r;   Úhalf_to_floatc                 ó.  • U(       a0  U R                   [        R                  [        R                  4;   d   e[        R
                  " U [        R                  R                  S9u  p4U(       d  UOUn[        R                  " X[        R                  S9nU$ )Nr™  r»	  )
r^   rV   rX   rc  rO   r   r   rP   r´   rµ   )r;   r‰   r
  Úcomputation_dtyperS   r­  s         r6   Úsoftmaxr‚
  ¤  st   € ö Ø�w‰wœ5Ÿ:™:¤u§~¡~Ð6Ó6Ð6Ð6ä&+×&>Ò&>Ø	œu×DÑD×LÑLñ'Ñ#Ðö (5‘<Ð:K€LÜ
×
Ò
˜1Ä×@WÑ@WÑ
X€CØ€Jr8   c           	      óÐ  ^^^^	^
^• [         R                  " [        T5      S-  S:H  U4S j5        U R                  m[        T5      m
[        T5      S-  nT
U-
  m	[         R                  " T
U:¬  U
U4S j5        [	        S T 5       5      (       aš  U n[        T	T
5       Hx  mST
T-
  S-
  -  mTT   S:  a*  UR                  TTT   * UR                  T   TT   -   5      nTTS-      S:  d  MO  UR                  TSUR                  T   TTS-      -   5      nMz     UR                  5       $ [        TS T	 5      n[        U5       Ha  m[        T5      TS-   S-  -
  mTT	T-      TT   -   TTS-      -   n[         R                  " US:¬  UUU	UU4S j5        UR                  U5        Mc     [         R                  " UU R                  U R                  U R                  [        U 5      S9$ )	Nrö   r   c                  ó    >• S[        T 5       3$ )Nz1Length of pad must be even but instead it equals rá  r°  s   €r6   re   Ú'_constant_pad_nd_meta.<locals>.<lambda>¹  s   ø€ ÐCÄCÈÃHÀ:ÑNr8   c                  ó(   >• S[        T5       ST  S3$ )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has z dimensions.rá  )Úl_inpr±  s   €€r6   re   r…
  Ã  s    ø€ ð 2Ü25°c³(°Ð;PØˆ'�ñr8   c              3   ón   #   • U  H+  n[        U[        R                  5      =(       a    US :*  v •  M-     g7frò  )rr   rO   ÚIntWithoutSymInt)rt   rg  s     r6   rv   Ú(_constant_pad_nd_meta.<locals>.<genexpr>È  s)   é € Ð
IÂSÀŒ:�aœ×/Ñ/Ó0×;°Q¸!±VÔ;ÂSùs   ‚35r1   c            	      óF   >• STTT -       STT    STTS-       STT -    S3	$ )NzThe input size z, plus negative padding r¦   r1   zG resulted in a negative output size, which is invalid. Check dimension z of your input.r2   )rä   r  Úl_diffr±  Úpad_idxs   €€€€€r6   re   r…
  Ü  sE   ø€ �o k°&¸1±*Ñ&=Ð%>Ð>VØ�7‰|ˆn˜E # g°¡kÑ"2Ð!3ð 41Ø17¸!±°¸OñMr8   )r^   r†   rˆ   r±   )rV   rh   rÉ   rœ   r¤  rË   Únarrowrò   rÊ   rÌ   rŽ   r^   r†   rˆ   r   )rà   r±  r€  Úl_padÚc_inputÚ	new_shapeÚnew_dimrä   r  rŒ
  r‡
  r�
  s    `     @@@@@r6   Ú_constant_pad_nd_metar“
  ³  sä  ý€ ô 
‡L‚LÜˆC‹�1‰˜ÑÜNôð
 —+‘+€KÜ�Ó€EÜ�‹H˜‰M€EØ�U‰]€Fä	‡L‚LØ�‰õ	ôô Ñ
IÁSÓ
I×IÑIØˆÜ�v˜uÖ%ˆAØ˜5 1™9 q™=Ñ)ˆGØ�7‰|˜aÓØ!Ÿ.™.Ø˜˜G™�} g§m¡m°AÑ&6¸¸W¹Ñ&Eó�ð �7˜Q‘;Ñ !Õ#Ø!Ÿ.™.¨¨A¨w¯}©}¸QÑ/?À#ÀgÐPQÁkÑBRÑ/RÓS’ñ &ð �}‰}‹Ðä�[  &Ð)Ó*€IÜ�5Ž\ˆÜ�c“(˜q 1™u¨™kÑ*ˆØ˜f q™jÑ)¨C°©LÑ8¸3¸wÈ¹{Ñ;KÑKˆÜ�ŠØ�q‰L÷Mð Mô	
ð 	×Ñ˜Ö!ñ ô �;Š;ØØ�k‰kØ�|‰|Ø×)Ñ)Ü+¨EÓ2ñð r8   r  r  r  c                 ó  • U R                  5       S:X  d   S5       eU R                  nUR                  nUR                  S:X  a  US   4nO%UR                  S:X  a  US   US   4nO
/ UQUS   P7nU R                  nU R	                  XxS9$ )Nrö   z'weight' must be 2-Dr   r1   r“   )r‰   rœ   rª   r^   r›   )	rC  r¹   r  r  r  Úweight_shapeÚindices_shaper­   rG  s	            r6   Ú	embeddingr—
  ë  s—   € ð �:‰:‹<˜1ÓÐ4Ð4Ó4ÐØ—<‘<€LØ—M‘M€Mà‡|�|�qÓØ&2°1¡oÐ%7‰	Ø	�‰˜Ó	Ø" 1Ñ% |°A¡Ð7‰	à5�mÐ5 \°!¡_Ñ5ˆ	à—‘€IØ×Ñ˜IÐÐ7Ð7r8   Úmax_lengthsÚpadding_valuec                 óÂ   • [        U5      S:X  d   e[        U5      S:X  d   eUS   R                  S   S-
  nUS   nXE/U R                  SS  Q7nU R                  U5      $ rí  )rÉ   rœ   r›   )r¸   rx  r˜
  r™
  rß  rˆ  rh  s          r6   Ú$meta__jagged_to_padded_dense_forwardr›
     st   € ô ˆw‹<˜1ÓÐÐÜˆ{Ó˜qÓ Ð Ð à�‰
×Ñ˜Ñ˜aÑ€AØ�A‰€AØÐ,˜6Ÿ<™<¨¨Ð+Ñ,€LØ×Ñ˜LÓ)Ð)r8   c                 óB   • [        U 5      [        5       S 5       5       nU$ )Nc                 ó2   • [        U [        R                  S9$ rï  ©rT   r   rš  r5  s    r6   Ú_fÚ)_create_unary_float_meta_func.<locals>._f   s   € ô  ØÔ=×JÑJñ
ð 	
r8   ©rK   r"   ©ÚfuncrŸ
  s     r6   Ú_create_unary_float_meta_funcr¤
     ó*   € Ü�4ÓÜƒ]ñ
ó ó ð
ð
 €Ir8   c                 ó(  • U R                   (       d"  UR                   (       d  UR                   (       a  [        S5      eU R                  5       S:X  a,  U R                  U R                  5      U R                  S5      4$ U R                  S5      nU R                  S5      nUR                  S5      nU R                  XÞU5      nU
(       a4  U(       a  U R                  XÞU5      nUU4$ U R                  XÔXî5      n UU4$ U R                  S5      nUU4$ )NzP_native_multi_head_attention fake implementation does not support nested tensorsr   r1   )Ú	is_nestedrƒ  rš   r›   rœ   r¨   )r®  rÇ   r€  Ú	embed_dimrø  Ú
qkv_weightÚqkv_biasÚproj_weightÚ	proj_biasrª  Úneed_weightsÚaverage_attn_weightsÚ	mask_typerß  ÚTÚ
output_dimr  Úattn_weightss                     r6   Ú native_multi_head_attention_faker³
      só   € ð  ‡‡˜#Ÿ-Ÿ-¨5¯?¯?Ü!Ø^ó
ð 	
ð ‡{�{ƒ}˜ÓØ—‘ §¡Ó,¨e¯o©o¸aÓ.@ÐAÐAà�
‰
�1‹€AØ�
‰
�1‹€Að ×!Ñ! !Ó$€JØ�_‰_˜Q :Ó.€FæÞð !Ÿ?™?¨1°Ó3ˆLð �LÐ!Ð!ð	 !Ÿ?™?¨1¸Ó=‰Lð �LÐ!Ð!ð —‘ qÓ)ˆà�LÐ!Ð!r8   c                 óB   • [        U 5      [        5       S 5       5       nU$ )Nc                 ó2   • [        X[        R                  S9$ rï  rž
  r:   s     r6   rŸ
  Ú*_create_binary_float_meta_func.<locals>._fR   s   € ô  ØÔ!@×!MÑ!Mñ
ð 	
r8   r¡
  r¢
  s     r6   Ú_create_binary_float_meta_funcr·
  Q   r¥
  r8   c                 ó˜   ^ • [        T 5      U 4S j5       nT R                   S3nX!l        [        [        [        U5      5      " U5      nU$ )Nc                 ó`   >• T" U /UQ70 UD6n[        U R                  UR                  5        U $ rB   r  )r�   rQ   r6  rÔ   rD   s       €r6   Ú_fnÚ#_register_inplace_meta.<locals>._fnv   s.   ø€ á�Ð'˜Ò' Ñ'ˆÜ §
¡
¨C¯I©IÔ6Øˆr8   rR   )r   r~   rK   Úgetattrr+   )rD   rº
  Úinplace_names   `  r6   Ú_register_inplace_metar¾
  u   sK   ø€ Ü
ˆ2ƒYôó ðð
 —k‘k�] !Ð$€LØ„LÜ
œ¤ lÓ3Ô
4°SÓ
9€Cà€Jr8   c                 óz  ^ ^^• [         R                  " T R                  TR                  :H  UU 4S j5        T T/n[        T[        5      (       aT  TR
                  S:w  a3  [         R                  " T R                  TR                  :H  U U4S j5        UR                  T5        [        US[        R                  06$ )Nc                  ó<   >• STR                    ST R                    3$ )Nr¿  z for `end`, but got dtype r“   )r   r€   s   €€r6   re   Úlerp.<locals>.<lambda>ˆ   s   ø€ �/ %§+¡+ Ð.HÈÏÉÈÑTr8   r   c                  ó<   >• ST R                    STR                    3$ )Nr¿  z for `weight`, but got dtype r“   )r€   rC  s   €€r6   re   rÁ
  �   s   ø€ ˜/¨%¯+©+¨Ð6SÐTZ×T`ÑT`ÐSaÑbr8   rL   )
rV   rh   r^   rr   r   rª   rÌ   rT   r   rP   )r€   r   rC  rQ   s   ``` r6   ÚlerprÃ
  ƒ   s“   ú€ ô 
‡L‚LØ�‰�s—y‘yÑ ÝTôð �3ˆ<€DÜ�&œ*×%Ñ%Ø�;‰;˜!ÓÜ�LŠLØ—‘˜vŸ|™|Ñ+Ýbôð 	�‰�FÔÜØ	ðÜ=×EÑEñð r8   )r€  c                ó4   • [        XU[        R                  S9$ rï  rQ  ©rà   Útensor1Útensor2r€  s       r6   ÚaddcmulrÈ
  —   s   € ô Ø˜Ô0O×0WÑ0Wñð r8   c                óø   • [         R                  " [        R                  " UR                  5      =(       a     [        R                  " UR                  5      (       + S 5        [        XU[        R                  S9$ )Nc                  ó   • g)N)zFInteger division with addcdiv is no longer supported, and in a future zErelease addcdiv will perform a true division of tensor1 and tensor2. z4The historic addcdiv behavior can be implemented as zA(input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype) zfor integer inputs and as z6(input + value * tensor1 / tensor2) for float inputs. z?The future addcdiv behavior is just the latter implementation: z4(input + value * tensor1 / tensor2), for all dtypes.r2   r2   r8   r6   re   Úaddcdiv.<locals>.<lambda>§   s   € ð 	
r8   rð  )rV   rh   rO   rI  r^   rT   r   rP   rÅ
  s       r6   ÚaddcdivrÌ
  Ÿ   s`   € ô 
‡L‚Lä×"Ò" 7§=¡=Ó1÷ 6Ü×&Ò& w§}¡}Ó5ô	
ñ		
ôô  Ø˜Ô0O×0WÑ0Wñð r8   c                  ó   • 0 n S H"  n[         U   nU H  nX0;  d  M
  X#   X'   M     M$     U R                  5        GH¿  u  pE[        U[        R                  R
                  5      (       a  M1  [        U[        5      (       d   eUR                  [        R                  R                  R                  5      " U5        [        R                  R                  UR                  5       S5      (       a  U[         S   ;   a  [        U S35      eMÑ  UR                  (       a  Mä  UR                  5       S;   a  Mú  SUR                  5       ;   a  [        R!                  XE5        GM&  SUR                  5       ;   a  ["        R!                  XE5        GMR  SUR                  5       ;   a  [$        R!                  XE5        GM~  S	UR                  5       ;   a  [&        R!                  XE5        GMª  [(        R!                  XE5        GMÂ     g )
N)rƒ   Úpost_autogradÚpre_autogradÚCompositeImplicitAutogradrƒ   z« is a CompositeImplicitAutograd op, we shouldn't register meta function for it. Instead, we should let the decomposition run and write meta kernels for the base operators.>   úaten::cloneúaten::copy_úaten::rot90úaten::_to_copyúaten::empty_stridedúaten::constant_pad_ndúaten::as_strided_scatterzmkldnn::zmkl::zonednn::zquantized::)r   Úitemsrr   rV   Ú_opsÚHigherOrderOperatorr   Úpy_implÚ_CÚDispatchKeyr-   Ú%_dispatch_has_kernel_for_dispatch_keyrÈ  r0  Úis_viewÚ2_meta_lib_dont_use_me_use_register_meta_for_mkldnnÚimplÚ/_meta_lib_dont_use_me_use_register_meta_for_mklÚ2_meta_lib_dont_use_me_use_register_meta_for_onednnÚ5_meta_lib_dont_use_me_use_register_meta_for_quantizedÚ'_meta_lib_dont_use_me_use_register_meta)Úactivate_meta_tabler}   ÚregistryÚopoÚop_overloadrD   s         r6   Úactivate_metarê
  Ã   sµ  € ØÐó :ˆÜ-¨dÑ3ˆãˆCØÕ-Ø+3©=Ð#Ó(ó ñ :ð /×4Ñ4×6‰ˆô
 �k¤5§:¡:×#AÑ#A×BÑBÙÜ˜+¤z×2Ñ2Ð2Ð2à×ÑœEŸH™H×0Ñ0×5Ñ5Ô6°rÔ:ä�8‰8×9Ñ9Ø×ÑÓÐ ;÷
ñ 
ð Ô8¸Ñ@Ó@Ü"Ø"�mð $;ð ;óð ñ Að × × ñ à×ÑÓðó	ñ à˜[×-Ñ-Ó/Ó/ÜB×GÑGÈ×XØ˜K×,Ñ,Ó.Ó.Ü?×DÑDÀ[×UØ˜{×/Ñ/Ó1Ó1ÜB×GÑGÈ×XØ +×"2Ñ"2Ó"4Ó4ÜE×JÑJØ÷ô 8×<Ñ<¸[×Mòm 7r8   )Fr”	  rB   )NNNFr   r1   rŸ   r  )TrÐ  )rä  )rî  T)FF)TT)rn  )FTN)TFF)TF)rö   )g      à?N)r>   Ústr)r2   ræ  r'  F)r2   ræ  FTN)Fr   FNFrŸ   )NF)rŸ   F)g      À?gUUUUUUÕ?FN)NNNNN)r   NNr1   )NNF)ç        FFN)Nrì
  FFN)rì
  FNN)Nrì
  FNN)rì
  FN)FN)FNNNN)NNNF)NNNNF)NrŸ   FNN)NNNN)rŸ   TT)NNr   N)éd   r   r   )rŸ   )rŸ   FF)rì
  )NTTN(¥  r÷  Úcollections.abcr   r   Úenumr   Ú	functoolsr   Útypingr   Útyping_extensionsr   rV   Útorch._prims_commonrØ  rO   r	   r
   r   Útorch._decompr   r   r   r   Ú
torch._opsr   Útorch._primsr   r   r   r   r   r   r   r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r    r!   r"   r  r#   r$   Útorch.fx.experimentalr%   r‡  Útorch.nn.functionalr&   r'   Útorch.utilsr(   rG   r)   r*   Úopsr+   ÚlibraryÚLibraryrå
  rË   r  r  r  r7   r=   rK   rT   r`   rj   ÚlinspaceÚlogspacer¿  r�   Útaker3  rÔ   rž   r®   r·   ÚcummaxÚcumminr¾   rÁ   rç   rÊ   rì   r  rî   Ú_fft_c2crô   r÷   rø   Ú_fft_r2cr  ÚrandpermÚgenerator_outr  r˜   r  Úrandintr   r  Úlow_outr$  Úrandr&  Ú_fft_c2rr+  rž  r7  r>  Ú
unsqueeze_rB  Ú_sparse_semi_structured_linearrë
  r^   rO  Ú_sparse_semi_structured_mmrU  Ú_sparse_semi_structured_addmmrY  Ú_cslt_sparse_mmri  Úindex_reducerp  Úindex_reduce_rr  Úindex_selectrv  Úsegment_reducer„  r³  Ú	unary_outrˆ  r‰   r‘  r  r”  r–  rŸ  r›  r   Ú_assert_asyncr£  Úmsgr§  Ú_printrª  Ú_make_dep_tokenr®  rµ  Ú_functional_sym_constrain_rangerº  r½  Ú(_functional_sym_constrain_range_for_sizer¿  Ú_functional_assert_asyncrÁ  r²   rÒ  r³   rÞ  rã  rê  ró  Ú_linalg_eighrô  rý  Ú_linalg_eigvalsÚlinalg_eigvalsr   Ú
linalg_eigr  r  r
  r  r  r  r   r4  Úlinalg_inv_exr7  Úlinalg_ldl_factor_exrg   r=  Úlinalg_ldl_solverM  Ú	linalg_lurU  Úlinalg_lu_factor_exrZ  Úlinalg_lu_solverd  Ú	lu_unpackrk  ru  Ú	linalg_qrr|  r€  r}  Ú_linalg_svdr‰  rJ  r  r™  r¯  Úlinalg_solve_triangularr¶  r½  rÆ  Ú_linalg_detrÉ  rÞ  rê  rý  Úreflection_pad1dr  Úreplication_pad1dr  r  Úreflection_pad1d_backwardr  Úreplication_pad1d_backwardr!  r2  Úreflection_pad2dr4  Úreplication_pad2dr8  Ú_weight_norm_interface_backwardrA  Úreflection_pad2d_backwardr  Úreplication_pad2d_backwardrI  rX  Úreflection_pad3drZ  Úreplication_pad3dr^  Úreflection_pad3d_backwardÚreplication_pad3d_backwardrf  Ú_pdist_forwardrZ   rk  Ú_pdist_backwardrr  Úbaddbmmr�  Ú	bernoullir�  Ú
bernoulli_r“  rg  r–  Úpoissonr˜  Ú_fused_moving_avg_obs_fq_helperr«  Úmmr¶  rŽ  r   rÕ  rÜ  Úmiopen_batch_normrë  Úconvolutionrñ  rÜ
  Ú_has_mkldnnrà
  rò  Ú_convolution_pointwiserù  Ú_linear_pointwiserý  Úhas_mklrâ
  rþ  Ú_mkl_linearr  rã
  r  Úqconv2d_pointwiseÚqconv_pointwiser:  r  ÚbinaryÚbinary_tensorr  Úqlinear_pointwiser  r#  Úlinear_dynamic_fp16Úlinear_relu_dynamic_fp16r%  rä
  r&  Ú
max_pool2dr1  Úint4mm_packed_weight_cpurC  rI  Ú
avg_pool2drs  rx  Úavg_pool2d_backwardr�  Ú
avg_pool3drŸ  Úavg_pool3d_backwardr«  Ú_adaptive_avg_pool2dr±  Ú_adaptive_avg_pool3drµ  Ú_adaptive_avg_pool2d_backwardrÀ  Ú_adaptive_avg_pool3d_backwardrÅ  rÃ  Úadaptive_max_pool2drØ  rÝ  rß  Úadaptive_max_pool3drç  ré  rê  Úrepeat_interleaverí  rs   ró  rö  rý  r•   Ú_unsafe_indexr  Úconvolution_backwardr+  Úaddbmmr4  Úrandint_liker7  Ú_fused_adam_Ú_fused_adamw_rO  Ú_fused_adamrW  Ú_int_mmra  Ú_convert_weight_to_int4packrm  Ú#_convert_weight_to_int4pack_for_cpurs  Ú_weight_int4pack_mmr}  Ú_weight_int4pack_mm_for_cpur„  rŽ  r�  rÀ  Ú_dyn_quant_pack_4bit_weightrÍ  Ú_dyn_quant_matmul_4bitrÔ  Ú_weight_int8pack_mmrÜ  Ú_cdist_forwardrô  Ú_cdist_backwardrþ  Ú_embedding_bagr&  Ú_embedding_bag_forward_onlyr(  r+  Únansumr-  ÚmedianÚ	nanmedianr/  Ú
dim_valuesrl  r¸   r2  Úlogical_not_r4  Úrepeatr=  Úzero_r?  Úmul_ÚScalarÚdiv_Úlogical_and_Úlogical_or_Úlogical_xor_rB  Úadd_Úsub_rO  r‚  ÚsubrS  ÚroundÚdecimalsrU  r\  Ú
__rshift__r`  Ú
__lshift__rd  Úzerorf  rQ  ri  Úfillrk  Úrelu_rn  Ú	_add_relurp  Úrrelu_with_noiseru  Úrrelu_with_noise_functionalrw  Úrrelu_with_noise_ry  Ú	index_putÚ_unsafe_index_putr}  Úmasked_fill_r�  Ú_masked_scaler„  Úmasked_scatter_r‰  Úmasked_scatterr‹  Úmasked_scatter_backwardr�  Ú
index_put_r�  rž  Úbmmr¡  r£  r¦  r«  rg  rh  r”  rÕ  r§  r+  Ú max_pool2d_with_indices_backwardrè  Úmax_pool2d_with_indicesrê  Úfractional_max_pool2dr  Úmax_pool3d_with_indicesr  Ú max_pool3d_with_indices_backwardr  r%  r'  r4  Úgrid_sampler_2d_backwardr<  rB  rD  rG  rù  ÚonesrV  ÚzerosrY  Úselect_scatterr]  Úslice_scatterra  r½   rf  ro  Úgatherrv  r‡  r�  r‘  rœ  rŸ  Úscatter_addr¤  Úscatter_add_r§  rž  r4  r€  rl  Úvalue_reducer«  Úscatter_r­  Ú#_scaled_dot_product_flash_attentionrÄ  rÎ  Ú#_scaled_dot_product_cudnn_attentionrØ  Ú0_scaled_dot_product_fused_attention_overrideablerÛ  Ú,_scaled_dot_product_flash_attention_backwardrå  Ú+_scaled_dot_product_flash_attention_for_cpurè  Ú4_scaled_dot_product_flash_attention_for_cpu_backwardrì  Ú*_scaled_dot_product_attention_math_for_mpsr  Ú'_scaled_dot_product_efficient_attentionr
  Ú0_scaled_dot_product_efficient_attention_backwardr  Ú,_scaled_dot_product_cudnn_attention_backwardr  Ú_flash_attention_forwardr  Ú_flash_attention_backwardr!  Ú_efficient_attention_forwardr-  Ú_efficient_attention_backwardÚSymIntr7  r  Ú
_scaled_mmr�  rÖ  Ú_scaled_mm_v2rÙ  Úscatter_reduceÚtwoÚtwo_outrÝ  Úscatter_reduce_rß  Úmultinomialrå  ré  rù  r	  Ú_upsample_nearest_exact1dr	  Ú_upsample_nearest_exact2dr	  Ú"_upsample_nearest_exact2d_backwardr	  Ú_upsample_nearest_exact3drÎ   r	  Úvalues_stabler	  r8	  Ú_thnn_fused_lstm_cellr>	  rU	  r_	  re	  ri	  rk	  Úargminrl	  ro	  Útopkrw	  Ú_segment_reduce_backwardr{	  Úkthvaluer€	  rµ   r•	  r’	  r™	  rœ	  Úpixel_shuffler¦	  r¸	  Ú	bucketizeÚ
Tensor_outr½	  ÚhistcrÉ	  Ú_upsample_bilinear2d_aaÚ_upsample_bicubic2d_aarÏ	  Ú _upsample_bilinear2d_aa_backwardrÔ	  rÞ	  rã	  r³  rê	  Úsearchsortedrô	  rú	  Úembedding_dense_backwardrý	  Ú_embedding_bag_backwardr
  Ú_embedding_bag_dense_backwardr 
  Ú*_embedding_bag_per_sample_weights_backwardr
  Úisinr
  Ú	polygammar
  Ú_local_scalar_denser
  r
  r
  r,
  rz
  Ú_grouped_mmr|
  Ú_scaled_grouped_mmr~
  Ú_softmaxr‚
  Úconstant_pad_ndr“
  r—
  Ú_jagged_to_padded_dense_forwardr›
  r¤
  Ú_native_multi_head_attentionr³
  r·
  Úspecial_airy_aiÚspecial_bessel_y0Úspecial_bessel_y1Úspecial_modified_bessel_i0Úspecial_modified_bessel_i1Úspecial_modified_bessel_k0Úspecial_modified_bessel_k1Ú!special_scaled_modified_bessel_k0Ú!special_scaled_modified_bessel_k1Úspecial_chebyshev_polynomial_tÚspecial_chebyshev_polynomial_uÚspecial_chebyshev_polynomial_vÚspecial_chebyshev_polynomial_wÚ&special_shifted_chebyshev_polynomial_tÚ&special_shifted_chebyshev_polynomial_uÚ&special_shifted_chebyshev_polynomial_vÚ&special_shifted_chebyshev_polynomial_wÚspecial_hermite_polynomial_hÚspecial_hermite_polynomial_heÚspecial_laguerre_polynomial_lÚspecial_legendre_polynomial_pr¾
  rÃ
  rÈ
  rÌ
  Úlerp_Úaddcmul_Úaddcdiv_Útorch._refs.nn.functionalÚtorch._refs.specialrê
  r2   r8   r6   Ú<module>rð     sfK  ðã ß .Ý Ý Ý Ý 'ã Ý #ß +Ñ +÷ó õ "ß U÷÷ ÷ ñ ÷õ ÷ <Ý 7ß 8Ý )ñ ˆTƒ]€Ùˆtƒ_€à‡y�y‡~�~€à*/¯-©-×*?Ñ*?ÀÈÐPVÓ*WÐ 'Ù % a£Ñ €ˆ)�Xòò"ð

˜ 8¨B°¨FÑ#3Ð"4°h¸rÀ2¸vÑ6FÐ"FÑGô 
ðà3ôò(*òñ �—‘˜tŸ}™}Ð-Ó.Ùƒð
 
Ø
ØØ�=‰=ØØó5ó ó /ð5ñp �—	‘	×!Ñ! 4§9¡9§=¡=Ð1Ó2Ùƒñ'ó ó 3ð'ñ �×!Ñ!×)Ñ)¨4×+<Ñ+<×+@Ñ+@ÐAÓBÙƒØ%'ô %ó ó Cð%ñ$ ˆt×%Ñ%Ó&ÙƒñIó ó 'ðIñ Ø	‡[�[×Ñ˜$Ÿ+™+Ÿ/™/¨4¯;©;×+>Ñ+>ÀÇÁÇÁÐPóñ ˆX�yÓ!ñó "óðñ �×!Ñ!×)Ñ)¨4×+<Ñ+<×+@Ñ+@ÐAÓBÙƒñIó ó CðIò3òl�Vð  $ s¡)ð ¸4õ ñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:ÙƒñKó ó ;ðKð €ð $ s¡)ô ñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:Ùƒñ8
ó ó ;ð8
ñv ˆt�}‰}×*Ñ*Ó+Ø"&ô 3ó ,ð3ñ ˆt�}‰}×$Ñ$Ó%ð �*‰*ØØØô
ó &ð
ñ �—‘×$Ñ$ d§l¡l×&6Ñ&6Ð7Ó8Ùƒð
 �*‰*ØØØôó ó 9ðñ& �—‘× Ñ  $§,¡,×"6Ñ"6Ð7Ó8Ùƒð �*‰*ØØØôó ó 9ðñ& �—	‘	×!Ñ! 4§9¡9§=¡=Ð1Ó2ÙƒØ%)°$¸tÐPTô ó ó 3ðñ �—‘×%Ñ% t§}¡}×'8Ñ'8Ð9Ó:Ùƒð$D�vð $D D¨¡Ið $D¸cð $DÈCó $Dó ó ;ð$DñN ˆt�z‰z×!Ñ!Ó"ôó #ðò0	(ñ ˆt�‰×&Ñ&Ó'ñó (ðñ ˆt×2Ñ2Ó3ð
 Ø"&Ø$(òØðàðð ðð �4‰-ð	ð
 ˜4‘Zðð �{‰{˜TÑ!ôó 4ðñB ˆt×.Ñ.Ó/ð
 %)ò	Ø
ðàðð ðð �{‰{˜TÑ!ô	ó 0ðñ0 ˆt×1Ñ1Ó2ð Ø	
Ø$(òØðà
ðð ðð ð	ð �{‰{˜TÑ!ôó 3ðñD ˆt×#Ñ#Ó$ð ØØ$(Ø"ØØØò+<Ø—,‘,ð+<à�\‰\ð+<ð �4‰-ð+<ð �D‰=ð	+<ð
 �{‰{˜TÑ!ð+<ð ð+<ð ð+<ð ð+<ð ô+<ó %ð+<ñ\ ˆt× Ò ×(Ñ(Ó)ð ò	IØ
ð	Ià	ð	Ið ð	Ið �L‰Lð		Ið
 ð	Ið ð	Ið ô	Ió *ð	Iñ ˆt×!Ò!×)Ñ)Ó*ð ò	Ø
ð	à	ð	ð ð	ð �L‰Lð		ð
 ð	ð ð	ð ô	ó +ð	ñ ƒÙˆt× Ò ×(Ñ(Ó)ñ'ó *ó ð'ñ ˆt×"Ò"×*Ñ*Ó+ð
 "Ø!Ø!ØØØò WØ
ð Wàð Wð �d‰]ð	 Wð
 �d‰]ð Wð �d‰]ð Wð ð Wð ð Wð ô Wó ,ð WñF �—’× Ñ  $§(¢(×"4Ò"4Ð5Ó6Ùƒñó ó 7ðñ ˆt�xŠx�|Š|Óôó ðñ �—’× Ñ  $§(¢(×"4Ò"4Ð5Ó6Ùƒñó ó 7ðñ ˆt�xŠx�|Š|Óôó ðñ ˆt�zŠz×!Ñ!Ó"ñ6ó #ð6ñ ˆt�zŠz�~‰~Óñ(ó ð(ñ
 ˆt×!Ò!×)Ñ)Ó*ñó +ðñ ˆt×!Ò!×%Ò%Ó&ñó 'ðñ ˆt�{Š{×"Ñ"Ó#ñó $ðñ ˆt×#Ò#×+Ñ+Ó,ð ØØØØô)ó -ð)ñ ˆt×'Ò'×/Ñ/Ó0ô,ó 1ð,ñ ˆt×3Ò3×;Ñ;Ó<ôó =ðñ
 ˆt×0Ò0×8Ñ8Ó9ô6ó :ð6ñ& ˆt×<Ò<×DÑDÓEñó Fðñ
 ˆt×,Ò,×0Ò0Ó1ñó 2ðð
˜Fð ¨Cô ð  ð  ¨Fð  ¸#ô  ðN (,ò
Øð
àð
ð !%õ
ò$�Vð  Sð °Cõ ð
˜ð 
 Fð 
°$ð 
Àô 
ð"  ò	Øðàðð ðð õ	ð�Cô ñ �×!Ò!×)Ñ)¨4×+<Ò+<×+HÒ+HÐIÓJÙˆ]˜NÓ+ò˜ð  sð ¸Tô ó ,ó Kðñ" �×$Ò$×,Ñ,¨d×.AÒ.A×.EÑ.EÐFÓGÙƒðB ð B¨6ó Bó ó HðBñ �—’Ð Ó!Ùˆ]˜NÓ+ð˜6ó ó ,ó "ðð Q ð Q¨Fô Qñ ˆt×*Ò*Ó+Ùƒð) ð )¨Fð )¸4ð )ÀFó )ó ó ,ð)ñ ˆt×"Ò"Ó#ÙƒòJ˜ð J Fð J°4ð JÀFô Jó ó $ðJñ ˆt�}Š}ÓÙƒò)�6ð ) $ð )°6ô )ó ó ð)ñ ˆt×$Ò$Ó%Ùƒò)˜6ð )¨$ð )¸6ô )ó ó &ð)ñ ˆt×&Ò&×.Ñ.Ó/ò˜&ð ¨ð ÀTô ó 0ðñ" Ø	×$Ò$×,Ñ,¨d×.MÒ.M×.QÑ.QÐRóñ ƒð. fð .°6ð .¸fó .ó óð.ñd ˆt×!Ò!×)Ñ)Ó*ò˜&ð °ô ó +ðñ �×)Ò)×1Ñ1°4×3LÒ3L×3PÑ3PÐQÓRÙˆT�8˜VÓ$ð Øò	Ø
ðð ðð ð	ð
 ˆ6�6˜6Ð!Ñ"ôó %ó Sðñ& �×%Ò%×-Ñ-¨t×/DÒ/D×/HÑ/HÐIÓJÙƒð ò'Øð'àð'ð ð'ð
 ð'ð ô'ó ó Kð'ñT �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙˆS�#�sÓØ/3ò �fð ¨ð ¸¸fÀfÈfÐ>TÑ8Uô ó ó =ðñ4 �×(Ò(×0Ñ0°$×2JÒ2J×2NÑ2NÐOÓPÙˆT�8˜VÓ$ð Øò	Øðð ðð ð	ð
 ˆ6�6˜6Ð!Ñ"ôó %ó QðñD �×$Ò$×,Ñ,¨d×.BÒ.B×.FÑ.FÐGÓHÙƒð Øò4Øð4àð4ð ð4ð
 ð4ð ð4ð ô4ó ó Ið4ñn ˆt�~Š~ÓÙˆS�#�sÓð Øò	$Øð$àð$ð ð$ð ð	$ð
 ˆ6�6˜6Ð!Ñ"ô$ó ó ð$ðP˜ð   t¨T zÑ!2ô ñ* �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙˆS�#Óò�fð  Cð ¸¸fÀf¸nÑ8Mô ó ó =ðñ4 �×$Ò$×,Ñ,¨d×.BÒ.B×.GÒ.GÐHÓIÙˆV�[ $¨Ó1ð'�vð ' %¨°¸ÀÐ(FÑ"Gó 'ó 2ó Jð'ñ$ ˆt×Ò×'Ñ'Ó(ð  ØØò	"Øð"àð"ð ð"ð �$‰Jô	"ó )ð"ðJ.Ø
ð.à
ð.ð ˆ4�‰9�d˜3‘iÐÑ ô.ð".Ø
ð.à
ð.ð �‰*ð.ð ˆ6�6ˆ>Ñô	.ð( fð °Vð Àô ñ ˆt×$Ò$Ó%ð
 ØØ ØØ Øò7Øð7àð7ð ð	7ð
 ð7ð �T‰Mð7ð 	�‰ð7ð �T‰Mð7ð �4‰-ð7ð ˆ6�6˜6 6Ð)Ñ*ô7ó &ð7ñt �×,Ò,×4Ñ4°d×6RÒ6R×6VÑ6VÐWÓXð ØØòØðàðð ð	ð
 ðð ðð 
�$‰ðð ôó Yðñ2 ˆt×$Ò$Ó%ÙˆS�# 4Ñ(ð ØØò+(Ø
ð+(àð+(ð ð+(ð ð	+(ð
 ð+(ð ˆ6�6ˆ>Ñô+(ó )ó &ð+(ñ^ ˆt×Ò×'Ñ'Ó(ñ
ó )ð
ñ ˆt�zŠzÓÙƒð
 ØòWØðWà	ðWð ðWð ð	Wð
 ðWð ôWó ó ðWòtò>#;ñL ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ò(ñ< ˆt×-Ò-Ó.Ùˆ\ÓñSó ó /ðSñ ˆt×.Ò.Ó/Ùˆ\ÓñTó ó 0ðTò2Eñj ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ñ Ø×(Ò(×0Ñ0óñóðñ à×&Ò&×.Ñ.Ø×&Ò&×1Ò1Ø×'Ò'×/Ñ/Ø×'Ò'×2Ò2ð	óñ ˆ\Óñ&ó óð&ò:<Gñ~ ˆt×$Ò$Ó%Ùƒñ=ó ó &ð=ñ ˆt×%Ò%Ó&Ùƒñ>ó ó 'ð>ñ à×&Ò&×.Ñ.Ø×&Ò&×1Ò1Ø×'Ò'×/Ñ/Ø×'Ò'×2Ò2ð	óñ ˆ\Óñ$(ó óð$(ñN ˆt×"Ò"Ó#Ùƒò

˜fð 

¨ð 

°vô 

ó ó $ð

ñ ˆt×#Ò#Ó$ÙƒðP˜vð P¨Vð P¸ð PÀfð PÐQWó Pó ó %ðPñ �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ù˜ÑØ/0¸ô 'ó ó 9ð'ñ: �—’×&Ñ&¨¯ª×(:Ñ(:Ð;Ó<ÙƒØ&*ô Ió ó =ñIñ
 ˆt�Š×$Ò$Ó%ôó &ññ ˆt�~Š~×ÒÓ ôIó !ñIñ
 �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ùƒô"ó ó 9ñ"ñ ˆt×3Ò3×;Ñ;Ó<ð Øô*ó =ñ*ñ. ˆt�wŠwÓÙ˜Ñò3˜UŸ[™[¨4Ñ/ô 3ó ó ñ3ó,Bö
ð* .2òrØ—,‘,ðrà�L‰Lðrð �‰I˜‰Oðrð �#‰Y˜‰_ð	rð
 �3‰i˜#‰oðrð ðrð ðrð ˜‘I ‘O dÑ*örójQñ ˆt×%Ò%×-Ñ-Ó.ð"$Ø—,‘,ð"$à�L‰Lð"$ð �,‰,˜Ñ
ð"$ð —,‘, Ñ%ð	"$ð
 —‘ Ñ$ð"$ð ð"$ð !&ð"$ð ó"$ó /ñ"$ñJ ˆt×Ò×'Ñ'Ó(ðØ—,‘,ðà�L‰Lðð �,‰,ðð �‰Ið	ð
 �#‰Yðð �3‰iðð ðð ˜‘Iðð óó )ñð> 	‡8‚8××ÑØ9>¿¹×9NÑ9NÙ�&˜&ó:Ñ6ñ �5—9‘9×#Ò#×:Ò:×BÑBÓCòó Dññ, �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>òSó ?ñSð
 ‡x‚x××ÐØ:?¿-¹-×:OÑ:OÙ�6˜6ó;
Ñ7ñ 
�u—y‘y—}’}×0Ò0Ó	1ò	ó 
2ñ	ð
 :?¿¹×9NÑ9NÙ�&˜&ó:Ñ6ñ �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>Ù�5—9‘9×#Ò#×3Ò3×;Ñ;Ó<Ù�5—9‘9×#Ò#×3Ò3×:Ò:Ó;ò0ó <ó =ó ?ñ0ñd �5—9‘9×#Ò#×5Ò5×<Ò<Ó=Ù�5—9‘9×#Ò#×5Ò5×CÒCÓDòó Eó >ññ6 �5—9‘9×#Ò#×5Ò5×=Ñ=Ó>Ù�5—9‘9×#Ò#×5Ò5×<Ò<Ó=òó >ó ?ññ8 �5—9‘9×#Ò#×5Ò5×<Ò<Ó=Ù�5—9‘9×#Ò#×5Ò5×CÒCÓDò!ó Eó >ñ!ñF �5—9‘9×#Ò#×7Ò7×?Ñ?Ó@Ù�5—9‘9×#Ò#×<Ò<×DÑDÓEò	ó Fó Añ	ð =B¿M¹M×<QÑ<QÙ�V˜Vó=Ñ9ñ �5—9‘9×&Ò&×1Ò1Ó2ð ØØØõ
ó 3ñ
ñ8 �5—9‘9×&Ò&×?Ò?Ó@ò@ó Añ@ô,ñ ˆt�Š×&Ñ&Ó'ð ØØØØõMó (ñMôb(<ñX ˆt×'Ò'×/Ñ/Ó0òEó 1ñEñP ˆt�ŠÓÙƒð ØØØØõUJó ó  ñUJñp ˆt×'Ò'Ó(Ùˆ\ÓòK(ó ó )ñK(ñ\ ˆt×(Ò(×0Ñ0Ó1òó 2ññ" ˆt×(Ò(×0Ñ0Ó1ò@ó 2ñ@ñ ˆt×1Ò1×9Ñ9Ó:òFó ;ñFñ, ˆt×1Ò1Ó2Ùˆ\ÓòPó ó 3ñPñ
	
°6ð 	
ÀSö 	
ñ ˆt×'Ò'Ó(ÙˆU�IÓò+ó ó )ñ+ñ\ ˆt×0Ò0Ó1Ùˆ\ÓòHó ó 2ñHñ$ ˆt×'Ò'Ó(ÙˆU�IÓò'ó ó )ñ'ñT ˆt×0Ò0Ó1Ùˆ\Óò(ó ó 2ñ(ñ
 ˆt×%Ò%×,Ñ,Ó-õ*ó .ñ*ñ �—’×$Ñ$ d§l¢l×&6Ñ&6Ð7Ó8Ùƒòó ó 9ññ �×#Ò#×+Ñ+¨T×-@Ò-@×-DÑ-DÐEÓFÙƒØ46ô @¨cõ @ó ó Gñ@ñ �—	‘	—‘×&Ò&×.Ñ.°·	±	·±×0FÒ0F×0JÑ0JÐKÓLÙƒòó ó Mññ" �—
’
×!Ñ! 4×#5Ò#5×#<Ñ#<Ð=Ó>ò@ó ?ñ@ñF �×)Ò)×1Ñ1Ð2Ó3òHó 4ñHñ: �—’×#Ñ# T§[¢[§_¡_Ð5Ó6Ù˜ÑØ./°qõ 'ó ó 7ñ'ñ0 �×!Ò!×(Ñ(Ð)Ó*ò'ó +ñ'ñ �×!Ò!×)Ñ)¨4×+=Ò+=×+EÑ+EÐFÓGð  Øö!
ó Hñ
ñ2 �× Ò ×(Ñ(Ð)Ó*ð  Øö!!ó +ñ!ñH �—’ˆ~ÓÙƒòBó ó ñBñ* �×0Ò0Ð1Ó2òó 3ññ& �×8Ò8Ð9Ó:òó ;ññ �×(Ò(Ð)Ó*ò@ó +ñ@ñ �×0Ò0Ð1Ó2ò<ó 3ñ<ñ �×>Ò>Ð?Ó@ò<ó Añ<ñ"�3ñ "˜3ð " 3ö "ôkñ\ �×0Ò0Ð1Ó2ðDØ!'¨$¡ôDó 3ñDñ4 �×+Ò+Ð,Ó-ò;ó .ñ;ñ( �×(Ò(Ð)Ó*ò<ó +ñ<ñ ˆt×"Ò"×*Ñ*Ó+ò &ó ,ñ &ñF ˆt×#Ò#Ó$ÙƒòGó ó %ñGñ* ˆt×"Ò"×*Ñ*Ó+ð
 Ø	
ØØØØõ`5ó ,ñ`5ñF ˆt×/Ò/×7Ñ7Ó8ò5ó 9ñ5÷
ñ �—’×#Ñ# T§[¢[§_¡_Ð5Ó6Ùƒñ=¸$÷ =ó ó 7ñ=ñ �—’×#Ñ# T§^¢^×%;Ñ%;Ð<Ó=ò)ó >ñ)ñ à�Š�ŠØ�Š×ÒØ�Š×ÒØ�Š×!Ò!Ø�	Š	×ÑØ�	Š	×Òðó	ñ ˆX�yÓ!õó "ó	ññ ˆt× Ò ×(Ñ(Ó)òó *ññ ˆt�{Š{×"Ñ"Ó#ò'ó $ñ'ñ& ˆt�zŠz×!Ñ!Ó"òó #ññ à�	Š	×ÒØ�	Š	×ÒØ�	Š	×ÑØ�	Š	×ÑØ×Ò×!Ñ!Ø×Ò× Ñ Ø×Ò×!Ñ!ðó
òó
ññ à�	Š	×ÒØ�	Š	×ÒØ�	Š	×ÑØ�	Š	×Ñð	óõ*óñ*ñZ à�Š�ŠØ�Š�Šðóõóññ �—
’
×"Ñ" D§J¢J×$7Ò$7Ð8Ó9òó :ñô
ñ" �—’×&Ñ&¨¯ª×(>Ò(>Ð?Ó@òó Aññ �—’×&Ñ&¨¯ª×(>Ò(>Ð?Ó@òó Aññ ˆt�yŠy× Ñ Ó!ò&ó "ñ&ñ �—
’
×!Ñ! 4§:¢:×#4Ò#4Ð5Ó6òó 7ññ �—	’	× Ñ  $§)¢)×"2Ò"2Ð3Ó4ò"ó 5ñ"ñ ˆt�zŠz×!Ñ!Ó"òó #ññ ˆt�~Š~×$Ñ$Ó%Ùƒò¨Fõ ó ó &ññ �×%Ò%Ð&Ó'ÙƒàRVõ"ó ó (ñ"ñ �×0Ò0Ð1Ó2àRVõ;ó 3ñ;ñ �×&Ò&Ð'Ó(àKOõó )ññ �—’×&Ñ&¨×(>Ò(>×(FÑ(FÐGÓHõ"ó Iñ"ñ ˆt× Ò ×'Ò'Ó(òó )ññ
 ˆt×!Ò!×)Ñ)Ó*òó +ññ ˆt×#Ò#Ó$ò	ó %ñ	ñ ˆt×"Ò"Ó#Ùƒò6ó ó $ñ6ñ ˆt×+Ò+Ó,ò!ó -ñ!ñ ˆt�Š×&Ñ&Ó'õó (ñ÷(ñV ˆt�xŠx×ÑÓ ò5ó !ñ5ñ ˆt�xŠx�~‰~ÓòJó ñJôôô6ô;ðh #ò-YØñYàñYð 	ñYð 	ñ	Yð
 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð ñYð ñYð ñYð ñYð  ñ!Yð" ñ#Yð$ ñ%Yð& ñ'Yð( ð)Yð* ñ+Yð, ÷-Yôx;4ð|38Øñ38àñ38ð ñ38ð 	ñ	38ð
 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð ñ38ð ñ38ð ñ38ð  ñ!38ð" ñ#38ð$ ð%38ð& ö'38ôlI2ñX ˆt×4Ò4×<Ñ<Ó=ò(ó >ñ(ñV ˆt×+Ò+×3Ñ3Ó4ð ØØØõ#ó 5ñ#ñL ˆt×)Ò)×1Ñ1Ó2òQó 3ñQñh ˆt×+Ò+Ó,ÙˆU�IÓð ØØØõdó ó -ñdñN ˆt×4Ò4Ó5Ùˆ\Óòbó ó 6ñbðJ%
 Vñ %
°6ö %
öP˜tõ ð ñ ¨vñ È3ö ñ$ ˆt×,Ò,×4Ñ4Ó5ò#ó 6ñ#ñ$ ˆt×#Ò#Ó$Ùƒò8ó ó %ñ8ñ" ˆt×,Ò,Ó-Ùˆ\™;Ó'ò!ó (ó .ñ!ñ, �—	’	×!Ñ!Ð"Ó#ò.ó $ñ.ñ ˆt�Š×&Ñ&Ó'ð ØØØØõ)ó (ñ)ñX �—	’	×!Ñ! 4§9¢9§=¡=Ð1Ó2Ùƒð ØØØØöó ó 3ññ( �—
’
×"Ñ" D§J¢J§N¡NÐ3Ó4Ùƒð ØØØØöó ó 5ññ( ˆt×"Ò"×*Ñ*Ó+ò.ó ,ñ.ñ ˆt×!Ò!×)Ñ)Ó*õ.ó +ñ.ò
	˜ñ 	¨Cñ 	¸d÷ 	ô/ô
ñ  ˆt�{Š{×"Ñ"Ó#õ'ó $ñ'÷÷6
ô ÷
-
÷b4ñ ˆt×Ò×'Ñ'Ó(ò&ó )ñ&ñ
 ˆt× Ò Ó!òó "ññ
 à�Š×ÒØ�Š×ÒØ�Š×ÒØ�Š×!Ò!ð	óñ ƒõ&ó óñ&ñ à�Š×ÒØ�Š×ÒØ�Š×ÒØ�Š×"Ò"ð	óõóññ �×8Ò8Ð9Ó:ð
 ØØ#Øó<Øñ<à	ñ<ð ñ<ð ñ	<ð
 ñ<ð ñ<ð �4‰<õ<ó ;ñ<ñ~Øñà�S™#�X‰öñ& �×8Ò8Ð9Ó:ð ØØ#Øó(Øñ(à	ñ(ð ñ(ð ˜‰}ñ	(ð
 ñ(ð ñ(ð ñ(ð ñ(ð �4‰<õ(ó ;ñ(ñV �×EÒEÐFÓGð
  $ØØØ#Øó'Øñ'à	ñ'ð ñ'ð ˜‰}ñ	'ð
 ñ'ð ñ'ð ñ'ð �4‰<õ'ó Hñ'ñT à×9Ò9ðóð( ó"Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð �4‰<õ"óñ
"ñ. à×8Ò8ðóð ØØ#ØóØñà	ñð ñð ñ	ð
 ñð ˜‰}ñð �4‰<õóñ
ñ: à×AÒAðóð  $Øó!"Øñ!"àñ!"ð 
ñ!"ð ð	!"ð
 
ñ!"ð ñ!"ð ñ!"ð ñ!"ð ˜‰}ñ!"ð �4‰<õ!"óñ
!"ñH �×?Ò?Ð@ÓAð
  $ØØØ"&Øó3&Øñ3&à	ñ3&ð ñ3&ð ˜‰}ñ	3&ð
 ñ3&ð ñ3&ð ˜4‘-ñ3&ð �4‰<ð3&ð ˆ6�6ˆ>Ñõ3&ó Bñ3&ñl �×<Ò<Ð=Ó>ð ØØó))Øñ))à	ñ))ð ñ))ð ˜‰}ñ	))ð
 ñ))ð ñ))ð �4‰<õ))ó ?ñ))ñX à×=Ò=ðóð" Øó4-Øñ4-àñ4-ð 
ñ4-ð ñ	4-ð
 ˜‰}ð4-ð 
ñ4-ð ñ4-ð ñ4-ð ñ4-ð ñ4-ð ˜$‘Zñ4-ð ñ4-ð �4‰<õ4-óñ
4-ñn à×9Ò9ðóð* ó!"Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð  �4‰<õ!"óñ
"ñ0 à×%Ò%ðóð  Ø#'Ø$(Ø#Ø"&óHØñHà	ñHð ñHð ˜‰}ñ	Hð
 ˜‰}ñHð ñHð ñHð ñHð ñHð ñHð �4‰<ñHð ˜D‘jñHð ˜T‘zñHð ˜‰}ñHð ˜4‘-õHóñ
HñV à×&Ò&ðóð( Ø#'Ø$(ó#,Øñ,àñ,ð 
ñ,ð ð	,ð
 
ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð �4‰<ñ,ð  ˜D‘jñ!,ð" ˜T‘zõ#,óñ
,ñ4 à×)Ò)ðóð   %ØØ%)Ø"Ø"ó,SØñ,Sà	ñ,Sð ð,Sð �4‰-ñ	,Sð
 ˜4‘-ñ,Sð ˜4‘-ñ,Sð ˜‘*ñ,Sð ˜‘*ñ,Sð ñ,Sð ñ,Sð ñ,Sð �4‰<ñ,Sð ˜d‘]ñ,Sð �t‰mñ,Sð �t‘õ,Sóñ
,Sñ^ à×*Ò*ðóð* Ø!%Ø"'ó%47Øñ47àñ47ð 
ñ47ð ð	47ð
 �4‰-ñ47ð ˜4‘-ñ47ð ˜4‘-ñ47ð —,’,ñ47ð —,’,ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð  �4‰<ñ!47ð" ˜$‘Jñ#47ð$  õ%47óñ
47ðx !%Ø(,Ø$(Ø òqYØ
�,‰,ðqYà
�,‰,ñqYð �\‰\ñqYð �\‰\ð	qYð
 �,‰,˜Ñ
ñqYð —,‘, Ñ%ðqYð �{‰{˜TÑ!ñqYð ÷qYñh �—’×'Ñ'Ð(Ó)ð !%Ø(,Ø$(Ø òØ
�,‰,ðà
�,‰,ñð �\‰\ñð �\‰\ð	ð
 �,‰,˜Ñ
ñð —,‘, Ñ%ðð �{‰{˜TÑ!ñð õó *ñð, !%Ø$(Ø*.Ø*.Ø òICØ
�,‰,ðICà
�,‰,ñICð �%—,‘,ÑñICð ˜Ñ%ñ	ICð
 �%—,‘,ÑñICð ˜Ñ%ðICð �,‰,˜Ñ
ðICð �{‰{˜TÑ!ñICð �KÑ  4Ñ'ñICð �KÑ  4Ñ'ñICð ÷ICñX
 �×"Ò"×*Ñ*Ð+Ó,ð !%Ø'+Ø)-Ø òØ
�,‰,ðà
�,‰,ñð �%—,‘,Ññð ˜Ñ%ñ	ð
 �KÑ ñð �%—,‘,Ññð ˜Ñ%ñð �KÑ ðð �,‰,˜Ñ
ñð —+‘+ Ñ$ñð ˜3‘i $Ñ&ñð õó -ññ: �×#Ò#×'Ò'¨×)<Ò)<×)DÒ)DÐEÓFÙƒõ&ó ó Gñ&ñ
 ˆt×#Ò#×'Ò'Ó(õó )ññ
 �× Ò ×(Ñ(¨$×*:Ò*:×*>Ñ*>Ð?Ó@Ùƒñ	Èö 	ó ó Añ	ôô,ñ* Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõ
óñ
ñ Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõóññ. à×(Ò(×0Ñ0Ø×/Ò/×7Ñ7ðóð "Ø!óØñà˜# §¢Ñ,Ñ-ñð ˜˜uŸ|š|Ñ+Ñ,ñð �d‰lñ	ð
 �d‰lõóññ: Ø	×Ò×$Ñ$ d×&DÒ&D×&LÑ&LÐMóõ
óñ
ñ à�	Š	×ÑØ�	Š	×ÒØ�	Š	×ÒØ�	Š	×Òð	óõóñô&%ñP ˆt×)Ò)×1Ñ1Ó2ð
 Øõó 3ññ ˆt�Š×&Ñ&Ó'ò4/ó (ñ4/ñn ˆt×$Ò$×,Ñ,Ó-ò$%ó .ñ$%ôN

ô
ñ �—’×#Ñ# T§[¢[×%8Ñ%8Ð9Ó:õ4ó ;ñ4ñ ˆt×!Ò!×)Ñ)Ó*õó +ññ ˆt�yŠy× Ñ Ó!õ
Qó "ñ
Qñ ˆt×,Ò,Ó-ÙƒàLPõó ó .ññ  �—’×%Ñ% t§}¢}×';Ò';Ð<Ó=ÙˆX�yÓ!õKó "ó >ñKð  #(×"9Ò"9Ñ ôQñ ˆt×7Ò7×?Ñ?Ó@ò	*ó Añ	*ñ ˆt×#Ò#×+Ñ+Ó,ò	0ó -ñ	0ñ ˆt×!Ò!×)Ñ)Ó*òó +ññ> ˆt×-Ò-×5Ñ5Ó6òFó 7ñFñD �—’×%Ñ% t§~¢~×'@Ò'@ÐAÓBÙƒØ27¸uö ó ó Cññ �—
’
ˆ|ÓÙƒõEó ó ñEñ4 Ø	×!Ò!×)Ñ)¨4×+FÒ+F×+NÑ+NÐOóð Øõóññ& �×5Ò5×=Ñ=Ð>Ó?ð Øõó @ññ8 ˆt×>Ò>×FÑFÓGòó Hññ$ �—’×'Ñ'¨¯ª×)<Ñ)<Ð=Ó>Ùƒõ"ó ó ?ñ"ñ ˆu�y‰y�~‰~×(Ò(Ó)òó *ññ8 ˆu�y‰y�~‰~× Ò Ó!ò6ó "ñ6ñ$ ˆt× Ò Ó!Ùƒð
 Ø
Ø	Øö-Kó ó "ñ-Kô`ñ ˆt×,Ò,Ó-òó .ññ ˆt×+Ò+Ó,ð õ'
ó -ñ'
ñT ˆt×1Ò1Ó2ð õó 3ññ, ˆt×>Ò>Ó?ð õó @ññ. ˆt�yŠyÓÙƒØ8=Àeö 8ó ó ñ8ñ  ˆt�~Š~ÓÙƒñ6�cð 6 ð 6¨Fô 6ó ó ñ6ñ ˆt×'Ò'Ó(ðI &ô Ió )ñIñ ˆt�yŠyÓÙ˜Ñð"ˆvð "˜&ô "ó ó ñ"ñ ˆt�|Š|ÓÙƒð6�&ð 6˜Vô 6ó ó ñ6ô'ð^ ØØ(,Ø$(Ø óPKØñPKàñPKð �\‰\˜DÑ ñPKð �\‰\˜DÑ ñ	PKð
 �4‰-ðPKð �4‰-ñPKð —,‘, Ñ%ðPKð �{‰{˜TÑ!ñPKð ÷PKñf ˆt×ÒÓ Ùƒð ØØ$(óØñàñð �4‰-ðð �4‰-ð	ð
 �{‰{˜TÑ!ðð õó ó !ññ& �×'Ò'Ð(Ó)ð !%Ø $Ø(,Ø$(Ø óØ�<‰<ñà�<‰<ñð �\‰\ñð �\‰\ñ	ð
 �,‰,˜Ñ
ðð �,‰,˜Ñ
ñð —,‘, Ñ%ðð �{‰{˜TÑ!ñð õó *ññ6 ˆt�}Š}ÓÙƒñ
ˆvð 
˜Cñ 
°ð 
¸ô 
ó ó ñ
ñ ˆt×#Ò#Ó$Ùƒõ3ó ó %ñ3ñl ˆt�~Š~ÓÙƒð Ø$Øò8Øð8àñ8ð ñ8ð ñ	8ð
 ð8ð õ8ó ó ñ8ñ, ˆt×3Ò3×;Ñ;Ó<ð
 ò	*Øð*à�&‰\ñ*ð �c‘ñ*ð õ	*ó =ñ*ô ñ ˆt×0Ò0×8Ñ8Ó9ð 
ØØØõ-"ó :ñ-"ô`ò ˜d×2Ò2Ô 3Ú ˜d×4Ò4Ô 5Ú ˜d×4Ò4Ô 5Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×=Ò=Ô >Ú ˜d×DÒDÔ EÚ ˜d×DÒDÔ Eò ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×BÒBÔ CÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×JÒJÔ KÚ ˜t×@Ò@Ô AÚ ˜t×AÒAÔ BÚ ˜t×AÒAÔ BÚ ˜t×AÒAÔ Bôñ ˆt�yŠyÓÙƒòó ó ññ$ ˆt�|Š|ÓÙƒØ./ö ó ó ññ ˆt�|Š|ÓÙƒØ./ö ó ó ñò, 	˜tŸyšyÓ)�Ú! $§,¢,Ó/�Ú! $§,¢,Ó/�ó
 Ü  Ü ôBNòJ …r8   