
    Yj                     h   U d dl Z d dlmZ d dlmZmZmZ eeef         Z	d dl
Z
dee         dee         fdZdee         dee         dee         fdZdee         dedee         fd	Zd
ee         dee         fdZd
ee         fdZd
ee         fdZdee         dee         fdZd
ee         dee         fdZd
ee         dee         defdZdee         dedee         fdZdee         fdZd
ee         dee         fdZddd
ee         dee         defdZd
ee         deee                  ded efd!Zd
ee         d"edefd#Zd$ed%efd&Zd'ed(ed)ed*ed+ed,ed-efd.Zd'ed(ed)ed+ed,ed-efd/Zd0ee         d1ed2ed3ed4ed5ed6ed7ed8ed9ed:ed;ed<ed=efd>Zd0ee         d?ee         d+ee         d@ee         d,ee         d-efdAZ d0ee         d?ee         d+ee         d@ee         d,ee         d-efdBZ!d0ee         dCeee                  dDeee                  fdEZ"d
ee         dFee         fdGZ#d
ee         dHee         fdIZ$d
ee         dJee         fdKZ%dLee         d"efdMZ&dLee         fdNZ'dLee         d"efdOZ(dLee         dPee         fdQZ)d
ee         d"edRee         fdSZ*	 	 	 ddUee         dVee         dWedXedYef
dZZ+d[ Z,d
ee         d"ed\ee         d]ee         d^ef
d_Z-d`eee                  fdaZ.d"edbeee                  fdcZ/dHee         fddZ0deee         dfee         dgedRefdhZ1d`eee                  d"efdiZ2d`eee                  d"efdjZ3d
ee         d"edRefdkZ4dlee         dmee         fdnZ5d
ee         fdoZ6d
ee         dpedqefdrZ7d0ee         dUee         dseee                  fdtZ8d
ee         duee         dFee         dvedwef
dxZ9dyee         defdzZ:d0ee         d{ee         dseee                  d+ee         d@ee         d,ee         d|efd}Z;d~ee         dee         dseee                  d+ee         d@ee         d,ee         d|efdZ<d0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efdZ=d0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efdZ>dee         d0ee         dUee         deee                  fdZ?	 	 	 	 	 	 dd0ee         dUee         dseee                  d+eee                  d@eee                  deee                  d|ed,eee                  dee         fdZ@d0ee         dUee         dseee                  d+ee         d@ee         d,ee         dedee         d|edee         fdZAd0ee         dUee         dseee                  d+ee         d@ee         d,ee         dedee         d|edededededee         fdZBd0ee         dUeee                  dseee                  deee                  deee                  dedededefdZCd0ee         dUee         dseee                  d+ee         d@ee         d,ee         d|efdZDdd"ededefdZEd0efdZFdLee         fdZGd]e	dedededef
dZHd\e	d]e	dedededefdZId\e	d]e	d^e	dedededefdZJd0ee         dPee         fdZKd
ee         dee         dee         dee         fdZLd0ee         dedefdZMd0ee         fdZNd0ee         fdZOd
ee         d"edefdZP	 dd
ee         d"ee         dedee         fdZQd
ee         dFee         dee         fdZRd
ee         dee         fdZSdd
ee         ded"edeTee         ee         f         fdZUd
ee         dee         dUeee                  dedeTee         ee         f         f
dZVd0ee         dee         deTee         ee         ee         f         fdZWd0ee         dUeee                  dseee                  deee                  deee                  dedeTee         ee         ee         f         fdZXd0ee         dUeee                  dseee                  deee                  deee                  deTee         ee         ee         ee         f         fdZY	 	 	 	 dd
ee         dee         dUeee                  dedededee         fdZZ	 e
j[        j\        Z]i a^e_e`e]f         ead<   i Zbe_e`eTe]e]f         f         ead<   i Zce_ee]f         ead<   defdÄZdde`defdńZede`dedefdȄZf eede            eede            eede            eede            eedeF            eedeF            eede            eede            eedeH            eedeI            eedeJ            eede'            eede(            eede)            eede&            eede-            eede4            eede*            eede            eede            eede            eede            eede+            eede#            eede$            eede%            eede5            eede8            eede             eede!            eede6            eede7            eede=            eede>            eedeC            eedeD            eede?            eedeA            eedeB            eede@            eedeM            eede2            eede3            eedeK            eedeL            eede            eede            eede            eede            eede            eede            eedeF            eedeF            eede9            eede"            eed e            eede            eede            eede            eedeQ            eedeR            eedeS            eedeU            eedeV            eed	eW            eed
eX            eedeX            eedeX            eedeY            eedeZ            eede            eede            eede            efdeNeO           dS (      N)Callable)AnyOptionalUnionabc           	         t          |           }t          |          }t          ||          }g }t          |          D ]}|dz
  |z
  }|dz
  |z
  }|dz
  |z
  }	|dk    r| |         nd}
|	dk    r||	         nd}|
|k    r$|
dk    r|dk    rt          d|
 d| d|           |                    |
dk    r|n|
           |S )N   r   zThe size of tensor a z" must match the size of tensor b (z) at non-singleton dimension )lenmaxrangeAssertionErrorappend)r   r   dimsAdimsBndimexpandedSizesioffsetdimAdimBsizeAsizeBs               _/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/jit/_shape_functions.py	broadcastr      s   FFEFFEueD!M4[[ = =Aqy6!qy6! AII$A AII$AE>>eqjjUaZZ xxxQVxxuvxx   	eqjjUUe<<<<    cc                 >    t          t          | |          |          S Nr   r   r   r   s      r   broadcast_threer"   4   s    Yq!__a(((r   c                 "    t          | |          S r   r    r!   s      r   broadcast_one_threer$   8   s    Q??r   selfoutc                 &   t          |          dk    rt          dt          |                     t          |           dk    s2t          |           dk    st          dt          |                      t          dt          |                     D ]!}| |         dk    rt          d| d	          "g }t          dt          |           dz
            D ]}|                    | |                    |D ]}|                    |           |S )
