
    i"                     3   S SK JrJrJrJr  S SKr " S S\R                  R                  5      r " S S\R                  R                  5      r	 " S S\R                  R                  5      r
 " S	 S
\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S \R                  R                  5      r " S! S"\R                  R                  5      r " S# S$\R                  R                  5      r " S% S&\R                  R                  5      r " S' S(\R                  R                  5      r " S) S*\R                  R                  5      r " S+ S,\R                  R                  5      r " S- S.\R                  R                  5      r " S/ S0\R                  R                  5      r " S1 S2\R                  R                  5      r " S3 S4\R                  R                  5      r  " S5 S6\R                  R                  5      r! " S7 S8\R                  R                  5      r" " S9 S:\R                  R                  5      r# " S; S<\R                  R                  5      r$ " S= S>\R                  R                  5      r% " S? S@\R                  R                  5      r& " SA SB\R                  R                  5      r' " SC SD\R                  R                  5      r( " SE SF\R                  R                  5      r) " SG SH\R                  R                  5      r* " SI SJ\R                  R                  5      r+ " SK SL\R                  R                  5      r, " SM SN\R                  R                  5      r- " SO SP\R                  R                  5      r. " SQ SR\R                  R                  5      r/ " SS ST\R                  R                  5      r0 " SU SV\R                  R                  5      r1 " SW SX\R                  R                  5      r2 " SY SZ\R                  R                  5      r3 " S[ S\\R                  R                  5      r4 " S] S^\R                  R                  5      r5 " S_ S`\R                  R                  5      r6 " Sa Sb\R                  R                  5      r7 " Sc Sd\R                  R                  5      r8 " Se Sf\R                  R                  5      r9 " Sg Sh\R                  R                  5      r: " Si Sj\R                  R                  5      r; " Sk Sl\R                  R                  5      r< " Sm Sn\R                  R                  5      r= " So Sp\R                  R                  5      r> " Sq Sr\R                  R                  5      r? " Ss St\R                  R                  5      r@ " Su Sv\R                  R                  5      rA " Sw Sx\R                  R                  5      rB " Sy Sz\R                  R                  5      rC " S{ S|\R                  R                  5      rD " S} S~\R                  R                  5      rE " S S\R                  R                  5      rF " S S\R                  R                  5      rG " S S\R                  R                  5      rH " S S\R                  R                  5      rI " S S\R                  R                  5      rJ " S S\R                  R                  5      rK " S S\R                  R                  5      rL " S S\R                  R                  5      rM " S S\R                  R                  5      rN " S S\R                  R                  5      rO " S S\R                  R                  5      rP " S S\R                  R                  5      rQ " S S\R                  R                  5      rR " S S\R                  R                  5      rS " S S\R                  R                  5      rT " S S\R                  R                  5      rU " S S\R                  R                  5      rV " S S\R                  R                  5      rW " S S\R                  R                  5      rX " S S\R                  R                  5      rY " S S\R                  R                  5      rZ " S S\R                  R                  5      r[ " S S\R                  R                  5      r\ " S S\R                  R                  5      r] " S S\R                  R                  5      r^ " S S\R                  R                  5      r_ " S S\R                  R                  5      r` " S S\R                  R                  5      ra " S S\R                  R                  5      rb " S S\R                  R                  5      rc " S S\R                  R                  5      rd " S S\R                  R                  5      re " S S\R                  R                  5      rf " S S\R                  R                  5      rg " S S\R                  R                  5      rh " S S\R                  R                  5      ri " S S\R                  R                  5      rj " S S\R                  R                  5      rk " S S\R                  R                  5      rl " S S\R                  R                  5      rm " S S\R                  R                  5      rn " S S\R                  R                  5      ro " S S\R                  R                  5      rp " S S\R                  R                  5      rq " S S\R                  R                  5      rr " S S\R                  R                  5      rs " S S\R                  R                  5      rt " S S\R                  R                  5      ru " S S\R                  R                  5      rv " S S\R                  R                  5      rw " S S\R                  R                  5      rx " S S\R                  R                  5      ry " S S\R                  R                  5      rz " S S\R                  R                  5      r{ " S S\R                  R                  5      r| " S S\R                  R                  5      r} " S S\R                  R                  5      r~ " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S GS \R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS	 GS
\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS \R                  R                  5      r " GS! GS"\R                  R                  5      r " GS# GS$\R                  R                  5      r " GS% GS&\R                  R                  5      r " GS' GS(\R                  R                  5      r " GS) GS*\R                  R                  5      r " GS+ GS,\R                  R                  5      r " GS- GS.\R                  R                  5      r " GS/ GS0\R                  R                  5      r " GS1 GS2\R                  R                  5      r " GS3 GS4\R                  R                  5      r " GS5 GS6\R                  R                  5      r " GS7 GS8\R                  R                  5      r " GS9 GS:\R                  R                  5      r " GS; GS<\R                  R                  5      r " GS= GS>\R                  R                  5      r " GS? GS@\R                  R                  5      r " GSA GSB\R                  R                  5      r " GSC GSD\R                  R                  5      r " GSE GSF\R                  R                  5      r " GSG GSH\R                  R                  5      r " GSI GSJ\R                  R                  5      r " GSK GSL\R                  R                  5      r " GSM GSN\R                  R                  5      r " GSO GSP\R                  R                  5      r " GSQ GSR\R                  R                  5      r " GSS GST\R                  R                  5      r " GSU GSV\R                  R                  5      r " GSW GSX\R                  R                  5      r " GSY GSZ\R                  R                  5      r " GS[ GS\\R                  R                  5      r " GS] GS^\R                  R                  5      r " GS_ GS`\R                  R                  5      r " GSa GSb\R                  R                  5      r " GSc GSd\R                  R                  5      r " GSe GSf\R                  R                  5      r " GSg GSh\R                  R                  5      r " GSi GSj\R                  R                  5      r " GSk GSl\R                  R                  5      r " GSm GSn\R                  R                  5      r " GSo GSp\R                  R                  5      r " GSq GSr\R                  R                  5      r " GSs GSt\R                  R                  5      r " GSu GSv\R                  R                  5      r " GSw GSx\R                  R                  5      r " GSy GSz\R                  R                  5      r " GS{ GS|\R                  R                  5      r " GS} GS~\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      r " GS GS\R                  R                  5      rg(      )ListOptionalTupleUnionNc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Alias   c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g Nsuper__init__torchnnReLUreluself	__class__s    h/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/qualcomm/tests/models.pyr   Alias.__init__       HHMMO	    c                     [         R                  R                  R                  R	                  U5      nU R                  U5      $ r   )r   opsatenaliasdefaultr   )r   xalias_xs      r   forwardAlias.forward   s/    ))..&&..q1yy!!r   r   __name__
__module____qualname____firstlineno__r   r!   __static_attributes____classcell__r   s   @r   r   r      s    $" "r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )And   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   posnegr   r1   r2   r   s      r   r   And.__init__       r   c                     [         R                  " X5      R                  5       n[         R                  " X0R                  U R
                  5      $ r   )r   bitwise_andboolwherer1   r2   )r   r   yr7   s       r   r!   And.forward   4    ''-224{{;$((;;r   r2   r1   r$   r+   s   @r   r-   r-          
< <r   r-   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Abs$   c                 "   > [         TU ]  5         g r   r   r   r   s    r   r   Abs.__init__%       r   c                 .    [         R                  " U5      $ r   )r   absr   r   s     r   r!   Abs.forward(       yy|r    r$   r+   s   @r   r@   r@   $        r   r@   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AdaptiveMaxPool2D,   c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   output_sizereturn_indices)r   rQ   rR   r   s      r   r   AdaptiveMaxPool2D.__init__-   s    &,r   c                 z    [         R                  R                  U R                  U R                  5      nU" U5      $ r   )r   r   AdaptiveMaxPool2drQ   rR   )r   r   adaptive_max_pools      r   r!   AdaptiveMaxPool2D.forward2   s5    !HH66d11
 !##r   )rQ   rR   Fr$   r+   s   @r   rN   rN   ,   s    -
$ $r   rN   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AdaptiveAvgPool1D9   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   AdaptiveAvgPool1D.__init__:   rE   r   c                 P    [         R                  R                  S5      nU" U5      $ N   )r   r   AdaptiveAvgPool1dr   r   adaptive_avg_pools      r   r!   AdaptiveAvgPool1D.forward=   s"    !HH66q9 ##r   rK   r$   r+   s   @r   rZ   rZ   9       $ $r   rZ   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AdaptiveAvgPool2DB   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   AdaptiveAvgPool2D.__init__C   rE   r   c                 P    [         R                  R                  S5      nU" U5      $ )Nr`   r`   )r   r   AdaptiveAvgPool2drb   s      r   r!   AdaptiveAvgPool2D.forwardF   s"    !HH66v> ##r   rK   r$   r+   s   @r   rg   rg   B   re   r   rg   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AdaptiveAvgPool3DK   c                 .   > [         TU ]  5         Xl        g r   )r   r   rQ   )r   rQ   r   s     r   r   AdaptiveAvgPool3D.__init__L   s    &r   c                 d    [         R                  R                  U R                  5      nU" U5      $ r   )r   r   AdaptiveAvgPool3drQ   )r   r   adaptive_avg_pool3ds      r   r!   AdaptiveAvgPool3D.forwardP   s(    #hh889I9IJ"1%%r   )rQ   r$   r+   s   @r   rp   rp   K   s    '& &r   rp   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AddU   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Add.__init__V   rE   r   c                 .    [         R                  " X5      $ r   )r   addr   r   r:   s      r   r!   Add.forwardY       yyr   rK   r$   r+   s   @r   ry   ry   U        r   ry   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AddAlpha]   c                 .   > [         TU ]  5         Xl        g r   r   r   alphar   r   r   s     r   r   AddAlpha.__init__^       
r   c                 @    [         R                  " XU R                  S9$ Nr   )r   r~   r   r   s      r   r!   AddAlpha.forwardb       yyTZZ00r   r   r$   r+   s   @r   r   r   ]       1 1r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AddAlphaConstantf   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   r   constant_firstr   r   r   r   s      r   r   AddAlphaConstant.__init__g       
,r   c                     U R                   (       a  [        R                  " SXR                  S9$ [        R                  " USU R                  S9$ Ng      @r   )r   r   r~   r   rH   s     r   r!   AddAlphaConstant.forwardl   7    99S!::6699Q4::66r   r   r   rX   r$   r+   s   @r   r   r   f       -
7 7r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AddConstantFloats   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   AddConstantFloat.__init__t   rE   r   c                     SU-   $ Ng      $@rK   rH   s     r   r!   AddConstantFloat.forwardw       axr   rK   r$   r+   s   @r   r   r   s        r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AddConstantLong{   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   AddConstantLong.__init__|   rE   r   c                     SU-   $ N
   rK   rH   s     r   r!   AddConstantLong.forward       Avr   rK   r$   r+   s   @r   r   r   {        r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Any   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   dimkeepdimr   r   r   r   s      r   r   Any.__init__       r   c                 T    [         R                  " XR                  U R                  S9$ Nr   r   )r   anyr   r   rH   s     r   r!   Any.forward   s    yy$,,??r   r   NFr$   r+   s   @r   r   r      s    
@ @r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AMax   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   s      r   r   AMax.__init__   r   r   c                 T    [         R                  " XR                  U R                  S9$ r   )r   amaxr   r   rH   s     r   r!   AMax.forward       zz!4<<@@r   r   r   r$   r+   s   @r   r   r          
A Ar   r   c                   4   ^  \ rS rSr SU 4S jjrS rSrU =r$ )AMaxFollowingConv2D   c                    > [         TU ]  5         [        R                  R	                  XX3S-  S9U l        X@l        XPl        g )N   )padding)r   r   r   r   Conv2dconvr   r   )r   in_channelsout_channelskernel_sizer   r   r   s         r   r   AMaxFollowingConv2D.__init__   s?     	HHOO{1<L $ 
	 r   c                 v    U R                  U5      n[        R                  " XR                  U R                  S9$ r   )r   r   r   r   r   rH   s     r   r!   AMaxFollowingConv2D.forward   s.    II
 zz!4<<@@r   )r   r   r   )   NFr$   r+   s   @r   r   r      s    JOA Ar   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AMin   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   s      r   r   AMin.__init__   r   r   c                 T    [         R                  " XR                  U R                  S9$ r   )r   aminr   r   rH   s     r   r!   AMin.forward   r   r   r   r   r$   r+   s   @r   r   r      r   r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Arange   c                 R   > [         TU ]  5         Xl        X l        X0l        X@l        g r   )r   r   startendstepdtype)r   r   r   r   r   r   s        r   r   Arange.__init__   s"    
	
r   c                     [         R                  " U R                  U R                  U R                  U R
                  S9U-   $ )N)r   r   r   r   )r   aranger   r   r   r   )r   r:   s     r   r!   Arange.forward   s6    LLjjdhhTYYdjj 	
r   )r   r   r   r   r$   r+   s   @r   r   r      s    
 
r   r   c                   D   ^  \ rS rSrSS\\   S\4U 4S jjjrS rSr	U =r
$ )Argmax   r   r   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   s      r   r   Argmax.__init__   r   r   c                 T    [         R                  " XR                  U R                  S9$ r   )r   argmaxr   r   rH   s     r   r!   Argmax.forward       ||A88T\\BBr   r   r   r%   r&   r'   r(   r   intr8   r   r!   r)   r*   r+   s   @r   r   r      +    HSM 4  
C Cr   r   c                   D   ^  \ rS rSrSS\\   S\4U 4S jjjrS rSr	U =r
$ )Argmin   r   r   c                 :   > [         TU ]  5         Xl        X l        g r   r   r   s      r   r   Argmin.__init__   r   r   c                 T    [         R                  " XR                  U R                  S9$ r   )r   argminr   r   rH   s     r   r!   Argmin.forward   r   r   r   r   r   r+   s   @r   r   r      r   r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ArgminViewSqueezeConv2D   c                 n   > [         TU ]  5         [        R                  R	                  SSSSSS9U l        g )Nr      r`   r   r   r   strider   r   r   r   r   r   r   r   s    r   r    ArgminViewSqueezeConv2D.__init__   s2    HHOO!Q $ 
	r   c                     [         R                  " USSS9nX#   nU R                  U5      nUR                  S5      nUR	                  S5      nXu4$ )Nr   Tr   )r   r  r   viewsqueeze)r   r   r:   
argmin_out	index_outconv_outview_outsqueeze_outs           r   r!   ArgminViewSqueezeConv2D.forward   sP    \\!D9
M	99Y'??2&&&r*$$r   r   r$   r+   s   @r   r  r     s    
% %r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Asin   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Asin.__init__   rE   r   c                 .    [         R                  " U5      $ r   )r   asinrH   s     r   r!   Asin.forward       zz!}r   rK   r$   r+   s   @r   r  r          r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Atan   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Atan.__init__   rE   r   c                 .    [         R                  " U5      $ r   )r   atanrH   s     r   r!   Atan.forward   r#  r   rK   r$   r+   s   @r   r&  r&     r$  r   r&  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	AvgPool3d   c                 n   > [         TU ]  5         [        R                  R	                  UUUUUS9U l        g )Nr   r  r   	ceil_modecount_include_pad)r   r   r   r   r.  
avg_pool3d)r   r   r  r   r2  r3  r   s         r   r   AvgPool3d.__init__   s8    ((,,#/ - 
r   c                 $    U R                  U5      $ r   r4  rH   s     r   r!   AvgPool3d.forward      q!!r   r7  r$   r+   s   @r   r.  r.     s    
" "r   r.  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AvgPoolModulei	  c                 n   > [         TU ]  5         [        R                  R	                  UUUUSS9U l        g )NFr1  )r   r   r   r   	AvgPool2davgPoolr   r   r  r   r2  r   s        r   r   AvgPoolModule.__init__
  s8    xx))## * 
r   c                 $    U R                  U5      $ r   r>  rH   s     r   r!   AvgPoolModule.forward  s    ||Ar   rB  r$   r+   s   @r   r;  r;  	  s    
 r   r;  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	BatchNormi  c                    > [         TU ]  5         [        R                  R	                  XS9U l        U R                  5         g N)affine)r   r   r   r   BatchNorm2dnative_batchnormevalr   
n_featuresrH  r   s      r   r   BatchNorm.__init__  s1     % 4 4Z 4 O		r   c                 $    U R                  U5      $ r   rJ  rH   s     r   r!   BatchNorm.forward  s    $$Q''r   rP  Tr$   r+   s   @r   rE  rE    s    
( (r   rE  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Bmmi"  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Bmm.__init__#  rE   r   c                 .    [         R                  " X5      $ r   )r   matmulr   s      r   r!   Bmm.forward&      ||A!!r   rK   r$   r+   s   @r   rT  rT  "      " "r   rT  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Casti*  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Cast.__init__+  rE   r   c                 @    UR                  [        R                  5      $ r   )typer   	IntTensorrH   s     r   r!   Cast.forward.  s    vveoo&&r   rK   r$   r+   s   @r   r]  r]  *  s    ' 'r   r]  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CastMultiUsersi2  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   CastMultiUsers.__init__3  rE   r   c                     UR                  [        R                  5      n[        R                  " USUS9nXCR                  [        R                  5      -   $ Nr`   r   index)tor   longgatherint32)r   r   r:   rk  ress        r   r!   CastMultiUsers.forward6  s<    UZZ ll1!51XXekk***r   rK   r$   r+   s   @r   re  re  2  s    + +r   re  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Cat2i<  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Cat2.__init__=  rE   r   c                 .    [         R                  " X4SS9$ Nr   )axisr   catr   s      r   r!   Cat2.forward@  s    yy!a((r   rK   r$   r+   s   @r   rs  rs  <      ) )r   rs  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Cat3iD  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Cat3.__init__E  rE   r   c                 0    [         R                  " X"U4SS9$ rw  )r   concatr   s      r   r!   Cat3.forwardH  s    ||Q1IA..r   rK   r$   r+   s   @r   r~  r~  D      / /r   r~  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Cat4iL  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Cat4.__init__M  rE   r   c                 0    [         R                  " X"X4SS9$ rw  ry  r   s      r   r!   Cat4.forwardP  s    yy!A..r   rK   r$   r+   s   @r   r  r  L  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Cat5iT  c                 ^   > [         TU ]  5         [        R                  " SSSS5      U l        g )Nr`   r   )r   r   r   randnconst_tensorr   s    r   r   Cat5.__init__U  s%    !KK1a3r   c                 D    [         R                  " XU R                  4SS9$ rw  )r   rz  r  r   s      r   r!   Cat5.forwardY  s    yy! 1 12;;r   )r  r$   r+   s   @r   r  r  T  s    4< <r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
CausalMaski]  c                 |   > [         TU ]  5         U R                  S[        R                  " S5      5        SU l        g )Ncausal_mask)r`   r`   r`      r  )r   r   register_bufferr   zerosmask_lengthr   s    r   r   CausalMask.__init__^  s/    ]EKK,GHr   c                     U R                   S S 2S S 2S S 2S U R                  24   R                  US5      U R                   S S 2S S 2S S 2S U R                  24'   U R                   S-   $ r_   )r  r  masked_fill)r   padding_masks     r   r!   CausalMask.forwardc  sl    8<8H8Hq!'t''''9

+lA
& 	Aq"4D$4$4"445 !##r   )r  r$   r+   s   @r   r  r  ]  s    
$ $r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CDistij  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   CDist.__init__k  rE   r   c                 ,    [         R                  " XSS9$ )Nr   )p)r   cdistr   s      r   r!   CDist.forwardn  s    {{11%%r   rK   r$   r+   s   @r   r  r  j      & &r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Ceilir  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Ceil.__init__s  rE   r   c                 .    [         R                  " U5      $ r   )r   ceilrH   s     r   r!   Ceil.forwardv  r#  r   rK   r$   r+   s   @r   r  r  r  r$  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Chunkiz  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Chunk.__init__{  rE   r   c                 .    [         R                  " USSS9$ Nr   r  )chunksr   )r   chunkrH   s     r   r!   Chunk.forward~  s    {{1QB//r   rK   r$   r+   s   @r   r  r  z      0 0r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ChunkAddi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ChunkAdd.__init__  rE   r   c                 ^    [         R                  " USSS9u  p#[         R                  " X#5      $ r  )r   r  r~   )r   r   c1c2s       r   r!   ChunkAdd.forward  s%    Qqb1yy  r   rK   r$   r+   s   @r   r  r    s    ! !r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Clampi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Clamp.__init__  rE   r   c                 ,    [         R                  " USS9$ )Nr   max)r   clamprH   s     r   r!   Clamp.forward  s    {{1!$$r   rK   r$   r+   s   @r   r  r        % %r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ClampMaxi  c                 .   > [         TU ]  5         Xl        g r   )r   r   r  )r   r  r   s     r   r   ClampMax.__init__      r   c                 >    [         R                  " XR                  S9$ )Nr  )r   	clamp_maxr  rH   s     r   r!   ClampMax.forward      qhh//r   r  r$   r+   s   @r   r  r        0 0r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ClampMini  c                 .   > [         TU ]  5         Xl        g r   )r   r   min)r   r  r   s     r   r   ClampMin.__init__  r  r   c                 >    [         R                  " XR                  S9$ )Nr  )r   	clamp_minr  rH   s     r   r!   ClampMin.forward  r  r   r  r$   r+   s   @r   r  r    r  r   r  c                   F   ^  \ rS rSr S SU 4S jjjrS rS rS rSrU =r	$ )	CompositeDelegateModulei  c                   > [         TU ]  5         [        5       [        5       [        5       [	        5       /U l        [        R                  " / SQ5      4[        R                  " / SQ5      4[        R                  " / SQ5      [        R                  " / SQ5      4[        R                  " / SQ5      4/U l        / U l	        [        U R
                  U R                  5       Hi  u  pEU(       a  U" XE5      nU" XEU5      nU R                  R                  UR                  5       R                  R                  R                  S5      5        Mk     g )Nr`   r`   r   r   )r`   r   r   r   lowered_module_0)r   r   Conv2dSequentialry   Relumodulesr   r  sample_inputslowered_moduleszipappendexported_programgraph_module_modulesget)r   compiler_specs"to_edge_transform_and_lower_methodquantize_methodmodulesample_input	edge_progr   s          r   r    CompositeDelegateModule.__init__  s    	EF	
 [[&([[&([[&L(AB[[&(	
  "$'d6H6H$I F(>:nI   ''**,99BBFF& %Jr   c                     U R                   S   " U5      nU R                   S   " U5      nU R                   S   " US   US   5      nU R                   S   " US   5      nUS   $ Nr   r`   r   r   )r  r   r   r:   x1x2x3x4s          r   r!   CompositeDelegateModule.forward  sm    !!!$Q'!!!$Q'!!!$RUBqE2!!!$RU+!ur   c                 b    [         R                  " / SQ5      [         R                  " / SQ5      4$ )Nr  r   r  r   s    r   get_random_input(CompositeDelegateModule.get_random_input  s    L)5;;|+DEEr   c                 l     " S S[         R                  R                  5      nU" U R                  5      $ )Nc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )NCompositeDelegateModule.get_reference_module.<locals>.CompositeReferenceModulei  c                 .   > [         TU ]  5         Xl        g r   )r   r   r  )r   r  r   s     r   r   WCompositeDelegateModule.get_reference_module.<locals>.CompositeReferenceModule.__init__  s     "&r   c                     U R                   S   " U5      nU R                   S   " U5      nU R                   S   " X45      nU R                   S   " U5      nU$ r  r  r  s          r   r!   VCompositeDelegateModule.get_reference_module.<locals>.CompositeReferenceModule.forward  sO    \\!_Q'\\!_Q'\\!_R,\\!_R(	r   r	  r$   r+   s   @r   CompositeReferenceModuler    s    ' r   r  )r   r   Moduler  )r   r  s     r   get_reference_module,CompositeDelegateModule.get_reference_module  s'    
	uxx 
	 (55r   )r  r  r  r   )returnN)
