
    iE                     "   S SK r S SKJrJrJrJrJr  S SKJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SK	Jr  S SKJr   " S S\R$                  5      r " S	 S
\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\	R                  R$                  5      r " S S\R$                  5      r " S S \R$                  5      r " S! S"\R$                  5      r  " S# S$\R$                  5      r! " S% S&\R$                  5      r" " S' S(\R$                  5      r# " S) S*\R$                  5      r$ " S+ S,\R$                  5      r% " S- S.\R$                  5      r& " S/ S0\R$                  5      r'S1\" 5       /S2\" 5       //r(g)3    N)AnyListOptionalTupleUnion)to_edge)LoweredBackendModule)Tensor)exportc                      ^  \ rS rSrS	U 4S jjrS\R                  S\R                  S\R                  4S jrS\\R                  \R                  4   4S jr	Sr
U =r$ )

TensorItem   returnc                 "   > [         TU ]  5         g Nsuper__init__self	__class__s    [/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/exir/tests/models.pyr   TensorItem.__init__           arg1arg2c                 \   UR                  5       nUR                  5       n[        R                  " US:  5        [        R                  " US:*  5        [        R                  " US:  5        [        R                  " US:*  5        [        R                  " [	        U5      [	        U5      5      $ )N   d   )itemtorch_checkonesint)r   r   r   hws        r   forwardTensorItem.forward   sq    IIKIIKQ!VQ#XQ!VQ#Xzz#a&#a&))r   c                 Z    [         R                  " S5      [         R                  " S5      4$ )N
      )r"   tensorr   s    r   get_random_inputsTensorItem.get_random_inputs%   s    R %,,r"233r    r   N__name__
__module____qualname____firstlineno__r   r"   r
   r(   r   r/   __static_attributes____classcell__r   s   @r   r   r      sQ    *ELL * * *45u||)C#D 4 4r   r   c                      ^  \ rS rSrS
U 4S jjrS\R                  S\R                  S\\R                  \R                  4   4S jrS\\R                  \R                  4   4S jr	S\
4S jrS	rU =r$ )Repeat)   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Repeat.__init__*   r   r   r   r   c                 T    UR                  UR                  S5      S5      nX3-  X"-   4$ Nr      )repeatsize)r   r   r   xs       r   r(   Repeat.forward-   s+     KK		!a(udk!!r   c                 Z    [         R                  " S5      [         R                  " S5      4$ N      r"   randr.   s    r   r/   Repeat.get_random_inputs3       

1uzz!}--r   c                     [         R                  R                  SSS9n[         R                  R                  SSS9nSU0SU04$ )Ndimr+   )maxdim2r   )r"   r   Dim)r   rP   rR   s      r   get_dynamic_shapeRepeat.get_dynamic_shape6   sG    llu"-||B/C1d)$$r   r1   r2   )r4   r5   r6   r7   r   r"   r
   r   r(   r/   r   rT   r8   r9   r:   s   @r   r<   r<   )   sn    "LL"(-"	u||U\\)	*".5u||)C#D .%3 % %r   r<   c                      ^  \ rS rSrS	U 4S jjrS\R                  S\R                  S\R                  4S jrS\\R                  \R                  4   4S jr	Sr
