ó
    Eñiqf  ã                   ón   • S SK r S SKrS SKrS SKJs  Jr  S SKJrJr  S/r " S S\R                  5      r	g)é    N)ÚnnÚTensorÚMultiheadAttentionc                   ó¤  ^ • \ rS rSr\R
                  r S/r         SS\S\S\	S\
S\
S	\
S
\S-  S\S-  S\
SS4U 4S jjjrS r\S 5       r\R                   R"                  S 5       r\S 5       r     SS\S\S\S\S-  S\
S\S-  S\
S\
S\\\S-  4   4S jjr     SS\S\S\S\S-  S\
S\S-  S\
S\
S\\\S-  4   4S jjrSrU =r$ )r   é   Úbatch_firstNÚ	embed_dimÚ	num_headsÚdropoutÚbiasÚadd_bias_kvÚadd_zero_attnÚkdimÚvdimÚreturnc                 ó  >• X«S.n[         TU ]  " UUUUUUUUU	4	0 UD6  [        R                  " U R                  U R                  4SU0UD6U l        [        R                  " U R                  U R                  4SU0UD6U l        [        R                  " U R                  U R                  4SU0UD6U l	        [        R                  " U R                  U R                  4SU0UD6U l
        [        R                  R                  R                  R                  5       U l        [        R                  R                   R#                  5       U l        [        R                  R                   R#                  5       U l        [        R                  R                   R)                  5       U l        [        R                  R                   R)                  5       U l        [        R                  R                   R)                  5       U l        g )N)ÚdeviceÚdtyper   )ÚsuperÚ__init__r   ÚLinearr	   Úlinear_Qr   Úlinear_Kr   Úlinear_VÚout_projÚtorchÚaoÚ	quantizedÚFloatFunctionalÚq_scaling_productÚquantizationÚ	QuantStubÚquant_attn_outputÚquant_attn_output_weightsÚDeQuantStubÚ	dequant_qÚ	dequant_kÚ	dequant_v)Úselfr	   r
   r   r   r   r   r   r   r   r   r   Úfactory_kwargsÚ	__class__s                €Úg/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/ao/nn/quantizable/modules/activation.pyr   ÚMultiheadAttention.__init__=   s¢  ø€ ð %+Ñ;ˆÜ‰ÒØØØØØØØØØñ	
ð ò	
ô Ÿ	š	Ø�N‰N˜DŸN™Nñ
Ø15ð
Ø9Gñ
ˆŒô Ÿ	š	Ø�I‰I�t—~‘~ñ
Ø,0ð
Ø4Bñ
ˆŒô Ÿ	š	Ø�I‰I�t—~‘~ñ
Ø,0ð
Ø4Bñ
ˆŒô
 Ÿ	š	Ø�N‰N˜DŸN™Nñ
Ø15ð
Ø9Gñ
ˆŒô
 "'§¡§¡×!6Ñ!6×!FÑ!FÓ!HˆÔô "'§¡×!6Ñ!6×!@Ñ!@Ó!BˆÔÜ).¯©×)>Ñ)>×)HÑ)HÓ)JˆÔ&ÜŸ™×.Ñ.×:Ñ:Ó<ˆŒÜŸ™×.Ñ.×:Ñ:Ó<ˆŒÜŸ™×.Ñ.×:Ñ:Ó<ˆ�ó    c                 ó   • g)NÚQuantizableMultiheadAttention© )r)   s    r,   Ú	_get_nameÚMultiheadAttention._get_namer   s   € Ø.r.   c                 ó
  • [        U5      U R                  La$  [        SU R                   S[        U5       35      e[        US5      (       d  [        S5      eU " UR                  UR
                  UR                  UR                  S LUR                  S LUR                  UR                  UR                  UR                  5	      nUR                  Ul        UR                  Ul        UR                  Ul        UR                  R                   UR                  l        UR                  R"                  UR                  l        UR$                  (       Gaê  UR                  nSnXAR                  -   nUR&                  XE2S S 24   nUb,  [(        R*                  R-                  X4U UR.                  5      n[(        R*                  R-                  XfR.                  5      UR0                  l        X2R0                  l        UR                  nUnXAR                  -   nUR&                  XE2S S 24   nUb,  [(        R*                  R-                  X4U UR.                  5      n[(        R*                  R-                  XfR.                  5      UR2                  l        X2R2                  l        UR                  nUnUR&                  US 2S S 24   nUb,  [(        R*                  R-                  X4S  UR.                  5      n[(        R*                  R-                  XfR.                  5      UR4                  l        X2R4                  l        GO’[*        R,                  " UR6                  5      UR0                  l        [*        R,                  " UR8                  5      UR2                  l        [*        R,                  " UR:                  5      UR4                  l        UR                  c4  S UR0                  l        S UR2                  l        S UR4                  l        OÄ[*        R,                  " UR                  SUR                   5      UR0                  l        [*        R,                  " UR                  UR                  UR                  S-   5      UR2                  l        [*        R,                  " UR                  UR                  S-  S  5      UR4                  l        UR=                  5         [(        R>                  R@                  RC                  USS9nU$ )	NzExpected type ú, got Úqconfigz$The float module must have 'qconfig'r   é   T)Úinplace)"ÚtypeÚ_FLOAT_MODULEÚAssertionErrorÚhasattrr	   r
   r   Úin_proj_biasÚbias_kr   r   r   r   Úbias_vr6   r   Úweightr   Ú_qkv_same_embed_dimÚin_proj_weightr   r   Ú	ParameterÚrequires_gradr   r   r   Úq_proj_weightÚk_proj_weightÚv_proj_weightÚevalr   r!   Úprepare)ÚclsÚotherÚobservedr   Ú_startÚ_endr@   s          r,   Ú
from_floatÚMultiheadAttention.from_floatu   sí  € ä�‹;˜c×/Ñ/Ò/Ü Ø  ×!2Ñ!2Ð 3°6¼$¸u»+¸ÐGóð ô �u˜i×(Ñ(Ü Ð!GÓHÐHáØ�O‰OØ�O‰OØ�M‰MØ×Ñ tÐ+Ø�\‰\ Ð%Ø×ÑØ�J‰JØ�J‰JØ×Ñó

ˆð  Ÿ,™,ˆŒØŸ,™,ˆŒØ Ÿ=™=ˆÔð $)§>¡>×#8Ñ#8ˆ×ÑÔ Ø!&§¡×!4Ñ!4ˆ×ÑÔØ×$×$Ð$à×%Ñ%ˆDØˆFØŸO™OÑ+ˆDØ×)Ñ)¨&¨+²q¨.Ñ9ˆFØÑÜ—x‘x×)Ñ)¨$°dÐ*;¸T×=OÑ=OÓP�Ü',§x¡x×'9Ñ'9¸&×BVÑBVÓ'WˆH×ÑÔ$Ø%)×ÑÔ"à×%Ñ%ˆDØˆFØŸO™OÑ+ˆDØ×)Ñ)¨&¨+²q¨.Ñ9ˆFØÑÜ—x‘x×)Ñ)¨$°dÐ*;¸T×=OÑ=OÓP�Ü',§x¡x×'9Ñ'9¸&×BVÑBVÓ'WˆH×ÑÔ$Ø%)×ÑÔ"à×%Ñ%ˆDØˆFØ×)Ñ)¨&©'²1¨*Ñ5ˆFØÑÜ—x‘x×)Ñ)¨$¨w¨-¸×9KÑ9KÓL�Ü',§x¡x×'9Ñ'9¸&×BVÑBVÓ'WˆH×ÑÔ$Ø%)×ÑÖ"ä')§|¢|°E×4GÑ4GÓ'HˆH×ÑÔ$Ü')§|¢|°E×4GÑ4GÓ'HˆH×ÑÔ$Ü')§|¢|°E×4GÑ4GÓ'HˆH×ÑÔ$Ø×!Ñ!Ñ)à)-�×!Ñ!Ô&à)-�×!Ñ!Ô&à)-�×!Ñ!Õ&ä)+¯ªØ×&Ñ& q¨5¯?©?Ð;ó*�×!Ñ!Ô&ô *,¯ªØ×&Ñ& u§¡¸%¿/¹/ÈAÑ:MÐOó*�×!Ñ!Ô&ô *,¯ªØ×&Ñ&¨¯©¸!Ñ(;Ð'>Ð?ó*�×!Ñ!Ô&ð 	�‰Œä—8‘8×(Ñ(×0Ñ0°À4Ð0ÐHˆØˆr.   c                 ó’  • U R                  U R                  U R                  U R                  U R                  R                  5       S   SLU R                  SLU R                  U R                  U R                  U R                  5	      nUR                  U R                  :w  a%  [        SUR                   SU R                   35      eU R                  b3  [        R                  " U R                  R                  5       5      Ul        U R                   b3  [        R                  " U R                   R                  5       5      Ul        U R"                  R                  5       u  p#[        R                  " UR                  5       5      UR"                  l        Ub%  [        R                  " U5      UR"                  l        U R                  R                  5       u  pEUR                  5       nU R(                  R                  5       u  pgUR                  5       nU R*                  R                  5       u  p‰UR                  5       nUR                  (       Ga  Sn
X¡R                  -   nXAR,                  X«2SS24'   UR.                  b+  [1        US:H  5      (       d  [        S5      eXQR.                  X«& Un
X¡R                  -   nXaR,                  X«2SS24'   UR.                  b+  [1        US:H  5      (       d  [        S5      eXqR.                  X«& Un
X�R,                  U
S2SS24'   UR.                  b,  [1        U	S:H  5      (       d  [        S5      eX‘R.                  U
S& U$ [        R                  " U5      Ul        [        R                  " U5      Ul        [        R                  " U5      Ul        UR.                  c5  SU R                  l        SU R(                  l        SU R*                  l        U$ XQR.                  SUR                  & XqR.                  UR                  UR                  S	-  & X‘R.                  UR                  S	-  S& U$ )
zÇUtility to convert the quantized MHA back to float.

The motivation for this is that it is not trivial to convert the weights
from the format that is used in the quantized version back to the
float.
é   Nz_qkv_same_embed_dim mismatch: ú != r   z Expected all bQ elements to be 0z Expected all bK elements to be 0z Expected all bV elements to be 0r7   )r:   r	   r
   r   r   Ú_weight_biasr>   r   r   r   r   rA   r;   r   rC   Ú
dequantizer?   r   r@   r   r   r   rB   r=   ÚallrE   rF   rG   )r)   ÚfpÚwÚbÚwQÚbQÚwKÚbKÚwVÚbVrM   rN   s               r,   rU   ÚMultiheadAttention.dequantizeÆ   sb  € ð ×ÑØ�N‰NØ�N‰NØ�L‰LØ�]‰]×'Ñ'Ó)¨!Ñ,°DÐ8Ø�[‰[ Ð$Ø×ÑØ�I‰IØ�I‰IØ×Ñó

ˆð ×!Ñ! T×%=Ñ%=Ó=Ü Ø0°×1GÑ1GÐ0HÈÈT×MeÑMeÐLfÐgóð ð �;‰;Ñ"ÜŸš T§[¡[×%;Ñ%;Ó%=Ó>ˆBŒIØ�;‰;Ñ"ÜŸš T§[¡[×%;Ñ%;Ó%=Ó>ˆBŒIð �}‰}×)Ñ)Ó+‰ˆÜŸ\š\¨!¯,©,«.Ó9ˆ�‰ÔØ‰=Ü!Ÿ|š|¨A›ˆB�K‰KÔà—‘×+Ñ+Ó-‰ˆØ�]‰]‹_ˆØ—‘×+Ñ+Ó-‰ˆØ�]‰]‹_ˆØ—‘×+Ñ+Ó-‰ˆØ�]‰]‹_ˆØ×!×!Ð!àˆFØŸL™LÑ(ˆDØ02×Ñ˜f˜kª1˜nÑ-Ø�‰Ñ*ä˜2 ™7—|‘|Ü(Ð)KÓLÐLØ/1—‘ Ð,àˆFØŸL™LÑ(ˆDØ02×Ñ˜f˜kª1˜nÑ-Ø�‰Ñ*ä˜2 ™7—|‘|Ü(Ð)KÓLÐLØ/1—‘ Ð,àˆFØ,.×Ñ˜f™g¢q˜jÑ)Ø�‰Ñ*ä˜2 ™7—|‘|Ü(Ð)KÓLÐLØ+-—‘  Ð(ð" ˆ	ô  "Ÿ|š|¨BÓ/ˆBÔÜ!Ÿ|š|¨BÓ/ˆBÔÜ!Ÿ|š|¨BÓ/ˆBÔØ�‰Ñ&à%)�—‘Ô"à%)�—‘Ô"à%)�—‘Ô"ð ˆ	ð	 57—‘  B§L¡LÐ1ØEG—‘ §¡°·±¸qÑ0@ÐBØ8:—‘ §¡°Ñ!1Ð 4Ð5àˆ	r.   c                 ó   • [        S5      e)NzdIt looks like you are trying to prepare an MHA module. Please, see the examples on quantizable MHAs.)ÚNotImplementedError)rJ   rK   s     r,   Úfrom_observedÚ MultiheadAttention.from_observed  s   € ô
 "ð0ó
ð 	
r.   ÚqueryÚkeyÚvalueÚkey_padding_maskÚneed_weightsÚ	attn_maskÚaverage_attn_weightsÚ	is_causalc	           
      ó2   • U R                  UUUUUUUU5      $ )a  
Note::
    Please, refer to :func:`~torch.nn.MultiheadAttention.forward` for more
    information

Args:
    query, key, value: map a query and a set of key-value pairs to an output.
        See "Attention Is All You Need" for more details.
    key_padding_mask: if provided, specified padding elements in the key will
        be ignored by the attention. When given a binary mask and a value is True,
        the corresponding value on the attention layer will be ignored.
    need_weights: output attn_output_weights.
    attn_mask: 2D or 3D mask that prevents attention to certain positions. A 2D mask will be broadcasted for all
        the batches while a 3D mask allows to specify a different mask for the entries of each batch.

Shape:
    - Inputs:
    - query: :math:`(L, N, E)` where L is the target sequence length, N is the batch size, E is
      the embedding dimension. :math:`(N, L, E)` if ``batch_first`` is ``True``.
    - key: :math:`(S, N, E)`, where S is the source sequence length, N is the batch size, E is
      the embedding dimension. :math:`(N, S, E)` if ``batch_first`` is ``True``.
    - value: :math:`(S, N, E)` where S is the source sequence length, N is the batch size, E is
      the embedding dimension. :math:`(N, S, E)` if ``batch_first`` is ``True``.
    - key_padding_mask: :math:`(N, S)` where N is the batch size, S is the source sequence length.
      If a BoolTensor is provided, the positions with the
      value of ``True`` will be ignored while the position with the value of ``False`` will be unchanged.
    - attn_mask: 2D mask :math:`(L, S)` where L is the target sequence length, S is the source sequence length.
      3D mask :math:`(N*num_heads, L, S)` where N is the batch size, L is the target sequence length,
      S is the source sequence length. attn_mask ensure that position i is allowed to attend the unmasked
      positions. If a BoolTensor is provided, positions with ``True``
      is not allowed to attend while ``False`` values will be unchanged. If a FloatTensor
      is provided, it will be added to the attention weight.
    - is_causal: If specified, applies a causal mask as attention mask. Mutually exclusive with providing attn_mask.
      Default: ``False``.
    - average_attn_weights: If true, indicates that the returned ``attn_weights`` should be averaged across
      heads. Otherwise, ``attn_weights`` are provided separately per head. Note that this flag only has an
      effect when ``need_weights=True.``. Default: True (i.e. average weights across heads)

    - Outputs:
    - attn_output: :math:`(L, N, E)` where L is the target sequence length, N is the batch size,
      E is the embedding dimension. :math:`(N, L, E)` if ``batch_first`` is ``True``.
    - attn_output_weights: If ``average_attn_weights=True``, returns attention weights averaged
      across heads of shape :math:`(N, L, S)`, where N is the batch size, L is the target sequence length,
      S is the source sequence length. If ``average_attn_weights=False``, returns attention weights per
      head of shape :math:`(N, num_heads, L, S)`.
)Ú_forward_impl)	r)   re   rf   rg   rh   ri   rj   rk   rl   s	            r,   ÚforwardÚMultiheadAttention.forward)  s0   € ðr ×!Ñ!ØØØØØØØ Øó	
ð 		
r.   c	           	      óò  • S n	S n
Ub  U(       a  [        S5      eU(       a  [        S5      eU R                  (       a  S XU4 5       u  pnUR                  5       u  p¼nU R                  U:w  a  [        SU R                   SU 35      eUR                  S5      UR                  S5      :w  d$  UR                  S5      UR                  S5      :w  a-  [        SUR                  5        S	UR                  5        35      eU R                  U R                  -  nXàR                  -  U R                  :w  a  [        S
5      e[        U5      S-  nU R                  U5      nU R                  U5      nU R                  U5      nU R                  R                  UU5      nUGb“  UR                  [        R                  :X  a4  [        R                  " SSS9  UR!                  [        R"                  5      nUR%                  5       (       d6  UR                  [        R"                  :w  a  [        SUR                   35      eUR'                  5       S:X  a[  UR)                  S5      n[+        UR                  5       5      SUR                  S5      UR                  S5      /:w  a  [-        S5      eO‡UR'                  5       S:X  aV  [+        UR                  5       5      XÀR                  -  UR                  S5      UR                  S5      /:w  a  [-        S5      eO[-        SUR'                  5        S35      eUbR  UR                  [        R                  :X  a4  [        R                  " SSS9  UR!                  [        R"                  5      nU R.                  bë  U R0                  bÞ  U	c¾  U
c»  U R.                  nUc  [        S5      eU R0                  nUc  [        S5      e[        R2                  " UUR5                  SUS5      /5      n[        R2                  " UUR5                  SUS5      /5      nUb  [6        R8                  " US5      nUb  [6        R8                  " US5      nOMU	b  [        S5      eU
b  [        S5      eO0U R.                  b  [        S5      eU R0                  b  [        S5      eUR;                  5       R=                  X¼U R                  -  U5      R?                  SS5      nUb=  UR;                  5       R=                  SXÀR                  -  U5      R?                  SS5      nUb=  UR;                  5       R=                  SXÀR                  -  U5      R?                  SS5      nU	b„  U	R                  S5      XÀR                  -  :w  a,  [        SXÀR                  -   SU	R                  S5       35      eU	R                  S5      U:w  a   [        S U SU	R                  S5       35      eU	nU
b„  U
R                  S5      XÀR                  -  :w  a,  [        S!XÀR                  -   SU
R                  S5       35      eU
R                  S5      U:w  a   [        S"U SU
R                  S5       35      eU
nUR                  S5      nUbj  UR                  S5      U:w  a   [        S#U SUR                  S5       35      eUR                  S5      U:w  a   [        S$U SUR                  S5       35      eU R@                  (       Ga}  US-  n[        RB                  " UR                  S5      S4UR                  5       SS  -   5      nURD                  (       a?  [        RF                  " UURI                  5       URK                  5       UR                  5      n[        R2                  " UU/SS%9n[        RB                  " UR                  S5      S4UR                  5       SS  -   5      nURD                  (       a?  [        RF                  " UURI                  5       URK                  5       UR                  5      n[        R2                  " UU/SS%9nUb  [6        R8                  " US5      nUb  [6        R8                  " US5      nU RM                  U5      nU RO                  U5      nU RQ                  U5      n[        RR                  " UUR?                  SS5      5      nXÀR                  -  UU/n[+        UR                  5       5      U:w  a(  [        S&U S[+        UR                  5       5       35      eUb?  UR                  [        R"                  :X  a  URU                  U[        S'5      5        OUU-  nUbu  UR=                  XÀR                  UU5      nURW                  UR)                  S5      R)                  S5      [        S'5      5      nUR=                  XÀR                  -  UU5      n[6        RX                  " USS%9n[6        RZ                  " UU RZ                  U R\                  S(9n[        RR                  " UU5      nXÀR                  -  X¾/n[+        UR                  5       5      U:w  a(  [        S)U S[+        UR                  5       5       35      eU R                  (       a  UR=                  XËU R                  5      nO:UR?                  SS5      R;                  5       R=                  X¼U R                  5      nU R_                  U5      nU Ra                  U5      nU Rc                  U5      nU(       a7  UR=                  XÀR                  UU5      nU(       a  URe                  SS%9nUU4$ US 4$ )*Nz#Only allow causal mask or attn_maskz*causal mask not supported by AO MHA modulec              3   óD   #   • U  H  oR                  S S5      v •  M     g7f)r   rR   N)Ú	transpose)Ú.0Úxs     r,   Ú	<genexpr>Ú3MultiheadAttention._forward_impl.<locals>.<genexpr>‡  s   é € Ð PÒ<O°q§¡¨Q°×!2Ð!2Ò<Oùs   ‚ zembed_dim mismatch: rS   r   rR   z(key and value size mismatch: key.size()=z, value.size()=z(embed_dim must be divisible by num_headsg      à¿z^Byte tensor for `attn_mask` in `nn.MultiheadAttention` is deprecated. Use bool tensor instead.é   )Ú
stacklevelz;Only float and bool types are supported for attn_mask, not r7   z,The size of the 2D attn_mask is not correct.z,The size of the 3D attn_mask is not correct.zattn_mask's dimension z is not supportedzeByte tensor for `key_padding_mask` in `nn.MultiheadAttention` is deprecated. Use bool tensor instead.zbias_k must not be Nonezbias_v must not be None)r   rR   z#bias cannot be added to static key.z%bias cannot be added to static value.z1self.bias_k must be None when self.bias_v is Nonez1self.bias_v must be None when self.bias_k is Noneéÿÿÿÿzstatic_k.size(0) must be r5   zstatic_k.size(2) must be zstatic_v.size(0) must be zstatic_v.size(2) must be z!key_padding_mask.size(0) must be z!key_padding_mask.size(1) must be )Údimz,attn_output_weights size mismatch: expected z-inf)ÚpÚtrainingz$attn_output size mismatch: expected )3r;   r   Úsizer	   r
   Úfloatr   r   r   r    Ú
mul_scalarr   r   Úuint8ÚwarningsÚwarnÚtoÚboolÚis_floating_pointr{   Ú	unsqueezeÚlistÚRuntimeErrorr>   r?   ÚcatÚrepeatÚFÚpadÚ
contiguousÚviewrs   r   ÚzerosÚis_quantizedÚquantize_per_tensorÚq_scaleÚq_zero_pointr&   r'   r(   ÚbmmÚmasked_fill_Úmasked_fillÚsoftmaxr   r}   r#   r   r$   Úmean)r)   re   rf   rg   rh   ri   rj   rk   rl   Ústatic_kÚstatic_vÚtgt_lenÚbszÚembed_dim_to_checkÚhead_dimÚscalingÚqÚkÚvr>   r?   Úsrc_lenÚk_zerosÚv_zerosÚattn_output_weightsÚexpected_sizeÚattn_outputÚexpected_output_sizes                               r,   rn   Ú MultiheadAttention._forward_implm  sp
  € ð  ˆØˆàÑ ¦YÜ Ð!FÓGÐGæÜ Ð!MÓNÐNà××Ù P¸UÈÑ<OÓ PÑˆE˜à+0¯:©:«<Ñ(ˆÐ(Ø�>‰>Ð/Ó/Ü Ø& t§~¡~Ð&6°dÐ;MÐ:NÐOóð ð �8‰8�A‹;˜%Ÿ*™* Q›-Ó'¨3¯8©8°A«;¸%¿*¹*ÀQ»-Ó+GÜ Ø:¸3¿8¹8»:¸,ÀoÐV[×V`ÑV`ÓVbÐUcÐdóð ð —>‘> T§^¡^Ñ3ˆØ—n‘nÑ$¨¯©Ó6Ü Ð!KÓLÐLÜ˜“/ TÑ)ˆà�M‰M˜%Ó ˆØ�M‰M˜#ÓˆØ�M‰M˜%Ó ˆà×"Ñ"×-Ñ-¨a°Ó9ˆàÒ Ø�‰¤%§+¡+Ó-Ü—’ð/à òð
 &ŸL™L¬¯©Ó4�	Ø×.Ñ.×0Ñ0°Y·_±_ÌÏ
É
Ó5RÜ$ØQÐR[×RaÑRaÐQbÐcóð ð �}‰}‹ !Ó#Ø%×/Ñ/°Ó2�	Ü˜	Ÿ™Ó(Ó)¨a°·±¸A³ÀÇÁÈÃÐ-LÓLÜ&Ð'UÓVÐVð Mà—‘“ AÓ%Ü˜	Ÿ™Ó(Ó)ØŸ.™.Ñ(Ø—J‘J˜q“MØ—H‘H˜Q“Kð.ó ô
 'Ð'UÓVÐVðô #Ø,¨Y¯]©]«_Ð,=Ð=NÐOóð ð Ñ'Ð,<×,BÑ,BÄeÇkÁkÓ,QÜ�MŠMð+àòð
  0×2Ñ2´5·:±:Ó>ÐØ�;‰;Ñ" t§{¡{Ñ'>ØÑ HÑ$4ð Ÿ™�Ø‘>Ü(Ð)BÓCÐCØŸ™�Ø‘>Ü(Ð)BÓCÐCä—I’I˜q &§-¡-°°3¸Ó":Ð;Ó<�Ü—I’I˜q &§-¡-°°3¸Ó":Ð;Ó<�ØÑ(Ü !§¢ i°Ó 8�IØ#Ñ/Ü'(§u¢uÐ-=¸vÓ'FÐ$øàÑ'Ü(Ð)NÓOÐOØÑ'Ü(Ð)PÓQÐQð (ð �{‰{Ñ&Ü$ØGóð ð �{‰{Ñ&Ü$ØGóð ð �L‰L‹N×Ñ ¨t¯~©~Ñ)=¸xÓH×RÑRÐSTÐVWÓXˆØ‰=Ø—‘“×#Ñ# B¨¯n©nÑ(<¸hÓG×QÑQÐRSÐUVÓWˆAØ‰=Ø—‘“×#Ñ# B¨¯n©nÑ(<¸hÓG×QÑQÐRSÐUVÓWˆAàÑØ�}‰}˜QÓ 3¯©Ñ#7Ó7Ü$Ø/°·n±nÑ0DÐ/EÀVÈHÏMÉMÐZ[ÓL\ÐK]Ð^óð ð �}‰}˜QÓ 8Ó+Ü$Ø/°¨z¸ÀÇÁÈaÓ@PÐ?QÐRóð ð ˆAàÑØ�}‰}˜QÓ 3¯©Ñ#7Ó7Ü$Ø/°·n±nÑ0DÐ/EÀVÈHÏMÉMÐZ[ÓL\ÐK]Ð^óð ð �}‰}˜QÓ 8Ó+Ü$Ø/°¨z¸ÀÇÁÈaÓ@PÐ?QÐRóð ð ˆAà—&‘&˜“)ˆàÑ'Ø×$Ñ$ QÓ'¨3Ó.Ü$Ø7¸°u¸FÐCS×CXÑCXÐYZÓC[ÐB\Ð]óð ð  ×$Ñ$ QÓ'¨7Ó2Ü$Ø7¸°yÀÐGW×G\ÑG\Ð]^ÓG_ÐF`Ðaóð ð ××ÐØ�q‰LˆGä—k’k 1§6¡6¨!£9¨a .°1·6±6³8¸A¸B°<Ñ"?Ó@ˆGà�~�~Ü×3Ò3ØØ—I‘I“KØ—N‘NÓ$Ø—G‘Gó	�ô —	’	˜1˜g˜,¨AÑ.ˆAä—k’k 1§6¡6¨!£9¨a .°1·6±6³8¸A¸B°<Ñ"?Ó@ˆGà�~�~Ü×3Ò3ØØ—I‘I“KØ—N‘NÓ$Ø—G‘Gó	�ô —	’	˜1˜g˜,¨AÑ.ˆAàÑ$ÜŸEšE )¨VÓ4�	ØÑ+Ü#$§5¢5Ð)9¸6Ó#BÐ ð �N‰N˜1ÓˆØ�N‰N˜1ÓˆØ�N‰N˜1ÓˆÜ#Ÿiši¨¨1¯;©;°q¸!Ó+<Ó=ÐØŸ~™~Ñ-¨w¸Ð@ˆÜÐ#×(Ñ(Ó*Ó+¨}Ó<Ü Ø>¸}¸oð NÜÐ/×4Ñ4Ó6Ó7Ð8ð:óð ð
 Ñ Ø�‰¤%§*¡*Ó,Ø#×0Ñ0°¼EÀ&»MÕJà# yÑ0Ð#àÑ'Ø"5×":Ñ":Ø—^‘^ W¨gó#Ðð #6×"AÑ"AØ ×*Ñ*¨1Ó-×7Ñ7¸Ó:Ü�f“ó#Ðð #6×":Ñ":Ø—n‘nÑ$ g¨wó#Ðô  ŸišiÐ(;ÀÑDÐÜŸišiØ 4§<¡<¸$¿-¹-ñ
Ðô —i’iÐ 3°QÓ7ˆØ #§n¡nÑ 4°gÐHÐÜ�× Ñ Ó"Ó#Ð';Ó;Ü Ø6Ð7KÐ6Lð MÜ˜K×,Ñ,Ó.Ó/Ð0ð2óð ð ××Ø%×*Ñ*¨3¸¿¹ÓH‰Kð ×%Ñ% a¨Ó+ß‘“ß‘�g D§N¡NÓ3ð ð ×,Ñ,¨[Ó9ˆà—m‘m KÓ0ˆØ"×<Ñ<Ð=PÓQÐæà"5×":Ñ":Ø—^‘^ W¨gó#Ðö $Ø&9×&>Ñ&>À1Ð&>Ð&EÐ#ØÐ 3Ð3Ð3à Ð$Ð$r.   )
r'   r&   r(   r   r   r   r   r    r#   r$   )	g        TFFNNFNN)NTNTF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r:   Ú__constants__Úintr   r…   r   r2   ÚclassmethodrO   r   ÚjitÚunusedrU   rc   r   Útuplero   rn   Ú__static_attributes__Ú__classcell__)r+   s   @r,   r   r      s#  ø† Ø×)Ñ)€Mð*ðV #�O€Mð ØØ!Ø#ØØØ!ØØñ3=àð3=ð ð3=ð ð	3=ð
 ð3=ð ð3=ð ð3=ð �D‰jð3=ð �D‰jð3=ð ð3=ð 
÷3=ð 3=òj/ð ñNó ðNð` ‡Y�Y×ÑñUó ðUðn ñ
ó ð
ð +/Ø!Ø#'Ø%)ØñB
àðB
ð ðB
ð ð	B
ð
 ! 4™-ðB
ð ðB
ð ˜D‘=ðB
ð #ðB
ð ðB
ð 
ˆv�v ‘}Ð$Ñ	%õB
ðR +/Ø!Ø#'Ø%)ØñB%àðB%ð ðB%ð ð	B%ð
 ! 4™-ðB%ð ðB%ð ˜D‘=ðB%ð #ðB%ð ðB%ð 
ˆv�v ‘}Ð$Ñ	%÷B%ó B%r.   )
r‚   r   Ú	torch.jitÚtorch.nn.functionalr   Ú
functionalrŒ   r   Ú__all__r   r1   r.   r,   Ú<module>r¼      s5   ðã ã Û ß Ð ß ð  Ð
 €ôb	%˜×.Ñ.õ b	%r.   