
    sg              
          U d dl Z d dlZd dlZd dl d dlZd dlmc mZ d dl	m
Z
 d dlmZ ddlmZ g Zee   ed<   i Zeeef   ed<   d	 Z	 d~d
ZddZdeddfdZdededededdf
dZd Zd Zd Z e j<                  ee      Zde e!   fdZ"d Z#d Z$d Z%d Z& eejN                  jP                  jR                  jT                  ejN                  jP                  jV                  jT                  ejN                  jP                  jX                  jT                  ejN                  jP                  jZ                  jT                  ejN                  jP                  j\                  jT                  ejN                  jP                  j^                  jT                  ejN                  jP                  j`                  jT                  gd      d        Z1 eejN                  jd                  jf                  jT                  d      d        Z4 eejN                  jP                  jj                  jT                  gd      d        Z6 eejN                  jP                  jn                  jT                  d      d         Z8  eejN                  jP                  jn                  jr                  d!      e8        eejN                  jP                  jt                  jT                  d"      d#        Z; eejN                  jP                  jx                  jT                  d$      d%        Z= eejN                  jP                  j|                  jT                  d&      d'        Z? eejN                  jP                  j                  j                  d(      d)        ZB eejN                  jP                  j                  jT                  d      d*        ZD eejN                  jP                  j                  jT                  d+      d,        ZF  eejN                  jP                  j                  jT                  d      e$        eejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd      d-        ZL eejN                  jP                  j                  jT                  d      d.        ZN eejN                  jP                  j                  jT                  d/      d0        ZP eejN                  jP                  j                  jT                  d1      d2        ZR eejN                  jP                  j                  jT                  d3      d4        ZT eejN                  jP                  j                  jT                  d5      d6        ZV eejN                  jP                  j                  j                  d7      d8        ZY eejN                  jP                  j                  j                  d9      d:        Z\ eejN                  jP                  j                  jT                  d;      d<        Z^ eejN                  jP                  j                  jT                  d=      d>        Z_ eejN                  jP                  j                  jT                  d?      d@        Za eejN                  jP                  j                  j                  dA      dB        Zd eejN                  jP                  j                  jX                  dC      dD        Zf eejN                  jP                  j                  jT                  dC      dE        Zh eejN                  jP                  j                  jT                  dF      dG        Zj eejN                  jP                  j                  jT                  dH      dI        Zl eejN                  jP                  j                  jT                  dJ      dK        Zn eejN                  jP                  j                  jT                  dL      dM        Zp eejN                  jP                  j                  j                  dN      dO        Zs eejN                  jP                  j                  jT                  dP      dQ        Zu eejN                  jP                  j                  jT                  dP      dR        Zw eejN                  jP                  j                  jT                  dS      dT        Zy eejN                  jP                  j                  j                  dU      dV        Z| eejN                  jP                  j                  j                  dW      dX        Z~ eejN                  jP                  j                  jT                  dY      dZ        Z eejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd[      d\        Z eejN                  jP                  j                  jT                  d]      d^        Z eejN                  jP                  j                  jT                  d_      d`        Z eejN                  jP                  j                  j                  da      db        Z eejN                  jP                  j                  j                  dc      dd        Z eejN                  jP                  j                  jT                  de      df        Z eejN                  jP                  j                  jX                  dU      dg        Z eejN                  jP                  j                   jT                  dF      dh        Z eejN                  jP                  j$                  jT                  di      dj        Z eejN                  jP                  j(                  jT                  ejN                  jP                  j*                  jT                  gd      dk        Z eejN                  jP                  j.                  jT                  d      dl        Z eejN                  jP                  j2                  jT                  dm      dn        Z eejN                  jP                  j6                  jT                  d      do        Z eejN                  jP                  j8                  jT                  d      dp        Z eejN                  jP                  j:                  jT                  d      dq        Z eejN                  jP                  j<                  jT                  d      dr        Z eejN                  jP                  j>                  jT                  d      ds        Z eejN                  jP                  j@                  jT                  dt      du        Z eejN                  jP                  jD                  jT                  dv      dw        ZejF                  jI                  dxdy      5 Z(e(jK                  dzed{       e(jK                  dzed|       e(jK                  dzed}       ddd       y# 1 sw Y   yxY w)    N)*)normalize_function)#jagged_scaled_dot_product_attention   )NestedTensor__all__JAGGED_OPS_TABLEc                 2    |dk\  r|| k  sJ |dk  rdS |dz
  S )Nr      r    )ndimdims     M/var/www/html/venv/lib/python3.12/site-packages/torch/nested/_internal/ops.py_outer_to_inner_dimr      s*    !8d
""a1$S1W$    c                     ddl m}  || |      }|dk(  rt        | d      |dk(  r|st        | d      |rt        | |      S |S )Nr   canonicalize_dimsr   z+(): not supported for NestedTensor on dim=1z+(): not supported for NestedTensor on dim=0)torch._prims_commonr   RuntimeErrorr   )r   r   op_nameconvert_to_inner_dimallow_batch_dimr   wrappeds          r   _wrap_jagged_dimr      s^     6c*G!|gY&QRSS	AogY&QRSS1EtW-R7Rr   c                     ddl m} t        |t        t        f      sJ dt        |              |D cg c]  } | |       }}d|v }|v }t        fd|D              }	t         fd|D              }
|
|||	fS c c}w )z
    For NestedTensor operators,
    wraps dimensions to non-negative values,
    and returns metadata related to reduction dimension(s).
    r   r   z<_wrap_jagged_dims(): cannot iterate over dimensions of type c              3   6   K   | ]  }|d k7  xr |k7    ywr   Nr   ).0d
ragged_idxs     r   	<genexpr>z$_wrap_jagged_dims.<locals>.<genexpr>:   s!     PaqAv9!z/9Ps   c              3   B   K   | ]  }|d k7  s	t        |        ywr   )r   )r   r    r   s     r   r"   z$_wrap_jagged_dims.<locals>.<genexpr><   s$      )*a1fD!$s   
)r   r   
isinstancetuplelisttypeany)r   dimsr   r!   r   r    wrapped_dimsoperate_on_batchoperate_on_raggedoperate_on_non_batchouter_to_inner_dims   `  `       r   _wrap_jagged_dimsr/   (   s     6udm S	Ed4j\RS 
 -1'($"L  L("l2P<PP .:  /1BDXXXs   A>
schema_strreturnc                 :   | j                  d      }|D cg c]  }|j                  d       c}j                  d      }t        |      |z
  }|d   dk(  r|d d }n\t        |      |k\  rt        |      t        |      k  s7t	        d|j
                   d|  d| d	t        |       d
