§
    ‚Štj ã                   óÆ  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6  e6j7        e8¦  «        Z9dZ:dZ;dZ<dZ=dZ>e,dz  Z,ee e!e"dœZ?e:e=dœZ@ e5e,¦  «         G d„ de/¦  «        ¦   «         ZAeAZBdS )z‘
Tokenization classes for fast tokenizers (provided by HuggingFace's tokenizers library). For slow (python) tokenizers
see tokenization_utils.py
é    N)Údefaultdict)ÚIterable)Úcopyfile)ÚAny)Úis_offline_mode)Ú
AddedTokenÚ
processors)ÚEncoding)Ú	Tokenizer)ÚDecoder)ÚBPEÚUnigram)Ú
BpeTrainerÚUnigramTrainerÚWordLevelTrainerÚWordPieceTrainer)Úcached_fileé   )ÚSpmConverter)Úconvert_gguf_tokenizer)Úload_gguf_checkpoint)ÚINIT_TOKENIZER_DOCSTRINGÚBatchEncodingÚPreTokenizedInputÚPreTrainedTokenizerBaseÚ	TextInputÚTruncationStrategyÚgenerate_merges)ÚPaddingStrategyÚadd_end_docstringsÚloggingztokenizer.jsonzspecial_tokens_map.jsonztokenizer_config.jsonztokenizer.modelzadded_tokens.jsonu¡  
        tokenizer_object ([`tokenizers.Tokenizer`]):
            A [`tokenizers.Tokenizer`] object from ðŸ¤— tokenizers to instantiate from. See [Using tokenizers from ðŸ¤—
            tokenizers](../fast_tokenizers) for more information.
        tokenizer_file ([`str`]):
            A path to a local JSON file representing a previously serialized [`tokenizers.Tokenizer`] object from ðŸ¤—
            tokenizers.
)r   r   Ú	WordLevelÚ	WordPiece)Útokenizer_fileÚ
vocab_filec            )       óª  ‡ — e Zd ZdZeZdZdZedLd„¦   «         Z	ˆ fd„Z
edefd„¦   «         Zedefd„¦   «         ZdMd	ed
edz  dee         fd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Zd„ Zedefd„¦   «         Zdeeef         fd„Zedeeef         fd„¦   «         Zedeeef         fd„¦   «         Zedeeef         fd„¦   «         ZeZeZ deeef         fd„Z!defd„Z"defd„Z#ede$fd„¦   «         Z%ede&fd„¦   «         Z'	 	 	 	 	 	 	 dNde(dedz  dedz  d ed!ed"ed#ed$edeeee)f         e*e(         f         fd%„Z+d&edefd'„Z,d(ededz  fd)„Z-dLd*e*eez           defd+„Z.dLd,edefd-„Z/dLd.ee*e         z  d/edee*e         z  fd0„Z0dOd1ed,edz  d2ede*e         fd3„Z1d4e2d5e3d6ed7ed8edz  d9edz  fd:„Z4dde2j5        e3j6        dd;ddddddddddddfd1e7e8z  e*e7         z  e*e8         z  d<e7e8z  e*e7         z  e*e8         z  dz  d2ed4e2d5e3d6edz  d7ed=ed8edz  d9edz  d>edz  dedz  dedz  d ed!ed"ed#ed$ed?edz  de9f(d@„Z:dAe*e         defdB„Z;	 	 dPdCee*e         z  d/edDedz  defdE„Z<	 	 dQd	ee=j>        z  dFeedGf         dHedz  d
edz  deedGf         f
dI„Z?	 	 	 dRdJ„Z@e	 	 	 	 	 	 	 dSdK„¦   «         ZAˆ xZBS )TÚTokenizersBackendaQ  
    Base class for all fast tokenizers (wrapping HuggingFace tokenizers library).

    Inherits from [`~tokenization_utils_base.PreTrainedTokenizerBase`].

    Handles all the shared methods for tokenization and special tokens, as well as methods for
    downloading/caching/loading pretrained tokenizers, as well as adding tokens to the vocabulary.

    This class also contains the added tokens in a unified way on top of all tokenizers so we don't have to handle the
    specific vocabulary augmentation methods of the various underlying dictionary structures (BPE, sentencepiece...).
    NFc                 ó  ‡$— t          |¦  «        }|                     dd¦  «        }|�Lt          j                             |¦  «        r-| t
          u sd| j        vs|rt          j        |¦  «        |d<   |S |��nt          j                             |¦  «        �rNt          |d¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |                     di ¦  «                             d¦  «        }|d	vret          |¦  «        }t          |d         ¦  «        }	i |	d
<   |dk    rg |	d<   |	|d<   g |d<   t          j        t          j        |¦  «        ¦  «        }
nt          j        |¦  «        }
|
j        |d<   |
j        |d<   |
j        |d<   |
j        �
|
j        |d<   |
j        �
|
j        |d<   |                     d¦  «        }|r�|                     dd¦  «        dk    r	|d         }nt%          |t&          ¦  «        s|g}|D ]C}|                     d¦  «        dk    r(d|v r$ddl}|                     |d         ¦  «        |d<    nŒD|                     di ¦  «                             d
d¦  «        }| j        €8t%          |t&          ¦  «        r"t'          t/          t0          |¦  «        ¦  «        }nÎ| j        j        dk    rFt%          |t&          ¦  «        r0|r.t%          |d         t&          t0          f¦  «        rd„ |D ¦   «         }nx| j        j        dk    rd„ t5          |¦  «        D ¦   «         }nN| j        j        dk    s| j        j        dk    r.t%          |t&          ¦  «        rd„ t5          |¦  «        D ¦   «         }||d
<   t7          | dd¦  «        }d|                     di ¦  «        v r,|r*|j        dk    r|d         d         }d „ |D ¦   «         }||d<   |S |                     d!¦  «        }|                     d"¦  «        }|                     d
¦  «        }|                     d¦  «        }t%          |t8          ¦  «        rd|                     d#¦  «        rOt          j                             |¦  «        r0d$d%lm}  ||¬&¦  «                              |¦  «        \  |d
<   |d<   |S t%          |t8          ¦  «        �rt          j                             |¦  «        �rè|                     d'¦  «        �rÒ	 d$d(lm!}  ||¦  «        } |j"        | j        fi |¤Ž}	 d$d)lm#} |                     | j        ¦  «        }|�tI          |d*¦  «        r |j%        dCi |¤Ž}n=# tL          $ r0}tN           (                    d+| j        › d,|› d-�¦  «         Y d}~nd}~ww xY wtI          | d.¦  «        r | j)        dCi |¤Ž}d|v�r•| t
          u s
d| j        v�r‚|                     d
d¦  «        }|                     dd¦  «        }|                     d/¦  «        pi }|�–|r”d0„ | *                    ¦   «         D ¦   «         }| *                    ¦   «         D ]a\  }}tW          |¦  «        }t9          |¦  «        }|                     |¦  «        }|r'||k    r!||vr|                     |¦  «        ||<   |||<   ŒbtY          j-        |j.        ||¬1¦  «        }|�‰||d<   |j.        j/        }|j0        dk    r| 1                    d2|j2        pd3¦  «         |j3        dk    r| 1                    d4|j4        pd5¦  «         |j5        dk    r| 1                    d6|j6        pd7¦  «         nu# tL          $ rh}tN           (                    d8|› d9|› d:�¦  «         d$d;lm7}  |||                     d<¦  «        ¬=¦  «        } |  8                    ¦   «         |d<   Y d}~nd}~ww xY w|S |€At%          |t8          ¦  «        r,t          j                             |¦  «        r||d
<   |d
         }|€At%          |t8          ¦  «        r,t          j                             |¦  «        r||d<   |d         }|€¬| j        �¥| j        j        dk    r•t%          |t           ¦  «        r€d>tr          tt                   d?t&          t8                   fˆ$fd@„Š$g dA¢}!tw          ¦   «         }"|!D ]+}#|#|v r%|" <                     ‰$||#         g¦  «        ¦  «         Œ,t{          ||"¬B¦  «        }||d<   |S )Dzª
        Build a `tokenizers.Tokenizer` backend from the available serialization files (tokenizer.json, sentencepiece
        models, tekken.json, vocab/merges).
        r$   NÚ__init__Útokenizer_objectúutf-8©ÚencodingÚmodelÚtype)Nr   Úvocabr   ÚmergesÚadded_tokensÚpost_processorÚtokenizer_paddingÚtokenizer_truncationÚ_json_truncationÚ_json_paddingÚ