r%   r&   r'   r(   r   r!   r  r  r)   r*   r+   s   @r   r  r    s2    
 	
 
 @F6 6r   r  c                        \ rS rSrS rS rSrg)ContextBinaryExamplei  c                     [         R                  R                  R                  U5      n[         R                  R                  R                  U5      nX4$ r   )r   r   
functionalr   r   s      r   r!   ContextBinaryExample.forward  s=    HH$$Q'HH$$Q'tr   c                 \    [         R                  " S5      [         R                  " S5      S.$ )N)r`   r   r   r   )r   r`      r  )r   r:   r  r   s    r   example_inputs#ContextBinaryExample.example_inputs  s$    \*\*
 	
r   rK   N)r%   r&   r'   r(   r!   r  r)   rK   r   r   r  r    s    

r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Conv1dSequentiali  c                    > [         TU ]  5         [        R                  R	                  SSSSUS9U l        [        R                  R	                  SSSSUS9U l        g )Nr`   r   r   r   r   r   biasr   )r   r   r   r   Conv1dfirstsecondr   r  r   s     r   r   Conv1dSequential.__init__  s`    XX__ % 

 hhoo & 
r   c                 B    U R                  U R                  U5      5      $ r   r   r  rH   s     r   r!   Conv1dSequential.forward       {{4::a=))r   r  r   rR  r$   r+   s   @r   r  r    s    
$* *r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv1dReluLogSoftmaxi  c                    > [         TU ]  5         [        R                  R	                  SSSSSS9U l        [        R                  R                  US9U l        g )Nr   r`   r  r   )r   r   r   r   r  r   
LogSoftmax
logsoftmaxr   r   r   s     r   r   Conv1dReluLogSoftmax.__init__  sM    HHOOqA $ 
	  ((--#-6r   c                     [         R                  R                  R                  U R	                  U5      5      nU R                  U5      nU$ r   )r   r   r  r   r   r-  rH   s     r   r!   Conv1dReluLogSoftmax.forward  s7    HH$$TYYq\2OOAr   )r   r-  r$   r+   s   @r   r)  r)    s    7 r   r)  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dArgmini  c           
      r   > [         TU ]  5         [        R                  R	                  SSSSSSSS9U l        g )Nr   r     Tr   r`   r  r  r   dilationr  r   s    r   r   Conv2dArgmin.__init__  s6    HHOOr141q $ 
	r   c                 P    U R                  U5      n[        R                  " USSS9$ )Nr   Tr   )r   r   r  rH   s     r   r!   Conv2dArgmin.forward  s"    IIaL||A1d33r   r  r$   r+   s   @r   r3  r3    s    
4 4r   r3  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dAvgPool2di  c           
         > [         TU ]  5         [        R                  R	                  SSSSSSSS9U l        [        R                  R                  SSSS9U l        g )	Nr   r  r5  Tr   r`   r6  )r  r   )r   r   r   r   r   r   r=  poolr   s    r   r   Conv2dAvgPool2d.__init__   sU    HHOOr141q $ 
	 HH&&qA&>	r   c                 B    U R                  U R                  U5      5      $ r   r>  r   rH   s     r   r!   Conv2dAvgPool2d.forward'      yy1&&r   r   r>  r$   r+   s   @r   r<  r<    s    ?' 'r   r<  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dBnHardtanhMeani+  c                   > [         [        U ]  5         SnSS/nSS/nSS/nSnSn[        R                  R                  UUSUUUUSS9U l        [        R                  R                  [        R                  " U R                  R                  R                  5       5      5      U R                  l	        [        R                  R                  U5      U l        [        R                  R                  SSS9U l        U R                  5         g )	Nr`   r   r   r   Tr   r   r   r  r   groupsr7  r  r      min_valmax_val)r   rF  r   r   r   r   r   	Parameterr  weightsizerI  rJ  HardtanhhardtanhrK  r   rJ  r  r   r7  r   r   r   s          r   r   Conv2dBnHardtanhMean.__init__,  s    "D24Qa&q6HHOO#% $ 	
	 !88--ekk$)):J:J:O:O:Q.RS		 % 4 4\ B))!Q)?		r   c                     U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " USSS9nU$ )Nr`   T)r   )r   rJ  rS  r   mean)r   r   r  r  r  r  s         r   r!   Conv2dBnHardtanhMean.forwardD  sD    YYq\""2&]]2ZZQ.	r   r   rS  rJ  r$   r+   s   @r   rF  rF  +  s    0 r   rF  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	Conv2dCatiL  c                    > [         TU ]  5         [        R                  R	                  SSS5      U l        [        R                  R	                  SSS5      U l        g Nr   )r   r   r   r   r   conv1conv2r   s    r   r   Conv2dCat.__init__M  s>    XX__Q1-
XX__Q1-
r   c                 v    U R                  U5      nU R                  U5      n[        R                  " X/SS9nU$ Nr`   r+  )r^  r_  r   rz  r   r   r:   zs       r   r!   Conv2dCat.forwardR  s3    JJqMJJqMIIqf!$r   )r^  r_  r$   r+   s   @r   r[  r[  L  s    .
 r   r[  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Conv2dDownUpSampleiY  c           	         > [         TU ]  5         [        R                  R	                  SSSSSUS9U l        [        R                  R                  SSSSSUS9U l        g )Nr  r   r   r`   r   r   r   r  r   r  )r   r   r   r   r   r   ConvTranspose2dconv_transposer!  s     r   r   Conv2dDownUpSample.__init__Z  si    HHOO $ 
	 $hh66 7 
r   c                 B    U R                  U R                  U5      5      $ r   )rk  r   rH   s     r   r!   Conv2dDownUpSample.forwardm  s    ""499Q<00r   )r   rk  rR  r$   r+   s   @r   rg  rg  Y  s    
&1 1r   rg  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
Conv2dFlipiq  c           	         > [         TU ]  5         [        R                  R	                  SSSSSSS9U l        SS/U l        g )Nr  r   r   r`   Fri  )r   r   r   r   r   r   dimsr   s    r   r   Conv2dFlip.__init__r  sF    HHOO $ 
	 F	r   c                 d    U R                  U5      n[        R                  " XR                  5      $ r   )r   r   fliprr  rH   s     r   r!   Conv2dFlip.forward~  s"    IIaLzz!YY''r   )r   rr  r$   r+   s   @r   rp  rp  q  s    
( (r   rp  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dMaxPool2di  c                    > [         TU ]  5         [        R                  R	                  SSSSSS9U l        [        R                  R                  SS5      U l        g )Nr   rl   r`   Tr  )r   r   r   r   r   r   	MaxPool2dr>  r   s    r   r   Conv2dMaxPool2d.__init__  sP    HHOO $ 
	 HH&&q!,	r   c                 B    U R                  U R                  U5      5      $ r   rA  rH   s     r   r!   Conv2dMaxPool2d.forward  rC  r   rD  r$   r+   s   @r   rx  rx    s    	-' 'r   rx  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )r  i  c                    > [         TU ]  5         [        R                  R	                  SSSSUS9U l        [        R                  R	                  SSSSUS9U l        X l        g )Nr`   r   rH  r  r   )r   r   r   r   r   r  r   channel_last)r   r  r  r   s      r   r   Conv2dSequential.__init__  sh    XX__ % 

 hhoo & 
 )r   c                     U R                   (       a  UR                  [        R                  S9OUnU R	                  U R                  U5      5      $ )N)memory_format)r  rl  r   channels_lastr   r  rH   s     r   r!   Conv2dSequential.forward  s9    7;7H7HADDu22D3a{{4::a=))r   )r  r  r   )TFr$   r+   s   @r   r  r    s    )$* *r   r  c                   <   ^  \ rS rSr     SU 4S jjrS rSrU =r$ )Conv2dSinglei  c                 n   > [         TU ]  5         [        R                  R	                  UUUUUS9U l        g )Nr  r  )r   r  
