



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


UpperCAmelCase :				List[Any]							={"""configuration_qdqbert""": ["""QDQBERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """QDQBertConfig"""]}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	UpperCAmelCase :				Dict							=[
	    """QDQBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """QDQBertForMaskedLM""",
	    """QDQBertForMultipleChoice""",
	    """QDQBertForNextSentencePrediction""",
	    """QDQBertForQuestionAnswering""",
	    """QDQBertForSequenceClassification""",
	    """QDQBertForTokenClassification""",
	    """QDQBertLayer""",
	    """QDQBertLMHeadModel""",
	    """QDQBertModel""",
	    """QDQBertPreTrainedModel""",
	    """load_tf_weights_in_qdqbert""",
	]


if TYPE_CHECKING:
	from .configuration_qdqbert import QDQBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, QDQBertConfig

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_qdqbert import (
		    QDQBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    QDQBertForMaskedLM,
		    QDQBertForMultipleChoice,
		    QDQBertForNextSentencePrediction,
		    QDQBertForQuestionAnswering,
		    QDQBertForSequenceClassification,
		    QDQBertForTokenClassification,
		    QDQBertLayer,
		    QDQBertLMHeadModel,
		    QDQBertModel,
		    QDQBertPreTrainedModel,
		    load_tf_weights_in_qdqbert,
		)


else:
	import sys

	UpperCAmelCase :				Optional[Any]							=_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)








def       _a   (							lowerCamelCase__				)  ->      list[int]:
 if len(lowerCamelCase__				) > 1:
  lowerCamelCase_							:    Optional[Any]							=     len(lowerCamelCase__				) // 2  # Finds the middle of the array
  lowerCamelCase_							:    int							=     arr[
      :middle_length
  ]  # Creates an array of the elements in the first half.
  lowerCamelCase_							:    List[Any]							=     arr[
      middle_length:
  ]  # Creates an array of the elements in the second half.
  lowerCamelCase_							:    Optional[Any]							=     len(lowerCamelCase__				)
  lowerCamelCase_							:    Optional[Any]							=     len(lowerCamelCase__				)
  merge(lowerCamelCase__				)  # Starts sorting the left.
  merge(lowerCamelCase__				)  # Starts sorting the right
  lowerCamelCase_							:    Dict							=     0  # Left Counter
  lowerCamelCase_							:    str							=     0  # Right Counter
  lowerCamelCase_							:    Tuple							=     0  # Position Counter
  while (
      left_index < left_size and right_index < right_size
  ):  # Runs until the lowers size of the left and right are sorted.
   if left_array[left_index] < right_array[right_index]:
    lowerCamelCase_							:    Optional[int]							=     left_array[left_index]
    left_index += 1
   else:
    lowerCamelCase_							:    Union[str, Any]							=     right_array[right_index]
    right_index += 1
   index += 1
  while (
      left_index < left_size
  ):  # Adds the left over elements in the left half of the array
   lowerCamelCase_							:    Tuple							=     left_array[left_index]
   left_index += 1
   index += 1
  while (
      right_index < right_size
  ):  # Adds the left over elements in the right half of the array
   lowerCamelCase_							:    Optional[int]							=     right_array[right_index]
   right_index += 1
   index += 1
 return arr


if __name__ == "__main__":
       import doctest

       doctest.testmod()
