§
    m�’jŒ- ã                   ó`  — 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m	Z	m
Z
mZmZmZmZ ddlmZmZ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¢Zeg d¢z   Z d§d„Z!de"de#fd„Z$d¨dee#         dz  fd„Z% G d„ d¦  «        Z& G d„ de&¦  «        Z'de#de"fd„Z( G d„ d¦  «        Z) G d„ de)¦  «        Z* G d„ de)¦  «        Z+ G d „ d!e)¦  «        Z, G d"„ d#e)¦  «        Z- G d$„ d%e)¦  «        Z. G d&„ d'e)¦  «        Z/ G d(„ d)e)¦  «        Z0 G d*„ d+e)¦  «        Z1 G d,„ d-e)¦  «        Z2 G d.„ d/e)¦  «        Z3 G d0„ d1e)¦  «        Z4 G d2„ d3e)¦  «        Z5 G d4„ d5e5¦  «        Z6 G d6„ d7e5¦  «        Z7 G d8„ d9e5¦  «        Z8 G d:„ d;e5¦  «        Z9 G d<„ d=e5¦  «        Z: G d>„ d?e5¦  «        Z; G d@„ dAe5¦  «        Z< G dB„ dCe5¦  «        Z= G dD„ dEe5¦  «        Z> G dF„ dGe5¦  «        Z? G dH„ dIe5¦  «        Z@ G dJ„ dKe5¦  «        ZA G dL„ dMe5¦  «        ZB G dN„ dOe5¦  «        ZC G dP„ dQe5¦  «        ZD G dR„ dSe5¦  «        ZE G dT„ dUeD¦  «        ZF G dV„ dWe)¦  «        ZG G dX„ dYe5¦  «        ZH G dZ„ d[e)¦  «        ZI G d\„ d]e)¦  «        ZJ G d^„ d_e)¦  «        ZK G d`„ dae5¦  «        ZL G db„ dce5¦  «        ZM G dd„ dee5¦  «        ZN G df„ dge)¦  «        ZO G dh„ die5¦  «        ZP G dj„ dke5¦  «        ZQ G dl„ dme5¦  «        ZRdn„ ZS G do„ dp¦  «        ZTi dqe6“dre2“dse7“dte*“dueH“dveK“dwe8“dxeI“dye/“dze*“d{e4“d|e9“d}e*“d~e*“de*“d€e*“d�e*“i d‚e6“dƒe,“d„e/“d…e0“d†e*“d‡e*“dˆe2“d‰e>“dŠe2“d‹e2“dŒe*“d�eO“dŽe:“d�e;“d�e-“d‘e*“d’e2“¥i d“e<“d”e.“d•eC“d–e1“d—e@“d˜eA“d™e2“dše3“d›e=“dœe*“d�eD“džeE“dŸeF“d eG“d¡e>“d¢e?“d£e+“¥eLeNeNeMeNd¤œ¥ZUd©de
fd¦„ZVdS )ªzù
Utilities to convert slow tokenizers in their fast tokenizers counterparts.

All the conversions are grouped here to gather SentencePiece dependencies outside of the fast tokenizers files and
allow to make our dependency on SentencePiece optional.
é    N)Ú
Collection)Úversion)Ú
AddedTokenÚRegexÚ	TokenizerÚdecodersÚnormalizersÚpre_tokenizersÚ
processors)ÚBPEÚUnigramÚ	WordPieceé   )Úis_tekken_vocab_filename)Úis_protobuf_availableÚis_sentencepiece_availableÚloggingÚrequires_backends)ÚPROTOBUF_IMPORT_ERROR)Úar_ARÚcs_CZÚde_DEÚen_XXÚes_XXÚet_EEÚfi_FIÚfr_XXÚgu_INÚhi_INÚit_ITÚja_XXÚkk_KZÚko_KRÚlt_LTÚlv_LVÚmy_MMÚne_NPÚnl_XXÚro_ROÚru_RUÚsi_LKÚtr_TRÚvi_VNÚzh_CN)Úaf_ZAÚaz_AZÚbn_INÚfa_IRÚhe_ILÚhr_HRÚid_IDÚka_GEÚkm_KHÚmk_MKÚml_INÚmn_MNÚmr_INÚpl_PLÚps_AFÚpt_XXÚsv_SEÚsw_KEÚta_INÚte_INÚth_THÚtl_XXÚuk_UAÚur_PKÚxh_ZAÚgl_ESÚsl_SIÚ c                 ó  — t          ¦   «         rddlm} |S t          ¦   «         rGdd l}t          j        |j        j        ¦  «        t          j        d¦  «        k     rddl	m} nddl	m
} |S t          t          j        | ¦  «        ¦  «        ‚)Nr   )Úsentencepiece_model_pb2z4.0.0)Úsentencepiece_model_pb2_new)r   ÚsentencepiecerL   r   Úgoogle.protobufr   ÚparseÚprotobufÚ__version__Útransformers.utilsrM   ÚImportErrorr   Úformat)Úerror_messagerL   Úgoogles      úQC:\Projects\DSCons\.venv\Lib\site-packages\transformers\convert_slow_tokenizer.pyÚimport_protobufrY   _   s®   € Ý!Ñ#Ô#ð 'Ø9Ð9Ð9Ð9Ð9Ð9à&Ð&ÝÑÔð 	GØÐÐÐåŒ=˜œÔ4Ñ5Ô5½¼ÀgÑ8NÔ8NÒNÐNØBÐBÐBÐBÐBÐBÐBàaÐaÐaÐaÐaÐaØ&Ð&åÕ/Ô6°}ÑEÔEÑFÔFÐFó    Úadd_prefix_spaceÚreturnc                 ó:   — | rd}t          |dd¦  «        sd}nd}|S )NÚalwaysÚlegacyTÚfirstÚnever)Úgetattr)r[   Úoriginal_tokenizerÚprepend_schemes      rX   Ú_get_prepend_schemere   p   s5   € Øð !Ø!ˆÝÐ)¨8°TÑ:Ô:ð 	%Ø$ˆNøà ˆØÐrZ   Úskip_tokensc                 ó  ‡ — |�t          |¦  «        nt          ¦   «         }|d u}|rt          |¦  «        n‰ }g }|                     ¦   «         D ]’\  }}||v rŒ
g }t          dt	          |¦  «        ¦  «        D ]?}|d |…         ||d …         }
}	|	|v s|
|v rŒ|	‰ v r|
‰ v r|                     |	|
|f¦  «         Œ@t          |ˆ fd„¬¦  «        }|                     |¦  «         Œ“t          |d„ |¬¦  «        }d„ |D ¦   «         }|S )Nr   c                 ó<   •— ‰| d                  ‰| d                  fS ©Nr   r   © )ÚxÚvocabs    €rX   ú<lambda>z!generate_merges.<locals>.<lambda>Š   s   ø€ ¨U°1°Q´4¬[¸%ÀÀ!Ä¼+Ð,F€ rZ   ©Úkeyc                 ód   — | d         t          | d         ¦  «        t          | d         ¦  «        fS )Né   r   r   )Úlen©Úvals    rX   rm   z!generate_merges.<locals>.<lambda>�   s%   € ¨S°¬VµS¸¸Q¼±[´[Å#ÀcÈ!ÄfÁ+Ä+Ð,N€ rZ   ©ro   Úreversec                 ó.   — g | ]}|d          |d         f‘ŒS ©r   r   rj   )Ú.0rt   s     rX   ú
<listcomp>z#generate_merges.<locals>.<listcomp>Ž   s%   € Ð1Ð1Ð1 3ˆs�1Œv�s˜1”vÐÐ1Ð1Ð1rZ   )ÚsetÚdictÚitemsÚrangerr   ÚappendÚsortedÚextend)rl   Úvocab_scoresrf   rv   ÚmergesÚmergeÚpiece_scoreÚlocalÚindexÚpiece_lÚpiece_rs   `          rX   Úgenerate_mergesrŠ   z   sX  ø€ Ø&1Ð&=•#�kÑ"Ô"Ð"Å3Á5Ä5€KØ $Ð&€GØ)0Ð;•4˜Ñ%Ô%Ð%°e€Là€FØ*×0Ò0Ñ2Ô2ð ð Ñˆˆ{Ø�KÐÐØØˆÝ˜1�c %™jœjÑ)Ô)ð 	>ð 	>ˆEØ$ V e Vœ}¨e°E°F°F¬m�WˆGØ˜+Ð%Ð%¨°KÐ)?Ð)?ØØ˜%ÐÐ G¨uÐ$4Ð$4Ø—’˜g w°Ð<Ñ=Ô=Ð=øÝ�uÐ"FÐ"FÐ"FÐ"FÐGÑGÔGˆØ�Š�eÑÔÐÐå�FÐ NÐ NÐX_Ð`Ñ`Ô`€FØ1Ð1¨&Ð1Ñ1Ô1€FØ€MrZ   c                   óV   — e Zd ZdZdefd„Zdeeeef         e	e         f         fd„Z
dS )ÚSentencePieceExtractorzl
    Extractor implementation for SentencePiece trained models. https://github.com/google/sentencepiece
    Úmodelc                 ó6  — t          | d¦  «         t          | d¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S )NrN   rQ   Úrb)r   rY   Ú
ModelProtoÚopenÚParseFromStringÚreadÚproto)Úselfr�   Ú	model_pb2ÚmÚfs        rX   Ú__init__zSentencePieceExtractor.__init__—   sÉ   € Ý˜$ Ñ0Ô0Ð0Ý˜$ 
Ñ+Ô+Ð+õ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�%˜ÑÔð 	( !Ø×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
s   Á(BÂBÂBr\   c                 ó  — | j         j        j         |€!ddlm}m} | j         j        j        dk    r|n|}d„ | j         j        D ¦   «         }|j        dk    r| j         j        j        |d<   ||d<   n4dd	l	m
} d
„ t          |¦  «        D ¦   «         } ||¦  «        }||d<   ||d<   d„ t          | j         j        ¦  «        D ¦   «         }d„ t          |d„ ¬¦  «        D ¦   «         |d<   t          | j         j        dd¦  «        |d<   |S )úÂ
        By default will return vocab and merges with respect to their order, by sending `vocab_scores` we're going to
        order the merges with respect to the piece scores instead.
        Nr   )r   r   r   c                 ó*   — g | ]}|j         |j        f‘ŒS rj   ©ÚpieceÚscore©ry   rž   s     rX   rz   z2SentencePieceExtractor.extract.<locals>.<listcomp>­   s!   € ÐKÐKÐK°�%”+˜uœ{Ð+ÐKÐKÐKrZ   r   Úunk_idrl   )rŠ   c                 ó    — i | ]\  }\  }}||“ŒS rj   rj   ©ry   ÚiÚwordrŸ   s       rX   ú
<dictcomp>z2SentencePieceExtractor.extract.<locals>.<dictcomp>µ   s#   € ÐFÐFÐFÑ!1 ¡M T¨5�T˜1ÐFÐFÐFrZ   rƒ   c                 óL   — g | ]!\  }}|j         d v ¯||j        |j         dk    f‘Œ"S ©)é   é   r©   )Útyperž   )ry   ÚidÚps      rX   rz   z2SentencePieceExtractor.extract.<locals>.<listcomp>¾   s:   € ÐuÐuÐu¹5¸2¸qÐdeÔdjÐntÐdtÐdt˜R ¤¨!¬&°Aª+Ð6ÐdtÐdtÐdtrZ   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS ©F©Ú
normalizedÚspecial©r   ©ry   r¬   Útokenr²   s       rX   rz   z2SentencePieceExtractor.extract.<locals>.<listcomp>¿   s=   € ð /
ð /
ð /
á"��E˜7õ �u¨¸Ð@Ñ@Ô@ð/
ð /
ð /
rZ   c                 ó   — | d         S ©Nr   rj   ©rk   s    rX   rm   z0SentencePieceExtractor.extract.<locals>.<lambda>Á   s
   € ÈQÈqÌT€ rZ   rn   Úadditional_special_tokensÚprecompiled_charsmapÚ_spm_precompiled_charsmap)r”   Útrainer_specr¡   Útokenizers.modelsr   r   Ú