t        |       d      d d d d d}t        |      D ]  \  }	}
|
j                  d      \  }}|j                  d      }|r|d d n|}||j                         vrt        d|       |	t        |      k\  r!|st	        d|j
                   d|  d|       ||   |ffd	} |||	         rdddddd}t	        d|j
                   d|  d| d||           y c c}w )N, ?T...NestedTensor (z): expected at least z arguments and at most z arguments, but got: z
 argumentsc                 \    t        | t        j                        xr t        | t               S N)r$   torchTensorr   xs    r   <lambda>zcheck_schema.<locals>.<lambda>T   s     z!U\\2V:a;V7V r   c                 d    t        | t              xr | j                  d u xr | j                  dk(  S Nr   )r$   r   _lengths_ragged_idxr=   s    r   r?   zcheck_schema.<locals>.<lambda>U   s2    
1l3 JJ$MMQ r   c                 "    t        | t              S r:   r$   r   r=   s    r   r?   zcheck_schema.<locals>.<lambda>X   s    J|
 r   c                      y)NTr   r=   s    r   r?   zcheck_schema.<locals>.<lambda>[   s    r   )tjtjt_allr(   z: zUnknown arg type: z) missing required argument: c                 4    |r| d u xs  |       S  |       S r:   r   )r>   is_optional	_check_fns     r   check_fnzcheck_schema.<locals>.check_fnn   s#    Dy0IaL0 |#r   tensorzoptional tensorz%contiguous jagged layout NestedTensorzjagged layout NestedTensorz
<any type>)rG   zt?rH   rI   r(   z): expected z	 to be a )	splitendswithcountlen
ValueError__name__	enumeratekeysAssertionError)r0   funcargskwargsnamed_arg_typesr>   num_optional_argsmin_argsarg_type_check_fnsinamed_arg_typenamearg_typerK   normalized_arg_typerM   type_to_descrL   s                    @r   check_schemare   C   s    &&t,O2ABQCBHHN?#&77H re#)#2.D	X%#d)s?7K*Ka
|;PQYPZ [)),_)=(>>St9+Z)  W
 	 '7 #>'--d3h'',/:hsm&8&=&=&?? #56I5J!KLLD	> #DMM?!J< @2269  &':;	$/ 	$ Q '=6#L a
|<vY)*, A#1 Cs   Faa_namebb_namec           	          |j                   |j                     |j                   |j                     k7  rt        d| j                   d| d| d      y )Nr7   z: expected  and z' to have the same exact offsets tensor.)_sizerC   r   rT   )rX   rf   rg   rh   ri   s        r   check_ragged_dim_samerm      sZ     	wwq}}!77DMM?+fXU6( K) )
 	
 8r   c                     | j                   dz   }| j                  d | }|d | }t        |      t        |      k(  xr t        d t	        ||      D              S )Nr   c              3   :   K   | ]  \  }}||k(  xs |d k(    yw)r5   Nr   )r   nsss      r   r"   z%raggedness_matches.<locals>.<genexpr>   s$     H52qB!GqBwHs   )rC   rl   rR   allzip)ntsizeend	nt_raggedsize_raggeds        r   raggedness_matchesry      sZ    