in_channelout_channelr   r   r   s         r   r   Conv2dSingle.__init__  s8     	HHOO"$# $ 
	r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   Conv2dSingle.forward      yy|r   r  )Tr`   r   rH  r`   r$   r+   s   @r   r  r    s#     
" r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dStacki  c                 n   > [         TU ]  5         [        R                  R	                  SSS5      U l        g r]  r   r   r   r   r   r^  r   s    r   r   Conv2dStack.__init__  &    XX__Q1-
r   c                 T    U R                  U5      n[        R                  " XBU45      $ r   )r^  r   stack)r   r   r:   rd  r  s        r   r!   Conv2dStack.forward  s"    ZZ]{{B1:&&r   r^  r$   r+   s   @r   r  r        .' 'r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dSliceCopyi  c                 n   > [         TU ]  5         [        R                  R	                  SSSSSS9U l        g )Nr`      rH  Tr  r  r   s    r   r   Conv2dSliceCopy.__init__  6    HHOO $ 
	r   c                 F    U R                  U5      nUS S 2SS 2S S 2S S 24   $ Nr   r  rH   s     r   r!   Conv2dSliceCopy.forward  s#    IIaLAB1~r   r  r$   r+   s   @r   r  r    s    
 r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dSumReduceDimi  c                 n   > [         TU ]  5         [        R                  R	                  SSSSSS9U l        g )Nr`   r   rH  Tr  )r   r   r   r   r   r  r   s    r   r   Conv2dSumReduceDim.__init__  s6    XX__ % 

r   c                 L    [         R                  " U R                  U5      SSS9$ )Nr   r   Fr   )r   sumr  rH   s     r   r!   Conv2dSumReduceDim.forward  s    yyAFEBBr   )r  r$   r+   s   @r   r  r    s    
C Cr   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
Conv2dTopKi  c                 n   > [         TU ]  5         [        R                  R	                  SSS5      U l        g )Nr   r  r  r   s    r   r   Conv2dTopK.__init__  s&    HHOOAr1-	r   c                 X    U R                  U5      n[        R                  " USSS9u  p#U$ )Nr  r`   r+  )r   r   topk)r   r   topk_valuestopk_indicess       r   r!   Conv2dTopK.forward  s*    IIaL$)JJq!$;!r   r  r$   r+   s   @r   r  r    s    . r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dUnbindi  c                 n   > [         TU ]  5         [        R                  R	                  SSS5      U l        g r]  r  r   s    r   r   Conv2dUnbind.__init__  r  r   c                 N    U R                  U5      n[        R                  " USS9$ rb  )r^  r   unbind)r   r   r  s      r   r!   Conv2dUnbind.forward  s     ZZ]||BA&&r   r  r$   r+   s   @r   r  r    r  r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Conv3dSequentiali  c                    > [         TU ]  5         [        R                  R	                  SSSSUS9U l        [        R                  R	                  SSSSUS9U l        g )Nr`   r   )r   r   r   r  r   )r   r   r   r   Conv3dr  r   r!  s     r   r   Conv3dSequential.__init__   s`    XX__! % 

 hhoo! & 
r   c                 B    U R                  U R                  U5      5      $ r   r$  rH   s     r   r!   Conv3dSequential.forward  r&  r   r'  rR  r$   r+   s   @r   r  r    s    
"* *r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ConvTranspose1dSinglei  c           
      r   > [         TU ]  5         [        R                  R	                  SSSSSUUS9U l        g Nr`   r   r   )r   r   r   r  r   r7  r  )r   r   r   r   ConvTranspose1drk  r   r  r7  r   s      r   r   ConvTranspose1dSingle.__init__  ?    #hh66 7 
r   c                 $    U R                  U5      $ r   rk  rH   s     r   r!   ConvTranspose1dSingle.forward"      ""1%%r   r  Tr`   r$   r+   s   @r   r  r        

& &r   r  c                   B   ^  \ rS rSr        SU 4S jjrS rSrU =r$ )ConvTranspose2dSinglei&  c	                 t   > [         T	U ]  5         [        R                  R	                  UUUUUUUUS9U l        g )N)r   r   r   r  r   r7  rJ  r  )r   r   r   r   rj  rk  )
r   r  r   r   r   r  r   r7  rJ  r   s
            r   r   ConvTranspose2dSingle.__init__'  sD     	#hh66#%# 7 	