model_typeÚpiecesÚ__name__Útokenization_utils_baserŠ   Ú	enumerater€   rb   Únormalizer_spec)	r•   r¾   Úkwargsr   r   rl   rŠ   rƒ   Úspm_added_tokenss	            rX   ÚextractzSentencePieceExtractor.extract£   s[  € ð
 	Œ
ÔÔ&Ð&ØÐØ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6à$(¤JÔ$;Ô$FÈ!Ò$KÐ$K˜˜ÐQTˆJØKÐK¸¼Ô9JÐKÑKÔKˆàÔ %Ò'Ð'Ø#œzÔ6Ô=ˆF�8ÑØ#ˆF�7‰OˆOà@Ð@Ð@Ð@Ð@Ð@àFÐFµY¸uÑ5EÔ5EÐFÑFÔFˆEØ$�_ UÑ+Ô+ˆFØ#ˆF�7‰OØ%ˆF�8Ñð vÐuÅIÈdÌjÔN_ÑD`ÔD`ÐuÑuÔuÐð/
ð /
å&,Ð-=À>À>Ð&RÑ&RÔ&Rð/
ñ /
ô /
ˆÐ*Ñ+õ /6°d´jÔ6PÐRhÐjnÑ.oÔ.oˆÐ*Ñ+ØˆrZ   N)rÀ   Ú
__module__Ú__qualname__Ú__doc__Ústrr™   Útupler|   ÚintÚlistrÆ   rj   rZ   rX   rŒ   rŒ   ’   sj   € € € € € ðð ð
˜cð 
ð 
ð 
ð 
ð!¨u°T¸#¸s¸(´^ÀTÈ%Ä[Ð5PÔ/Qð !ð !ð !ð !ð !ð !rZ   rŒ   c                   óH   — e Zd Zddeeeef         ee         f         fd„ZdS )ÚGemmaSentencePieceExtractorNr\   c                 óÌ   ‡— | j         Šˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         }d|vr|                     d¦  «        |d<   t	          ||¦  «        }||fS )r›   c                 ó<   •— i | ]}‰                      |¦  «        |“ŒS rj   )Úid_to_piece)ry   r‡   Úsps     €rX   r¦   z7GemmaSentencePieceExtractor.extract.<locals>.<dictcomp>Î   s'   ø€ ÐTÐTÐT°%�—’ Ñ&Ô&¨ÐTÐTÐTrZ   ú	ú<0x09>)rÓ   r~   ÚGetPieceSizeÚgetrŠ   )r•   r‚   rl   rƒ   rÓ   s       @rX   rÆ   z#GemmaSentencePieceExtractor.extractÈ   sr   ø€ ð
 ŒWˆØTÐTÐTÐT½5ÀÇÂÑARÔARÑ;SÔ;SÐTÑTÔTˆð �uÐÐØŸ)š) HÑ-Ô-ˆE�$‰KÝ  ¨Ñ5Ô5ˆØ�fˆ}ÐrZ   ©N)	rÀ   rÇ   rÈ   rË   r|   rÊ   rÌ   rÍ   rÆ   rj   rZ   rX   rÏ   rÏ   Ç   sJ   € € € € € ðð ¨E°$°s¸C°x´.À$ÀuÄ+Ð2MÔ,Nð ð ð ð ð ð rZ   rÏ   rž   c                 óv   — t          | ¦  «        dk     p&| d         dk    p| d                              ¦   «          S )Nrq   éÿÿÿÿú,éþÿÿÿ)rr   Úisdigit)rž   s    rX   Úcheck_number_commarÞ   Ø   s8   € Ýˆu‰:Œ:˜Š>ÐH˜U 2œY¨#Ò-ÐH°U¸2´Y×5FÒ5FÑ5HÔ5HÐ1HÐHrZ   c                   ó    — e Zd Zd„ Zdefd„ZdS )Ú	Converterc                 ó   — || _         d S rØ   )rc   )r•   rc   s     rX   r™   zConverter.__init__Ý   s   € Ø"4ˆÔÐÐrZ   r\   c                 ó   — t          ¦   «         ‚rØ   )ÚNotImplementedError©r•   s    rX   Ú	convertedzConverter.convertedà   s   € Ý!Ñ#Ô#Ð#rZ   N)rÀ   rÇ   rÈ   r™   r   rå   rj   rZ   rX   rà   rà   Ü   s>   € € € € € ð5ð 5ð 5ð$˜9ð $ð $ð $ð $ð $ð $rZ   rà   c                   ó   — e Zd Zdefd„ZdS )ÚBertConverterr\   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )N©Ú	unk_tokenFÚbasic_tokenizerT©Ú
clean_textÚhandle_chinese_charsÚstrip_accentsÚ	lowercaseú:0 $A:0 ú:0ú:0 $B:1 ú:1©ÚsingleÚpairÚspecial_tokensú##©Úprefix©rc   rl   r   r   rÊ   rê   Úhasattrrë   Útokenize_chinese_charsrï   Údo_lower_caser	   ÚBertNormalizerÚ
normalizerr
   ÚBertPreTokenizerÚpre_tokenizerÚ	cls_tokenÚ	sep_tokenÚcls_token_idÚsep_token_idr   ÚTemplateProcessingÚpost_processorr   Údecoder©
r•   rl   Ú	tokenizerrþ   rï   rÿ   ÚclsÚsepr  r  s
             rX   rå   zBertConverter.convertedå   óy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐrZ   N©rÀ   rÇ   rÈ   r   rå   rj   rZ   rX   rç   rç   ä   ó/   € € € € € ð#˜9ð #ð #ð #ð #ð #ð #rZ   rç   c                   ó   — e Zd Zdefd„ZdS )ÚSplinterConverterr\   c           
      óš  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }d}	| j         j        }
| j         j        }| j         j        }| j                              d¦  «        }| j         j        dk    r|› d|› d	|	› d	|› d
|› d�
}n|› d|› d
|› d	|	› d	|› d�
}t3          j        |› d|› d�|||
f||f||f|	|fg¬¦  «        |_        t9          j        d¬¦  «        |_        |S )Nré   Frë   Trì   ú.Úrightrñ   ú ró   rô   rò   rõ   rù   rú   )rc   rl   r   r   rÊ   rê   rý   rë   rþ   rï   rÿ   r	   r   r  r
   r  r  r  r  Úquestion_tokenr  r  Úquestion_token_idÚconvert_tokens_to_idsÚpadding_sider   r  r	  r   r
  )r•   rl   r  rþ   rï   rÿ   r  r  ÚquestionÚdotr  r  r  Údot_token_idr÷   s                  rX   rå   zSplinterConverter.converted  s  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆÝ�tÔ.Ô=Ñ>Ô>ˆØˆØÔ.Ô;ˆØÔ.Ô;ˆØ Ô3ÔEÐØÔ.×DÒDÀSÑIÔIˆàÔ"Ô/°7Ò:Ð:ØÐHÐH 8ÐHÐH¨cÐHÐH°CÐHÐHÀÐHÐHÐHˆDˆDàÐHÐH 3ÐHÐH°ÐHÐH¸3ÐHÐHÀÐHÐHÐHˆDå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*Øà�lÐ#Ø�lÐ#ØÐ,Ð-Ø�lÐ#ð	ð	$
ñ 	$
ô 	$
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐrZ   Nr  rj   rZ   rX   r  r    s/   € € € € € ð.˜9ð .ð .ð .ð .ð .ð .rZ   r  c                   ó   — e Zd Zdefd„ZdS )ÚFunnelConverterr\   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nré   Frë   Trì   z:2 $A:0 rò   ró   rô   rõ   rù   rú   rü   r  s
             rX   rå   zFunnelConverter.converted>  r  rZ   Nr  rj   rZ   rX   r   r   =  r  rZ   r   c                   ó   — e Zd Zdefd„ZdS )ÚMPNetConverterr\   c                 ó¾  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	|› d
�||f||	fg¬¦  «        |_        t1          j        d¬¦  «        |_        |S )Nré   Frë   Trì   rñ   rò   z:0 ró   rô   rõ   rù   rú   rü   r  s
             rX   rå   zMPNetConverter.convertede  s�  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ=Ð= Ð=Ð=¨Ð=Ð=°cÐ=Ð=Ð=à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐrZ   Nr  rj   rZ   rX   r#  r#  d  r  rZ   r#  c                   ó   — e Zd Zdefd„ZdS )ÚOpenAIGPTConverterr\   c           
      ó  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d t          |¦  «        dd¬¦  «        ¦  «        }| 	                    t          |¦  «        ¦  «        �#| 
                    t          |¦  «        g¦  «         t          j        d¬¦  «        |_        t          j        ¦   «         |_        t#          j        d¬¦  «        |_        |S )Nú</w>F)rl   rƒ   Údropoutrê   Úend_of_word_suffixÚfuse_unkT)rð   ©Úsuffix)rc   ÚencoderrÍ   Ú	bpe_ranksÚkeysrê   r   r   rÊ   Útoken_to_idÚadd_special_tokensr	   r   r  r
   r  r  r   Ú
BPEDecoderr
  ©r•   rl   rƒ   rê   r  s        rX   rå   zOpenAIGPTConverter.convertedŒ  sì   € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØÝ˜i™.œ.Ø#)Øðñ ô ñ	
ô 	
ˆ	ð × Ò ¥ Y¡¤Ñ0Ô0Ð<Ø×(Ò(­#¨i©.¬.Ð)9Ñ:Ô:Ð:å*Ô9ÀDÐIÑIÔIˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°vÐ>Ñ>Ô>ˆ	ÔàÐrZ   Nr  rj   rZ   rX   r&  r&  ‹  s/   € € € € € ð˜9ð ð ð ð ð ð rZ   r&  c                   ó\   — e Zd Zddeeef         dz  deeeef                  dz  defd„Z	dS )ÚGPT2ConverterNrl   rƒ   r\   c           
      ó  — |s| j         j        }|st          | j         j        ¦  «        }t	          t          ||d ddd¬¦  «        ¦  «        }t          | j         dd¦  «        }t          j        |¬¦  «        |_	        t          j        ¦   «         |_        t          | j         dd¦  «        r>| j         j        }| j         j        }t          j        |› d�|› d�||fg¬	¦  «        |_        nt          j        d¬
¦  «        |_        |S )NrJ   F©rl   rƒ   r)  Úcontinuing_subword_prefixr*  r+  r[   ©r[   Úadd_bos_tokenz:0 $A:0z:0 $A:0 $B:1rõ   ©Útrim_offsets)rc   r.  rÍ   r/  r   r   rb   r
   Ú	ByteLevelr  r   r
  Ú	bos_tokenÚbos_token_idr   r  r	  )r•   rl   rƒ   r  r[   Úbosr@  s          rX   rå   zGPT2Converter.converted§  s/  € Øð 	4ØÔ+Ô3ˆEØð 	=Ý˜$Ô1Ô;Ñ<Ô<ˆFåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ # 4Ô#:Ð<NÐPUÑVÔVÐÝ"0Ô":ÐL\Ð"]Ñ"]Ô"]ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ�4Ô*¨O¸UÑCÔCð 	PØÔ)Ô3ˆCØÔ2Ô?ˆLÝ'1Ô'DØ���ØÐ)Ð)Ð)à˜,Ð'ð ð(ñ (ô (ˆIÔ$Ð$õ (2Ô';ÈÐ'OÑ'OÔ'OˆIÔ$ØÐrZ   ©NN©
rÀ   rÇ   rÈ   r|   rÊ   rÌ   rÍ   rË   r   rå   rj   rZ   rX   r6  r6  ¦  sf   € € € € € ð"ð "˜t C¨ Hœ~°Ñ4ð "ÀTÈ%ÐPSÐUXÐPXÌ/ÔEZÐ]aÑEað "Ðmvð "ð "ð "ð "ð "ð "rZ   r6  c                   ó   — e Zd Zdefd„ZdS )ÚHerbertConverterr\   c           	      ó.  — d}d}| j         j        }t          | j         j                             ¦   «         ¦  «        }||d         d         v r
|dd …         }t          t          ||d | j         j        |¬¦  «        ¦  «        }t          j	        dd¬¦  «        |_
        t          j        ¦   «         |_        t          j        |¬¦  «        |_        t#          j        | j         j        | j         j        f| j         j        | j         j        f¬	¦  «        |_        |S )
Nz	#version:r(  r   r   )r)  rê   r*  F)rð   rï   r,  )r  r  )rc   r.  rÍ   r/  r0  r   r   rê   r	   r   r  r
   r  r  r   r3  r
  r   ÚBertProcessingr  r  r  r  r	  )r•   Útokenizer_info_strÚtoken_suffixrl   rƒ   r  s         rX   rå   zHerbertConverter.convertedÍ  s  € Ø(ÐØˆàÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØ ¨¤¨1¤Ð-Ð-Ø˜A˜B˜B”ZˆFåÝØØØØÔ1Ô;Ø#/ðñ ô ñ
ô 
ˆ	õ  +Ô9ÀEÐY^Ð_Ñ_Ô_ˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°|ÐDÑDÔDˆ	ÔÝ#-Ô#<ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYð$
ñ $
ô $
ˆ	Ô ð
 ÐrZ   Nr  rj   rZ   rX   rE  rE  Ì  ó/   € € € € € ð˜9ð ð ð ð ð ð rZ   rE  c                   ó\   — e Zd Zddeeef         dz  deeeef                  dz  defd„Z	dS )ÚQwen2ConverterNrl   rƒ   r\   c                 ó"  — |s| j         j        }|s+t          | j         j                             ¦   «         ¦  «        }t          t          ||d d dddd¬¦  «        ¦  «        }t          j        ¦   «         |_	        t          j        t          j        t          d¦  «        dd¬¦  «        t          j        t          | j         dd¦  «        d¬¦  «        g¦  «        |_        t#          j        ¦   «         |_        t'          j        d¬	¦  «        |_        |S )