N   z'Expected out to have length 2, but got       z-Expected self to have length 3 or 4, but got r
   r   zExpected self[z] to be non-zero, but got 0)r   r   r   r   )r%   r&   r   shapeelems        r   adaptive_avg_pool2dr-   <   s)   
3xx1}}Qs3xxQQRRRIINNc$ii1nnGCIIGG
 
 	
 1c$ii   R R7a<< !P!!P!P!PQQQ  E1c$ii!m$$  T!W  TLr   c                 >    g }| D ]}|                     |           |S r   r   )r%   r&   r,   s      r   _copyr0   O   s0    C  

4Jr   c                      t          |           S r   r0   r%   s    r   unaryr4   V   s    ;;r   c                 X   t          |           }t          |          }||k    rt          d| d| d          t          |          D ]R}||z
  |z   }| |         }|dk    r||         nd}||k    r*|dk    r$t          d                    |||                    St	          |           S )NzThe dims of tensor b (z6) must be less than or equal to the dims of tensor a (z) r   r
   zZThe size of tensor a {} must match the size of tensor b ({}) at non-singleton dimension {})r   r   r   formatr0   )r   r   r   r   r   r   r   r   s           r   broadcast_inplacer7   Z   s    FFEFFEu}}kUkkbgkkk
 
 	
 e 	 	u}t#$ AII$AE>>eqjj 44:F5%4N4N   88Or   sizesc                 8   t          |          t          |           k     r0t          dt          |           dt          |            d          t          |          }t          |           }|dk    rt          |          S g }t          |          D ]}|dz
  |z
  }|dz
  |z
  }|dk    r| |         nd}||         }	|	dk    r|dk     rt          d| d          |}	||	k    r|dk    rt          d	| d
|	 d          |	}|                    |           |S )NzExpected len(sizes) (z) >= len(self) ()r   r
   Expected dim (z) >= 0 when targetSize is -1zExpected size (z ) == 1 when size != targetSize ()r   r   r0   r   r   )
r%   r8   r   
tensor_dimr&   r   r   dimsize
targetSizes
             r   expandrA   n   s]   
5zzCIILCJJLLD		LLL
 
 	
 u::DTJqyyU||C4[[  A1nv%1HHtCyy!1X
Qww$%Wc%W%W%WXXXJ:qyy$YdYYJYYY   D

4Jr   inp0c                 "    t          | |          S r   )rA   )r%   r8   rB   s      r   expand_one_unusedrD      s    $r   r+   numelreturnc                 V   d}d }t          t          |                     D ]H}| |         dk    r|t          d          |}"| |         dk    r|| |         z  }:t          d          ||k    s ||dk    r	||z  dk    st          d          t          |           }|||z  ||<   |S )Nr
   r;   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r0   )r+   rE   newsize	infer_dimr>   r&   s         r   infer_size_implrJ      s    G#ISZZ   = =:$$%IJJJII3Z1__uSz!GG !;<<<!gkkego6J6J_---
,,C')IJr   c                     d}| D ]}||z  }|S Nr
    )r8   rE   r,   s      r   rE   rE      s&    E  Lr   c                 <    t          |t          |                     S r   )rJ   rE   )r%   r8   s     r   viewrO      s    5%++...r   F)implicitrP   c                "    t          | |          S r   )rO   )r%   r8   rP   s      r   view_one_unusedrR      s    er   opt_dimskeep_dimdtc           	         g }|t          |          dk    r*t          t          t          |                               }n|}t          t          |                     D ]a}d}|D ]%}|t          |t          |                     k    rd}&|r|r|                    d           F|                    | |                    b|S )Nr   FTr
   )r   listr   maybe_wrap_dimr   )	r%   rS   rT   rU   r&   dimsidxis_mean_dim
reduce_dims	            r   sum_mean_dimr]      s     C3x==A--uSYY//00SYY 	" 	"! 	# 	#JnZT;;;;" 	" 

