§
    ‚Štj¨! ã                   óî  — d Z ddlZddlZddlmZ ddlmZ ddlmZ 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 dd
lmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZ ddlm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/  e&j0        e1¦  «        Z2d„ Z3d„ Z4d„ Z5de	j6        de	j6        fd„Z7 e$d¬¦  «        e G d„ de"¦  «        ¦   «         ¦   «         Z8 e$d¬¦  «        e G d „ d!e"¦  «        ¦   «         ¦   «         Z9e$e G d"„ d#e"¦  «        ¦   «         ¦   «         Z: G d$„ d%ej;        ¦  «        Z< G d&„ d'ej;        ¦  «        Z= G d(„ d)ej;        ¦  «        Z> G d*„ d+ej;        ¦  «        Z? G d,„ d-ej;        ¦  «        Z@ G d.„ d/ej;        ¦  «        ZA G d0„ d1ej;        ¦  «        ZB G d2„ d3ej;        ¦  «        ZC G d4„ d5ej;        ¦  «        ZD G d6„ d7e¦  «        ZE G d8„ d9ej;        ¦  «        ZF G d:„ d;ej;        ¦  «        ZG G d<„ d=ej;        ¦  «        ZH G d>„ d?ej;        ¦  «        ZI	 dgdAej;        dBe	j6        dCe	j6        dDe	j6        dEe	j6        dz  dFeJdGeJfdH„ZK G dI„ dJej;        ¦  «        ZL G dK„ dLej;        ¦  «        ZM G dM„ dNej;        ¦  «        ZN G dO„ dPej;        ¦  «        ZO G dQ„ dRej;        ¦  «        ZP G dS„ dTe¦  «        ZQ G dU„ dVej;        ¦  «        ZR G dW„ dXej;        ¦  «        ZSe$ G dY„ dZe¦  «        ¦   «         ZT G d[„ d\eT¦  «        ZU e$d]¬¦  «         G d^„ d_eT¦  «        ¦   «         ZVe$ G d`„ daeT¦  «        ¦   «         ZWe$ G db„ dceT¦  «        ¦   «         ZXe$ G dd„ deeT¦  «        ¦   «         ZYg df¢ZZdS )hzPyTorch CLAP model.é    N)ÚCallable)Ú	dataclass)ÚAny)Únné   )Úinitialization)ÚACT2FN)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚ	torch_int)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚClapAudioConfigÚ
ClapConfigÚClapTextConfigc                 ó    — | j         \  }}}| dd…dd…ddd…f                              dd|d¦  «        }|                     |||z  |¦  «        }|S )ae  
    Interpolate data in time domain. This is used to compensate the resolution reduction in downsampling of a CNN.

    Args:
        hidden_states (`torch.FloatTensor` of shape (batch_size, time_length, classes_num)):
            Input hidden states
        ratio (`int`):
            The ratio of the length of the output to the length of the input.
    Nr   )ÚshapeÚrepeatÚreshape)Úhidden_statesÚratioÚ
batch_sizeÚtime_lengthÚclasses_numÚ	upsampleds         úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/clap/modeling_clap.pyÚinterpolater)   /   sg   € ð .;Ô-@Ñ*€Z�˜kØ˜a˜a˜a    D¨!¨!¨!˜mÔ,×3Ò3°A°q¸%ÀÑCÔC€IØ×!Ò! *¨k¸EÑ.AÀ;ÑOÔO€IØÐó    c                 óâ   — | j         \  }}}}|                      |||z  |||z  ||¦  «        } |                      dddddd¦  «                             ¦   «                              d|||¦  «        }|S )aR  
    Returns the resized hidden states. The output shape should be `(batch_size * num_windows, window_size, window_size,
    num_channels)`

    Args:
        hidden_states (`torch.FloatTensor` of shape `(batch_size, height, width, num_channels)`):
            Input hidden states
        window_size (`int`):
            Window size
    r   r   r   é   é   é   éÿÿÿÿ©r   ÚviewÚpermuteÚ
contiguous)r"   Úwindow_sizer$   ÚheightÚwidthÚnum_channelsÚwindowss          r(   Úwindow_partitionr9   @   sˆ   € ð /<Ô.AÑ+€J�˜˜|à!×&Ò&Ø�F˜kÑ)¨;¸ÀÑ8LÈkÐ[gñô €Mð ×#Ò# A q¨!¨Q°°1Ñ5Ô5×@Ò@ÑBÔB×GÒGÈÈKÐYdÐfrÑsÔs€GØ€Nr*   c                 óä   — | j         d         }|                      d||z  ||z  |||¦  «        } |                      dddddd¦  «                             ¦   «                              d|||¦  «        } | S )a‹  
    Merges windows to produce higher resolution features.
    Args:
        windows (`torch.FloatTensor` of shape `(num_windows * batch_size, window_size, window_size, num_channels)`):
            Input windows
        window_size (`int`):
            Window size
        height (`int`):
            Height of the resized audio
        width (`int`):
            Width of the resized audio
    r/   r   r   r   r,   r-   r.   r0   )r8   r4   r5   r6   r7   s        r(   Úwindow_reverser;   U   sx   € ð ”= Ô$€LØ�lŠl˜2˜v¨Ñ4°e¸{Ñ6JÈKÐYdÐfrÑsÔs€GØ�oŠo˜a  A q¨!¨QÑ/Ô/×:Ò:Ñ<Ô<×AÒAÀ"ÀfÈeÐUaÑbÔb€GØ€Nr*   ÚlogitsÚreturnc                 ó’   — t          j        t          | ¦  «        | j        ¬¦  «        }t          j                             | |¦  «        S )N©Údevice)ÚtorchÚarangeÚlenr@   r   Ú
functionalÚcross_entropy)r<   Úlabelss     r(   Úcontrastive_lossrG   j   s6   € ÝŒ\�#˜f™+œ+¨f¬mÐ<Ñ<Ô<€FÝŒ=×&Ò& v¨vÑ6Ô6Ð6r*   ze
    Base class for text model's outputs that also contains a pooling of the last hidden states.
    )Úcustom_introc                   ó¬   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
ej        df         dz  ed<   dZe
ej        df         dz  ed<   dS )ÚClapTextModelOutputzö
    text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
        The text embeddings obtained by applying the projection layer to the pooler_output.
    NÚtext_embedsÚlast_hidden_state.r"   Ú
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   rA   ÚFloatTensorÚ__annotations__rL   r"   ÚtuplerM   © r*   r(   rJ   rJ   o   s“   € € € € € € ðð ð
 -1€K�Ô" TÑ)Ð0Ð0Ñ0Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø:>€M�5˜Ô*¨CÐ/Ô0°4Ñ7Ð>Ð>Ñ>Ø7;€J��eÔ'¨Ð,Ô-°Ñ4Ð;Ð;Ñ;Ð;Ð;r*   rJ   zT
    ClapAudio model output to mimic the output of the original implementation.
    c                   ó¬   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
ej        df         dz  ed<   dZe
ej        df         dz  ed<   dS )ÚClapAudioModelOutputz¯
    audio_embeds (`torch.FloatTensor` of shape `(batch_size, hidden_size)`):
        The Audio embeddings obtained by applying the projection layer to the pooler_output.
    NÚaudio_embedsrL   .r"   rM   )rN   rO   rP   rQ   rX   rA   rR   rS   rL   r"   rT   rM   rU   r*   r(   rW   rW   ‚   s“   € € € € € € ðð ð
 .2€L�%Ô# dÑ*Ð1Ð1Ñ1Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø:>€M�5˜Ô*¨CÐ/Ô0°4Ñ7Ð>Ð>Ñ>Ø7;€J��eÔ'¨Ð,Ô-°Ñ4Ð;Ð;Ñ;Ð;Ð;r*   rW   c                   óÞ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	ej        dz  ed<   dZ
ej        dz  ed<   dZej        dz  ed<   dZeed<   dZeed	<   d
ee         fd„ZdS )Ú
ClapOutputa¦  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
        Contrastive loss for audio-text similarity.
    logits_per_audio (`torch.FloatTensor` of shape `(audio_batch_size, text_batch_size)`):
        The scaled dot product scores between `audio_embeds` and `text_embeds`. This represents the audio-text
        similarity scores.
    logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, audio_batch_size)`):
        The scaled dot product scores between `text_embeds` and `audio_embeds`. This represents the text-audio
        similarity scores.
    text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
        The text embeddings obtained by applying the projection layer to the pooled output of [`ClapTextModel`].
    audio_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
        The audio embeddings obtained by applying the projection layer to the pooled output of [`ClapAudioModel`].
    text_model_output (`BaseModelOutputWithPooling`):
        The output of the [`ClapTextModel`].
    audio_model_output (`BaseModelOutputWithPooling`):
        The output of the [`ClapAudioModel`].
    NÚlossÚlogits_per_audioÚlogits_per_textrK   rX   Útext_model_outputÚaudio_model_outputr=   c                 óX   — t          d„ |                      ¦   «         D ¦   «         ¦  «        S )Nc              3   ól   K  — | ]/}t          |t          ¦  «        r|                     ¦   «         n|V — Œ0d S ©N)Ú
isinstancer   Úto_tuple)Ú.0Úvs     r(   ú	<genexpr>z&ClapOutput.to_tuple.<locals>.<genexpr>´   s=   è è € Ð^Ð^È1¥Z°µ;Ñ%?Ô%?ÐF�Q—Z’Z‘\”\�\ÀQÐ^Ð^Ð^Ð^Ð^Ð^r*   )rT   Úvalues©Úselfs    r(   rd   zClapOutput.to_tuple³   s,   € ÝÐ^Ð^ÐPT×P[ÒP[ÑP]ÔP]Ð^Ñ^Ô^Ñ^Ô^Ð^r*   )rN   rO   rP   rQ   r[   rA   rR   rS   r\   r]   rK   rX   r^   r   r_   rT   r   rd   rU   r*   r(   rZ   rZ   ”   så   € € € € € € ðð ð& &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø15Ð�eÔ'¨$Ñ.Ð5Ð5Ñ5Ø04€O�UÔ&¨Ñ-Ð4Ð4Ñ4Ø,0€K�Ô" TÑ)Ð0Ð0Ñ0Ø-1€L�%Ô# dÑ*Ð1Ð1Ñ1Ø48ÐÐ1Ð8Ð8Ñ8Ø59ÐÐ2Ð9Ð9Ñ9ð_˜% œ*ð _ð _ð _ð _ð _ð _r*   rZ   c                   ó.   ‡ — e Zd ZdZdefˆ fd„Zd„ Zˆ xZS )ÚClapAudioAFFBlockz�
    ATTENTIONAL FEATURE FUSION Block from CLAP, since in CLAP we are always in 2D mode, it is not needed to implement
    the 1D version.
    Úconfigc                 óæ  •— t          ¦   «                              ¦   «          |j        }|j        }t	          ||z  ¦  «        }t          j        t          j        ||ddd¬¦  «        t          j        |¦  «        t          j	        d¬¦  «        t          j        ||ddd¬¦  «        t          j        |¦  «        ¦  «        | _
        t          j        t          j        d¦  «        t          j        ||ddd¬¦  «        t          j        |¦  «        t          j	        d¬¦  «        t          j        ||ddd¬¦  «        t          j        |¦  «        ¦  «        | _        t          j        ¦   «         | _        d S )Nr   r   ©Úkernel_sizeÚstrideÚpaddingT)Úinplace)ÚsuperÚ__init__Úpatch_embeds_hidden_sizeÚaff_block_rÚintr   Ú
SequentialÚConv2dÚBatchNorm2dÚReLUÚ	local_attÚAdaptiveAvgPool2dÚ
global_attÚSigmoidÚsigmoid)rj   rm   ÚchannelsÚdownsize_ratioÚinter_channelsÚ	__class__s        €r(   ru   zClapAudioAFFBlock.__init__¾   s<  ø€ Ý‰Œ×ÒÑÔÐØÔ2ˆØÔ+ˆÝ˜X¨Ñ7Ñ8Ô8ˆåœÝŒI�h ¸AÀaÐQRÐSÑSÔSÝŒN˜>Ñ*Ô*ÝŒG˜DÐ!Ñ!Ô!ÝŒI�n h¸AÀaÐQRÐSÑSÔSÝŒN˜8Ñ$Ô$ñ
ô 
ˆŒõ œ-ÝÔ  Ñ#Ô#ÝŒI�h ¸AÀaÐQRÐSÑSÔSÝŒN˜>Ñ*Ô*ÝŒG˜DÐ!Ñ!Ô!ÝŒI�n h¸AÀaÐQRÐSÑSÔSÝŒN˜8Ñ$Ô$ñ
ô 
ˆŒõ ”z‘|”|ˆŒˆˆr*   c                 ó¸   — ||z   }|                       |¦  «        |                      |¦  «        z   }|                      |¦  «        }d|z  |z  d|z  d|z
  z  z   }|S )Nr,   r   )r}   r   r�   )rj   r"   ÚresidualÚattention_inputÚfused_layer_outputÚoutputs         r(   ÚforwardzClapAudioAFFBlock.forwardÖ   sk   € Ø'¨(Ñ2ˆà!Ÿ^š^¨OÑ<Ô<¸t¿ºÈÑ?_Ô?_Ñ_ÐØ!Ÿ\š\Ð*<Ñ=Ô=Ðà�]Ñ"Ð%7Ñ7¸!¸h¹,È!ÐN`ÑJ`Ñ:aÑaˆØˆr*   ©rN   rO   rP   rQ   r   ru   r‹   Ú__classcell__©r…   s   @r(   rl   rl   ¸   s]   ø€ € € € € ðð ð
$˜ð $ð $ð $ð $ð $ð $ð0ð ð ð ð ð ð r*   rl   c                   ó0   ‡ — e Zd ZdZdefˆ fd„Zdd„Zˆ xZS )ÚClapAudioPatchEmbedzŠ
    This module converts the hidden states reshaped as an image to patch embeddings ready to be passed to the
    Transformer block.
    rm   c                 óL  •— t          ¦   «                              ¦   «          t          |j        t          ¦  «        r|j        |j        fn|j        }t          |j        t          ¦  «        r|j        |j        fn|j        }t          |j        t          ¦  «        r|j        |j        fn|j        }|| _        || _        |d         |d         z  |d         |d         z  f| _        | j        d         | j        d         z  | _	        |j
        | _        |j        | _        |d         |d         z
  dz  |d         |d         z
  dz  f}| j        r|j        dk    rdnd}t          j        |j        |z  |j        |||¬¦  «        | _        |j        rt          j        |j        ¦  «        nt          j        ¦   «         | _        | j        r`t/          |¦  «        | _        t          j        |j        |j        |d         |d         dz  f|d         |d         dz  f|¬¦  «        | _        d S d S )Nr   r   r,   Úchannel_mapr-   ro   r   )rt   ru   rc   Ú	spec_sizerx   Ú