NrJ   F)rl   rƒ   r)  rê   r9  r*  r+  Úbyte_fallbackzn(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated©ÚbehaviorÚinvertr[   ©r[   Ú	use_regexr<  )rc   r.  rÍ   r/  r0  r   r   r	   ÚNFCr  r
   ÚSequenceÚSplitr   r>  rb   r  r   r
  r   r	  )r•   rl   rƒ   r  s       rX   rå   zQwen2Converter.convertedì  s/  € Øð 	4ØÔ+Ô3ˆEØð 	DÝ˜$Ô1Ô;×@Ò@ÑBÔBÑCÔCˆFåÝØØØØØ*,Ø#%ØØ#ð	ñ 	ô 	ñ
ô 
ˆ	õ  +œÑ0Ô0ˆ	Ôå"0Ô"9åÔ$Ýð Nñô ð (Ø ðñ ô õ Ô(Ý%,¨TÔ-DÐFXÐZ_Ñ%`Ô%`Ø#ðñ ô ðñ#
ô #
ˆ	Ôõ  %Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐrZ   rB  rC  rj   rZ   rX   rL  rL  ë  sf   € € € € € ð(ð (˜t C¨ Hœ~°Ñ4ð (ÀTÈ%ÐPSÐUXÐPXÌ/ÔEZÐ]aÑEað (Ðmvð (ð (ð (ð (ð (ð (rZ   rL  c                   ó   — e Zd Zdefd„ZdS )ÚRobertaConverterr\   c           
      ó”  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        |j        |j        f|j        |j        f|j	        d¬¦  «        |_        |S )NrJ   Fr8  r:  T©r  r  r[   r=  )rc   r.  rÍ   r/  r0  r   r   r
   r>  r[   r  r   r
  r   ÚRobertaProcessingr  r  r  r  r	  ©r•   Úotrl   rƒ   r  s        rX   rå   zRobertaConverter.converted  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#?Ø”˜rœÐ/Ø”˜rœÐ/ØÔ0Øð	$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   rY  rY    ó/   € € € € € ð˜9ð ð ð ð ð ð rZ   rY  c                   ó   — e Zd Zdefd„ZdS )ÚRoFormerConverterr\   c           	      óÈ  — ddl m} | j        j        }t	          t          |t          | j        j        ¦  «        ¬¦  «        ¦  «        }d}d}t          | j        d¦  «        r"| j        j	        j
        }| j        j	        j        }t          j        dd||¬¦  «        |_        t          j                              ||¦  «        ¦  «        |_        t          | j        j        ¦  «        }t          | j        j        ¦  «        }| j        j        }| j        j        }	t/          j        |› d|› d	�|› d|› d
|› d�||f||	fg¬¦  «        |_        t5          j        d¬¦  «        |_        |S )Nr   )ÚJiebaPreTokenizerré   Frë   Trì   rñ   rò   ró   rô   rõ   rù   rú   )Ú"models.roformer.tokenization_utilsrc  rc   rl   r   r   rÊ   rê   rý   rë   rï   rÿ   r	   r   r  r
   ÚPreTokenizerÚcustomr  r  r  r  r  r   r  r	  r   r
  )
r•   rc  rl   r  rï   rÿ   r  r  r  r  s
             rX   rå   zRoFormerConverter.converted5  s‹  € ØIÐIÐIÐIÐIÐIàÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	àˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!&Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"=×"DÒ"DÐEVÐEVÐW\ÑE]ÔE]Ñ"^Ô"^ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐrZ   Nr  rj   rZ   rX   ra  ra  4  r  rZ   ra  c                   ó   — e Zd Zdefd„ZdS )ÚDebertaConverterr\   c           
      óÄ  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        ddd| j                              d¦  «        fd| j                              d¦  «        fg¬	¦  «        |_        |S )
NrJ   Fr8  r:  ú[CLS]:0 $A:0 [SEP]:0ú![CLS]:0 $A:0 [SEP]:0 $B:1 [SEP]:1ú[CLS]ú[SEP]rõ   )rc   r.  rÍ   r/  r0  r   r   r
   r>  r[   r  r   r
  r   r  r  r	  r]  s        rX   rå   zDebertaConverter.converted\  sê   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   rh  rh  [  rJ  rZ   rh  c                   ó�   ‡ — e Zd ZdZeZi Zedd„¦   «         Ze	dd„¦   «         Z
ˆ fd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zdefd„Zˆ xZS )ÚSpmConverterFNc           
      óB  — | j         j        }| j         j        }| j        j        }t          |t          ¦  «        r%t          t          ||pg |d|d¬¦  «        ¦  «        }nft          |t          ¦  «        rO|rMt          |d         t          t          z  ¦  «        r*t          t          || j         j        |¬¦  «        ¦  «        }ndS t          j        dd¦  «        g}|r(|                     dt          j        |¦  «        ¦  «         t          j        |¦  «        |_        |rRt'          j        t'          j        dd¦  «        t'          j        ¦   «         t'          j        ¦   «         g¦  «        |_        n-t'          j        t'          j        dd¦  «        g¦  «        |_        |S )z÷
        Similar to convert_from_spm method, but used only when there is no `model_type` class, i.e. there is no matching class in `TOKENIZERS_MAPPING` and we just create a tokenizer instead of extracting stuff from the sentencepiece file
        TN)rl   rƒ   rê   r+  rN  r)  r   )rl   r¡   rN  r  õ   â–�)r¼   rN  Ú	unk_piecerÃ   rº   Ú
isinstancer|   r   r   rÍ   rË   r   r¡   r	   ÚReplaceÚinsertÚPrecompiledrV  r  r   ÚByteFallbackÚFuser
  )r”   rl   rƒ   rN  rr  rº   r  Ú_normalizerss           rX   Úbuild_tokenizer_from_spm_protoz+SpmConverter.build_tokenizer_from_spm_proto  sª  € ð
 Ô*Ô8ˆØÔ&Ô0ˆ	Ø$Ô4ÔIÐõ �e�TÑ"Ô"ð 	Ý!ÝØØ!˜< RØ'Ø!Ø"/Ø ðñ ô ñ	ô 	ˆIˆIõ ˜�tÑ$Ô$ð 		¨ð 		µ:¸eÀA¼hÍÕPTÉÑ3UÔ3Uð 		Ý!ÝØØ Ô-Ô4Ø"/ðñ ô ñô ˆIˆIð �4õ $Ô+¨C°Ñ7Ô7Ð8ˆØð 	RØ×Ò ¥;Ô#:Ð;OÑ#PÔ#PÑQÔQÐQÝ*Ô3°LÑAÔAˆ	Ôð ð 	RÝ (Ô 1ÝÔ! %¨Ñ-Ô-­xÔ/DÑ/FÔ/FÍÌÉÌÐXñ!ô !ˆIÔÐõ !)Ô 1µ8Ô3CÀEÈ3Ñ3OÔ3OÐ2PÑ QÔ QˆIÔàÐrZ   c                 ó   — |�||d<   |S )zŸ
        Hook used when converting directly from a SentencePiece model without a slow tokenizer instance.
        By default, return kwargs unchanged.
        Nrl   rj   )r  rl   rÄ   s      rX   Úconvert_from_spmzSpmConverter.convert_from_spm¯  s   € ð ÐØ#ˆF�7‰OØˆrZ   c                 ó¸  •— t          | d¦  «          t          ¦   «         j        |Ž  t          ¦   «         }|                     ¦   «         }t          | j        j        d¦  «        5 }|                     | 	                    ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _
        | j
        j        j        r| j        st          j        d¦  «         d S d S d S )NrQ   r�   a  The sentencepiece tokenizer that you are converting to a fast tokenizer uses the byte fallback option which is not implemented in the fast tokenizers. In practice this means that the fast version of the tokenizer can produce unknown tokens whereas the sentencepiece version would have converted these unknown tokens into a sequence of byte tokens matching the original piece of text.)r   Úsuperr™   rY   r�   r‘   rc   Ú
vocab_filer’   r“   r”   r¼   rN  Úhandle_byte_fallbackÚwarningsÚwarn)r•   Úargsr–   r—   r˜   Ú	__class__s        €rX   r™   zSpmConverter.__init__¹  s"  ø€ Ý˜$ 
Ñ+Ô+Ð+à�‰ŒÔ˜$ÐÐõ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�$Ô)Ô4°dÑ;Ô;ð 	(¸qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
àŒ:Ô"Ô0ð 	¸Ô9Rð 	ÝŒMðeñô ð ð ð ð	ð 	ð 	ð 	s   Á$(BÂBÂBc                 ó$   — d„ |j         D ¦   «         S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z&SpmConverter.vocab.<locals>.<listcomp>Ï  s!   € ÐEÐEÐE¨u�”˜eœkÐ*ÐEÐEÐErZ   ©r¿   ©r•   r”   s     rX   rl   zSpmConverter.vocabÎ  s   € ØEÐE¸¼ÐEÑEÔEÐErZ   c                 ó   — |j         j        S rØ   )r¼   r¡   rˆ  s     rX   r¡   zSpmConverter.unk_idÑ  s   € ØÔ!Ô(Ð(rZ   c           
      óŽ  ‡ — |j         j        }‰                      |¦  «        }|dk    r8t          t	          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }n•|dk    r€‰                      ‰ j        j	        ¦  «         
                    |¦  «        \  }}d„ t          |¦  «        D ¦   «         }t          t          |||j         j        d‰ j        d ¬¦  «        ¦  «        }nt          d¦  «        ‚ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d	„ t#          |d
„ ¬¦  «        D ¦   «         ¦  «         |S )Nr   ©r¡   rN  rq   c                 ó    — i | ]\  }\  }}||“ŒS rj   rj   r£   s       rX   r¦   z*SpmConverter.tokenizer.<locals>.<dictcomp>ã  s#   € ÐQÐQÐQÑ%5 Q©¨¨u˜˜qÐQÐQÐQrZ   T©rê   r+  rN  r)  z]You're trying to run a `Unigram` model but you're file was trained with a different algorithmc                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r¨   ©r«   rž   rø   ©ry   r¬   r­   r•   s      €rX   rz   z*SpmConverter.tokenizer.<locals>.<listcomp>ø  óR   ø€ ð 
ð 
ð 
á��AØŒv˜ÐÐð �”˜!œ& Aš+ÐG¨¬°DÔ4GÐ)GÐHàÐÐrZ   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS r¯   r³   r´   s       rX   rz   z*SpmConverter.tokenizer.<locals>.<listcomp>þ  ó=   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐDÑDÔDðð ð rZ   c                 ó   — | d         S r·   rj   r¸   s    rX   rm   z(SpmConverter.tokenizer.<locals>.<lambda>   ó   € ÐQRÐSTÔQU€ rZ   rn   )r¼   r¾   rl   r   r   r¡   r€  ÚSpmExtractorrc   r  rÆ   rÂ   r   rr  Ú	Exceptionr¿   Ú
add_tokensr€   )	r•   r”   r¾   r‚   r  Ú_rƒ   Ú	bpe_vocabrÅ   s	   `        rX   r  zSpmConverter.tokenizerÔ  s‹  ø€ ØÔ'Ô2ˆ
Ø—z’z %Ñ(Ô(ˆà˜Š?ˆ?Ý!ÝØ ØŸ;š; uÑ-Ô-Ø"&Ô";ðñ ô ñô ˆIˆIð ˜1Š_ˆ_Ø×)Ò)¨$Ô*AÔ*LÑMÔM×UÒUÐVbÑcÔc‰IˆAˆvØQÐQ½À<Ñ9PÔ9PÐQÑQÔQˆIÝ!ÝØØØ#Ô0Ô:Ø!Ø"&Ô";Ø ðñ ô ñ	ô 	ˆIˆIõ Øoñô ð ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð ÐrZ   c                 ó
  — |j         j        }t          j        dd¬¦  «        t          j        t          d¦  «        d¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S )NFT)Úleftr  ú {2,}rq  )rÃ   rº   r	   ÚStriprt  r   rV  rv  ©r•   r”   rº   ry  s       rX   r  zSpmConverter.normalizer  s€   € Ø$Ô4ÔIÐåÔ 5°Ð5Ñ5Ô5ÝÔ¥ g¡¤°Ñ6Ô6ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgrZ   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S ©N©Úreplacementrd   )re   rc   r
   Ú	Metaspace©r•   r£  r[   rd   s       rX   r  zSpmConverter.pre_tokenizer  s,   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ'°KÐP^Ð_Ñ_Ô_Ð_rZ   c                 ó   — d S rØ   rj   rä   s    rX   r	  zSpmConverter.post_processor  ó   € ØˆtrZ   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S r¡  )re   rc   r   r¤  r¥  s       rX   r
  zSpmConverter.decoder  s+   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ!¨kÈ.ÐYÑYÔYÐYrZ   r\   c                 óx  — |                       | j        ¦  «        }|                      | j        ¦  «        }|�||_        d}d}t          | j        d¦  «        r| j        j        }|                      ||¦  «        }|�||_        |                      ||¦  «        |_        |                      ¦   «         }|r||_        |S )Nrq  Tr[   )	r  r”   r  rý   rc   r[   r  r
  r	  )r•   r  r  r£  r[   r  r	  s          rX   rå   zSpmConverter.converted  sÈ   € Ø—N’N 4¤:Ñ.Ô.ˆ	ð —_’_ T¤ZÑ0Ô0ˆ
ØÐ!Ø#-ˆIÔ àˆØÐÝ�4Ô*Ð,>Ñ?Ô?ð 	HØ#Ô6ÔGÐà×*Ò*¨;Ð8HÑIÔIˆØÐ$Ø&3ˆIÔ#à ŸLšL¨Ð6FÑGÔGˆ	ÔØ×,Ò,Ñ.Ô.ˆØð 	6Ø'5ˆIÔ$àÐrZ   rØ   )rÀ   rÇ   rÈ   r€  rŒ   r–  rø   Ústaticmethodrz  Úclassmethodr|  r™   rl   r¡   r  r  r  r	  r
  r   rå   Ú__classcell__)r„  s   @rX   ro  ro  z  s  ø€ € € € € Ø ÐØ)€LØ€Nàð-ð -ð -ñ „\ð-ð^ ðð ð ñ „[ððð ð ð ð ð*Fð Fð Fð)ð )ð )ð0ð 0ð 0ðd	hð 	hð 	hð`ð `ð `ðð ð ðZð Zð Zð˜9ð ð ð ð ð ð ð ð rZ   ro  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚAlbertConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S ©éd   ©rÞ   rž   rŸ   r    s     rX   rz   z)AlbertConverter.vocab.<locals>.<listcomp>7  óX   € ð 