normalizerÚSequenceÚnormalizersÚPrecompiledÚprecompiled_charsmapr   Ú_spm_precompiled_charsmapr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Útuple)Ú.0Úitems     úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/tokenization_utils_tokenizers.pyú
<listcomp>z>TokenizersBackend.convert_to_native_format.<locals>.<listcomp>µ   s   € Ð;Ð;Ð;¨T�U 4™[œ[Ð;Ð;Ð;ó    r"   c                 ó   — i | ]\  }}||“Œ	S r?   r?   ©rA   ÚiÚtokens      rC   ú
<dictcomp>z>TokenizersBackend.convert_to_native_format.<locals>.<dictcomp>·   s   € ÐCÐCÐC¡h a¨˜ ÐCÐCÐCrE   r#   c                 óT   — i | ]%\  }}t          |t          ¦  «        r|d          n||“Œ&S ©r   )Ú
isinstanceÚlistrG   s      rC   rJ   z>TokenizersBackend.convert_to_native_format.<locals>.<dictcomp>º   s8   € ÐpÐpÐpÑS[ÐSTÐV[­°E½4Ñ)@Ô)@ÐK˜U 1œX˜XÀeÈQÐpÐpÐprE   c                 óš   — g | ]H}t          |t          ¦  «        r"t          |                     d ¦  «        ¦  «        nt          |¦  «        ‘ŒIS )ú )rM   Ústrr@   Úsplit)rA   Úmerges     rC   rD   z>TokenizersBackend.convert_to_native_format.<locals>.<listcomp>À   sK   € ÐrÐrÐrÐbgµZÀÅsÑ5KÔ5KÐ]�% §¢¨CÑ 0Ô 0Ñ1Ô1Ð1ÕQVÐW\ÑQ]ÔQ]ÐrÐrÐrrE   r%   Úmerges_fileztekken.jsonr   )ÚMistralConverter)r%   ú.model)ÚSentencePieceExtractor)ÚSLOW_TO_FAST_CONVERTERSÚconvert_from_spmz,Could not reorder vocab using converter for z due to z/. Falling back to raw SentencePiece extraction.Úconvert_from_spm_modelÚadded_tokens_decoderc                 ó   — i | ]\  }}||“Œ	S r?   r?   )rA   rI   Útoken_ids      rC   rJ   z>TokenizersBackend.convert_to_native_format.<locals>.<dictcomp>ö   s   € Ð&\Ð&\Ð&\¹?¸5À( x°Ð&\Ð&\Ð&\rE   )Úprotor0   r1   Ú	bos_tokenú<s>Ú	eos_tokenú</s>Ú	unk_tokenz<unk>z+Could not extract SentencePiece model from z$ using sentencepiece library due to z%. Falling back to TikToken extractor.)ÚTikTokenConverterÚextra_special_tokens)r%   re   ÚvaluesÚreturnc                 óÖ   •— g }| D ]b}|€Œt          |t          t          f¦  «        r|                      ‰|¦  «        ¦  «         Œ@|                     t          |¦  «        ¦  «         Œc|S ©N)rM   rN   r@   ÚextendÚappendrQ   )rf   Ú	collectedÚvalÚ_iter_special_tokenss      €rC   rn   zHTokenizersBackend.convert_to_native_format.<locals>._iter_special_tokens)  s{   ø€ Ø')�	Ø!ð 3ð 3�CØ�{Ø Ý! #­­e }Ñ5Ô5ð 3Ø!×(Ò(Ð)=Ð)=¸cÑ)BÔ)BÑCÔCÐCÐCà!×(Ò(­¨S©¬Ñ2Ô2Ð2Ð2Ø Ð rE   )	Ú	pad_tokenrc   r_   ra   Ú	sep_tokenÚ	cls_tokenÚ
mask_tokenÚadditional_special_tokensre   )Úskip_tokensr?   )>ÚdictÚpopÚosÚpathÚisfiler'   Ú__dict__ÚTokenizerFastÚ	from_fileÚopenÚjsonÚloadÚgetÚfrom_strÚdumpsr3   ÚpaddingÚ
truncationrM   rN   Úbase64Ú	b64decoder.   Úmapr@   Ú__name__Ú	enumerateÚgetattrrQ   ÚendswithÚconvert_slow_tokenizerrU   Úextract_vocab_merges_from_modelrW   ÚextractrX   ÚhasattrrY   Ú	ExceptionÚloggerÚwarningrZ   ÚitemsÚintr   Úbuild_tokenizer_from_spm_protor^   Útrainer_specÚbos_idÚ
setdefaultÚ	bos_pieceÚeos_idÚ	eos_pieceÚunk_idÚ	unk_piecerd   Ú	convertedr   r   ÚsetÚupdater   )%ÚclsÚtrust_remote_codeÚkwargsÚlocal_kwargsÚfast_tokenizer_fileÚtokenizer_handleÚtokenizer_jsonÚ
model_typeÚminimal_tokenizer_jsonÚminimal_modelÚtok_from_fileÚnormalizer_configr8   r…   r0   r1   r%   rT   rU   rW   Ú	extractorrX   Úconverter_classÚer[   Úid_to_tokenr]   Ú	new_tokenÚcurrent_tokenr*   Ú
proto_specrd   Ú	converterÚspecial_tokens_keysrt   Úkeyrn   s%                                       @rC   Úconvert_to_native_formatz*TokenizersBackend.convert_to_native_formate   s  ø€ õ ˜F‘|”|ˆØ*×.Ò.Ð/?ÀÑFÔFÐð  Ð+Ý”—’Ð2Ñ3Ô3ð ,àÕ)Ð)Ð)¨Z¸s¼|Ð-KÐ-KÐO`Ð-Kå/<Ô/FÐGZÑ/[Ô/[ˆLÐ+Ñ,ØÐØ Ñ,µ´·²Ð@SÑ1TÔ1TÑ,õ Ð)°GÐ<Ñ<Ô<ð =Ð@PÝ!%¤Ð+;Ñ!<Ô!<�ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð (×+Ò+¨G°RÑ8Ô8×<Ò<¸VÑDÔDˆJØÐ!2Ð2Ð2Ý)-¨nÑ)=Ô)=Ð&Ý $ ^°GÔ%<Ñ =Ô =�Ø)+�˜gÑ&Ø Ò&Ð&Ø.0�M (Ñ+Ø2?Ð& wÑ/Ø9;Ð& ~Ñ6Ý -Ô 6µt´zÐBXÑ7YÔ7YÑ ZÔ Z��å -Ô 7Ð8KÑ LÔ L�à-:Ô-IˆLÐ)Ñ*Ø0=Ô0EˆLÐ,Ñ-Ø3@Ô3KˆLÐ/Ñ0ð Ô'Ð3Ø3@Ô3K�Ð/Ñ0ØÔ$Ð0Ø0=Ô0E�˜_Ñ-ð !/× 2Ò 2°<Ñ @Ô @ÐØ ð Ø$×(Ò(¨°Ñ6Ô6¸*ÒDÐDØ(9¸-Ô(HÐ%Ð%Ý#Ð$5µtÑ<Ô<ð <Ø):Ð(;Ð%Ø"3ð ð �JØ!—~’~ fÑ-Ô-°Ò>Ð>ÐCYÐ]gÐCgÐCgØ%˜˜˜àDJ×DTÒDTØ&Ð'=Ô>ñEô E˜Ð%@ÑAð ˜øà"×&Ò& w°Ñ3Ô3×7Ò7¸ÀÑFÔFˆEØŒyÐ Ý˜e¥TÑ*Ô*ð 4Ý ¥¥U¨EÑ!2Ô!2Ñ3Ô3�EøØ”Ô# yÒ0Ð0Ý˜e¥TÑ*Ô*ð <¨uð <½ÀEÈ!ÄHÍtÕUZÈmÑ9\Ô9\ð <Ø;Ð;°UÐ;Ñ;Ô;�EøØ”Ô# {Ò2Ð2ØCÐCµ)¸EÑ2BÔ2BÐCÑCÔC��Ø”Ô# uÒ,Ð,°´	Ô0BÀkÒ0QÐ0QÝ˜e¥TÑ*Ô*ð qØpÐpÕ_hÐinÑ_oÔ_oÐpÑpÔp�EØ$)ˆL˜Ñ!å   g¨tÑ4Ô4ˆJØ˜>×-Ò-¨g°rÑ:Ô:Ð:Ð:À
Ð:ÈzÔObÐfkÒOkÐOkØ'¨Ô0°Ô:�ØrÐrÐkqÐrÑrÔr�Ø)/�˜XÑ&àÐà!×%Ò% lÑ3Ô3ˆ
Ø"×&Ò& }Ñ5Ô5ˆØ× Ò  Ñ)Ô)ˆØ×!Ò! (Ñ+Ô+ˆõ �j¥#Ñ&Ô&ð 	 ¨:×+>Ò+>¸}Ñ+MÔ+Mð 	 ÕRTÔRY×R`ÒR`ÐakÑRlÔRlð 	 Ø@Ð@Ð@Ð@Ð@Ð@à<LÐ<LØ%ð=ñ =ô =ç-Ò-¨jÑ9Ô9ñ :ˆL˜Ñ! <°Ñ#9ð  Ðõ �j¥#Ñ&Ô&ñ H	 ­2¬7¯>ª>¸*Ñ+EÔ+Eñ H	 È*×J]ÒJ]Ð^fÑJgÔJgñ H	 ðFIØJÐJÐJÐJÐJÐJð 3Ð2°:Ñ>Ô>�	Ø0˜yÔ0°´ÐKÐK¸lÐKÐK�ð	ØOÐOÐOÐOÐOÐOà&=×&AÒ&AÀ#Ä,Ñ&OÔ&O�OØ&Ð2µw¸ÐPbÑ7cÔ7cÐ2Ø'G Ô'GÐ'WÐ'WÈ,Ð'WÐ'W˜øøÝ ð ð ð Ý—N’Nð PÀsÄ|ð  Pð  PÐ]^ð  Pð  Pð  Pñô ð ð ð ð ð ð øøøøðøøøõ ˜3Ð 8Ñ9Ô9ð NØ#= 3Ô#=Ð#MÐ#MÀÐ#MÐ#M�Lð
 &¨\Ð9Ñ9ØÕ,Ð,Ð,°
À#Ä,Ð0NÑ0Nà(×,Ò,¨W°dÑ;Ô;�EØ)×-Ò-¨h¸Ñ=Ô=�Fð ,8×+;Ò+;Ð<RÑ+SÔ+SÐ+YÐWYÐ(ØÐ(Ð-AÐ(Ø&\Ð&\ÈeÏkÊkÉmÌmÐ&\Ñ&\Ô&\˜Ø3G×3MÒ3MÑ3OÔ3Oð Bð BÑ/˜H iÝ'*¨8¡}¤}˜HÝ(+¨I©¬˜IØ,7¯OªO¸HÑ,EÔ,E˜MØ,ð B°À)Ò1KÐ1KÐPYÐafÐPfÐPfØ38·9²9¸]Ñ3KÔ3K  iÑ 0Ø8A ¨HÑ 5øå'3Ô'RØ'œoØ#Ø%ð(ñ (ô (Ð$ð
 (Ð3Ø;K˜Ð%7Ñ8ð &/¤_Ô%A˜
Ø%Ô,°Ò1Ð1Ø(×3Ò3°KÀÔAUÐA^ÐY^Ñ_Ô_Ð_Ø%Ô,°Ò1Ð1Ø(×3Ò3°KÀÔAUÐA_ÐY_Ñ`Ô`Ð`Ø%Ô,°Ò1Ð1Ø(×3Ò3°KÀÔAUÐA`ÐY`ÑaÔaÐaøøåð 
Ið 
Ið 
IÝ—’ð:À*ð :ð :Ðrsð :ð :ð :ñô ð ð FÐEÐEÐEÐEÐEà-Ð-Ø)À×@PÒ@PÐQgÑ@hÔ@hðñ ô �	ð 4=×3FÒ3FÑ3HÔ3H�Ð/Ñ0Ð0Ð0Ð0Ð0Ð0øøøøð
Iøøøð  Ðð ˆ=�Z¨
µCÑ8Ô8ˆ=½R¼W¿^º^ÈJÑ=WÔ=Wˆ=Ø$.ˆL˜Ñ!Ø  Ô)ˆEØˆ>�j¨µcÑ:Ô:ˆ>½r¼w¿~º~ÈkÑ?ZÔ?Zˆ>Ø%0ˆL˜Ñ"Ø! (Ô+ˆFð ˆ>˜cœiÐ3¸¼	Ô8JÈeÒ8SÐ8SÕXbÐchÕjnÑXoÔXoÐ8Sð	!­Xµc¬]ð 	!½tÅC¼yð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð
#ð 
#ð 
#Ðõ %(¡E¤EˆKØ*ð Rð R�Ø˜,Ð&Ð&Ø×&Ò&Ð';Ð';¸\È#Ô=NÐ<OÑ'PÔ'PÑQÔQÐQøå$ U¸ÐDÑDÔDˆFØ%+ˆL˜Ñ"ØÐsV   Â)C
Ã
CÃCÔ $] Ô%?U% Õ$] Õ%
VÕ/&VÖ] ÖVÖF:] Ý
_Ý$A_ß_c           	      óV  •‡ — |                      dd ¦  «        }|                      dd ¦  «        }|                      dd ¦  «         |                      dd ¦  «        }|                      dd ¦  «        }|                      dd ¦  «        }|                     di ¦  «        }|                     dd	¦  «        }	|                     d
¦  «        }
|                     d¦  «        }|                     d¦  «        }d }|�t          j        |¦  «        }�nî|�5t          j                             |¦  «        rt          j        |¦  «        }�n·|�¡t          |                     dd¦  «        |fi |¤Ž}t          |¦  «        }|d         d         }|d         }|d         }t          ||¦  «        \  }}|                     |¦  «         t          |¦  «        dk    r|                     |¦  «         �n| j        €÷|�õ|�Qt          |t           ¦  «        r|nd„ t#          |¦  «        D ¦   «         }t          t%          ||dd ¬¦  «        ¦  «        }n¸t          |t           ¦  «        r!t          t%          |g dd ¬¦  «        ¦  «        }n‚t          |t&          ¦  «        rV|rTt          |d         t(          t&          f¦  «        r2t          t+          ||                     dd¦  «        ¬¦  «        ¦  «        }n| j        €t-          d¦  «        ‚|€5|€3| j        €,|                     dd¦  «         |                     dd¦  «         |�|| _        | j        €t-          d¦  «        ‚|                      dd ¦  «        p| j        j        p|}|�ƒ | j        j        d=i |¤Ž |                     d |d          ¦  «         |                     d!|d"         ¦  «         |                     d#|d#         ¦  «         |                     d$|d%         ¦  «         n| j                             ¦   «          |                      d&d ¦  «        p| j        j        p|}|�ž | j        j        d=i |¤Ž |                     d'|d'         ¦  «         |                     d(|d)         ¦  «         |                     d*|d"         ¦  «         |                     d |d+         ¦  «         |                     d,|d,         ¦  «         d-|vrd.|d-<   d/|v pd0|v }|                     d/d	¦  «        | _        |                     d0d	¦  «        | _        |                      d1d ¦  «        x}r|| j        _        |p| j        j        d u | _          tC          ¦   «         j"        d=i |¤Ž |
�|
| _#        |	| _$        | j%        | j        _&        d2„ | j'        D ¦   «         Š ˆ fd3„tQ          | )                    ¦   «         d4„ ¬5¦  «        D ¦   «         }t'          | j*         +                    ¦   «         ¦  «        d6„ |D ¦   «         z   }| j,         -                    ¦   «         D ]/}|€Œt]          |¦  «        |vr||vr| /                    |¦  «         Œ0| j0        D ],}t]          |¦  «        |vr||vr| /                    |¦  «         Œ-t          |¦  «        dk    r±g }d7„ | j,         -                    ¦   «         D ¦   «         }|D ]r}t          |t\          ¦  «        rtc          |d¬8¦  «        }n4t          |tb          ¦  «        r|j2        st]          |¦  «        |v rd|_2        | /                    |¦  «         Œs|r|  3                    |¦  «         	 | j         4                    ¦   «         }n# tj          $ r d}Y nw xY w|d9k    rztm          | j        d:d ¦  «        �d|                      dd ¦  «          | j7        | j        | j8                             dd ¦  «        f| j8        |                      d;d ¦  «        d<œ|¤Ž| _        | j         p| j        j        d u | _         | j         r|  9                    ¦   «          d S d S )>Nr6   r7   r=   r*   Ú	gguf_filer$   r[   Úadd_prefix_spaceFr%   r0   r1   Úname_or_pathÚ Úconfigr¨   Ú	tokenizerÚtokenizer_configr   c                 ó    — i | ]\  }\  }}||“ŒS r?   r?   )rA   rH   ÚwÚ_s       rC   rJ   z.TokenizersBackend.__init__.<locals>.<dictcomp>q  s%   € ÐCkÐCkÐCkÉYÈQÑPVÐQRÐTUÀAÀqÐCkÐCkÐCkrE   T)r0   r1   Úfuse_unkÚdropoutrœ   )r0   rœ   a9  Couldn't instantiate the backend tokenizer from one of: 
(1) a `tokenizers` library serialization file, 
(2) a slow tokenizer instance to convert or 
(3) an equivalent slow tokenizer class to instantiate and convert. 
You need to have sentencepiece or tiktoken installed to convert a slow tokenizer to a fast one.r_   r`   ra   rb   z3The backend tokenizer is not correctly initialized.r5   Ú
max_lengthÚtruncation_sideÚ	directionÚstrideÚtruncation_strategyÚstrategyr4   ro   Úpad_token_type_idÚpad_type_idÚpadding_sideÚlengthÚpad_to_multiple_ofÚbackendÚ
tokenizersÚadd_bos_tokenÚadd_eos_tokenr3   c                 óF   — h | ]}t          t          |¦  «        ¦  «        ’ŒS r?   ©ÚhashÚrepr©rA   rI   s     rC   ú	<setcomp>z-TokenizersBackend.__init__.<locals>.<setcomp>°  s&   € Ð$^Ð$^Ð$^¸5¥T­$¨u©+¬+Ñ%6Ô%6Ð$^Ð$^Ð$^rE   c                 óV   •— g | ]%\  }}t          t          |¦  «        ¦  «        ‰v¯#|‘Œ&S r?   rÕ   )rA   ÚindexrI   Úadded_tokens_decoder_hashs      €rC   rD   z.TokenizersBackend.__init__.<locals>.<listcomp>±  sA   ø€ ð 
ð 
ð 
á��uÝ•D˜‘K”KÑ Ô Ð(AÐAÐAð àAÐAÐArE   c                 ó   — | d         S ©Nr   r?   )Úxs    rC   ú<lambda>z,TokenizersBackend.__init__.<locals>.<lambda>³  s   € ÐSTÐUVÔSW€ rE   ©r¶   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r?   ©rQ   rØ   s     rC   rD   z.TokenizersBackend.__init__.<locals>.<listcomp>¶  s   € Ð;bÐ;bÐ;bÈ5½CÀ¹J¼JÐ;bÐ;bÐ;brE   c                 ó0   — g | ]}|¯t          |¦  «        ‘ŒS r?   rã   )rA   Úts     rC   rD   z.TokenizersBackend.__init__.<locals>.<listcomp>Ç  s$   € ÐWÐWÐW¨1ÐUVÐW¥ A¡¤ÐWÐWÐWrE   )Úspeciali † Úpre_tokenizerÚfix_mistral_regex)Úinit_kwargsrè   r?   ):rv   r€   ÚcopyÚdeepcopyrw   rx   ry   r{   r|   r   r   r   r    ÚlenÚ
_tokenizerrM   ru   r‰   r   rN   r@   r   Ú
ValueErrorr˜   r„   Úenable_truncationÚno_truncationrƒ   Úenable_paddingÚ_add_bos_tokenÚ_add_eos_tokenr3   Ú_should_update_post_processorÚsuperr)   r%   rº   Úsplit_special_tokensÚencode_special_tokensr[   Úsortedr“   Úadded_tokens_encoderÚkeysÚ_special_tokens_maprf   rQ   rk   Ú_extra_special_tokensr   ræ   Ú
add_tokensÚget_vocab_sizeÚNotImplementedErrorrŠ   Ú_patch_mistral_regexré   Úupdate_post_processor)"ÚselfÚargsr£   r6   r7   r*   r¹   r¥   r[   rº   r%   r0   r1   Úfast_tokenizerÚ	gguf_pathÚ
gguf_paramÚarchitectureÚtokenizer_dictr¿   Úadditional_kwargsÚ
vocab_dictÚ_truncationÚ_paddingÚexplicit_bos_eos_in_kwargsr3   Útokens_to_addÚencoderÚspecial_token_valuerI   ÚtokensÚall_named_tokensÚ
vocab_sizerÜ   Ú	__class__s"                                   @€rC   r)   zTokenizersBackend.__init__H  sí  øø€ ð "Ÿ:š:Ð&8¸$Ñ?Ô?ÐØŸ
š
 ?°DÑ9Ô9ˆð 	�
Š
Ð.°Ñ5Ô5Ð5à!Ÿ:š:Ð&8¸$Ñ?Ô?ÐØ—J’J˜{¨DÑ1Ô1ˆ	Ø$ŸjšjÐ)9¸4Ñ@Ô@Ðà%ŸzšzÐ*@À"ÑEÔEÐà!Ÿ:š:Ð&8¸%Ñ@Ô@ÐØ—Z’Z Ñ-Ô-ˆ
à—
’
˜7Ñ#Ô#ˆØ—’˜HÑ%Ô%ˆàˆØÐ'Ý!œ]Ð+;Ñ<Ô<ˆN‰NØ Ð,µ´·²Ð@SÑ1TÔ1TÐ,å*Ô4Ð5HÑIÔIˆN‰NØÐ"å# F§J¢J¨~¸rÑ$BÔ$BÀIÐXÐXÐQWÐXÐXˆIÝ-¨iÑ8Ô8ˆJØ% hÔ/°Ô=ˆLØ'¨Ô4ˆNØ)Ð*<Ô=ÐÝ0FÀ|ÐUcÑ0dÔ0dÑ-ˆNÐ-Ø�MŠMÐ*Ñ+Ô+Ð+ÝÐ$Ñ%Ô%¨Ò)Ð)Ø—’Ð/Ñ0Ô0Ð0ùØŒ_Ð$¨Ð):àÐ!Ý&0°½Ñ&=Ô&=Ðk˜U˜UÐCkÐCkÕZcÐdiÑZjÔZjÐCkÑCkÔCk�
Ý!.­s¸ÈFÐ]aÐkoÐ/pÑ/pÔ/pÑ!qÔ!q��Ý˜E¥4Ñ(Ô(ð eÝ!.­s¸ÀrÐTXÐbfÐ/gÑ/gÔ/gÑ!hÔ!h��Ý˜E¥4Ñ(Ô(ð e¨Uð eµzÀ%ÈÄ(ÍUÕTXÈMÑ7ZÔ7Zð eÝ!.­w¸UÈ6Ï:Ê:ÐV^Ð`aÑKbÔKbÐ/cÑ/cÔ/cÑ!dÔ!d�øØŒ_Ð$Ýðrñô ð ð Ð&Ð+;Ð+CÈÌÐH_Ø×Ò˜k¨5Ñ1Ô1Ð1Ø×Ò˜k¨6Ñ2Ô2Ð2àÐ%Ø,ˆDŒOàŒ?Ð"ÝÐRÑSÔSÐSà—j’jÐ!7¸Ñ>Ô>ÐpÀ$Ä/ÔB\ÐpÐ`pˆØÐ"Ø-ˆDŒOÔ-Ð<Ð<°Ð<Ð<Ð<Ø×Ò˜l¨K¸Ô,EÑFÔFÐFØ×ÒÐ/°¸[Ô1IÑJÔJÐJØ×Ò˜h¨°HÔ(=Ñ>Ô>Ð>Ø×ÒÐ3°[ÀÔ5LÑMÔMÐMÐMàŒO×)Ò)Ñ+Ô+Ð+à—:’:Ð1°4Ñ8Ô8Ðd¸D¼OÔ<SÐdÐWdˆØÐØ*ˆDŒOÔ*Ð6Ð6¨XÐ6Ð6Ð6Ø×Ò˜k¨8°KÔ+@ÑAÔAÐAØ×ÒÐ1°8¸MÔ3JÑKÔKÐKØ×Ò˜n¨h°{Ô.CÑDÔDÐDØ×Ò˜l¨H°XÔ,>Ñ?Ô?Ð?Ø×ÒÐ2°HÐ=QÔ4RÑSÔSÐSð ˜FÐ"Ð"Ø ,ˆF�9Ñà%4¸Ð%>Ð%[À/ÐU[ÐB[Ð"Ø$Ÿjšj¨¸%Ñ@Ô@ˆÔØ$Ÿjšj¨¸%Ñ@Ô@ˆÔØ#ŸZšZÐ(8¸$Ñ?Ô?Ð?ˆ>ð 	<Ø-;ˆDŒOÔ*Ø-GÐ-qÈ4Ì?ÔKiÐmqÐKqˆÔ*à�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"àÐ!Ø(ˆDŒOà 0ˆÔØ04Ô0IˆŒÔ-à$^Ð$^ÀDÔD]Ð$^Ñ$^Ô$^Ð!ð
ð 
ð 
ð 
å &Ð';×'AÒ'AÑ'CÔ'CÈÈÐ XÑ XÔ Xð
ñ 
ô 
ˆõ
 �tÔ0×5Ò5Ñ7Ô7Ñ8Ô8Ð;bÐ;bÐTaÐ;bÑ;bÔ;bÑbˆð $(Ô#;×#BÒ#BÑ#DÔ#Dð 	:ð 	:ÐØ"Ð*ØÝÐ&Ñ'Ô'¨wÐ6Ð6Ð;NÐVcÐ;cÐ;cØ×$Ò$Ð%8Ñ9Ô9Ð9øð Ô/ð 	,ð 	,ˆEÝ�5‰zŒz Ð(Ð(¨U¸-Ð-GÐ-GØ×$Ò$ UÑ+Ô+Ð+øåˆ}ÑÔ Ò!Ð!ØˆFØWÐW°Ô0H×0OÒ0OÑ0QÔ0QÐWÑWÔWÐØ&ð %ð %�Ý˜e¥SÑ)Ô)ð -å& u°dÐ;Ñ;Ô;�E�EÝ ¥zÑ2Ô2ð -à œ=ð -­S°©Z¬ZÐ;KÐ-KÐ-KØ(,˜œØ—’˜eÑ$Ô$Ð$Ð$Øð (à—’ Ñ'Ô'Ð'ð	Øœ×7Ò7Ñ9Ô9ˆJˆJøÝ"ð 	ð 	ð 	ØˆJˆJˆJð	øøøð ˜ÒÐ¥7¨4¬?¸OÈTÑ#RÔ#RÐ#^Ø�JŠJ�{ DÑ)Ô)Ð)Ø7˜dÔ7Ø”ØÔ ×$Ò$ ^°TÑ:Ô:ðð !Ô,Ø"(§*¢*Ð-@À$Ñ"GÔ"Gð	ð ð
 ðð ˆDŒOð Ô.ÐX°$´/Ô2PÐTXÐ2Xð 	Ô*ð Ô-ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)s   Ý]  Ý ]/Ý.]/rg   c                 ó   — dS )NTr?   ©r  s    rC   Úis_fastzTokenizersBackend.is_fastë  s   € àˆtrE   c                 óÒ   — d| j         v r]| j         d                              d¦  «        r=t          | d¦  «        r+| j        r$t          j                             | j        ¦  «        S dS dS )zÌ
        `bool`: Whether or not the slow tokenizer can be saved. For a sentencepiece based slow tokenizer, this
        can only be `True` if the original `"sentencepiece.model"` was not deleted.
        r%   rV   FT)Úvocab_files_namesr‹   r�   r%   rw   rx   ry   r  s    rC   Úcan_save_slow_tokenizerz)TokenizersBackend.can_save_slow_tokenizerï  si   € ð ˜4Ô1Ð1Ð1°dÔ6LÈ\Ô6Z×6cÒ6cÐdlÑ6mÔ6mÐ1Ý�t˜\Ñ*Ô*ð 7¨t¬ð 7å”w—~’~ d¤oÑ6Ô6Ð6Ø�5à�4rE   Úsave_directoryÚfilename_prefixc                 ó¤  — t           j                             |¦  «        s t                               d|› d�¦  «         d S t           j                             ||r|dz   ndt          d         z   ¦  «        }t           j                             | j        ¦  «        t           j                             |¦  «        k    rt          | j        |¦  «         |fS )NzVocabulary path (z) should be a directoryú-r¼   r%   )
