



import argparse
import struct
import unittest


class   __lowerCAmelCase  :
					"""simple docstring"""






					def __init__(  self       :							List[Any]					,       _snake_case       :							bytes       ):






								"""simple docstring"""


								A__	  =     data

								# Initialize hash values
								A__	  =     [
								    0x6A09E667,
								    0xBB67AE85,
								    0x3C6EF372,
								    0xA54FF53A,
								    0x510E527F,
								    0x9B05688C,
								    0x1F83D9AB,
								    0x5BE0CD19,
								]

								# Initialize round constants
								A__	  =     [
								    0x428A2F98,
								    0x71374491,
								    0xB5C0FBCF,
								    0xE9B5DBA5,
								    0x3956C25B,
								    0x59F111F1,
								    0x923F82A4,
								    0xAB1C5ED5,
								    0xD807AA98,
								    0x12835B01,
								    0x243185BE,
								    0x550C7DC3,
								    0x72BE5D74,
								    0x80DEB1FE,
								    0x9BDC06A7,
								    0xC19BF174,
								    0xE49B69C1,
								    0xEFBE4786,
								    0x0FC19DC6,
								    0x240CA1CC,
								    0x2DE92C6F,
								    0x4A7484AA,
								    0x5CB0A9DC,
								    0x76F988DA,
								    0x983E5152,
								    0xA831C66D,
								    0xB00327C8,
								    0xBF597FC7,
								    0xC6E00BF3,
								    0xD5A79147,
								    0x06CA6351,
								    0x14292967,
								    0x27B70A85,
								    0x2E1B2138,
								    0x4D2C6DFC,
								    0x53380D13,
								    0x650A7354,
								    0x766A0ABB,
								    0x81C2C92E,
								    0x92722C85,
								    0xA2BFE8A1,
								    0xA81A664B,
								    0xC24B8B70,
								    0xC76C51A3,
								    0xD192E819,
								    0xD6990624,
								    0xF40E3585,
								    0x106AA070,
								    0x19A4C116,
								    0x1E376C08,
								    0x2748774C,
								    0x34B0BCB5,
								    0x391C0CB3,
								    0x4ED8AA4A,
								    0x5B9CCA4F,
								    0x682E6FF3,
								    0x748F82EE,
								    0x78A5636F,
								    0x84C87814,
								    0x8CC70208,
								    0x90BEFFFA,
								    0xA4506CEB,
								    0xBEF9A3F7,
								    0xC67178F2,
								]

								A__	  =     self.preprocessing(self.data       )
								self.final_hash()



					@staticmethod
					def      _a				(  _snake_case       :							bytes       ):






								"""simple docstring"""


								A__	  =     B'\x80' + (B'\x00' * (63 - (len(_snake_case       ) + 8) % 64))
								A__	  =     struct.pack('>Q'					,       (len(_snake_case       ) * 8)       )
								return data + padding + big_endian_integer



					def      _a				(  self       :							Dict       ):






								"""simple docstring"""


								A__	  =     [
								    self.preprocessed_data[x : x + 64]
								    for x in range(0					,       len(self.preprocessed_data       )					,       64       )
								]

								for block in self.blocks:
											# Convert the given block into a list of 4 byte integers
											A__	  =     list(struct.unpack('>16L'					,       _snake_case       )       )
											# add 48 0-ed integers
											words += [0] * 48

											A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__	  =     self.hashes

											for index in range(0					,       64       ):
														if index > 15:
																	# modify the zero-ed indexes at the end of the array
																	A__	  =     (
																	    self.ror(words[index - 15]					,       7       )
																	    ^ self.ror(words[index - 15]					,       18       )
																	    ^ (words[index - 15] >> 3)
																	)
																	A__	  =     (
																	    self.ror(words[index - 2]					,       17       )
																	    ^ self.ror(words[index - 2]					,       19       )
																	    ^ (words[index - 2] >> 10)
																	)

																	A__	  =     (
																	    words[index - 16] + sa + words[index - 7] + sa
																	) % 0x100000000

														# Compression
														A__	  =     self.ror(_snake_case					,       6       ) ^ self.ror(_snake_case					,       11       ) ^ self.ror(_snake_case					,       25       )
														A__	  =     (e & f) ^ ((~e & 0xFFFFFFFF) & g)
														A__	  =     (
														    h + sa + ch + self.round_constants[index] + words[index]
														) % 0x100000000
														A__	  =     self.ror(_snake_case					,       2       ) ^ self.ror(_snake_case					,       13       ) ^ self.ror(_snake_case					,       22       )
														A__	  =     (a & b) ^ (a & c) ^ (b & c)
														A__	  =     (sa + maj) % 0x100000000

														A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__  ,			A__	  =     (
														    g,
														    f,
														    e,
														    ((d + tempa) % 0x100000000),
														    c,
														    b,
														    a,
														    ((tempa + tempa) % 0x100000000),
														)

											A__	  =     [a, b, c, d, e, f, g, h]

											# Modify final values
											A__	  =     [
											    ((element + mutated_hash_values[index]) % 0x100000000)
											    for index, element in enumerate(self.hashes       )
											]

								A__	  =     ''.join([hex(_snake_case       )[2:].zfill(8       ) for value in self.hashes]       )



					def      _a				(  self       :							Dict					,       _snake_case       :							int					,       _snake_case       :							int       ):






								"""simple docstring"""


								return 0xFFFFFFFF & (value << (32 - rotations)) | (value >> rotations)







