


'''simple docstring'''

import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_bert import BertTokenizer


_UpperCAmelCase				: List[str]							    =				logging.get_logger(__name__)

_UpperCAmelCase				: int							    =				{'''vocab_file''': '''vocab.txt''', '''tokenizer_file''': '''tokenizer.json'''}

_UpperCAmelCase				: Any							    =				{
    '''vocab_file''': {
        '''bert-base-uncased''': '''https://huggingface.co/bert-base-uncased/resolve/main/vocab.txt''',
        '''bert-large-uncased''': '''https://huggingface.co/bert-large-uncased/resolve/main/vocab.txt''',
        '''bert-base-cased''': '''https://huggingface.co/bert-base-cased/resolve/main/vocab.txt''',
        '''bert-large-cased''': '''https://huggingface.co/bert-large-cased/resolve/main/vocab.txt''',
        '''bert-base-multilingual-uncased''': (
            '''https://huggingface.co/bert-base-multilingual-uncased/resolve/main/vocab.txt'''
        ),
        '''bert-base-multilingual-cased''': '''https://huggingface.co/bert-base-multilingual-cased/resolve/main/vocab.txt''',
        '''bert-base-chinese''': '''https://huggingface.co/bert-base-chinese/resolve/main/vocab.txt''',
        '''bert-base-german-cased''': '''https://huggingface.co/bert-base-german-cased/resolve/main/vocab.txt''',
        '''bert-large-uncased-whole-word-masking''': (
            '''https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/vocab.txt'''
        ),
        '''bert-large-cased-whole-word-masking''': (
            '''https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/vocab.txt'''
        ),
        '''bert-large-uncased-whole-word-masking-finetuned-squad''': (
            '''https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'''
        ),
        '''bert-large-cased-whole-word-masking-finetuned-squad''': (
            '''https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'''
        ),
        '''bert-base-cased-finetuned-mrpc''': (
            '''https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/vocab.txt'''
        ),
        '''bert-base-german-dbmdz-cased''': '''https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/vocab.txt''',
        '''bert-base-german-dbmdz-uncased''': (
            '''https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/vocab.txt'''
        ),
        '''TurkuNLP/bert-base-finnish-cased-v1''': (
            '''https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/vocab.txt'''
        ),
        '''TurkuNLP/bert-base-finnish-uncased-v1''': (
            '''https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/vocab.txt'''
        ),
        '''wietsedv/bert-base-dutch-cased''': (
            '''https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/vocab.txt'''
        ),
    },
    '''tokenizer_file''': {
        '''bert-base-uncased''': '''https://huggingface.co/bert-base-uncased/resolve/main/tokenizer.json''',
        '''bert-large-uncased''': '''https://huggingface.co/bert-large-uncased/resolve/main/tokenizer.json''',
        '''bert-base-cased''': '''https://huggingface.co/bert-base-cased/resolve/main/tokenizer.json''',
        '''bert-large-cased''': '''https://huggingface.co/bert-large-cased/resolve/main/tokenizer.json''',
        '''bert-base-multilingual-uncased''': (
            '''https://huggingface.co/bert-base-multilingual-uncased/resolve/main/tokenizer.json'''
        ),
        '''bert-base-multilingual-cased''': (
            '''https://huggingface.co/bert-base-multilingual-cased/resolve/main/tokenizer.json'''
        ),
        '''bert-base-chinese''': '''https://huggingface.co/bert-base-chinese/resolve/main/tokenizer.json''',
        '''bert-base-german-cased''': '''https://huggingface.co/bert-base-german-cased/resolve/main/tokenizer.json''',
        '''bert-large-uncased-whole-word-masking''': (
            '''https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/tokenizer.json'''
        ),
        '''bert-large-cased-whole-word-masking''': (
            '''https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/tokenizer.json'''
        ),
        '''bert-large-uncased-whole-word-masking-finetuned-squad''': (
            '''https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'''
        ),
        '''bert-large-cased-whole-word-masking-finetuned-squad''': (
            '''https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'''
        ),
        '''bert-base-cased-finetuned-mrpc''': (
            '''https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/tokenizer.json'''
        ),
        '''bert-base-german-dbmdz-cased''': (
            '''https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/tokenizer.json'''
        ),
        '''bert-base-german-dbmdz-uncased''': (
            '''https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/tokenizer.json'''
        ),
        '''TurkuNLP/bert-base-finnish-cased-v1''': (
            '''https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/tokenizer.json'''
        ),
        '''TurkuNLP/bert-base-finnish-uncased-v1''': (
            '''https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/tokenizer.json'''
        ),
        '''wietsedv/bert-base-dutch-cased''': (
            '''https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/tokenizer.json'''
        ),
    },
}

_UpperCAmelCase				: Optional[int]							    =				{
    '''bert-base-uncased''': 5_1_2,
    '''bert-large-uncased''': 5_1_2,
    '''bert-base-cased''': 5_1_2,
    '''bert-large-cased''': 5_1_2,
    '''bert-base-multilingual-uncased''': 5_1_2,
    '''bert-base-multilingual-cased''': 5_1_2,
    '''bert-base-chinese''': 5_1_2,
    '''bert-base-german-cased''': 5_1_2,
    '''bert-large-uncased-whole-word-masking''': 5_1_2,
    '''bert-large-cased-whole-word-masking''': 5_1_2,
    '''bert-large-uncased-whole-word-masking-finetuned-squad''': 5_1_2,
    '''bert-large-cased-whole-word-masking-finetuned-squad''': 5_1_2,
    '''bert-base-cased-finetuned-mrpc''': 5_1_2,
    '''bert-base-german-dbmdz-cased''': 5_1_2,
    '''bert-base-german-dbmdz-uncased''': 5_1_2,
    '''TurkuNLP/bert-base-finnish-cased-v1''': 5_1_2,
    '''TurkuNLP/bert-base-finnish-uncased-v1''': 5_1_2,
    '''wietsedv/bert-base-dutch-cased''': 5_1_2,
}