rw   rx   Úisdirr‘   ÚerrorÚjoinÚVOCAB_FILES_NAMESÚabspathr%   r   )r  r  r  Úout_vocab_files       rC   Úsave_vocabularyz!TokenizersBackend.save_vocabularyý  s¶   € ÝŒw�}Š}˜^Ñ,Ô,ð 	Ý�LŠLÐT¨^ÐTÐTÐTÑUÔUÐUØˆFÝœŸšØ°oÐM˜_¨sÑ2Ð2È2ÕQbÐcoÔQpÑpñ
ô 
ˆõ Œ7�?Š?˜4œ?Ñ+Ô+­r¬w¯ª¸~Ñ/NÔ/NÒNÐNÝ�T”_ nÑ5Ô5Ð5àÐ Ð rE   c                 óÎ  — | j         }| j        }|€| j        rd| _        | j        }| j        }|€| j        rd| _        | j        r|dz   nd› d| j        rd|z   dz   nd› �}|› | j        rd|z   dz   nd› d	| j        rd|z   dz   nd› �}g }| j        r|                     ||f¦  «         | j        r|                     ||f¦  «         t          j        |||¬
¦  «        | j	        _
        dS )ze
        Updates the underlying post processor with the current `bos_token` and `eos_token`.
        NFz:0 r¼   z$A:0rP   z:0z:1z $B:1)ÚsingleÚpairÚspecial_tokens)r_   Úbos_token_idrÒ   ra   Úeos_token_idrÓ   rk   r	   ÚTemplateProcessingrí   r3   )r  Úbosr*  Úeosr+  r'  r(  r)  s           rC   r  z'TokenizersBackend.update_post_processor
  s]  € ð ŒnˆØÔ(ˆØˆ;˜4Ô-ˆ;Ø!&ˆDÔàŒnˆØÔ(ˆØˆ;˜4Ô-ˆ;Ø!&ˆDÔà%)Ô%7Ð?�S˜5‘[�[¸RÐwÐwÐ[_Ô[mÐEuÀcÈCÁiÐRVÑFVÐFVÐsuÐwÐwˆØð  D°Ô0BÐJ˜3 ™9 tÑ+Ð+Èð  Dð  DÐgkÔgyð  RBÐRUÐX[ÑR[Ð^bÑRbÐRbð  @Bð  Dð  DˆàˆØÔð 	7Ø×!Ò! 3¨Ð"5Ñ6Ô6Ð6ØÔð 	7Ø×!Ò! 3¨Ð"5Ñ6Ô6Ð6Ý)3Ô)FØ °^ð*
ñ *
ô *
ˆŒÔ&Ð&Ð&rE   c                 ó$   — t          | dd¦  «        S )Nró   F©rŠ   r  s    rC   rÓ   zTokenizersBackend.add_eos_token$  ó   € å�tÐ-¨uÑ5Ô5Ð5rE   c                 ó$   — t          | dd¦  «        S )Nrò   Fr0  r  s    rC   rÒ   zTokenizersBackend.add_bos_token(  r1  rE   c                 óf   — t                                | d|¦  «         |                      ¦   «          d S )Nró   ©ÚobjectÚ__setattr__r  ©r  Úvalues     rC   rÓ   zTokenizersBackend.add_eos_token,  ó3   € å×Ò˜4Ð!1°5Ñ9Ô9Ð9Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$rE   c                 óf   — t                                | d|¦  «         |                      ¦   «          d S )Nrò   r4  r7  s     rC   rÒ   zTokenizersBackend.add_bos_token1  r9  rE   c                 óˆ  — g }| j                              ¦   «         D ]j}|€Œt          |t          ¦  «        r|                     |¦  «         Œ0t          |t
          ¦  «        r%|                     t          |dd¬¦  «        ¦  «         Œk| j        D ]g}t          |t          ¦  «        r|                     |¦  «         Œ-t          |t
          ¦  «        r%|                     t          |dd¬¦  «        ¦  «         Œh|r|                      |d¬¦  «         t          | dd¦  «        s| j	        j
        €|                      ¦   «          dS dS )a[  
        Post-initialization hook that runs after the tokenizer is fully set up.
        This is called by from_pretrained() after loading the tokenizer, which allows
        us to add any special tokens that may have been passed as AddedToken objects.

        Child classes should call super()._post_init() if they override this method.
        NTF)ræ   Ú