class   __lowerCAmelCase  (		unittest.TestCase   ):
					"""simple docstring"""






					def      _a				(  self       :							str       ):






								"""simple docstring"""


								import hashlib

								A__	  =     bytes('Test String'					,       'utf-8'       )
								self.assertEqual(SHAaaa(_snake_case       ).hash					,       hashlib.shaaaa(_snake_case       ).hexdigest()       )







def A    (							)    ->   None:
			import doctest

			doctest.testmod()

			A__	  =     argparse.ArgumentParser()
			parser.add_argument(
			    '-s'			,						'--string'			,						dest='input_string'			,						default='Hello World!! Welcome to Cryptography'			,						help='Hash the string'			,						)
			parser.add_argument(
			    '-f'			,						'--file'			,						dest='input_file'			,						help='Hash contents of a file'       )

			A__	  =     parser.parse_args()

			A__	  =     args.input_string

			# hash input should be a bytestring
			if args.input_file:
						with open(args.input_file			,						'rb'       ) as f:
									A__	  =     f.read()
			else:
						A__	  =     bytes(__UpperCamelCase			,						'utf-8'       )

			print(SHAaaa(__UpperCamelCase       ).hash       )


if __name__ == "__main__":
							main()






import functools
import operator

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


lowerCamelCase  =logging.get_logger(__name__)

lowerCamelCase  ={
    "facebook/wav2vec2-base-960h": "https://huggingface.co/facebook/wav2vec2-base-960h/resolve/main/config.json",
    # See all Wav2Vec2 models at https://huggingface.co/models?filter=wav2vec2
}




