


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


SCREAMING_SNAKE_CASE						:List[Any]			=  {
    '''configuration_nllb_moe''': [
        '''NLLB_MOE_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''NllbMoeConfig''',
    ]
}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   SCREAMING_SNAKE_CASE						:Any			=  [
       '''NLLB_MOE_PRETRAINED_MODEL_ARCHIVE_LIST''',
       '''NllbMoeForConditionalGeneration''',
       '''NllbMoeModel''',
       '''NllbMoePreTrainedModel''',
       '''NllbMoeTop2Router''',
       '''NllbMoeSparseMLP''',
   ]


if TYPE_CHECKING:
   from .configuration_nllb_moe import (
       NLLB_MOE_PRETRAINED_CONFIG_ARCHIVE_MAP,
       NllbMoeConfig,
   )

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_nllb_moe import (
          NLLB_MOE_PRETRAINED_MODEL_ARCHIVE_LIST,
          NllbMoeForConditionalGeneration,
          NllbMoeModel,
          NllbMoePreTrainedModel,
          NllbMoeSparseMLP,
          NllbMoeTopaRouter,
      )


else:
   import sys

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








def       _lowerCAmelCase    (				lowerCAmelCase_				:List[str]		,    lowerCAmelCase_				:int				)->Optional[int]:
   '''simple docstring'''






   snake_case_            =       0
   while b > 0:
      if b & 1:
         res += a

      a += a
      b >>= 1

   return res



def       _lowerCAmelCase    (				lowerCAmelCase_				:int		,    lowerCAmelCase_				:List[str]		,    lowerCAmelCase_				:Dict				)->Dict:
   '''simple docstring'''






   snake_case_            =       0
   while b > 0:
      if b & 1:
         snake_case_            =       ((res % c) + (a % c)) % c

      a += a
      b >>= 1

   return res