normalized)r)  rô   )rû   rf   rM   r   rk   rQ   rü   rý   rŠ   rí   r3   r  )r  r  Útoken_valuerI   s       rC   Ú
_post_initzTokenizersBackend._post_init6  sl  € ð ˆàÔ3×:Ò:Ñ<Ô<ð 	^ð 	^ˆKØÐ"ØÝ˜+¥zÑ2Ô2ð ^Ø×$Ò$ [Ñ1Ô1Ð1Ð1Ý˜K­Ñ-Ô-ð ^Ø×$Ò$¥Z°ÀTÐV[Ð%\Ñ%\Ô%\Ñ]Ô]Ð]øð Ô/ð 	Xð 	XˆEÝ˜%¥Ñ,Ô,ð XØ×$Ò$ UÑ+Ô+Ð+Ð+Ý˜E¥3Ñ'Ô'ð XØ×$Ò$¥Z°¸tÐPUÐ%VÑ%VÔ%VÑWÔWÐWøàð 	@à�OŠO˜M¸$ˆOÑ?Ô?Ð?å�4Ð8¸$Ñ?Ô?ð 	)À4Ä?ÔCaÐCiØ×&Ò&Ñ(Ô(Ð(Ð(Ð(ð DjÐCirE   c                 ó8   — | j                              d¬¦  «        S )zP
        `int`: Size of the base vocabulary (without the added tokens).
        F©Úwith_added_tokens©rí   rþ   r  s    rC   r  zTokenizersBackend.vocab_sizeV  s   € ð
 Œ×-Ò-ÀÐ-ÑFÔFÐFrE   c                 ó8   — | j                              d¬¦  «        S )NTr@  )rí   Ú	get_vocabr  s    rC   rD  zTokenizersBackend.get_vocab]  s   € ØŒ×(Ò(¸4Ð(Ñ@Ô@Ð@rE   c                 ó*   — |                       ¦   «         S ri   )rD  r  s    rC   r0   zTokenizersBackend.vocab`  s   € à�~Š~ÑÔÐrE   c                 óh   — d„ t          | j                             ¦   «         d„ ¬¦  «        D ¦   «         S )zÃ
        Returns the sorted mapping from string to index. The added tokens encoder is cached for performance
        optimisation in `self._added_tokens_encoder` for the slow tokenizers.
        c                 ó$   — i | ]\  }}|j         |“ŒS r?   ©Úcontent©rA   ÚvÚks      rC   rJ   z:TokenizersBackend.added_tokens_encoder.<locals>.<dictcomp>j  ó    € ÐmÐmÐm¡  A�”	˜1ÐmÐmÐmrE   c                 ó   — | d         S rÞ   r?   ©rB   s    rC   rà   z8TokenizersBackend.added_tokens_encoder.<locals>.<lambda>j  ó   € ÐdhÐijÔdk€ rE   rá   ©rø   r[   r“   r  s    rC   rù   z&TokenizersBackend.added_tokens_encoderd  s9   € ð nÐm­°Ô0I×0OÒ0OÑ0QÔ0QÐWkÐWkÐ)lÑ)lÔ)lÐmÑmÔmÐmrE   c                 ó4   — | j                              ¦   «         S )z¦
        Returns the added tokens in the vocabulary as a dictionary of index to AddedToken.

        Returns:
            `dict[str, int]`: The added tokens.
        )rí   Úget_added_tokens_decoderr  s    rC   r[   z&TokenizersBackend.added_tokens_decoderl  s   € ð Œ×7Ò7Ñ9Ô9Ð9rE   c                 óh   — d„ t          | j                             ¦   «         d„ ¬¦  «        D ¦   «         S )z¡
        Returns the added tokens in the vocabulary as a dictionary of token to index.

        Returns:
            `dict[str, int]`: The added tokens.
        c                 ó$   — i | ]\  }}|j         |“ŒS r?   rH  rJ  s      rC   rJ   z5TokenizersBackend.get_added_vocab.<locals>.<dictcomp>‚  rM  rE   c                 ó   — | d         S rÞ   r?   rO  s    rC   rà   z3TokenizersBackend.get_added_vocab.<locals>.<lambda>‚  rP  rE   rá   rQ  r  s    rC   Úget_added_vocabz!TokenizersBackend.get_added_vocab{  s9   € ð nÐm­°Ô0I×0OÒ0OÑ0QÔ0QÐWkÐWkÐ)lÑ)lÔ)lÐmÑmÔmÐmrE   c                 ó   — dS )zN
        Returns True, to avoid expensive `assert tokenizer` gotchas.
        Tr?   r  s    rC   Ú__bool__zTokenizersBackend.__bool__„  s	   € ð ˆtrE   c                 ó8   — | j                              d¬¦  «        S )zD
        Size of the full vocabulary with the added tokens.
        Tr@  rB  r  s    rC   Ú__len__zTokenizersBackend.__len__Š  s   € ð Œ×-Ò-ÀÐ-ÑEÔEÐErE   c                 ó   — | j         S )zc
        `tokenizers.implementations.BaseTokenizer`: The Rust tokenizer used as a backend.
        )rí   r  s    rC   Úbackend_tokenizerz#TokenizersBackend.backend_tokenizer�  s   € ð
 ŒÐrE   c                 ó   — | j         j        S )zU
        `tokenizers.decoders.Decoder`: The Rust decoder for this tokenizer.
        )rí   Údecoderr  s    rC   r_  zTokenizersBackend.decoder—  s   € ð
 ŒÔ&Ð&rE   Tr-   Úreturn_token_type_idsÚreturn_attention_maskÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_lengthÚverbosec	                 óF  — |€	d| j         v }|€	d| j         v }|r|j        �|g|j        z   }	n|g}	t          t          ¦  «        }
|	D ]Ù}|
d                              |j        ¦  «         |r |
d                              |j        ¦  «         |r |
d                              |j        ¦  «         |r |
d                              |j        ¦  «         |r |
d                              |j	        ¦  «         |r-|
d                              t          |j        ¦  «        ¦  «         ŒÚ|
|	fS )a¢  
        Convert the encoding representation (from low-level HuggingFace tokenizer output) to a python Dict and a list
        of encodings, take care of building a batch from overflowing tokens.

        Overflowing tokens are converted to additional examples (like batches) so the output values of the dict are
        lists (overflows) of lists (tokens).

        Output shape: (overflows, sequence length)
        NÚtoken_type_idsÚattention_maskÚ	input_idsÚspecial_tokens_maskÚoffset_mappingrÎ   )Úmodel_input_namesÚoverflowingr   rN   rk   ÚidsÚtype_idsri  rk  Úoffsetsrì   )r  r-   r`  ra  rb  rc  rd  re  rf  Ú	encodingsÚencoding_dictr¯   s               rC   Ú_convert_encodingz#TokenizersBackend._convert_encodingž  sV  € ð( !Ð(Ø$4¸Ô8NÐ$NÐ!Ø Ð(Ø$4¸Ô8NÐ$NÐ!à$ð 	#¨Ô)=Ð)IØ!˜
 XÔ%9Ñ9ˆIˆIà!˜
ˆIå#¥DÑ)Ô)ˆØð 	;ð 	;ˆAØ˜+Ô&×-Ò-¨a¬eÑ4Ô4Ð4à$ð CØÐ.Ô/×6Ò6°q´zÑBÔBÐBØ$ð IØÐ.Ô/×6Ò6°qÔ7GÑHÔHÐHØ)ð SØÐ3Ô4×;Ò;¸AÔ<QÑRÔRÐRØ%ð BØÐ.Ô/×6Ò6°q´yÑAÔAÐAØð ;Ø˜hÔ'×.Ò.­s°1´5©z¬zÑ:Ô:Ð:øà˜iÐ'Ð'rE   rI   c                 óL   — | j                              |¦  «        }|€| j        S |S ri   )rí   Útoken_to_idÚunk_token_id)r  rI   rÛ   s      rC   Ú#_convert_token_to_id_with_added_vocz5TokenizersBackend._convert_token_to_id_with_added_vocÍ  s*   € Ø”×+Ò+¨EÑ2Ô2ˆØˆ=ØÔ$Ð$ØˆrE   rÛ   c                 óP   — | j                              t          |¦  «        ¦  «        S ri   )rí   r°   r”   )r  rÛ   s     rC   Ú_convert_id_to_tokenz&TokenizersBackend._convert_id_to_tokenÓ  s   € ØŒ×*Ò*­3¨u©:¬:Ñ6Ô6Ð6rE   Ú
new_tokensc                 ón   — |r| j                              |¦  «        S | j                              |¦  «        S ri   )rí   Úadd_special_tokensrý   )r  r{  r)  s      rC   Ú_add_tokenszTokenizersBackend._add_tokensÖ  s7   € Øð 	BØ”?×5Ò5°jÑAÔAÐAàŒ×)Ò)¨*Ñ5Ô5Ð5rE   r(  c                 ó6   — | j                              |¦  «        S )aG  
        Returns the number of added tokens when encoding a sequence with special tokens.

        <Tip>

        This encodes a dummy input and checks the number of added tokens, and is therefore not efficient. Do not put
        this inside your training loop.

        </Tip>

        Args:
            pair (`bool`, *optional*, defaults to `False`):
                Whether the number of added tokens should be computed in the case of a sequence pair or a single
                sequence.

        Returns:
            `int`: Number of special tokens added to sequences.
        )rí   Únum_special_tokens_to_add)r  r(  s     rC   r€  z+TokenizersBackend.num_special_tokens_to_addÜ  s   € ð& Œ×8Ò8¸Ñ>Ô>Ð>rE   ro  Úskip_special_tokensc                 ó<  — t          |t          ¦  «        r| j                             |¦  «        S g }|rt	          | j        ¦  «        nt	          ¦   «         }|D ]C}t          |¦  «        }||v rŒ|                     | j                             |¦  «        ¦  «         ŒD|S )aì  
        Converts a single index or a sequence of indices in a token or a sequence of tokens, using the vocabulary and
        added tokens.

        Args:
            ids (`int` or `list[int]`):
                The token id (or token ids) to convert to tokens.
            skip_special_tokens (`bool`, *optional*, defaults to `False`):
                Whether or not to remove special tokens in the decoding.

        Returns:
            `str` or `list[str]`: The decoded token(s).
        )rM   r”   rí   r°   rŸ   Úall_special_idsrk   )r  ro  r�  r  Úids_to_skiprÛ   s         rC   Úconvert_ids_to_tokensz'TokenizersBackend.convert_ids_to_tokensñ  s¡   € õ �c�3ÑÔð 	4Ø”?×.Ò.¨sÑ3Ô3Ð3Øˆà3FÐQ•c˜$Ô.Ñ/Ô/Ð/ÍCÉEÌEˆØð 	>ð 	>ˆEÝ˜‘J”JˆEØ˜Ð#Ð#ØØ�MŠM˜$œ/×5Ò5°eÑ<Ô<Ñ=Ô=Ð=Ð=ØˆrE   Útextr}  c                 óH   —  | j         d|||dœ|¤Ž                     ¦   «         S )N)r†  Ú	text_pairr}  r?   )Ú_encode_plusr  )r  r†  r(  r}  r£   s        rC   ÚtokenizezTokenizersBackend.tokenize  s2   € Ø ˆtÔ Ðl d°dÐOaÐlÐlÐekÐlÐl×sÒsÑuÔuÐurE   Úpadding_strategyrÉ   rÅ   rÈ   rÏ   rÍ   c                 ó  ‡— | j         j        Š| j         j        }|t          j        k    r‰�| j                              ¦   «          n<|||j        | j        dœ}‰€d}	nˆfd„|D ¦   «         }	|	|k    r | j         j        di |¤Ž |t          j
        k    r|�| j                              ¦   «          dS dS |t          j        k    r|nd}