_UpperCAmelCase				: List[Any]							    =				{
    '''bert-base-uncased''': {'''do_lower_case''': True},
    '''bert-large-uncased''': {'''do_lower_case''': True},
    '''bert-base-cased''': {'''do_lower_case''': False},
    '''bert-large-cased''': {'''do_lower_case''': False},
    '''bert-base-multilingual-uncased''': {'''do_lower_case''': True},
    '''bert-base-multilingual-cased''': {'''do_lower_case''': False},
    '''bert-base-chinese''': {'''do_lower_case''': False},
    '''bert-base-german-cased''': {'''do_lower_case''': False},
    '''bert-large-uncased-whole-word-masking''': {'''do_lower_case''': True},
    '''bert-large-cased-whole-word-masking''': {'''do_lower_case''': False},
    '''bert-large-uncased-whole-word-masking-finetuned-squad''': {'''do_lower_case''': True},
    '''bert-large-cased-whole-word-masking-finetuned-squad''': {'''do_lower_case''': False},
    '''bert-base-cased-finetuned-mrpc''': {'''do_lower_case''': False},
    '''bert-base-german-dbmdz-cased''': {'''do_lower_case''': False},
    '''bert-base-german-dbmdz-uncased''': {'''do_lower_case''': True},
    '''TurkuNLP/bert-base-finnish-cased-v1''': {'''do_lower_case''': False},
    '''TurkuNLP/bert-base-finnish-uncased-v1''': {'''do_lower_case''': True},
    '''wietsedv/bert-base-dutch-cased''': {'''do_lower_case''': False},
}


class       a__				( snake_case__      ):







				"""simple docstring"""



				__UpperCamelCase    :		List[str]	=	VOCAB_FILES_NAMES
				__UpperCamelCase    :		Any	=	PRETRAINED_VOCAB_FILES_MAP
				__UpperCamelCase    :		Dict	=	PRETRAINED_INIT_CONFIGURATION
				__UpperCamelCase    :		List[str]	=	PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
				__UpperCamelCase    :		List[str]	=	BertTokenizer




				def __init__(self       ,			__lowercase=None       ,			__lowercase=None       ,			__lowercase=True       ,			__lowercase="[UNK]"       ,			__lowercase="[SEP]"       ,			__lowercase="[PAD]"       ,			__lowercase="[CLS]"       ,			__lowercase="[MASK]"       ,			__lowercase=True       ,			__lowercase=None       ,			**__lowercase       ,			):
										super().__init__(
										    _A       ,			tokenizer_file=_A       ,			do_lower_case=_A       ,			unk_token=_A       ,			sep_token=_A       ,			pad_token=_A       ,			cls_token=_A       ,			mask_token=_A       ,			tokenize_chinese_chars=_A       ,			strip_accents=_A       ,			**_A       ,			)

										__lowerCAmelCase							       =				json.loads(self.backend_tokenizer.normalizer.__getstate__()		)
										if (
										    normalizer_state.get('''lowercase'''       ,			_A		) != do_lower_case
										    or normalizer_state.get('''strip_accents'''       ,			_A		) != strip_accents
										    or normalizer_state.get('''handle_chinese_chars'''       ,			_A		) != tokenize_chinese_chars
										):
																__lowerCAmelCase							       =				getattr(_A       ,			normalizer_state.pop('''type'''		)		)
																__lowerCAmelCase							       =				do_lower_case
																__lowerCAmelCase							       =				strip_accents
																__lowerCAmelCase							       =				tokenize_chinese_chars
																__lowerCAmelCase							       =				normalizer_class(**_A		)

										__lowerCAmelCase							       =				do_lower_case




				def 					_snake_case  (self       ,			__lowercase       ,			__lowercase=None		):
										__lowerCAmelCase							       =				[self.cls_token_id] + token_ids_a + [self.sep_token_id]

										if token_ids_a:
																output += token_ids_a + [self.sep_token_id]

										return output




				def 					_snake_case  (self       ,			__lowercase       ,			__lowercase = None		):
										__lowerCAmelCase							       =				[self.sep_token_id]
										__lowerCAmelCase							       =				[self.cls_token_id]
										if token_ids_a is None:
																return len(cls + token_ids_a + sep		) * [0]
										return len(cls + token_ids_a + sep		) * [0] + len(token_ids_a + sep		) * [1]




				def 					_snake_case  (self       ,			__lowercase       ,			__lowercase = None		):
										__lowerCAmelCase							       =				self._tokenizer.model.save(_A       ,			name=_A		)
										return tuple(_A		)







'''simple docstring'''

def 							__magic_name__(						):
						return [
						    a * b * (1_0_0_0 - a - b)
						    for a in range(1,				9_9_9)
						    for b in range(lowerCamelCase,				9_9_9)
						    if (a * a + b * b == (1_0_0_0 - a - b) ** 2)
						][0]


if __name__ == "__main__":
	print(f"""{solution() = }""")