r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   ConvTranspose2dSingle.forward>  r  r   r  )Tr`   r   r`   r`   r`   r`   r`   r$   r+   s   @r   r  r  &  s,     
.& &r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ConvTranspose3dSingleiB  c           
      r   > [         TU ]  5         [        R                  R	                  SSSSSUUS9U l        g r  )r   r   r   r   ConvTranspose3drk  r  s      r   r   ConvTranspose3dSingle.__init__C  r  r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   ConvTranspose3dSingle.forwardO  r  r   r  r  r$   r+   s   @r   r  r  B  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CopyiS  c                 .   > [         TU ]  5         Xl        g r   )r   r   r   )r   r   r   s     r   r   Copy.__init__T  s    r   c                     [         R                  R                  R                  R	                  U R
                  US-   5      nUS-   $ r_   )r   r   r   copyr   r   )r   r:   r   s      r   r!   Copy.forwardX  s3    IINN''A61ur   )r   r$   r+   s   @r   r  r  S  s     r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Cosi^  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Cos.__init___  rE   r   c                 .    [         R                  " U5      $ r   )r   cosrH   s     r   r!   Cos.forwardb  rJ   r   rK   r$   r+   s   @r   r  r  ^  rL   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CumSumif  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   CumSum.__init__g  rE   r   c                      UR                  SS9$ )Nr   r+  )cumsumrH   s     r   r!   CumSum.forwardj  s    xxAxr   rK   r$   r+   s   @r   r  r  f  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Divin  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Div.__init__o  rE   r   c                 .    [         R                  " X5      $ r   )r   divider   s      r   r!   Div.forwardr  rZ  r   rK   r$   r+   s   @r   r  r  n  r[  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DivConstantFloativ  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   DivConstantFloat.__init__w  rE   r   c                     US-  $ r   rK   rH   s     r   r!   DivConstantFloat.forwardz  s    4xr   rK   r$   r+   s   @r   r  r  v  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DivConstantLongi~  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   DivConstantLong.__init__  rE   r   c                     US-  $ r   rK   rH   s     r   r!   DivConstantLong.forward  s    2vr   rK   r$   r+   s   @r   r   r   ~  r   r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DrawGraphModeli  c                 F  > [         TU ]  5         [        R                  R	                  5       U l        [        R                  R	                  5       U l        Sn[        R                  R                  XSSSS9U l        [        R                  R                  XSSSS9U l	        g )N    r   r`   Tr   r  )
r   r   r   r   r   relu1relu2r   r^  r_  r   	kernel_szr   s     r   r   DrawGraphModel.__init__  sm    XX]]_
XX]]_
	XX__Y1ad_S
XX__Y1ad_S
r   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nXE-   $ r   )r^  r_  r
  )r   r   r  r  y1y2s         r   r!   DrawGraphModel.forward  s=    ZZ]ZZ]ZZ^ZZ^wr   )r^  r_  r
  r  r$   r+   s   @r   r  r    s    T r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )EinsumBilineari  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   EinsumBilinear.__init__  rE   r   c                 2    [         R                  " SXU5      $ )Nzbn,anm,bm->bar   einsum)r   bnanmbms       r   r!   EinsumBilinear.forward  s    ||ORb99r   rK   r$   r+   s   @r   r  r        : :r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )EinsumOuterProducti  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   EinsumOuterProduct.__init__  rE   r   c                 0    [         R                  " SX5      $ Nzi,j->ijr  r   ijs      r   r!   EinsumOuterProduct.forward  s    ||Iq,,r   rK   r$   r+   s   @r   r   r     s    - -r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )EinsumOuterProductRelui  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   EinsumOuterProductRelu.__init__  rE   r   c                 X    [         R                  " [         R                  " SX5      5      $ r$  )r   r   r  r%  s      r   r!   EinsumOuterProductRelu.forward  s    zz%,,y!788r   rK   r$   r+   s   @r   r*  r*        9 9r   r*  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Elui  c                 f   > [         TU ]  5         [        R                  R	                  SS9U l        g )Ng      ?r   )r   r   r   r   ELUelur   s    r   r   Elu.__init__  s$    88<<c<*r   c                 $    U R                  U5      $ r   r4  )r   r&  s     r   r!   Elu.forward      xx{r   r7  r$   r+   s   @r   r1  r1    s    + r   r1  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	Embeddingi  c                 l   > [         TU ]  5         [        R                  R	                  SS5      U l        g Nr   r   )r   r   r   r   r;  	embeddingr   s    r   r   Embedding.__init__  s&    ++B2r   c                 $    U R                  U5      $ r   r>  rH   s     r   r!   Embedding.forward      ~~a  r   rA  r$   r+   s   @r   r;  r;    s    3! !r   r;  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Equali  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Equal.__init__  rE   r   c                 
    X:H  $ r   rK   r   s      r   r!   Equal.forward  	    vr   rK   r$   r+   s   @r   rE  rE    r   r   rE  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )EqualConstanti  c                 .   > [         TU ]  5         Xl        g r   r   r   constantr   rO  r   s     r   r   EqualConstant.__init__       r   c                     XR                   :H  $ r   rO  rH   s     r   r!   EqualConstant.forward      MM!!r   rT  r$   r+   s   @r   rL  rL        !" "r   rL  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
ExpandCopyi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ExpandCopy.__init__  rE   r   c                 &    UR                  SS5      $ Nr   r  )expandrH   s     r   r!   ExpandCopy.forward  s    xx1~r   rK   r$   r+   s   @r   rY  rY         r   rY  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ExpandAsi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ExpandAs.__init__  rE   r   c                     [         R                  R                  U5      n[         R                  " USS9nUR	                  U5      $ )Ng|=r  )r   linalgvector_normr  	expand_asr   s      r   r!   ExpandAs.forward  s4    LL$$Q'OOA5){{1~r   rK   r$   r+   s   @r   rb  rb    s     r   rb  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ExpM1i  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ExpM1.__init__  rE   r   c                 @    [         R                  R                  U5      $ r   )r   specialexpm1rH   s     r   r!   ExpM1.forward  s    }}""1%%r   rK   r$   r+   s   @r   rk  rk    r  r   rk  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Flipi  c                 4   > [         TU ]  5         SS/U l        g )Nr   r   r   r   rr  r   s    r   r   Flip.__init__  s    F	r   c                 B    [         R                  " XR                  5      $ r   )r   ru  rr  rH   s     r   r!   Flip.forward  s    zz!YY''r   rr  r$   r+   s   @r   rs  rs    s    ( (r   rs  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Floori  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Floor.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   floorrH   s     r   r!   Floor.forward      {{1~r   rK   r$   r+   s   @r   r{  r{    r`  r   r{  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )FloorDivi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   FloorDiv.__init__  rE   r   c                 .    [         R                  " X5      $ r   )r   floor_divider   s      r   r!   FloorDiv.forward  s    !!!''r   rK   r$   r+   s   @r   r  r        ( (r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )FloorDivConstantFloati  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   FloorDivConstantFloat.__init__  rR  r   c                 F    [         R                  " XR                  -  5      $ r   )r   r  rO  rH   s     r   r!   FloorDivConstantFloat.forward
  s    {{1}},--r   rT  )       @r$   r+   s   @r   r  r    s    !. .r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Foldi  c                 L   > [         TU ]  5         SU l        SU l        SU l        g )N)r  r  r   )r   r   rQ   patch_heightpatch_widthr   s    r   r   Fold.__init__  s&    #r   c                     [         R                  R                  R                  UU R                  U R
                  U R                  4U R
                  U R                  4S9nU$ )N)rQ   r   r  )r   r   r  foldrQ   r  r  )r   r   r  s      r   r!   Fold.forward  s\    xx""''((**D,<,<=%%t'7'78	 ( 
 r   )rQ   r  r  r$   r+   s   @r   r  r    s     r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Fulli  c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   fillshape)r   r  r  r   s      r   r   Full.__init__   s    	
r   c                     [         R                  " U[         R                  " U R                  U R                  5      5      $ r   )r   r  fullr  r  rH   s     r   r!   Full.forward%  s&    yyEJJtzz499=>>r   )r  r  r$   r+   s   @r   r  r    s    
? ?r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )FullLikei)  c                 .   > [         TU ]  5         Xl        g r   )r   r   r  )r   r  r   s     r   r   FullLike.__init__*      	r   c                 l    [         R                  " U[         R                  " XR                  5      5      $ r   )r   r  	full_liker  rH   s     r   r!   FullLike.forward.  s     yyEOOAyy9::r   )r  r$   r+   s   @r   r  r  )  s    ; ;r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Gatheri2  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Gather.__init__3  rE   r   c                 .    [         R                  " USUS9$ ri  )r   rn  r   s      r   r!   Gather.forward6  s    ||A1A..r   rK   r$   r+   s   @r   r  r  2  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GatherArgmini:  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   GatherArgmin.__init__;  rE   r   c                 Z    [         R                  " USSS9n[         R                  " USUS9$ )Nr`   Tr   rj  )r   r  rn  )r   r   indices      r   r!   GatherArgmin.forward>  s'    aQ5||A1F33r   rK   r$   r+   s   @r   r  r  :  s    4 4r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GatherWhereiC  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   GatherWhere.__init__D  rE   r   c                 N   [         R                  " US:  [         R                  " S/5      R                  5       [         R                  " S/5      R                  5       5      R	                  [         R
                  5      n[         R                  " XR                  5       S-
  U5      $ Nr   r`   )r   r9   Tensorr   rl  int64rn  r   )r   r   r:   rk  s       r   r!   GatherWhere.forwardG  so    AE5<<#4#8#8#:ELL!<M<Q<Q<STWWKK
 ||Auuw{E22r   rK   r$   r+   s   @r   r  r  C  s    3 3r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GeluiN  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   )r   r   r   r   GELUgelur   s    r   r   Gelu.__init__O  r   r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   Gelu.forwardS  r  r   r  r$   r+   s   @r   r  r  N      $ r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GreaterEqualiW  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   GreaterEqual.__init__X  rE   r   c                 
    X:  $ r   rK   r   s      r   r!   GreaterEqual.forward[  rJ  r   rK   r$   r+   s   @r   r  r  W  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GreaterThani_  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   GreaterThan.__init__`  rE   r   c                 
    X:  $ r   rK   r   s      r   r!   GreaterThan.forwardc  	    ur   rK   r$   r+   s   @r   r  r  _       r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GreaterEqualConstantig  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   GreaterEqualConstant.__init__h  rR  r   c                     XR                   :  $ r   rT  rH   s     r   r!   GreaterEqualConstant.forwardl  rV  r   rT  r$   r+   s   @r   r  r  g  rW  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )GreaterThanConstantip  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   GreaterThanConstant.__init__q  rR  r   c                     XR                   :  $ r   rT  rH   s     r   r!   GreaterThanConstant.forwardu  s    ==  r   rT  r$   r+   s   @r   r  r  p      !! !r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
GridSampleiy  c                 F   > [         TU ]  5         Xl        X0l        X l        g r   )r   r   modealign_cornerspadding_mode)r   r  r  r  r   s       r   r   GridSample.__init__z  s    	*(r   c                     [         R                  R                  R                  XU R                  U R
                  U R                  5      nU$ r   )r   r   r  grid_sampler  r  r  )r   r   gridr  s       r   r!   GridSample.forward  s=    hh))55TYY 1 143E3E
 r   )r  r  r  r$   r+   s   @r   r  r  y  s    ) r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	GroupNormi  c           	         > [         TU ]  5         [        R                  R	                  SSSSSUS9U l        [        R                  R                  SS5      U l        g )Nr     r   r`   )r   r  r   r  )r   r   r   r   r   r   r  normr!  s     r   r   GroupNorm.__init__  sS    HHOO $ 
	 HH&&r3/	r   c                 H    U R                  U5      nX R                  U5      4$ r   r   r  r   s      r   r!   GroupNorm.forward  s    IIaL))A,r   r  rR  r$   r+   s   @r   r  r    s    
0 r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )HardSigmoidi  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   )r   r   r   r   Hardsigmoidhardsigmoidr   s    r   r   HardSigmoid.__init__  s#     88//1r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   HardSigmoid.forward  s    ""r   r  r$   r+   s   @r   r  r    s    2# #r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	HardSwishi  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   )r   r   r   r   	Hardswish	hardswishr   s    r   r   HardSwish.__init__  s"    ++-r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   HardSwish.forward  rC  r   r
  r$   r+   s   @r   r  r    s    .! !r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )HardTanhi  c                 h   > [         TU ]  5         [        R                  R	                  SSS9U l        g )Nr   rK  rL  )r   r   r   r   rR  rS  r   s    r   r   HardTanh.__init__  s)    ))!Q)?r   c                 $    U R                  U5      $ r   rS  rH   s     r   r!   HardTanh.forward  s    }}Qr   r  r$   r+   s   @r   r  r    s    @   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Indexi  c                 $  >^  [         TT ]  5         [        R                  " SS/SS/SS//[        R                  S9T l        [        R                  " SS/SS/SS//[        R                  S9T l        UT l        U 4S	 jU 4S
 jU 4S jS.T l        g )Nr   r`   r   r   r  r  r   rK  c                 B   > U TR                      U TR                     -   $ r   idx0idx1r   r   s    r   <lambda> Index.__init__.<locals>.<lambda>  s    499$))4r   c                 R   > U S S 2TR                   4   U S S 2TR                  4   -   $ r   r  r  s    r   r  r    s"    1dii<1Q		\?:r   c                 ^   > U S S 2S S 2TR                   4   U S S 2S S 2TR                  4   -   $ r   r  r  s    r   r  r    s(    1a?+a1dii.@@r   )r   r`   r   )	r   r   r   tensorro  r  r  rx  