|
|�|n| j        | j        | j        | j        |dœ}||k    r | j         j        di |¤Ž dS dS )a•  
        Define the truncation and the padding strategies for fast tokenizers (provided by HuggingFace tokenizers
        library) and restore the tokenizer settings afterwards.

        The provided tokenizer has no padding / truncation strategy before the managed section. If your tokenizer set a
        padding / truncation strategy before, then it will be reset to no padding / truncation when exiting the managed
        section.

        Args:
            padding_strategy ([`~utils.PaddingStrategy`]):
                The kind of padding that will be applied to the input
            truncation_strategy ([`~tokenization_utils_base.TruncationStrategy`]):
                The kind of truncation that will be applied to the input
            max_length (`int`):
                The maximum size of a sequence.
            stride (`int`):
                The stride to use when handling overflow.
            pad_to_multiple_of (`int`, *optional*):
                If set will pad the sequence to a multiple of the provided value. This is especially useful to enable
                the use of Tensor Cores on NVIDIA hardware with compute capability `>= 7.5` (Volta).
            padding_side (`str`, *optional*):
                The side on which the model should have padding applied. Should be selected between ['right', 'left'].
                Default value is picked from the class attribute of the same name.
        N)rÅ   rÈ   rÊ   rÇ   c                 ó>   •— i | ]}|‰                      |d ¦  «        “ŒS ri   ©r€   )rA   rL  r  s     €rC   rJ   z@TokenizersBackend.set_truncation_and_padding.<locals>.<dictcomp>D  s)   ø€ ÐGÐGÐG¸1˜1˜kŸošo¨a°Ñ6Ô6ÐGÐGÐGrE   )rÎ   rÇ   Úpad_idro   rÌ   rÏ   r?   )rí   r„   rƒ   r   ÚDO_NOT_TRUNCATErð   r8  rÆ   rï   r   Ú
DO_NOT_PADÚ
no_paddingÚ
MAX_LENGTHrÍ   Úpad_token_idro   rË   rñ   )r  r‹  rÉ   rÅ   rÈ   rÏ   rÍ   r  ÚtargetÚcurrentrÎ   r  s              @rC   Úset_truncation_and_paddingz,TokenizersBackend.set_truncation_and_padding  si  ø€ ðB ”oÔ0ˆØ”?Ô*ˆàÕ"4Ô"DÒDÐDØÐ&Ø”×-Ò-Ñ/Ô/Ð/øð )Ø Ø/Ô5Ø!Ô1ð	ð ˆFð Ð"Ø��àGÐGÐGÐGÀÐGÑGÔG�à˜&Ò Ð Ø1�”Ô1Ð;Ð;°FÐ;Ð;Ð;à�Ô9Ò9Ð9ØÐ#Ø”×*Ò*Ñ,Ô,Ð,Ð,Ð,ð $Ð#ð $4µÔ7QÒ#QÐ#Q�Z�ZÐW[ˆFà Ø-9Ð-E˜\˜\È4ÔK\ØÔ+Ø!œ^Ø#Ô5Ø&8ðð ˆFð ˜6Ò!Ð!Ø.�”Ô.Ð8Ð8°Ð8Ð8Ð8Ð8Ð8ð "Ð!rE   r   rˆ  Úis_split_into_wordsÚreturn_tensorsrö   c                 ó   ‡ ‡‡‡‡‡‡‡‡#— d„ } ||¦  «        st          d¦  «        ‚|� ||¦  «        st          d¦  «        ‚|rAt          |t          t          f¦  «        o#|o!t          |d         t          t          f¦  «        }nt          |t          t          f¦  «        }|r˜t          |t          ¦  «        rt          d¦  «        ‚|�Pt          |¦  «        t          |¦  «        k    r0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚|�t          t          ||¦  «        ¦  «        n|}n
|r||fgn|g}t          |t          t          f¦  «        s t          dt          |¦  «        › d	�¦  «        ‚‰  	                    |||||	|
¬
¦  «         |€‰ j
        }‰ j        j        |k    r|‰ j        _        ‰ j                             |||¬¦  «        }ˆˆˆˆˆˆˆ ˆfd„|D ¦   «         }i }|d         d         D ]Š#ˆ#fd„|D ¦   «         }||‰#<   Œd„ |D ¦   «         }‰r;g }t          |¦  «        D ]$\  }\  }} ||gt          |d         ¦  «        z  z  }Œ%||d<   |d         D ]}!‰                      |!|‰¦  «         Œt!          |||¬¦  «        }"|s5|€3‰s1t!          d„ |"                     ¦   «         D ¦   «         |"j        ¦  «        }"|"S )Nc                 ór  — t          | t          ¦  «        rdS t          | t          t          f¦  «        �rt	          | ¦  «        dk    rdS t          | d         t          ¦  «        rdS t          | d         t          t          f¦  «        r¬t	          | d         ¦  «        dk    s!t          | d         d         t          ¦  «        rdS t          | d         d         t          t          f¦  «        rFt	          | d         d         ¦  «        dk    p&t          | d         d         d         t          ¦  «        S dS dS dS )NTr   F)rM   rQ   rN   r@   rì   )rå   s    rC   Ú_is_valid_text_inputz<TokenizersBackend._encode_plus.<locals>._is_valid_text_inputq  s  € Ý˜!�SÑ!Ô!ð Ø�tÝ˜A¥¥e˜}Ñ-Ô-ñ Ý�q‘6”6˜Q’;�;Ø˜4Ý  !¤¥cÑ*Ô*ð 