ð 
ð 
àõ +=¸U¼[Ñ*IÔ*IÐoˆUŒ[˜%œ+Ð&Ð&ÐPUÔP[Ð]bÔ]hÐknÑ]nÐOoð
ð 
ð 
rZ   r‡  rˆ  s     rX   rl   zAlbertConverter.vocab6  ó%   € ð
ð 
àœð
ñ 
ô 
ð 	
rZ   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S ©Nz``ú"z''r�  r  ©r	   rt  rc   Úkeep_accentsr   ÚNFKDÚStripAccentsrÿ   Ú	LowercaserÃ   rº   rv  r   rV  ©r•   r”   Úlist_normalizersrº   s       rX   r  zAlbertConverter.normalizer<  ó  € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ð
Ðð Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRà×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIÝÔ#Ð$4Ñ5Ô5Ð5rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nrj  rk  rl  rm  rõ   ©r   r  rc   r  rä   s    rX   r	  zAlbertConverter.post_processorO  óY   € ÝÔ,Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð
ñ 
ô 
ð 	
rZ   N©rÀ   rÇ   rÈ   rl   r  r	  rj   rZ   rX   r®  r®  5  óA   € € € € € ð
ð 
ð 
ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
rZ   r®  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚBarthezConverterc                 ó
   — d}|S ©Nr©   rj   ©r•   r”   r¡   s      rX   r¡   zBarthezConverter.unk_id[  ó   € ØˆØˆrZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nz<s> $A </s>z<s> $A </s> </s> $B </s>ú<s>ú</s>rõ   rÃ  rä   s    rX   r	  zBarthezConverter.post_processor_  óY   € ÝÔ,Ø Ø+à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   N)rÀ   rÇ   rÈ   r¡   r	  rj   rZ   rX   rÈ  rÈ  Z  s2   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
rZ   rÈ  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚCamembertConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )N)©z
<s>NOTUSEDç        ©ú<pad>rÖ  ©z</s>NOTUSEDrÖ  ©ú<unk>rÖ  )ú<unk>NOTUSEDiœÿÿÿc                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z,CamembertConverter.vocab.<locals>.<listcomp>t  ó!   € ÐKÐKÐK°�5”; ¤Ð,ÐKÐKÐKrZ   r   ©ú<mask>rÖ  r‡  ©r•   r”   rl   s      rX   rl   zCamembertConverter.vocabk  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆrZ   c                 ó   — dS rÊ  rj   rˆ  s     rX   r¡   zCamembertConverter.unk_idx  s   € àˆqrZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÎ  rÃ  rä   s    rX   r	  z!CamembertConverter.post_processor|  rÑ  rZ   Nc                 ó~  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }d|dfd	|dfd
g}|�*|                     t          |¦  «        dd …         ¦  «         |                     |df¦  «         ||d<   |S )NÚ	pad_tokenrØ  rê   rÛ  Ú
mask_tokenrà  rÕ  rÖ  rÙ  )rÜ  ç      YÀr   rl   ©rÊ   r×   r�   rÍ   r   )r  rl   rÄ   rå  rê   ræ  Ú
vocab_lists          rX   r|  z#CamembertConverter.convert_from_spm†  sÆ   € å˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð  Ø˜ÐØ Ø˜ÐØ$ð
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰ØˆrZ   rØ   ©rÀ   rÇ   rÈ   rl   r¡   r	  r«  r|  rj   rZ   rX   rÓ  rÓ  j  sa   € € € € € ðð ð ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   rÓ  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚDebertaV2Converterc                 ó  — g }| j         j        r(|                     t          j        d¬¦  «        ¦  «         t          || j         ¦  «        }|                     t          j        ||¬¦  «        ¦  «         t          j        |¦  «        S )NrO  )rQ  r¢  )rc   Úsplit_by_punctr   r
   ÚPunctuationre   r¤  rV  )r•   r£  r[   Úlist_pretokenizersrd   s        rX   r  z DebertaV2Converter.pre_tokenizer›  sƒ   € ØÐØÔ"Ô1ð 	WØ×%Ò%¥nÔ&@È*Ð&UÑ&UÔ&UÑVÔVÐVÝ,Ð-=¸tÔ?VÑWÔWˆØ×!Ò!¥.Ô":À{ÐcqÐ"rÑ"rÔ"rÑsÔsÐsÝÔ&Ð'9Ñ:Ô:Ð:rZ   c                 ó²  — g }| j         j        r&|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         |j        j        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j	        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S )Nr�  r  )rc   rÿ   r   r	   r½  rž  rÃ   rº   rv  rt  r   rV  r¾  s       rX   r  zDebertaV2Converter.normalizer£  s¾   € ØÐØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<Ø×Ò¥Ô 1Ñ 3Ô 3Ñ4Ô4Ð4à$Ô4ÔIÐØð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRØ×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIåÔ#Ð$4Ñ5Ô5Ð5rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÂ  rÃ  rä   s    rX   r	  z!DebertaV2Converter.post_processor°  rÄ  rZ   N)rÀ   rÇ   rÈ   r  r  r	  rj   rZ   rX   rì  rì  š  sA   € € € € € ð;ð ;ð ;ð6ð 6ð 6ð
ð 
ð 
ð 
ð 
rZ   rì  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚMBartConverterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )N©©rÏ  rÖ  r×  ©rÐ  rÖ  rÚ  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z(MBartConverter.vocab.<locals>.<listcomp>Ã  rÞ  rZ   r©   )©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r   rÖ  ©r    rÖ  ©r!   rÖ  ©r"   rÖ  ©r#   rÖ  ©r$   rÖ  ©r%   rÖ  ©r&   rÖ  ©r'   rÖ  ©r(   rÖ  ©r)   rÖ  ©r*   rÖ  ©r+   rÖ  ©r,   rÖ  ©r-   rÖ  ©r.   rÖ  rß  r‡  rá  s      rX   rl   zMBartConverter.vocab¼  sf   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð 
ð 
ð 
ñ 	
ˆð6 	�/Ð"Ñ"ˆØˆrZ   c                 ó   — dS rÊ  rj   rˆ  s     rX   r¡   zMBartConverter.unk_idâ  ó   € ØˆqrZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A </s> en_XXz$A $B </s> en_XXr   rÐ  rõ   rÃ  rä   s    rX   r	  zMBartConverter.post_processorå  óY   € ÝÔ,Ø"Ø#à˜$Ô1×GÒGÈÑPÔPÐQØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   Nc                 óX  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     d„ t          D ¦   «         ¦  «         |                     |df¦  «         ||d<   |S )Nr?  rÏ  rå  rØ  Ú	eos_tokenrÐ  rê   rÛ  ræ  rà  rÖ  r©   c              3   ó   K  — | ]}|d fV — Œ	dS ©rÖ  Nrj   ©ry   Ú	lang_codes     rX   ú	<genexpr>z2MBartConverter.convert_from_spm.<locals>.<genexpr>ÿ  s'   è è € ÐLÐL¨y˜9 cÐ*ÐLÐLÐLÐLÐLÐLrZ   rl   )rÊ   r×   r�   rÍ   ÚMBART_LANGUAGESr   ©	r  rl   rÄ   r?  rå  r  rê   ræ  ré  s	            rX   r|  zMBartConverter.convert_from_spmï  s&  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×ÒÐLÐL½OÐLÑLÔLÑLÔLÐLØ×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰ØˆrZ   rØ   rê  rj   rZ   rX   rô  rô  »  sb   € € € € € ð$ð $ð $ðLð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   rô  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚMBart50Converterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )Nrö  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z*MBart50Converter.vocab.<locals>.<listcomp>  rÞ  rZ   r©   )4rú  rû  rü  rý  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  )r/   rÖ  )r0   rÖ  )r1   rÖ  )r2   rÖ  )r3   rÖ  )r4   rÖ  )r5   rÖ  )r6   rÖ  )r7   rÖ  )r8   rÖ  )r9   rÖ  )r:   rÖ  )r;   rÖ  )r<   rÖ  )r=   rÖ  )r>   rÖ  )r?   rÖ  )r@   rÖ  )rA   rÖ  )rB   rÖ  )rC   rÖ  )rD   rÖ  )rE   rÖ  )rF   rÖ  )rG   rÖ  )rH   rÖ  )rI   rÖ  rß  r‡  rá  s      rX   rl   zMBart50Converter.vocab  sh   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  Rð  Rð  Rñ  	RˆØ�/Ð"Ñ"ˆØˆrZ   c                 ó   — dS rÊ  rj   rˆ  s     rX   r¡   zMBart50Converter.unk_id  r  rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzen_XX $A </s>zen_XX $A $B </s>r   rÐ  rõ   rÃ  rä   s    rX   r	  zMBart50Converter.post_processor  r  rZ   Nc                 óX  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     d„ t          D ¦   «         ¦  «         |                     |df¦  «         ||d<   |S )Nr  rÏ  rå  rØ  r  rÐ  rê   rÛ  ræ  rà  rÖ  r©   c              3   ó   K  — | ]}|d fV — Œ	dS r  rj   r  s     rX   r  z4MBart50Converter.convert_from_spm.<locals>.<genexpr>/  s'   è è € ÐNÐN¨y˜9 cÐ*ÐNÐNÐNÐNÐNÐNrZ   rl   )rÊ   r×   r�   rÍ   ÚMBART50_LANGUAGESr   )	r  rl   rÄ   r  rå  r  rê   ræ  ré  s	            rX   r|  z!MBart50Converter.convert_from_spm  s'  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×ÒÐNÐNÕ<MÐNÑNÔNÑNÔNÐNØ×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰ØˆrZ   rØ   rê  rj   rZ   rX   r!  r!    sa   € € € € € ð
ð 
ð 
ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   r!  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚNllbConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )Nrö  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z'NllbConverter.vocab.<locals>.<listcomp>=  rÞ  rZ   r©   r‡  rá  s      rX   rl   zNllbConverter.vocab6  ó>   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆrZ   c                 ó   — dS rÊ  rj   rˆ  s     rX   r¡   zNllbConverter.unk_id@  r  rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzeng_Latn $A </s>zeng_Latn $A $B </s>Úeng_LatnrÐ  rõ   rÃ  rä   s    rX   r	  zNllbConverter.post_processorC  sY   € ÝÔ,Ø%Ø&à˜TÔ4×JÒJÈ:ÑVÔVÐWØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   Nc                 óâ  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|d	|d
|d|di}|�Qt          |t          ¦  «        r|                     ¦   «         nd„ |D ¦   «         }|D ]}	|	|v rŒt          |¦  «        ||	<   Œ||d<   |S )Nr?  rÏ  rå  rØ  r  rÐ  rê   rÛ  r   r   rq   r©   c                 ó   — g | ]\  }}|‘ŒS rj   rj   )ry   Útokr™  s      rX   rz   z2NllbConverter.convert_from_spm.<locals>.<listcomp>[  s   € ÐB[ÐB[ÐB[É6È3ÐPQÀ3ÐB[ÐB[ÐB[rZ   rl   )rÊ   r×   rs  r|   r0  rr   )
r  rl   rÄ   r?  rå  r  rê   Úreordered_vocabÚtokensrµ   s
             rX   r|  zNllbConverter.convert_from_spmM  s  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	ð �qØ�qØ�qØ�qð	
ˆð ÐÝ%/°µtÑ%<Ô%<Ð[�U—Z’Z‘\”\�\ÐB[ÐB[ÐUZÐB[ÑB[ÔB[ˆFØð >ð >�Ø˜OÐ+Ð+ØÝ),¨_Ñ)=Ô)=� Ñ&Ð&Ø)ˆˆw‰ØˆrZ   rØ   rê  rj   rZ   rX   r*  r*  5  sa   € € € € € ðð ð ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   r*  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSeamlessM4TConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )N)r×  rÚ  r÷  rø  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z.SeamlessM4TConverter.vocab.<locals>.<listcomp>l  rÞ  rZ   r©   r‡  rá  s      rX   rl   zSeamlessM4TConverter.vocabe  r-  rZ   c                 ó   — | j         j        S rØ   )rc   Úunk_token_idrˆ  s     rX   r¡   zSeamlessM4TConverter.unk_ido  s   € ØÔ&Ô3Ð3rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz__eng__ $A </s>z__eng__ $A $B </s>Ú__eng__rÐ  rõ   rÃ  rä   s    rX   r	  z#SeamlessM4TConverter.post_processorr  sY   € ÝÔ,Ø$Ø%à˜DÔ3×IÒIÈ)ÑTÔTÐUØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   N©rÀ   rÇ   rÈ   rl   r¡   r	  rj   rZ   rX   r7  r7  d  sA   € € € € € ðð ð ð4ð 4ð 4ð
ð 
ð 
ð 
ð 
rZ   r7  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zedd„¦   «         ZdS )ÚXLMRobertaConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )Nrö  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z-XLMRobertaConverter.vocab.<locals>.<listcomp>…  rÞ  rZ   r©   rß  r‡  rá  s      rX   rl   zXLMRobertaConverter.vocab~  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆrZ   c                 ó
   — d}|S rÊ  rj   rË  s      rX   r¡   zXLMRobertaConverter.unk_id‰  rÌ  rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÎ  rÃ  rä   s    rX   r	  z"XLMRobertaConverter.post_processor�  rÑ  rZ   Nc                 ó  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     d	d
¦  «        ¦  «        }|df|df|df|dfg}|�*|                     t          |¦  «        dd …         ¦  «         |                     |df¦  «         ||d<   |S )Nr?  rÏ  rå  rØ  r  rÐ  rê   rÛ  ræ  rà  rÖ  r©   rl   rè  r  s	            rX   r|  z$XLMRobertaConverter.convert_from_spm—  s  € å˜Ÿ
š
 ;°Ñ6Ô6Ñ7Ô7ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿš L°(Ñ;Ô;Ñ<Ô<ˆ
ð ˜ÐØ˜ÐØ˜ÐØ˜Ðð	
ˆ
ð ÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø×Ò˜: sÐ+Ñ,Ô,Ð,Ø$ˆˆw‰ØˆrZ   rØ   rê  rj   rZ   rX   r@  r@  }  sa   € € € € € ð	ð 	ð 	ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   r@  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXLNetConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S r±  r³  r    s     rX   rz   z(XLNetConverter.vocab.<locals>.<listcomp>®  r´  rZ   r‡  rˆ  s     rX   rl   zXLNetConverter.vocab­  rµ  rZ   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S r·  r¹  r¾  s       rX   r  zXLNetConverter.normalizer³  rÀ  rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A:0 <sep>:0 <cls>:2z!$A:0 <sep>:0 $B:1 <sep>:1 <cls>:2z<sep>z<cls>rõ   rÃ  rä   s    rX   r	  zXLNetConverter.post_processorÆ  rÄ  rZ   NrÅ  rj   rZ   rX   rG  rG  ¬  rÆ  rZ   rG  c                   ó   — e Zd ZdS )ÚReformerConverterN©rÀ   rÇ   rÈ   rj   rZ   rX   rM  rM  Ñ  ó   € € € € € Ø€DrZ   rM  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRemBertConverterc                 ó>  — t          j        dd¦  «        t          j        dd¦  «        t          j        t          d¦  «        d¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j	        ¦   «         ¦  «         |j
        j        }|r'|                     t          j        |¦  «        ¦  «         t          j        |¦  «        S r·  )r	   rt  r   rc   rº  r   r»  r¼  rÿ   r½  rÃ   rº   rv  rV  r¾  s       rX   r  zRemBertConverter.normalizer×  sý   € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ÝÔ¥ g¡¤°Ñ4Ô4ð