..1
C#It*Ky>S-- HC	;,GHHr   c                     | j                         dkD  rI| j                  d   dk(  r7| j                  d      } | j                         dkD  r| j                  d   dk(  r7| S Nr   r   )r   shapesqueeze)rG   s    r   squeeze_leading_onesr~      sN    & %%'A+!''!*/IIaL %%'A+!''!*/Hr   c                 f     t        t              sgt         t              s g  fd}|S )Nc                 H     D ]  } fd}D ]  } ||      ||<      S )Nc                       fd}|S )Nc                  <    t        g| i |  g| i |S r:   )re   )rY   rZ   aten_oprX   r0   s     r   innerz@register_func.<locals>.wrapper.<locals>.get_inner.<locals>.inner   s,     TCDCFC9$9&99r   r   )r   r   rX   r0   s   ` r   	get_innerz1register_func.<locals>.wrapper.<locals>.get_inner   s    : r   r   )rX   r   r   tableaten_opsr0   tabless   `   r   wrapperzregister_func.<locals>.wrapper   s=     
	4G   4!*7!3g4
	4 r   )r$   r&   )r   r   r0   r   s   ``` r   register_funcr      s1    h%:fd# Nr   c                    t         j                  | d       }||S t        j                  j                  | j
                  v rt        d |D              }|dk(  rg }| j                  j                  D ]d  }t        |j                  t        j                        r |j                  |j                   d        n |j                  |j                   d       f |j                  d       dj                  |      }t        || g|i | t!        j"                  t$        |       S |dk(  r*t        d| g|i | t!        j"                  t&        |       S y )	Nc              3   P   K   | ]  }t        |t        j                           y wr:   )r$   r;   r<   )r   r>   s     r   r"   z lookup_jagged.<locals>.<genexpr>   s     HajELL9Hs   $&r   z: jt_allz: anyr6   r3   r   zlhs: any, rhs: any, ...)r	   getr;   Tag	pointwisetagssum_schema	argumentsr$   r'   
TensorTypeappendra   joinre   	functoolspartialjagged_unary_pointwisejagged_binary_pointwise)rX   rY   rZ   dispatch_funcnum_tensor_argsschema_partsargcheck_schema_strs           r   lookup_jaggedr      s5   $((t4M  yydii'H4HHa L||-- <chh(8(89 ''388*H(=> ''388*E(:;< &#yy6)4A$A&A$$%;TBB!2DJ4J6J$$%<dCCr   c                 V    | j                         | j                  | j                  d}|S )Noffsets_metadata_cacherC   r   )r   rZ   s     r   extract_kwargsr      s)    ;;=..F
 Mr   c                 p    t        d |D              t         | fd|D        i |fi t              S )Nc              3   B   K   | ]  }t        |t              s|  y wr:   rE   )r   r   s     r   r"   z)jagged_unary_pointwise.<locals>.<genexpr>   s     Dsjl&CsDs   c              3   B   K   | ]  }|u r|j                   n|  y wr:   )_values)r   r   njts     r   r"   z)jagged_unary_pointwise.<locals>.<genexpr>   s      BccSjs{{c1Bs   )nextr   r   )rX   rY   rZ   r   s      @r   r   r      s@    
DdD
DCBTBMfM

 r   c           	         |d   |d   }}t        |t              st        |t              sJ d}t        |t              rt        |t              rt        ||j                        r7t         | |j                  |j                  g|dd  i |fi t        |      S t        |j                  | j                  |j                  |j                              t        |t              }|rt        |      n
t        |      }|r||fn||f\  }}	|	j                         |j                         kD  rt        d      t        |	      }
|j                         |
j                         dz   k\  r;|r|j                  |
fn|
|j                  f\  }}t         | ||g|dd  i |fi |S |j                         |j                         k(  r|j                  d   |j                  d   k7  r:t        |j                  | j                  |j                  |j                              g }t        |j                         |j                               D ]$  \  }}|j                   | ||g|dd  i |       & t!        j"                  |d      }t        |fi |S t        |j                  | j                  |j                  |j                              )Nr   r   zHcannot call binary pointwise function {} with inputs of shapes {} and {}r   z+NYI: broadcasting NT with T with larger dimr   )r$   r   ry   rl   r   r   r   formatrT   r   NotImplementedErrorr~   r|   rs   unbindr   r;   cat)rX   rY   rZ   rf   rh   mismatch_error_msga_is_ntextracted_kwargsrt   rG   
t_squeezedlhsrhsoutputsa_compb_comp
new_valuess                    r   r   r      s{   7DGqAa&*Q*EEE 	S  !\"z!\'B a)QYY		?DH??CQRSCT  -44T]]AGGQWWUVVL)G,3~a(9J QFAq6EBuuw!"OPP%a(J	vvx:>>#a''/6BJJ
+Z<TSDc?DH??TCSTT
 	uuw!%%' 771:#"))$--!''J  !!((*ahhj9 	FNFFNN4DabDVDE	FYYwA.
J;*:;; )00Q
RRr   c                    | t         j                  j                  j                  u rt	        |i |S | j
                  dk(  r! | |d   j                  g|dd  i | |d   S | j
                  dk(  rdd}t        |||d      \  }}|j                  d      }t        |j                         |d	   dd
      }t        |j                         |d   dd
      }||k(  r|S t        j                  t        j                  |j                  ||dz          }	g |j                  d | |	|j                  |dz   d  }
 |j                   |
 S t#        |       )Napply_r   r   flattenc                      y r:   r   )input	start_dimend_dims      r   _flatten_sigz+jagged_torch_function.<locals>._flatten_sigD  s    r   TrY   rZ   normalize_to_only_use_kwargsr   r   F)r   r   )r   r5   )r;   _C_nnscaled_dot_product_attentionr   rT   r   r   popr   r   r   reduceoperatormulr|   reshaper   )rX   rY   rZ   r   _
new_kwargsinpr   r   product	new_shapes              r   jagged_torch_functionr   7  s\    uxx||8882DCFCC}} T!W__2tABx262Aw }}	!	 +tFQU
: nnW% %GGIz+.	PU
	 #GGIz),ie
 J""8<<9wQR{1STPcii
+PWPsyy17OP	s{{I&&
d
##r   zself: jt_allc                 8   | t         j                  j                  j                  j                  k(  ry| t         j                  j                  j
                  j                  k(  r|d   j                  S | t         j                  j                  j                  j                  k(  rt        |d   j                        S | t         j                  j                  j                  j                  t         j                  j                  j                  j                  fv rs|d   j                  Gt        t        |d   j                        t        j                  |d   j                  dd        z        S |d   j                   j                         S | t         j                  j                  j"                  j                  k(  r|d   j$                  S | t         j                  j                  j&                  j                  k(  r|d   j                   j)                         S y )NFr   r   )r;   opsatenis_non_overlapping_and_densedefaultsym_sizerl   r   rR   	sym_numelnumelrB   intr   mathprodr   
sym_stride_stridessym_storage_offsetstorage_offsetrX   rY   rZ   s      r   tensor_attr_supported_getterr   `  ss    uyy~~::BBBuyy~~&&...Aw}}uyy~~!!)))47==!!		((00%))..2F2F2N2NOO7's47++,tyyaqr9J/KKLLAw$$&&uyy~~((000Awuyy~~00888Aw--// 9r   c                 "    t         j                  S r:   )r;   jaggedr   s      r   prim_layout_defaultr     s    <<r   c                 |    | t         j                  j                  j                  j                  k(  rt        d      y )NznNestedTensors does not support directly calling torch.ops.aten.size please use `nested_tensor.size()` instead.)r;   r   r   ru   r   r   r   s      r   tensor_attr_unsupported_getterr     s7    
 uyy~~""***9
 	
 +r   c                    ddl m} t        | ||d      \  }}|j                  d      }|j	                         y|j                  dt        j                        |d<   |d   t        j                  k(  ry ||j                  fi |S )Nr   )is_contiguous_for_memory_formatTr   r   Fmemory_format)
r   r   r   r   lengthsr   r;   contiguous_formatpreserve_formatr   )rX   rY   rZ   r   r   r   r   s          r   is_contiguous_generalr     s    C&4TMAz ..
!C {{} ",..00#J /"e&;&;;*3;;E*EEr   z!self: jt_all, memory_format: any?z"input: jt_all, memory_format: any?c                 l   t        | ||d      \  }}|j                  d      }t        |      }|j                  ^|d   t        j
                  k(  r9ddlm} |j                  dk(  sJ d        ||j                         d       \  }}|S |j                  |d	<   t         | |j                  fi |fi |S )
NTr   r   r   r   )jagged_from_listz;NJT with ragged_idx != 1 not supported for contiguous clone)r   r   )r   r   r   rB   r;   r   nested_tensorr   rC   r   r   r   )	rX   rY   rZ   r   r   r   new_metar   contigs	            r   clone_defaultr     s     '4TMAz ..
!Cc"H
||o&%*A*AA 8 1$MLM$(tDIFAM #&,,HYS[[7J7D8DDr   zinput: jt, weight: t, bias: t?c                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S NTr   r   r   r   r   r   r   rX   rY   rZ   r   r   r   s         r   linear_defaultr     L    &4TMAz ..
!CS[[7J7O>#;NOOr   z6self: jt, grad_output: jt, weight: t, output_mask: anyc                    t        | ||d      \  }}|j                  d      }|j                  d      }|j                  d      }t        | |d|d       t        t	        j
                  |j                  |      fi t        |      }t	        j
                  |j                  j                  dd      |j                        }	d }
