
    3j]                        S r SSKrSSKJr  SSKrSSKJr  SSKJrJ	r	J
r
  SSKJr  SSKJrJr  SS	KJr  SS
KJrJr  SSKJr  \R0                  " \5      r\" SS9\ " S S\5      5       5       r " S S\R8                  5      r " S S\R8                  5      r " S S\R8                  5      r " S S\R8                  5      r  " S S\R8                  5      r! " S S\R8                  5      r" " S S\R8                  5      r# " S S \R8                  5      r$ " S! S"\R8                  5      r% " S# S$\R8                  5      r& " S% S&\R8                  5      r' " S' S(\R8                  5      r( " S) S*\R8                  5      r) " S+ S,\R8                  5      r*\ " S- S.\5      5       r+\ " S/ S0\+5      5       r,\" S1S9 " S2 S3\+5      5       r-/ S4Qr.g)5zPyTorch CvT model.    N)	dataclass)nn)BCEWithLogitsLossCrossEntropyLossMSELoss   )initialization)$ImageClassifierOutputWithNoAttentionModelOutput)PreTrainedModel)auto_docstringlogging   )	CvtConfigzV
    Base class for model's outputs, with potential hidden states and attentions.
    )custom_introc                       \ rS rSr% SrSr\R                  S-  \S'   Sr	\R                  S-  \S'   Sr
\\R                  S4   S-  \S'   Srg)	BaseModelOutputWithCLSToken!   z
cls_token_value (`torch.FloatTensor` of shape `(batch_size, 1, hidden_size)`):
    Classification token at the output of the last layer of the model.
Nlast_hidden_statecls_token_value.hidden_states )__name__
__module____qualname____firstlineno____doc__r   torchFloatTensor__annotations__r   r   tuple__static_attributes__r       ^/home/wildlama/miniconda3/lib/python3.13/site-packages/transformers/models/cvt/modeling_cvt.pyr   r   !   sS    
 37u((4/604OU&&-4:>M5**C/047>r#   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )CvtEmbeddings2   z
Construct the CvT embeddings.
c                 x   > [         TU ]  5         [        XX4US9U l        [        R
                  " U5      U l        g )N)
patch_sizenum_channels	embed_dimstridepadding)super__init__CvtConvEmbeddingsconvolution_embeddingsr   Dropoutdropout)selfr)   r*   r+   r,   r-   dropout_rate	__class__s          r$   r/   CvtEmbeddings.__init__7   s5    &7!	jq'
# zz,/r#   c                 J    U R                  U5      nU R                  U5      nU$ Nr1   r3   )r4   pixel_valueshidden_states      r$   forwardCvtEmbeddings.forward>   s&    22<@||L1r#   r:   	r   r   r   r   r   r/   r=   r"   __classcell__r6   s   @r$   r&   r&   2   s    0 r#   r&   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )r0   D   z
Image to Conv Embedding.
c                    > [         TU ]  5         [        U[        R                  R
                  5      (       a  UOX4nXl        [        R                  " X#XUS9U l	        [        R                  " U5      U l        g )N)kernel_sizer,   r-   )r.   r/   
isinstancecollectionsabcIterabler)   r   Conv2d
projection	LayerNormnormalization)r4   r)   r*   r+   r,   r-   r6   s         r$   r/   CvtConvEmbeddings.__init__I   sZ    #-j+//:R:R#S#SZZdYq
$))Llst\\)4r#   c                    U R                  U5      nUR                  u  p#pEXE-  nUR                  X#U5      R                  SSS5      nU R                  (       a  U R	                  U5      nUR                  SSS5      R                  X#XE5      nU$ Nr      r   )rK   shapeviewpermuterM   )r4   r;   
batch_sizer*   heightwidthhidden_sizes          r$   r=   CvtConvEmbeddings.forwardP   s    |42>2D2D/
&n#((;OWWXY[\^_`--l;L#++Aq!499*TZbr#   )rM   r)   rK   r?   rA   s   @r$   r0   r0   D   s    5
 