Ðð
 Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRåÔ#Ð$4Ñ5Ô5Ð5rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÂ  rÃ  rä   s    rX   r	  zRemBertConverter.post_processorê  rÄ  rZ   N)rÀ   rÇ   rÈ   r  r	  rj   rZ   rX   rQ  rQ  Õ  s2   € € € € € ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
rZ   rQ  c                   ó   — e Zd ZdS )ÚBertGenerationConverterNrN  rj   rZ   rX   rU  rU  õ  rO  rZ   rU  c                   ó>   — e Zd Zd„ Zedd„¦   «         Zd„ Zd„ Zd„ ZdS )ÚPegasusConverterc                 óp  — | j         j        df| j         j        dfg}| j         j        �|| j         j        dfgz  }| j         j        �,| j         j        | j         j        k     r|| j         j        dfgz  }|d„ t          d| j         j        ¦  «        D ¦   «         z  }|d„ |j        dd …         D ¦   «         z  }|S )NrÖ  c                 ó   — g | ]
}d |› d�df‘ŒS ©z<unk_ú>rç  rj   ©ry   r¤   s     rX   rz   z*PegasusConverter.vocab.<locals>.<listcomp>	  s%   € Ð[Ð[Ð[¨Q�<˜1�<�<�< Ð(Ð[Ð[Ð[rZ   rq   c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z*PegasusConverter.vocab.<locals>.<listcomp>
  rÞ  rZ   )	rc   rå  r  Úmask_token_sentræ  Úmask_token_idÚoffsetr~   r¿   rá  s      rX   rl   zPegasusConverter.vocabú  sÚ   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 Ô"Ô2Ð>Ø�tÔ.Ô>ÀÐDÐEÑEˆEð Ô#Ô.Ð:ØÔ'Ô5¸Ô8OÔ8VÒVÐVà�tÔ.Ô9¸3Ð?Ð@Ñ@ˆEàÐ[Ð[µ%¸¸4Ô;RÔ;YÑ2ZÔ2ZÐ[Ñ[Ô[Ñ[ˆØÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆrZ   Nc           
      ó’  — t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|d	f|d	fg}|d
k    r|                     |d	f¦  «         |d
k    r||k    r|                     |d	f¦  «         |                     d„ t	          d|                     dd¦  «        ¦  «        D ¦   «         ¦  «         |�*|                     t          |¦  «        dd …         ¦  «         ||d<   |S )Nrå  rØ  r  rÐ  ræ  z<mask_1>r^  z<mask_2>rÖ  ÚNonec                 ó   — g | ]
}d |› d�df‘ŒS rZ  rj   r\  s     rX   rz   z5PegasusConverter.convert_from_spm.<locals>.<listcomp>  s%   € Ð_Ð_Ð_°a˜L A˜L˜L˜L¨&Ð1Ð_Ð_Ð_rZ   rq   r`  ég   rl   )rÊ   r×   r   r�   r~   rÍ   )r  rl   rÄ   rå  r  ræ  r^  ré  s           rX   r|  z!PegasusConverter.convert_from_spm  sN  € å˜Ÿ
š
 ;°Ñ8Ô8Ñ9Ô9ˆ	Ý˜Ÿ
š
 ;°Ñ7Ô7Ñ8Ô8ˆ	Ý˜Ÿš L°*Ñ=Ô=Ñ>Ô>ˆ
Ý˜fŸjšjÐ):¸JÑGÔGÑHÔHˆð ˜ÐØ˜Ðð
ˆ
ð ˜ÒÐØ×Ò˜z¨3Ð/Ñ0Ô0Ð0Ø˜fÒ$Ð$¨¸JÒ)FÐ)FØ×Ò˜°Ð4Ñ5Ô5Ð5à×ÒÐ_Ð_½5ÀÀFÇJÂJÈxÐY\ÑD]ÔD]Ñ;^Ô;^Ð_Ñ_Ô_Ñ`Ô`Ð`ØÐØ×Ò�d 5™kœk¨!¨"¨"œoÑ.Ô.Ð.Ø$ˆˆw‰ØˆrZ   c                 ó4   — |j         j        | j        j        z   S rØ   )r¼   r¡   rc   r`  rˆ  s     rX   r¡   zPegasusConverter.unk_id#  s   € ØÔ!Ô(¨4Ô+BÔ+IÑIÐIrZ   c                 ó¢   — t          || j        ¦  «        }t          j        t          j        ¦   «         t          j        ||¬¦  «        g¦  «        S r¡  )re   rc   r
   rV  ÚWhitespaceSplitr¤  r¥  s       rX   r  zPegasusConverter.pre_tokenizer&  sO   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ&åÔ.Ñ0Ô0ÝÔ(°[ÐQ_Ð`Ñ`Ô`ðñ
ô 
ð 	
rZ   c                 óp   — | j         j        }|| j         j        fg}t          j        d|gdd|g|¬¦  «        S )Nú$Aú$Brõ   )rc   r  Úeos_token_idr   r  )r•   Úeosrø   s      rX   r	  zPegasusConverter.post_processor/  sI   € ØÔ%Ô/ˆà�$Ô)Ô6Ð7ð
ˆõ Ô,°T¸3°KÀtÈTÐSVÐFWÐhvÐwÑwÔwÐwrZ   rØ   )	rÀ   rÇ   rÈ   rl   r«  r|  r¡   r  r	  rj   rZ   rX   rW  rW  ù  sx   € € € € € ðð ð ð& ðð ð ñ „[ðð*Jð Jð Jð
ð 
ð 
ðxð xð xð xð xrZ   rW  c                   ó2   — e Zd Zd„ Zd„ Zedd„¦   «         ZdS )ÚT5Converterc                 ó‚   — | j         j        }d„ |j        D ¦   «         }|d„ t          |dz
  dd¦  «        D ¦   «         z  }|S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z%T5Converter.vocab.<locals>.<listcomp>:  s!   € ÐFÐFÐF°�%”+˜uœ{Ð+ÐFÐFÐFrZ   c                 ó   — g | ]
}d |› d�df‘ŒS )ú
<extra_id_r[  rÖ  rj   r\  s     rX   rz   z%T5Converter.vocab.<locals>.<listcomp>;  s)   € ÐUÐUÐU¨qÐ$ Ð$Ð$Ð$ cÐ*ÐUÐUÐUrZ   r   rÚ   )rc   Ú
_extra_idsr¿   r~   )r•   r”   Únum_extra_idsrl   s       rX   rl   zT5Converter.vocab8  sR   € ØÔ/Ô:ˆØFÐF¸¼ÐFÑFÔFˆØÐUÐUµE¸-È!Ñ:KÈRÐQSÑ4TÔ4TÐUÑUÔUÑUˆØˆrZ   c                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S ©Nri  rÐ  )ri  rÐ  rj  rÐ  rõ   rÃ  rä   s    rX   r	  zT5Converter.post_processor>  óJ   € ÝÔ,Ø˜&�>Ø-Ð-Ð-à˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   Nc                 ó  — |                      dd¦  «        }d„ t          |dz
  dd¦  «        D ¦   «         }|�t          |¦  «        ng }|                     d„ |D ¦   «         ¦  «         |                     d|¦  «         ||d<   |S )	NÚ	extra_idsr²  c                 ó   — g | ]}d |› d�‘Œ	S )rr  r[  rj   r\  s     rX   rz   z0T5Converter.convert_from_spm.<locals>.<listcomp>J  s$   € ÐPÐPÐP¨aÐ) QÐ)Ð)Ð)ÐPÐPÐPrZ   r   rÚ   c              3   ó   K  — | ]}|d fV — Œ	dS r  rj   ©ry   rµ   s     rX   r  z/T5Converter.convert_from_spm.<locals>.<genexpr>L  s&   è è € ÐAÐA¨5˜5 #˜,ÐAÐAÐAÐAÐAÐArZ   r¹   rl   )r×   r~   rÍ   r�   Ú