||	|
fS )	NTr   r   grad_outputweightselfr5   )	r   r   rm   r   r;   matmulr   r   	transpose)rX   rY   rZ   r   r   r   r   r   dsdwdbs              r   linear_backward_defaultr    s    
 '4TMAz ..
!C../K^^H%F$V[-H	[((&1
5CK5P
B 
k))33B;S[[	IB	BB<r   zinput: jt_all, dtype: anyc                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r   r   r   s         r   to_dtyper	    r   r   c                    ddl m} t        | ||d      \  }}|j                  d      }|j                  d        | |j                  fi |}|j
                  j                  |j                        }dd	lm	}	 dd
l
m}
m} t        ||	|
f      r, ||      } ||j
                        }|j                  |_        n||j
                     ||<   t        |      }||d<   t!        |fi |S )Nr   )_tensor_symint_registryTr   r   layout)devicer   )
FakeTensor)FunctionalTensormb_unwrap_functional_tensorr   )r   r  r   r   r   _offsetstor  torch._subclasses.fake_tensorr  #torch._subclasses.functional_tensorr  r  r$   nested_int_memor   r   )rX   rY   rZ   r  r   r   r   r   new_offsetsr  r  r  tgtsrc
inp_kwargss                  r   to_copy_defaultr    s    6&4TMAz ..
!CNN8ckk0Z0J,,//):):/;K8
 +
,<=>)+6)#,,7!11/Fs||/T,$J'Jy
1j11r   z-self: jt_all, src: jt_all, non_blocking: any?c                    t        | ||d      \  }}|j                  d      }|j                  d      }|j                  |j                  k7  rt        d      |j	                         j                  |j	                                |S )NTr   r   r  zXcopy_ only supports Nested Tensors that have same size and the exact same offset tensor.)r   r   rl   r   valuescopy_)rX   rY   rZ   r   r   r   r  s          r   copy_defaultr    sz     '4TMAz ..
!C
..
C
yyCIIf
 	
 JJLszz|$Jr   c                     t        | ||d      \  }}|j                  d      }t        j                  |d<   t	         | |j
                  fi |fi t        |      S )NTr   r   r  )r   r   r;   stridedr   r   r   r   s         r   like_factory_defaultr!  0  s^     '4TMAz ..
!C
 !==JxS[[7J7O>#;NOOr   c                 p    t        | ||d      \  }}|j                  d      } | |j                         |S r   r   r   r   r   s         r   zero__defaultr$  H  s:    &4TMAz ..
!CJr   z*self: jt_all, dim: any, half_to_float: anyc           
      H   t        | ||d      \  }}t        |d   t              rt        d      |j	                  d      }t        |j                         |d   fd|j                        \  |d<   }}}|rt        d      |r|j                  dkD  rt        d	      |r|j                  t        d
      |d   d   |d<   |r:t        j                  j                  j                  t        j                  j                  j                  |j                   j#                  |j                   j$                  d   d      |j&                  g|j(                  gt+        d            |j                        }	t        j                  j                  j-                  |	|j&                  g|j                   j$                  d         j"                  dg|j                   j$                  dd   }
t/        |
fi t1        |      S t/         | |j                   fi |fi t1        |      S )NTr   r   zHsoftmax(): not supported for dimensions of type 'tuple' for NestedTensorr   softmaxzRsoftmax(): not supported when reducing across the batch dimension for NestedTensorr   zesoftmax(): not supported when reducing along the ragged dimension for ragged_idx > 1 for NestedTensorzksoftmax(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorr   r5   z-inf)max_lengthspadding_valuer   total_L)r   r$   r%   r   r   r/   r   rC   rB   r;   nn
functionalr&  r   r   _jagged_to_padded_dense_forwardr   r   r|   r  _max_seqlenfloat_padded_dense_to_jagged_forwardr   r   )rX   rY   rZ   r   r   r   reduce_on_batchreduce_on_raggedreduce_on_non_batchpadded_softmax_valuessoftmax_valuess              r   _softmax_defaultr6  S  s)    '4TMAz *U#U+V
 	
 ..