patch_sizeÚpatch_strideÚimg_sizeÚ	grid_sizeÚnum_patchesÚflatten_patch_embedsÚflattenÚenable_fusionÚfusion_typer   rz   Úpatch_embed_input_channelsrv   ÚprojÚenable_patch_layer_normÚ	LayerNormÚIdentityÚnormrl   Úfusion_modelÚ
mel_conv2d)rj   rm   r–   r”   r•   rr   Úscale_factorr…   s          €r(   ru   zClapAudioPatchEmbed.__init__æ   s8  ø€ Ý‰Œ×ÒÑÔÐÝ;EÀfÔFVÕX[Ñ;\Ô;\Ðr�FÔ$ fÔ&6Ð7Ð7ÐbhÔbrˆå6@ÀÔARÕTWÑ6XÔ6XÐoˆVÔ Ô 1Ð2Ð2Ð^dÔ^oð 	õ ;EÀVÔEXÕZ]Ñ:^Ô:^ÐwˆVÔ  &Ô"5Ð6Ð6ÐdjÔdwð 	ð !ˆŒØ(ˆÔà" 1œ+¨°a¬Ñ8¸(À1¼+ÈÐVWÌÑ:XÐYˆŒØœ>¨!Ô,¨t¬~¸aÔ/@Ñ@ˆÔàÔ2ˆŒØ#Ô1ˆÔà˜q”M L°¤OÑ3¸Ñ9¸JÀq¼MÈLÐYZÌOÑ<[Ð`aÑ;aÐbˆà Ô.Ð]°6Ô3EÈÒ3VÐ3V�q�qÐ\]ˆå”IØÔ-°Ñ<ØÔ+Ø"ØØð
ñ 
ô 
ˆŒ	ð FLÔEcÐv•B”L Ô!@ÑAÔAÐAÕikÔitÑivÔivˆŒ	ØÔð 	Ý 1°&Ñ 9Ô 9ˆDÔÝ œiØÔ1ØÔ/Ø'¨œ]¨J°q¬M¸AÑ,=Ð>Ø$ Qœ¨°a¬¸1Ñ)<Ð=Øðñ ô ˆDŒOˆOˆOð	ð 	r*   Nc                 ó2  — | j         �rÔ|d d …dd…d d …d d …f         }|j        \  }}}}|| j        d         k    s|| j        d         k    r2t          d|› d|› d| j        d         › d| j        d         › d�	¦  «        ‚|                      |¦  «        }|                     d¦  «        }t          |¦  «        dk    �r||dd …d d …d d …f                              ¦   «         }	|	j        \  }}}}|	                     ||z  d||¦  «        }	|  	                    |	¦  «        }	|	j        \  }
}}}|	                     |||||¦  «        }	|	 
                    d¦  «                             ¦   «                              d	¦  «        }	|	                     d¦  «        }t          j        j                             |	d||z
  fd
d¦  «        }	|                      ||         |	¦  «        ||<   |}nu|j        \  }
}
}}|| j        d         k    s|| j        d         k    r2t          d|› d|› d| j        d         › d| j        d         › d�	¦  «        ‚|                      |¦  «        }| j        r)|                     d¦  «                             dd¦  «        }|                      |¦  «        }|S )Nr   r   zInput audio size (Ú*z) doesn't match model (z).r/   )r   r,   r   r   r-   r   Úconstantr,   )r›   r   r–   Ú
ValueErrorrž   ÚsizerC   r3   r1   r¤   r2   rš   rA   r   rD   Úpadr£   Ú	transposer¢   )rj   r"   Úis_longer_idxÚglobal_hidden_statesr$   r7   r5   r6   Úoutput_widthÚlocal_hidden_statesÚ_ÚfeaturesÚlocal_widths                r(   r‹   zClapAudioPatchEmbed.forward  s
  € ØÔñ )	5à#0°°°°A°a°C¸¸¸¸A¸A¸A°Ô#>Ð ð 7KÔ6PÑ3ˆJ˜ f¨eà˜œ qÔ)Ò)Ð)¨U°d´mÀAÔ6FÒ-FÐ-FÝ Øw¨ÐwÐw°%ÐwÐwÐPTÔP]Ð^_ÔP`ÐwÐwÐcgÔcpÐqrÔcsÐwÐwÐwñô ð ð $(§9¢9Ð-AÑ#BÔ#BÐ Ø/×4Ò4°RÑ8Ô8ˆLÝ�=Ñ!Ô! AÒ%Ñ%à&3°MÀ1À2À2ÀqÀqÀqÈ!È!È!Ð4KÔ&L×&WÒ&WÑ&YÔ&YÐ#Ø:MÔ:SÑ7�
˜L¨&°%Ø&9×&>Ò&>¸zÈLÑ?XÐZ[Ð]cÐejÑ&kÔ&kÐ#à&*§o¢oÐ6IÑ&JÔ&JÐ#à-@Ô-FÑ*��8˜V UØ&9×&>Ò&>¸zÈ<ÐYaÐciÐkpÑ&qÔ&qÐ#Ø&9×&AÒ&AÀ/Ñ&RÔ&R×&]Ò&]Ñ&_Ô&_×&gÒ&gÐhiÑ&jÔ&jÐ#à1×6Ò6°rÑ:Ô:�Ý&+¤hÔ&9×&=Ò&=Ø'¨!¨\¸KÑ-GÐ)HÈ*ÐVWñ'ô 'Ð#ð 7;×6GÒ6GØ(¨Ô7Ð9Lñ7ô 7Ð$ ]Ñ3ð 1ˆMˆMà"/Ô"5ÑˆAˆq�&˜%Ø˜œ qÔ)Ò)Ð)¨U°d´mÀAÔ6FÒ-FÐ-FÝ Øw¨ÐwÐw°%ÐwÐwÐPTÔP]Ð^_ÔP`ÐwÐwÐcgÔcpÐqrÔcsÐwÐwÐwñô ð ð !ŸIšI mÑ4Ô4ˆMàŒ<ð 	EØ)×1Ò1°!Ñ4Ô4×>Ò>¸qÀ!ÑDÔDˆMØŸ	š	 -Ñ0Ô0ˆØÐr*   rb   rŒ   rŽ   s   @r(   r�   r�   à   sc   ø€ € € € € ðð ð
(˜ð (ð (ð (ð (ð (ð (ðT/ð /ð /ð /ð /ð /ð /ð /r*   r�   c            
       óx   ‡ — e Zd Zˆ fd„Z	 	 d
dej        dej        dz  dedz  deej                 fd„Z	d	„ Z
ˆ xZS )ÚClapAudioSelfAttentionc                 ón  •— t          ¦   «                              ¦   «          ||z  dk    rt          d|› d|› d�¦  «        ‚|| _        t	          ||z  ¦  «        | _        | j        | j        z  | _        t          |t          j	        j
        ¦  «        r|n||f| _        t          j        t          j        d| j        d         z  dz
  d| j        d         z  dz
  z  |¦  «        ¦  «        | _        |                      d|                      ¦   «         ¦  «         t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        d S )	Nr   úThe hidden size (ú6) is not a multiple of the number of attention heads (ú)r,   r   Úrelative_position_index©Úbias)rt   ru   r©   Únum_attention_headsrx   Úattention_head_sizeÚall_head_sizerc   ÚcollectionsÚabcÚIterabler4   r   Ú	ParameterrA   ÚzerosÚrelative_position_bias_tableÚregister_bufferÚcreate_relative_position_indexÚLinearÚqkv_biasÚqueryÚkeyÚvalueÚDropoutÚattention_probs_dropout_probÚdropout©rj   rm   ÚdimÚ	num_headsr4   r…   s        €r(   ru   zClapAudioSelfAttention.__init__D  s™  ø€ Ý‰Œ×ÒÑÔÐØ�‰?˜aÒÐÝØk CÐkÐkÐ_hÐkÐkÐkñô ð ð $-ˆÔ Ý#& s¨Y¡Ñ#7Ô#7ˆÔ Ø!Ô5¸Ô8PÑPˆÔå% kµ;´?Ô3KÑLÔLÐlˆKˆKÐS^Ð`kÐRlð 	Ôõ -/¬LÝŒK˜˜TÔ-¨aÔ0Ñ0°1Ñ4¸¸TÔ=MÈaÔ=PÑ9PÐSTÑ9TÑUÐW`ÑaÔañ-
ô -
ˆÔ)ð 	×ÒÐ6¸×8[Ò8[Ñ8]Ô8]Ñ^Ô^Ð^å”Y˜tÔ1°4Ô3EÈFÌOÐ\Ñ\Ô\ˆŒ
Ý”9˜TÔ/°Ô1CÈ&Ì/ÐZÑZÔZˆŒÝ”Y˜tÔ1°4Ô3EÈFÌOÐ\Ñ\Ô\ˆŒ
å”z &Ô"EÑFÔFˆŒˆˆr*   NFr"   Úattention_maskÚoutput_attentionsr=   c                 óâ  — |j         \  }}}||d| j        f}|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
t          j        ||	                     dd¦  «        ¦  «        }|t          j
        | j        ¦  «        z  }| j        | j                             d¦  «                 }|                     | j        d         | j        d         z  | j        d         | j        d         z  d¦  «        }|                     ddd¦  «                             ¦   «         }||                     d¦  «        z   }|�v|j         d         }|                     ||z  || j        ||¦  «        }||                     d¦  «                             d¦  «        z   }|                     d| j        ||¦  «        }t$          j                             |d¬¦  «        }|                      |¦  «        }t          j        ||