dispatcher)r   rx  r   s   ` r   r   Index.__init__  sy    LL1a&1a&1a&!9M	LL1a&1a&1a&!9M		4:@
r   c                 @    U R                   U R                     " U5      $ r   )r!  rx  rH   s     r   r!   Index.forward  s    tyy)!,,r   )rx  r!  r  r  r$   r+   s   @r   r  r    s    	
- -r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	IndexCopyi  c                    > [         TU ]  5         X l        Xl        U R	                  S[
        R                  " S[
        R                  S9SS9  g )Nk_cache)r`         @   r  T
persistent)r   r   skip_mutable_buffercopy_dimr  r   r  float32)r   r/  r.  r   s      r   r   IndexCopy.__init__  sE    #6  KK)? 	 	
r   c                 \    U R                   nUR                  U R                  X5        US-   $ Nr   )r(  index_copy_r/  r   	input_posk_valk_outs       r   r!   IndexCopy.forward  s)    $--:qyr   )r/  r.  )r`   Fr$   r+   s   @r   r&  r&    s    
 r   r&  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )IndexPuti  c                    > [         TU ]  5         Xl        U R                  S[        R
                  " S[        R                  S9SS9  X l        g )Nr(  )r   r)  r*  r+  r  Tr,  )r   r   r.  r  r   r  r0  r  )r   r.  r  r   s      r   r   IndexPut.__init__  sG    #6 KK)? 	 	

 	r   c                 j   U R                   =S:X  a<    [        R                  R                  R	                  U R
                  U/U5      nUS-   $ =S:X  a=    [        R                  R                  R	                  U R
                  S U/U5      nUS-   $ =S:X  a>    [        R                  R                  R	                  U R
                  S S U/U5      nUS-   $ =S:X  aC    [        R                  R                  R	                  U R
                  US   US   /U5      nUS-   $ =S:X  aD    [        R                  R                  R	                  U R
                  S US   US   /U5      nUS-   $ S:X  aC  [        R                  R                  R	                  U R
                  US   S US   /U5      nUS-   $ WS-   $ )Nr   r`   r   r   r  r  )r  r   r   r   
index_put_r(  r5  s       r   r!   IndexPut.forward  s~   ii		11$,,US, qy+ 		11LL4"3U( qy# 		11LL4y"95  qy 		11LL9Q<1"> qy 		11LL41y|"De qy 		11LL9Q<y|"De qyuqyr   )r  r.  )Fr   r$   r+   s   @r   r;  r;    s     r   r;  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )IndexPutSuitei  c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   
accumulatein_place)r   rD  rE  r   s      r   r   IndexPutSuite.__init__  s    $ r   c                     U R                   (       a.  UR                  5       nUR                  X#U R                  5        U$ [        R
                  " XX0R                  5      $ r   )rE  cloner?  rD  r   	index_put)r   r   indicesvaluesresults        r   r!   IndexPutSuite.forward  sD    ==WWYFgt?M ??1vGGr   )rD  rE  )FFr$   r+   s   @r   rB  rB    s    !
	H 	Hr   rB  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )IndexSelecti  c                 .   > [         TU ]  5         Xl        g r   r   r   r   r.  s     r   r   IndexSelect.__init__  r  r   c                 D    [         R                  " XR                  U5      $ r   )r   index_selectr   )r   r   rJ  s      r   r!   IndexSelect.forward  s    !!!XXw77r   r+  r$   r+   s   @r   rO  rO    s    8 8r   rO  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )InstanceNorm2di  c                    > [         TU ]  5         [        R                  R	                  XS9U l        U R                  5         g rG  )r   r   r   r   rW  instance_normrK  rL  s      r   r   InstanceNorm2d.__init__  s1    "XX44Z4O		r   c                 $    U R                  U5      $ r   rY  rH   s     r   r!   InstanceNorm2d.forward      !!!$$r   r\  rR  r$   r+   s   @r   rW  rW    s    
% %r   rW  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LargeTensorLineari!  c                   > [         TU ]  5         Sn[        R                  R	                  SU5      U l        [        R                  R	                  SU5      U l        [        R                  R	                  SU5      U l        [        R                  R	                  US5      U l        [        R                  R	                  US5      U l	        [        R                  R	                  US5      U l
        g )Ni       )r   r   r   r   Linear	linear1_1	linear1_2	linear1_3linear2linear3linear4)r   
hidden_dimr   s     r   r   LargeTensorLinear.__init__"  s    
j9j9j9xxz37xxz37xxz37r   c                 >   U R                  U5      U R                  U5      -   nU R                  U5      U R                  U5      -   nU R                  U5      U R                  U5      -   nU R                  U5      U R	                  U5      -  U R                  U5      -  $ r   rd  re  rf  rg  rh  ri  )r   r   r  r  r  s        r   r!   LargeTensorLinear.forward,  s    ^^A!22^^A!22^^A!22||B$,,r"22T\\"5EEEr   rm  r$   r+   s   @r   r`  r`  !  s    8F Fr   r`  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	LayerNormi3  c                    > [         TU ]  5         [        R                  R	                  S/SUS9U l        [        R                  R                  SS5      U l        g )Ni   ư>epsr  r   )r   r   r   r   rp  
layer_normrc  linearr!  s     r   r   LayerNorm.__init__4  sC    ((,,cU4,Hhhooc3/r   c                 B    U R                  U R                  U5      5      $ r   )rv  ru  rH   s     r   r!   LayerNorm.forward9  s    {{4??1-..r   )ru  rv  rR  r$   r+   s   @r   rp  rp  3  s    0
/ /r   rp  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LayerNormAddi=  c                 l   > [         TU ]  5         [        R                  R	                  S/SSS9U l        g )Nrb  rr  Frs  )r   r   r   r   rp  ru  r   s    r   r   LayerNormAdd.__init__>  s-    ((,,cU5,Ir   c                 *    U R                  U5      U-   $ r   ru  r   s      r   r!   LayerNormAdd.forwardB  s    q!A%%r   r  r$   r+   s   @r   r{  r{  =  s    J& &r   r{  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LeakyReLUDefaultiF  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   r   r   r   r   	LeakyReLU
leaky_relur   s    r   r   LeakyReLUDefault.__init__G  s"    ((,,.r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   LeakyReLUDefault.forwardK  r9  r   r  r$   r+   s   @r   r  r  F  s    /" "r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )LeakyReLUCustomiO  c                 f   > [         TU ]  5         [        R                  R	                  XS9U l        g N)inplacer  )r   coeffr  r   s      r   r   LeakyReLUCustom.__init__P  s'    ((,,U,Dr   c                 $    U R                  U5      $ r   r  rH   s     r   r!   LeakyReLUCustom.forwardT  r9  r   r  rX   r$   r+   s   @r   r  r  O  s    E" "r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	LessEqualiX  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LessEqual.__init__Y  rE   r   c                 
    X:*  $ r   rK   r   s      r   r!   LessEqual.forward\  rJ  r   rK   r$   r+   s   @r   r  r  X  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LessThani`  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LessThan.__init__a  rE   r   c                 
    X:  $ r   rK   r   s      r   r!   LessThan.forwardd  r  r   rK   r$   r+   s   @r   r  r  `  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LessEqualConstantih  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   LessEqualConstant.__init__i  rR  r   c                     XR                   :*  $ r   rT  rH   s     r   r!   LessEqualConstant.forwardm  rV  r   rT  r$   r+   s   @r   r  r  h  rW  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LessThanConstantiq  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   LessThanConstant.__init__r  rR  r   c                      U R                   U:  $ r   rT  rH   s     r   r!   LessThanConstant.forwardv  s    }}q  r   rT  r$   r+   s   @r   r  r  q  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LiftAddTensoriz  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LiftAddTensor.__init__{  rE   r   c                     SnX-   $ r_   rK   )r   r   Ns      r   r!   LiftAddTensor.forward~  s    ur   rK   r$   r+   s   @r   r  r  z  s     r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )LinalgVectorNormi  c                 F   > [         TU ]  5         Xl        X l        X0l        g r   )r   r   ordr   r   )r   r  r   r   r   s       r   r   LinalgVectorNorm.__init__  s    r   c                 |    [         R                  R                  XR                  U R                  U R
                  S9$ )N)r  r   r   )r   rf  rg  r  r   r   rH   s     r   r!   LinalgVectorNorm.forward  s1    ||''884<< ( 
 	
r   )r   r   r  )r  NFr$   r+   s   @r   r  r        
 
r   r  c                   :   ^  \ rS rSrSS\4U 4S jjjrS rSrU =r$ )rc  i  use_biasc                    > [         TU ]  5         [        R                  R	                  SSU5      R                  5       U l        g )Nrb  r  )r   r   r   r   rc  rK  rv  )r   r  r   s     r   r   Linear.__init__  s/    hhooc2x8==?r   c                 $    U R                  U5      $ r   rv  rH   s     r   r!   Linear.forward  s    {{1~r   r  rR  )	r%   r&   r'   r(   r8   r   r!   r)   r*   r+   s   @r   rc  rc    s!    @ @ @ r   rc  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LinearNonConstantWeighti  c                    > [         TU ]  5         SU l        SU l        [        R
                  R                  U R                  SU R                  -  S5      R                  5       U l        g )Nrb  r  r   T)	r   r   	input_dim
output_dimr   r   rc  rK  rv  r   s    r   r    LinearNonConstantWeight.__init__  sJ    hhoodnna$//6I4PUUWr   c                 0   U R                   R                  R                  U R                  U R                  U R                  /5      u  p#nU R                   R                  R                  U R                  U R                  U R                  /5      u  pVn[
        R                  R                  R                  XU5      n[
        R                  R                  R                  XU5      n	[
        R                  R                  R                  XU5      n
X-  U
-  $ r   )rv  rP  splitr  r  r   r   r  )r   r   w_qw_kw_vb_qb_kb_vqkvs              r   r!   LinearNonConstantWeight.forward  s    **00__doot?
# ((..__doot?
# HH&&qs3HH&&qs3HH&&qs3uqyr   )r  rv  r  r$   r+   s   @r   r  r    s    X
 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Logi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Log.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   logrH   s     r   r!   Log.forward  rJ   r   rK   r$   r+   s   @r   r  r    rL   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
LogicalAndi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LogicalAnd.__init__  rE   r   c                 X    [         R                  " US:g  US:g  5      R                  5       $ r3  )r   logical_andfloatr   s      r   r!   LogicalAnd.forward  s&      aa06688r   rK   r$   r+   s   @r   r  r    r/  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
LogicalNoti  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LogicalNot.__init__  rE   r   c                 4    [         R                  " US:  5      $ r3  )r   logical_notrH   s     r   r!   LogicalNot.forward  s      Q''r   rK   r$   r+   s   @r   r  r    r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r,  i  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   LogSoftmax.__init__  rE   r   c                 R    [         R                  R                  R                  USS9$ )Nr  r+  )r   r   r  log_softmaxrH   s     r   r!   LogSoftmax.forward  s"    xx""..qb.99r   rK   r$   r+   s   @r   r,  r,    r  r   r,  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )rz  i  c                 n   > [         TU ]  5         [        R                  R	                  UUUSUS9U l        g )Nr`   )r   r  r   r7  r2  )r   r   r   r   rz  
max_pool2dr?  s        r   r   MaxPool2d.__init__  s8    ((,,# - 
r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   MaxPool2d.forward  r9  r   r  )r   r`   r`   Tr$   r+   s   @r   rz  rz    s    
" "r   rz  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	MaxPool3di  c           	      p   > [         TU ]  5         [        R                  R	                  UUUUUUS9U l        g )N)r   r  r   r7  rR   r2  )r   r   r   r   r  
max_pool3d)r   r   r  r   r7  r2  rR   r   s          r   r   MaxPool3d.__init__  s=     	((,,#) - 
r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   MaxPool3d.forward  r9  r   r  r$   r+   s   @r   r  r    s    
" "r   r  c                      ^  \ rS rSr   S	S\\\\\S4   \\   4      S\	S\\
R                     4U 4S jjjrS rSrU =r$ )
Meani  r   .r   r   c                 F   > [         TU ]  5         Xl        X l        X0l        g r   )r   r   r   r   r   )r   r   r   r   r   s       r   r   Mean.__init__  s     	
r   c                 j    [         R                  " XR                  U R                  U R                  S9$ )N)r   r   r   )r   rW  r   r   r   rH   s     r   r!   Mean.forward  s!    zz!4<<tzzRRr   )r   r   r   )NFN)r%   r&   r'   r(   r   r   r   r   r   r8   r   r   r   r!   r)   r*   r+   s   @r   r   r     sh     AE'+		eCsCx$s);<=	 	 $		 	S Sr   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
MaskedFilli  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MaskedFill.__init__  rE   r   c                 v    UR                  US:g  [        S5      5      R                  US:H  [        S5      5      $ )Nr   g      Y        )r  r  )r   	attn_masks     r   r!   MaskedFill.forward  s7    $$Y!^U6]COONE#J
 	