!C 			E			5 `
 	
 COOa/s
 	
 CLL4I
 	

 #5)	Ju  % 3 3 ; ;IINN::##KK%%a("  __-#Fm ;   !< 
!
 GG!\\NKK%% H 
 '
 ""12&
 NBnS.ABBS[[7J7O>#;NOOr   z7grad_output: jt, output: jt, dim: any, input_dtype: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | |j                  |j                  fi |fi t	        |      S )NTr   r   outputr   )rX   rY   rZ   r   r   grad_outr8  s          r   _softmax_backwardr:    sl    
 '4TMAz ~~m,H^^H%FXv~~<<@Nx@X r   z!self: jt, float: any, train: any?c                     t        | ||d      \  }}|j                  d      } | |j                  fi |\  }}t        |fi t	        |      t        |fi t	        |      fS r   r   r   r   r   r   )rX   rY   rZ   r   r   r   out1out2s           r   native_dropout_defaultr?    sp     '4TMAz ..
!Cckk0Z0JD$T1^C01T1^C01 r   z%grad_output: jt, mask: jt, scale: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | |j                  |j                  fi |fi t	        |      S )NTr   r   maskr   )rX   rY   rZ   r   r   r   rA  s          r   native_dropout_backward_defaultrB    sl    
 '4TMAz ../K>>&!D[  $,,=*=

% r   z!self: jt, dim: any, keepdim: any?c                 
   t        | ||d      \  }}|j                  d      }|d   st        d      |d   }t        t	        |j
                        |d      |d<   t         | |j                  fi |fi t        |d         S )	NTr   r   keepdimz1prod(): keepdim=True must be set for NestedTensorr   r   r   )	r   r   r   r   rR   rl   r   r   r   )rX   rY   rZ   r   r   r   r   s          r   prod_dim_intrE    s    &4TMAz ..
!C i NOO
U
C(SYYfEJuS[[7J7S>$q';RSSr   z#self: jt, split_size: any, dim: anyc                     t        | ||d      \  }}|j                  d      t        j                         |d   d      |d<   t	        fd | j
                  fi |D              S )NTr   r   r   rO   c              3   J   K   | ]  }t        dd |it                yw)r  Nr   )r   r   )r   r>   r   s     r   r"   zsplit_tensor.<locals>.<genexpr>  s+       	5A5!45s    #)r   r   r   r   r%   r   r   s        @r   split_tensorrH    sr     '4TMAz ..
!C(Ju4EwOJu ckk0Z0  r   z$self: jt, split_sizes: any, dim: anyc           
          t        | ||d      \  }}|j                  d      }t        |j                         |d   d      |d<    | |j                  fi |D cg c]  }t        dd|it        |       c}S c c}w )NTr   r   r   split_with_sizesr  r   r   r   r   r   r   r   r   )rX   rY   rZ   r   r   r   r>   s          r   split_with_sizes_defaultrL    s     '4TMAz ..
!C(	:e$&8Ju ckk0Z0 	5A5!45  s   A:z+self: jt, dim: any, start: any, length: anyc                     t        | ||d      \  }}|j                  d      }t        |j                         |d   d      } | |j                  ||d   |d         }t        |fi t        |      S )	NTr   r   r   narrowstartlengthr   rO  rP  rK  )rX   rY   rZ   r   r   r   r   r  s           r   rN  rN    s     '4TMAz ..
!C
3779j&7
BC!(#	F 6."566r   z self: jt, chunks: any, dim: any?c           
         t        | ||d      \  }}|j                  d      }t        |j                         |d   dd      |d<   |d   dk(  r-|d   }|j                  d   }t        j                  ||z        }|j                  j                         }	|	j                  |      }
|
D cg c]  }t        j                  |d	       }}|D cg c]  }t        j                  |d
d       }}|D cg c]  }||j                  d }}|
D cg c]   }|j                         j!                         " }}|j"                  j%                  |      }t'        d|      D cg c]  }t)        dd||   i||    c}S  | |j"                  fi |D cg c]  }t)        dd|it+        |       c}S c c}w c c}w c c}w c c}w c c}w c c}w )NTr   r   r   chunkr   r   chunksr   r   r   )value)r   rC   r  r   )r   r   r   r   rl   r   ceilr  diffrS  r;   cumsumFpadrC   r   itemr   rO   ranger   r   )rX   rY   rZ   r   r   r   rU  	dim0_size
chunk_sizer   chunked_lengthsr>   chunked_offsetsper_offsetsnested_kwargssplit_sizeschunk_valuesr_   s                     r   chunk_defaultrg    s   &4TMAz ..
!C(	:e$gtJu %AH%IIaL	YYy612
 ,,##%!--/;JKa5<<q1KK>MN155F!4NN  /
 $COOD
 
 0??!quuw||~??{{((5 1j)
 FQFM!4DF
 	
 #++44
 99^C%89
 	
! LN
 @


s$   +F2F74F<%G GGzself: jt_all, dim: any?c           
         t        | ||d      \  }}|d   }|dk7  rt        d      |j                  d      }|j                         }|j	                         }|j                         }	|j                  }
|	7t        j                  ||j                         j                         |
dz
        S |
dk  rt        d	      t        |	j                  d         D ]+  }||   |	|   z   |j                  |
dz
     kD  s"t        d
       t        |	j                  d         D cg c]$  }t        j                  ||
dz
  ||   |	|         & c}S c c}w )NTr   r   r   z2unbind(): only supported for NestedTensor on dim=0r   r   r   zAunbind(): nested tensor ragged_idx out of bounds (should be >= 1)zMunbind(): nested tensor offsets and lengths do not match ragged_idx dimensionrQ  )r   r   r   r  r   r   rC   r;   rO   rY  tolistr^  r|   rN  )rX   rY   rZ   r   r   r   r   r  r   r   r!   r_   s               r   
unbind_intrj  A  sQ    '4TMAz U
C
axOPP
..
!CZZ\FkkmGkkmGJ{{67<<>#8#8#:aQQQO
 	
 7==#$ 1:
"V\\*q.%AA_  w}}Q'( 	V*q.GTUJW  s   )E
zself: jt, dim: anyc                     t        | ||d      \  }}|j                  d      }|j                  }t        t	        |j
                        |d   d      |d<   t         | |fi |fi t        |      S )NTr   r   r   r}   r   r   r   r   rR   rl   r   r   )rX   rY   rZ   r   r   r   r  s          r   squeeze_dimrm  d  sq    &4TMAz ..
!C[[F(SYYE9JIVJuV2z2JnS6IJJr   c                     t        | ||d      \  }}|j                  d      }|j                  }|d   }t        t	        |j
                        dz   |d      |d<   t         | |fi |fi t        |      S )NTr   r   r   r   	unsqueezerl  )rX   rY   rZ   r   r   r   r  r   s           r   unsqueeze_defaultrp  q  s}    &4TMAz ..
!C[[F U
C(SYY!);S+NJuV2z2JnS6IJJr   ztensors: any, dim: anyc                    t        | ||d      \  }}|j                  d      }|D cg c]  }|j                  s| }}t        |      dkD  sJ |d   }|D cg c]!  }|j                  r|n|j	                  |      # }}|d   }	t        t        |j                        |	d      |d<   t         | |D cg c]  }|j                   c}fi |fi t        |d         S c c}w c c}w c c}w )NTr   tensorsr   r   r   )
r   r   	is_nestedrR   	expand_asr   r|   r   r   r   )
rX   rY   rZ   r   r   rr  rG   nestedfirstr   s
             r   cat_defaultrw    s    &4TMAz nnY'G !0AAKKa0F0v;??1IEAHIAAKKqQ[[%77IGI U
C(U[[)93FJu)Aaii)8Z8<J7ST:<V  1 J *s   C C &C%4C*zself: jt, other: anyc                 :   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  r3|j                  s't         | |j                  |fi |fi t        |      S |j                  rx|j                  rl|j                         dkD  rY|j                         dkD  rFt        ||j                        r0t         | |j                  |j                        fi t        |      S t        d|j                   d|j                         )NTr   r   other   z1matmul(): not supported between inputs of shapes rk   )r   r   rs  r   r   r   r   ry   rl   r   r|   rX   rY   rZ   r   r   r   ry  s          r   matmul_defaultr|    s    &4TMAz ..
!CNN7#E
}}U__e2z2
6DS6I
 	
 
5??779q=UYY[1_1CC1US[[%-- @XNSVDWXX

;CII;eEKK=Y r   z#self: jt, size: any, implicit: any?c                 *   t        | ||d      \  }}|j                  d      }|d   }d|vs|j                  d      rJ t        ||      st        d|j                   d|       dg|d	d  }t         | |j                  |      fi t        |      S )
NTr   r   ru   implicitzexpand(): cannot expand shape z -> r5   r   )r   r   ry   r   rl   r   r   r   )rX   rY   rZ   r   r   r   ru   
expand_args           r   expand_defaultr    s     '4TMAz ..
!CfDj(*..2LMMc4(;CII;d4&QRRtABxJS[[*5M9LMMr   zself: t, other: jtc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | ||j                        fi t	        |      S )NTr   r   ry  r   r{  s          r   expand_as_defaultr    sW    &4TMAz ..
!CNN7#ES%--0JN54IJJr   z"condition: jt, self: jt, other: jtc                 `   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  d      }|j                  |j                  cxk(  r|j                  k(  sJ  J t         | |j                  |j                  |j                  fi |fi t        |      S )NTr   	conditionr   ry  )r   r   rl   r   r   r   )rX   rY   rZ   r   r   r  r   ry  s           r   
where_selfr    s    &4TMAz {+I
..
!CNN7#E??ekk6SYY66666YU]]IjI

# r   zself: jt, device: any?c                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r   r   r   s         r   _pin_memory_defaultr    r   r   c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r   r#  r   s         r   is_pinned_defaultr    s=    &4TMAz ..
!C*z**r   zself: jt_all, other: jt_allc                 @    |d   j                   |d   j                   k(  S r{   )rl   r   s      r   is_same_size_defaultr    s     7==DGMM))r   z3self: jt_all, dim: any?, keepdim: any?, dtype: any?c                    t        | ||d      \  }}|j                  d      }t        |j                         |d   d|j                        \  |d<   }}}|r|j
                  t        d      |r|r | |j                  fi |}	n~|rt        d       |j                  j                  |j                  d	z
  gt        d