¦  «        }|                     dddd¦  «                             ¦   «         }|                     ¦   «         d d…         | j        fz   }|                     |¦  «        }|r||fn|f}|S )Nr/   r   r,   éþÿÿÿr   ©rÑ   r   )r   r¾   rÊ   r1   r¬   rË   rÌ   rA   ÚmatmulÚmathÚsqrtrÅ   rº   r4   r2   r3   Ú	unsqueezer½   r   rD   ÚsoftmaxrÏ   rª   r¿   )rj   r"   rÓ   rÔ   r$   rÑ   r7   Úhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresÚrelative_position_biasÚ
mask_shapeÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss                     r(   r‹   zClapAudioSelfAttention.forward^  sÛ  € ð )6Ô(;Ñ%ˆ
�C˜Ø" C¨¨TÔ-EÐFˆà—j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆØ—H’H˜]Ñ+Ô+×0Ò0°Ñ>Ô>×HÒHÈÈAÑNÔNˆ	Ø—j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆõ !œ<¨°Y×5HÒ5HÈÈRÑ5PÔ5PÑQÔQÐà+­d¬i¸Ô8PÑ.QÔ.QÑQÐà!%Ô!BÀ4ÔC_×CdÒCdÐegÑChÔChÔ!iÐØ!7×!<Ò!<ØÔ˜QÔ $Ô"2°1Ô"5Ñ5°tÔ7GÈÔ7JÈTÔM]Ð^_ÔM`Ñ7`Ðbdñ"
ô "
Ðð "8×!?Ò!?ÀÀ1ÀaÑ!HÔ!H×!SÒ!SÑ!UÔ!UÐØ+Ð.D×.NÒ.NÈqÑ.QÔ.QÑQÐàÐ%à'Ô-¨aÔ0ˆJØ/×4Ò4Ø˜jÑ(¨*°dÔ6NÐPSÐUXñ ô  Ðð  0°.×2JÒ2JÈ1Ñ2MÔ2M×2WÒ2WÐXYÑ2ZÔ2ZÑZÐØ/×4Ò4°R¸Ô9QÐSVÐX[Ñ\Ô\Ðõ œ-×/Ò/Ð0@ÀbÐ/ÑIÔIˆð Ÿ,š, Ñ7Ô7ˆåœ _°kÑBÔBˆØ%×-Ò-¨a°°A°qÑ9Ô9×DÒDÑFÔFˆØ"/×"4Ò"4Ñ"6Ô"6°s¸°sÔ";¸tÔ?QÐ>SÑ"SÐØ%×*Ò*Ð+BÑCÔCˆà6GÐ]�= /Ð2Ð2ÈmÐM]ˆàˆr*   c                 óž  — t          j        | j        d         ¦  «        }t          j        | j        d         ¦  «        }t          j        t          j        ||gd¬¦  «        ¦  «        }t          j        |d¦  «        }|d d …d d …d f         |d d …d d d …f         z
  }|                     ddd¦  «                             ¦   «         }|d d …d d …dfxx         | j        d         dz
  z  cc<   |d d …d d …dfxx         | j        d         dz
  z  cc<   |d d …d d …dfxx         d| j        d         z  dz
  z  cc<   |                     d¦  «        }|S )Nr   r   Úij)Úindexingr,   r/   )	rA   rB   r4   ÚstackÚmeshgridrš   r2   r3   Úsum)rj   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordsrº   s          r(   rÇ   z5ClapAudioSelfAttention.create_relative_position_index‘  s{  € å”< Ô 0°Ô 3Ñ4Ô4ˆÝ”< Ô 0°Ô 3Ñ4Ô4ˆÝ”�Uœ^¨X°xÐ,@È4ÐPÑPÔPÑQÔQˆÝœ v¨qÑ1Ô1ˆØ(¨¨¨¨A¨A¨A¨t¨Ô4°~ÀaÀaÀaÈÈqÈqÈqÀjÔ7QÑQˆØ)×1Ò1°!°Q¸Ñ:Ô:×EÒEÑGÔGˆØ˜˜˜˜1˜1˜1˜a˜Ð Ð Ô  DÔ$4°QÔ$7¸!Ñ$;Ñ;Ð Ð Ñ Ø˜˜˜˜1˜1˜1˜a˜Ð Ð Ô  DÔ$4°QÔ$7¸!Ñ$;Ñ;Ð Ð Ñ Ø˜˜˜˜1˜1˜1˜a˜Ð Ð Ô  A¨Ô(8¸Ô(;Ñ$;¸aÑ$?Ñ?Ð Ð Ñ Ø"1×"5Ò"5°bÑ"9Ô"9ÐØ&Ð&r*   ©NF)rN   rO   rP   ru   rA   ÚTensorrR   ÚboolrT   r‹   rÇ   r�   rŽ   s   @r(   rµ   rµ   C  s©   ø€ € € € € ðGð Gð Gð Gð Gð: 48Ø).ð	1ð 1à”|ð1ð Ô)¨DÑ0ð1ð   $™;ð	1ð
 
ˆuŒ|Ô	ð1ð 1ð 1ð 1ðf'ð 'ð 'ð 'ð 'ð 'ð 'r*   rµ   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚClapAudioSelfOutputc                 ó¸   •— t          ¦   «                              ¦   «          t          j        ||¦  «        | _        t          j        |j        ¦  «        | _        d S rb   )rt   ru   r   rÈ   ÚdenserÍ   rÎ   rÏ   ©rj   rm   rÑ   r…   s      €r(   ru   zClapAudioSelfOutput.__init__¢  sD   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜s CÑ(Ô(ˆŒ
Ý”z &Ô"EÑFÔFˆŒˆˆr*   r"   Úinput_tensorr=   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rb   ©rù   rÏ   ©rj   r"   rû   s      r(   r‹   zClapAudioSelfOutput.forward§  s*   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆàÐr*   ©rN   rO   rP   ru   rA   rô   r‹   r�   rŽ   s   @r(   r÷   r÷   ¡  sn   ø€ € € € € ðGð Gð Gð Gð Gð
 U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r*   r÷   c            
       ór   ‡ — e Zd Zˆ fd„Z	 	 d	dej        dej        dz  dedz  deej                 fd„Z	ˆ xZ
S )
ÚClapAudioAttentionc                 ó    •— t          ¦   «                              ¦   «          t          ||||¦  «        | _        t	          ||¦  «        | _        d S rb   )rt   ru   rµ   rj   r÷   rŠ   rÐ   s        €r(   ru   zClapAudioAttention.__init__°  sC   ø€ Ý‰Œ×ÒÑÔÐÝ*¨6°3¸	À;ÑOÔOˆŒ	Ý)¨&°#Ñ6Ô6ˆŒˆˆr*   NFr"   rÓ   rÔ   r=   c                 óˆ   — |                       |||¦  «        }|                      |d         |¦  «        }|f|dd …         z   }|S )Nr   r   ©rj   rŠ   )rj   r"   rÓ   rÔ   Úself_outputsÚattention_outputrç   s          r(   r‹   zClapAudioAttention.forwardµ  sM   € ð —y’y °Ð@QÑRÔRˆØŸ;š; |°A¤¸ÑFÔFÐØ#Ð%¨°Q°R°RÔ(8Ñ8ˆØˆr*   ró   )rN   rO   rP   ru   rA   rô   rR   rõ   rT   r‹   r�   rŽ   s   @r(   r  r  ¯  s”   ø€ € € € € ð7ð 7ð 7ð 7ð 7ð 48Ø).ð		ð 	à”|ð	ð Ô)¨DÑ0ð	ð   $™;ð		ð
 
ˆuŒ|Ô	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r*   r  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚClapAudioIntermediatec                 ó$  •— t          ¦   «                              ¦   «          t          j        |t	          |j        |z  ¦  «        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S rb   )rt   ru   r   rÈ   rx   Ú	mlp_ratiorù   rc   Ú
hidden_actÚstrr	   Úintermediate_act_fnrú   s      €r(   ru   zClapAudioIntermediate.__init__Ã  sx   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜s¥C¨Ô(8¸3Ñ(>Ñ$?Ô$?Ñ@Ô@ˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r*   r"   r=   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rb   ©rù   r  ©rj   r"   s     r(   r‹   zClapAudioIntermediate.forwardË  ó,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr*   rÿ   rŽ   s   @r(   r  r  Â  ó^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r*   r  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚClapAudioOutputc                 óâ   •— t          ¦   «                              ¦   «          t          j        t	          |j        |z  ¦  «        |¦  «        | _        t          j        |j        ¦  «        | _	        d S rb   )
rt   ru   r   rÈ   rx   r
  rù   rÍ   Úhidden_dropout_probrÏ   rú   s      €r(   ru   zClapAudioOutput.__init__Ó  sT   ø€ Ý‰Œ×ÒÑÔÐÝ”Y�s 6Ô#3°cÑ#9Ñ:Ô:¸CÑ@Ô@ˆŒ
Ý”z &Ô"<Ñ=Ô=ˆŒˆˆr*   r"   r=   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rb   rý   r  s     r(   r‹   zClapAudioOutput.forwardØ  s*   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØÐr*   rÿ   rŽ   s   @r(   r  r  Ò  s^   ø€ € € € € ð>ð >ð >ð >ð >ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r*   r  c                   ó^   ‡ — e Zd ZdZd
deddfˆ fd„Zdej        dej        fd„Zde	fd	„Z
ˆ xZS )ÚClapDropPathzÏStochastic 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_probr=   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S rb   )rt   ru   r  )rj   r  r…   s     €r(   ru   zClapDropPath.__init__æ  s$   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒˆˆr*   r"   c                 ó  — | j         dk    s| j        s|S d| j         z
  }|j        d         fd|j        dz
  z  z   }t	          j        ||j        |j        ¬¦  «        }t	          j        ||z   ¦  «        }| 	                    |¦  «        |z  S )Nr  r   r   )r   ©Údtyper@   )
r  Útrainingr   ÚndimrA   Úrandr  r@   ÚfloorÚdiv)rj   r"   Ú	keep_probr   Úrandom_tensors        r(   r‹   zClapDropPath.forwardê  s“   € ØŒ>˜SÒ Ð ¨¬Ð Ø Ð Ø˜œÑ&ˆ	ØÔ$ QÔ'Ð)¨D°MÔ4FÈÑ4JÑ,KÑKˆÝœ
 5°Ô0CÈMÔL`ÐaÑaÔaˆÝœ M°IÑ$=Ñ>Ô>ˆØ× Ò  Ñ+Ô+¨mÑ;Ð;r*   c                 ó   — d| j         › �S )Nzp=)r  ri   s    r(   Ú
extra_reprzClapDropPath.extra_repró  s   € Ø$�D”NÐ$Ð$Ð$r*   ©r  )rN   rO   rP   rQ   Úfloatru   rA   rô   r‹   r  r(  r�   rŽ   s   @r(   r  r  ß  s›   ø€ € € € € ðð ð#ð # %ð #°$ð #ð #ð #ð #ð #ð #ð< U¤\ð <°e´lð <ð <ð <ð <ð%˜Cð %ð %ð %ð %ð %ð %ð %ð %r*   r  c                   óž   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Z	 	 ddej        d	e	e
e
f         d
edz  dedz  de	ej        ej        f         f
d„Zˆ xZS )ÚClapAudioLayerr  r   c                 óü  •— t          ¦   «                              ¦   «          |j        | _        || _        |j        | _        || _        t          j        ||j        ¬¦  «        | _	        t          |||| j        ¬¦  «        | _        |dk    rt          |¦  «        nt          j        ¦   «         | _        t          j        ||j        ¬¦  «        | _        t!          ||¦  «        | _        t%          ||¦  «        | _        d S )N©Úeps)r4   r  )rt   ru   Úchunk_size_feed_forwardÚ
shift_sizer4   Úinput_resolutionr   r    Úlayer_norm_epsÚlayernorm_beforer  Ú	attentionr  r¡   Ú	drop_pathÚlayernorm_afterr  Úintermediater  rŠ   )rj   rm   rÑ   r2  rÒ   Údrop_path_rater1  r…   s          €r(   ru   zClapAudioLayer.__init__ù  sÝ   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$Ø$ˆŒØ!Ô-ˆÔØ 0ˆÔÝ "¤¨S°fÔ6KÐ LÑ LÔ LˆÔÝ+¨F°C¸ÐPTÔP`ÐaÑaÔaˆŒØ9GÈ#Ò9MÐ9M� nÑ5Ô5Ð5ÕSUÔS^ÑS`ÔS`ˆŒÝ!œ|¨C°VÔ5JÐKÑKÔKˆÔÝ1°&¸#Ñ>Ô>ˆÔÝ% f¨cÑ2Ô2ˆŒˆˆr*   c                 ó  — t          |¦  «        | j        k    rnt          d¦  «        | _        t          j                             ¦   «         r&t	          j         t	          j        |¦  «        ¦  «        nt          |¦  «        | _        d S d S ©Nr   )Úminr4   r   r1  rA   ÚjitÚ
is_tracingÚtensor)rj   r2  s     r(   Úset_shift_and_window_sizez(ClapAudioLayer.set_shift_and_window_size  sv   € ÝÐÑ Ô  DÔ$4Ò4Ð4å'¨™lœlˆDŒOå=B¼Y×=QÒ=QÑ=SÔ=SÐn•”	�%œ,Ð'7Ñ8Ô8Ñ9Ô9Ð9ÕY\Ð]mÑYnÔYnð ÔÐÐð 5Ð4r*   c                 ó  — | j         dk    rdS t          j        ||¬¦  «        }t          j        ||¬¦  «        }||| j        z
  k                         ¦   «         ||| j         z
  k                         ¦   «         z   }||| j        z
  k                         ¦   «         ||| j         z
  k                         ¦   «         z   }|ddd…ddf         dz  |dddd…df         z                        |¦  «        }	t          |	| j        ¦  «        }
|
                     d| j        | j        z  ¦  «        }
|
                     d¦  «        |
                     d¦  «        z
  }| 	                    |dk    d¦  «         	                    |dk    d	¦  «        }|S )
uµ  Build the cyclic-shift attention mask for shifted-window MSA; returns None when shift_size is 0.

        Each (h, w) position belongs to one of 9 cyclic-shift regions (3 along each axis), encoded
        as ``h_region * 3 + w_region``. Regions per axis:
        - 0: indices ``[0, axis - window_size)``
        - 1: indices ``[axis - window_size, axis - shift_size)``
        - 2: indices ``[axis - shift_size, axis)``
        Implementation note: a single arithmetic pass on `torch.arange` (two comparisons +
        broadcast add) replaces the original 9-iteration nested-Python-loop slice-assignment â€”
        fully vectorised, no per-cell host-side scatter, no GPUâ†”host sync.
        r   Nr?   r   r/   r   r,   g      YÀr  )
r1  rA   rB   r4   ÚlongÚtor9   r1   rÛ   Úmasked_fill)rj   r5   r6   r  r@   Úh_idxÚw_idxÚh_regionÚw_regionÚimg_maskÚmask_windowsÚ	attn_masks               r(   Úget_attn_maskzClapAudioLayer.get_attn_mask  sˆ  € ð Œ?˜aÒÐØ�4Ý”˜V¨FÐ3Ñ3Ô3ˆÝ”˜U¨6Ð2Ñ2Ô2ˆØ˜V dÔ&6Ñ6Ò6×<Ò<Ñ>Ô>À%È6ÐTXÔTcÑKcÒBc×AiÒAiÑAkÔAkÑkˆØ˜U TÔ%5Ñ5Ò5×;Ò;Ñ=Ô=ÀÈ%ÐRVÔRaÑJaÒAa×@gÒ@gÑ@iÔ@iÑiˆØ˜T 1 1 1 d¨DÐ0Ô1°AÑ5¸ÀÀtÈQÈQÈQÐPTÐATÔ8UÑU×YÒYÐZ_Ñ`Ô`ˆÝ'¨°$Ô2BÑCÔCˆØ#×(Ò(¨¨TÔ-=ÀÔ@PÑ-PÑQÔQˆØ ×*Ò*¨1Ñ-Ô-°×0FÒ0FÀqÑ0IÔ0IÑIˆ	Ø×)Ò)¨)°qª.¸&ÑAÔA×MÒMÈiÐ[\ÊnÐ^aÑbÔbˆ	ØÐr*   c                 óÂ   — | j         || j         z  z
  | j         z  }| j         || j         z  z
  | j         z  }ddd|d|f}t          j                             ||¦  «        }||fS r;  )r4   r   rD   r«   )rj   r"   r5   r6   Ú	pad_rightÚ
pad_bottomÚ
pad_valuess          r(   Ú	maybe_padzClapAudioLayer.maybe_pad'  sp   € ØÔ%¨°Ô0@Ñ(@Ñ@ÀDÔDTÑTˆ	ØÔ&¨°$Ô2BÑ)BÑBÀdÔFVÑVˆ
Ø˜˜A˜y¨!¨ZÐ8ˆ
Ýœ×)Ò)¨-¸ÑDÔDˆØ˜jÐ(Ð(r*   Fr"   Úinput_dimensionsrÔ   NÚalways_partitionr=   c                 óÔ  — |s|                       |¦  «         n	 |\  }}|                     ¦   «         \  }}}	|}
|                      |¦  «        }|                     ||||	¦  «        }|                      |||¦  «        \  }}|j        \  }}}}| j        dk    r&t          j        || j         | j         fd¬¦  «        }n|}t          || j
        ¦  «        }|                     d| j
        | j
        z  |	¦  «        }|                      |||j        |j        ¬¦  «        }|                      |||¬¦  «        }|d         }|                     d| j
        | j
        |	¦  «        }t          || j
        ||¦  «        }| j        dk    r$t          j        || j        | j        fd¬¦  «        }n|}|d         dk    p|d         dk    }|r&|d d …d |…d |…d d …f                              ¦   «         }|                     |||z  |	¦  «        }|