r   rK   r$   r+   s   @r   r  r        
 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MaskedSoftmaxi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MaskedSoftmax.__init__	  rE   r   c           
          [         R                  " US:H  U[         R                  " USSS9S-   5      n[         R                  R                  R                  US[         R                  S9$ )Nr   r   Tr   ir  )r   r   )r   r9   r   r   r  softmaxr0  )r   attention_maskinputattn_weightss       r   r!   MaskedSoftmax.forward  sW    {{a

5a(NRU(V
 xx""**<Ru}}*UUr   rK   r$   r+   s   @r   r  r    s    V Vr   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MaxDimi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MaxDim.__init__  rE   r   c                 6    [         R                  " USS9u  p#X#4$ rb  )r   r  )r   logits
max_logitsmax_indicess       r   r!   MaxDim.forward      "'))F":
&&r   rK   r$   r+   s   @r   r  r        ' 'r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Maximumi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Maximum.__init__  rE   r   c                 .    [         R                  " X5      $ r   )r   maximumr   s      r   r!   Maximum.forward       }}Q""r   rK   r$   r+   s   @r   r$  r$        # #r   r$  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MinDimi$  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MinDim.__init__%  rE   r   c                 6    [         R                  " USS9u  p#X#4$ rb  )r   r  )r   r  
min_logitsmin_indicess       r   r!   MinDim.forward(  r!  r   rK   r$   r+   s   @r   r-  r-  $  r"  r   r-  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Minimumi-  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Minimum.__init__.  rE   r   c                 .    [         R                  " X5      $ r   )r   minimumr   s      r   r!   Minimum.forward1  r*  r   rK   r$   r+   s   @r   r5  r5  -  r+  r   r5  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Muli5  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Mul.__init__6  rE   r   c                 .    [         R                  " X5      $ r   )r   mulr   s      r   r!   Mul.forward9  r   r   rK   r$   r+   s   @r   r<  r<  5  r   r   r<  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MulConstantFloati=  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MulConstantFloat.__init__>  rE   r   c                     SU-  $ r   rK   rH   s     r   r!   MulConstantFloat.forwardA  r   r   rK   r$   r+   s   @r   rC  rC  =  r   r   rC  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MulConstantLongiE  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   MulConstantLong.__init__F  rE   r   c                     SU-  $ r   rK   rH   s     r   r!   MulConstantLong.forwardI  r   r   rK   r$   r+   s   @r   rI  rI  E  r   r   rI  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	MulScalariM  c                 0   > [         TU ]  5         SU l        g )NgQ	@)r   r   _scalarr   s    r   r   MulScalar.__init__N  s    r   c                     [         R                  R                  R                  R	                  XR
                  5      nU$ r   )r   r   r   r@  ScalarrQ  )r   r   out1s      r   r!   MulScalar.forwardR  s)    yy~~!!((LL9r   )rQ  r$   r+   s   @r   rO  rO  M  s     r   rO  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MultiheadAttentioniW  c                 l   > [         TU ]  5         [        R                  R	                  SSSSS9U l        g )N`   r*  r
  T)dropoutbatch_first)r   r   r   r   rX  multi_head_attentionr   s    r   r   MultiheadAttention.__init__X  s4    $)HH$?$?CT %@ %
!r   c                 ,    U R                  XUSS9u  p#U$ )NF)need_weightsr]  )r   r   attn_output_s       r   r!   MultiheadAttention.forward^  s!    2212Or   ra  r$   r+   s   @r   rX  rX  W  s    
 r   rX  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Narrowic  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Narrow.__init__d  rE   r   c                 *    UR                  SSS5      4$ )Nr`   r  r  )narrowrH   s     r   r!   Narrow.forwardg  s    Ar"$$r   rK   r$   r+   s   @r   rf  rf  c  r  r   rf  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Negik  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Neg.__init__l  rE   r   c                 .    [         R                  " U5      $ r   )r   r2   rH   s     r   r!   Neg.forwardo  rJ   r   rK   r$   r+   s   @r   rm  rm  k  rL   r   rm  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )NotEqualis  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   NotEqual.__init__t  rE   r   c                 
    X:g  $ r   rK   r   s      r   r!   NotEqual.forwardw  rJ  r   rK   r$   r+   s   @r   rs  rs  s  r   r   rs  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )NotEqualConstanti{  c                 .   > [         TU ]  5         Xl        g r   rN  rP  s     r   r   NotEqualConstant.__init__|  rR  r   c                     XR                   :g  $ r   rT  rH   s     r   r!   NotEqualConstant.forward  rV  r   rT  r$   r+   s   @r   ry  ry  {  rW  r   ry  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	OrBitWisei  c                 :   > [         TU ]  5         Xl        X l        g r   r0   r3   s      r   r   OrBitWise.__init__  r5   r   c                     [         R                  " X5      R                  5       n[         R                  " X0R                  U R
                  5      $ r   )r   
bitwise_orr8   r9   r1   r2   )r   r   r:   r  s       r   r!   OrBitWise.forward  s4    %%a+002
{{:xx::r   r=   r$   r+   s   @r   r  r    s    
; ;r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
OrOperatori  c                 :   > [         TU ]  5         Xl        X l        g r   r0   r3   s      r   r   OrOperator.__init__  r5   r   c                     UR                  [        R                  5      UR                  [        R                  5      -  n[        R                  " X0R                  U R
                  5      $ r   rl  r   r8   r9   r1   r2   )r   r   r:   operator_ors       r   r!   OrOperator.forward  s?    dd5::&ejj)99{{;$((;;r   r=   r$   r+   s   @r   r  r    r>   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Padi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Pad.__init__  rE   r   c                 l    [         R                  R                  R                  US S 2SS 24   / SQSSS9$ )Nr`   )r   r   r   r`   r   r   r
  rO  )valuer  )r   r   r  padrH   s     r   r!   Pad.forward  s8    xx""&&aeH(* ' 
 	
r   rK   r$   r+   s   @r   r  r    r  r   r  c                   <   ^  \ rS rSrS\\   4U 4S jjrS rSrU =r	$ )Permutei  rr  c                 .   > [         TU ]  5         Xl        g r   ru  )r   rr  r   s     r   r   Permute.__init__  r  r   c                 8    UR                  U R                  5      $ r   )permuterr  rH   s     r   r!   Permute.forward  s    yy##r   ry  )
r%   r&   r'   r(   r   r   r   r!   r)   r*   r+   s   @r   r  r    s    T#Y $ $r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PixelShufflei  c                 j   > [         TU ]  5         [        R                  R	                  U5      U l        g r   )r   r   r   r   r  pixel_shuffler   scaler   s     r   r   PixelShuffle.__init__  s%    "XX2259r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   PixelShuffle.forward  r^  r   r  r$   r+   s   @r   r  r    s    :% %r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PixelUnshufflei  c                 j   > [         TU ]  5         [        R                  R	                  U5      U l        g r   )r   r   r   r   r  pixel_unshuffler  s     r   r   PixelUnshuffle.__init__  s%    $xx66u=r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   PixelUnshuffle.forward  s    ##A&&r   r  r$   r+   s   @r   r  r    s    >' 'r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PixelUnshuffleMathEquivalenti  c                 .   > [         TU ]  5         Xl        g r   r   r   r  r  s     r   r   %PixelUnshuffleMathEquivalent.__init__  r   r   c                    UR                  5       u  p#pEX0R                  S-  -  nX@R                  -  nXPR                  -  nUR                  X#XpR                  XR                  5      n	U	R                  SSSSSS5      R	                  X&Xx5      $ )Nr   r   r`   r   r  r  )rQ  r  r  r  reshape)
r   r   bchhhwr  hwx_views
             r   r!   $PixelUnshuffleMathEquivalent.forward  sy    vvxb::q=)****aQ

;~~aAq!Q/77MMr   r  r$   r+   s   @r   r  r    s    N Nr   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )PowTensorScalari  c                 .   > [         TU ]  5         Xl        g r   )r   r   exponent)r   r  r   s     r   r   PowTensorScalar.__init__  rR  r   c                 B    [         R                  " XR                  5      $ r   )r   powr  rH   s     r   r!   PowTensorScalar.forward  s    yyMM**r   )r  )r   r$   r+   s   @r   r  r    s    !+ +r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PReLUDefaulti  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   r   r   r   r   PReLUprelur   s    r   r   PReLUDefault.__init__       XX^^%
r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   PReLUDefault.forward      zz!}r   r  r$   r+   s   @r   r  r        & r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )PReLUPerChanneli  c                 j   > [         TU ]  5         [        R                  R	                  U5      U l        g r   r  )r   channelsr   s     r   r   PReLUPerChannel.__init__  s"    XX^^H-
r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   PReLUPerChannel.forward  r  r   r  r$   r+   s   @r   r  r    s    . r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r  i  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   r   r   s    r   r   Relu.__init__  r   r   c                 $    U R                  U5      $ r   r#   rH   s     r   r!   Relu.forward  r  r   r#   r$   r+   s   @r   r  r    r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Relu6i  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r   )r   r   r   r   ReLU6relu6r   s    r   r   Relu6.__init__  r  r   c                 $    U R                  U5      $ r   r  rH   s     r   r!   Relu6.forward  r  r   r  r$   r+   s   @r   r  r    r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Repeati  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Repeat.__init__  rE   r   c                 *    UR                  SSSS5      $ )Nr`   r   r   r  )repeatrH   s     r   r!   Repeat.forward  s    xx1a##r   rK   r$   r+   s   @r   r  r    s    $ $r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
ReWriteObsi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ReWriteObs.__init__  rE   r   c                 t    [         R                  R                  R                  U5      R	                  SS5      $ r]  )r   r   r  r   r^  rH   s     r   r!   ReWriteObs.forward  s*    xx""''*11!Q77r   rK   r$   r+   s   @r   r  r    s    8 8r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Reshapei
  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Reshape.__init__  rE   r   c                 &    UR                  SS5      $ )Nr`   r*  )r  rH   s     r   r!   Reshape.forward  s    yyBr   rK   r$   r+   s   @r   r  r  
         r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ResidualBlockModulei  c                 N  > [         [        U ]  5         SnSS/nSS/nSS/nSnSn[        R                  R                  UUSUUUUSS9U l        [        R                  R                  U5      U l        [        R                  R                  SSS9U l
        U R                  5         g )	Nr`   r  rH  TrI  r   g      @rL  )r   r  r   r   r   r   r   rI  rJ  rR  rS  rK  rT  s          r   r   ResidualBlockModule.__init__  s    !413Qa&q6HHOO#% $ 	
	 !& 4 4\ B))!S)A		r   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R                  " Xc5      nU$ r   )r   rJ  rS  r   r~   )r   r   r  r  r  r  x5x6s           r   r!   ResidualBlockModule.forward*  s]    YYq\""2&YYr]""2&]]2YYr	r   rY  r$   r+   s   @r   r  r    s    . r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ResizeBicubici4  c                 F   > [         TU ]  5         X0l        X l        Xl        g r   )r   r   r  scale_factorrQ  )r   rQ  r  r  r   s       r   r   ResizeBicubic.__init__5  s    *(	r   c                     [         R                  R                  R                  UU R                  U R
                  SU R                  S9$ )Nbicubic)rQ  r  r  r  )r   r   r  interpolaterQ  r  r  rH   s     r   r!   ResizeBicubic.forward;  sC    xx""..**,, / 
 	