|j                  d	z
        t        |j                  |j                         d	z
         }
t        j                  j                  j                  |
j                  |
j                  d
   d      |j                   g|j"                  g      }  |j$                  |j                  d
   |j"                  g|
j                  d	d  j                  d
gt        d|j                  d	z         d	t        |j                  d	z   |j                                }t        j&                  ||j                        }	|d   r|	j)                  d
      }	|	S |rt        d      t+         | |j                  fi |fi t-        |      S )z
    Performs a sum along the provided tensor dimension.
    Returns a dense tensor if the ragged dimension is reduced away, else returns a nested tensor.
    Tr   r   r   r   Nzgsum(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorzLsum(): not supported along a ragged and non-batch dimension for NestedTensorr   r   r5   r'  r   r   rD  z\sum(): not supported along the batch dimension but not the ragged dimension for NestedTensor)r   r   r/   r   rC   rB   r   r   permuter^  r;   r   r   r-  r   r|   r  r.  viewr   ro  r   r   )rX   rY   rZ   r   r   r   r1  r2  r3  outvalues_ragged_dim_outerpaddedpadded_ragged_dim_originals                r   sum_dim_IntListr    sv    '4TMAz ..
!C 		5		5 CLL4I
 	

 )C
 $"b  ':ckk&9&9!#'q#//A-.' s	A6'# YY^^CC'//0G0M0Ma0PRTU __- D F*Q* )..B* g* q#//A-.* * s*CGGI6*& ))*OOC
 i --"C
 n  +
+
/=c/B
 	
r   z"self: jt_all, dim0: any, dim1: anyc           
         t        | ||d      \  }}ddlm} |j                  d      } ||j	                         |d   |d   f      \  }}|j
                  t        d      ||j                  k(  s||j                  k(  r|dk(  s|dk(  rt        d	      ||j                  k(  r|}	n|}	t        |      }
|	|
d
<   t        |j                         j                  t        t        |j                        |      t        t        |j                        |            fi |
S t        |j	                         |d   d      |d<   t        |j	                         |d   d      |d<   t         | |j                   fi |fi t        |      S )NTr   r   r   r   dim0dim1zDtranspose(): not supported on jagged layout nested tensor with holesz?Transpose is not supported on the batch dimension for jagged NTrC   r  )r   r   r   r   r   rB   rS   rC   r   r   r  r  r   rR   rl   r   r   )rX   rY   rZ   r   r   r   r   r  r  to_dimr  s              r   transpose_intr  \  s    '4TMAz 6
..
!C"3779z&/A:fCU.VWJD$
||R
 	
 s$#//"919	Q  3??"FF#C(
$*
=!JJL""#C		ND9#C		ND9

 
 	
 *#'')Z5GUJv)#'')Z5GUJvS[[7J7O>#;NOOr   zself: jt_all, dims: anyc                    t        | ||d      \  }}|j                  d      }|j                  d      }t        |      }t        |j                        }|t        |      k7  rt        d| ddt        |       dz         d	d
lm}	  |	||      }
t        |
      t        t        |
            k7  rt        d      |j                  t        d      |
d	   d	k7  rt        d      |
j                  |j                        |d<   |
dd  D cg c]  }t        ||       }}||d<   t         | |j                  fi |fi |S c c}w )NTr   r   r)   z5permute(): number of dimensions in the tensor input (z) zAdoes not match the length of the desired ordering of dimensions ().r   r   z*permute(): duplicate dims are not allowed.zBpermute(): not supported on jagged layout nested tensor with holesz=Permute is not supported on the batch dimension for jagged NTrC   r   )r   r   r   rR   rl   rS   r   r   setrB   indexrC   r   r   r   )rX   rY   rZ   r   r   r   r)   r  inp_dimr   canonicalized_dimsr   
inner_dimss                r   permute_defaultr    sm   &4TMAz ..
!C>>&!D$J#))nG #d)CG9BOQRUVZR[Q\\^_`
 	

 6*7D9
#c*<&=">>EFF
||P
 	
 !!K
 	
 !3 8 8 IJ}?QRSRT?UV%gs3VJV#JvS[[7J7F:FF Ws   Ezself: jt_all, size: anyc                 &  	 t        | ||d      \  }}|j                  d      |j                  d      	j                  dk7  r=t        j                        t        	      k7  rt        dj                   d	 d      t        	      d	k  st        	      st        d
j                   d	       	fd}t        t        	      dz
        D cg c]
  } ||       }}t         | j                  |      fi t              S c c}w )NTr   r   ru   r   zVview(): does not support ragged_idx != 1 except when inp._size == size. inp._size is (z) and size is (r  rz  zview(): cannot view shape z as c                 n    | j                   dz
  k(  rj                  j                  |       S | dz      S rA   )rC   r   ru   )	inner_idxr   ru   s    r   get_inner_sizez$view_default.<locals>.get_inner_size  s8    !++;;##I..	A&&r   )r   r   rC   r%   rl   r   rR   ry   r^  r   r   r   )