|                      |¦  «        z   }|                      |¦  «        }|                      |¦  «        }||                      |¦  «        z   }|r
||d	         fn|f}|S )
Nr   )r   r,   )ÚshiftsÚdimsr/   r  )rÔ   r   r.   r   )r@  rª   r4  r1   rQ  r   r1  rA   Úrollr9   r4   rL  r  r@   r5  r;   r3   r6  r7  r8  rŠ   )rj   r"   rR  rÔ   rS  r5   r6   r$   r±   r‚   ÚshortcutrP  Ú
height_padÚ	width_padÚshifted_hidden_statesÚhidden_states_windowsrK  Úattention_outputsr  Úattention_windowsÚshifted_windowsÚ
was_paddedÚlayer_outputÚlayer_outputss                           r(   r‹   zClapAudioLayer.forward.  sÍ  € ð  ð 	Ø×*Ò*Ð+;Ñ<Ô<Ð<Ð<àØ(‰ˆ�Ø"/×"4Ò"4Ñ"6Ô"6Ñˆ
�A�xØ ˆà×-Ò-¨mÑ<Ô<ˆà%×*Ò*¨:°v¸uÀhÑOÔOˆð %)§N¢N°=À&È%Ñ$PÔ$PÑ!ˆ�zà&3Ô&9Ñ#ˆˆ:�y !àŒ?˜QÒÐÝ$)¤J¨}ÀtÄÐFVÐY]ÔYhÐXhÐEiÐpvÐ$wÑ$wÔ$wÐ!Ð!à$1Ð!õ !1Ð1FÈÔHXÑ YÔ YÐØ 5× :Ò :¸2¸tÔ?OÐRVÔRbÑ?bÐdlÑ mÔ mÐØ×&Ò&Ø˜	¨Ô)<ÐEZÔEað 'ñ 
ô 
ˆ	ð !ŸNšNÐ+@À)Ð_p˜NÑqÔqÐà,¨QÔ/Ðà,×1Ò1°"°dÔ6FÈÔHXÐZbÑcÔcÐÝ(Ð):¸DÔ<LÈjÐZcÑdÔdˆð Œ?˜QÒÐÝ %¤
¨?ÀDÄOÐUYÔUdÐCeÐlrÐ sÑ sÔ sÐÐà /Ðà ”] QÒ&Ð;¨*°Q¬-¸!Ò*;ˆ
Øð 	VØ 1°!°!°!°W°f°W¸f¸u¸fÀaÀaÀaÐ2GÔ H× SÒ SÑ UÔ UÐà-×2Ò2°:¸vÈ¹~ÈxÑXÔXÐà  4§>¢>Ð2CÑ#DÔ#DÑDˆà×+Ò+¨MÑ:Ô:ˆØ×(Ò(¨Ñ6Ô6ˆØ$ t§{¢{°<Ñ'@Ô'@Ñ@ˆà@QÐf˜Ð'8¸Ô';Ð<Ð<ÐXdÐWfˆØÐr*   )r  r   ©FF)rN   rO   rP   ru   r@  rL  rQ  rA   rô   rT   rx   rõ   r‹   r�   rŽ   s   @r(   r,  r,  ø  sÛ   ø€ € € € € ð3ð 3ð 3ð 3ð 3ð 3ðð ð ðð ð ð2)ð )ð )ð */Ø(-ð>ð >à”|ð>ð    S œ/ð>ð   $™;ð	>ð
  ™+ð>ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð>ð >ð >ð >ð >ð >ð >ð >r*   r,  c                   ó|   ‡ — e Zd Zˆ fd„Z	 	 d
dej        deeef         dedz  dedz  deej                 f
d	„Z	ˆ xZ
S )ÚClapAudioStagec                 ó  •‡‡‡‡‡— t          ¦   «                              ¦   «          ‰| _        ‰| _        t	          j        ˆˆˆˆˆfd„t          |¦  «        D ¦   «         ¦  «        | _        |� |‰¬¦  «        | _        nd | _        d| _	        d S )Nc                 ól   •— g | ]0}t          ‰‰‰‰‰|         |d z  dk    rdn	‰j        d z  ¬¦  «        ‘Œ1S )r,   r   )rm   rÑ   r2  rÒ   r9  r1  )r,  r4   )re   Úirm   rÑ   r6  r2  rÒ   s     €€€€€r(   ú
<listcomp>z+ClapAudioStage.__init__.<locals>.<listcomp>v  sh   ø€ ð 
ð 
ð 
ð õ Ø!ØØ%5Ø'Ø#,¨Q¤<Ø%&¨¡U¨a¢Z Z˜q˜q°fÔ6HÈAÑ6Mðñ ô ð
ð 
ð 
r*   r×   F)
rt   ru   rm   rÑ   r   Ú
ModuleListÚrangeÚblocksÚ
downsampleÚpointing)	rj   rm   rÑ   r2  ÚdepthrÒ   r6  rm  r…   s	    ``` `` €r(   ru   zClapAudioStage.__init__q  s±   øøøøøø€ Ý‰Œ×ÒÑÔÐØˆŒØˆŒÝ”mð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ˜u™œð
ñ 
ô 
ñ
ô 
ˆŒð Ð!Ø(˜j¨SÐ1Ñ1Ô1ˆDŒOˆOà"ˆDŒOàˆŒˆˆr*   Fr"   rR  rÔ   NrS  r=   c                 ó  — |\  }}t          | j        ¦  «        D ]\  }} |||||¦  «        }	|	d         }Œ|}
| j        �-|dz   dz  |dz   dz  }}||||f}|                      |
|¦  «        }n||||f}||
|f}|r||	dd …         z  }|S )Nr   r   r,   )Ú	enumeraterl  rm  )rj   r"   rR  rÔ   rS  r5   r6   rh  Úlayer_modulerb  Ú!hidden_states_before_downsamplingÚheight_downsampledÚwidth_downsampledÚoutput_dimensionsÚstage_outputss                  r(   r‹   zClapAudioStage.forward‹  sá   € ð )‰ˆ�Ý(¨¬Ñ5Ô5ð 	-ð 	-‰OˆAˆ|Ø(˜L¨Ð8HÐJ[Ð]mÑnÔnˆMà)¨!Ô,ˆMˆMà,9Ð)ØŒ?Ð&Ø5;¸a±ZÀAÑ4EÈÐPQÉ	ÐVWÑGWÐ 1ÐØ!'¨Ð0BÐDUÐ VÐØ ŸOšOÐ,MÐO_Ñ`Ô`ˆMˆMà!'¨°¸Ð >Ðà&Ð(IÐK\Ð]ˆàð 	/Ø˜]¨1¨2¨2Ô.Ñ.ˆMØÐr*   rc  )rN   rO   rP   ru   rA   rô   rT   rx   rõ   r‹   r�   rŽ   s   @r(   re  re  p  s¢   ø€ € € € € ðð ð ð ð ð< */Ø(-ðð à”|ðð    S œ/ðð   $™;ð	ð
  ™+ðð 
ˆuŒ|Ô	ðð ð ð ð ð ð ð r*   re  c                   ó�   ‡ — e Zd ZdZdeddfˆ fd„Zdej        dededej        fd	„Zdej        d
e	eef         dej        fd„Z
ˆ xZS )ÚClapAudioPatchMergingzd
    Patch Merging Layer.

    Args:
        dim (`int`):
            Number of input channels.
    rÑ   r=   Nc                 óÄ   •— t          ¦   «                              ¦   «          t          j        d|z  d|z  d¬¦  «        | _        t          j        d|z  ¦  «        | _        d S )Nr-   r,   Fr»   )rt   ru   r   rÈ   Ú	reductionr    r¢   )rj   rÑ   r…   s     €r(   ru   zClapAudioPatchMerging.__init__±  sR   ø€ Ý‰Œ×ÒÑÔÐÝœ 1 s¡7¨A°©G¸%Ð@Ñ@Ô@ˆŒÝ”L  S¡Ñ)Ô)ˆŒ	ˆ	ˆ	r*   Úinput_featurer5   r6   c           
      ó‚   — |dz  dk    s	|dz  dk    r,t           j                             |ddd|dz  d|dz  f¦  «        }|S )zPPad input feature map to be divisible by 2 in both spatial dimensions if needed.r,   r   r   )r   rD   r«   )rj   r|  r5   r6   s       r(   rQ  zClapAudioPatchMerging.maybe_pad¶  sQ   € à�Q‰J˜!ŠOˆO ¨¡¨a¢ ÝœM×-Ò-¨m¸aÀÀAÀuÈqÁyÐRSÐU[Ð^_ÑU_Ð=`ÑaÔaˆMØÐr*   rR  c                 ól  ‡— |\  }}‰j         \  }}}‰                     ||||¦  «        Š|                      ‰||¦  «        Št          j        ˆfd„t          d¦  «        D ¦   «         d¬¦  «        Š‰                     |dd|z  ¦  «        Š|                      ‰¦  «        Š|                      ‰¦  «        Š‰S )Nc           	      ó`   •— g | ]*}t          d ¦  «        D ]}‰dd…|dd …|dd …dd…f         ‘ŒŒ+S )r,   N)rk  )re   ÚcolÚrowr|  s      €r(   ri  z1ClapAudioPatchMerging.forward.<locals>.<listcomp>Æ  sR   ø€ ÐYÐYÐY°SÕPUÐVWÑPXÔPXÐYÐYÈˆ]˜1˜1˜1˜c˜f 1˜f c f¨1 f¨a¨a¨aÐ/Ô0ÐYÐYÐYÐYr*   r,   r/   r×   r-   )r   r1   rQ  rA   Úcatrk  r¢   r{  )rj   r|  rR  r5   r6   r$   rÑ   r7   s    `      r(   r‹   zClapAudioPatchMerging.forward¼  sÅ   ø€ Ø(‰ˆ�à(5Ô(;Ñ%ˆ
�C˜à%×*Ò*¨:°v¸uÀlÑSÔSˆàŸš }°f¸eÑDÔDˆåœ	ØYÐYÐYÐY½EÀ!¹H¼HÐYÑYÔYÐ_að
ñ 
ô 
ˆð &×*Ò*¨:°r¸1¸|Ñ;KÑLÔLˆàŸ	š	 -Ñ0Ô0ˆØŸš }Ñ5Ô5ˆàÐr*   )rN   rO   rP   rQ   rx   ru   rA   rô   rQ  rT   r‹   r�   rŽ   s   @r(   ry  ry  ¨  sÃ   ø€ € € € € ðð ð*˜Cð * Dð *ð *ð *ð *ð *ð *ð
 u¤|ð ¸Sð Èð ÐQVÔQ]ð ð ð ð ð U¤\ð ÀUÈ3ÐPSÈ8Ä_ð ÐY^ÔYeð ð ð ð ð ð ð ð r*   ry  c                   óš   ‡ — e Zd Zˆ fd„Zd„ Ze	 	 	 	 	 	 ddej        dz  dedz  dedz  d	edz  d
edz  dedz  de	e
z  fd„¦   «         Zˆ xZS )ÚClapAudioEncoderc                 ó–  •‡ ‡‡‡— t          ¦   «                              ¦   «          t          ‰j        ¦  «        ‰ _        ‰‰ _        t          ‰¦  «        ‰ _        ‰j        ‰ _        ‰ j        j	        ‰ _	        ‰j
        ‰ _
        ‰j
        ‰j        z  ‰ _        t          ‰j        d‰ j        dz
  z  z  ¦  «        ‰ _        d„ t!          j        d‰j        t'          ‰j        ¦  «        d¬¦  «        D ¦   «         Š‰ j        j        Šˆfd„t+          ‰ j        ¦  «        D ¦   «         ‰ _        t/          j        ˆˆˆ fd„t+          ‰ j        ¦  «        D ¦   «         ¦  «        ‰ _        d	‰ _        t/          j        ‰j        ¦  «        ‰ _        t/          j        ‰ j        ¦  «        ‰ _        ‰j        ‰ _        t/          j        d¦  «        ‰ _         d S )
Nr,   r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rU   )Úitem)re   Úxs     r(   ri  z-ClapAudioEncoder.__init__.<locals>.<listcomp>Þ  s    € ÐwÐwÐw q˜!Ÿ&š&™(œ(ÐwÐwÐwr*   r   Úcpur?   c                 óH   •— g | ]}‰d          d|z  z  ‰d         d|z  z  f‘ŒS )r   r,   r   rU   )re   rh  r—   s     €r(   ri  z-ClapAudioEncoder.__init__.<locals>.<listcomp>á  s9   ø€ Ð!sÐ!sÐ!sÐWX 9¨Q¤<°A°q±DÑ#9¸9ÀQ¼<ÈAÈqÉDÑ;QÐ"RÐ!sÐ!sÐ!sr*   c                 óV  •— g | ]¥}t          ‰t          ‰j        d |z  z  ¦  «        ‰j        |         ‰j        |         ‰j        |         ‰t          ‰j        d|…         ¦  «        t          ‰j        d|dz   …         ¦  «        …         |‰j        dz
  k     rt          nd¬¦  «        ‘Œ¦S )r,   Nr   )rm   rÑ   r2  ro  rÒ   r6  rm  )	re  rx   rv   Úinput_resolutionsÚdepthsr½   rí   Ú