U =r$ )
ModelWithUnusedArg<   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   ModelWithUnusedArg.__init__=   r   r   r   r   c                 .    [         R                  " U5      $ r   r"   sin)r   r   r   s      r   r(   ModelWithUnusedArg.forward@   s    yyr   c                 Z    [         R                  " S5      [         R                  " S5      4$ rH   rK   r.   s    r   r/   $ModelWithUnusedArg.get_random_inputsC   rN   r   r1   r2   r3   r:   s   @r   rW   rW   <   sQ    ELL   .5u||)C#D . .r   rW   c                      ^  \ rS rSrSS\S\SS4U 4S jjjrS\R                  S\R                  4S jrS\	\R                  S	4   4S
 jr
SrU =r$ )MLPG   n_layeroutput_sizer   Nc           
         >^ [         TU ]  5         Xl        TU l        [        R
                  R                  " [        R                  " U4S j[        USS5       5       6 6 U l
        g )Nc              3      >#    U  HE  n[         R                  " UT-   US -
  T-   5      /US :w  a  [         R                  " 5       /O/ -   v   MG     g7f)rB   N)nnLinearReLU).0ire   s     r   	<genexpr>MLP.__init__.<locals>.<genexpr>P   sM       3 YYq;A0CDE&'1f	{"62s   AAr   )r   r   rd   re   r"   rh   
Sequential	itertoolschainrangemlp)r   rd   re   r   s     `r   r   MLP.__init__H   sW    & 88&&__ #7Ar2
r   inputsc                 $    U R                  U5      $ r   )rt   r   rv   s     r   r(   MLP.forwardX   s    xxr   .c                 `    [         R                  " SU R                  U R                  -   5      4$ )Nr   )r"   rL   rd   re   r.   s    r   r/   MLP.get_random_inputs[   s%    

1dllT-=-==>@@r   )rt   rd   re   )rB   rB   )r4   r5   r6   r7   r%   r   r"   r
   r(   r   r/   r8   r9   r:   s   @r   rb   rb   G   s_    
 
c 
$ 
 
  ell  u||  A5s):#; A Ar   rb   c                   >   ^  \ rS rSrSU 4S jjrS\S\4S jrSrU =r$ )Identity_   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Identity.__init__`   r   r   inputc                 .    [         R                  " U5      $ r   )r"   cloner   r   s     r   r(   Identity.forwardc   s    {{5!!r   r1   r2   )	r4   r5   r6   r7   r   r
   r(   r8   r9   r:   s   @r   r}   r}   _   s     "V " " "r   r}   c                   r   ^  \ rS rSrS	U 4S jjrS\S\\R                  \	\
S4   \\
   4   S\4S jrSrU =r$ )