!Ø˜4Ý  !¤¥t­U mÑ4Ô4ð !Ý˜1˜Qœ4‘y”y A’~�~­°A°a´D¸´G½SÑ)AÔ)A�~Ø#˜tÝ# A a¤D¨¤G­dµE¨]Ñ;Ô;ð %Ý" 1 Q¤4¨¤7™|œ|¨qÒ0ÐOµJ¸qÀ¼tÀA¼wÀq¼zÍ3Ñ4OÔ4OÐOà$˜uà ˜5à�urE   zêtext input must be of type `str` (single example), `list[str]` (batch or single pretokenized example) or `list[list[str]]` (batch of pretokenized examples) or `list[tuple[list[str], list[str]]]` (batch of pretokenized sequence pairs).r   zdwhen tokenizing batches of text, `text_pair` must be a list or tuple with the same length as `text`.zbatch length of `text`: z- does not match batch length of `text_pair`: ú.z:batch_text_or_text_pairs has to be a list or a tuple (got ú))r‹  rÉ   rÅ   rÈ   rÏ   rÍ   )r}  Úis_pretokenizedc                 óJ   •— g | ]}‰                      |‰‰‰‰‰‰‰	¬ ¦  «        ‘Œ S ))r-   r`  ra  rb  rc  rd  re  rf  )rt  )
rA   r-   ra  re  rd  rb  rc  r`  r  rf  s
     €€€€€€€€rC   rD   z2TokenizersBackend._encode_plus.<locals>.<listcomp>Æ  sX   ø€ ð  
ð  
ð  
ð ð ×"Ò"Ø!Ø&;Ø&;Ø*CØ+EØ'=Ø+Øð #ñ 	ô 	ð 
ð  
ð  
rE   c                 ó0   •— g | ]\  }}|‰         D ]}|‘ŒŒS r?   r?   )rA   rB   rÂ   r¯   r¶   s       €rC   rD   z2TokenizersBackend._encode_plus.<locals>.<listcomp>×  s.   ø€ ÐNÐNÐN™7˜4 ÀDÈÄIÐNÐN¸q�QÐNÐNÐNÐNrE   c                 ó"   — g | ]\  }}|D ]}|‘ŒŒS r?   r?   )rA   rÂ   rB   r¯   s       rC   rD   z2TokenizersBackend._encode_plus.<locals>.<listcomp>Ù  s)   € ÐSÐSÐS¡W Q¨ÈdÐSÐSÈ˜qÐSÐSÐSÐSrE   rj  Úoverflow_to_sample_mapping)Útensor_typec                 ó†   — i | ]>\  }}|t          |¦  «        d k    r#t          |d          t          ¦  «        r|d          n|“Œ?S rL   )rì   rM   rN   )rA   r¶   r8  s      rC   rJ   z2TokenizersBackend._encode_plus.<locals>.<dictcomp>ê  sW   € ð ð ð á"˜˜Uð ¥c¨%¡j¤j°1¢n n½ÀEÈ!ÄHÍdÑ9SÔ9S n˜% œ(˜(ÐY^ðð ð rE   )rî   rM   rN   r@   rQ   Ú	TypeErrorrì   Úzipr/   r—  rö   rí   r÷   Úencode_batchr‰   Ú&_eventual_warn_about_too_long_sequencer   r“   rr  )$r  r†  rˆ  r}  r‹  rÉ   rÅ   rÈ   r˜  rÏ   rÍ   r™  r`  ra  rb  rc  rd  re  rf  rö   r£   rœ  Ú
is_batchedÚbatch_text_or_text_pairsrr  Útokens_and_encodingsÚsanitized_tokensÚstackÚsanitized_encodingsr£  rH   ÚtoksrÂ   rj  Úbatched_outputr¶   s$   `           ```````                @rC   r‰  zTokenizersBackend._encode_plusY  s  øøøøøøøøø€ ð0	ð 	ð 	ð( $Ð# DÑ)Ô)ð 	ÝðWñô ð ð
 Ð Ð)=Ð)=¸iÑ)HÔ)HÐ ÝðWñô ð ð ð 	9Ý# D­4µ¨-Ñ8Ô8Ðh¸TÐhÅjÐQUÐVWÔQXÕ[_ÕafÐZgÑFhÔFhˆJˆJå# D­4µ¨-Ñ8Ô8ˆJàð 	Tå˜)¥SÑ)Ô)ð Ýðñô ð ð Ð$­¨T©¬µc¸)±n´nÒ)DÐ)DÝ ð*­s°4©y¬yð *ð *Ý˜I™œð*ð *ð *ñô ð ð FOÐEZ¥t­C°°iÑ,@Ô,@Ñ'AÔ'AÐ'AÐ`dÐ$Ð$ð ?HÐ'S¨¨yÐ(9Ð':Ð':ÈdÈVÐ$õ Ð2µU½D°MÑBÔBð 	ÝØnÍTÐRjÑMkÔMkÐnÐnÐnñô ð ð 	×'Ò'Ø-Ø 3Ø!ØØ1Ø%ð 	(ñ 	
ô 	
ð 	
ð  Ð'Ø#'Ô#<Ð àŒ?Ô0Ð4HÒHÐHØ4HˆDŒOÔ1ð ”O×0Ò0Ø$Ø1Ø/ð 1ñ 
ô 
ˆ	ð 
ð  
ð  
ð  
ð  
ð  
ð  
ð  
ð  
ð  
ð  
ð &ð 
ñ  
ô  
Ðð ÐØ'¨Ô*¨1Ô-ð 	*ð 	*ˆCØNÐNÐNÐNÐ&:ÐNÑNÔNˆEØ$)Ð˜SÑ!Ð!ØSÐSÐ0DÐSÑSÔSÐð %ð 	XØ)+Ð&Ý )Ð*>Ñ ?Ô ?ð Kð K‘�‘9�D˜!Ø*¨q¨cµC¸¸[Ô8IÑ4JÔ4JÑ.JÑJÐ*Ð*Ø=WÐÐ9Ñ:à)¨+Ô6ð 	Xð 	XˆIØ×7Ò7¸	À:ÈwÑWÔWÐWÐWå&Ð'7Ð9LÐZhÐiÑiÔiˆð ð 	˜nÐ4Ð=VÐ4Ý*ðð à&4×&:Ò&:Ñ&<Ô&<ðñ ô ð Ô(ñô ˆNð ÐrE   r  c                 ó‚   — | j         j        �| j         j                             |¦  «        nd                     |¦  «        S )NrP   )r]  r_  Údecoder!  )r  r  s     rC   Úconvert_tokens_to_stringz*TokenizersBackend.convert_tokens_to_stringó  s@   € ð Ô%Ô-Ð9ð Ô"Ô*×1Ò1°&Ñ9Ô9Ð9à—’˜&Ñ!Ô!ð	
rE   Ú	token_idsÚclean_up_tokenization_spacesc                 ó¼  — |                      dd ¦  «         t          |t          ¦  «        r|g}t          |t          ¦  «        r|d         }| j                             ||¬¦  «        }|�|n| j        }|rgt          | j        j	        ¦  «        j
        dk    r0| j        s)t                               d| j        j
        › d�¦  «         n|                      |¦  «        }|S )NÚuse_source_tokenizerrj  )r�  r   z=Ignoring clean_up_tokenization_spaces=True for BPE tokenizer aE  . The clean_up_tokenization post-processing step is designed for WordPiece tokenizers and is destructive for BPE (it strips spaces before punctuation). Set clean_up_tokenization_spaces=False to suppress this warning, or set clean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_output=True to force cleanup anyway.)rv   rM   r”   ru   rí   r³  r¶  r/   r]  r.   rˆ   ÚGclean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_outputr‘   Úwarning_oncer  Úclean_up_tokenization)r  rµ  r�  r¶  r£   r†  s         rC   Ú_decodezTokenizersBackend._decodeú  s  € ð 	�
Š
Ð)¨4Ñ0Ô0Ð0å�i¥Ñ%Ô%ð 	$Ø"˜ˆIÝ�i¥Ñ&Ô&ð 	/Ø! +Ô.ˆIØŒ×%Ò% iÐEXÐ%ÑYÔYˆð ,Ð7ð )Ð(àÔ2ð 	%ð
 (ð 	8õ
 �TÔ+Ô1Ñ2Ô2Ô;¸uÒDÐDØÔdð Eõ ×#Ò#ð-ØœÔ/ð-ð -ð -ñô ð ð ð ×1Ò1°$Ñ7Ô7�àˆrE   Ú
file_names.Úlegacy_formatc                 óÂ   — t          |¦  «        }t          j                             ||r|dz   ndt          z   ¦  «        }| j                             |¦  «         ||fz   }|S )Nr  r¼   )rQ   rw   rx   r!  ÚTOKENIZER_FILEr]  Úsave)r  r  r½  r¾  r  r$   s         rC   Ú_save_pretrainedz"TokenizersBackend._save_pretrained%  sl   € õ ˜^Ñ,Ô,ˆåœŸšØ°oÐM˜_¨sÑ2Ð2È2ÕQ_Ñ_ñ
ô 
ˆð 	Ô×#Ò# NÑ3Ô3Ð3Ø >Ð"3Ñ3ˆ
àÐrE   c           	      ó  ‡‡— t          j        | j                             ¦   «         ¦  «        }|                     d¦  «        }|                     d¦  «        }	d}
|d         d         dk    ri |d         d<   g |d         d<   n«|d         d         d	k    r^|d         d
         �O|d         d
         }|d         d         |         d         }
‰�|
‰v r‰|
         }