1JJtCy!!!!Jr   r>   c                 0    t          | |g|d           }||fS r   )r]   )r%   r>   rT   r&   s       r   max_dimr_      s     
tcUHd
3
3C8Or   xyc                     | |z  S r   rM   )r`   ra   s     r   div_rtnrc      s    6Mr   	inputSize
kernelSizepad_lpad_rstridedilation	ceil_modec                     t          | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |          dz   }|r|dz
  |z  | |z   k    r|dz
  }|S Nr
   r   )rc   )rd   re   rf   rg   rh   ri   rj   
outputSizes           r   pooling_output_shape_pad_lrrn      s     	 *q.)* 	
 '-vzzA/ 	
 	
 		   (Nf$	E(999#aJr   c           	      V    |dk    rt          d          t          | ||||||          S )Nr   zstride should not be zero)r   rn   )rd   re   rf   rh   ri   rj   s         r   pooling_output_shaperp      s=     {{8999&:ueVXy  r   inputkHkWdHdWpadHpadW	dilationH	dilationWnInputPlaneinputHeight
inputWidthoutputHeightoutputWidthc                 F   t          |           }|dk    r|dk    st          d| d| d          |dk    r|dk    st          d| d| d          |dk    r|dk    st          d| d| d          | d	         dk    o| d
         dk    }|dk    r| d         dk    r|s)|dk    r|r| d         dk    st          d| d|            |d
z  |k    r	|d
z  |k    s"t          d|d
z   d| d|d
z   d| d	          |d	k    r|d	k    st          d| d| d          d S )Nr   zExpected kW (z) > 0 and kH (z) > 0zExpected dW (z) > 0 and dH (zExpected dilationH (z) > 0 and dilationW (r
   r(   r)   r*   zInvalid input dimensions: ndim=z, input=zExpected kW//2 (z) >= padW (z) and kH//2 (z) >= padH (r:   zExpected outputWidth (z) >= 1 and outputHeight (z) >= 1r   r   )rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   
valid_dimss                   r   pool2d_shape_checkr      s     u::DFFrAvvHRHHrHHHIIIFFrAvvHRHHrHHHIIIMMi!mmS9SS9SSS
 
 	
 qQ058q=J		!HMM AII*IqQTtTTUTTUUU!GtOOa42rQw 2 24 2 2Ag2 2*.2 2 2
 
 	
 1!2!22[ 2 2)2 2 2
 
 	
 "3!2r   kernel_sizepaddingc                    t          |          dk    s"t          |          dk    st          d          |d         }t          |          dk    r|n|d         }t          |          dk    s5t          |          dk    s"t          |          dk    st          d          t          |          dk    r|n|d         }t          |          dk    r|}	nt          |          dk    r|}	n|d         }	t          |          dk    s"t          |          dk    st          d          |d         }
t          |          dk    r|
n|d         }t          |          dk    s"t          |          dk    st          d          |d         }t          |          dk    r|n|d         }t          |           dk    s2t          |           d	k    st          d
t          |                      t          |           d	k    r| d         nd}| d         }| d         }| d         }t          |||
|||          }t          ||||	||          }t          | ||||	|
||||||||           t          |           dk    r|||gS ||||gS )Nr
   r(   zKmax_pool2d: kernel_size must either be a single int, or a tuple of two intsr   zOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intszGmax_pool2d: padding must either be a single int, or a tuple of two intszHmax_pool2d: dilation must be either a single int, or a tuple of two intsr)   r*   z&Expected input length 3 or 4, but got r;   )r   r   rp   r   )rq   r   rh   r   ri   rj   rr   rs   rt   ru   rv   rw   rx   ry   nbatchrz   r{   r|   r}   r~   s                       r   
max_pool2dr   /  s    !!S%5%5%:%:Y
 
 	
 
QB;1$$+a.BKK1Fq 0 0CKK14D4D]
 
 	
 6{{aVAYB
6{{a	V		AYLLAW!2!2U
 
 	
 1:Dw<<1$$44'!*DMMQ#h--1"4"4V
 
 	
 I ]]a//		Xa[IJJ!OOs5zzQRc%jjRRSSSe**//U2YYqF)K)KrJ'Rr9iXXL&z2tRIVVK



  " 5zzQ\;77\;??r   c                 2    t          | |||||          }||fS r   )r   )rq   r   rh   r   ri   rj   r&   s          r   max_pool2d_with_indicesr   z  s%     UK(I
N
NC:r   output_sizescale_factorsc                    g }|                     | d                    |                     | d                    ||t          d          |y|t          d          t          |          dk    rt          dt          |                     |                     |d                    |                     |d                    ||t          d          t          |          dk    rt          dt          |                     |                     t          | d         |d         z                       |                     t          | d         |d         z                       |S )	Nr   r
   z5Either output_size or scale_factors must be presentedz9Must specify exactly one of output_size and scale_factorsr(   z/Expected output_size to have length 2, but got z1Expected scale_factors to have length 2, but got r)   )r   r   r   int)rq   r   r   r&   s       r   upsample_nearest2dr     s   
 CJJuQxJJuQx!4TUUU$ K   {q   T#kBRBRTT   	

;q>"""

;q>""" " K   }"" XCDVDVXX   	

3uQx-"2233444

3uQx-"2233444Jr   mat2c                 T   t          |           dk    r t          dt          |            d          t          |          dk    r t          dt          |           d          | d         |d         k    r!t          d| d          d|d                    | d         |d         gS )	Nr(   zself must be a matrix (got z dimensions)zmat2 must be a matrix (got r
   r   z.Matrix dimensions don't match for mm: self[1]=
, mat2[0]=r   r%   r   s     r   mmr     s    
4yyA~~R3t99RRRSSS
4yyA~~R3t99RRRSSSAw$q'YT!WYYPTUVPWYY
 
 	
 GT!Wr   tensorc                    t          |           dk    rt          |          dk    s/t          dt          |            dt          |                     | d         |d         k    r!t          d| d          d|d                    g }|S )Nr
   z+Expected 1D tensors for dot, got len(self)=z, len(tensor)=r   z(Dot product dimension mismatch: self[0]=z, tensor[0]=r   )r%   r   r&   s      r   dotr     s    IINNs6{{a//)#d)) ) )v;;) )
 
 	
 Aw&)WtAwWWFSTIWW
 
 	
 CJr   vecc                 $   t          |           dk    rt          |          dk    s/t          dt          |            dt          |                     | d         |d         k    r!t          d| d          d|d                    | d         gS )Nr(   r
   z0Expected 2D matrix and 1D vector, got len(self)=z, len(vec)=r   z*Matrix-vector dimension mismatch: self[1]=z	, vec[0]=r   )r%   r   s     r   mvr     s    IINNs3xx1}}#s4yy # #C# #
 
 	
 Aw#a&SaSS3q6SS
 
 	
 G9r   lic                     t          |t          |           dz             }t          |           }|                    |d           |S rL   )rX   r   r0   insert)r   r>   r&   s      r   	unsqueezer     s?    
c"ggk
*
*C
))CJJsAJr   c                     g }t          t          |                     D ])}| |         dk    r|                    | |                    *|S rL   )r   r   r   )r   r&   r   s      r   squeeze_nodimr     sK    C3r77^^  a5A::JJr!uJr   c                    g }t          |t          |                     }t          t          |                     D ]K}||k    r(| |         dk    r|                    | |                    0|                    | |                    L|S rL   )rX   r   r   r   )r   r>   r&   wrapped_dimr   s        r   squeezer     s    C c"gg..K3r77^^  !uzz

2a5!!!JJr!uJr   rY   c                    t          |          dk    r| S t          |          }t          t          |                    D ](}t          ||         t          |                     ||<   )g }t          t          |                     D ]I}| |         dk    r ||vr|                    | |                    .|                    | |                    J|S Nr   r
   )r   r0   r   rX   r   )r   rY   wrapped_dimsr   results        r   squeeze_dimsr     s    
4yyA~~	;;L3t99 C C(a#b''BBQF3r77^^ ! !a5A::$$be$$$MM"Q%    Mr   indexc                    t          |t          |                     }t          |          }t          |          dk    rt          dt          |                     |dk    s6|t          |           k     s#t          d| dt          |            d          g }t	          t          |                     D ]9}||k    r|                    |           |                    | |                    :|S )Nr
   z"Expected len(index) <= 1, but got r   r<   z) == 0 or dim < len(self) (r:   )rX   r   multiply_integersr   r   r   )r%   r>   r   rE   result_sizer   s         r   index_selectr     s    
c$ii
(
(Ce$$E
5zzA~~N#e**NNOOO1HHc$iiISIISYYIII
 
 	
  K3t99 ( (!88u%%%%tAw''''r   r;   weightindicespadding_idxscale_grad_by_freqsparsec                    t          |           dk    r t          dt          |            d          t          |          dk    rt          | d|          S t          |          }|                    | d                    |S )Nr(   z"Expected weight to be 2D, but got Dr
   r   )r   r   r   r0   r   )r   r   r   r   r   r?   s         r   	embeddingr     s~     6{{aP#f++PPPQQQ
7||qFAw///>>DKKq	Kr   c                      dS )Nl    rM   rM   r   r   max_intr   #  s    r   startendstepc                    t          |           }|dk    rt          d          t          ||          }||nd}||nt                      }|dk    rt          d|           |t                      k    rd}|dk     r|| |         z  }|dk     r|| |         z  }|dk     rd}n|| |         k    r| |         }||k     r|}n|| |         k    r| |         }||z
  }t	          |           }	||z   dz
  |z  |	|<   |	S )Nr   z#Cannot slice a 0-dimensional tensorzExpected step > 0, but got r
   )r   r   rX   r   r0   )
r%   r>   r   r   r   r   	start_valend_val	slice_lenr&   s
             r   slicer   '  s;    t99DqyyBCCC
d
#
#C*I_cc'))GqyyA4AABBBGII	1}}T#Y	{{491}}			T#Y		I		DI		s))#I
++CD 1$-CHJr   tensorsc                 T    | D ]$}t          |          dk    rt          d          %d S )Nr   z+Cannot concatenate tensor with 0 dimensionsr   )r   r   s     r   check_cat_no_zero_dimr   F  sD     P Pv;;! !NOOO P Pr   tensor_sizesc                     d }|D ]@}t          |          dk    r|d         dk    s|t          | t          |                    }A|| }|S rl   )r   rX   )r>   r   out_dimr?   s       r   legacy_cat_wrap_dimr   L  s[    !G 9 9D		Q47a<<(c$ii88Nr   c                 N    t          |           dk    ot          |           dk    S r   rE   r   )r   s    r   should_skipr   W  s#    ==A2#f++"22r   firstsecond	dimensionc                    t          |           }t          |          }||k    rt          d| d|           t          d|          D ]A}||k    r9| |         ||         k    r't          d| d| |          d||          d|           Bd S )Nz1Tensors must have same number of dimensions, got z and r   z0Sizes of tensors must match except in dimension , got z at dimension )r   r   r   )r   r   r   r   
first_dimssecond_dimsr>   s          r   check_cat_shape_except_dimr   [  s     UJf++K[  
   
 
 	
 Q
##  )SzVC[(($My M M :M M,23KM MGJM M   r   c                    t          |            t          ||           }t          |           dk    rt          d          d }| D ]}t	          |          s|}|dgS d}t          t          |                     D ]6}| |         }t	          |          st          ||||           |||         z   }7t          |          }|||<   |S )Nr   z(Cannot concatenate empty list of tensors)r   r   r   r   r   r   r   r0   )r   r>   not_skipped_tensorr   cat_dim_sizer   r   s          r   catr   n  s    '"""
c7
+
+C
7||qGHHH.2 ( (6"" 	(!'!s
L3w<<   6 66"" 	6&'963JJJ'&+5L*++K#Kr   c                 z    g }| D ]'}t          ||          }|                    |           (t          ||          S r   )r   r   r   )r   r>   unsqueezed_tensorsr   
unsqueezeds        r   stackr     sN    *, . .vs++
!!*----!3'''r   c                 H   t          |           }|dk    rt          d          t          ||          }| |         }|| k     s||k    rt          d| d| d|           |dk     r||z  }g }t          |          D ]#}||k    r|                    | |                    $|S )Nr   z)Cannot select from a 0-dimensional tensorzIndex z  is out of bounds for dimension z with size )r   r   rX   r   r   )r%   r>   r   r   r?   r&   r   s          r   selectr     s    t99DqyyHIII
d
#
#C9Du}}RURRCRRDRR
 
 	
 qyyC4[[    88JJtAwJr   tensor1tensor2c                    t          |           }t          |          }|dk    r|dk    rt          | |          S |dk    r|dk    rt          | |          S |dk    r2|dk    r,t          t	          t          | d          |          d          S |dk    r|dk    rt	          | |          S |dk    r|dk    r|dk    r| d         nd}g }t          |dz
            D ]}|                    | |                    |d         }g }t          |dz
            D ]}|                    ||                    t          ||          }	|	}
|dk    r|
                    |           |dk    r|
                    |           |
S t          d          )Nr
   r(   r   r   r;   z/both arguments to matmul need to be at least 1D)
r   r   r   r   r   r   r   r   r   r   )r   r   dim_tensor1dim_tensor2nbatch_tensor1r   pbatch_tensor2expand_batch_portionoutput_shapes              r   matmulr     s   g,,Kg,,KaK1,,7G$$$			kQ..'7###			kQ..r)GQ//991===			kQ..'7###			kQ.. '??GBKK#%{Q'' 	- 	-A  ,,,,BK#%{Q'' 	- 	-A  ,,,,  )FF ,??"""??"""NOOOr   c                     t          |           dk    rt          dt          |                      t          |           }|dk    rg }|S |dk    r	| d         gS | d         | d         gS )Nr(   z1Expected tensor to have <= 2 dimensions, but got r   r
   r   )r%   self_lenr&   s      r   tr     s|    
4yy1}}KD		KK
 
 	
 4yyH1}}
	QQyQa!!r   dim0dim1c                 t   t          |           }t          ||          }t          ||          }||k    rt          |           S g }t          |          D ]a}||k    r|                    | |                    $||k    r|                    | |                    F|                    | |                    b|S r   )r   rX   r0   r   r   )r%   r   r   ndimsr&   r   s         r   	transposer     s    IIE$&&D$&&Dt||T{{C5\\    99JJtDz""""$YYJJtDz""""JJtAwJr   biasc                     t          | t          |                    }|)t          ||          |k    rt          d| d|           |S )NzBias shape z& is not broadcastable to output shape )r   r   r   r   )rq   r   r   r&   s       r   linearr     s^    
&		
"
"CT33&& OdOO#OO   Jr   mat1betaalphac                 >    t          | t          ||                    S r   )r   r   )r%   r   r   r   r   s        r   addmmr     s    T2dD>>***r   arrayc                 $    d}| D ]
}|dk     rd}|S )NFr   TrM   )r   non_negativevals      r   check_non_negativer     s+    L    77Lr   weight_sizesgroupsc           	         t          |           }t          |          }t          |          rt          d|           t          |          rt          d|           ||k    rt          d| d| d          |d         |k     rt          d|d          d| d          |d         |z  dk    rt          d|d          d	| d          | d
         |d
         |z  k    r%t          d| d
          d|d
         |z   d          |@t          |          d
k    r|d         |d         k    st          d|d          d|           t          d|          D ]z}	| |	         d||	dz
           z  z   ||	dz
           ||	         d
z
  z  d
z   k     rEt          d| |	         d||	dz
           z  z    d||	dz
           ||	         d
z
  z  d
z    d|	           {d S )Nz"Padding must be non-negative, got z!Stride must be non-negative, got zExpected weight_dim (z) == k (r:   r   zExpected weight_sizes[0] (z) >= groups (z) to be divisible by groups (r
   zExpected input[1] (z) == weight_sizes[1] * groups (zFExpected bias to be None or have shape [1] with value weight_sizes[0]=r   r(   zCalculated padded input size (z)) is smaller than effective kernel size (z) at dimension )r   r   r   r   )
rq   r   r   rh   r   ri   r   k
weight_dimr   s
             r   check_shape_forwardr    s    	E

A\""J '"" MK'KKLLL&!! KIIIJJJQMZMMMMMNNNAPaPPvPPP
 
 	
 	Q& Q&&!a ! !! ! !
 
 	

 Qx<?V+++,%( , ,Q&(, , ,
 
 	
 TaDG|A4N4N=+A= =6:= =
 
 	

 1a[[  !Hq71q5>))QUO|A23a7
 
 !TqAA<N1N T TQUO|A':;a?T TPQT T  
 r   
input_sizeweight_sizec           	         t          | ||||||           t          |          dk    }t          |           }g }	d}
d}|	                    | |
                    |	                    ||                    t          d|          D ]^}|r||dz
           nd}|||         dz
  z  dz   }|	                    | |         d||dz
           z  z   |z
  ||dz
           z  dz              _|	S )Nr   r(   r
   )r  r   r   r   )r  r  r   rh   r   ri   r   has_dilationr>   r   input_batch_size_dimweight_output_channels_dimd	dilation_kernels                  r   conv_output_sizer  8  s!    Kvw&   x==1$L
j//CK!"z"67888{#=>???1c]] 
 
'3:HQUOO	k!nq01A5]a'!a%.01F:va!e}LqP	
 	
 	
 	
 r   c           	          t          |          dk    r t          dt          |           d          t          |           dk    r t          dt          |            d          t          | ||||||          S )Nr)   z#Expected 3D weight for conv1d, got r   z"Expected 3D input for conv1d, got r   r   r  rq   r   r   rh   r   ri   r   s          r   conv1dr  V  ~     6{{aQ3v;;QQQRRR
5zzQO#e**OOOPPPE64(FSSSr   c           	          t          |          dk    r t          dt          |           d          t          |           dk    r t          dt          |            d          t          | ||||||          S )Nr*   z#Expected 4D weight for conv2d, got r   z"Expected 4D input for conv2d, got r  r  s          r   conv2dr  f  r  r   grad_outputbiasesc                 N    t          |          t          |          | d         gfS rL   r2   )r  rq   r   r  s       r   conv_backwardsr  v  s$     <<vQ(888r   r
   output_paddingc                    |ddg}|ddg}|ddg}|ddg}t          |          dk    }t          |           }	g }
d}d}|
                    | |                    |
                    ||         |z             t          d|	          D ]j}|r||dz
           nd}|||         dz
  z  }|
                    | |         dz
  ||dz
           z  d||dz
           z  z
  |z   ||dz
           z   dz              k|
S )Nr
   r   r(   r   r   r   )rq   r   r   rh   r   r  r   ri   r  r>   r   r	  r
  r  r  r  s                   r   conv_transpose2d_inputr    sY    ~Qa&Qq6x==1$L
e**CK!"u12333v89FBCCC1c]] 	
 	
'3:HQUOO	fQi!m,1X\VAE]*'!a%. ! QU#$ 		
 	
 	
 	
 r   
transposedc	                    t          |          dk    }	t          |          dk    }
t          |           }g }d}|rdnd}|                    | |                    |r|                    ||         |z             n|                    ||                    t          d|          D ]}|	r||dz
           nd}|
r||dz
           nd}|rQ|||         dz
  z  }|                    | |         dz
  ||dz
           z  d||dz
           z  z
  |z   |z   dz              s|||         dz
  z  dz   }|                    | |         d||dz
           z  z   |z
  ||dz
           z  dz              |S )Nr   r
   r(   r  )rq   r   r   rh   r   ri   r  r  r   r  has_output_paddingr>   r   r	  r
  r  r  output_padding_r  s                      r   conv_forwardsr"    s    x==1$L^,,q0
e**CK&0!7au12333 ?6"<=FGGGG6"<=>>>1c]]  '3:HQUOO	3EL.Q//1 	&)a-0FqAA.ga!en$% "" 	    &)a-014FqQQ/069fQUmKaO    r   	benchmarkdeterministiccudnn_enabled
allow_tf32c                 0    t          | ||||||||	  	        S r   )r"  )rq   r   r   rh   r   ri   r  r  r   r#  r$  r%  r&  s                r   _conv_forwardsr(    s1     
 
 
r   running_meanrunning_vartrainingmomentumepsc	                 >    g }	| D ]}
|	                     |
           |	S r   r/   )rq   r   r   r)  r*  r+  r,  r-  r%  r&   r,   s              r   
batch_normr/    s2     C  

4Jr   c           	          t          |          dk    r t          dt          |           d          t          |           dk    r t          dt          |            d          t          | ||||||          S )N   z#Expected 5D weight for conv3d, got r   z"Expected 5D input for conv3d, got r  r  s          r   conv3dr2    r  r   Tdim_post_exprwrap_scalarc           	          |dk    r|st          d          d}| }|dz
  }| |k     s| |k    rt          d|  d| d| d          | dk     r| |z  } | S )Nr   z7Expected wrap_scalar to be True when dim_post_expr <= 0r
   z
Dimension z( out of range (expected to be in range [z, z]))r   )r>   r3  r4  minr   s        r   rX   rX     s     	 I   .C
!
C
SyyC#IITTTcTTSTTT
 
 	
 Qww}Jr   c                 
    g }|S r   rM   )rq   r&   s     r   zero_dim_tensorr8  !  s    CJr   c                     d}| D ]}||z  }|S rL   rM   )r   r&   r,   s      r   r   r   &  s&    
C  DjJr   inp1inp2inp3c                 x    | dk     rt          d|  d          t          t          j        |                     gS )Nr   Expected end () >= 0r   r   mathceil)r   rB   r:  r;  r<  s        r   
arange_endrC  -  s>    
Qww9c999:::	#  r   c                     |dk     rt          d| d          || k     rt          d| d|  d          t          t          j        || z
                      gS )Nr   r>  r?  ) >= start (r:   r@  )r   r   rB   r:  r;  r<  s         r   arange_startrF  3  sq     Qww9c999:::
U{{GcGGuGGGHHH	#+&&''((r   c                     |dk    rt          d          |dk     r| |k     rt          d|  d| d          n|| k     rt          d| d|  d          t          t          j        || z
  |z                      gS )	Nr   zstep must not be zerozExpected start (z
) >= end (z) when step < 0r>  rE  z) when step > 0r@  )r   r   r   rB   r:  r;  r<  s          r   arange_start_steprH  =  s     qyy4555axx3;; H5HHCHHH   
 ;; HHH%HHH   	3;$.//0011r   c                    t          |           t          |          k    r0t          dt          |            dt          |           d          t          |          }g }g }t          |          D ]H}t          ||         |          }|                    |           |                    | |                    It          d|          D ]?}t          |          D ]-}||         ||         k    rt          d||          d          .@|S )NExpected len(input) (z) == len(dims) (r:   r
   zRepeated dimension z in permute dimensions)r   r   r   rX   r   )rq   rY   r   	seen_dimsnewSizesr   r>   js           r   permuterN  O  s-   
5zzSYYLCJJLLD		LLL
 
 	
 t99DIH4[[ $ $T!Wd++c
####1d^^  q 	 	A|y|++$N)A,NNN   ,	
 Or   sourcedestinationc                 N   t          |           }|dk    r| S g }g }t          t          |                    D ]T}|                    t          ||         |                     |                    t          ||         |                     Ud t          |          D             }d t          |          D             }d t          |          D             }	t          t          |                    D ])}||         |||         <   d|||         <   d|	||         <   *g }
g }|D ]}|dk    r|
                    |           |	D ]}|dk    r|                    |           |t          |          z
  }t          |          D ]}|
|         |||         <   t	          | |          S )Nr
   c                     g | ]}d S r;   rM   .0r   s     r   
<listcomp>zmovedim.<locals>.<listcomp>m  s    )))AR)))r   c                     g | ]}|S rM   rM   rT  s     r   rV  zmovedim.<locals>.<listcomp>n      +++a+++r   c                     g | ]}|S rM   rM   rT  s     r   rV  zmovedim.<locals>.<listcomp>o  rX  r   r;   )r   r   r   rX   rN  )r%   rO  rP  self_dimnormalized_srcnormalized_dstr   ordersrc_dimsdst_dimssource_dimsdestination_dimselerest_dims                 r   movedimrd  d  s   4yyH1}} "N "N3v;; H HnVAYAABBBn[^XFFGGGG))x)))E++5??+++H++5??+++H3v;; ) )#1!#4nQ &("#&("##K"$ $ $"99s### ) )"99##C(((#f++%H8__ 4 4%0^q!""4r   	start_dimend_dimc                 p   t          |t          |                     }t          |t          |                     }||k    rt          d| d| d          t          |           dk    rdgS ||k    rg }| D ]}|                    |           |S d}t	          ||dz             D ]}|| |         z  }g }t	          |          D ]}|                    | |                    |                    |           t	          |dz   t          |                     D ]}|                    | |                    |S )NzExpected start_dim (z) <= end_dim (r:   r   r
   )rX   r   r   r   r   )rq   re  rf  r&   r,   slice_numelr   r+   s           r   flattenri    sd   y#e**55IWc%jj11G7WIWWWWWWXXX
5zzQs
G 	 	DJJt
K9gk**    uQx E9  U1X	LL7Q;E

++  U1XLr   c                 $    dt          |           gS Nr   r   rq   s    r   nonzero_lower_boundrn    s    s5zz?r   c                 >    t          |           t          |           gS r   r   rm  s    r   nonzero_upper_boundrp    s    %LL#e**%%r   keepdimc                     t          |t          |                     }g }t          |           D ]8\  }}||k    r|r|                    d           #|                    |           9|S rL   )rX   r   	enumerater   )r%   r>   rq  r&   r   rZ  s         r   _reduce_along_dimrt    sp    
c$ii
(
(CC  ! !888 

1JJx    Jr   c                 ,    |g S t          | ||          S r   )rt  )r%   r>   rq  s      r   argmaxrv    s      {	T3000r   c                    t          |           dk    r t          dt          |            d          t          |          dk    r t          dt          |           d          | d         |d         k    r!t          d| d          d|d                    | d         |d         k    r!t          d	| d          d
|d                    | d         | d         |d         gS )Nr)   z"bmm only supports 3D tensors, got r   r   z%mismatching batch dimension: self[0]=r   r(   r
   z+mismatching contracting dimension: self[2]=z
, mat2[1]=r   r   s     r   bmmrx    s    
4yyA~~N#d))NNNOOO
4yyA~~N#d))NNNOOOAw$q'PDGPPtAwPP
 
 	
 Aw$q'V$q'VVTRSWVV
 
 	
 GT!Wd1g&&r   c                 "    t          |           gS r   rl  r3   s    r   _shape_as_tensorrz    s    II;r   r  c           	          t          |           dk    rg }n>|| |         k    rt          d| d| d| |                    t          |           }|||<   ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r   r0   )r%   r  r>   r   s       r   topkr|    sv    
4yyA~~tCy== MaMMCMM$s)MM   ts6>r   target	reductionc                    t          |           }t          |          }d|cxk     rdk    sn t          d|           |dk    rt          d|           |dk    o|dk    }|s3| d         |d         k    s!t          d| d          d|d                    | d         }g }|4t          |          dk    r|d         |k    st          d	| d
|           |dk    r|dk    r
| d         g}	n|}	|	|fS )Nr   r(   z-Expected 0 < self_dim <= 2, but got self_dim=r
   z"Expected target_dim <= 1, but got zBatch size mismatch: self[0]=z, target[0]=r;   z:Expected weight to be None or have shape [n_classes], got z with n_classes=r   )
r%   r}  r   r~  rZ  
target_dimno_batch_dim	n_classesscalar_shapereduction_shapes
             r   nll_loss_forwardr    s^    4yyHVJAWXWWXXXA~~N*NNOOOq=4Z1_L 
T!Wq	11LDGLLLL
 
 	
 RI L3v;;!#3#3q	Y8N8N77 7+47 7
 
 	
 A~~(a--7)&L((r   normalized_shapec                    g }t          |           t          |          z
  }|dk     r0t          dt          |            dt          |           d          t          |          D ]}|                    | |                    t          |t          |                     D ]}|                    d           t	          |           ||fS )Nr   rJ  z) >= len(normalized_shape) (r:   r
   )r   r   r   r   r0   )rq   r  r  num_unreduced_dimensionsr   s        r   native_layer_normr    s     "$O"5zzC0@,A,AA!##)CJJ ) )$%%) ) )
 
 	
 +,, ) )uQx((((+SZZ88 " "q!!!!<</99r   c                 D    |r
| d         g}ndg}t          |           ||fS rl   r2   )rq   r   r   r)  r*  r+  _sizes          r   native_batch_normr    s3      q
<<%%r   c                 <    | d         g}t          |           ||dgfS rl   r2   )rq   r   r   r)  r*  r  s         r   _batch_norm_with_updater    s&     1XJE<<s**r           ignore_indexlabel_smoothingc                 6    t          | |||          d         }|S rk  )r  )r%   r}  r   r~  r  r  result_shapes          r   cross_entropy_lossr  %  s"     $D&&)DDQGLr   shape_compute_graph_mappingbounded_compute_graph_mappingscript_func_mapfuncc                 |   | t           vrt          j                            |           }t          j                            |j                   t          d          D ]J}t          j                            |j                   t          j        	                    |j                   K|t           | <   t           |          S )Nr(   )
r  torchjitscript_C_jit_pass_inlinegraphr   _jit_pass_peephole_jit_pass_constant_propagation)r  scripted_func_s      r   process_funcr  J  s    ?""	((..!!-"5666q 	I 	IAH''(;<<<H33M4GHHHH -4  r   operator_schemac                 4    t          |          t          | <   d S r   )r  r  )r  r  s     r   add_shape_compute_mappingr  X  s     4@3E3E000r   lower_bound_funcupper_bound_funcc                 V    t          |          t          |          f}|t          | <   d S r   )r  r  )r  r  r  fnss       r   add_bounded_compute_mappingr  ^  s1     ())<8H+I+I
JC58!/222r   z^aten::contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a)zFaten::rsub.Tensor(Tensor self, Scalar other, Scalar alpha=1) -> Tensorz:aten::dropout(Tensor input, float p, bool train) -> TensorzDaten::adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensorz,prim::NumToTensor.Scalar(Scalar a) -> Tensorz(prim::NumToTensor.bool(bool a) -> Tensorzuaten::zeros(int[] size, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z{aten::to.dtype(Tensor(a) self, int dtype, bool non_blocking=False, bool copy=False, int? memory_format=None) -> (Tensor(a))zvaten::arange(Scalar end, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)zaten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorzaten::arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz*aten::squeeze(Tensor(a) self) -> Tensor(a)z7aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)z:aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)z5aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)zfaten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> Tensor(a)zAaten::select.int(Tensor(a) self, int dim, int index) -> Tensor(a)z@aten::index_select(Tensor self, int dim, Tensor index) -> Tensorzaten::layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> TensorzIaten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensorzhaten::_no_grad_embedding_renorm_(Tensor weight, Tensor input, float max_norm, float norm_type) -> Tensorzgaten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)z~aten::embedding(Tensor weight, Tensor indices, int padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensorz,aten::mm(Tensor self, Tensor mat2) -> Tensorz/aten::dot(Tensor self, Tensor tensor) -> Tensorz+aten::mv(Tensor self, Tensor vec) -> Tensorz1aten::matmul(Tensor self, Tensor other) -> TensorzFaten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensorzaten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensorzaten::max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)z$aten::t(Tensor(a) self) -> Tensor(a)zDaten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)zaten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> Tensorzaten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensorzaten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensorzaten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensorzaten::convolution_backward(Tensor grad_output, Tensor input, Tensor weight, int[]? bias_sizes, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor)zaten::convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensorzaten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensorzaten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> TensorzVaten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)z0aten::cat(Tensor[] tensors, int dim=0) -> Tensorz2aten::stack(Tensor[] tensors, int dim=0) -> Tensorz6aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)zSaten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)z3aten::view(Tensor(a) self, int[] size) -> Tensor(a)z:aten::expand_as(Tensor(a) self, Tensor other) -> Tensor(a)zMaten::expand(Tensor(a) self, int[] size, *, bool implicit=False) -> Tensor(a)zaaten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensorzhaten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> TensorzZaten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)z<aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensorz;aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensorz^aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensorzbaten::upsample_nearest2d.vec(Tensor input, int[]? output_size, float[]? scale_factors) -> (Tensor)z_aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensorzraten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensorz'aten::dequantize(Tensor self) -> TensorzNquantized::add(Tensor qa, Tensor qb, float scale, int zero_point) -> Tensor qczFaten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensorz-aten::bmm(Tensor self, Tensor mat2) -> Tensorz-aten::_shape_as_tensor(Tensor self) -> Tensorzraten::topk(Tensor self, int k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)zaten::nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)zaten::native_layer_norm(Tensor input, int[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)zaten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z_batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor)zaten::cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> TensorzCaten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> TensorzMaten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> TensorzQaten::add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)z&aten::nonzero(Tensor self) -> (Tensor))r;   FF)NNNNr
   N)T)NFrS  )Nr
   r  r  )grA  collections.abcr   typingr   r   r   r   floatnumberr  rW   r   r"   r$   r-   r0   r4   r7   rA   rD   rJ   rE   rO   boolrR   r]   r_   rc   rn   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r"  r(  r/  r2  rX   r8  r   rC  rF  rH  rN  rd  ri  rn  rp  rt  rv  rx  rz  tupler|  r  r  r  r  r  r  ScriptFunctionScriptFnr  dictstr__annotations__r  r  r  r  r  rM   r   r   <module>r     s    $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' 
sEz	$ c tCy    0)tCy )T#Y )49 ) ) ) )49  c    d3i d3i    &S	    S	    c tCy    (c 49    :DI d3i s    49 S T#Y    .c    /tCy /c / / / / LQ   $s) DI D    
s)'S	2>BHK   ,$s) #     s s      	
      6  	
     -
9-
-
 	-
 		-

 	-
 -
 -
 -
 -
 -
 -
 -
 -
 -
 -
 -
 -
`H@9H@cH@ IH@ #Y	H@
 3iH@ H@ H@ H@ H@V	9	c	 I	 #Y		
 3i	 	 	 	 	$9$$s)$$ DK($ $ $ $N
T#Y 
d3i 
 
 
 
d3i c    T#Y T#Y    $s) #    d3i    	S	 	 	 	 	 	T#Y d3i     tCy s 49    * $ I#Y  	
       
s)&.sm:B3-OR   >P4S	? P P P PS T#Y    3S	 3 3 3 39"3i47@C   &d3i s    2(4S	? ( ( ( ( (c  S    &&PDI &PS	 &P &P &P &PR"DI " " " "DI S     "$s) T#Y htCy6I    +S	 +c +$s) +3 +s + + + +d3i D    191s)1 49
1 I	1
 #Y1 3i1 1 1 1 1lS	c 49
 I	
 #Y 3i    <T9TIT 49