r   )r  r  rQ  r$   r+   s   @r   r  r  4  s    
 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ResizeBilinear2DiE  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ResizeBilinear2D.__init__F  rE   r   c                     UR                   SS   Vs/ s H  o"S-  PM	     nn[        R                  R                  R	                  UUSSS9$ s  snf )Nr   bilinearF)rQ  r  r  r  r   r   r  r  r   r   r   output_shapes       r   r!   ResizeBilinear2D.forwardI  sU    +,7723<8<Ca<8xx""..	 / 
 	
 9s   ArK   r$   r+   s   @r   r  r  E  s    
 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ResizeNearest2DiS  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ResizeNearest2D.__init__T  rE   r   c                     UR                   SS   Vs/ s H  o"S-  PM	     nn[        R                  R                  R	                  UUSS9$ s  snf )Nr  r   nearest)rQ  r  r  r  s       r   r!   ResizeNearest2D.forwardW  sR    +,7723<8<Ca<8xx"".. / 
 	
 9s   ArK   r$   r+   s   @r   r  r  S  s    
 
r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )UpsampleNearest2Di`  c                 f   > [         TU ]  5         [        R                  R	                  XS9U l        g )N)rQ  r  )r   r   r   r   UpsamplingNearest2dupsample_neareast_2d)r   sizesr  r   s      r   r   UpsampleNearest2D.__init__a  s.    $)HH$@$@ %A %
!r   c                 $    U R                  U5      $ r   r#  rH   s     r   r!   UpsampleNearest2D.forwardg  s    ((++r   r'  )NNr$   r+   s   @r   r   r   `  s    
, ,r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )RmsNormik  c                    > [         TU ]  5         [        R                  R	                  S/5      U l        U(       a'  [        R                  R	                  S/U5      U l        g g )Nr  )r   r   r   r   RMSNormrms)r   rt  r   s     r   r   RmsNorm.__init__l  sH    88##QC(xx''S1DH r   c                 $    U R                  U5      $ r   r-  rH   s     r   r!   RmsNorm.forwardr  r9  r   r0  r   r$   r+   s   @r   r*  r*  k  s    2 r   r*  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )Rolliv  c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   shiftsrr  )r   r5  rr  r   s      r   r   Roll.__init__w  s    	r   c                 T    [         R                  " XR                  U R                  S9$ )N)r5  rr  )r   rollr5  rr  rH   s     r   r!   Roll.forward|  s    zz!KKdii@@r   )rr  r5  r   r$   r+   s   @r   r3  r3  v  s    
A Ar   r3  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Roundi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Round.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   roundrH   s     r   r!   Round.forward  r  r   rK   r$   r+   s   @r   r;  r;    r`  r   r;  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Rsqrti  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Rsqrt.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   rsqrtrH   s     r   r!   Rsqrt.forward  r  r   rK   r$   r+   s   @r   rB  rB    r`  r   rB  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ScaledDotProductAttentioni  c                 .   > [         TU ]  5         Xl        g r   r  r  s     r   r   "ScaledDotProductAttention.__init__  r   r   c                 l    [         R                  R                  R                  XX4U R                  S9nU$ )Nr  )r   r   r  scaled_dot_product_attentionr  )r   query_layer	key_layervalue_layerr  rb  s         r   r!   !ScaledDotProductAttention.forward  s5    hh))FFK$** G 
 r   r  r   r$   r+   s   @r   rI  rI    s     r   rI  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
SelectCopyi  c                 n   > [         TU ]  5         [        R                  R	                  SSSSSS9U l        g )Nr   r   rH  r`   Tr  r  r   s    r   r   SelectCopy.__init__  r  r   c                 4    U R                  U5      SSSS24   $ )Nr   r`   r   r  rH   s     r   r!   SelectCopy.forward  s    yy|Aq!A#I&&r   r  r$   r+   s   @r   rS  rS    s    
' 'r   rS  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Sigmoidi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sigmoid.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   sigmoidrH   s     r   r!   Sigmoid.forward  s    }}Qr   rK   r$   r+   s   @r   rY  rY    r  r   rY  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Signi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sign.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   signrH   s     r   r!   Sign.forward  r#  r   rK   r$   r+   s   @r   r`  r`    r$  r   r`  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Sini  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sin.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   sinrH   s     r   r!   Sin.forward  rJ   r   rK   r$   r+   s   @r   rg  rg    rL   r   rg  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SimpleModeli  c                 4  > [         TU ]  5         Sn[        R                  R	                  XSSSS9U l        [        R                  R	                  XSSSS9U l        [        R                  R	                  XSSSS9U l        [        R                  R	                  XSSSS9U l        [        R                  R                  SSS	9U l
        [        R                  R                  5       U l        [        R                  R                  U5      U l        [        R                  U l        [        R                   U l        [        R"                  U l        [        R                  R%                  S
S5      U l        [        R(                  U l        U R+                  5         g )Nr  r   r`   Tr	  Fr   rK  rL  r  r   )r   r   r   r   r   r^  r_  conv3conv4rR  rS  r   r   rI  
batch_normr~   rW  r  rc  rv  r  rK  r  s     r   r   SimpleModel.__init__  s   	XX__Y1ad_S
XX__Y1ad_S
XX__Y1ae_T
XX__Y1ae_T
))!Q)?HHMMO	((..y999JJ	}}hhooa,}}		r   c                 <   U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      n	U R                  U	5      n
U R                  U
5      nU R                  U5      nU R                  X|5      nU R                  US5      n[        R                  " USS/S5      nU R                  US5      nU R                  U5      nU R                  U5      nU$ )N)r   r   r   r`   r`   r   T)   r  )r^  rr  r   r_  rp  rq  r~   r  r   rW  r  rv  rS  )r   r   r:   r  r  r  r  r  r  r  y3y4y5rd  z1z2z3z4z5s                      r   r!   SimpleModel.forward  s    ZZ]__R YYr]ZZ^YYr]ZZ]__R YYr]ZZ^YYr]HHR\\!\*ZZQFD)\\"g&[[_]]2	r   )r~   rr  r^  r_  rp  rq  rS  rv  rW  r  r   r  r$   r+   s   @r   rn  rn    s    " r   rn  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	SliceCopyi  c                 \   > [         TU ]  5         [        R                  " SS/5      U l        g )Nr`   rb  )r   r   r   r  position_idsr   s    r   r   SliceCopy.__init__  s#    !KKC1r   c                 j    UR                  5       S   nUS S 2S U24   U R                  S S 2S U24   -   $ r_   )rQ  r  r   r   r:   
seq_lengths       r   r!   SliceCopy.forward  s<    VVXa[
KZK 4#4#4Q^#DDDr   )r  r$   r+   s   @r   r  r    s    2E Er   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SliceCopyDefaultParameteri  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   "SliceCopyDefaultParameter.__init__  rE   r   c                 <    [         R                  " US S USS  /SS9$ rb  ry  rH   s     r   r!   !SliceCopyDefaultParameter.forward  s#    yy!BQ%12Q//r   rK   r$   r+   s   @r   r  r    r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SliceCopyWithStepi  c                 j   > [         TU ]  5         [        R                  " SS/5      U l        SU l        g )Nr`   rb  r   )r   r   r   r  r  r   r   s    r   r   SliceCopyWithStep.__init__  s*    !KKC1	r   c                     UR                  5       S   nUS S 2S X0R                  24   U R                  S S 2S X0R                  24   -   $ r_   )rQ  r   r  r  s       r   r!   SliceCopyWithStep.forward  sO    VVXa[
a):		))*#;Z))#; ;<=	
r   )r  r   r$   r+   s   @r   r  r    s    

 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SliceScatteri	  c                 R   > [         TU ]  5         Xl        X l        X0l        X@l        g r   )r   r   r   r   r   r   )r   r   r   r   r   r   s        r   r   SliceScatter.__init__
  s"    
	r   c                 v    UR                  X R                  U R                  U R                  U R                  S9$ )N)r   r   r   r   )slice_scatterr   r   r   r   r   s      r   r!   SliceScatter.forward  s1    884::488$))  
 	
r   )r   r   r   r   r$   r+   s   @r   r  r  	  s    
 