setdefault)r  rl   rÄ   ry  Úextra_tokensré  s         rX   r|  zT5Converter.convert_from_spmG  s”   € à—J’J˜{¨CÑ0Ô0ˆ	ØPÐPµ5¸ÀQ¹ÈÈBÑ3OÔ3OÐPÑPÔPˆØ$)Ð$5•T˜%‘[”[�[¸2ˆ
Ø×ÒÐAÐA°LÐAÑAÔAÑAÔAÐAà×ÒÐ5°|ÑDÔDÐDØ$ˆˆw‰ØˆrZ   rØ   )rÀ   rÇ   rÈ   rl   r	  r«  r|  rj   rZ   rX   rn  rn  7  sR   € € € € € ðð ð ð
ð 
ð 
ð ðð ð ñ „[ðð ð rZ   rn  c                   ó   — e Zd Zd„ ZdS )ÚUdopConverterc                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S rv  rÃ  rä   s    rX   r	  zUdopConverter.post_processorT  rw  rZ   N©rÀ   rÇ   rÈ   r	  rj   rZ   rX   r€  r€  S  s#   € € € € € ð
ð 
ð 
ð 
ð 
rZ   r€  c                   ó   — e Zd Zd„ ZdS )ÚVideoPrismConverterc                 ó   — d S rØ   rj   rä   s    rX   r	  z"VideoPrismConverter.post_processor_  r§  rZ   Nr‚  rj   rZ   rX   r„  r„  ^  s#   € € € € € ðð ð ð ð rZ   r„  c                   ó   — e Zd Zdefd„ZdS )ÚWhisperConverterr\   c           
      ó`  — | j         j        }t          | j         j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        | j         j	        ¬¦  «        |_
        t          j        ¦   «         |_        | j         j        }| j                              |¦  «        }| j         j        }| j         j        }d                     d„ |D ¦   «         ¦  «        }t%          j        |› d|› d�|› d	|› d
�||fgt)          ||¦  «        ¢¬¦  «        |_        |S )NrJ   Fr8  r:  r  c                 ó   — g | ]}|› d �‘ŒS )rò   rj   r|  s     rX   rz   z.WhisperConverter.converted.<locals>.<listcomp>z  s   € Ð#GÐ#GÐ#G°U u L L LÐ#GÐ#GÐ#GrZ   z $A:0 rò   z $A:0 $B:1 rô   rõ   )rc   r.  rÍ   r/  r0  r   r   r
   r>  r[   r  r   r
  Úprefix_tokensÚconvert_ids_to_tokensr  rk  Újoinr   r  Úzipr	  )	r•   rl   rƒ   r  Úprefix_token_idsÚprefixesrl  rk  Úprefix_templates	            rX   rå   zWhisperConverter.convertedd  sQ  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈDÔLcÔLtÐ"uÑ"uÔ"uˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔàÔ2Ô@ÐØÔ*×@Ò@ÐAQÑRÔRˆØÔ%Ô/ˆØÔ.Ô;ˆØŸ(š(Ð#GÐ#G¸hÐ#GÑ#GÔ#GÑHÔHˆÝ#-Ô#@Ø%Ð4Ð4¨SÐ4Ð4Ð4Ø#Ð7Ð7°Ð7Ð7Ð7à�lÐ#ðå�XÐ/Ñ0Ô0ðð$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   r‡  r‡  c  s/   € € € € € ð ˜9ð  ð  ð  ð  ð  ð  rZ   r‡  c                   ó   — e Zd Zd„ ZdS )ÚBigBirdConverterc           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rÂ  rÃ  rä   s    rX   r	  zBigBirdConverter.post_processorˆ  rÄ  rZ   Nr‚  rj   rZ   rX   r’  r’  ‡  s#   € € € € € ð
ð 
ð 
ð 
ð 
rZ   r’  c                   ó   — e Zd Zdefd„ZdS )ÚCLIPConverterr\   c                 ó
  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d dddt          |¦  «        ¬¦  «        ¦  «        }t          j
        t          j        ¦   «         t          j        t          d¦  «        d¦  «        t          j        ¦   «         g¦  «        |_        t!          j
        t!          j        t          d¦  «        dd	¬
¦  «        t!          j        d¬¦  «        g¦  «        |_        t)          j        ¦   «         |_        t-          j        | j         j        | j         j        f| j         j        | j         j        fdd¬¦  «        |_        |S )NrJ   r(  F©rl   rƒ   r)  r9  r*  r+  rê   z\s+r  z9's|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+ÚremovedTrP  r:  r[  )rc   r.  rÍ   r/  r0  rê   r   r   rÊ   r	   rV  rU  rt  r   r½  r  r
   rW  r>  r  r   r
  r   r\  r  rk  r?  r@  r	  r4  s        rX   rå   zCLIPConverter.converted”  ss  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØØ*,Ø#)ØÝ˜i™.œ.ðñ ô ñ

ô 

ˆ	õ  +Ô3ÝŒ_ÑÔ¥Ô 3µE¸&±M´MÀ3Ñ GÔ GÍÔI^ÑI`ÔI`Ðañ 
ô  
ˆ	Ôõ #1Ô"9åÔ$ÝÐZÑ[Ô[Ø&Øðñ ô õ
 Ô(¸%Ð@Ñ@Ô@ðñ	#
ô 	#
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	Ôõ $.Ô#?ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYØ"Øð	$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   r•  r•  “  s/   € € € € € ð'˜9ð 'ð 'ð 'ð 'ð 'ð 'rZ   r•  c                   ó   — e Zd Zdefd„ZdS )ÚLayoutLMv2Converterr\   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nré   FTrë   rì   rñ   rò   ró   rô   rõ   rù   rú   rü   r  s
             rX   rå   zLayoutLMv2Converter.converted¿  sy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐrZ   Nr  rj   rZ   rX   rš  rš  ¾  r  rZ   rš  c                   ó   — e Zd Zdefd„ZdS )ÚBlenderbotConverterr\   c           
      ó‚  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        d|j        › d�|j        |j        fg¬¦  «        |_        |S )NrJ   Fr8  r:  z$A:0 rò   )rö   rø   )rc   r.  rÍ   r/  r0  r   r   r
   r>  r[   r  r   r
  r   r  r  rk  r	  r]  s        rX   rå   zBlenderbotConverter.convertedæ  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø+˜2œ<Ð+Ð+Ð+à”˜rœÐ/ðð$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   r�  r�  å  r_  rZ   r�  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXGLMConverterc                 óT   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|S )Nrö  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z'XGLMConverter.vocab.<locals>.<listcomp>
  rÞ  rZ   r©   ))z<madeupword0>rÖ  )z<madeupword1>rÖ  )z<madeupword2>rÖ  )z<madeupword3>rÖ  )z<madeupword4>rÖ  )z<madeupword5>rÖ  )z<madeupword6>rÖ  r‡  rá  s      rX   rl   zXGLMConverter.vocab  s[   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  zð  zð  zñ  	zˆØˆrZ   c                 ó
   — d}|S rÊ  rj   rË  s      rX   r¡   zXGLMConverter.unk_id  rÌ  rZ   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz</s> $Az</s> $A </s> </s> $BrÏ  rÐ  rõ   rÃ  rä   s    rX   r	  zXGLMConverter.post_processor  sY   € ÝÔ,ØØ'à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
rZ   Nr>  rj   rZ   rX   r   r     sA   € € € € € ð	ð 	ð 	ðð ð ð
ð 
ð 
ð 
ð 
rZ   r   c                   ó>   — e Zd ZdZeZddhZ	 d„ Zd„ Zd„ Z	d„ Z
d„ Zd	S )
ÚGemmaConverterTz<start_of_turn>z<end_of_turn>c                 ó,   — t          j        dd¦  «        S ©Nr  rq  )r	   rt  rˆ  s     rX   r  zGemmaConverter.normalizer-  s   € ÝÔ" 3¨Ñ.Ô.Ð.rZ   c                 ó  — | j         j        df| j         j        df| j         j        dfg}|d„ |j        dd …         D ¦   «         z  }t          d„ |D ¦   «         ¦  «        s.t          d„ t          |¦  «        D ¦   «         d ¦  «        }|�d||<   |S )NrÖ  c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z(GemmaConverter.vocab.<locals>.<listcomp>6  rÞ  rZ   r©   c              3   ó.   K  — | ]}|d          dk    V — ŒdS )r   rÔ   Nrj   )ry   rk   s     rX   r  z'GemmaConverter.vocab.<locals>.<genexpr>9  s*   è è € Ð/Ð/ A�1�Q”4˜4’<Ð/Ð/Ð/Ð/Ð/Ð/rZ   c              3   ó8   K  — | ]\  }}|d          dk    ¯|V — ŒdS )r   rÕ   Nrj   )ry   r¤   rk   s      rX   r  z'GemmaConverter.vocab.<locals>.<genexpr>:  s4   è è € Ð"VÐ"V©¨¨AÀQÀqÄTÈXÒEUÐEU 1ÐEUÐEUÐEUÐEUÐ"VÐ"VrZ   )rÔ   rÖ  )rc   rå  r  r?  r¿   ÚanyÚnextrÂ   )r•   r”   rl   Úoverride_indexs       rX   rl   zGemmaConverter.vocab0  s¶   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆõ Ð/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ð 	4Ý!Ð"VÐ"Vµ¸5Ñ1AÔ1AÐ"VÑ"VÔ"VÐX\Ñ]Ô]ˆNØÐ)Ø(3��nÑ%àˆrZ   c                 ó,   — t          j        dd¦  «        S )Nr  Úmerged_with_previous)r
   rW  ©r•   r£  r[   s      rX   r  zGemmaConverter.pre_tokenizer@  s   € ÝÔ# CÐ)?Ñ@Ô@Ð@rZ   c                 ó
   — d}|S rÊ  rj   rË  s      rX   r¡   zGemmaConverter.unk_idC  rÌ  rZ   c                 óš   — t          j        t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g¦  «        S )Nrq  r  )r   rV  rt  rw  rx  r²  s      rX   r
  zGemmaConverter.decoderG  sA   € ÝÔ åÔ  ¨Ñ,Ô,ÝÔ%Ñ'Ô'Ý”‘”ðñ
ô 
ð 	
rZ   N)rÀ   rÇ   rÈ   r€  rÏ   r–  rø   r  rl   r  r¡   r
  rj   rZ   rX   r¦  r¦    s|   € € € € € ØÐØ.€Là'¨Ð9€Nðð/ð /ð /ðð ð ð Að Að Aðð ð ð
ð 
ð 
ð 
ð 
rZ   r¦  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚLlamaConverterTc                 óä   — | j                              d¦  «        df| j                              d¦  «        df| j                              d¦  «        dfg}|d„ |j        dd …         D ¦   «         z  }|S )Nr   rÖ  r   rq   c                 ó*   — g | ]}|j         |j        f‘ŒS rj   r�   r    s     rX   rz   z(LlamaConverter.vocab.<locals>.<listcomp>Z  rÞ  rZ   r©   )rc   r‹  r¿   rá  s      rX   rl   zLlamaConverter.vocabT  s   € àÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆrZ   c                 ó
   — d}|S r·   rj   rË  s      rX   r¡   zLlamaConverter.unk_id]  rÌ  rZ   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S ©Nrq  r  r   )Úcontentrœ  ©r   rt  rw  rx  rž  rV  ©r•   r£  r[   Úsequences       rX   r
  zLlamaConverter.decodera  óe   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 ð 	>Ø�œ°¸!Ð<Ñ<Ô<Ð=Ñ=ˆHÝÔ  Ñ*Ô*Ð*rZ   c                 óð   — t          | j        dd¦  «        r_g }t          | j        dd¦  «        r|t          j        d¬¦  «        gz  }|t          j        dd¬¦  «        gz  }t          j        |¦  «        S d S )Nr_   Tr[   rq  )Úprependr  )Úpatternr¼  )rb   rc   r	   ÚPrependrt  rV  )r•   r”   r¿  s      rX   r  zLlamaConverter.normalizerk  s…   € Ý�4Ô*¨H°dÑ;Ô;ð 	2ØˆHÝ�tÔ.Ð0BÀDÑIÔIð AØ�[Ô0¸Ð?Ñ?Ô?Ð@Ñ@�Ø�Ô,°SÀ%ÐHÑHÔHÐIÑIˆHÝÔ'¨Ñ1Ô1Ð1ØˆtrZ   c                 óŠ   — t          | j        dd¦  «        s,t          || j        ¦  «        }t          j        ||d¬¦  «        S d S )Nr_   TF©r£  rd   Úsplit)rb   rc   re   r
   r¤  r¥  s       rX   r  zLlamaConverter.pre_tokenizert  sL   € Ý�tÔ.°¸$Ñ?Ô?ð 	qÝ0Ð1AÀ4ÔCZÑ[Ô[ˆNÝ!Ô+¸ÐTbÐjoÐpÑpÔpÐpØˆtrZ   c                 ó   — d S rØ   rj   rä   s    rX   r	  zLlamaConverter.post_processorz  s   € àˆtrZ   N)
rÀ   rÇ   rÈ   r€  rl   r¡   r
  r  r  r	  rj   rZ   rX   r¶  r¶  Q  st   € € € € € ØÐðð ð ðð ð ð+ð +ð +ðð ð ðð ð ðð ð ð ð rZ   r¶  c                   ó   — e Zd Zdefd„ZdS )ÚMarkupLMConverterr\   c                 ó(  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd| j         j        ¬¦  «        ¦  «        }t          j	        |j
        ¬¦  «        |_        t          j	        ¦   «         |_        t          | j         j        ¦  «        }t          | j         j        ¦  «        }| j         j        }| j         j        }t'          j        |› d|› �|› d|› d|› �||f||fg¬¦  «        |_        |S )NrJ   Fr—  r:  z $A z $B rõ   )rc   r.  rÍ   r/  r0  r   r   rê   r
   r>  r[   r  r   r
  rÊ   r  r  r  r  r   r  r	  )	r•   r^  rl   rƒ   r  r  r  r  r  s	            rX   rå   zMarkupLMConverter.converted€  s1  € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%ØØÔ1Ô;ðñ ô ñ

ô 

ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ$Ð$˜sÐ$Ð$ØÐ+Ð+˜SÐ+Ð+ cÐ+Ð+à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô ð ÐrZ   Nr  rj   rZ   rX   rÊ  rÊ    s/   € € € € € ð"˜9ð "ð "ð "ð "ð "ð "rZ   rÊ  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚMoshiConverterTc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S ©NrQ   r�   ©	r   rà   r™   rY   r�   r‘   r’   r“   r”   ©r•   r  rÄ   r–   r—   r˜   s         rX   r™   zMoshiConverter.__init__¨  sÏ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,õ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
ó   Á(BÂBÂBc                 óÆ   — |j         j        }t          j        dd¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S r¨  )rÃ   rº   r	   rt  rV  rv  rŸ  s       rX   r  zMoshiConverter.normalizerµ  sg   € Ø$Ô4ÔIÐåÔ  UÑ+Ô+ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgrZ   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r»  r½  r¾  s       rX   r
  zMoshiConverter.decoder¿  rÀ  rZ   c                 ó4   — d}t          j        ||d¬¦  «        S )Nr`   FrÆ  )r
   r¤  r¥  s       rX   r  zMoshiConverter.pre_tokenizerÉ  s!   € Ø ˆÝÔ'°KÐP^ÐfkÐlÑlÔlÐlrZ   N)rÀ   rÇ   rÈ   r€  r™   r  r
  r  rj   rZ   rX   rÍ  rÍ  ¥  s^   € € € € € ØÐðð ð ðhð hð hð+ð +ð +ðmð mð mð mð mrZ   rÍ  c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚHeliumConverterTNc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S rÏ  rÐ  rÑ  s         rX   r™   zHeliumConverter.__init__Ñ  sÍ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,å#Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
