Ë
    cQêj´S  ã                   ó  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dl	mZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZ d dlmZ  e j<                  e«      Z  G d„ de
jB                  jD                  «      Z#y)é    N)Úchain)ÚPath)Úconvert_float_to_float16)ÚRepeatedCompositeFieldContainer)Ú
ModelProtoÚValueInfoProto)Ú	OnnxModel)ÚPastKeyValuesHelper)ÚWhisperConfig)Úconvert_inputs_for_ortÚget_model_dynamic_axesÚget_sample_decoder_inputsÚgroup_past_key_values)ÚInferenceSessionc                   ób  ‡ — e Zd ZdZd%dedej                  j                  dede	fˆ fd„Z
	 	 d&dej                  d	ej                  dz  d
eeej                        dz  fd„Z	 	 d&dej                  d	ej                  dz  d
eeej                        dz  fd„Z	 	 d&dej                  d	ej                  dz  d
eeej                        dz  fd„Zd„ Zd„ Zd„ Zd%de	de	de	fd„Zd'dede	de	fd„Zd%dede	fd„Zdefd„Zdede	fd„Z	 	 	 	 	 	 d(dedede	d e	de	de	d!e	d"e	fd#„Zdedede	de	fd$„Zˆ xZS ))ÚWhisperDecoderz/A Whisper decoder with optional past key valuesÚconfigÚmodelÚ
model_implÚno_beam_search_opc                 óº  •— t         ‰| �  «        || _        |j                  | _        || _        || _        |dk(  rd n|j                  j                  | _        |dk(  rd n|j                  | _        |dk(  r|nd | _        | j                  j                  | _	        | j                  j                  | _        | j                  j                  | j                  z  | _        y ©NÚopenai)ÚsuperÚ__init__r   Údevicer   r   r   ÚdecoderÚproj_outÚmax_source_positionsÚdecoder_attention_headsÚ	num_headsÚd_modelÚ	head_size)Úselfr   r   r   r   Ú	__class__s        €ú|/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/transformers/models/whisper/whisper_decoder.pyr   zWhisperDecoder.__init__%   sª   ø€ Ü‰ÑÔØˆŒØ—l‘lˆŒØ$ˆŒØ!2ˆÔà)¨XÒ5‘t¸5¿;¹;×;NÑ;NˆŒØ *¨hÒ 6™¸E¿N¹NˆŒØ(¨HÒ4‘U¸$ˆŒ
à$(§K¡K×$DÑ$DˆÔ!ØŸ™×<Ñ<ˆŒØŸ™×,Ñ,°·±Ñ>ˆ�ó    NÚdecoder_input_idsÚencoder_hidden_statesÚpast_key_valuesc                 ó¾   — | j                  |||d¬«      }| j                  |j                  «      }|j                  }|€||fS t	        j
                  |«      \  }}||fS )NT)r)   Ú	input_idsr*   Ú	use_cache)r   r   Úlast_hidden_stater*   r
   Úgroup_by_self_and_cross)	r$   r(   r)   r*   ÚoutputsÚlogitsÚpresent_key_valuesÚpresent_selfÚpresent_crosss	            r&   Ú
hf_forwardzWhisperDecoder.hf_forward4   s|   € ð —,‘,Ø"7Ø'Ø+Øð	 ó 
ˆð —‘˜w×8Ñ8Ó9ˆØ$×4Ñ4ÐàÐ"àÐ-Ð-Ð-ô ':×&QÑ&QÐRdÓ&eÑ#ˆ�mð �|Ð#Ð#r'   c           	      óÎ  — i }|��_t        |«      \  }}|D �cg c]  }|j                  dd«      ‘Œ }}|D �cg c]%  }|j                  g |j                  d d ¢d‘­«      ‘Œ' }}|D �cg c]  }|j                  dd«      ‘Œ }}|D �cg c]%  }|j                  g |j                  d d ¢d‘­«      ‘Œ' }}t	        | j
                  j                  j                  «      D ]‡  \  }}	|d|z     ||	j                  j                  <   |d|z  dz      ||	j                  j                  <   |d|z     ||	j                  j                  <   |d|z  dz      ||	j                  j                  <   Œ‰ | j
                  j                  «       \  }
}| j
                  j                  |||¬«      }|�ý| j
                  j                  j                  D ]Ú  }	t        j                  ||	j                  j                     |