r#   r0   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtSelfAttentionConvProjection]   c           
         > [         TU ]  5         [        R                  " UUUUUSUS9U l        [        R
                  " U5      U l        g )NF)rE   r-   r,   biasgroups)r.   r/   r   rJ   convolutionBatchNorm2drM   )r4   r+   rE   r-   r,   r6   s        r$   r/   'CvtSelfAttentionConvProjection.__init__^   sG    99#
  ^^I6r#   c                 J    U R                  U5      nU R                  U5      nU$ r9   r`   rM   r4   r<   s     r$   r=   &CvtSelfAttentionConvProjection.forwardk   s(    ''5)),7r#   rd   r   r   r   r   r/   r=   r"   r@   rA   s   @r$   r[   r[   ]   s    7 r#   r[   c                       \ rS rSrS rSrg) CvtSelfAttentionLinearProjectionq   c                 r    UR                   u  p#pEXE-  nUR                  X#U5      R                  SSS5      nU$ rP   )rR   rS   rT   )r4   r<   rU   r*   rV   rW   rX   s          r$   r=   (CvtSelfAttentionLinearProjection.forwardr   sC    2>2D2D/
&n#((;OWWXY[\^_`r#   r   N)r   r   r   r   r=   r"   r   r#   r$   ri   ri   q   s    r#   ri   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )CvtSelfAttentionProjectionz   c                 n   > [         TU ]  5         US:X  a  [        XX45      U l        [	        5       U l        g )Ndw_bn)r.   r/   r[   convolution_projectionri   linear_projection)r4   r+   rE   r-   r,   projection_methodr6   s         r$   r/   #CvtSelfAttentionProjection.__init__{   s1    '*Hah*qD'!A!Cr#   c                 J    U R                  U5      nU R                  U5      nU$ r9   rr   rs   re   s     r$   r=   "CvtSelfAttentionProjection.forward   s(    22<@--l;r#   rw   )rq   rg   rA   s   @r$   rn   rn   z   s    D r#   rn   c                   :   ^  \ rS rSr SU 4S jjrS rS rSrU =r$ )CvtSelfAttention   c                   > [         TU ]  5         US-  U l        Xl        X l        Xl        [        UUUUUS:X  a  SOUS9U l        [        X#XWUS9U l        [        X#XWUS9U l	        [        R                  " X"U	S9U l        [        R                  " X"U	S9U l        [        R                  " X"U	S9U l        [        R                  " U
5      U l        g )Ng      avglinear)rt   )r^   )r.   r/   scalewith_cls_tokenr+   	num_headsrn   convolution_projection_queryconvolution_projection_keyconvolution_projection_valuer   Linearprojection_queryprojection_keyprojection_valuer2   r3   )r4   r   r+   rE   	padding_q
padding_kvstride_q	stride_kvqkv_projection_methodqkv_biasattention_drop_rater   kwargsr6   s                r$   r/   CvtSelfAttention.__init__   s     	_
,"",F*?5*HhNc-
) +EJMb+
' -GJMb-
) !#		)X N ii	8L "		)X Nzz"56r#   c                     UR                   u  p#nU R                  U R                  -  nUR                  X#U R                  U5      R	                  SSSS5      $ )Nr   rQ   r   r   )rR   r+   r   rS   rT   )r4   r<   rU   rX   _head_dims         r$   "rearrange_for_multi_head_attention3CvtSelfAttention.rearrange_for_multi_head_attention   sR    %1%7%7"
>>T^^3  $..(S[[\]_`bcefggr#   c                 R   U R                   (       a  [        R                  " USX#-  /S5      u  pAUR                  u  pVnUR	                  SSS5      R                  XWX#5      nU R                  U5      nU R                  U5      n	U R                  U5      n
U R                   (       aC  [        R                  " WU	4SS9n	[        R                  " XH4SS9n[        R                  " XJ4SS9n
U R                  U R                  -  nU R                  U R                  U	5      5      n	U R                  U R                  U5      5      nU R                  U R                  U
5      5      n
[        R                   " SX/5      U R"                  -  n[        R$                  R&                  R)                  USS9nU R+                  U5      n[        R                   " SX/5      nUR                  u    pnUR	                  SSSS5      R-                  5       R                  XVU R                  U-  5      nU$ )	Nr   r   rQ   dimzbhlk,bhtk->bhltzbhlt,bhtv->bhlvr   )r   r   splitrR   rT   rS   r   r   r   catr+   r   r   r   r   r   einsumr   r   
functionalsoftmaxr3   
contiguous)r4   r<   rV   rW   	cls_tokenrU   rX   r*   keyqueryvaluer   attention_scoreattention_probscontextr   s                   r$   r=   CvtSelfAttention.forward   s   &+kk,FN@SUV&W#I0<0B0B-
#++Aq!499*TZb--l;11,?11,?IIy%0a8E))Y,!4CIIy0a8E>>T^^3778M8Me8TU55d6I6I#6NO778M8Me8TU,,'85,G$**T((--55o25N,,7,,0?2JK&}}11//!Q1-88:??
Y]YgYgjrYrsr#   )r   r   r   r3   r+   r   r   r   r   r   r   T)	r   r   r   r   r/   r   r=   r"   r@   rA   s   @r$   rz   rz      s     '7Rh r#   rz   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )CvtSelfOutput   z
The residual connection is defined in CvtLayer instead of here (as is the case with other models), due to the
layernorm applied before each block.
c                    > [         TU ]  5         [        R                  " X5      U l        [        R
                  " U5      U l        g r9   )r.   r/   r   r   denser2   r3   )r4   r+   	drop_rater6   s      r$   r/   CvtSelfOutput.__init__   s.    YYy4
zz),r#   c                 J    U R                  U5      nU R                  U5      nU$ r9   r   r3   r4   r<   input_tensors      r$   r=   CvtSelfOutput.forward   s$    zz,/||L1r#   r   r?   rA   s   @r$   r   r      s    
-
 r#   r   c                   4   ^  \ rS rSr SU 4S jjrS rSrU =r$ )CvtAttention   c                 v   > [         TU ]  5         [        UUUUUUUUU	U
U5      U l        [	        X+5      U l        g r9   )r.   r/   rz   	attentionr   output)r4   r   r+   rE   r   r   r   r   r   r   r   r   r   r6   s                r$   r/   CvtAttention.__init__   sK     	)!
 $I9r#   c                 L    U R                  XU5      nU R                  XA5      nU$ r9   r   r   )r4   r<   rV   rW   self_outputattention_outputs         r$   r=   CvtAttention.forward	  s'    nn\5A;;{Ar#   r   r   rg   rA   s   @r$   r   r      s     :>   r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtIntermediatei  c                    > [         TU ]  5         [        R                  " U[	        X-  5      5      U l        [        R                  " 5       U l        g r9   )r.   r/   r   r   intr   GELU
activation)r4   r+   	mlp_ratior6   s      r$   r/   CvtIntermediate.__init__  s5    YYy#i.C*DE
'')r#   c                 J    U R                  U5      nU R                  U5      nU$ r9   )r   r   re   s     r$   r=   CvtIntermediate.forward  s$    zz,/|4r#   )r   r   rg   rA   s   @r$   r   r     s    $
 r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	CvtOutputi  c                    > [         TU ]  5         [        R                  " [	        X-  5      U5      U l        [        R                  " U5      U l        g r9   )r.   r/   r   r   r   r   r2   r3   )r4   r+   r   r   r6   s       r$   r/   CvtOutput.__init__  s8    YYs9#899E
zz),r#   c                 R    U R                  U5      nU R                  U5      nX-   nU$ r9   r   r   s      r$   r=   CvtOutput.forward!  s,    zz,/||L1#2r#   r   rg   rA   s   @r$   r   r     s    -
 r#   r   c                      ^  \ rS rSrSrSS\SS4U 4S jjjrS\R                  S\R                  4S jr	S\
4S	 jrS
rU =r$ )CvtDropPathi)  zStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
	drop_probreturnNc                 .   > [         TU ]  5         Xl        g r9   )r.   r/   r   )r4   r   r6   s     r$   r/   CvtDropPath.__init__0  s    "r#   r   c                 V   U R                   S:X  d  U R                  (       d  U$ SU R                   -
  nUR                  S   4SUR                  S-
  -  -   n[        R
                  " X1R                  UR                  S9n[        R                  " XB-   5      nUR                  U5      U-  $ )N        r   r   )r   )dtypedevice)
r   trainingrR   ndimr   randr   r   floordiv)r4   r   	keep_probrR   random_tensors        r$   r=   CvtDropPath.forward4  s    >>S   &	$$Q')DM4F4F4J,KK

50C0CML`L`aM$=>  +m;;r#   c                      SU R                    3$ )Nzp=r   )r4   s    r$   
extra_reprCvtDropPath.extra_repr=  s    DNN#$$r#   r   )r   )r   r   r   r   r   floatr/   r   Tensorr=   strr   r"   r@   rA   s   @r$   r   r   )  sL    #% #$ # #<U\\ <ell <%C % %r#   r   c                   8   ^  \ rS rSrSr SU 4S jjrS rSrU =r$ )CvtLayeriA  zZ
CvtLayer composed by attention layers, normalization and multi-layer perceptrons (mlps).
c                 \  > [         TU ]  5         [        UUUUUUUUU	U
UU5      U l        [	        X,5      U l        [        X,U5      U l        US:  a  [        U5      O[        R                  " 5       U l        [        R                  " U5      U l        [        R                  " U5      U l        g )Nr   )r.   r/   r   r   r   intermediater   r   r   r   Identity	drop_pathrL   layernorm_beforelayernorm_after)r4   r   r+   rE   r   r   r   r   r   r   r   r   r   drop_path_rater   r6   s                  r$   r/   CvtLayer.__init__F  s    " 	%!
 ,IA	i@8F8L^4RTR]R]R_ "Y 7!||I6r#   c                     U R                  U R                  U5      UU5      nUnU R                  U5      nXQ-   nU R                  U5      nU R	                  U5      nU R                  Xa5      nU R                  U5      nU$ r9   )r   r   r   r   r   r   )r4   r<   rV   rW   self_attention_outputr   layer_outputs          r$   r=   CvtLayer.forwardm  s     $!!,/!

 1>>*:; (6 ++L9((6 {{<>~~l3r#   )r   r   r   r   r   r   r   r?   rA   s   @r$   r   r   A  s    & %7N r#   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CvtStagei  c                   > [         TU ]  5         Xl        X l        U R                  R                  U R                     (       aH  [
        R                  " [        R                  " SSU R                  R                  S   5      5      U l        [        UR                  U R                     UR                  U R                     U R                  S:X  a  UR                  OUR                  U R                  S-
     UR                  U R                     UR                  U R                     UR                  U R                     S9U l        [        R"                  " SUR$                  U R                     UR&                  U   SS9 Vs/ s H  o3R)                  5       PM     nn[
        R*                  " [-        UR&                  U R                     5       Vs/ s GHQ  n[/        UR0                  U R                     UR                  U R                     UR2                  U R                     UR4                  U R                     UR6                  U R                     UR8                  U R                     UR:                  U R                     UR<                  U R                     UR>                  U R                     UR@                  U R                     UR                  U R                     X@R                     URB                  U R                     UR                  U R                     S9PGMT     sn6 U l"        g s  snf s  snf )Nr   r   r   )r)   r,   r*   r+   r-   r5   cpu)r   )r   r+   rE   r   r   r   r   r   r   r   r   r   r   r   )#r.   r/   configstager   r   	Parameterr   randnr+   r&   patch_sizespatch_strider*   patch_paddingr   	embeddinglinspacer   depthitem
Sequentialranger   r   
kernel_qkvr   r   r   r   r   r   r   r   layers)r4   r   r   xdrop_path_ratesr   r6   s         r$   r/   CvtStage.__init__  s   
;;  ,\\%++aDKK<Q<QRT<U*VWDN&))$**5&&tzz204

a,,VEUEUVZV`V`cdVdEe&&tzz2((4))$**5
 $nnQ0E0Edjj0QSYS_S_`eSfotu
uFFHu 	 
 mm$ v||DJJ78#" 9A! $..tzz:$..tzz: & 1 1$** =$..tzz:%00<$..tzz:#__TZZ8*0*F*Ftzz*R#__TZZ8(.(B(B4::(N$..tzz:#2::#>$..tzz:#)#3#3DJJ#?  9#
	

s   L7EL<c                 Z   S nU R                  U5      nUR                  u  p4pVUR                  X4XV-  5      R                  SSS5      nU R                  R
                  U R                     (       a3  U R
                  R                  USS5      n[        R                  " X!4SS9nU R                   H  nU" XU5      nUnM     U R                  R
                  U R                     (       a  [        R                  " USXV-  /S5      u  p!UR                  SSS5      R                  X4XV5      nX4$ )Nr   rQ   r   r   r   )r  rR   rS   rT   r   r   r   expandr   r   r  r   )	r4   r<   r   rU   r*   rV   rW   layerlayer_outputss	            r$   r=   CvtStage.forward  s   	~~l32>2D2D/
&#((6>RZZ[\^_abc;;  ,--j"bAI 99i%>AFL[[E!,>M(L ! ;;  ,&+kk,FN@SUV&W#I#++Aq!499*TZb&&r#   )r   r   r  r  r   rg   rA   s   @r$   r   r     s    (
T' 'r#   r   c                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )
CvtEncoderi  c                    > [         TU ]  5         Xl        [        R                  " / 5      U l        [        [        UR                  5      5       H'  nU R
                  R                  [        X5      5        M)     g r9   )r.   r/   r   r   
ModuleListstagesr	  lenr  appendr   )r4   r   	stage_idxr6   s      r$   r/   CvtEncoder.__init__  sR    mmB's6<<01IKKx:; 2r#   c                     U(       a  SOS nUnS n[        U R                  5       H  u  pxU" U5      u  pVU(       d  M  XE4-   nM     U(       d  [        S XVU4 5       5      $ [        UUUS9$ )Nr   c              3   .   #    U  H  oc  M  Uv   M     g 7fr9   r   ).0vs     r$   	<genexpr>%CvtEncoder.forward.<locals>.<genexpr>  s     b$Pq$Ps   	r   r   r   )	enumerater  r!   r   )	r4   r;   output_hidden_statesreturn_dictall_hidden_statesr<   r   r   stage_modules	            r$   r=   CvtEncoder.forward  s|    "6BD#	!*4;;!7A&2<&@#L##$5$G! "8
 b\>O$Pbbb**%+
 	
r#   )r   r  )FTrg   rA   s   @r$   r  r    s    <
 
r#   r  c                   \    \ rS rSr% \\S'   SrSrS/r\	R                  " 5       S 5       rSrg)	CvtPreTrainedModeli  r   cvtr;   r   c                    [        U[        R                  [        R                  45      (       ac  [        R
                  " UR                  SU R                  R                  S9  UR                  b!  [        R                  " UR                  5        gg[        U[        R                  [        R                  45      (       a  [        R                  " UR                  5        [        R                  " UR                  5        [        USS5      ba  [        R                  " UR                  5        [        R                  " UR                   5        [        R                  " UR"                  5        gg[        U[$        5      (       a^  U R                  R&                  UR(                     (       a5  [        R
                  " UR&                  SU R                  R                  S9  ggg)zInitialize the weightsr   )meanstdNrunning_mean)rF   r   r   rJ   inittrunc_normal_weightr   initializer_ranger^   zeros_rL   ra   ones_getattrr0  running_varnum_batches_trackedr   r   r   )r4   modules     r$   _init_weights CvtPreTrainedModel._init_weights  s3    fryy"))455v}}3DKK<Y<YZ{{&FKK( 'r~~ >??KK$JJv}}%v~t4@F//0

6--.F667 A )){{$$V\\2""6#3#3#4;;C`C`a 3 *r#   r   N)r   r   r   r   r   r    base_model_prefixmain_input_name_no_split_modulesr   no_gradr;  r"   r   r#   r$   r+  r+    s5    $O#
]]_b br#   r+  c                      ^  \ rS rSrS
U 4S jjr\   SS\R                  S-  S\S-  S\S-  S\	\
-  4S jj5       rS	rU =r$ )CvtModeli  c                 p   > [         TU ]  U5        Xl        [        U5      U l        U R                  5         g)z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)r.   r/   r   r  encoder	post_init)r4   r   add_pooling_layerr6   s      r$   r/   CvtModel.__init__  s-    
 	 !&)r#   Nr;   r%  r&  r   c                    Ub  UOU R                   R                  nUb  UOU R                   R                  nUc  [        S5      eU R	                  UUUS9nUS   nU(       d	  U4USS  -   $ [        UUR                  UR                  S9$ )Nz You have to specify pixel_valuesr%  r&  r   r   r#  )r   r%  r&  
ValueErrorrD  r   r   r   )r4   r;   r%  r&  r   encoder_outputssequence_outputs          r$   r=   CvtModel.forward  s     %9$D $++JjJj 	 &1%<k$++BYBY?@@,,!5# ' 

 *!,#%(;;;*-+;;)77
 	
r#   )r   rD  r   )NNN)r   r   r   r   r/   r   r   r   boolr!   r   r=   r"   r@   rA   s   @r$   rB  rB    sd      -1,0#'	
llT)
 #Tk
 D[	
 
,	,
 
r#   rB  z
    Cvt Model transformer with an image classification head on top (a linear layer on top of the final hidden state of
    the [CLS] token) e.g. for ImageNet.
    c                      ^  \ rS rSrU 4S jr\    SS\R                  S-  S\R                  S-  S\S-  S\S-  S\	\
-  4
S	 jj5       rS
rU =r$ )CvtForImageClassificationi%  c                   > [         TU ]  U5        UR                  U l        [        USS9U l        [
        R                  " UR                  S   5      U l        UR                  S:  a.  [
        R                  " UR                  S   UR                  5      O[
        R                  " 5       U l        U R                  5         g )NF)rF  r   r   )r.   r/   
num_labelsrB  r,  r   rL   r+   	layernormr   r   
classifierrE  )r4   r   r6   s     r$   r/   "CvtForImageClassification.__init__,  s      ++Fe<f&6&6r&:; CIBSBSVWBWBIIf&&r*F,=,=>]_]h]h]j 	
 	r#   Nr;   labelsr%  r&  r   c                 n   Ub  UOU R                   R                  nU R                  UUUS9nUS   nUS   nU R                   R                  S   (       a  U R	                  U5      nOEUR
                  u  ppUR                  XX-  5      R                  SSS5      nU R	                  U5      nUR                  SS9nU R                  U5      nSnUGb  U R                   R                  c  U R                   R                  S:X  a  SU R                   l
        OyU R                   R                  S:  aN  UR                  [        R                  :X  d  UR                  [        R                  :X  a  S	U R                   l
        OS
U R                   l
        U R                   R                  S:X  aS  [!        5       nU R                   R                  S:X  a&  U" UR#                  5       UR#                  5       5      nOU" X5      nOU R                   R                  S	:X  aG  [%        5       nU" UR                  SU R                   R                  5      UR                  S5      5      nO,U R                   R                  S
:X  a  ['        5       nU" X5      nU(       d  U4USS -   nUb  U4U-   $ U$ [)        XUR*                  S9$ )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
NrI  r   r   r   rQ   r   
regressionsingle_label_classificationmulti_label_classification)losslogitsr   )r   r&  r,  r   rS  rR   rS   rT   r.  rT  problem_typerR  r   r   longr   r   squeezer   r   r
   r   )r4   r;   rV  r%  r&  r   outputsrL  r   rU   r*   rV   rW   sequence_output_meanr\  r[  loss_fctr   s                     r$   r=   !CvtForImageClassification.forward:  sQ    &1%<k$++BYBY((!5#  
 "!*AJ	;;  $"nnY7O6E6K6K3Jf-22:V^\ddefhiklmO"nn_=O.333:!56{{''/;;))Q./;DKK,[[++a/V\\UZZ5OSYS_S_chclclSl/LDKK,/KDKK,{{''<7"9;;))Q.#FNN$4fnn6FGD#F3D))-JJ+-B0F0F GUWY))-II,./Y,F)-)9TGf$EvE3\c\q\qrrr#   )rT  r,  rS  rR  )NNNN)r   r   r   r   r/   r   r   r   rN  r!   r
   r=   r"   r@   rA   s   @r$   rP  rP  %  s      -1&*,0#'=sllT)=s t#=s #Tk	=s
 D[=s 
5	5=s =sr#   rP  )rP  rB  r+  )/r   collections.abcrG   dataclassesr   r   r   torch.nnr   r   r    r	   r1  modeling_outputsr
   r   modeling_utilsr   utilsr   r   configuration_cvtr   
get_loggerr   loggerr   Moduler&   r0   r[   ri   rn   rz   r   r   r   r   r   r   r   r  r+  rB  rP  __all__r   r#   r$   <module>rp     s     !   A A & Q - , ( 
		H	% 
 ?+ ? ?BII $		 2RYY (ryy 
 
Nryy NbBII "# 299 # L	bii 	
		 
%")) %0?ryy ?D<'ryy <'~
 
8 b b b2 )
! )
 )
X Ms 2 MsMs` Jr#   