num_layersry  )re   Úi_layerrm   r9  rj   s     €€€r(   ri  z-ClapAudioEncoder.__init__.<locals>.<listcomp>ä  sÎ   ø€ ð ð ð ð õ Ø!Ý˜FÔ;¸aÀ¹jÑHÑIÔIØ%)Ô%;¸GÔ%DØ œ-¨Ô0Ø$Ô8¸ÔAØ,­S°´¸xÀ¸xÔ1HÑ-IÔ-IÍCÐPVÔP]Ð^kÐ`gÐjkÑ`kÐ^kÔPlÑLmÔLmÐ-mÔnØ9@À4Ä?ÐUVÑCVÒ9VÐ9VÕ4Ð4Ð]aðñ ô ðð ð r*   F)!rt   ru   rC   r�  rŽ  rm   r�   Úpatch_embedr›   r•   r“   Únum_mel_binsÚ
freq_ratiorx   rv   Únum_featuresrA   Úlinspacer9  rí   r—   rk  rŒ  r   rj  ÚlayersÚgradient_checkpointingr{   Ú
batch_normr    r¢   ÚAdaptiveAvgPool1dÚavgpool)rj   rm   r9  r—   r…   s   ``@@€r(   ru   zClapAudioEncoder.__init__Ñ  sª  øøøøø€ Ý‰Œ×ÒÑÔÐÝ˜fœmÑ,Ô,ˆŒàˆŒÝ.¨vÑ6Ô6ˆÔØ#Ô1ˆÔØ Ô,Ô9ˆÔØÔ)ˆŒØ Ô*¨fÔ.AÑAˆŒå Ô ?À!ÈÌÐZ[ÑH[ÑB\Ñ \Ñ]Ô]ˆÔàwÐw­E¬N¸1¸fÔ>SÕUXÐY_ÔYfÑUgÔUgÐpuÐ,vÑ,vÔ,vÐwÑwÔwˆàÔ$Ô.ˆ	Ø!sÐ!sÐ!sÐ!sÕ\aÐbfÔbqÑ\rÔ\rÐ!sÑ!sÔ!sˆÔå”mðð ð ð ð ð õ  % T¤_Ñ5Ô5ðñ ô ñ
ô 
ˆŒð ',ˆÔ#åœ.¨Ô)<Ñ=Ô=ˆŒÝ”L Ô!2Ñ3Ô3ˆŒ	Ø”mˆŒÝÔ+¨AÑ.Ô.ˆŒˆˆr*   c                 ób  — |j         \  }}}}t          | j        | j        z  ¦  «        }| j        | j        z  }||k    s||k    rt	          d¦  «        ‚||k     r%t
          j                             |||fdd¬¦  «        }||k     r%t
          j                             |||fdd¬¦  «        }|j         \  }}}	}
|                     ||| j        z  |	| j        z  |
¦  «        }| 	                    dddd¦  «         
                    ¦   «         }|                     |||
| j        z  |	| j        z  ¦  «        }|S )	zò
        The input is 4 normalized log mel spectrograms. It is reshape to the common shape of images. Each channel
        should represent 1 of the 4 crops of the spectrogram. For more details, refer to the [`ClapFeatureExtractor`].
        z@the wav size should be less than or equal to the swin input sizeÚbicubicT)ÚmodeÚalign_cornersr   r   r   r,   )r   rx   r“   r’  r©   r   rD   r)   r!   r2   r3   )rj   Únormalized_input_featuresr±   r%   Úfreq_lengthÚ
spec_widthÚspec_heightÚbatchr‚   ÚtimeÚfreqs              r(   Úreshape_mel2imgz ClapAudioEncoder.reshape_mel2imgù  sr  € ð
 *CÔ)HÑ&ˆˆ1ˆk˜;å˜œ¨$¬/Ñ9Ñ:Ô:ˆ
Ø”n¨¬Ñ7ˆà˜Ò#Ð# {°[Ò'@Ð'@ÝÐ_Ñ`Ô`Ð`ð ˜Ò#Ð#Ý(*¬×(AÒ(AØ)¨J¸Ð+DÈ9Ðdhð )Bñ )ô )Ð%ð ˜Ò$Ð$Ý(*¬×(AÒ(AØ)¨K¸Ð+EÈIÐeið )Bñ )ô )Ð%ð '@Ô&EÑ#ˆˆx˜˜tð %>×$EÒ$EØ�8˜dœoÑ-¨t°t´Ñ/FÈñ%
ô %
Ð!ð %>×$EÒ$EÀaÈÈAÈqÑ$QÔ$Q×$\Ò$\Ñ$^Ô$^Ð!Ø$=×$EÒ$EØ�8˜T D¤OÑ3°T¸T¼_Ñ5Lñ%
ô %
Ð!ð )Ð(r*   NFTÚ	is_longerrÔ   Úoutput_hidden_statesÚ(output_hidden_states_before_downsamplingrS  Úreturn_dictr=   c                 ó`  — |p| j         j        }|p| j         j        }|                     dd¦  «        }|                      |¦  «        }|                     dd¦  «        }d }	| j        r8|                     |j        ¦  «        }
t          j	        |
dk    ¦  «        d         }	|  
                    |¦  «        }|j        d         }|                      ||	¦  «        }|rdnd }|rdnd }|rdnd }| j        d         }|r?|j        \  }}} |j        |g|¢|‘R Ž }|                     dddd¦  «        }||fz  }||fz  }t!          | j        ¦  «        D ]ì\  }}| j        |         } |||||¦  «        }|d         }|d         }|d         }|d         |d         f}|rP|rN|j        \  }}} |j        |g|d         |d         f¢|‘R Ž }|                     dddd¦  «        }||fz  }||fz  }nC|rA|s?|j        \  }}} |j        |g|¢|‘R Ž }|                     dddd¦  «        }||fz  }||fz  }|r||dd …         z  }Œí|                      |¦  «        }|j        \  }}}|dt'          | j        ¦  «        dz
  z  z  | j        d         z  }|dt'          | j        ¦  «        dz
  z  z  | j        d         z  }|                     ddd¦  «                             ¦   «                              ||||¦  «        }|j        \  }}}}|| j        z  } |                     |||| z  | |¦  «        }|                     ddddd¦  «                             ¦   «                              ||| d¦  «        }|                      t          j        |d¦  «        ¦  «        }!t          j        |!d¦  «        }!t7          ||!||¬	¦  «        S )
Nr   r   r   r,   rU   rÖ   r/   r-   )rL   Úpooler_outputr"   rM   )rm   r§  rÔ   r¬   r—  r›   rC  r@   rA   Úwherer¥  r   r�  rŒ  r1   r2   rq  r•  r¢   rC   r�  r•   r3   r!   r’  r™  rš   r   )"rj   Úinput_featuresr¦  rÔ   r§  r¨  rS  r©  rž  Úis_longer_list_idxÚis_longer_listr"   Ú
frames_numÚall_hidden_statesÚall_reshaped_hidden_statesÚall_self_attentionsrR  r$   r±   Úhidden_sizeÚreshaped_hidden_staterh  rr  rb  rs  rv  rL   Ú
n_channelsÚ
freq_shapeÚtemporal_shapeÚn_frequenciesÚn_tempÚ
c_freq_binÚlatent_outputs"                                     r(   r‹   zClapAudioEncoder.forward  sÈ  € ð  4ÐW°t´{Ô7WÐØ-ÐN°´Ô1NÐà'×1Ò1°!°QÑ7Ô7ˆØ$(§O¢O°NÑ$CÔ$CÐ!Ø$=×$GÒ$GÈÈ1Ñ$MÔ$MÐ!à!ÐØÔð 	EØ&Ÿ\š\¨.Ô*?Ñ@Ô@ˆNÝ!&¤¨^¸qÒ-@Ñ!AÔ!AÀ!Ô!DÐà×,Ò,Ð-FÑGÔGˆà"Ô(¨Ô+ˆ
à×(Ò(¨Ð8JÑKÔKˆà"6Ð@˜B˜B¸DÐØ+?Ð%I R RÀTÐ"Ø$5Ð?˜b˜b¸4ÐàÔ1°!Ô4Ðàð 	CØ)6Ô)<Ñ&ˆJ˜˜;à$6 MÔ$6°zÐ$bÐDTÐ$bÐVaÐ$bÐ$bÐ$bÐ!Ø$9×$AÒ$AÀ!ÀQÈÈ1Ñ$MÔ$MÐ!Ø -Ð!1Ñ1ÐØ&Ð+@Ð*BÑBÐ&å(¨¬Ñ5Ô5ð 	9ð 	9‰OˆAˆ|Ø#Ô5°aÔ8Ðà(˜L¨Ð8HÐJ[Ð]mÑnÔnˆMà)¨!Ô,ˆMà0=¸aÔ0@Ð-Ø -¨aÔ 0Ðà 1°"Ô 5Ð7HÈÔ7LÐMÐà#ð GÐ(Pð GØ-NÔ-TÑ*�
˜A˜{ð )OÐ(IÔ(NØð)Ø"3°AÔ"6Ð8IÈ!Ô8LÐ!Mð)ØOZð)ð )ð )Ð%ð )>×(EÒ(EÀaÈÈAÈqÑ(QÔ(QÐ%Ø!Ð&GÐ%IÑIÐ!Ø*Ð/DÐ.FÑFÐ*Ð*Ø%ð GÐ.Vð GØ-:Ô-@Ñ*�
˜A˜{à(:¨Ô(:¸:Ð(fÐHXÐ(fÐZeÐ(fÐ(fÐ(fÐ%Ø(=×(EÒ(EÀaÈÈAÈqÑ(QÔ(QÐ%Ø! mÐ%5Ñ5Ð!Ø*Ð/DÐ.FÑFÐ*à ð 9Ø# }°Q°R°RÔ'8Ñ8Ð#øà ŸIšI mÑ4Ô4Ðà$5Ô$;Ñ!ˆ
�A�zà A­#¨d¬kÑ*:Ô*:¸QÑ*>Ñ$?Ñ@ÀDÔDUÐVWÔDXÑXˆ
Ø#¨­c°$´+Ñ.>Ô.>ÀÑ.BÑ(CÑDÈÔHYÐZ[ÔH\Ñ\ˆð ×%Ò% a¨¨AÑ.Ô.×9Ò9Ñ;Ô;×CÒCÀJÐPZÐ\fÐhvÑwÔwð 	ð 9JÔ8OÑ5ˆ
�J ¨và" d¤oÑ5ˆ
Ø-×5Ò5Ø˜
 M°ZÑ$?ÀÈVñ
ô 
Ðð ×%Ò% a¨¨A¨q°!Ñ4Ô4×?Ò?ÑAÔA×IÒIÈ*ÐV`ÐblÐnpÑqÔqð 	ð Ÿš¥U¤]Ð3DÀaÑ%HÔ%HÑIÔIˆÝœ m°QÑ7Ô7ˆå)Ø/Ø'Ø4Ø*ð	
ñ 
ô 
ð 	
r*   )NFFFFT)rN   rO   rP   ru   r¥  r   rA   rR   rõ   rT   rW   r‹   r�   rŽ   s   @r(   r„  r„  Ð  sû   ø€ € € € € ð&/ð &/ð &/ð &/ð &/ðP")ð ")ð ")ðH ð /3Ø).Ø,1Ø@EØ(-Ø#'ðh
ð h
ð Ô$ tÑ+ðh
ð   $™;ð	h
ð
 # T™kðh
ð 37¸±+ðh
ð  ™+ðh
ð ˜D‘[ðh
ð 
Ð%Ñ	%ðh
ð h
ð h
ñ Ôðh
ð h
ð h
ð h
ð h
r*   r„  c                   ó0   ‡ — e Zd Zdeez  fˆ fd„Zd„ Zˆ xZS )ÚClapProjectionLayerrm   c                 ó  •— t          ¦   «                              ¦   «          || _        |j        }|j        }t          j        ||¦  «        | _        t          |j	                 | _
        t          j        ||¦  «        | _        d S rb   )rt   ru   rm   r´  Úprojection_dimr   rÈ   Úlinear1r	   Úprojection_hidden_actÚ
activationÚlinear2)rj   rm   r´  rÀ  r…   s       €r(   ru   zClapProjectionLayer.__init__Š  si   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ(ˆØÔ.ˆå”y ¨nÑ=Ô=ˆŒÝ  Ô!=Ô>ˆŒÝ”y °Ñ@Ô@ˆŒˆˆr*   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rb   )rÁ  rÃ  rÄ  r  s     r(   r‹   zClapProjectionLayer.forward”  s;   € ØŸš ]Ñ3Ô3ˆØŸš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆØÐr*   )rN   rO   rP   r   r   ru   r‹   r�   rŽ   s   @r(   r¾  r¾  ‰  s_   ø€ € € € € ðA˜°Ñ?ð Að Að Að Að Að Aðð ð ð ð ð ð r*   r¾  c                   óÆ   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	ed
ej	        fd„Z
ed„ ¦   «         Zedd„¦   «         Zˆ xZS )ÚClapTextEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óø  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j
        |j        |j        ¬¦  «        | _
        t          j        |j        ¦  «        | _        |                      dt!          j        |j        ¦  «                             d¦  «        d¬¦  «         |                      dt!          j        | j                             ¦   «         t           j        ¬¦  «        d¬¦  «         |j        | _        t          j        |j        |j        | j        ¬¦  «        | _        d S )	N)Úpadding_idxr.  Úposition_ids©r   r/   T)Ú
persistentÚtoken_type_ids)r  )rt   ru   r   Ú	EmbeddingÚ
vocab_sizer´  Úpad_token_idÚword_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsr    r3  rÍ   r  rÏ   rÆ   rA   rB   Úmax_position_embeddingsÚexpandrÄ   rÊ  rª   rB  rÉ  Úposition_embeddings©rj   rm   r…   s     €r(   ru   zClapTextEmbeddings.__init__Ÿ  sJ  ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒà×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐeið 	ñ 	
ô 	
ð 	
ð 	×ÒØ�eœk¨$Ô*;×*@Ò*@Ñ*BÔ*BÍ%Ì*ÐUÑUÔUÐbfð 	ñ 	
ô 	
ð 	
ð "Ô.ˆÔÝ#%¤<ØÔ*¨FÔ,>ÈDÔL\ð$
ñ $
ô $
ˆÔ Ð Ð r*   Nr   Ú	input_idsrÍ  rÊ  Úinputs_embedsÚpast_key_values_lengthr=   c                 ó*  — |€:|�|                       || j        |¦  «        }n|                      || j        ¦  «        }|�|                     ¦   «         }n|                     ¦   «         d d…         }|\  }}|€§t	          | d¦  «        rl| j                             |j        ¦  «                             |j	        d         d¦  «        }	t          j        |	d|¬¦  «        }	|	                     ||¦  «        }n+t          j        |t          j        | j        j        ¬¦  «        }|€|                      |¦  «        }|                      |¦  «        }
||
z   }|                      |¦  «        }||z   }|                      |¦  «        }|                      |¦  «        }|S )Nr/   rÍ  r   r   )rÑ   Úindexr  )Ú"create_position_ids_from_input_idsrÉ  Ú&create_position_ids_from_inputs_embedsrª   ÚhasattrrÍ  rC  r@   rÕ  r   rA   ÚgatherrÄ   rB  rÊ  rÑ  rÓ  rÖ  r    rÏ   )rj   rØ  rÍ  rÊ  rÙ  rÚ  Úinput_shaper$   Ú
seq_lengthÚbuffered_token_type_idsrÓ  Ú
embeddingsrÖ  s                r(   r‹   zClapTextEmbeddings.forward³  s¨  € ð ÐØÐ$à#×FÒFØ˜tÔ/Ð1Gñ ô  ��ð  $×JÒJÈ=ÐZ^ÔZjÑkÔk�àÐ Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà!,Ñˆ
�Jð
 Ð!Ý�tÐ-Ñ.Ô.ð mà*.Ô*=×*@Ò*@ÀÔATÑ*UÔ*U×*\Ò*\Ð]iÔ]oÐpqÔ]rÐtvÑ*wÔ*wÐ'Ý*/¬,Ð7NÐTUÐ]iÐ*jÑ*jÔ*jÐ'Ø!8×!?Ò!?À