class 					_lowerCamelCase			(   UpperCamelCase_			):





     """simple docstring"""







     SCREAMING_SNAKE_CASE_		 =	'''wav2vec2'''






     def __init__(				self    ,    __SCREAMING_SNAKE_CASE=3_2    ,    __SCREAMING_SNAKE_CASE=7_6_8    ,    __SCREAMING_SNAKE_CASE=1_2    ,    __SCREAMING_SNAKE_CASE=1_2    ,    __SCREAMING_SNAKE_CASE=3_0_7_2    ,    __SCREAMING_SNAKE_CASE="gelu"    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=0.0    ,    __SCREAMING_SNAKE_CASE=0.0    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=0.02    ,    __SCREAMING_SNAKE_CASE=1e-5    ,    __SCREAMING_SNAKE_CASE="group"    ,    __SCREAMING_SNAKE_CASE="gelu"    ,    __SCREAMING_SNAKE_CASE=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2)    ,    __SCREAMING_SNAKE_CASE=(5, 2, 2, 2, 2, 2, 2)    ,    __SCREAMING_SNAKE_CASE=(1_0, 3, 3, 3, 3, 2, 2)    ,    __SCREAMING_SNAKE_CASE=False    ,    __SCREAMING_SNAKE_CASE=1_2_8    ,    __SCREAMING_SNAKE_CASE=1_6    ,    __SCREAMING_SNAKE_CASE=False    ,    __SCREAMING_SNAKE_CASE=True    ,    __SCREAMING_SNAKE_CASE=0.05    ,    __SCREAMING_SNAKE_CASE=1_0    ,    __SCREAMING_SNAKE_CASE=2    ,    __SCREAMING_SNAKE_CASE=0.0    ,    __SCREAMING_SNAKE_CASE=1_0    ,    __SCREAMING_SNAKE_CASE=0    ,    __SCREAMING_SNAKE_CASE=3_2_0    ,    __SCREAMING_SNAKE_CASE=2    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE=1_0_0    ,    __SCREAMING_SNAKE_CASE=2_5_6    ,    __SCREAMING_SNAKE_CASE=2_5_6    ,    __SCREAMING_SNAKE_CASE=0.1    ,    __SCREAMING_SNAKE_CASE="sum"    ,    __SCREAMING_SNAKE_CASE=False    ,    __SCREAMING_SNAKE_CASE=False    ,    __SCREAMING_SNAKE_CASE=2_5_6    ,    __SCREAMING_SNAKE_CASE=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 1_5_0_0)    ,    __SCREAMING_SNAKE_CASE=(5, 3, 3, 1, 1)    ,    __SCREAMING_SNAKE_CASE=(1, 2, 3, 1, 1)    ,    __SCREAMING_SNAKE_CASE=5_1_2    ,    __SCREAMING_SNAKE_CASE=0    ,    __SCREAMING_SNAKE_CASE=1    ,    __SCREAMING_SNAKE_CASE=2    ,    __SCREAMING_SNAKE_CASE=False    ,    __SCREAMING_SNAKE_CASE=3    ,    __SCREAMING_SNAKE_CASE=2    ,    __SCREAMING_SNAKE_CASE=3    ,    __SCREAMING_SNAKE_CASE=None    ,    __SCREAMING_SNAKE_CASE=None    ,    **__SCREAMING_SNAKE_CASE    ,    )	-> str:




           """simple docstring"""







           super().__init__(**__SCREAMING_SNAKE_CASE    ,    pad_token_id=__SCREAMING_SNAKE_CASE    ,    bos_token_id=__SCREAMING_SNAKE_CASE    ,    eos_token_id=__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : str											=					hidden_size
           UpperCamelCase__     : List[Any]											=					feat_extract_norm
           UpperCamelCase__     : Union[str, Any]											=					feat_extract_activation
           UpperCamelCase__     : Union[str, Any]											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : Dict											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : Dict											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : Tuple											=					conv_bias
           UpperCamelCase__     : Optional[Any]											=					num_conv_pos_embeddings
           UpperCamelCase__     : Tuple											=					num_conv_pos_embedding_groups
           UpperCamelCase__     : Tuple											=					len(self.conv_dim	)
           UpperCamelCase__     : Optional[Any]											=					num_hidden_layers
           UpperCamelCase__     : Union[str, Any]											=					intermediate_size
           UpperCamelCase__     : Union[str, Any]											=					hidden_act
           UpperCamelCase__     : List[Any]											=					num_attention_heads
           UpperCamelCase__     : Optional[int]											=					hidden_dropout
           UpperCamelCase__     : Tuple											=					attention_dropout
           UpperCamelCase__     : List[Any]											=					activation_dropout
           UpperCamelCase__     : Optional[int]											=					feat_proj_dropout
           UpperCamelCase__     : int											=					final_dropout
           UpperCamelCase__     : str											=					layerdrop
           UpperCamelCase__     : Dict											=					layer_norm_eps
           UpperCamelCase__     : str											=					initializer_range
           UpperCamelCase__     : List[Any]											=					vocab_size
           UpperCamelCase__     : Dict											=					do_stable_layer_norm
           UpperCamelCase__     : Dict											=					use_weighted_layer_sum

           if (
               (len(self.conv_stride	) != self.num_feat_extract_layers)
               or (len(self.conv_kernel	) != self.num_feat_extract_layers)
               or (len(self.conv_dim	) != self.num_feat_extract_layers)
           ):
                 raise ValueError(
                     '''Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =='''
                     ''' `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ='''
                     F''' {len(self.conv_dim	)}`, `len(config.conv_stride) = {len(self.conv_stride	)}`,'''
                     F''' `len(config.conv_kernel) = {len(self.conv_kernel	)}`.'''	)

           # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
           UpperCamelCase__     : Tuple											=					apply_spec_augment
           UpperCamelCase__     : str											=					mask_time_prob
           UpperCamelCase__     : Tuple											=					mask_time_length
           UpperCamelCase__     : Optional[Any]											=					mask_time_min_masks
           UpperCamelCase__     : str											=					mask_feature_prob
           UpperCamelCase__     : List[str]											=					mask_feature_length
           UpperCamelCase__     : Optional[Any]											=					mask_feature_min_masks

           # parameters for pretraining with codevector quantized representations
           UpperCamelCase__     : Dict											=					num_codevectors_per_group
           UpperCamelCase__     : Optional[int]											=					num_codevector_groups
           UpperCamelCase__     : Dict											=					contrastive_logits_temperature
           UpperCamelCase__     : List[Any]											=					feat_quantizer_dropout
           UpperCamelCase__     : List[Any]											=					num_negatives
           UpperCamelCase__     : Tuple											=					codevector_dim
           UpperCamelCase__     : List[str]											=					proj_codevector_dim
           UpperCamelCase__     : Tuple											=					diversity_loss_weight

           # ctc loss
           UpperCamelCase__     : List[str]											=					ctc_loss_reduction
           UpperCamelCase__     : Optional[Any]											=					ctc_zero_infinity

           # adapter
           UpperCamelCase__     : List[Any]											=					add_adapter
           UpperCamelCase__     : Any											=					adapter_kernel_size
           UpperCamelCase__     : Tuple											=					adapter_stride
           UpperCamelCase__     : Tuple											=					num_adapter_layers
           UpperCamelCase__     : Optional[Any]											=					output_hidden_size or hidden_size
           UpperCamelCase__     : Union[str, Any]											=					adapter_attn_dim

           # SequenceClassification-specific parameter. Feel free to ignore for other classes.
           UpperCamelCase__     : List[str]											=					classifier_proj_size

           # XVector-specific parameters. Feel free to ignore for other classes.
           UpperCamelCase__     : Union[str, Any]											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : List[str]											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : Optional[Any]											=					list(__SCREAMING_SNAKE_CASE	)
           UpperCamelCase__     : int											=					xvector_output_dim






     @property
     def  __SCREAMING_SNAKE_CASE      (				self	)	-> Optional[Any]:




           """simple docstring"""







           return functools.reduce(operator.mul    ,    self.conv_stride    ,    1	)