|	j                  j                     gd¬«      j                  «       |
|	j                  j                  <   t        j                  ||	j                  j                     |
|	j                  j                     gd¬«      j                  «       |
|	j                  j                  <   ŒÜ g g }}| j
                  j                  j                  D ]¥  }	|j!                  |
|	j                  j                     «       |j!                  |
|	j                  j                     «       |�ŒV|j!                  |
|	j                  j                     «       |j!                  |
|	j                  j                     «       Œ§ |D �cg c]A  }|j                  g |j                  d d ¢d‘| j"                  ‘­«      j                  dd«      ‘ŒC }}|D �cg c]A  }|j                  g |j                  d d ¢d‘| j"                  ‘­«      j                  dd«      ‘ŒC }}|D ]  }|j%                  «        Œ |€)t'        j(                  ||z   t+        |«      dz  «      }||fS ||fS c c}w c c}w c c}w c c}w c c}w c c}w )Né   é   éÿÿÿÿ)ÚxÚxaÚkv_cache)Údim)r   Ú	transposeÚreshapeÚshapeÚ	enumerater   r   ÚblocksÚattnÚkeyÚvalueÚ
cross_attnÚinstall_kv_cache_hooksÚtorchÚcatÚdetachÚappendr#   Úremover
   Úgroup_by_layerÚlen)r$   r(   r)   r*   Úpast_kv_cacheÚself_attn_kv_cachesÚcross_attn_kv_cachesÚpast_kvÚidxÚblockr<   Úhooksr1   r3   r4   Ú