ÈJÑ!WÔ!W��å!&¤¨[ÅÄ
ÐSWÔSdÔSkÐ!lÑ!lÔ!l�àÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ"5Ñ5ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr*   c                 óú   — |                       ¦   «         dd…         }|d         }t          j        |dz   ||z   dz   t          j        | j        ¬¦  «        }|                     d¦  «                             |¦  «        S )z×
        We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.

        Args:
            inputs_embeds: torch.Tensor

        Returns: torch.Tensor
        Nr/   r   r  r   )rª   rA   rB   rB  r@   rÛ   rÕ  )rÙ  rÉ  rá  Úsequence_lengthrÊ  s        r(   rÞ  z9ClapTextEmbeddings.create_position_ids_from_inputs_embedsã  s~   € ð $×(Ò(Ñ*Ô*¨3¨B¨3Ô/ˆØ% aœ.ˆå”|Ø˜!‰O˜_¨{Ñ:¸QÑ>ÅeÄjÐYfÔYmð
ñ 
ô 
ˆð ×%Ò% aÑ(Ô(×/Ò/°Ñ<Ô<Ð<r*   c                 óÜ   — |                       |¦  «                             ¦   «         }t          j        |d¬¦  «                             |¦  «        |z   |z  }|                     ¦   «         |z   S )a  
        Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding symbols
        are ignored. This is modified from fairseq's `utils.make_positions`.

        Args:
            x: torch.Tensor x:

        Returns: torch.Tensor
        r   r×   )Únerx   rA   ÚcumsumÚtype_asrB  )rØ  rÉ  rÚ  ÚmaskÚincremental_indicess        r(   rÝ  z5ClapTextEmbeddings.create_position_ids_from_input_idsõ  sg   € ð �|Š|˜KÑ(Ô(×,Ò,Ñ.Ô.ˆÝ$œ|¨D°aÐ8Ñ8Ô8×@Ò@ÀÑFÔFÐI_Ñ_ÐcgÑgÐØ"×'Ò'Ñ)Ô)¨KÑ7Ð7r*   )NNNNr   )r   )rN   rO   rP   rQ   ru   rA   Ú
LongTensorrR   rx   rô   r‹   ÚstaticmethodrÞ  rÝ  r�   rŽ   s   @r(   rÇ  rÇ  œ  s   ø€ € € € € ØQÐQð
ð 
ð 
ð 
ð 
ð, .2Ø26Ø04Ø26Ø&'ð.ð .àÔ# dÑ*ð.ð Ô(¨4Ñ/ð.ð Ô&¨Ñ-ð	.ð
 Ô(¨4Ñ/ð.ð !$ð.ð 
Œð.ð .ð .ð .ð` ð=ð =ñ „\ð=ð" ð8ð 8ð 8ñ „\ð8ð 8ð 8ð 8ð 8r*   rÇ  r  ÚmodulerÊ   rË   rÌ   rÓ   ÚscalingrÏ   c                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )Nr,   r   r/   )rÑ   r  )Úpr   r   )rA   rØ   r¬   r   rD   rÜ   Úfloat32rC  r  rÏ   r   r3   )
rï  rÊ   rË   rÌ   rÓ   rð  rÏ   ÚkwargsÚattn_weightsÚattn_outputs
             r(   Úeager_attention_forwardr÷    sÃ   € õ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€KØ˜Ð$Ð$r*   c                   óŠ   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         de	ej        ej        dz  f         fd„Z
ˆ xZS )	ÚClapTextSelfAttentionc                 ó¨  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|| _        |j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _	        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        ¦  «        | _        |j        | _        | j        dz  | _        d S )Nr   Úembedding_sizer·   r¸   r¹   ç      à¿)rt   ru   r´  r½   rß  r©   rm   rx   r¾   r¿   r   rÈ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   Úattention_dropoutrð  r×  s     €r(   ru   zClapTextSelfAttention.__init__  s:  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð
 ˆŒØ#)Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒØ!'Ô!DˆÔØÔ/°Ñ5ˆŒˆˆr*   Nr"   rÓ   rô  r=   c                 ó‚  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||f| j        sdn| j        | j        dœ|¤Ž\  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|
|fS )Nr/   r   r,   r  )rÏ   rð  )r   r¾   rÊ   r1   r¬   rË   rÌ   r   Úget_interfacerm   Ú_attn_implementationr÷  r   rý  rð  r!   r3   )rj   r"   rÓ   rô  rá  rÝ   Úquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerö  rõ  s               r(   r‹   zClapTextSelfAttention.forward4  sf  € ð $Ô)¨#¨2¨#Ô.ˆØC˜ÐC bÐC¨$Ô*BÐCÐCˆà—z’z -Ñ0Ô0×5Ò5°lÑCÔC×MÒMÈaÐQRÑSÔSˆØ—X’X˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆ
Ø—z’z -Ñ0Ô0×5Ò5°lÑCÔC×MÒMÈaÐQRÑSÔSˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ˜LÐ(Ð(r*   rb   )rN   rO   rP   ru   rA   rô   rR   r   r   rT   r‹   r�   rŽ   s   @r(   rù  rù    sŸ   ø€ € € € € ð6ð 6ð 6ð 6ð 6ð0 48ð)ð )à”|ð)ð Ô)¨DÑ0ð)ð Ð+Ô,ð	)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð)ð )ð )ð )ð )ð )ð )ð )r*   rù  c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚClapTextSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nr.  )rt   ru   r   rÈ   r´  rù   r    r3  rÍ   r  rÏ   r×  s     €r(   ru   zClapTextSelfOutput.__init__V  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr*   r"   rû   r=   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rb   ©rù   rÏ   r    rþ   s      r(   r‹   zClapTextSelfOutput.forward\  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr*   rÿ   rŽ   s   @r(   r  r  U  ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r*   r  c            	       ój   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         dej        fd„Z	ˆ xZ
S )	ÚClapTextAttentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S rb   )rt   ru   rù  rj   r  rŠ   r×  s     €r(   ru   zClapTextAttention.__init__e  s;   ø€ Ý‰Œ×ÒÑÔÐÝ)¨&Ñ1Ô1ˆŒ	Ý(¨Ñ0Ô0ˆŒˆˆr*   Nr"   rÓ   rô  r=   c                 ó\   — |} | j         |fd|i|¤Ž\  }}|                      ||¦  «        }|S ©NrÓ   r  )rj   r"   rÓ   rô  r‡   r±   s         r(   r‹   zClapTextAttention.forwardj  sV   € ð !ˆØ$˜4œ9Øð
ð 
à)ð
ð ð
ð 
Ñˆ�qð
 Ÿš M°8Ñ<Ô<ˆØÐr*   rb   )rN   rO   rP   ru   rA   rô   rR   r   r   r‹   r�   rŽ   s   @r(   r  r  d  sŽ   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð 48ðð à”|ðð Ô)¨DÑ0ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð r*   r  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚClapTextIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S rb   )rt   ru   r   rÈ   r´  Úintermediate_sizerù   rc   r  r  r	   r  r×  s     €r(   ru   zClapTextIntermediate.__init__|  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r*   r"   r=   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rb   r  r  s     r(   r‹   zClapTextIntermediate.forward„  r  r*   rÿ   rŽ   s   @r(   r  r  {  r  r*   r  c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚClapTextOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S r  )rt   ru   r   rÈ   r  r´  rù   r    r3  rÍ   r  rÏ   r×  s     €r(   ru   zClapTextOutput.__init__Œ  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr*   r"   rû   r=   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rb   r
  rþ   s      r(   r‹   zClapTextOutput.forward’  r  r*   rÿ   rŽ   s   @r(   r  r  ‹  r  r*   r  c            	       óp   ‡ — e Zd Zˆ fd„Z	 d	dej        dej        dz  dee         dej        fd„Z	d„ Z
ˆ xZS )
ÚClapTextLayerc                 óæ   •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        d S )Nr   )
rt   ru   r0  Úseq_len_dimr  r5  r  r8  r  rŠ   r×  s     €r(   ru   zClapTextLayer.__init__›  s^   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ*¨6Ñ2Ô2ˆŒÝ0°Ñ8Ô8ˆÔÝ$ VÑ,Ô,ˆŒˆˆr*   Nr"   rÓ   rô  r=   c                 óh   —  | j         |fd|i|¤Ž}t          | j        | j        | j        |¦  «        }|S r  )r5  r   Úfeed_forward_chunkr0  r  )rj   r"   rÓ   rô  s       r(   r‹   zClapTextLayer.forward£  s]   € ð '˜œØð
ð 
à)ð
ð ð
ð 
ˆõ 2ØÔ# TÔ%AÀ4ÔCSÐUbñ
ô 
ˆð Ðr*   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S rb   )r8  rŠ   )rj   r  Úintermediate_outputra  s       r(   r   z ClapTextLayer.feed_forward_chunkµ  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr*   rb   )rN   rO   rP   ru   rA   rô   rR   r   r   r‹   r   r�   rŽ   s   @r(   r  r  š  s�   ø€ € € € € ð-ð -ð -ð -ð -ð 48ðð à”|ðð Ô)¨DÑ0ðð Ð+Ô,ð	ð
 
Œðð ð ð ð$ð ð ð ð ð ð r*   r  c            	       ó`   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         de	fd„Z
ˆ xZS )	ÚClapTextEncoderc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rU   )r  )re   rh  rm   s     €r(   ri  z,ClapTextEncoder.__init__.<locals>.<listcomp>À  s!   ø€ Ð#cÐ#cÐ#c¸a¥M°&Ñ$9Ô$9Ð#cÐ#cÐ#cr*   F)	rt   ru   rm   r   rj  rk  Únum_hidden_layersÚlayerr–  r×  s    `€r(   ru   zClapTextEncoder.__init__½  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#cÐ#cÐ#cÐ#cÅ5ÈÔIaÑCbÔCbÐ#cÑ#cÔ#cÑdÔdˆŒ
Ø&+ˆÔ#Ð#Ð#r*   Nr"   rÓ   rô  r=   c                 óJ   — | j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N)rL   )r(  r   )rj   r"   rÓ   rô  rr  s        r(   r‹   zClapTextEncoder.forwardÃ  sY   € ð !œJð 	ð 	ˆLØ(˜LØØðð ð ðð ˆMˆMõ Ø+ð
ñ 
ô 
ð 	
r*   rb   )rN   rO   rP   ru   rA   rô   rR   r   r   r   r‹   r�   rŽ   s   @r(   r$  r$  ¼  sŒ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð 48ð
ð 
à”|ð
ð Ô)¨DÑ0ð
ð Ð+Ô,ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r*   r$  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚClapTextPoolerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S rb   )rt   ru   r   rÈ   r´  rù   ÚTanhrÃ  r×  s     €r(   ru   zClapTextPooler.__init__×  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆr*   r"   r=   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S r;  )rù   rÃ  )rj   r"   Úfirst_token_tensorÚpooled_outputs       r(   r‹   zClapTextPooler.forwardÜ  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr*   rÿ   rŽ   s   @r(   r+  r+  Ö  s^   ø€ € € € € ð$ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r*   r+  c                   óp   ‡ — e Zd ZU eed<   dZdZdZ ej	        ¦   «         de
j        fˆ fd„¦   «         Zˆ xZS )ÚClapPreTrainedModelrm   Úclap)ÚaudioÚtextFrï  c                 ó8  •— t          ¦   «                              |¦  «         | j        j        }t	          |t
          ¦  «        r²t          j        |j        j	        d|dz  ¬¦  «         t          j        |j
        j	        d|dz  ¬¦  «         t          j        |j        t          j        |j        j        d         ¦  «                             d¦  «        ¦  «         t          j        |j        ¦  «         d	S t	          |t&          ¦  «        rnt          j        |j        t-          j        | j        j        ¦  «        ¦  «         t          j        |j        t-          j        | j        j        ¦  «        ¦  «         d	S t	          |t4          j        ¦  «        r!t          j        |j	        d|dz  ¬¦  «         d	S t	          |t4          j        t4          j        f¦  «        rd| j        j        dz  d| j        j        z  dz  z  |z  }t          j        |j	        |¬¦  «         |j         �t          j        |j         ¦  «         d	S d	S t	          |tB          ¦  «        rGt          j        |j"        ¦  «         t          j        |j#        | $                    ¦   «         ¦  «         d	S d	S )
zInitialize the weightsr  g{®Gáz”?)ÚmeanÚstdr/   rË  rü  r,   )r8  N)%rt   Ú_init_weightsrm   Úinitializer_factorrc   rÇ  ÚinitÚnormal_rÖ  ÚweightrÓ  Úcopy_rÊ  rA   rB   r   rÕ  Úzeros_rÍ  Ú	ClapModelÚ	constant_Úlogit_scale_arÙ   ÚlogÚlogit_scale_init_valueÚlogit_scale_tr   rÎ  rz   rÈ   r´  r'  r¼   rµ   rÅ   rº   rÇ   )rj   rï  ÚfactorÚin_proj_stdr…   s       €r(   r9  z!ClapPreTrainedModel._init_weightsì  sJ  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ø”Ô/ˆå�fÕ0Ñ1Ô1ð 	`ÝŒL˜Ô3Ô:ÀÈ&ÐSWÉ-ÐXÑXÔXÐXÝŒL˜Ô5Ô<À3ÈFÐUYÉMÐZÑZÔZÐZÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.Ý˜¥	Ñ*Ô*ð 	`ÝŒN˜6Ô/µ´¸$¼+Ô:\Ñ1]Ô1]Ñ^Ô^Ð^ÝŒN˜6Ô/µ´¸$¼+Ô:\Ñ1]Ô1]Ñ^Ô^Ð^Ð^Ð^Ý˜¥¤Ñ-Ô-ð 		`ÝŒL˜œ¨S°f¸t±mÐDÑDÔDÐDÐDÐDÝ˜¥¤­B¬IÐ 6Ñ7Ô7ð 	`Øœ;Ô2°DÑ8¸aÀ$Ä+ÔB_Ñ>_ÐdhÑ=hÑiÐlrÑrˆKÝŒL˜œ¨KÐ8Ñ8Ô8Ð8ØŒ{Ð&Ý”˜FœKÑ(Ô(Ð(Ð(Ð(ð 'Ð&å˜Õ 6Ñ7Ô7ð 	`ÝŒK˜Ô;Ñ<Ô<Ð<ÝŒJ�vÔ5°v×7\Ò7\Ñ7^Ô7^Ñ_Ô_Ð_Ð_Ð_ð	`ð 	`r*   )rN   rO   rP   r   rS   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingrA   Úno_gradr   ÚModuler9  r�   rŽ   s   @r(   r2  r2  å  sƒ   ø€ € € € € € àÐÐÑØÐØ(ÐØ&+Ð#à€U„]�_„_ð` B¤Ið `ð `ð `ð `ð `ñ „_ð`ð `ð `ð `ð `r*   r2  c                   ó®   ‡ — e Zd ZU eed<   dZdZdefˆ fd„Zdej	        fd„Z
e	 	 ddej        dz  dej        dz  d	ee         deez  fd
„¦   «         Zˆ xZS )ÚClapAudioModelrm   r­  r4  c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S rb   )rt   ru   r„  Úaudio_encoderÚ	post_initr×  s     €r(   ru   zClapAudioModel.__init__  sA   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý-¨fÑ5Ô5ˆÔà�ŠÑÔÐÐÐr*   r=   c                 ó$   — | j         j        j        S rb   )rP  r�  rž   ri   s    r(   Úget_input_embeddingsz#ClapAudioModel.get_input_embeddings  s   € ØÔ!Ô-Ô2Ð2r*   Nr¦  rô  c                 ó"   —  | j         d||dœ|¤ŽS )ad  
        is_longer (`torch.FloatTensor`, of shape `(batch_size, 1)`, *optional*):
            Whether the audio clip is longer than `max_length`. If `True`, a feature fusion will be enabled to enhance
            the features.

        Examples:

        ```python
        >>> from datasets import load_dataset
        >>> from transformers import AutoProcessor, ClapAudioModel

        >>> dataset = load_dataset("hf-internal-testing/ashraq-esc50-1-dog-example")
        >>> audio_sample = dataset["train"]["audio"][0]["array"]

        >>> model = ClapAudioModel.from_pretrained("laion/clap-htsat-fused")
        >>> processor = AutoProcessor.from_pretrained("laion/clap-htsat-fused")

        >>> inputs = processor(audio=audio_sample, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        ```©r­  r¦  rU   )rP  )rj   r­  r¦  rô  s       r(   r‹   zClapAudioModel.forward  s5   € ð: "ˆtÔ!ð 
Ø)Øð
ð 
ð ð
ð 
ð 	
r*   ©NN)rN   rO   rP   r   rS   Úmain_input_namerI  ru   r   rL  rS  r   rA   rR   Ú
BoolTensorr   r   rT   r   r‹   r�   rŽ   s   @r(   rN  rN    sé   ø€ € € € € € ØÐÐÑØ&€OØÐð˜ð ð ð ð ð ð ð3 b¤ið 3ð 3ð 3ð 3ð ð 48Ø-1ð 
ð  
àÔ)¨DÑ0ð 
ð Ô# dÑ*ð 
ð Ð+Ô,ð	 
ð
 