rÒ  c                 ó¸  ‡ — ‰                       |¦  «        }t          t          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d„ t          |d„ ¬¦  «        D ¦   «         ¦  «         |                     t          ddd¬¦  «        g¦  «         | 
                    d	d
¬¦  «         |S )Nr‹  c                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r¨   r�  r�  s      €rX   rz   z-HeliumConverter.tokenizer.<locals>.<listcomp>ê  r‘  rZ   c                 ó<   — g | ]\  }}}t          |d |d¬¦  «        ‘ŒS )FT)r±   r²   Úsingle_wordr³   r´   s       rX   rz   z-HeliumConverter.tokenizer.<locals>.<listcomp>ð  s@   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐQUÐVÑVÔVðð ð rZ   c                 ó   — | d         S r·   rj   r¸   s    rX   rm   z+HeliumConverter.tokenizer.<locals>.<lambda>ò  r•  rZ   rn   ú
Fr°   rØ  r©   )rå  Úpad_id)rl   r   r   r¡   r€  rÂ   r¿   r˜  r€   r   Úenable_padding)r•   r”   r‚   r  rÅ   s   `    rX   r  zHeliumConverter.tokenizerÝ  s  ø€ Ø—z’z %Ñ(Ô(ˆÝÝØØ—{’{ 5Ñ)Ô)Ø"Ô7ðñ ô ñ
ô 
ˆ	ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð 	×Ò�j¨¸%ÈÐOÑOÔOÐPÑQÔQÐQØ× Ò ¨7¸1Ð Ñ=Ô=Ð=ØÐrZ   c                 ót   — g }|j         D ]-}|j        dk    r|d|j        fgz  }Œ||j        |j        fgz  }Œ.|S )Nz<0x0A>rÞ  )r¿   rž   rŸ   )r•   r”   rl   rž   s       rX   rl   zHeliumConverter.vocabù  sX   € ØˆØ”\ð 	6ð 	6ˆEØŒ{˜hÒ&Ð&Ø˜4 ¤Ð-Ð.Ñ.��à˜5œ;¨¬Ð4Ð5Ñ5��ØˆrZ   c                 ó
   — d}|S r·   rj   rË  s      rX   r¡   zHeliumConverter.unk_id  rÌ  rZ   c                 óÒ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r»  r½  r¾  s       rX   r
  zHeliumConverter.decoder  s]   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 	•X”^¨C°aÐ8Ñ8Ô8Ð9Ñ9ˆÝÔ  Ñ*Ô*Ð*rZ   c                 óx   — t          j        t          j        d¦  «        t          j        dd¦  «        g¦  «        S r¨  )r	   rV  rÄ  rt  rˆ  s     rX   r  zHeliumConverter.normalizer  s2   € ÝÔ#¥[Ô%8¸Ñ%=Ô%=½{Ô?RÐSWÐY^Ñ?_Ô?_Ð$`ÑaÔaÐarZ   c                 óR   — t          j        t          j        dd¦  «        g¦  «        S )NrÞ  Ú
contiguous)r
   rV  rW  r²  s      rX   r  zHeliumConverter.pre_tokenizer  s#   € ÝÔ&­Ô(<¸TÀ<Ñ(PÔ(PÐ'QÑRÔRÐRrZ   c                 ó:   — t          j        ddgg d¢dg¬¦  «        S )NrÏ  ri  )rÏ  ri  rÏ  rj  )rÏ  r   rõ   )r   r  rä   s    rX   r	  zHeliumConverter.post_processor  s@   € ÝÔ,àØððð ð ð ðð
ñ 
ô 
ð 	
rZ   rØ   )rÀ   rÇ   rÈ   r€  r™   r  rl   r¡   r
  r  r  r	  rj   rZ   rX   r×  r×  Î  s�   € € € € € ØÐð
ð 
ð 
ð 
ðð ð ð8ð ð ðð ð ð+ð +ð +ðbð bð bðSð Sð Sð
ð 
ð 
ð 
ð 
rZ   r×  c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚParakeetConverterTNc                 óZ  — || _         t          | d¦  «         t                               | |¦  «         t	          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _	        d S rÏ  )
r  r   rà   r™   rY   r�   r‘   r’   r“   r”   )r•   r  rƒ  r–   r—   r˜   s         rX   r™   zParakeetConverter.__init__*  sÔ   € Ø$ˆŒå˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,å#Ñ%Ô%ˆ	Ø× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
s   Á%(BÂBÂ Bc           
      ó„  ‡ — ‰                       |¦  «        }d„ t          |¦  «        D ¦   «         }t          ||¦  «        }t          t	          |||j        j        d‰ j        d ¬¦  «        ¦  «        }ˆ fd„t          |j        ¦  «        D ¦   «         }| 	                    d„ t          |d„ ¬¦  «        D ¦   «         ¦  «         |S )Nc                 ó    — i | ]\  }\  }}||“ŒS rj   rj   r£   s       rX   r¦   z/ParakeetConverter.tokenizer.<locals>.<dictcomp>:  s#   € ÐMÐMÐMÑ!1 ¡M T¨5�T˜1ÐMÐMÐMrZ   Tr�  c                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r¨   r�  r�  s      €rX   rz   z/ParakeetConverter.tokenizer.<locals>.<listcomp>H  r‘  rZ   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS r¯   r³   r´   s       rX   rz   z/ParakeetConverter.tokenizer.<locals>.<listcomp>N  r“  rZ   c                 ó   — | d         S r·   rj   r¸   s    rX   rm   z-ParakeetConverter.tokenizer.<locals>.<lambda>P  r•  rZ   rn   )rl   rÂ   rŠ   r   r   r¼   rr  r€  r¿   r˜  r€   )r•   r”   r‚   rš  rƒ   r  rÅ   s   `      rX   r  zParakeetConverter.tokenizer7  sû   ø€ Ø—z’z %Ñ(Ô(ˆàMÐMµY¸|Ñ5LÔ5LÐMÑMÔMˆ	Ý  ¨LÑ9Ô9ˆÝÝØØØÔ,Ô6ØØ"Ô7Øðñ ô ñ	
ô 	
ˆ	ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð ÐrZ   rØ   )rÀ   rÇ   rÈ   r€  r™   r  rj   rZ   rX   ré  ré  '  s=   € € € € € ØÐðð ð ð ðð ð ð ð rZ   ré  c            	      ó\  — t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   } | dd…         }d	}t          d
¦  «        D ]8}|| vr2|                      |¦  «         |                     d
|z   ¦  «         |dz  }Œ9d„ |D ¦   «         }t	          t          | |¦  «        ¦  «        S )a8  
    Returns list of utf-8 byte and a mapping to unicode strings. We specifically avoids mapping to whitespace/control
    characters the bpe code barfs on.

    The reversible bpe codes work on unicode strings. This means you need a large # of unicode characters in your vocab
    if you want to avoid UNKs. When you're at something like a 10B token dataset you end up needing around 5K for
    decent coverage. This is a significant percentage of your normal, say, 32K bpe vocab. To avoid that, we want lookup
    tables between utf-8 bytes and unicode strings.
    ú!Ú~r   õ   Â¡õ   Â¬õ   Â®õ   Ã¿Nr   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rj   )Úchr)ry   Úns     rX   rz   z$bytes_to_unicode.<locals>.<listcomp>k  s   € Ð	Ð	Ð	�Q�#ˆa‰&Œ&Ð	Ð	Ð	rZ   )rÍ   r~   Úordr   r|   r�  )ÚbsÚcsrú  Úbs       rX   Úbytes_to_unicoderÿ  W  s  € õ 	�U•3�s‘8”8�S ™XœX¨™\Ñ*Ô*Ñ+Ô+­dµ5½¸T¹¼ÅCÈÁIÄIÐPQÁMÑ3RÔ3RÑ.SÔ.SÑSÕVZÕ[`ÕadÐeiÑajÔajÕloÐptÑluÔluÐxyÑlyÑ[zÔ[zÑV{ÔV{Ñ{ð ð 
ˆAˆAˆAŒ€BØ	€AÝ�4‰[Œ[ð ð ˆØ�Bˆ;ˆ;Ø�IŠI�a‰LŒLˆLØ�IŠI�d˜Q‘hÑÔÐØ�‰FˆAøØ	Ð	˜"Ð	Ñ	Ô	€BÝ•�B˜‘”ÑÔÐrZ   c                   ó@   — e Zd ZdZ	 	 	 	 dd„Zdefd„Zd„ Zd	efd
„Z	dS )ÚTikTokenConverterz'
    A general tiktoken converter.
    Nús(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}{1,3}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Fc                 ó�   — || _         || _        || _        t          |t          ¦  «        r|                     ¦   «         n|| _        d S rØ   )r  rÃ  r[   rs  r|   r0  Úextra_special_tokens)r•   r  rÃ  r[   r  rÄ   s         rX   r™   zTikTokenConverter.__init__t  sN   € ð %ˆŒØˆŒØ 0ˆÔå+5Ð6JÍDÑ+QÔ+QÐkÐ ×%Ò%Ñ'Ô'Ð'ÐWkð 	Ô!Ð!Ð!rZ   Útiktoken_urlc                 óf  ‡‡‡— 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w ||¦  «        Št	          ¦   «         Šˆfd„Šg }i }‰                     ¦   «         D ]®\  }}|| ‰|¦  «        <   t          |¦  «        dk    rŒ'g }t          dt          |¦  «        ¦  «        D ]=}|d |…         ||d …         }
}	|	‰v r#|
‰v r|	|
z   ‰v r|                     |	|
|f¦  «         Œ>t          |ˆfd„d¬¦  «        }| 
                    |¦  «         Œ¯t          |d	„ d¬¦  «        }ˆfd