present_kvÚhookr2   s                     r&   Úoai_forwardzWhisperDecoder.oai_forwardP   sI  € ð ˆØÑ&ä8MÈoÓ8^Ñ5ÐÐ!5ØJ]Ö"^¸w 7×#4Ñ#4°Q¸Õ#:Ð"^ÐÐ"^Ø\oÖ"pÐQX 7§?¡?Ð3K°W·]±]À2ÀAÐ5FÐ3KÈÑ3KÕ#LÐ"pÐÐ"pØK_Ö#`À G×$5Ñ$5°a¸Õ$;Ð#`Ð Ð#`Ø]qÖ#rÐRY G§O¡OÐ4L°g·m±mÀBÀQÐ6GÐ4LÈÑ4LÕ$MÐ#rÐ Ð#rä'¨¯
©
×(:Ñ(:×(AÑ(AÓBò Z‘
��UØ0CÀAÈÁGÑ0L�˜eŸj™jŸn™nÑ-Ø2EÀaÈ#ÁgÐPQÁkÑ2R�˜eŸj™j×.Ñ.Ñ/Ø6JÈ1ÈsÉ7Ñ6S�˜e×.Ñ.×2Ñ2Ñ3Ø8LÈQÐQTÉWÐWXÉ[Ñ8Y�˜e×.Ñ.×4Ñ4Ò5ð	Zð Ÿ*™*×;Ñ;Ó=‰ˆ�%ð —‘×#Ñ#Ð&7Ð<QÐ\iÐ#Ójˆð Ð&ØŸ™×+Ñ+×2Ñ2ò �Ü+0¯9©9Ø" 5§:¡:§>¡>Ñ2°H¸U¿Z¹Z¿^¹^Ñ4LÐMÐSTô,ç‘&“(ð ˜Ÿ™Ÿ™Ñ(ô .3¯Y©YØ" 5§:¡:×#3Ñ#3Ñ4°h¸u¿z¹z×?OÑ?OÑ6PÐQÐWXô.ç‘&“(ð ˜Ÿ™×)Ñ)Ò*ð	ð ')¨"�mˆØ—Z‘Z×'Ñ'×.Ñ.ò 	GˆEà×Ñ ¨¯©¯©Ñ 8Ô9Ø×Ñ ¨¯©×)9Ñ)9Ñ :Ô;ØÑ&à×$Ñ$ X¨e×.>Ñ.>×.BÑ.BÑ%CÔDØ×$Ñ$ X¨e×.>Ñ.>×.DÑ.DÑ%EÕFð	Gð +ö
àð ×ÑÐJ ×!1Ñ!1°"°1Ð!5ÐJ°rÐJ¸4¿>¹>ÑJÓK×UÑUÐVWÐYZÕ[ð
ˆð 
ð ,ö
àð ×ÑÐJ ×!1Ñ!1°"°1Ð!5ÐJ°rÐJ¸4¿>¹>ÑJÓK×UÑUÐVWÐYZÕ[ð
ˆð 
ð ò 	ˆDØ�K‰K�Mð	ð Ð"ä!4×!CÑ!CØ˜}Ñ,¬c°,Ó.?À1Ñ.Dó"Ðð Ð-Ð-Ð-ð �|Ð#Ð#ùò] #_ùÚ"pùÚ#`ùÚ#rùòl
ùò
s$   ˜Q	·*QÁ'QÂ*QÍ/AQÎ;AQ"c                 ól   — | j                   dk(  r| j                  |||«      S | j                  |||«      S r   )r   rX   r5   )r$   r(   r)   r*   s       r&   ÚforwardzWhisperDecoder.forwardª   s<   € ð �?‰?˜hÒ&Ø×#Ñ#Ð$5Ð7LÈoÓ^Ð^Ø�‰Ð0Ð2GÈÓYÐYr'   c           	      ó¶   — | j                   rddg}|S ddgt        t        j                  d„ t	        | j
                  j                  «      D «       «      «      ¢}|S )Nr,   r)   c              3   ó@   K  — | ]  }d |› �d|› �d|› �d|› �f–— Œ y­w)Úpast_key_self_Úpast_value_self_Úpast_key_cross_Úpast_value_cross_N© ©Ú.0Úis     r&   ú	<genexpr>z-WhisperDecoder.input_names.<locals>.<genexpr>¼   sC   è ø€ ò (àð *¨!¨Ð-Ð1AÀ!ÀÐ/EÈÐYZÐX[ÐG\Ð`qÐrsÐqtÐ^uÔvñ(ùó   ‚©Ú
first_passÚlistr   Úfrom_iterableÚranger   Údecoder_layers)r$   Úinput_namess     r&   rm   zWhisperDecoder.input_names´   sl   € Ø�?Š?Ø&Ð(?Ð@ˆKð Ðð Ø'ð	ô Ü×'Ñ'ñ (ä!& t§{¡{×'AÑ'AÓ!Bô(ó óð	ˆKð Ðr'   c           	      ó6  — | j                   rGdgt        t        j                  d„ t	        | j
                  j                  «      D «       «      «      ¢}|S dgt        t        j                  d„ t	        | j
                  j                  «      D «       «      «      ¢}|S )Nr1   c              3   ó@   K  — | ]  }d |› �d|› �d|› �d|› �f–— Œ y­w)Úpresent_key_self_Úpresent_value_self_Úpresent_key_cross_Úpresent_value_cross_Nra   rb   s     r&   re   z.WhisperDecoder.output_names.<locals>.<genexpr>É   sD   è ø€ ò (ð ð 0°¨sÐ3Ø1°!°Ð5Ø0°°Ð4Ø2°1°#Ð6ô	ñ(ùrf   c              3   ó0   K  — | ]  }d |› �d|› �f–— Œ y­w)rp   rq   Nra   rb   s     r&   re   z.WhisperDecoder.output_names.<locals>.<genexpr>Ø   s*   è ø€ ò (ØQRÐ,¨Q¨CÐ0Ð4GÈÀsÐ2KÔLñ(ùs   ‚rg   )r$   Úoutput_namess     r&   ru   zWhisperDecoder.output_namesÄ   s¢   € Ø�?Š?àðäÜ×'Ñ'ñ (ô "' t§{¡{×'AÑ'AÓ!Bô(ó ó
ðˆLð. Ðð ðäÜ×'Ñ'ñ (ÜV[Ð\`×\gÑ\g×\vÑ\vÓVwô(ó óðˆLð Ðr'   c                 ó`   — t        | j                  ||«      }d|v r| j                  s|d   d= |S )Nr,   r7   )r   r   r   )r$   rm   ru   Údynamic_axess       r&   rw   zWhisperDecoder.dynamic_axesß   s7   € Ü-¨d¯k©k¸;ÈÓUˆØ˜,Ñ&¨t×/EÒ/Eà˜[Ñ)¨!Ð,ØÐr'   Úuse_fp16_inputsÚuse_int32_inputsÚreturn_dictc           	      óô   — t        | j                  | j                  d| j                  rdnd| j                  rdnd||¬«      }|r| j                  r|d= |S | j                  r
|d   |d   fS |d   |d   |d   fS )	Nr8   r   é   r7   )Ú
batch_sizeÚpast_sequence_lengthÚsequence_lengthÚuse_fp16Ú	use_int32r*   r(   r)   )r   r   r   rh   )r$   rx   ry   rz   Úinputss        r&   r‚   zWhisperDecoder.inputsæ   s�   € Ü*Ø�K‰KØ�K‰KØØ'+§¢¡!¸AØ"&§/¢/™Q°qØ$Ø&ô
ˆñ Ø�ŠØÐ,Ð-ØˆMà�?Š?àÐ*Ñ+ØÐ.Ñ/ðð ð
 Ð&Ñ'ØÐ*Ñ+ØÐ$Ñ%ð
