


from ...configuration_utils import PretrainedConfig
from ...utils import logging


_UpperCAmelCase	:     Optional[Any]   =logging.get_logger(__name__)

_UpperCAmelCase	:     Optional[int]   ={
    """funnel-transformer/small""": """https://huggingface.co/funnel-transformer/small/resolve/main/config.json""",
    """funnel-transformer/small-base""": """https://huggingface.co/funnel-transformer/small-base/resolve/main/config.json""",
    """funnel-transformer/medium""": """https://huggingface.co/funnel-transformer/medium/resolve/main/config.json""",
    """funnel-transformer/medium-base""": """https://huggingface.co/funnel-transformer/medium-base/resolve/main/config.json""",
    """funnel-transformer/intermediate""": (
        """https://huggingface.co/funnel-transformer/intermediate/resolve/main/config.json"""
    ),
    """funnel-transformer/intermediate-base""": (
        """https://huggingface.co/funnel-transformer/intermediate-base/resolve/main/config.json"""
    ),
    """funnel-transformer/large""": """https://huggingface.co/funnel-transformer/large/resolve/main/config.json""",
    """funnel-transformer/large-base""": """https://huggingface.co/funnel-transformer/large-base/resolve/main/config.json""",
    """funnel-transformer/xlarge""": """https://huggingface.co/funnel-transformer/xlarge/resolve/main/config.json""",
    """funnel-transformer/xlarge-base""": """https://huggingface.co/funnel-transformer/xlarge-base/resolve/main/config.json""",
}







class  snake_case__(							UpperCAmelCase__							):







						'''simple docstring'''




						SCREAMING_SNAKE_CASE__					:     Optional[Any]    =							'''funnel'''
						SCREAMING_SNAKE_CASE__					:     List[Any]    =							{
						    '''hidden_size''': '''d_model''',
						    '''num_attention_heads''': '''n_head''',
						}




						def __init__( self      ,  __lowercase=3_0_5_2_2      ,  __lowercase=[4, 4, 4]      ,  __lowercase=None      ,  __lowercase=2      ,  __lowercase=7_6_8      ,  __lowercase=1_2      ,  __lowercase=6_4      ,  __lowercase=3_0_7_2      ,  __lowercase="gelu_new"      ,  __lowercase=0.1      ,  __lowercase=0.1      ,  __lowercase=0.0      ,  __lowercase=0.1      ,  __lowercase=None      ,  __lowercase=1e-9      ,  __lowercase="mean"      ,  __lowercase="relative_shift"      ,  __lowercase=True      ,  __lowercase=True      ,  __lowercase=True      ,  **__lowercase      ,  )    ->			Tuple:
										lowerCAmelCase_       :					List[str]			 = vocab_size
										lowerCAmelCase_       :					Union[str, Any]			 = block_sizes
										lowerCAmelCase_       :					Optional[Any]			 = [1] * len(SCREAMING_SNAKE_CASE__							) if block_repeats is None else block_repeats
										assert len(SCREAMING_SNAKE_CASE__							) == len(
										    self.block_repeats							), "`block_sizes` and `block_repeats` should have the same length."
										lowerCAmelCase_       :					List[str]			 = num_decoder_layers
										lowerCAmelCase_       :					Optional[int]			 = d_model
										lowerCAmelCase_       :					Any			 = n_head
										lowerCAmelCase_       :					List[Any]			 = d_head
										lowerCAmelCase_       :					List[str]			 = d_inner
										lowerCAmelCase_       :					List[Any]			 = hidden_act
										lowerCAmelCase_       :					List[Any]			 = hidden_dropout
										lowerCAmelCase_       :					List[str]			 = attention_dropout
										lowerCAmelCase_       :					Dict			 = activation_dropout
										lowerCAmelCase_       :					List[Any]			 = initializer_range
										lowerCAmelCase_       :					Any			 = initializer_std
										lowerCAmelCase_       :					List[Any]			 = layer_norm_eps
										assert pooling_type in [
										    "mean",
										    "max",
										], f"""Got {pooling_type} for `pooling_type` but only \'mean\' and \'max\' are supported."""
										lowerCAmelCase_       :					List[str]			 = pooling_type
										assert attention_type in [
										    "relative_shift",
										    "factorized",
										], f"""Got {attention_type} for `attention_type` but only \'relative_shift\' and \'factorized\' are supported."""
										lowerCAmelCase_       :					Optional[int]			 = attention_type
										lowerCAmelCase_       :					Optional[int]			 = separate_cls
										lowerCAmelCase_       :					List[Any]			 = truncate_seq
										lowerCAmelCase_       :					Union[str, Any]			 = pool_q_only

										super().__init__(**SCREAMING_SNAKE_CASE__							)




						@property
						def   lowercase_       ( self							)    ->			int:
										return sum(self.block_sizes							)




						@num_hidden_layers.setter
						def   lowercase_       ( self      ,  __lowercase							)    ->			List[Any]:
										raise NotImplementedError(
										    '''This model does not support the setting of `num_hidden_layers`. Please set `block_sizes`.'''							)




						@property
						def   lowercase_       ( self							)    ->			Tuple:
										return len(self.block_sizes							)




						@num_blocks.setter
						def   lowercase_       ( self      ,  __lowercase							)    ->			int:
										raise NotImplementedError('''This model does not support the setting of `num_blocks`. Please set `block_sizes`.'''							)






"""simple docstring"""
def      __lowerCamelCase   (							a_     :		Union[str, Any]							)			->      Optional[int]:
      __SCREAMING_SNAKE_CASE   :List[str]						=  1
      __SCREAMING_SNAKE_CASE   :Dict						=  2
      while i * i <= n:
            __SCREAMING_SNAKE_CASE   :Tuple						=  0
            while n % i == 0:
                  n //= i
                  multiplicity += 1
            n_divisors *= multiplicity + 1
            i += 1
      if n > 1:
            n_divisors *= 2
      return n_divisors



def      __lowerCamelCase   (							)			->      int:
      __SCREAMING_SNAKE_CASE   :Dict						=  1
      __SCREAMING_SNAKE_CASE   :Dict						=  1

      while True:
            i += 1
            t_num += i

            if count_divisors(a_							) > 5_00:
                  break

      return t_num


if __name__ == "__main__":
  print(solution())