„|D ¦   «         }||fS )Nr   )Úload_tiktoken_bpezY`tiktoken` is required to read a `tiktoken` file. Install it with `pip install tiktoken`.c                 ól   •— d                      ˆfd„|                      d¦  «        D ¦   «         ¦  «        S )NrJ   c                 ó:   •— g | ]}‰t          |¦  «                 ‘ŒS rj   )rû  )ry   ÚcharÚbyte_encoders     €rX   rz   zdTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_string.<locals>.<listcomp>�  s$   ø€ ÐTÐTÐT¸˜L­¨T©¬Ô3ÐTÐTÐTrZ   zlatin-1)rŒ  Údecode)rþ  r  s    €rX   Útoken_bytes_to_stringzPTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_stringŽ  s6   ø€ Ø—7’7ÐTÐTÐTÐTÀÇÂÈÑ@SÔ@SÐTÑTÔTÑUÔUÐUrZ   r   c                 ó<   •— ‰| d                  ‰| d                  fS ri   rj   )rk   r/  s    €rX   rm   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>œ  s   ø€ °¸1¸Q¼4´À)ÈAÈaÌDÄ/Ð0R€ rZ   Fru   c                 ó   — | d         S )Nrq   rj   rs   s    rX   rm   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>ž  s
   € °°A´€ rZ   c                 óT   •— g | ]$} ‰|d          ¦  «         ‰|d         ¦  «        f‘Œ%S rx   rj   )ry   rt   r  s     €rX   rz   zETikTokenConverter.extract_vocab_merges_from_model.<locals>.<listcomp>Ÿ  s?   ø€ ÐcÐcÐcÐUXÐ(Ð(¨¨Q¬Ñ0Ô0Ð2GÐ2GÈÈAÌÑ2OÔ2OÐPÐcÐcÐcrZ   )Útiktoken.loadr  r—  Ú
ValueErrorrÿ  r}   rr   r~   r   r€   r�   )r•   r  r  rƒ   rl   rµ   Úrankr†   r‡   rˆ   r‰   r/  r  r  s              @@@rX   Úextract_vocab_merges_from_modelz1TikTokenConverter.extract_vocab_merges_from_modelƒ  sÈ  øøø€ ð	Ø7Ð7Ð7Ð7Ð7Ð7Ð7øÝð 	ð 	ð 	ÝØkñô ð ð	øøøð
 &Ð% lÑ3Ô3ˆ	Ý'Ñ)Ô)ˆð	Vð 	Vð 	Vð 	Vð 	Vð ˆØˆØ$Ÿ?š?Ñ,Ô,ð 
	!ð 
	!‰KˆE�4Ø26ˆEÐ'Ð'¨Ñ.Ô.Ñ/Ý�5‰zŒz˜QŠˆØØˆEÝ˜q¥# e¡*¤*Ñ-Ô-ð ;ð ;�Ø#(¨¨%¨¤=°%¸¸¸´-˜�Ø˜iÐ'Ð'¨G°yÐ,@Ð,@ÀgÐPWÑFWÐ\eÐEeÐEeØ—L’L '¨7°DÐ!9Ñ:Ô:Ð:øÝ˜5Ð&RÐ&RÐ&RÐ&RÐ\aÐbÑbÔbˆEØ�MŠM˜%Ñ Ô Ð Ð Ý˜Ð$6Ð$6ÀÐFÑFÔFˆØcÐcÐcÐcÐ\bÐcÑcÔcˆØ�fˆ}Ðs   … Œ&c                 óÀ   — |                       | j        ¦  «        \  }}t          t          ||d¬¦  «        ¦  «        }t	          |j        d¦  «        rd|j        _        |S )NF)r+  Úignore_mergesT)r  r  r   r   rý   r�   r  )r•   r‚   rƒ   r  s       rX   r  zTikTokenConverter.tokenizer¢  s\   € Ø#×CÒCÀDÄOÑTÔTÑˆ�fÝ�c ,°ÀÐGÑGÔGÑHÔHˆ	Ý�9”? OÑ4Ô4ð 	1Ø,0ˆIŒOÔ)ØÐrZ   r\   c                 óž  — |                       ¦   «         }t          j        t          j        t	          | j        ¦  «        dd¬¦  «        t          j        | j        d¬¦  «        g¦  «        |_        t          j        ¦   «         |_
        | j        �$|                     d„ | j        D ¦   «         ¦  «         t          j        d¬¦  «        |_        |S )NrO  FrP  rS  c                 ó2   — g | ]}t          |d d¬¦  «        ‘ŒS )FTr°   r³   r|  s     rX   rz   z/TikTokenConverter.converted.<locals>.<listcomp>µ  s'   € ÐjÐjÐjÀu•˜E¨e¸TÐBÑBÔBÐjÐjÐjrZ   r<  )r  r
   rV  rW  r   rÃ  r>  r[   r  r   r
  r  r2  r   r	  )r•   r  s     rX   rå   zTikTokenConverter.converted©  sÉ   € Ø—N’NÑ$Ô$ˆ	Ý"0Ô"9åÔ$¥U¨4¬<Ñ%8Ô%8À:ÐV[Ð\Ñ\Ô\ÝÔ(¸$Ô:OÐ[`ÐaÑaÔaðñ#
ô #
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	ÔàÔ$Ð0Ø×(Ò(ØjÐjÐPTÔPiÐjÑjÔjñô ð õ $.Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐrZ   )Nr  FN)
rÀ   rÇ   rÈ   rÉ   r™   rÊ   r  r  r   rå   rj   rZ   rX   r  r  o  sˆ   € € € € € ðð ð ð KØØ!ð
ð 
ð 
ð 
ð¸Cð ð ð ð ð>ð ð ð˜9ð ð ð ð ð ð rZ   r  ÚAlbertTokenizerÚBartTokenizerÚBarthezTokenizerÚBertTokenizerÚBigBirdTokenizerÚBlenderbotTokenizerÚCamembertTokenizerÚCLIPTokenizerÚCodeGenTokenizerÚConvBertTokenizerÚDebertaTokenizerÚDebertaV2TokenizerÚDistilBertTokenizerÚDPRReaderTokenizerÚDPRQuestionEncoderTokenizerÚDPRContextEncoderTokenizerÚElectraTokenizerÚFNetTokenizerÚFunnelTokenizerÚGPT2TokenizerÚHerbertTokenizerÚLayoutLMTokenizerÚLayoutLMv2TokenizerÚLayoutLMv3TokenizerÚLayoutXLMTokenizerÚLongformerTokenizerÚLEDTokenizerÚLxmertTokenizerÚMarkupLMTokenizerÚMBartTokenizerÚMBart50TokenizerÚMPNetTokenizerÚMobileBertTokenizerÚMvpTokenizerÚNllbTokenizerÚOpenAIGPTTokenizerÚPegasusTokenizerÚQwen2TokenizerÚReformerTokenizerÚRemBertTokenizerÚRobertaTokenizerÚRoFormerTokenizerÚSeamlessM4TTokenizerÚSqueezeBertTokenizerÚT5TokenizerÚUdopTokenizerÚVideoPrismTokenizerÚWhisperTokenizerÚXLMRobertaTokenizerÚXLNetTokenizerÚSplinterTokenizer)ÚXGLMTokenizerÚLlamaTokenizerÚCodeLlamaTokenizerÚGemmaTokenizerÚPhi3TokenizerFc                 ó¸  — | j         j        }|t          v r,|s*t          |         } || ¦  «                             ¦   «         S | j        }t          |t          ¦  «        rrt          j         	                    |¦  «        rSt          |¦  «        rDddlm} | | _        t                               d¦  «          ||¦  «                             ¦   «         S 	 t                               d¦  «         t!          | j        | j        ¬¦  «                             ¦   «         S # t$          $ r7 t'          dt)          t                               ¦   «         ¦  «        › �¦  «        ‚w xY w)aˆ  
    Utilities to convert a slow tokenizer instance in a fast tokenizer instance.

    Args:
        transformer_tokenizer ([`~tokenization_utils_base.PreTrainedTokenizer`]):
            Instance of a slow tokenizer to convert in the backend tokenizer for
            [`~tokenization_utils_base.PreTrainedTokenizerFast`].
       from_tiktoken (bool, optional): Whether to use the `tiktoken` library to convert the tokenizer instead of sentencepiece.
            Defaults to False.

    Return:
        A instance of [`~tokenizers.Tokenizer`] to be used as the backend tokenizer of a
        [`~tokenization_utils_base.PreTrainedTokenizerFast`]
    r   )ÚMistralConverterz#Converting from Mistral tekken.jsonzConverting from Tiktoken)r  r  zÌConverting from SentencePiece and Tiktoken failed, if a converter for SentencePiece is available, provide a model path with a SentencePiece tokenizer.model file.Currently available slow->fast converters: )r„  rÀ   ÚSLOW_TO_FAST_CONVERTERSrå   r  rs  rÊ   ÚosÚpathÚisfiler   Úintegrations.mistral.tokenizerrR  rc   ÚloggerÚinfor  r  r—  r  rÍ   r0  )Útransformer_tokenizerÚfrom_tiktokenÚtokenizer_class_nameÚconverter_classr  rR  s         rX   Úconvert_slow_tokenizerr^  ù  ss  € ð  1Ô:ÔCÐØÕ6Ð6Ð6¸}Ð6Ý1Ð2FÔGˆØˆÐ4Ñ5Ô5×?Ò?ÑAÔAÐAà&Ô1€JÝ�*�cÑ"Ô"ð ¥r¤w§~¢~°jÑ'AÔ'Að ÕF^Ð_iÑFjÔFjð ØDÐDÐDÐDÐDÐDà3HÐÔ0Ý�ŠÐ9Ñ:Ô:Ð:ØÐ 
Ñ+Ô+×5Ò5Ñ7Ô7Ð7ð	Ý�KŠKÐ2Ñ3Ô3Ð3Ý$Ø0Ô;Ø%:Ô%Oðñ ô ÷ Ši‰kŒkðøõ ð 	ð 	ð 	Ýðeå>BÕCZ×C_ÒC_ÑCaÔCaÑ>bÔ>bðeð eñô ð ð	øøøs   ÃAD ÄAE)rJ   rØ   )F)WrÉ   rT  r�  Úcollections.abcr   Ú	packagingr   Ú
tokenizersr   r   r   r   r	   r
   r   r½   r   r   r   Úintegrations.mistral.constantsr   Úutilsr   r   r   r   Úutils.import_utilsr   Ú
get_loggerrÀ   rX  r  r(  rY   ÚboolrÊ   re   rŠ   rŒ   rÏ   rÞ   rà   rç   r  r   r#  r&  r6  rE  rL  rY  ra  rh  ro  r®  rÈ  rÓ  rì  rô  r!  r*  r7  r@  rG  rM  rQ  rU  rW  rn  r€  r„  r‡  r’  r•  rš  r�  r   r¦  r¶  rÊ  rÍ  r×  ré  rÿ  r  rS  r^  rj   rZ   rX   ú<module>rg     ss  ððð ð 
€	€	€	Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &à Ð Ð Ð Ð Ð Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à DÐ DÐ DÐ DÐ DÐ DØ `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð €ð8 $ð 'ð 'ð 'ñ Ð ð>Gð Gð Gð Gð"¨$ð Àsð ð ð ð ðð °jÀ´oÈÑ6Lð ð ð ð ð02ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ðjð ð ð ð Ð"8ñ ô ð ð"I˜cð I dð Ið Ið Ið Ið$ð $ð $ð $ð $ñ $ô $ð $ð$ð $ð $ð $ð $�Iñ $ô $ð $ðN/ð /ð /ð /ð /˜	ñ /ô /ð /ðd$ð $ð $ð $ð $�iñ $ô $ð $ðN$ð $ð $ð $ð $�Yñ $ô $ð $ðNð ð ð ð ˜ñ ô ð ð6#ð #ð #ð #ð #�Iñ #ô #ð #ðLð ð ð ð �yñ ô ð ð>)ð )ð )ð )ð )�Yñ )ô )ð )ðXð ð ð ð �yñ ô ð ð:$ð $ð $ð $ð $˜	ñ $ô $ð $ðNð ð ð ð �yñ ô ð ð>xð xð xð xð x�9ñ xô xð xðv"
ð "
ð "
ð "
ð "
�lñ "
ô "
ð "
ðJ
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð -ð -ð -ð -ð -˜ñ -ô -ð -ð`
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðBGð Gð Gð Gð G�\ñ Gô Gð GðT-ð -ð -ð -ð -�|ñ -ô -ð -ð`,ð ,ð ,ð ,ð ,�Lñ ,ô ,ð ,ð^
ð 
ð 
ð 
ð 
˜<ñ 
ô 
ð 
ð2,ð ,ð ,ð ,ð ,˜,ñ ,ô ,ð ,ð^"
ð "
ð "
ð "
ð "
�\ñ "
ô "
ð "
ðJ	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð@	ð 	ð 	ð 	ð 	˜lñ 	ô 	ð 	ð;xð ;xð ;xð ;xð ;x�|ñ ;xô ;xð ;xð|ð ð ð ð �,ñ ô ð ð8
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ðð ð ð ð ˜+ñ ô ð ð
!ð !ð !ð !ð !�yñ !ô !ð !ðH	
ð 	
ð 	
ð 	
ð 	
�|ñ 	
ô 	
ð 	
ð(ð (ð (ð (ð (�Iñ (ô (ð (ðV$ð $ð $ð $ð $˜)ñ $ô $ð $ðNð ð ð ð ˜)ñ ô ð ð:
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð61
ð 1
ð 1
ð 1
ð 1
�\ñ 1
ô 1
ð 1
ðh+ð +ð +ð +ð +�\ñ +ô +ð +ð\#ð #ð #ð #ð #˜	ñ #ô #ð #ðL&mð &mð &mð &mð &m�\ñ &mô &mð &mðRV
ð V
ð V
ð V
ð V
�lñ V
ô V
ð V
ðr-ð -ð -ð -ð -˜ñ -ô -ð -ð`ð ð ð0Kð Kð Kð Kð Kñ Kô Kð Kð\9Ø�ð9àÐ%ð9ð Ð(ð9ð �]ð	9ð
 Ð(ð9ð Ð.ð9ð Ð,ð9ð �]ð9ð ˜ð9ð ˜ð9ð Ð(ð9ð Ð,ð9ð ˜=ð9ð ˜-ð9ð " =ð9ð  ! -ð!9ð" ˜ð#9ð 9ð$ �_ð%9ð& �ð'9ð( �]ð)9ð* Ð(ð+9ð, ˜ð-9ð. ˜=ð/9ð0 Ð+ð19ð2 Ð-ð39ð4 Ð+ð59ð6 Ð$ð79ð8 �}ð99ð: Ð*ð;9ð< �nð=9ð> Ð(ð?9ð@ �nðA9ðB ˜=ðC9ðD Ð$ðE9ð 9ð 9ðF �]ðG9ðH Ð,ðI9ðJ Ð(ðK9ðL �nðM9ðN Ð*ðO9ðP Ð(ðQ9ðR Ð(ðS9ðT Ð*ðU9ðV Ð0ðW9ðX ˜MðY9ðZ �;ð[9ð\ �]ð]9ð^ Ð.ð_9ð` Ð(ða9ðb Ð.ðc9ðd �nðe9ðf Ð*ðg9ð 9ðh #Ø$Ø(Ø$Ø#ðq9ð 9ð 9Ð ðx(ð (È)ð (ð (ð (ð (ð (ð (rZ   