ð 	
r'   ÚioÚis_crossÚ	is_outputc                 óJ  — |j                   j                  j                  j                  d   }d|j                  v r!|j                  «        | j                  |_        |j                   j                  j                  j                  d   }d|j                  v r/|j                  «        |r| j                  |_        n|rdnd|_        |j                   j                  j                  j                  d   }d|j                  v r!|j                  «        | j                  |_        |S )Nr7   Ú_dim_r8   Útotal_sequence_lengthr~   é   )
ÚtypeÚtensor_typer@   r=   Ú	dim_paramÚClearr!   Ú	dim_valuer   r#   )r$   rƒ   r„   r…   r!   r   r#   s          r&   Úfix_key_value_cache_dimsz'WhisperDecoder.fix_key_value_cache_dims   sê   € ð —G‘G×'Ñ'×-Ñ-×1Ñ1°!Ñ4ˆ	Ø�i×)Ñ)Ñ)Ø�O‰OÔØ"&§.¡.ˆIÔØŸ'™'×-Ñ-×3Ñ3×7Ñ7¸Ñ:ˆØ�o×/Ñ/Ñ/Ø×!Ñ!Ô#ÙØ,0×,EÑ,E�Õ)áGPÑ,CÐVl�Ô)Ø—G‘G×'Ñ'×-Ñ-×1Ñ1°!Ñ4ˆ	Ø�i×)Ñ)Ñ)Ø�O‰OÔØ"&§.¡.ˆIÔØˆ	r'   Úio_listc                 óÎ  — g }g }g }|D ]Å  }d|j                   vr d|j                   vr|j                  |«       Œ1d|j                   v rD| j                  |d|¬«      }| j                  r|j                  |«       Œq|j                  |«       Œƒ| j                  |d|¬«      }| j                  r|j                  |«       Œµ|j                  |«       ŒÇ | j                  s|||z   z  }|S )NÚpastÚpresentr$   F)r„   r…   T)ÚnamerK   r�   r   )r$   r�   r…   Úreordered_iorP   rQ   rƒ   Únew_ios           r&   Úfix_iozWhisperDecoder.fix_io  sñ   € àˆØ ÐØ!Ðàò 	8ˆBØ˜RŸW™WÑ$¨¸"¿'¹'Ñ)AØ×#Ñ# BÕ'Ø˜2Ÿ7™7Ñ"à×6Ñ6°rÀEÐU^Ð6Ó_�Ø×)Ò)Ø ×'Ñ'¨Õ/à'×.Ñ.¨vÕ6ð ×6Ñ6°rÀDÐT]Ð6Ó^�Ø×)Ò)Ø ×'Ñ'¨Õ/à(×/Ñ/°Õ7ð!	8ð$ ×%Ò%ØÐ/Ð2FÑFÑFˆLØÐr'   c                 óÚ  — | j                  |j                  j                  d¬«      }t        |j                  j                  «      dkD  rG|j                  j                  j	                  «        t        |j                  j                  «      dkD  rŒG|j                  j                  j                  |«       | j                  |j                  j                  d¬«      }t        |j                  j                  «      dkD  rG|j                  j                  j	                  «        t        |j                  j                  «      dkD  rŒG|j                  j                  j                  |«       |S )NF)r…   r   T)r—   ÚgraphÚinputrN   ÚpopÚextendÚoutput)r$   r   Úreordered_inputsÚreordered_outputss       r&   Úfix_inputs_and_outputsz%WhisperDecoder.fix_inputs_and_outputs0  s  € ð  Ÿ;™; u§{¡{×'8Ñ'8ÀE˜;ÓJÐÜ�%—+‘+×#Ñ#Ó$ qÒ(Ø�K‰K×Ñ×!Ñ!Ô#ô �%—+‘+×#Ñ#Ó$ qÓ(à�‰×Ñ× Ñ Ð!1Ô2à ŸK™K¨¯©×(:Ñ(:Àd˜KÓKÐÜ�%—+‘+×$Ñ$Ó%¨Ò)Ø�K‰K×Ñ×"Ñ"Ô$ô �%—+‘+×$Ñ$Ó%¨Ó)à�‰×Ñ×!Ñ!Ð"3Ô4Øˆr'   c                 ó>   — | j                   dk(  r|rt        |«      }|S r   )r   r   )r$   r   rx   s      r&   Úfix_layernorm_weightsz$WhisperDecoder.fix_layernorm_weights>  s!   € Ø�?‰?˜hÒ&©?ô -¨UÓ3ˆEØˆr'   Úonnx_model_pathÚproviderÚverboseÚuse_external_data_formatÚuse_encoder_hidden_statesÚuse_kv_cache_inputsc	                 óT  — |xr | | _         | xr || _        | j                   s| j                  sJ d«       ‚| j                  ||¬«      }	| j                  «       }
| j	                  «       }| j                  |
|«      }t        |«      j                  j                  dd¬«       t        j                  «       5 }t        j                  j                  |d«      }t        |«      j                  j                  dd¬«       |r|n|}t        j                  j!                  | |	|d|
||ddd|¬«       t        j"                  ||¬	«      }| j%                  |«      }| j'                  ||«      }t)        j*                  |||d¬
«       ddd«       | j-                  ||||«       y# 1 sw Y   ŒxY w)al  Export decoder to ONNX

        Args:
            onnx_model_path (str): path to save ONNX model
            provider (str): provider to use for verifying parity on ONNX model
            verbose (bool, optional): print verbose information. Defaults to True.
            use_external_data_format (bool, optional): use external data format or not. Defaults to False.
            use_fp16_inputs (bool, optional): use float16 inputs for the KV caches. Defaults to False.
            use_int32_inputs (bool, optional): use int32 inputs for the decoder_input_ids. Defaults to True.
            use_encoder_hidden_states (bool, optional): use encoder_hidden_states as model input for decoder-init/decoder-without-past models. Defaults to False.
            use_kv_cache_inputs (bool, optional): use KV caches as model inputs for decoder-with-past models. Defaults to True.
        zVOnly one of `use_encoder_hidden_states` and `use_kv_cache_inputs` can be true at once.)rx   ry   T)ÚparentsÚexist_okzdecoder.onnxé   F)