T I	T
 #YT 3iT T T T T T9TIT 49
T I	T
 #YT 3iT T T T T 9c999 I9 T#Y	9 9 9 9 !%"&#'*.$($ $9$I$ 49
$ T#Y	$
 d3i $ T#Y'$ $ tCy!$ 
#Y$ $ $ $N(9(I( 49
( I	(
 #Y( 3i( ( I( ( 
#Y( ( ( (V9I 49
 I	
 #Y 3i  I      
#Y   89T#Y 49
 49%	
 $s)$   
    "T9TIT 49
T I	T
 #YT 3iT T T T T   C d    $3    
$s)    !F !# !S ! !3 ! ! ! !)))&))14)<?)GJ) ) ) )222&,2472?B2JM2UX2 2 2 2$49 DI    * $s)  T#Y  T#Y  4PS9        B49  s    6tCy    &tCy & & & &	DI 	C 	$ 	 	 	 	 AF1 1
s)1"3-19=1	#Y1 1 1 1'd3i 'tCy 'T#Y ' ' ' ' 49 c    
 
tCy 
S 
s 
E$s)T#Y:N4O 
 
 
 
)
s))!#Y)08c0C)PS)
49d3i ) ) ) )::9:(,S	:
49d3ic*+: : : :"&9&T#Y& 49
& 49%	&
 $s)$& & 49d3ic*+& & & &+9+T#Y+ 49
+ 49%	+
 $s)$+ 49d3icDI56+ + + + #' 	 	
s)	I	 T#Y	 		
 	 	 
#Y	 	 	 	& 8"35 T#x-0 5 5 5FH tCx/A)B$BC H H H,.h() . . .!x ! ! ! !Fs F( F F F F99,49HP9 9 9 9  d	    Le    @%    J    2O    Do V V V  {	     B	    |     Y     k    F V V V  =w    @,    ;Y    l	    G    F    9	  
  OQV    n	    m	     E    H" M M M  KS Q Q Q  G L L L  Mv V V V  Lf     O     f    @! D D D  JI     Q
     Q
     v     Q
     v     m     w     z    \    Lc R R R  NPU V V V  <g    Y    OQU V V V  @&    S    g    n    `    BO    A?    d	    h    e	    x	    CU K K K  T    Lf    I3 O O O  35E    x     R     I     {     @     I     z  
   c    I    S    W    ,.ACV    r   