r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Softmaxi  c                 .   > [         TU ]  5         Xl        g r   rQ  r.  s     r   r   Softmax.__init__  r  r   c                 d    [         R                  R                  R                  XR                  S9$ )Nr+  )r   r   r  r  r   rH   s     r   r!   Softmax.forward  s$    xx""**1((*;;r   r+  r$   r+   s   @r   r  r    s    < <r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Sqrti   c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sqrt.__init__!  rE   r   c                 .    [         R                  " U5      $ r   )r   sqrtrH   s     r   r!   Sqrt.forward$  r#  r   rK   r$   r+   s   @r   r  r     r$  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SqrtConstanti(  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   SqrtConstant.__init__)  rE   r   c                 ^    U[         R                  " [         R                  " S/5      5      -  $ )Ng      P@)r   r  r   rH   s     r   r!   SqrtConstant.forward,  s!    5::ellD62333r   rK   r$   r+   s   @r   r  r  (  s    4 4r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )SquaredReLUi0  c                 f   > [         TU ]  5         [        R                  R	                  US9U l        g r  r   )r   r  r   s     r   r   SquaredReLU.__init__1  s$    HHMM'M2	r   c                 L    [         R                  " U R                  U5      5      $ r   )r   squarer   rH   s     r   r!   SquaredReLU.forward5  s    ||DIIaL))r   r#   rX   r$   r+   s   @r   r  r  0  s    3* *r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Squeezei9  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Squeeze.__init__:  rE   r   c                 "    UR                  5       $ r   )r  rH   s     r   r!   Squeeze.forward=  s    yy{r   rK   r$   r+   s   @r   r  r  9  s     r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )StackiA  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Stack.__init__B  rE   r   c                 2    [         R                  " XU45      $ r   )r   r  rc  s       r   r!   Stack.forwardE  s    {{A!9%%r   rK   r$   r+   s   @r   r  r  A  r  r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SubiI  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sub.__init__J  rE   r   c                 .    [         R                  " X5      $ r   r   subr   s      r   r!   Sub.forwardM  r   r   rK   r$   r+   s   @r   r  r  I  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Sub_y_x_from_x_yiQ  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Sub_y_x_from_x_y.__init__R  rE   r   c                 .    [         R                  " X!5      $ r   r  r   s      r   r!   Sub_y_x_from_x_y.forwardU  r   r   rK   r$   r+   s   @r   r  r  Q  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SubAlphaiY  c                 .   > [         TU ]  5         Xl        g r   r   r   s     r   r   SubAlpha.__init__Z  r   r   c                 @    [         R                  " XU R                  S9$ r   )r   r  r   r   s      r   r!   SubAlpha.forward^  r   r   r   r$   r+   s   @r   r  r  Y  r   r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )SubAlphaConstantib  c                 :   > [         TU ]  5         Xl        X l        g r   r   r   s      r   r   SubAlphaConstant.__init__c  r   r   c                     U R                   (       a  [        R                  " SXR                  S9$ [        R                  " USU R                  S9$ r   )r   r   r  r   rH   s     r   r!   SubAlphaConstant.forwardh  r   r   r   rX   r$   r+   s   @r   r  r  b  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SubConstantFloatio  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   SubConstantFloat.__init__p  rE   r   c                     SU-
  $ r   rK   rH   s     r   r!   SubConstantFloat.forwards  r   r   rK   r$   r+   s   @r   r  r  o  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SubConstantLongiw  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   SubConstantLong.__init__x  rE   r   c                     SU-
  $ r   rK   rH   s     r   r!   SubConstantLong.forward{  r   r   rK   r$   r+   s   @r   r  r  w  r   r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SimpleSubModulesi  c                 ^   > [         TU ]  5         [        5       U l        [	        5       U l        g r   )r   r   ry   r~   r  r  r   s    r   r   SimpleSubModules.__init__  s     55r   c                 r    U R                  X5      nU R                  X45      n[        R                  " XV5      $ r   )r~   r  r   r@  )r   ar  r  dlhsrhss          r   r!   SimpleSubModules.forward  s+    hhqnhhqnyy""r   )r~   r  r$   r+   s   @r   r  r    s    
# #r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
SumIntListi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   SumIntList.__init__  rE   r   c                 .    [         R                  " USSS9$ )Nr  Tr   )r   r  rH   s     r   r!   SumIntList.forward  s    yy55r   rK   r$   r+   s   @r   r  r    s    6 6r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SwapAxesi  c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   axis0axis1)r   r  r  r   s      r   r   SwapAxes.__init__  s    

r   c                 T    [         R                  " XR                  U R                  S9$ )Nr  r  )r   swapaxesr  r  rH   s     r   r!   SwapAxes.forward  s    ~~azzDDr   r  r$   r+   s   @r   r  r    s    
E Er   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Tanhi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Tanh.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   tanhrH   s     r   r!   Tanh.forward  r#  r   rK   r$   r+   s   @r   r  r    r$  r   r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )	Thresholdi  c                 F   > [         TU ]  5         Xl        X l        X0l        g r   )r   r   	thresholdr  r  )r   r  r  r  r   s       r   r   Threshold.__init__  s    "
r   c                     [         R                  R                  R                  XR                  U R                  U R
                  S9$ )N)r  r  r  )r   r   r  r  r  r  rH   s     r   r!   Threshold.forward  s7    xx"",,tzz4<< - 
 	
r   )r  r  r  )r
  r
  Fr$   r+   s   @r   r	  r	    r  r   r	  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )TopKandIndexi  c                 Z   > [         TU ]  5         [        R                  " SS5      U l        g r=  )r   r   r   rand
idx_sourcer   s    r   r   TopKandIndex.__init__  s     **R+r   c                 V    [         R                  " US5      u  p#X R                  U   -   $ r]  )r   r  r  )r   r   r  r  s       r   r!   TopKandIndex.forward  s&    zz!Q??1%%%r   )r  r$   r+   s   @r   r  r    s    ,& &r   r  c                   @   ^  \ rS rSrSS\\   4U 4S jjjrS rSrU =r	$ )Triui  diagonalc                 .   > [         TU ]  5         Xl        g r   )r   r   r  )r   r  r   s     r   r   Triu.__init__  rR  r   c                     U R                   (       a  [        R                  " XR                   S9$ [        R                  " U5      $ )Nr  )r  r   triurH   s     r   r!   Triu.forward  s*    ==::a--88zz!}r   r  r   )
r%   r&   r'   r(   r   r   r   r!   r)   r*   r+   s   @r   r  r    s"    !# ! ! r   r  c                   H   ^  \ rS rSr\R
                  4U 4S jjrS rSrU =r	$ )TriuConstanti  c                    > [         TU ]  5         Xl        X l        U R	                  S[
        R                  " SUS95        g )Nmask)r  r  r  )r   r   r  constant_dtyper  r   ones)r   r  r$  r   s      r   r   TriuConstant.__init__  s4     ,VUZZn%MNr   c                 
   [         R                  " U R                  U R                  S9nU R                  [         R
                  :X  a9  [         R                  " UR                  UR                  S9R                  US5      nX!-   $ )Nr  r  g     )
r   r  r#  r  r$  r8   r  r  r   masked_fill_)r   r   r#  s      r   r!   TriuConstant.forward  sX    zz$))dmm<%**,;;qwwagg6CCD(SDxr   )r$  r  )
r%   r&   r'   r(   r   r0  r   r!   r)   r*   r+   s   @r   r!  r!    s    05 O r   r!  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Unbindi  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Unbind.__init__  rE   r   c                 .    [         R                  " U5      $ r   )r   r  rH   s     r   r!   Unbind.forward  s    ||Ar   rK   r$   r+   s   @r   r+  r+    r   r   r+  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	Unflatteni  c                 :   > [         TU ]  5         Xl        X l        g r   )r   r   r   r$  )r   r   r$  r   s      r   r   Unflatten.__init__  s    
r   c                 T    [         R                  " XR                  U R                  S9$ )Nr   r$  )r   	unflattenr   r$  rH   s     r   r!   Unflatten.forward  s    qhhdjjAAr   r5  r$   r+   s   @r   r1  r1    s    
B Br   r1  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Unfoldi  c                 >   > [         TU ]  5         SU l        SU l        g r  )r   r   r  r  r   s    r   r   Unfold.__init__  s    r   c                     [         R                  R                  R                  UU R                  U R
                  4U R                  U R
                  4S9nU$ )N)r   r  )r   r   r  unfoldr  r  )r   r   r=  s      r   r!   Unfold.forward  sS    $$++**D,<,<=%%t'7'78 , 

 r   )r  r  r$   r+   s   @r   r9  r9    s    
 r   r9  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	Unsqueezei  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Unsqueeze.__init__  rE   r   c                 $    UR                  S5      $ r3  )	unsqueezerH   s     r   r!   Unsqueeze.forward  s    {{1~r   rK   r$   r+   s   @r   r@  r@    r`  r   r@  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Viewi  c                 >   > [         TU ]  5         SU l        SU l        g Nr   r  r   r   
first_sizesecond_sizer   s    r   r   View.__init__ 	      r   c                 |    UR                  5       S S U R                  U R                  4-   nUR                  U5      $ )Nr  )rQ  rK  rL  r  r   r   r:   	new_shapes       r   r!   View.forward	  s6    FFHSbMT__d6F6F$GG	vvi  r   rK  rL  r$   r+   s   @r   rG  rG    s    
! !r   rG  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ViewPermuteMatMuli
	  c                 >   > [         TU ]  5         SU l        SU l        g rI  rJ  r   s    r   r   ViewPermuteMatMul.__init__	  rN  r   c                     UR                  5       S S U R                  U R                  4-   nUR                  U5      nUR	                  SSSS5      n[
        R                  " XR                  SS5      5      $ )Nr  r   r   r`   r   r  )rQ  rK  rL  r  r  r   rX  	transposerP  s       r   r!   ViewPermuteMatMul.forward	  sc    FFHSbMT__d6F6F$GG	FF9IIaAq!||A{{2r233r   rS  r$   r+   s   @r   rU  rU  
	  s    
4 4r   rU  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Wherei	  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   Where.__init__	  rE   r   c                 r    [         R                  " U[         R                  " UR                  5      :  X#5      $ r   )r   r9   r  r  rc  s       r   r!   Where.forward	  s%    {{1AGG 44a;;r   rK   r$   r+   s   @r   r\  r\  	  s    < <r   r\  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )WhereConstanti	  c                 j   > [         TU ]  5         U R                  SU5        U R                  SU5        g )Nr1   r2   )r   r   r  r3   s      r   r   WhereConstant.__init__ 	  s.    UC(UC(r   c                     [         R                  " U[         R                  " UR                  5      :  U R                  U R
                  5      $ r   )r   r9   r  r  r1   r2   rH   s     r   r!   WhereConstant.forward%	  s/    {{1AGG 44dhhIIr   rK   r$   r+   s   @r   rb  rb  	  s    )
J Jr   rb  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )WhereConstantOtheri)	  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   WhereConstantOther.__init__*	  rE   r   c                 t    [         R                  " US:  [         R                  " UR                  5      S5      $ r3  )r   r9   r%  r  rH   s     r   r!   WhereConstantOther.forward-	  s&    {{165::agg#6::r   rK   r$   r+   s   @r   rh  rh  )	  s    ; ;r   rh  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )WhereConstantAlli1	  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   WhereConstantAll.__init__2	  rE   r   c                 8    [         R                  " US:  SS5      $ r  )r   r9   rH   s     r   r!   WhereConstantAll.forward5	  s    {{161a((r   rK   r$   r+   s   @r   rn  rn  1	  r|  r   rn  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )WhereConstantInfi9	  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   WhereConstantInf.__init__:	  rE   r   c           	          [         R                  R                  R                  [         R                  " US:  S[        S5      5      SS9$ )Nr   g?z-infr  r+  )r   r   r  r  r9   r  rH   s     r   r!   WhereConstantInf.forward=	  s>    xx""**KKQU6]3 + 
 	
r   rK   r$   r+   s   @r   rt  rt  9	  r  r   rt  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
XorBitWiseiC	  c                 :   > [         TU ]  5         Xl        X l        g r   r0   r3   s      r   r   XorBitWise.__init__D	  r5   r   c                     [         R                  " X5      R                  5       n[         R                  " X0R                  U R
                  5      $ r   )r   bitwise_xorr8   r9   r1   r2   )r   r   r:   r~  s       r   r!   XorBitWise.forwardI	  r<   r   r=   r$   r+   s   @r   rz  rz  C	  r>   r   rz  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )XorOperatoriN	  c                 :   > [         TU ]  5         Xl        X l        g r   r0   r3   s      r   r   XorOperator.__init__O	  r5   r   c                     UR                  [        R                  5      UR                  [        R                  5      -  n[        R                  " X0R                  U R
                  5      $ r   r  )r   r   r:   operator_xors       r   r!   XorOperator.forwardT	  s?    ttEJJ'!$$uzz*::{{<488<<r   r=   r$   r+   s   @r   r  r  N	  s    
= =r   r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ZeroDimTensoriZ	  c                 "   > [         TU ]  5         g r   rC   r   s    r   r   ZeroDimTensor.__init__[	  rE   r   c                     [         R                  " S5      n[         R                  " USS5      n[         R                  " X5      $ )Nr`   r   )r   r  selectr~   )r   r   input1selected_elements       r   r!   ZeroDimTensor.forward^	  s1    Q <<15yy--r   rK   r$   r+   s   @r   r  r  Z	  s    . .r   r  )typingr   r   r   r   r   r   r  r   r-   r@   rN   rZ   rg   rp   ry   r   r   r   r   r   r   r   r   r   r   r   r  r  r&  r.  r;  rE  rT  r]  re  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r3  r<  rF  r[  rg  rp  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r*  r1  r;  rE  rL  rY  rb  rk  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r;  rB  rO  rW  r`  rp  r{  r  r  r  r  r  r  r  r  rc  r  r  r  r  r,  rz  r  r   r  r  r  r$  r-  r5  r<  rC  rI  rO  rX  rf  rm  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r*  r3  r;  rB  rI  rS  rY  r`  rg  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r+  r1  r9  r@  rG  rU  r\  rb  rh  rn  rt  rz  r  r  rK   r   r   <module>r     sw   0 / "EHHOO "<%((// <%((// 
$ 
$$ $$ $& &%((// 1uxx 1
7uxx 
7uxx ehhoo @%((// @A588?? AA%((// A$A588?? A
UXX__ 
"CUXX__ CCUXX__ C%ehhoo %$588?? 588?? " "EHHOO ( ("%((// "'588?? '+UXX__ +)588?? )/588?? //588?? /<588?? <
$ 
$&EHHOO &588?? 0EHHOO 0!uxx !%EHHOO %0uxx 00uxx 086ehhoo 86v

588?? 

*uxx *0588?? 	4588?? 	4	'ehhoo 	'588?? B
 
1 10( ($'ehhoo ' *uxx *0588?? ,'%((// 'ehhoo  C C '588?? '*uxx *,&EHHOO &"&EHHOO &8&EHHOO &"588?? %((// UXX__ "%((// "uxx ehhoo UXX__ ":UXX__ :- -9UXX__ 9%((// ! !EHHOO "EHHOO " uxx &EHHOO &(588?? (EHHOO (uxx (.EHHOO .588?? "?588?? ?;uxx ;/UXX__ /4588?? 43%((// 3588?? 588?? %((// "588?? "!%((// !  $#%((// #! ! uxx  -EHHOO -  "$uxx $NHEHHOO H$8%((// 8%UXX__ %F F$/ /&588?? &"uxx ""ehhoo " uxx " "!uxx !EHHOO 

uxx 

UXX__ ehhoo (%((// 9 9( (: :" "" "$S588?? S 
 
VEHHOO V'UXX__ '#ehhoo #'UXX__ '#ehhoo #%((// uxx ehhoo  	 	%UXX__ %%((// uxx "uxx "; ;< <
%((// 
$ehhoo $%588?? %'UXX__ 'N588?? N+ehhoo +588?? ehhoo 588?? EHHOO $UXX__ $8 8 ehhoo  %((// D
EHHOO 
"
uxx 


ehhoo 

, ,ehhoo A588?? AEHHOO EHHOO 	 	' ' ehhoo  588?? %((// #%((// #LE E0 0
 

588?? 
<ehhoo <588?? 4588?? 4*%((// *ehhoo &EHHOO &%((// uxx 1uxx 1
7uxx 
7uxx ehhoo 	#uxx 	#6 6Euxx E588?? 

 

&588?? &588?? 588?? UXX__ B BUXX__  !588?? !
4 
4<EHHOO <JEHHOO J; ;)uxx )
uxx 
< <=%((// =.EHHOO .r   