Ð+Ñ	+ð 
ð  
ð  
ñ „^ð 
ð  
ð  
ð  
ð  
r*   rN  a0  
    The model can behave as an encoder (with only self-attention) as well as a decoder, in which case a layer of
    cross-attention is added between the self-attention layers, following the architecture described in *Attention is
    all you need*_ by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz
    Kaiser and Illia Polosukhin.

    To behave as an decoder the model needs to be initialized with the `is_decoder` argument of the configuration set
    to `True`. To be used in a Seq2Seq model, the model needs to initialized with both `is_decoder` argument and
    `add_cross_attention` set to `True`; an `encoder_hidden_states` is then expected as an input to the forward pass.

    .. _*Attention is all you need*: https://huggingface.co/papers/1706.03762
    c                   ó  ‡ — e Zd ZU eed<   dZeedœZdˆ fd„	Z	d„ Z
d„ Zeee	 	 	 	 	 dd	ej        dz  d
ej        dz  dej        dz  dej        dz  dej        dz  dee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚClapTextModelrm   ©r5  ©r"   rM   Tc                 ó   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd| _        |  	                    ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)
rt   ru   rm   rÇ  rä  r$  Úencoderr+  ÚpoolerrQ  )rj   rm   Úadd_pooling_layerr…   s      €r(   ru   zClapTextModel.__init__N  ss   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒå,¨VÑ4Ô4ˆŒÝ& vÑ.Ô.ˆŒà0AÐK•n VÑ,Ô,Ð,ÀtˆŒð 	�ŠÑÔÐÐÐr*   c                 ó   — | j         j        S rb   ©rä  rÑ  ri   s    r(   rS  z"ClapTextModel.get_input_embeddings^  s   € ØŒÔ.Ð.r*   c                 ó   — || j         _        d S rb   rb  ©rj   rÌ   s     r(   Úset_input_embeddingsz"ClapTextModel.set_input_embeddingsa  s   € Ø*/ˆŒÔ'Ð'Ð'r*   NrØ  rÓ   rÍ  rÊ  rÙ  rô  r=   c                 ó*  — |�|�t          d¦  «        ‚|�+|                      ||¦  «         |                     ¦   «         }n.|�|                     ¦   «         d d…         }nt          d¦  «        ‚|\  }}	|�|j        n|j        }
|€t	          j        ||	f|
¬¦  «        }|                      ||||¬¦  «        }t          | j        ||¬¦  «        } | j	        |fd|i|¤Ž}|d         }| j
        �|  
                    |¦  «        nd }t          ||¬	¦  «        S )
NzDYou cannot specify both input_ids and inputs_embeds at the same timer/   z5You have to specify either input_ids or inputs_embedsr?   )rØ  rÊ  rÍ  rÙ  )rm   rÙ  rÓ   rÓ   r   )rL   r«  )r©   Ú%warn_if_padding_and_no_attention_maskrª   r@   rA   Úonesrä  r
   rm   r^  r_  r   )rj   rØ  rÓ   rÍ  rÊ  rÙ  rô  rá  r$   râ  r@   Úembedding_outputÚencoder_outputsÚsequence_outputr0  s                  r(   r‹   zClapTextModel.forwardd  sv  € ð Ð  ]Ð%>ÝÐcÑdÔdÐdØÐ"Ø×6Ò6°yÀ.ÑQÔQÐQØ#Ÿ.š.Ñ*Ô*ˆKˆKØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKåÐTÑUÔUÐUà!,Ñˆ
�JØ%.Ð%:�Ô!Ð!ÀÔ@TˆàÐ!Ý"œZ¨*°jÐ)AÈ6ÐRÑRÔRˆNàŸ?š?ØØ%Ø)Ø'ð	 +ñ 
ô 
Ðõ 3Ø”;Ø*Ø)ð
ñ 
ô 
ˆð '˜$œ,Øð
ð 
à)ð
ð ð
ð 
ˆð
 *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå)Ø-Ø'ð
ñ 
ô 
ð 	
r*   )T)NNNNN)rN   rO   rP   r   rS   rI  r  rù  Ú_can_record_outputsru   rS  re  r   r   r   rA   rô   r   r   r   r‹   r�   rŽ   s   @r(   rZ  rZ  8  s<  ø€ € € € € € ð ÐÐÑØ Ðà&Ø+ðð Ðð
ð ð ð ð ð ð /ð /ð /ð0ð 0ð 0ð  ØØð *.Ø.2Ø.2Ø,0Ø-1ð1
ð 1
à”< $Ñ&ð1
ð œ tÑ+ð1
ð œ tÑ+ð	1
ð
 ”l TÑ)ð1
ð ”| dÑ*ð1
ð Ð+Ô,ð1
ð 
$ð1
ð 1
ð 1
ñ „^ñ „_ñ  Ôð1
ð 1
ð 1
ð 1
ð 1
r*   rZ  c                   óê  ‡ — e Zd ZU eed<   defˆ fd„Zee	 	 ddej	        dej	        dz  dej	        dz  de
e         deez  f
d	„¦   «         ¦   «         Zee	 	 dd
ej	        dej	        dz  dej	        dz  de
e         deez  f
d„¦   «         ¦   «         Zee	 	 	 	 	 	 ddej        dz  d
ej        dz  dej        dz  dej	        dz  dej        dz  dedz  de
e         deez  fd„¦   «         ¦   «         Zˆ xZS )r@  rm   c                 óJ  •— t          ¦   «                              |¦  «         t          |j        t          ¦  «        s%t          dt          |j        ¦  «        › d�¦  «        ‚t          |j        t          ¦  «        s%t          dt          |j        ¦  «        › d�¦  «        ‚|j        }|j        }t          j
        t          j        t          j        |j        ¦  «        ¦  «        ¦  «        | _        t          j
        t          j        t          j        |j        ¦  «        ¦  «        ¦  «        | _        |j        | _        t'          |¦  «        | _        t+          |¦  «        | _        t/          |¦  «        | _        t+          |¦  «        | _        |                      ¦   «          d S )NzKconfig.text_config is expected to be of type ClapTextConfig but is of type ú.zMconfig.audio_config is expected to be of type ClapAudioConfig but is of type )rt   ru   rc   Útext_configr   Ú	TypeErrorÚtypeÚaudio_configr   r   rÃ   rA   r?  rÙ   rC  rD  rB  rE  rÀ  rZ  Ú
text_modelr¾  Útext_projectionrN  Úaudio_modelÚaudio_projectionrQ  )rj   rm   rp  rs  r…   s       €r(   ru   zClapModel.__init__Ÿ  su  ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜&Ô,­nÑ=Ô=ð 	Ýð0Ý˜Ô+Ñ,Ô,ð0ð 0ð 0ñô ð õ
 ˜&Ô-­Ñ?Ô?ð 	Ýð1Ý˜Ô,Ñ-Ô-ð1ð 1ð 1ñô ð ð
 Ô(ˆØÔ*ˆåœ\­%¬,µt´xÀÔ@]Ñ7^Ô7^Ñ*_Ô*_Ñ`Ô`ˆÔÝœ\­%¬,µt´xÀÔ@]Ñ7^Ô7^Ñ*_Ô*_Ñ`Ô`ˆÔà$Ô3ˆÔå'¨Ñ4Ô4ˆŒÝ2°;Ñ?Ô?ˆÔå)¨,Ñ7Ô7ˆÔÝ 3°LÑ AÔ AˆÔð 	�ŠÑÔÐÐÐr*   NrØ  rÓ   rÊ  rô  r=   c                 ó’   —  | j         d|||dœ|¤Ž}|                      |j        ¦  «        }t          j        |d¬¦  «        |_        |S )a  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoTokenizer, ClapModel

        >>> model = ClapModel.from_pretrained("laion/clap-htsat-unfused")
        >>> tokenizer = AutoTokenizer.from_pretrained("laion/clap-htsat-unfused")

        >>> inputs = tokenizer(["the sound of a cat", "the sound of a dog"], padding=True, return_tensors="pt")
        >>> with torch.inference_mode():
        ...     text_features = model.get_text_features(**inputs)
        ```©rØ  rÓ   rÊ  r/   r×   rU   )rt  ru  r«  ÚFÚ	normalize)rj   rØ  rÓ   rÊ  rô  Útext_outputsÚtext_featuress          r(   Úget_text_featureszClapModel.get_text_features¿  sj   € ð. 4C°4´?ð 4
ØØ)Ø%ð4
ð 4
ð ð	4
ð 4
ˆð ×,Ò,¨\Ô-GÑHÔHˆÝ%&¤[°ÀBÐ%GÑ%GÔ%GˆÔ"àÐr*   r­  r¦  c                 ó�   —  | j         d||dœ|¤Ž}|                      |j        ¦  «        }t          j        |d¬¦  «        |_        |S )a  
        is_longer (`torch.FloatTensor`, of shape `(batch_size, 1)`, *optional*):
            Whether the audio clip is longer than `max_length`. If `True`, a feature fusion will be enabled to enhance
            the features.

        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoFeatureExtractor, ClapModel

        >>> model = ClapModel.from_pretrained("laion/clap-htsat-unfused")
        >>> feature_extractor = AutoFeatureExtractor.from_pretrained("laion/clap-htsat-unfused")
        >>> random_audio = torch.rand((16_000))

        >>> inputs = feature_extractor(random_audio, return_tensors="pt")
        >>> with torch.inference_mode():
        ...     audio_features = model.get_audio_features(**inputs)
        ```rU  r/   r×   rU   )rv  rw  r«  rz  r{  )rj   r­  r¦  rÓ   rô  Úaudio_outputsÚaudio_featuress          r(   Úget_audio_featureszClapModel.get_audio_featuresá  se   € ð8 5E°DÔ4Dð 5
Ø)°Yð5
ð 5
ØBHð5
ð 5
ˆð ×.Ò.¨}Ô/JÑKÔKˆÝ&'¤k°.ÀbÐ&IÑ&IÔ&IˆÔ#àÐr*   Úreturn_lossc           	      óÐ  —  | j         d
||dœ|¤Ž} | j        d
|||dœ|¤Ž}	|j        }
|                      |
¦  «        }
|	j        }|                      |¦  «        }|
|
                     ddd¬¦  «        z  }
||                     ddd¬¦  «        z  }| j                             ¦   «         }| j                             ¦   «         }t          j
        ||
                     ¦   «         ¦  «        |z  }t          j
        |