Reshapeg   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Reshape.__init__h   r   r   rE   	new_shape.c                 P   [        U5      S:X  aD  [        US   [        5      (       d  [        US   [        5      (       a  UR	                  US   5      $ [        U[
        [        R                  [        [        S4   [        [           4   5      (       d   eUR	                  U5      $ )NrB   r   .)len
isinstancetuplelistreshaper   r"   Sizer   r%   r   )r   rE   r   s      r   r(   Reshape.forwardk   s     y>Qy|U++z)A,/M/M99Yq\**)U5::uS#XS	+Q%RSSSSyy##r   r1   r2   )r4   r5   r6   r7   r   r
   r   r"   r   r   r%   r   r(   r8   r9   r:   s   @r   r   r   g   sF    $$%*5::uS#XS	+Q%R$	$ $r   r   c                   F   ^  \ rS rSrS	U 4S jjrS\S\S\S\4S jrSrU =r	$ )
	Transposev   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Transpose.__init__w   r   r   rE   dim0dim1c                 $    UR                  X#5      $ r   )	transpose)r   rE   r   r   s       r   r(   Transpose.forwardz   s    {{4&&r   r1   r2   
r4   r5   r6   r7   r   r
   r%   r(   r8   r9   r:   s   @r   r   r   v   s.    ' 's '# '& ' 'r   r   c                   Z   ^  \ rS rSrS	U 4S jjrS\S\S\4S jrS\\\4   4S jrSr	U =r
$ )
Mul~   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Mul.__init__   r   r   r   otherc                 
    X-  $ r   r1   )r   r   r   s      r   r(   Mul.forward   s
    }r   c                 ^    [         R                  " SS5      [         R                  " SS5      4$ )N   r   r"   randnr.   s    r   r/   Mul.get_random_inputs   #    Aq!5;;q!#455r   r1   r2   r4   r5   r6   r7   r   r
   r(   r   r/   r8   r9   r:   s   @r   r   r   ~   s<    V F v 65#8 6 6r   r   c                   Z   ^  \ rS rSrS	U 4S jjrS\S\S\4S jrS\\\4   4S jrSr	U =r
$ )
ElementwiseAdd   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   ElementwiseAdd.__init__   r   r   rE   yc                 
    X-   $ r   r1   r   rE   r   s      r   r(   ElementwiseAdd.forward   s	    ur   c                 ^    [         R                  " SS5      [         R                  " SS5      4$ NrB   r   r   r.   s    r   r/    ElementwiseAdd.get_random_inputs   r   r   r1   r2   r   r:   s   @r   r   r      s<     F v 65#8 6 6r   r   c                   R   ^  \ rS rSrSU 4S jjrS\S\4S jrS\\   4S jrSr	U =r
$ )	BasicSinMax   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   BasicSinMax.__init__   r   r   rE   c                 .    [         R                  " U5      $ r   r\   r   rE   s     r   r(   BasicSinMax.forward   s    yy|r   c                 0    [         R                  " S5      4$ )Nr    r   r.   s    r   r/   BasicSinMax.get_random_inputs   s    C ""r   r1   r2   r   r:   s   @r   r   r      s0     F #5= # #r   r   c                      ^  \ rS rSrS
U 4S jjrS\R                  S\R                  S\S\4S jrS\	\\\4   4S jr
S	rU =r$ )CompositeDelegateModule   r   c           	         > [         TU ]  5          " S S[        R                  5      nU" 5       n[	        [        X"R                  5       SS95      n[        UR                  5       S[        SSS9/ S	9nX@l
        g )
Nc                   Z   ^  \ rS rSrS	U 4S jjrS\S\S\4S jrS\\\4   4S jrSr	U =r
$ )
5CompositeDelegateModule.__init__.<locals>.DelegateAdd   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   >CompositeDelegateModule.__init__.<locals>.DelegateAdd.__init__   s     "r   rE   r   c                     X-   /$ r   r1   r   s      r   r(   =CompositeDelegateModule.__init__.<locals>.DelegateAdd.forward   s    wr   c                 ^    [         R                  " SS5      [         R                  " SS5      4$ r   r   r.   s    r   r/   GCompositeDelegateModule.__init__.<locals>.DelegateAdd.get_random_inputs   s#    Aq)5;;q!+<==r   r1   r2   r   r:   s   @r   DelegateAddr      s<    # F v >5+@ > >r   r   T)strictbackend_demobasic_module_addutf8)encoding)edge_program
backend_idprocessed_bytescompile_specs)r   r   rh   Moduler   r   r/   r	   exported_programbyteslowered_module)r   r   delegated_m	edge_ir_mr   r   s        r   r    CompositeDelegateModule.__init__   sv    	>")) 	> "m; = = ?M
	 ."335%!"4vF	
 5Cr   absc                 8    U R                  X5      nUS   U-  nU$ )Nr   r   )r   r   r   r   ress        r   r(   CompositeDelegateModule.forward   s$    !!!'!fqj
r   c                     [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      4$ r   r   r.   s    r   r/   )CompositeDelegateModule.get_random_inputs   s0    Aq!5;;q!#4ekk!Q6GHHr   r   r2   )r4   r5   r6   r7   r   exirValuer
   r(   r   r/   r8   r9   r:   s   @r   r   r      sR    C2 

 v & 
I5)?#@ I Ir   r   c                   \   ^  \ rS rSrSS\SS4U 4S jjjrS\S\S\4S jrS\4S	 jr	S
r
U =r$ )BatchMatrixMultiplication   
transposedr   Nc                 .   > [         TU ]  5         Xl        g r   )r   r   r   )r   r   r   s     r   r   "BatchMatrixMultiplication.__init__   s     !+r   rE   r   c                     U R                   (       a&  [        R                  " XR                  SS5      5      $ [        R                  " X5      $ )Nro   )r   r"   bmmr   r   s      r   r(   !BatchMatrixMultiplication.forward   s1    ??99QB 34499Q?"r   c                      SU R                    3$ )Nztransposed=r   r.   s    r   
extra_repr$BatchMatrixMultiplication.extra_repr   s    T__-..r   r   )F)r4   r5   r6   r7   boolr   r
   r(   strr   r8   r9   r:   s   @r   r   r      sF    +4 +D + +# #F #v #/C / /r   r   c            
       P   ^  \ rS rSrS	U 4S jjrS
S\S\S\S\\   4S jjrSr	U =r
$ )TensorSplit   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   TensorSplit.__init__   r   r   r   sectionsrP   c                 0    [         R                  " XU5      $ r   )r"   tensor_split)r   r   r  rP   s       r   r(   TensorSplit.forward   s    !!%377r   r1   r2   r   r4   r5   r6   r7   r   r
   r%   r   r(   r8   r9   r:   s   @r   r   r      s2    8V 8s 8 8T&\ 8 8r   r   c            
       P   ^  \ rS rSrS	U 4S jjrS
S\S\S\S\\   4S jjrSr	U =r
$ )TensorSplitWithSizes   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   TensorSplitWithSizes.__init__   r   r   r   
split_sizerP   c                 0    [         R                  " XU5      $ r   )r"   split)r   r   r  rP   s       r   r(   TensorSplitWithSizes.forward   s    {{5c22r   r1   r2   r  r  r:   s   @r   r	  r	     s2    3V 3 33 3tF| 3 3r   r	  c                   B   ^  \ rS rSrSU 4S jjrS\S\S\4S jrSrU =r	$ )	Cat   r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   Cat.__init__   r   r   argsrP   c                8    US S n[         R                  " X15      $ )Nro   )r"   cat)r   rP   r  tensorss       r   r(   Cat.forward   s    s)yy&&r   r1   r2   r   r:   s   @r   r  r     s'    'V '# '& ' 'r   r  c                   J   ^  \ rS rSrS\S\SS4U 4S jjrS\S\4S jrS	rU =r	$ )
FeedForwardBlock   	input_dim
hidden_dimr   Nc                 x  > [         TU ]  5         Xl        X l        [        R
                  " U5      U l        [        R                  " 5       U l        [        R                  " X5      U l
        [        R                  " 5       U l        [        R                  " X!5      U l        [        R                  " 5       U l        g r   )r   r   r  r  rh   	LayerNorm
layer_normrj   reluri   linear1Dropoutdropout1linear2dropout2)r   r  r  r   s      r   r   FeedForwardBlock.__init__   so    "$,,y1GGI	yy7

yy7

r   rE   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU$ r   )r"  r$  r&  r#  r'  r(  r   s      r   r(   FeedForwardBlock.forward  sX    OOALLOMM!IIaLLLOMM!r   )r&  r(  r  r  r"  r$  r'  r#  
r4   r5   r6   r7   r%   r   r
   r(   r8   r9   r:   s   @r   r  r     s5    %# %3 %4 % F  r   r  c                   B   ^  \ rS rSrSrSU 4S jjrS\S\4S jrSrU =r	$ )	NoOpi  z-
NoOp simply passes the input as the output.
r   c                 "   > [         TU ]  5         g r   r   r   s    r   r   NoOp.__init__  r   r   r   c                     U$ r   r1   r   s     r   r(   NoOp.forward  s    r   r1   r2   )
r4   r5   r6   r7   __doc__r   r
   r(   r8   r9   r:   s   @r   r.  r.    s%    V   r   r.  c                   V   ^  \ rS rSrS\S\S\S\S\SS4U 4S	 jjrS
\S\4S jrSrU =r	$ )MultiLayerPerceptroni  r  hidden_dim1hidden_dim2hidden_dim3
output_dimr   Nc                   > [         TU ]  5         Xl        X l        X0l        X@l        XPl        [        R                  " [        R                  " X5      [        R                  " 5       [        R                  " X#5      [        R                  " 5       [        R                  " X45      [        R                  " 5       [        R                  " XE5      5      U l        g r   )r   r   r  r6  r7  r8  r9  rh   rp   ri   rj   layers)r   r  r6  r7  r8  r9  r   s         r   r   MultiLayerPerceptron.__init__  s     	"&&&$mmIIi-GGIIIk/GGIIIk/GGIIIk.
r   rE   c                 $    U R                  U5      $ r   )r;  r   s     r   r(   MultiLayerPerceptron.forward1  s    {{1~r   )r6  r7  r8  r  r;  r9  r,  r:   s   @r   r5  r5    sZ    

 
 	

 
 
 

0 F  r   r5  c            	       \   ^  \ rS rSr SS\S\S\SS4U 4S jjjrS\S	\S
\S\4S jrSr	U =r
$ )$ScaledDotProductAttentionModularizedi5  	embed_dim	num_heads	dropout_pr   Nc                 v  > [         TU ]  5         Xl        X l        X0l        [
        R                  " US9U l        X-  U l        U R                  S-  U l	        [        5       U l        [        5       U l        [        5       U l        [!        SS9U l        [!        SS9U l        [
        R&                  " SS9U l        g )Np      Fr   Tro   rP   )r   r   rA  rB  rC  rh   r%  dropouthead_dimscalingr   mulr   r   r   r   r   r   bmm_tSoftmaxsoftmax)r   rA  rB  rC  r   s       r   r   -ScaledDotProductAttentionModularized.__init__6  s     	"""zzI.&3"mmT15y",>.$?
zzb)r   qkvc                    UR                   u  pEnUR                  S5      nU R                  XR                  5      nU R	                  XXPR
                  -  U R                  45      nU R                  USS5      nU R	                  X'XPR
                  -  U R                  45      nU R                  USS5      nU R	                  X7XPR
                  -  U R                  45      nU R                  USS5      nU R                  X5      nU R                  U5      n	U R                  U	5      n	U R                  X5      n
U R                  U
SS5      n
U R	                  XXPR                  45      n
U
$ rA   )shaperD   rL  rK  r   rB  rJ  r   rM  rO  rI  r   rA  )r   rQ  rR  rS  LBDSqk
softmax_qk	attentions              r   r(   ,ScaledDotProductAttentionModularized.forwardL  s=    ''aFF1I HHQ% LLNN 2DMMBCNN1a# LLNN 2DMMBCNN1a# LLNN 2DMMBCNN1a# ZZ \\"%
\\*-
 HHZ+	 NN9a3	LL>>,BC	r   )r   rM  rI  rC  rA  rJ  rL  rB  r   rK  rO  r   )g      ?)r4   r5   r6   r7   r%   floatr   r
   r(   r8   r9   r:   s   @r   r@  r@  5  sh    
 	** * 	*
 
* *,44 4 	4
 
4 4r   r@  c                   ~   ^  \ rS rSr SS\S\S\\   SS4U 4S jjjr  SS\S	\S
\S\\   S\\   S\4S jjr	Sr
U =r$ )ScaledDotProductAttentioni  NrA  rB  rI  r   c                   > X-  (       a  [        SR                  X5      5      e[        TU ]  5         Xl        X l        Ub   US:  a  [        R                  " US9U l        O[        5       U l        X-  U l
        U R                  S-  U l        g )Nz2embed_dim ({}) must be divisible by num_heads ({})g        rE  rG  )
ValueErrorformatr   r   rA  rB  rh   r%  rI  r.  rJ  rK  )r   rA  rB  rI  r   s       r   r   "ScaledDotProductAttention.__init__  s      DKK  	""7S=&(jj7&;DL6DL&3"mmT1r   rQ  rR  rS  padding_maskattention_maskc                    UR                   u  pgnUR                  S5      n	XR                  -  nUR                  XgU R                  -  U R
                  5      R                  SS5      nUR                  XU R                  -  U R
                  5      R                  SS5      nUR                  XU R                  -  U R
                  5      R                  SS5      n[        R                  " XR                  SS5      5      n
[        R                  R                  U
R                  5       SS9n[        R                  " X5      nUR                  SS5      R                  XgU R                  5      nU$ )Nr   rB   r   ro   rH  )rU  rD   rK  r   rB  rJ  r   r"   r   rh   
functionalrO  r^  rA  )r   rQ  rR  rS  re  rf  rV  rW  rX  rY  rZ  r[  r\  s                r   r(   !ScaledDotProductAttention.forward  s.    ''aFF1I IIaT^^+T]];EEq
 IIaT^^+T]];EEq
 IIaT^^+T]];EEq

 YYq++a+, ]]**288:2*>

 IIj,	 ''1-55aDNNK	r   )rI  rA  rJ  rB  rK  r   )NN)r4   r5   r6   r7   r%   r   r^  r   r
   r(   r8   r9   r:   s   @r   r`  r`    s    
 $(	22 2 %	2
 
2 2< *.+/.. . 	.
 v&. !(. 
. .r   r`  c                      ^  \ rS rSr      SS\S\S\S\S\S\SS	4U 4S
 jjjrS\\\\\\4   4S jrS\S\S\S\S\S\4S jr	Sr
U =r$ )Emformeri  l_dimm_dimc_dimr_dimr  ffn_hidden_dimr   Nc                 :  > [         TU ]  5         Xl        X l        X0l        X@l        XPl        X`l        [        5       U l	        [        5       U l        [        USS9U l        [        XV5      U l        [         R"                  " U5      U l        [         R&                  " U R                  U R                  5      U l        [         R&                  " U R                  U R                  5      U l        [         R&                  " U R                  U R                  5      U l        g )N   )rA  rB  )r   r   rl  rm  rn  ro  r  rp  r   r  r   elem_addr`  attnr  ffnrh   r!  r"  ri   linear_klinear_vlinear_q)r   rl  rm  rn  ro  r  rp  r   s          r   r   Emformer.__init__  s     	



", ]
&(-
	
 $I>,,y1		$..$..A		$..$..A		$..$..Ar   c           	         [         R                  " U R                  SU R                  5      [         R                  " U R                  SU R                  5      [         R                  " U R
                  SU R                  5      [         R                  " U R                  SU R                  5      [         R                  " U R                  SU R                  5      4nU$ )NrB   )r"   r   rm  r  rn  ro  rl  rx   s     r   r/   Emformer.get_random_inputs  s    KK

At~~6KK

At~~6KK

At~~6KK

At~~6KK

At~~6
 r   MCRK_LV_Lc                 |   [         R                  " X#/S5      nU R                  U5      n [         R                  " XU/S5      nU R                  U5      n	U R	                  U5      n
U R                  U	S5      u  pnU R                  U
S5      u  pn[         R                  " XX/S5      n[         R                  " XUU/S5      nU R                  U5      nU R                  UUU5      nU R                  UU5      nU R                  U5      nU R                  U5      nU R                  U R                  UU5      5      nU$ )ag  
The Emformer block takes [M_i^n, C_i^n, R_i^n] and [K_{L,i}^n, V_{L,i}^n]
as inputs and outputs [C_i^{n+1}, R_i^{n+1}].
See Fig. 1(b) Emformer and equations 6, 7, 8 - 13 in the original paper
https://arxiv.org/pdf/2010.10759.pdf

Ex:
 - self.input_dim =
 - L.shape = 30 x 1 x 512
 - M.shape =  2 x 1 x 512
 - C.shape =  5 x 1 x 512
 - R.shape =  1 x 1 x 512
r   r   )
r"   r  r"  rv  rw  r  rx  rt  rs  ru  )r   r|  r}  r~  r  r  CR	CR_normedMCRK_MCRV_MCRK_MK_CK_RV_MV_CV_RKVQ_CRZ_CRZ_CR_normedffn_outoutputs                           r   r(   Emformer.forward  s!   " YYvq!OOB'	
 ))Q1Iq)CMM#&EMM#&E JJua0MCc JJua0MCc
 IIs*A.IIsc*A. }}Y'yyq!$}}T2& ood+((;' w!=> r   )rt  rn  rs  ru  rp  r  rl  r"  rv  rx  rw  rm  ro  r  )    rr  rr  rr     i   )r4   r5   r6   r7   r%   r   r   r
   r/   r(   r8   r9   r:   s   @r   rk  rk    s     !!B!B !B 	!B
 !B !B !B 
!B !BF5)O#P 99"9'-94:9AG9	9 9r   rk  basic_sin_maxcomposite_delegate))rq   typingr   r   r   r   r   executorch.exirr   r"   torch.nnrh   r   &executorch.exir.lowered_backend_moduler	   r
   torch.exportr   r   r   r<   rW   rb   r}   r   r   r   r   r   r   r   r   r	  r  r  r.  r5  r@  r`  rk  MODELSr1   r   r   <module>r     s    4 4    # G  
4 4"%RYY %&. .A")) A0"ryy "$bii $'		 '	6")) 	66RYY 6#")) # Iehhoo  IF/		 /$8")) 83299 3'")) 'ryy 6	299 	299 :K299 KbH		 HVgryy gZ km$245
r   