rX   rY   rZ   r   r   r  r_   
inner_sizer   ru   s
           @@r   view_defaultr    s	   
 '4TMAz ..
!C>>&!D
!cii 0E$K ? YYKtfB@
 	
 4y1}.sD97		{$tfMNN ' .33t9q=-AB.#BJBS[[*5M9LMM Cs   DzHinput: jt_all, normalized_shape: any, weight: any?, bias: any?, eps: anyc                 P   t        | ||d      \  }}|j                  d      }|j                         dk  rt        d      |d   }|j                  |j
                     }|j                         t        |      z
  }|dk(  rt        d      ||v r|j                  t        d	      ||v rMt        j                  j                  j                  |j                  j                  |j
                  
      |j                  g|j                  g      }	t        j                  j                  j                  t        j                   |j                  j                  d   df|j"                  |j$                        |j                  g|j                  g      j'                  |	j                        }
|j                  j)                         j+                  d      j+                  d      |	j                  d   z  }t        j,                  |	dd      |z  }|	|z
  |
z  }t        j,                  t        j.                  |      dd      |z  }t        j0                  ||d   z         }||z  }t        j                  j                  j3                  ||j                  g|j                  j                  d         j5                  d|j                  |j
                  dz   d        }t7        |fi t9        |      ||fS  | |j                  fi |\  }}}t7        |fi t9        |      ||fS )NTr   r   r   zOlayer_norm(): not supported for NestedTensor objects with 2 or fewer dimensionsnormalized_shaper   zVlayer_norm(): not supported when normalizing over the batch dimension for NestedTensorzklayer_norm(): not supported where lengths is not None if operating on the ragged dimension for NestedTensor)r   r  r   )r  dtype)r   r   r   rD  epsr)  r5   )r   r   r   r   r|   rC   rR   rB   r;   r   r   r-  r   r   r  r.  onesr  r  expandrY  ro  r   squaresqrtr0  	unflattenr   r   )rX   rY   rZ   r   r   r   r  ragged_sizenum_dims_not_normalizedpadded_inputpadded_maskragged_lengthsmeanpadded_normalizedvariancestdpadded_layer_normjagged_layer_norm_valuesr8  s                      r   native_layer_norm_defaultr    s"   
 '4TMAz ..
!C
wwyA~]
 	
 ""45))COO,K!ggi#.>*?? 	 1$d
 	
 &&3<<+Cy
 	

 	''yy~~EEKK//    \\N) F 
 iinnDDJJ))!,a0399U\\N) E 
 &
	 	 LL))!,66q9L<N<Nq<QQ 	
 II
  	 4
 II./
  	 jjJu$556-3#(99>>#Q#Q\\NKK%% $R $
 )		#//A-/0
 	! 1I^C5HI
 	
 S[[7J7FD#7>##67sCCr   zpgrad_out: jt, input: jt, normalized_shape: any, mean: any, rstd: any, weight: any?, bias: any?, output_mask: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      } | |j                  |j                  fi |\  }}}	|d ||	fS t        |fi t	        |      ||	fS )NTr   r9  r   r<  )
rX   rY   rZ   r   r   r9  r   d_inputd_gammad_betas
             r   "native_layer_norm_backward_defaultr  E  s    
 '4TMAz ~~j)H
..
!C#H$4$4ckkPZPGWfgv&&8N3$78'6JJr   zself: jt, dim: any, index: anyc                    t        | ||d      \  }}|j                  d      }t        |j                         |d   dd      |d<   |d   dk(  r|j	                         |d      S t         | |j                  fi |fi t        |      S )	NTr   r   r   selectrT  r   r  )r   r   r   r   r   r   r   r   r   s         r   
select_intr  V  s    &4TMAz ..
!C(	:e$hJu %Azz|Jw/00S[[7J7O>#;NOOr   z7self: jt, dim: any?, start: any?, end: any?, step: any?c                     t        | ||d      \  }}|j                  d      }t        |j                         |d   d      |d<   t	         | |j
                  fi |fi t        |      S )NTr   r   r   slice)r   r   r   r   r   r   r   r   s         r   slice_tensorr  i  sl    
 '4TMAz ..
!C(Ju4EwOJuS[[7J7O>#;NOOr   z{input: jt, weight: t, bias: t?, stride: any, padding: any, dilation: any, transposed: any, output_padding: any, groups: anyc                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r   r   r   s         r   convolution_defaultr  x  sN     '4TMAz ..
!CS[[7J7O>#;NOOr   c                    t        | ||d      \  }}t        |d         dkD  rt        d      |j                  d      }t	        |j                         |d   d|j                        \  |d<   }}}|rt        d      |r|j                  t        d	      |d
   st        d      |rt        j                  ||j                  |d
         }	|j                  j                         }
t        |j                         dz
        D ]  }|
j                  d      }
 |	|
j                  |	j                        z  S t!         | |j"                  fi |fi t%        |      S )z
    Performs a mean along the provided tensor dimension.
    Returns a dense tensor if the ragged dimension is reduced away, else returns a nested tensor.
    Tr   r   r   zAmean(): not supported across multiple dimensions for NestedTensorr   r  z]mean(): not supported along the batch dimension but not the ragged dimension for NestedTensorzhmean(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorrD  z9mean(): not supported when keepdim=False for NestedTensorr  r   r5   )r   rR   r   r   r/   r   rC   rB   r;   r   r  rY  r^  ro  broadcast_tor|   r   r   r   )rX   rY   rZ   r   r   r   r1  r2  r3  	torch_sumr   s              r   mean_dimr    s}    '4TMAz :e!O
 	
 ..
!C 		5		5 k
 	
 CLL4I
 	

 i VWWIIcs
9@UV	
 ,,##%swwy1}% 	,A''+G	, 7//	@@@S[['J'+9#+> r   c                    t        | ||d      \  }}|j                  d      }|D ]p  }t        |t              st	        d      |j                         |d   j                         k7  rt	        d      t        ||d   j                        rgt	        d       t        |d   j                         dz   |d	   d
      |d	<   t         | |D cg c]  }|j                   c}fi |fi t        |d         S c c}w )NTr   rr  z+stack(): expected all nested tensors inputsr   z9stack(): expected all nested tensors to have the same dimzFstack(): expected all nested tensors to have the same nested structurer   r   stack)r   r   r$   r   r   r   ry   r|   r   r   r   )rX   rY   rZ   r   r   rr  rG   s          r   stack_defaultr    s
   &4TMAz
 nnY'G !\*LMM557gajnn&&K  "!WQZ%5%56X  )