d|d         d
<   |
dgg|d         d<   n;|d         d         dv ri |d         d<   nt          d|d         d         › d�¦  «        ‚‰�7d|d         v r-|d         d         ‰v r‰|d         d                  |d         d<   t          j        t          j        |¦  «        ¦  «        Šg }|D ]}|                     dd¦  «        }|                     dd¦  «        }|d         d         d	k    r|sŒC‰�|d         ‰v r‰|d                  |d<   | 	                    t          d*i |¤Ž¦  «         Œ€|�|                     |¦  «         |d         d         dk    r#d|vr|d         d         �|d         d         |d<   |d         d         dk    r#d|vr|d         d         �|d         d         |d<   |d         d         d	k    r|
�|
|d<   |d         �t|d         d         dk    sA|d         d         dk    rPd|d         v rFt          d„ |d         d         D ¦   «         ¦  «        r!t          j                             ¦   «         |d<   t           |d         d                  } |d*||dœ|¤Ž}‰                     |||¬¦  «         |	��,t          j        ‰                     ¦   «         ¦  «        }d|	v rˆ|	d         D ]}|	d         |         d         }‰�ˆfd „|D ¦   «         }||	d         |         d<   |D ](}‰                     |¦  «        }|€t          d!¦  «        ‚Œ)ˆfd"„|D ¦   «         |	d         |         d#<   Œ€d$D ]L}||	v rF|	|         \  }}‰�|‰v r‰|         }‰                     |¦  «        }|€t          d!¦  «        ‚||g|	|<   ŒM|	|d<   t          j        t          j        |¦  «        ¦  «        Š| j                             ¦   «         }t*          j        D ]’}t/          | |¦  «        �€t/          | |¦  «        }‰�|‰v r‰|         }| j                             |d¦  «        }t5          |t          ¦  «        r-t          ||j        |j        |j        |j        d%¬&¦  «        ||<   Œ�|||<   Œ“| j        r| j                             ¦   «         ng }|�|                     |¦  «         tA          |¦  «        dk    r||d'<   ‰|d(<   	  | j!        d*i |¤ŽS # tD          $ rH}d)tG          |¦  «        v r1|                     d(d¦  «          | j!        d*i |¤Ž}‰|_        |cY d}~S ‚ d}~ww xY w)+uf  
        Trains a tokenizer on a new corpus with the same defaults (in terms of special tokens or tokenization pipeline)
        as the current one.

        Args:
            text_iterator (generator of `list[str]`):
                The training corpus. Should be a generator of batches of texts, for instance a list of lists of texts
                if you have everything in memory.
            vocab_size (`int`):
                The size of the vocabulary you want for your tokenizer.
            length (`int`, *optional*):
                The total number of sequences in the iterator. This is used to provide meaningful progress tracking
            new_special_tokens (list of `str` or `AddedToken`, *optional*):
                A list of new special tokens to add to the tokenizer you are training.
            special_tokens_map (`dict[str, str]`, *optional*):
                If you want to rename some of the special tokens this tokenizer uses, pass along a mapping old special
                token name to new special token name in this argument.
            kwargs (`dict[str, Any]`, *optional*):
                Additional keyword arguments passed along to the trainer from the ðŸ¤— Tokenizers library.

        Returns:
            [`PreTrainedTokenizerFast`]: A new tokenizer of the same type as the original one, trained on
            `text_iterator`.

        r2   r3   Nr.   r/   r   r0   r1   r   rœ   r   g        )r"   r#   z;This method does not support this type of tokenizer (found z-) only BPE, Unigram, WordLevel and WordPiece.rc   ræ   ÚidrI  Úcontinuing_subword_prefixÚend_of_word_suffixrç   Ú	ByteLevelr9   Úpretokenizersc              3   ó.   K  — | ]}|d          dk    V — ŒdS )r/   rÇ  Nr?   )rA   Úpretokenizers     rC   ú	<genexpr>z<TokenizersBackend.train_new_from_iterator.<locals>.<genexpr>ž  s@   è è € ð ð à$ð ! Ô(¨KÒ7ðð ð ð ð ð rE   Úinitial_alphabet)r  r)  )rÎ   Útrainerr)  r  c                 ó<   •— g | ]}‰                      ||¦  «        ‘ŒS r?   rŽ  )rA   rI   Úspecial_tokens_maps     €rC   rD   z=TokenizersBackend.train_new_from_iterator.<locals>.<listcomp>°  s*   ø€ Ð![Ð![Ð![È5Ð"4×"8Ò"8¸ÀÑ"FÔ"FÐ![Ð![Ð![rE   zQAttempted to set a token in the post processor that does not exist in the mappingc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r?   )rv  )rA   rI   r¾   s     €rC   rD   z=TokenizersBackend.train_new_from_iterator.<locals>.<listcomp>¹  s)   ø€ ÐCuÐCuÐCuÐejÀI×DYÒDYÐZ_ÑD`ÔD`ÐCuÐCuÐCurE   ro  )r¡   ÚsepT)Úsingle_wordÚlstripÚrstripr<  ræ   re   r*   z7multiple values for keyword argument 'tokenizer_object'r?   )$r~   Úloadsrí   Úto_strrv   rî   r{   r�   r‚   rk   r   rj   ÚanyÚpre_tokenizers_fastrÇ  ÚalphabetÚMODEL_TO_TRAINER_MAPPINGÚtrain_from_iteratorrv  ré   rê   r   ÚSPECIAL_TOKENS_ATTRIBUTESrŠ   rû   r€   rM   rÒ  rÓ  rÔ  r<  re   rì   r  r¦  rQ   )r  Útext_iteratorr  rÎ   Únew_special_tokensrÏ  r£   r§   r2   r3   rc   rœ   r)  Úadded_tokenræ   rÂ   Útrainer_classrÍ  Útrained_tokenizer_jsonr¶   r  rI   r]   Úspecial_tokenÚspecial_token_fullre   r¯   Únew_tokenizerr¾   s        `                      @rC   Útrain_new_from_iteratorz)TokenizersBackend.train_new_from_iterator6  sÀ  øø€ õD œ D¤O×$:Ò$:Ñ$<Ô$<Ñ=Ô=ˆà%×)Ò)¨.Ñ9Ô9ˆà'×+Ò+Ð,<Ñ=Ô=ˆàˆ	à˜'Ô" 6Ô*¨eÒ3Ð3Ø/1ˆN˜7Ô# GÑ,Ø02ˆN˜7Ô# HÑ-Ð-Ø˜GÔ$ VÔ,°	Ò9Ð9Ø˜gÔ& xÔ0Ð<Ø'¨Ô0°Ô:�Ø*¨7Ô3°GÔ<¸VÔDÀQÔG�	Ø%Ð1°iÐCUÐ6UÐ6UØ 2°9Ô =�IØ45�˜wÔ'¨Ñ1Ø5>ÀÐ4DÐ3E�˜wÔ'¨Ñ0øØ˜GÔ$ VÔ,Ð0JÐJÐJØ/1ˆN˜7Ô# GÑ,Ð,åð>ÈnÐ]dÔNeÐflÔNmð >ð >ð >ñô ð ð Ð*Ø˜~¨gÔ6Ð6Ð6Ø˜wÔ'¨Ô4Ð8JÐJÐJà3EÀnÐU\ÔF]Ð^iÔFjÔ3kˆN˜7Ô# KÑ0å!Ô*­4¬:°nÑ+EÔ+EÑFÔFˆ	ð ˆØ'ð 	=ð 	=ˆKØ!—o’o i°Ñ6Ô6ˆGØ—’  dÑ+Ô+ˆAØ˜gÔ& vÔ.°)Ò;Ð;ÀGÐ;ØØ!Ð-°+¸iÔ2HÐL^Ð2^Ð2^Ø);¸KÈ	Ô<RÔ)S�˜IÑ&Ø×!Ò!¥*Ð";Ð";¨{Ð";Ð";Ñ<Ô<Ð<Ð<àÐ)Ø×!Ò!Ð"4Ñ5Ô5Ð5ð ˜7Ô# FÔ+¨uÒ4Ð4Ø+°6Ð9Ð9Ø˜wÔ'Ð(CÔDÐPà2@ÀÔ2IÐJeÔ2fˆFÐ.Ñ/à˜7Ô# FÔ+¨uÒ4Ð4Ø$¨FÐ2Ð2Ø˜wÔ'Ð(<Ô=ÐIà+9¸'Ô+BÐCWÔ+XˆFÐ'Ñ(Ø˜'Ô" 6Ô*¨iÒ7Ð7¸IÐ<QØ"+ˆF�;ÑØ˜/Ô*Ð6à˜Ô/°Ô7¸;ÒFÐFØ! /Ô2°6Ô:¸jÒHÐHØ# ~°oÔ'FÐFÐFÝð ð à(6°Ô(GÈÔ(Xðñ ô ñ ô ð Gõ .AÔ-J×-SÒ-SÑ-UÔ-U�Ð)Ñ*å0°ÀÔ1HÈÔ1PÔQˆØ�-Ð_¨:ÀnÐ_Ð_ÐX^Ð_Ð_ˆØ×%Ò% m¸FÈGÐ%ÑTÔTÐTàÑ%Ý%)¤Z°	×0@Ò0@Ñ0BÔ0BÑ%CÔ%CÐ"à >Ð1Ð1Ø)Ð*:Ô;ð vð v�CØ+Ð,<Ô=¸cÔBÀ8ÔL�FØ)Ð5Ø![Ð![Ð![Ð![ÐTZÐ![Ñ![Ô![˜ØFL�NÐ#3Ô4°SÔ9¸(ÑCØ!'ð ð ˜Ø#,×#8Ò#8¸Ñ#?Ô#?˜Ø#Ð+Ý",Ø sñ#ô #ð ð ,ð
 DvÐCuÐCuÐCuÐntÐCuÑCuÔCu�NÐ#3Ô4°SÔ9¸%Ñ@Ð@à!/ð 
Fð 
F�Ø  NÐ2Ð2Ø-¨mÔ<‘H�E˜1Ø)Ð5¸%ÐCUÐ:UÐ:UØ 2°5Ô 9˜Ø(×4Ò4°UÑ;Ô;�HØÐ'Ý(Øoñô ð ð 6;¸HÐ4E�N =Ñ1øà7EÐ"Ð#3Ñ4Ý%Ô.­t¬zÐ:PÑ/QÔ/QÑRÔRˆIàÔ!×&Ò&Ñ(Ô(ˆå,ÔFð 	2ð 	2ˆEÝ�t˜UÑ#Ô#Ð/Ý '¨¨eÑ 4Ô 4�Ø%Ð1°mÐGYÐ6YÐ6YØ$6°}Ô$E�Mà%)Ô%=×%AÒ%AÀ%ÈÑ%NÔ%NÐ"ÝÐ0µ*Ñ=Ô=ð 2å$.Ø%Ø$6Ô$BØ1Ô8Ø1Ô8Ø#5Ô#@Ø $ð%ñ %ô %�F˜5‘M�Mð %2�F˜5‘Møð DHÔC\Ðd˜tÔ8×=Ò=Ñ?Ô?Ð?ÐbdÐØÐ)Ø ×'Ò'Ð(:Ñ;Ô;Ð;ÝÐ#Ñ$Ô$ qÒ(Ð(Ø-AˆFÐ)Ñ*ð &/ˆÐ!Ñ"ð	Ø!�4”>Ð+Ð+ FÐ+Ð+Ð+øÝð 	ð 	ð 	àHÍCÐPQÉFÌFÐRÐRð —
’
Ð-¨tÑ4Ô4Ð4Ø . ¤Ð 8Ð 8°Ð 8Ð 8�Ø+4�Ô(Ø$Ð$Ð$Ð$Ð$Ð$Ð$ð øøøøð	øøøs$   Ö!V. Ö.
X Ö8<W;×4X ×:W;×;X c
           
      ó@  ‡‡— ddl Šddlm} ddlm} ddlm}mŠ  |d¬¦  «        dt          d	t          fˆˆfd
„¦   «         }|st          ¦   «         rd}|��G|s|�sB ||¦  «        �r6 ||d|||dd|¬¦  «        }d}|�Òt          |d¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |                     d¦  «        }|                     d¦  «        }|r7|                     |¦  «        |                     d¦  «        k     r|r|�|dvr|S n0|r.|                     |¦  «        |                     d¦  «        k    r|S d}|s|�sH ||¦  «        �r<|rd|v rt!          |d|d         ¦  «         |	€At#          |dd¦  «        s0t!          |dd¦  «         t$                               d|› d�¦  «         nÜ|	du st#          |dd¦  «        rÇt!          |dd¦  «         ddl}|j                             |                     d¦  «        d¬¦  «        }|j        }t3          ||j        j        ¦  «        r||j        d<   nWt3          ||j        j        ¦  «        r|j                             dd¬¦  «        }|j                             ||g¦  «        |_        |S )af  
        Patches mistral related tokenizers with incorrect regex if detected
            1) Local file with an associated config saved next to it
                >> Model type one of the mistral models (on older versions)
            2) Remote models on the hub from official mistral models
                >> Tags including `base_model:.*mistralai`
        r   N)Ú	lru_cache)Úversion)r   Úhf_apié€   )ÚmaxsizeÚmodel_idrg   c                 óÖ   •— 	  ‰¦   «                               | ¦  «        }n# t          $ r Y dS w xY w|j        �0‰                     dd                     |j        ¦  «        ¦  «        rdS dS )NFzbase_model:.*mistralair¼   T)Ú
model_infor�   ÚtagsÚsearchr!  )rì  r.   ré  Úres     €€rC   Úis_base_mistralz?TokenizersBackend._patch_mistral_regex.<locals>.is_base_mistral  s~   ø€ ðØ˜™œ×+Ò+¨HÑ5Ô5��øÝð ð ð à�u�uðøøøð ŒzÐ%Ø—9’9Ð5°r·w²w¸u¼zÑ7JÔ7JÑKÔKð  Ø˜4Ø�5s   ƒ! ¡
/®/Tzconfig.jsonF)Ú	cache_dirrI   Úlocal_files_onlyÚ%_raise_exceptions_for_missing_entriesÚ'_raise_exceptions_for_connection_errorsÚ_commit_hashr+   r,   Útransformers_versionr¨   z5.0.0)ÚmistralÚmistral3ÚvoxtralÚ	ministralÚpixtralrè   z$The tokenizer you are loading from 'a  ' with an incorrect regex pattern: https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503/discussions/84#69121093e8b480e709447d5e. This will lead to incorrect tokenization. You should set the `fix_mistral_regex=True` flag when loading this tokenizer to fix this issue.zÓ[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]*[\p{Ll}\p{Lm}\p{Lo}\p{M}]+|[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]+[\p{Ll}\p{Lm}\p{Lo}\p{M}]*|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n/]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated)ÚpatternÚbehavior)rº   Ú	use_regex)rñ  Ú	functoolsrç  Ú	packagingrè  Útransformers.utils.hubr   ré  rQ   Úboolr   r}   r~   r   r€   ÚparseÚsetattrrŠ   r‘   r’   rÑ   Úpre_tokenizersÚSplitÚRegexrç   rM   r9   Ú	MetaspacerÇ  )r¡   r¾   Úpretrained_model_name_or_pathrI   ró  rô  r÷  Úis_localré   rè   r£   rç  rè  r   rò  Ú_config_fileÚmistral_config_detectedÚfÚ_configrø  Útransformers_model_typerÑ   Úsplit_pretokenizerÚcurrent_pretokenizerré  rñ  s                           @@rC   r   z&TokenizersBackend._patch_mistral_regexû  s  øø€ ð* 	ˆ	ˆ	ˆ	Ø'Ð'Ð'Ð'Ð'Ð'à%Ð%Ð%Ð%Ð%Ð%à>Ð>Ð>Ð>Ð>Ð>Ð>Ð>à	ˆ˜3Ð	Ñ	Ô	ð		¥cð 		­dð 		ð 		ð 		ð 		ð 		ð 		ñ 
 Ô	ð		ð ð 	�Ñ0Ô0ð 	ØˆHà(Ñ4Øð 5Ø%ñ 5Ø*9¨/Ð:WÑ*XÔ*Xñ 5ð '˜;Ø-ØØ#ØØ!1Ø6;Ø8=Ø)ð	ñ 	ô 	ˆLð ',Ð#ØÐ'Ý˜,°Ð9Ñ9Ô9ð +¸QÝ"œi¨™lœl�Gð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +à'.§{¢{Ð3IÑ'JÔ'JÐ$Ø*1¯+ª+°lÑ*CÔ*CÐ'ð
 (ð %¨G¯MªMÐ:NÑ,OÔ,OÐRY×R_ÒR_Ð`gÑRhÔRhÒ,hÐ,hà ð)à3Ð?Ø3ð ðð ð  )Ð(øØ)ð %¨g¯mªmÐ<PÑ.QÔ.QÐU\×UbÒUbÐcjÑUkÔUkÒ.kÐ.kØ$Ð$à*.Ð'à&ð *¨xñ *¸O¸OÐLiÑ<jÔ<jñ *àð ^Ð#6¸+Ð#EÐ#EÝ˜IÐ':¸KÐH[Ô<\Ñ]Ô]Ð]ð %Ð,µW¸YÐH[Ð]bÑ5cÔ5cÐ,Ý˜IÐ':¸EÑBÔBÐBÝ—N’NðeÐ?\ð eð eð eñô ð ð ð
 '¨$Ð.Ð.µ'¸)ÐEXÐZ_Ñ2`Ô2`Ð.Ý˜IÐ':¸DÑAÔAÐAØ%Ð%Ð%Ð%à)3Ô)B×)HÒ)HØ *× 0Ò 0ð sñ!ô !ð ",ð	 *Iñ *ô *Ð&ð ,5Ô+BÐ(å!Ð"6¸