ÚargsÚfÚexport_paramsrm   ru   rw   Úopset_versionÚdo_constant_foldingÚdynamor¥   )Úload_external_data)Úsave_as_external_dataÚall_tensors_to_one_fileN)rh   Ú
later_passr‚   rm   ru   rw   r   ÚparentÚmkdirÚtempfileÚTemporaryDirectoryÚosÚpathÚjoinrH   ÚonnxÚexportÚ
load_modelr    r¢   r	   ÚsaveÚverify_onnx)r$   r£   r¤   r¥   r¦   rx   ry   r§   r¨   r‚   rm   ru   rw   Útmp_dir_nameÚtemp_onnx_model_pathÚout_pathr   s                    r&   Úexport_onnxzWhisperDecoder.export_onnxJ  s¢  € ðH 4ÒOÐ<OÐ8OˆŒð 8Ð7ÒOÐ<OˆŒà�Š $§/¢/ð 	
Ødó	
Ð1ð —‘¨_ÐO_�Ó`ˆØ×&Ñ&Ó(ˆØ×(Ñ(Ó*ˆØ×(Ñ(¨°lÓCˆäˆ_Ó×$Ñ$×*Ñ*°4À$Ð*ÔGÜ×(Ñ(Ó*ð 	¨lÜ#%§7¡7§<¡<°¸nÓ#MÐ ÜÐ%Ó&×-Ñ-×3Ñ3¸DÈ4Ð3ÔPÙ/GÑ+È_ˆHä�J‰J×ÑØØØØ"Ø'Ø)Ø)Ø Ø$(ØØð ô ô —O‘O HÐAYÔZˆEØ×/Ñ/°Ó6ˆEØ×.Ñ.¨u°oÓFˆEÜ�N‰NØØØ&>Ø(,õ	÷-	ð: 	×Ñ˜¨(°OÐEUÕV÷;	ð 	ús   Â7C
FÆF'c                 ó  — | j                  ||d¬«      }g }| j                  r� | j                  d
i |¤Ž}|j                  |d   j	                  «       j                  «       j                  «       «       |d   D ]D  }|D ]=  }	|j                  |	j	                  «       j                  «       j                  «       «       Œ? ŒF n• | j                  d
i |¤Ž}|j                  |d   j	                  «       j                  «       j                  «       «       |d   D ]=  }
|j                  |
j	                  «       j                  «       j                  «       «       Œ? t        ||g¬«      }|j                  dt        ||«      «      }	 t        | j                  «       «      D ]g  \  }}t        j                  ||   ||   z
  «      }t        j                  d|› d�«       t        j                  d	t        j                   |«      › �«       Œi y#  Y yxY w)aw  Verify ONNX model outputs and PyTorch model outputs match

        Args:
            onnx_model_path (str): path to save ONNX model
            provider (str): execution provider for ONNX model
            use_fp16_inputs (bool, optional): use float16 inputs for the KV caches
            use_int32_inputs (bool, optional): use int32 inputs for the decoder_input_ids
        T)rx   ry   rz   r   r7   )Ú	providersNz
Comparing z...z
Max diff: ra   )r‚   rh   rZ   rK   rJ   ÚcpuÚnumpyr   Úrunr   rA   ru   ÚnpÚabsÚloggerÚwarningÚmax)r$   r£   r¤   rx   ry   r‚   Ú
pt_outputsÚoutÚpresent_key_value_layerÚpresent_key_valueÚpresent_self_key_valueÚsessÚort_outputsrd   Úoutput_nameÚdiffs                   r&   rÂ   zWhisperDecoder.verify_onnxœ  s×  € ð8 —‘¨_ÐO_Ðmq�ÓrˆØˆ
Ø�?Š?Ø�$—,‘,Ñ( Ñ(ˆCØ×Ñ˜c !™fŸm™m›o×1Ñ1Ó3×9Ñ9Ó;Ô<Ø+.¨q©6ò PÐ'Ø)@ò PÐ%Ø×%Ñ%Ð&7×&>Ñ&>Ó&@×&DÑ&DÓ&F×&LÑ&LÓ&NÕOñPñPð �$—,‘,Ñ( Ñ(ˆCØ×Ñ˜c !™fŸm™m›o×1Ñ1Ó3×9Ñ9Ó;Ô<Ø*-¨a©&ò QÐ&Ø×!Ñ!Ð"8×"?Ñ"?Ó"A×"EÑ"EÓ"G×"MÑ"MÓ"OÕPðQô   ¸H¸:ÔFˆØ—h‘h˜tÔ%;¸FÀDÓ%IÓJˆð	Ü"+¨D×,=Ñ,=Ó,?Ó"@ò <‘��;Ü—v‘v˜j¨™m¨k¸!©nÑ<Ó=�Ü—‘ ¨K¨=¸Ð<Ô=Ü—‘ ¬B¯F©F°4«L¨>Ð:Õ;ñ<øð	Ùús   Æ BH ÈH)F)NN)FF)TFFTFT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rH   ÚnnÚModuleÚstrÚboolr   ÚTensorri   Útupler5   rX   rZ   rm   ru   rw   r‚   r   r�   r   r—   r   r    r¢   rÆ   rÂ   Ú__classcell__)r%   s   @r&   r   r   "   s2  ø„ Ù9ñ?˜}ð ?°U·X±X·_±_ð ?ÐRUð ?Ðjnõ ?ð$ 6:Ø<@ñ	$à Ÿ<™<ð$ð  %Ÿ|™|¨dÑ2ð$ð ˜e E§L¡LÑ1Ñ2°TÑ9ó	$ð> 6:Ø<@ñ	X$à Ÿ<™<ðX$ð  %Ÿ|™|¨dÑ2ðX$ð ˜e E§L¡LÑ1Ñ2°TÑ9ó	X$ðz 6:Ø<@ñ	Zà Ÿ<™<ðZð  %Ÿ|™|¨dÑ2ðZð ˜e E§L¡LÑ1Ñ2°TÑ9ó	Zòò ò6ñ
 dð 
¸dð 
ÐQUó 
ñ4¨>ð ÀTð Ð^bó ñ(Ð=ð È$ó ð8¨Jó ð
¨:ð 
Èó 
ð  Ø).Ø %Ø!%Ø*/Ø$(ñPWàðPWð ðPWð ð	PWð
 #'ðPWð ðPWð ðPWð $(ðPWð "óPWðd5àð5ð ð5ð ð	5ð
 ÷5r'   r   )$Úloggingr»   r¹   Ú	itertoolsr   Úpathlibr   rÊ   rÌ   r¾   rH   Úfloat16r   Ú#google.protobuf.internal.containersr   r   r   Ú
onnx_modelr	   Úpast_helperr
   Útransformersr   Úwhisper_inputsr   r   r   r   Úonnxruntimer   Ú	getLoggerrÚ   rÎ   rÞ   rß   r   ra   r'   r&   ú<module>rð      sh   ðó Û 	Û Ý Ý ã Û Û Ý ,Ý Oß +Ý  Ý +Ý &÷ó õ )à	ˆ×	Ñ	˜8Ó	$€ôo�U—X‘X—_‘_õ or'   