1j/Ju )Aaii)8Z8<J7ST:<V )s   C7zQweight: t, indices: jt, padding_idx: any?, scale_grad_by_freq: any?, sparse: any?c                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | ||j                  fi |fi t	        |      S )NTr   indicesr   r   )rX   rY   rZ   r   r   r  r   s          r   embedding_defaultr    sf    
 '4TMAz
 nnY'G^^H%FVW__3
37Eg7N r   c                 |    t        | ||d      \  }}|j                  d      }|j                  j                         S r   )r   r   r   detachr   s         r   values_defaultr    s@     '4TMAz ..
!C ;;r   c                 l    t        | ||d      \  }}|j                  d      } | |j                        S r   r#  r   s         r   all_defaultr  	  s8    &4TMAz ..
!Cr   zcvalues: t, offsets: t, dummy: jt_all, lengths: t?, ragged_idx: any?, min_seqlen: t?, max_seqlen: t?c                     t        | ||d      \  }}|d   |d   |d   }}}|d   }|d   }	|d   }
i }|	|	|d<   |
|
|d<   t        |||||	      S )
NTr   r   r   r   r!   
min_seqlen
max_seqlen)r   rC   r   )r   r   )rX   rY   rZ   r   r   r  r   r   r!   r  r  metadata_caches               r    _nested_view_from_jagged_defaultr    s    
 '4TMAz
 	799 GF
 L)JL)JL)JN'1|$'1|$& r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r   )r   r   r  r   s         r   _nested_get_offsetsr  4  3    &4TMAz ..
!C<<r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r   )r   r   rB   r   s         r   _nested_get_lengthsr  >  r  r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r   )r   r   rC   r   s         r   _nested_get_ragged_idxr  H  s3    &4TMAz ..
!C??r   c                     t        | ||d      \  }}|j                  d      }|j                  j                  dd       S )NTr   r   r  r   r   r   r   r   s         r   _nested_get_min_seqlenr  R  B    &4TMAz ..
!C""<66r   c                     t        | ||d      \  }}|j                  d      }|j                  j                  dd       S )NTr   r   r  r  r   s         r   _nested_get_max_seqlenr  \  r  r   zself: jt, mask: anyc                 (   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  dkD  rt        d      |j                  |j                  k7  r%t        d|j                   d|j                         |j
                  j                  |j                               }t        j                  |j                         j                  d	
      d      }t        |      }||j                     |d<   t        dd|i|S )NTr   r   rA  r   z3masked_select only support 2-D selections currentlyzMask with shape z& is not compatible with input's shape r   r   rV  r   r  r   )r   r   r   r   r|   r   masked_selectr  r[  r\  rZ  r   r  r   )	rX   rY   rZ   r   r   r   rA  
res_valuesmask_cumsums	            r   masked_select_defaultr  g  s   &4TMAz ..
!C>>&!D
xx!|PQQ	djj	 tzzl*PQTQZQZP[\
 	
 **4;;=9J%%,,,3V<K#D!#,,/DO 
 r   z	self: anyc                     ddl m}  |       S )Nr   )_nt_view_dummy)$torch.nested._internal.nested_tensorr  )rX   rY   rZ   r  s       r   _nested_get_jagged_dummyr    s    Cr   r   IMPLr  CPUCUDAMeta)TF)r   )r   r   r   typingr;   torch.nn.functionalr+  r,  r[  torch.fx.operator_schemasr   torch.nested._internal.sdpar   r   r   r   ListAny__annotations__r	   Dictr   r   r/   strre   rm   ry   r~   r   r   register_jagged_funcOptionalCallabler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   primr  r   ru   r   is_contiguousr   r   cloner   linearr   linear_backwardr  r  r  r	  _to_copyr  r  r  r  
empty_like	ones_like
zeros_like
randn_liker!  zero_r$  _softmaxr6  _softmax_backward_datar:  native_dropoutr?  native_dropout_backwardrB  r   dim_intrE  rO   r<   rH  rJ  rL  rN  rS  rg  r   r   rj  r}   rm  ro  rp  r   rw  r  r|  r  r  rt  r  wherer   r  _pin_memoryr  	is_pinnedr  is_same_sizer  r   dim_IntListr  r  r  r  r  r  _unsafe_viewr  native_layer_normr  native_layer_norm_backwardr  r  r  r  r  convolutionr  r  r  r  r  	embeddingr  r  _nested_get_valuesr  rr   r  _nested_view_from_jaggedr  r  r  r  r  r  r  r  r  library_scoped_libraryimplr   r   r   <module>r$     s          8 K ' c #% $sCx. %
% DI
SY6=S =D =@

#&
+7
AD
	
0. )y((8HI HX,> <9Sx&$R 		33;;		''		""		$$		  ((		!!))		))11 00, eiinn++33^D E 
YY^^  !
	
 eiinn22::NKF LF( 	IINN  ..0S
 	IINN  "FEE8 eiinn++335UVP WP 	IINN""**<	$ eiinn''--/JKP LP eiinn--55~F2 G2B 	IINN  "Q D UYY^^**22N C
 		!!))		  ((		!!))		!!))	 PP eiinn**22NC D 	IINN##%QEPEPP 	IINN))11=	 	IINN!!))+N

 	IINN**22+			 eiinn))113VWT XT  	IINN!F 	IINN##++-S" 	IINN!!#P77  eiinn**224VW&
 X&
R eiinn++//1JK LD eiinn,,002FG	K H	K eiinn..668LMK NK eiinn((002JK L, eiinn++335KL M, 	IINN!!#HNN  eiinn..668LMK NK eiinn**//1UV W" eiinn0088:RSP TP eiinn..668PQ+ R+ 	IINN'')F** 	IINN""9Y
	Y
x 	IINN  "F(P(PV eiinn,,446OP"G Q"GJ 
YY^^  %)).."="="E"EF)N	)NX 	IINN$$,,N^D	^DB 	IINN--55v
K	
K eiinn++//1QRP SP$ 	IINN=P	P 	IINN&&G
P
P 	IINNR88v eiinn**224LM N< 	IINN$$W	 		%%		))11 	 	  eiinn((00.A B 	IINN++33i	8 eiinn88@@.Q R eiinn88@@.Q R eiinn;;CC^T U eiinn;;CC^T7 U7 eiinn;;CC^T7 U7 eiinn22::<QR S2 eiinn==EE{S T ]]""662 LdII(*BEJII(*BFKII(*BFKL L Ls   ={$${-