Ô8QÔ8ZÑ[Ô[ð à5G˜	Ô/°Ñ2Ð2õ &Ð&:¸JÔ<UÔ<_Ñ`Ô`ð Ø3=Ô3L×3VÒ3VØ16À%ð 4Wñ 4ô 4Ð0ð
 3=Ô2K×2TÒ2Tà 2Ø 4ðñ3ô 3˜	Ô/ð Ðs   ÂB1Â1B5Â8B5)Fri   )NNFFFFT)NF)FN)NN)NNN)NNFNFNN)Crˆ   Ú
__module__Ú__qualname__Ú__doc__r"  r  r.   rí   Úclassmethodr·   r)   Úpropertyr  r  r  rQ   r@   r%  r  rÓ   rÒ   Úsetterr>  r”   r  ru   rD  r0   rù   r   r[   Ú_added_tokens_encoderÚ_added_tokens_decoderrW  rY  r[  r{   r]  ÚDecoderFastr_  ÚEncodingFastr   rN   rt  rx  rz  r~  r€  r…  rŠ  r   r   r—  r‘  r�  r   r   r   r‰  r´  r¼  rw   ÚPathLikerÂ  rå  r   Ú__classcell__)r  s   @rC   r'   r'   S   sO  ø€ € € € € ð
ð 
ð *ÐØ€EØ€Jàð`ð `ð `ñ „[ð`ðDa)ð a)ð a)ð a)ð a)ðF ð˜ð ð ð ñ „Xðð ð¨ð ð ð ñ „Xðð!ð !¨cð !ÀCÈ$ÁJð !ÐZ_Ð`cÔZdð !ð !ð !ð !ð
ð 
ð 
ð4 ð6ð 6ñ „Xð6ð ð6ð 6ñ „Xð6ð Ôð%ð %ñ Ôð%ð Ôð%ð %ñ Ôð%ð)ð )ð )ð@ ðG˜Cð Gð Gð Gñ „XðGðA˜4  S œ>ð Að Að Að Að ð �t˜C ˜H”~ð  ð  ð  ñ „Xð ð ðn d¨3°¨8¤nð nð nð nñ „Xðnð ð: d¨3°
¨?Ô&;ð :ð :ð :ñ „Xð:ð 1ÐØ0Ððn  c¨3 h¤ð nð nð nð nð˜$ð ð ð ð ðF˜ð Fð Fð Fð Fð ð =ð ð ð ñ „Xðð ð'˜ð 'ð 'ð 'ñ „Xð'ð .2Ø-1Ø*/Ø+0Ø',Ø#Øð-(ð -(àð-(ð  $ d™{ð-(ð  $ d™{ð	-(ð
 $(ð-(ð %)ð-(ð !%ð-(ð ð-(ð ð-(ð 
ˆt�C˜�HŒ~˜t LÔ1Ð1Ô	2ð-(ð -(ð -(ð -(ð^¸ð Àð ð ð ð ð7¨#ð 7°#¸±*ð 7ð 7ð 7ð 7ð6ð 6 d¨3°Ñ+;Ô&<ð 6ÐWZð 6ð 6ð 6ð 6ð?ð ?¨dð ?¸sð ?ð ?ð ?ð ?ð*ð ¨¨t°C¬y©ð Ètð Ð`cÐfjÐknÔfoÑ`oð ð ð ð ð4vð v˜Sð v¨¨d©
ð vÈtð vÐjnÐorÔjsð vð vð vð vðI9à)ðI9ð 0ðI9ð ð	I9ð
 ðI9ð   $™JðI9ð ˜D‘jðI9ð I9ð I9ð I9ð\ gkØ#'Ø,;Ô,FØ2DÔ2TØ!%ØØ$)Ø)-Ø#'Ø&*Ø-1Ø-1Ø*/Ø+0Ø',Ø#ØØ,0ð)Xð XàÐ+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWðXð Ð0Ñ0°4¸	´?ÑBÀTÐJ[ÔE\Ñ\Ð_cÑcðXð !ð	Xð
 *ðXð 0ðXð ˜$‘JðXð ðXð "ðXð   $™JðXð ˜D‘jðXð ˜t™ðXð  $ d™{ðXð  $ d™{ðXð $(ðXð  %)ð!Xð" !%ð#Xð$ ð%Xð& ð'Xð( # T™kð)Xð, 
ð-Xð Xð Xð Xðt
¨t°C¬yð 
¸Sð 
ð 
ð 
ð 
ð %*Ø48ð	)ð )à˜˜cœ‘?ð)ð "ð)ð '+¨T¡kð	)ð 
ð)ð )ð )ð )ð^ &*Ø&*ðð à˜bœkÑ)ðð ˜#˜s˜(”Oðð ˜d‘{ð	ð
 ˜t™ðð 
ˆs�CˆxŒðð ð ð ð* ØØðCð Cð Cð CðJ ð
 ØØØØØØðBð Bð Bñ „[ðBð Bð Bð Bð BrE   r'   )Cr  rê   r~   rw   Úcollectionsr   Úcollections.abcr   Úshutilr   Útypingr   Útokenizers.pre_tokenizersr  rØ  Úhuggingface_hubr   rÑ   r   r	   r
   r  r   r{   Útokenizers.decodersr   r  Útokenizers.modelsr   r   Útokenizers.trainersr   r   r   r   r  r   rŒ   r   Úintegrations.ggmlr   Úmodeling_gguf_pytorch_utilsr   Útokenization_utils_baser   r   r   r   r   r   r   Úutilsr   r    r!   Ú
get_loggerrˆ   r‘   rÀ  ÚSPECIAL_TOKENS_MAP_FILEÚTOKENIZER_CONFIG_FILEÚTIKTOKEN_VOCAB_FILEÚADDED_TOKENS_FILErÚ  r"  r'   ÚPreTrainedTokenizerFastr?   rE   rC   ú<module>r4     s±  ððð ð
 €€€Ø €€€Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø +Ð +Ð +Ð +Ð +Ð +Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^à .Ð .Ð .Ð .Ð .Ð .à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð 
ˆÔ	˜HÑ	%Ô	%€ð "€Ø3Ð Ø/Ð Ø'Ð ð (Ð à ð ñ Ð ð ØØ!Ø!ð	ð Ð ð (6ÐEXÐYÐYÐ ð ÐÐ,Ñ-Ô-ðjð jð jð jð jÐ/ñ jô jñ .Ô-ðjð\) ,Ð Ð Ð rE   