

"""simple docstring"""






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


lowerCamelCase__				:  Dict													=  {
    '''auto_factory''': ['''get_values'''],
    '''configuration_auto''': ['''ALL_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''CONFIG_MAPPING''', '''MODEL_NAMES_MAPPING''', '''AutoConfig'''],
    '''feature_extraction_auto''': ['''FEATURE_EXTRACTOR_MAPPING''', '''AutoFeatureExtractor'''],
    '''image_processing_auto''': ['''IMAGE_PROCESSOR_MAPPING''', '''AutoImageProcessor'''],
    '''processing_auto''': ['''PROCESSOR_MAPPING''', '''AutoProcessor'''],
    '''tokenization_auto''': ['''TOKENIZER_MAPPING''', '''AutoTokenizer'''],
}

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__				:  Tuple													=  [
						    '''MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_AUDIO_XVECTOR_MAPPING''',
						    '''MODEL_FOR_BACKBONE_MAPPING''',
						    '''MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING''',
						    '''MODEL_FOR_CAUSAL_LM_MAPPING''',
						    '''MODEL_FOR_CTC_MAPPING''',
						    '''MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
						    '''MODEL_FOR_DEPTH_ESTIMATION_MAPPING''',
						    '''MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_IMAGE_SEGMENTATION_MAPPING''',
						    '''MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING''',
						    '''MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
						    '''MODEL_FOR_MASKED_LM_MAPPING''',
						    '''MODEL_FOR_MASK_GENERATION_MAPPING''',
						    '''MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
						    '''MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
						    '''MODEL_FOR_OBJECT_DETECTION_MAPPING''',
						    '''MODEL_FOR_PRETRAINING_MAPPING''',
						    '''MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
						    '''MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
						    '''MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
						    '''MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
						    '''MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
						    '''MODEL_FOR_TEXT_ENCODING_MAPPING''',
						    '''MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING''',
						    '''MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_VISION_2_SEQ_MAPPING''',
						    '''MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING''',
						    '''MODEL_MAPPING''',
						    '''MODEL_WITH_LM_HEAD_MAPPING''',
						    '''MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
						    '''MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING''',
						    '''AutoModel''',
						    '''AutoBackbone''',
						    '''AutoModelForAudioClassification''',
						    '''AutoModelForAudioFrameClassification''',
						    '''AutoModelForAudioXVector''',
						    '''AutoModelForCausalLM''',
						    '''AutoModelForCTC''',
						    '''AutoModelForDepthEstimation''',
						    '''AutoModelForImageClassification''',
						    '''AutoModelForImageSegmentation''',
						    '''AutoModelForInstanceSegmentation''',
						    '''AutoModelForMaskGeneration''',
						    '''AutoModelForTextEncoding''',
						    '''AutoModelForMaskedImageModeling''',
						    '''AutoModelForMaskedLM''',
						    '''AutoModelForMultipleChoice''',
						    '''AutoModelForNextSentencePrediction''',
						    '''AutoModelForObjectDetection''',
						    '''AutoModelForPreTraining''',
						    '''AutoModelForQuestionAnswering''',
						    '''AutoModelForSemanticSegmentation''',
						    '''AutoModelForSeq2SeqLM''',
						    '''AutoModelForSequenceClassification''',
						    '''AutoModelForSpeechSeq2Seq''',
						    '''AutoModelForTableQuestionAnswering''',
						    '''AutoModelForTokenClassification''',
						    '''AutoModelForUniversalSegmentation''',
						    '''AutoModelForVideoClassification''',
						    '''AutoModelForVision2Seq''',
						    '''AutoModelForVisualQuestionAnswering''',
						    '''AutoModelForDocumentQuestionAnswering''',
						    '''AutoModelWithLMHead''',
						    '''AutoModelForZeroShotImageClassification''',
						    '''AutoModelForZeroShotObjectDetection''',
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__				:  Dict													=  [
						    '''TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
						    '''TF_MODEL_FOR_CAUSAL_LM_MAPPING''',
						    '''TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
						    '''TF_MODEL_FOR_MASK_GENERATION_MAPPING''',
						    '''TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
						    '''TF_MODEL_FOR_MASKED_LM_MAPPING''',
						    '''TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
						    '''TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
						    '''TF_MODEL_FOR_PRETRAINING_MAPPING''',
						    '''TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
						    '''TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
						    '''TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
						    '''TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
						    '''TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
						    '''TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
						    '''TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
						    '''TF_MODEL_FOR_TEXT_ENCODING_MAPPING''',
						    '''TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
						    '''TF_MODEL_FOR_VISION_2_SEQ_MAPPING''',
						    '''TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
						    '''TF_MODEL_MAPPING''',
						    '''TF_MODEL_WITH_LM_HEAD_MAPPING''',
						    '''TFAutoModel''',
						    '''TFAutoModelForAudioClassification''',
						    '''TFAutoModelForCausalLM''',
						    '''TFAutoModelForImageClassification''',
						    '''TFAutoModelForMaskedImageModeling''',
						    '''TFAutoModelForMaskedLM''',
						    '''TFAutoModelForMaskGeneration''',
						    '''TFAutoModelForMultipleChoice''',
						    '''TFAutoModelForNextSentencePrediction''',
						    '''TFAutoModelForPreTraining''',
						    '''TFAutoModelForDocumentQuestionAnswering''',
						    '''TFAutoModelForQuestionAnswering''',
						    '''TFAutoModelForSemanticSegmentation''',
						    '''TFAutoModelForSeq2SeqLM''',
						    '''TFAutoModelForSequenceClassification''',
						    '''TFAutoModelForSpeechSeq2Seq''',
						    '''TFAutoModelForTableQuestionAnswering''',
						    '''TFAutoModelForTextEncoding''',
						    '''TFAutoModelForTokenClassification''',
						    '''TFAutoModelForVision2Seq''',
						    '''TFAutoModelForZeroShotImageClassification''',
						    '''TFAutoModelWithLMHead''',
						]

try:
						if not is_flax_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__				:  Optional[int]													=  [
						    '''FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
						    '''FLAX_MODEL_FOR_CAUSAL_LM_MAPPING''',
						    '''FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
						    '''FLAX_MODEL_FOR_MASKED_LM_MAPPING''',
						    '''FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
						    '''FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
						    '''FLAX_MODEL_FOR_PRETRAINING_MAPPING''',
						    '''FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
						    '''FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
						    '''FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
						    '''FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
						    '''FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
						    '''FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING''',
						    '''FLAX_MODEL_MAPPING''',
						    '''FlaxAutoModel''',
						    '''FlaxAutoModelForCausalLM''',
						    '''FlaxAutoModelForImageClassification''',
						    '''FlaxAutoModelForMaskedLM''',
						    '''FlaxAutoModelForMultipleChoice''',
						    '''FlaxAutoModelForNextSentencePrediction''',
						    '''FlaxAutoModelForPreTraining''',
						    '''FlaxAutoModelForQuestionAnswering''',
						    '''FlaxAutoModelForSeq2SeqLM''',
						    '''FlaxAutoModelForSequenceClassification''',
						    '''FlaxAutoModelForSpeechSeq2Seq''',
						    '''FlaxAutoModelForTokenClassification''',
						    '''FlaxAutoModelForVision2Seq''',
						]


if TYPE_CHECKING:
						from .auto_factory import get_values
						from .configuration_auto import ALL_PRETRAINED_CONFIG_ARCHIVE_MAP, CONFIG_MAPPING, MODEL_NAMES_MAPPING, AutoConfig
						from .feature_extraction_auto import FEATURE_EXTRACTOR_MAPPING, AutoFeatureExtractor
						from .image_processing_auto import IMAGE_PROCESSOR_MAPPING, AutoImageProcessor
						from .processing_auto import PROCESSOR_MAPPING, AutoProcessor
						from .tokenization_auto import TOKENIZER_MAPPING, AutoTokenizer

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_auto import (
												    MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
												    MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING,
												    MODEL_FOR_AUDIO_XVECTOR_MAPPING,
												    MODEL_FOR_BACKBONE_MAPPING,
												    MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING,
												    MODEL_FOR_CAUSAL_LM_MAPPING,
												    MODEL_FOR_CTC_MAPPING,
												    MODEL_FOR_DEPTH_ESTIMATION_MAPPING,
												    MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
												    MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
												    MODEL_FOR_IMAGE_SEGMENTATION_MAPPING,
												    MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING,
												    MODEL_FOR_MASK_GENERATION_MAPPING,
												    MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
												    MODEL_FOR_MASKED_LM_MAPPING,
												    MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
												    MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
												    MODEL_FOR_OBJECT_DETECTION_MAPPING,
												    MODEL_FOR_PRETRAINING_MAPPING,
												    MODEL_FOR_QUESTION_ANSWERING_MAPPING,
												    MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
												    MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
												    MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
												    MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
												    MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
												    MODEL_FOR_TEXT_ENCODING_MAPPING,
												    MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
												    MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING,
												    MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING,
												    MODEL_FOR_VISION_2_SEQ_MAPPING,
												    MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING,
												    MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
												    MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING,
												    MODEL_MAPPING,
												    MODEL_WITH_LM_HEAD_MAPPING,
												    AutoBackbone,
												    AutoModel,
												    AutoModelForAudioClassification,
												    AutoModelForAudioFrameClassification,
												    AutoModelForAudioXVector,
												    AutoModelForCausalLM,
												    AutoModelForCTC,
												    AutoModelForDepthEstimation,
												    AutoModelForDocumentQuestionAnswering,
												    AutoModelForImageClassification,
												    AutoModelForImageSegmentation,
												    AutoModelForInstanceSegmentation,
												    AutoModelForMaskedImageModeling,
												    AutoModelForMaskedLM,
												    AutoModelForMaskGeneration,
												    AutoModelForMultipleChoice,
												    AutoModelForNextSentencePrediction,
												    AutoModelForObjectDetection,
												    AutoModelForPreTraining,
												    AutoModelForQuestionAnswering,
												    AutoModelForSemanticSegmentation,
												    AutoModelForSeqaSeqLM,
												    AutoModelForSequenceClassification,
												    AutoModelForSpeechSeqaSeq,
												    AutoModelForTableQuestionAnswering,
												    AutoModelForTextEncoding,
												    AutoModelForTokenClassification,
												    AutoModelForUniversalSegmentation,
												    AutoModelForVideoClassification,
												    AutoModelForVisionaSeq,
												    AutoModelForVisualQuestionAnswering,
												    AutoModelForZeroShotImageClassification,
												    AutoModelForZeroShotObjectDetection,
												    AutoModelWithLMHead,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_auto import (
												    TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
												    TF_MODEL_FOR_CAUSAL_LM_MAPPING,
												    TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
												    TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
												    TF_MODEL_FOR_MASK_GENERATION_MAPPING,
												    TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
												    TF_MODEL_FOR_MASKED_LM_MAPPING,
												    TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
												    TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
												    TF_MODEL_FOR_PRETRAINING_MAPPING,
												    TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
												    TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
												    TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
												    TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
												    TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
												    TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
												    TF_MODEL_FOR_TEXT_ENCODING_MAPPING,
												    TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
												    TF_MODEL_FOR_VISION_2_SEQ_MAPPING,
												    TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
												    TF_MODEL_MAPPING,
												    TF_MODEL_WITH_LM_HEAD_MAPPING,
												    TFAutoModel,
												    TFAutoModelForAudioClassification,
												    TFAutoModelForCausalLM,
												    TFAutoModelForDocumentQuestionAnswering,
												    TFAutoModelForImageClassification,
												    TFAutoModelForMaskedImageModeling,
												    TFAutoModelForMaskedLM,
												    TFAutoModelForMaskGeneration,
												    TFAutoModelForMultipleChoice,
												    TFAutoModelForNextSentencePrediction,
												    TFAutoModelForPreTraining,
												    TFAutoModelForQuestionAnswering,
												    TFAutoModelForSemanticSegmentation,
												    TFAutoModelForSeqaSeqLM,
												    TFAutoModelForSequenceClassification,
												    TFAutoModelForSpeechSeqaSeq,
												    TFAutoModelForTableQuestionAnswering,
												    TFAutoModelForTextEncoding,
												    TFAutoModelForTokenClassification,
												    TFAutoModelForVisionaSeq,
												    TFAutoModelForZeroShotImageClassification,
												    TFAutoModelWithLMHead,
												)

						try:
												if not is_flax_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_flax_auto import (
												    FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
												    FLAX_MODEL_FOR_CAUSAL_LM_MAPPING,
												    FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
												    FLAX_MODEL_FOR_MASKED_LM_MAPPING,
												    FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
												    FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
												    FLAX_MODEL_FOR_PRETRAINING_MAPPING,
												    FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
												    FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
												    FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
												    FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
												    FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
												    FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING,
												    FLAX_MODEL_MAPPING,
												    FlaxAutoModel,
												    FlaxAutoModelForCausalLM,
												    FlaxAutoModelForImageClassification,
												    FlaxAutoModelForMaskedLM,
												    FlaxAutoModelForMultipleChoice,
												    FlaxAutoModelForNextSentencePrediction,
												    FlaxAutoModelForPreTraining,
												    FlaxAutoModelForQuestionAnswering,
												    FlaxAutoModelForSeqaSeqLM,
												    FlaxAutoModelForSequenceClassification,
												    FlaxAutoModelForSpeechSeqaSeq,
												    FlaxAutoModelForTokenClassification,
												    FlaxAutoModelForVisionaSeq,
												)

else:
						import sys

						lowerCamelCase__				:  Union[str, Any]													=  _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)



"""simple docstring"""






from __future__ import annotations
def       UpperCamelCase					(			_lowerCAmelCase     :						list,  _lowerCAmelCase     :						list )				->			list:
	_UpperCAmelCase    :							List[Any]									=					[None] * (len(_lowerCAmelCase ) + len(_lowerCAmelCase ))

	_UpperCAmelCase    :							Union[str, Any]									=					0  # pointer to current index for left Half
	_UpperCAmelCase    :							str									=					0  # pointer to current index for the right Half
	_UpperCAmelCase    :							Optional[int]									=					0  # pointer to current index for the sorted array Half

	while pointera < len(_lowerCAmelCase ) and pointera < len(_lowerCAmelCase ):
		if left_half[pointera] < right_half[pointera]:
			_UpperCAmelCase    :							Tuple									=					left_half[pointera]
			pointera += 1
			index += 1
		else:
			_UpperCAmelCase    :							int									=					right_half[pointera]
			pointera += 1
			index += 1
	while pointera < len(_lowerCAmelCase ):
		_UpperCAmelCase    :							Tuple									=					left_half[pointera]
		pointera += 1
		index += 1

	while pointera < len(_lowerCAmelCase ):
		_UpperCAmelCase    :							Union[str, Any]									=					right_half[pointera]
		pointera += 1
		index += 1

	return sorted_array
def       UpperCamelCase					(			_lowerCAmelCase     :						list )				->			list:
	if len(_lowerCAmelCase ) <= 1:
		return array
	# the actual formula to calculate the middle element = left + (right - left) // 2
	# this avoids integer overflow in case of large N
	_UpperCAmelCase    :							Any									=					0 + (len(_lowerCAmelCase ) - 0) // 2

	# Split the array into halves till the array length becomes equal to One
	# merge the arrays of single length returned by mergeSort function and
	# pass them into the merge arrays function which merges the array
	_UpperCAmelCase    :							Optional[Any]									=					array[:middle]
	_UpperCAmelCase    :							Optional[int]									=					array[middle:]

	return merge(merge_sort(_lowerCAmelCase ),  merge_sort(_lowerCAmelCase ) )


if __name__ == "__main__":
						import doctest

						doctest.testmod()