|                     ¦   «         ¦  «        |z  }d}|r8t          |¦  «        }t          |                     ¦   «         ¦  «        }||z   dz  }t          |||||
|	|¬	¦  «        S )aÂ  
        is_longer (`torch.FloatTensor`, of shape `(batch_size, 1)`, *optional*):
            Whether the audio clip is longer than `max_length`. If `True`, a feature fusion will be enabled to enhance
            the features.
        return_loss (`bool`, *optional*):
            Whether or not to return the contrastive loss.

        Examples:

        ```python
        >>> from datasets import load_dataset
        >>> from transformers import AutoProcessor, ClapModel

        >>> dataset = load_dataset("hf-internal-testing/ashraq-esc50-1-dog-example")
        >>> audio_sample = dataset["train"]["audio"][0]["array"]

        >>> model = ClapModel.from_pretrained("laion/clap-htsat-unfused")
        >>> processor = AutoProcessor.from_pretrained("laion/clap-htsat-unfused")

        >>> input_text = ["Sound of a dog", "Sound of vacuum cleaner"]

        >>> inputs = processor(text=input_text, audio=audio_sample, return_tensors="pt", padding=True)

        >>> outputs = model(**inputs)
        >>> logits_per_audio = outputs.logits_per_audio  # this is the audio-text similarity score
        >>> probs = logits_per_audio.softmax(dim=-1)  # we can take the softmax to get the label probabilities
        ```rU  ry  r,   r/   T)rò  rÑ   ÚkeepdimNg       @)r[   r\   r]   rK   rX   r^   r_   rU   )rv  rt  r«  rw  ru  r¢   rE  ÚexprB  rA   rØ   ÚtrG   rZ   )rj   rØ  r­  r¦  rÓ   rÊ  rƒ  rô  r€  r|  rX   rK   Úlogit_scale_textÚlogit_scale_audior]   r\   r[   Úcaption_lossÚ
audio_losss                      r(   r‹   zClapModel.forward  s¹  € ðN )˜Ô(ð 
Ø)Øð
ð 
ð ð
ð 
ˆð '�t”ð 
ØØ)Ø%ð
ð 
ð ð	
ð 
ˆð %Ô2ˆØ×,Ò,¨\Ñ:Ô:ˆà"Ô0ˆØ×*Ò*¨;Ñ7Ô7ˆð $ l×&7Ò&7¸!ÀÈTÐ&7Ñ&RÔ&RÑRˆØ! K×$4Ò$4°q¸bÈ$Ð$4Ñ$OÔ$OÑOˆð  Ô-×1Ò1Ñ3Ô3ÐØ Ô.×2Ò2Ñ4Ô4ÐÝœ, {°L·N²NÑ4DÔ4DÑEÔEÐHXÑXˆÝ œ<¨°k·m²m±o´oÑFÔFÐIZÑZÐàˆØð 	5Ý+¨OÑ<Ô<ˆLÝ)Ð*:×*<Ò*<Ñ*>Ô*>Ñ?Ô?ˆJØ  :Ñ-°Ñ4ˆDåØØ-Ø+Ø#Ø%Ø*Ø,ð
ñ 
ô 
ð 	
r*   rV  )NNNNNN)rN   rO   rP   r   rS   ru   r   r   rA   rô   r   r   rT   r   r~  r‚  rí  rR   rX  rõ   rZ   r‹   r�   rŽ   s   @r(   r@  r@  ›  s6  ø€ € € € € € àÐÐÑð˜zð ð ð ð ð ð ð@ Øð /3Ø,0ð	ð à”<ðð œ tÑ+ðð ”l TÑ)ð	ð
 Ð+Ô,ðð 
Ð+Ñ	+ðð ð ñ „^ñ Ôðð@ Øð *.Ø.2ð	 ð  àœð ð ”< $Ñ&ð ð œ tÑ+ð	 ð
 Ð+Ô,ð ð 
Ð+Ñ	+ð ð  ð  ñ „^ñ Ôð ðD Øð .2Ø37Ø-1Ø.2Ø04Ø#'ðP
ð P
àÔ# dÑ*ðP
ð Ô)¨DÑ0ðP
ð Ô# dÑ*ð	P
ð
 œ tÑ+ðP
ð Ô&¨Ñ-ðP
ð ˜D‘[ðP
ð Ð+Ô,ðP
ð 
�Ñ	ðP
ð P
ð P
ñ „^ñ ÔðP
ð P
ð P
ð P
ð P
r*   r@  c                   óà   ‡ — e Zd ZU eed<   dZeedœZdefˆ fd„Z	de
j        fd„Zd„ Zee	 	 	 dd	ej        dz  d
ej        dz  dej        dz  dee         deez  f
d„¦   «         ¦   «         Zˆ xZS )ÚClapTextModelWithProjectionrm   r[  r\  c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rb   )rt   ru   rZ  rt  r¾  ru  rQ  r×  s     €r(   ru   z$ClapTextModelWithProjection.__init__c  sP   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý'¨Ñ/Ô/ˆŒÝ2°6Ñ:Ô:ˆÔà�ŠÑÔÐÐÐr*   r=   c                 ó$   — | j         j        j        S rb   ©rt  rä  rÑ  ri   s    r(   rS  z0ClapTextModelWithProjection.get_input_embeddingsj  s   € ØŒÔ)Ô9Ð9r*   c                 ó(   — || j         j        _        d S rb   r�  rd  s     r(   re  z0ClapTextModelWithProjection.set_input_embeddingsm  s   € Ø5:ˆŒÔ"Ô2Ð2Ð2r*   NrØ  rÓ   rÊ  rô  c                 ó    —  | j         d|||dœ|¤Ž}|j        }|                      |¦  «        }t          ||j        |j        |j        ¬¦  «        S )aò  
        Examples:

        ```python
        >>> from transformers import AutoTokenizer, ClapTextModelWithProjection

        >>> model = ClapTextModelWithProjection.from_pretrained("laion/clap-htsat-unfused")
        >>> tokenizer = AutoTokenizer.from_pretrained("laion/clap-htsat-unfused")

        >>> inputs = tokenizer(["a sound of a cat", "a sound of a dog"], padding=True, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> text_embeds = outputs.text_embeds
        ```ry  )rK   rL   r"   rM   rU   )rt  r«  ru  rJ   rL   r"   rM   )rj   rØ  rÓ   rÊ  rô  r|  r0  rK   s           r(   r‹   z#ClapTextModelWithProjection.forwardp  s~   € ð. 4C°4´?ð 4
ØØ)Ø%ð4
ð 4
ð ð	4
ð 4
ˆð %Ô2ˆØ×*Ò*¨=Ñ9Ô9ˆå"Ø#Ø*Ô<Ø&Ô4Ø#Ô.ð	
ñ 
ô 
ð 	
r*   )NNN)rN   rO   rP   r   rS   rI  r  rù  rl  ru   r   rL  rS  re  r   r   rA   rô   r   r   rT   rJ   r‹   r�   rŽ   s   @r(   r�  r�  Z  s#  ø€ € € € € € àÐÐÑØ Ðà&Ø+ðð Ðð
˜~ð ð ð ð ð ð ð: b¤ið :ð :ð :ð :ð;ð ;ð ;ð Øð *.Ø.2Ø,0ð	#
ð #
à”< $Ñ&ð#
ð œ tÑ+ð#
ð ”l TÑ)ð	#
ð
 Ð+Ô,ð#
ð 
Ð$Ñ	$ð#
ð #
ð #
ñ „^ñ Ôð#
ð #
ð #
ð #
ð #
r*   r�  c                   ó¾   ‡ — e Zd ZU eed<   dZdZdefˆ fd„Zdej	        fd„Z
ee	 	 ddej        dz  dej        dz  d	ee         deez  fd
„¦   «         ¦   «         Zˆ xZS )ÚClapAudioModelWithProjectionrm   r­  r4  c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rb   )rt   ru   rN  rv  r¾  rw  rQ  r×  s     €r(   ru   z%ClapAudioModelWithProjection.__init__ž  sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý)¨&Ñ1Ô1ˆÔÝ 3°FÑ ;Ô ;ˆÔà�ŠÑÔÐÐÐr*   r=   c                 ó.   — | j         j        j        j        S rb   )rv  rP  r�  rž   ri   s    r(   rS  z1ClapAudioModelWithProjection.get_input_embeddings¥  s   € ØÔÔ-Ô9Ô>Ð>r*   Nr¦  rô  c                 óš   —  | j         d||dœ|¤Ž}|                      |j        ¦  «        }t          ||j        |j        |j        ¬¦  «        S )au  
        is_longer (`torch.FloatTensor`, of shape `(batch_size, 1)`, *optional*):
            Whether the audio clip is longer than `max_length`. If `True`, a feature fusion will be enabled to enhance
            the features.

        Examples:

        ```python
        >>> from datasets import load_dataset
        >>> from transformers import ClapAudioModelWithProjection, ClapProcessor

        >>> model = ClapAudioModelWithProjection.from_pretrained("laion/clap-htsat-fused")
        >>> processor = ClapProcessor.from_pretrained("laion/clap-htsat-fused")

        >>> dataset = load_dataset("hf-internal-testing/ashraq-esc50-1-dog-example")
        >>> audio_sample = dataset["train"]["audio"][0]["array"]

        >>> inputs = processor(audio=audio_sample, return_tensors="pt")
        >>> outputs = model(**inputs)
        >>> audio_embeds = outputs.audio_embeds
        ```rU  )rX   rL   rM   r"   rU   )rv  rw  r«  rW   rL   rM   r"   )rj   r­  r¦  rô  r€  rX   s         r(   r‹   z$ClapAudioModelWithProjection.forward¨  sw   € ð: 5E°DÔ4Dð 5
Ø)Øð5
ð 5
ð ð5
ð 5
ˆð ×,Ò,¨]Ô-HÑIÔIˆå#Ø%Ø+Ô=Ø$Ô/Ø'Ô5ð	
ñ 
ô 
ð 	
r*   rV  )rN   rO   rP   r   rS   rW  rI  ru   r   rL  rS  r   r   rA   rR   rX  r   r   rT   rW   r‹   r�   rŽ   s   @r(   r”  r”  ˜  sô   ø€ € € € € € àÐÐÑØ&€OØÐð˜ð ð ð ð ð ð ð? b¤ið ?ð ?ð ?ð ?ð Øð 48Ø-1ð(
ð (
àÔ)¨DÑ0ð(
ð Ô# dÑ*ð(
ð Ð+Ô,ð	(
ð
 
Ð%Ñ	%ð(
ð (
ð (
ñ „^ñ Ôð(
ð (
ð (
ð (
ð (
r*   r”  )r@  r2  rZ  r�  rN  r”  r)  )[rQ   rÀ   rÙ   Úcollections.abcr   Údataclassesr   Útypingr   rA   Útorch.nn.functionalr   rD   rz  Ú r   r;  Úactivationsr	   Úmasking_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_clapr   r   r   Ú
get_loggerrN   Úloggerr)   r9   r;   rô   rG   rJ   rW   rZ   rL  rl   r�   rµ   r÷   r  r  r  r  r,  re  ry  r„  r¾  rÇ  r*  r÷  rù  r  r  r  r  r  r$  r+  r2  rN  rZ  r@  r�  r”  Ú__all__rU   r*   r(   ú<module>r«     s	  ðð Ð à Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð"ð ð ð*ð ð ð*7˜Uœ\ð 7¨e¬lð 7ð 7ð 7ð 7ð
 €ððñ ô ð
 ð	<ð 	<ð 	<ð 	<ð 	<˜+ñ 	<ô 	<ñ „ñô ð	<ð €ððñ ô ð
 ð	<ð 	<ð 	<ð 	<ð 	<˜;ñ 	<ô 	<ñ „ñô ð	<ð Ø
ð_ð _ð _ð _ð _�ñ _ô _ñ „ñ „ð_ðB%ð %ð %ð %ð %˜œ	ñ %ô %ð %ðP_ð _ð _ð _ð _˜"œ)ñ _ô _ð _ðFZ'ð Z'ð Z'ð Z'ð Z'˜RœYñ Z'ô Z'ð Z'ð|
ð 
ð 
ð 
ð 
˜"œ)ñ 
ô 
ð 
ðð ð ð ð ˜œñ ô ð ð&ð ð ð ð ˜BœIñ ô ð ð 	ð 	ð 	ð 	ð 	�b”iñ 	ô 	ð 	ð%ð %ð %ð %ð %�2”9ñ %ô %ð %ð2tð tð tð tð t�R”Yñ tô tð tðp4ð 4ð 4ð 4ð 4Ð/ñ 4ô 4ð 4ðp%ð %ð %ð %ð %˜BœIñ %ô %ð %ðPv
ð v
ð v
ð v
ð v
�r”yñ v
ô v
ð v
ðrð ð ð ð ˜"œ)ñ ô ð ð&g8ð g8ð g8ð g8ð g8˜œñ g8ô g8ð g8ðd ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.3)ð 3)ð 3)ð 3)ð 3)˜BœIñ 3)ô 3)ð 3)ðnð ð ð ð ˜œñ ô ð ðð ð ð ð ˜œ	ñ ô ð ð.ð ð ð ð ˜2œ9ñ ô ð ð ð ð ð ð �R”Yñ ô ð ðð ð ð ð Ð.ñ ô ð ðD
ð 
ð 
ð 
ð 
�b”iñ 
ô 
ð 
ð4ð ð ð ð �R”Yñ ô ð ð ð`ð `ð `ð `ð `˜/ñ `ô `ñ „ð`ð@/
ð /
ð /
ð /
ð /
Ð(ñ /
ô /
ð /
ðd €ððñ ô ðR
ð R
ð R
ð R
ð R
Ð'ñ R
ô R
ñô ðR
ðj ð{
ð {
ð {
ð {
ð {
Ð#ñ {
ô {
ñ „ð{
ð| ð:
ð :
ð :
ð :
ð :
Ð"5ñ :
ô :
ñ „ð:
ðz ð9
ð 9
ð 9
ð 9
ð 9
Ð#6ñ 9
ô 9
ñ „ð9
ðxð ð €€€r*   