





import argparse
import struct
import unittest






class 					__A    :

			'''simple docstring'''







			def __init__(    self       ,  __lowerCAmelCase							):



				'''simple docstring'''







				lowerCamelCase__								=		data

				# Initialize hash values
				lowerCamelCase__								=		[
				    0x6_A_0_9_E_6_6_7,
				    0xB_B_6_7_A_E_8_5,
				    0x3_C_6_E_F_3_7_2,
				    0xA_5_4_F_F_5_3_A,
				    0x5_1_0_E_5_2_7_F,
				    0x9_B_0_5_6_8_8_C,
				    0x1_F_8_3_D_9_A_B,
				    0x5_B_E_0_C_D_1_9,
				]

				# Initialize round constants
				lowerCamelCase__								=		[
				    0x4_2_8_A_2_F_9_8,
				    0x7_1_3_7_4_4_9_1,
				    0xB_5_C_0_F_B_C_F,
				    0xE_9_B_5_D_B_A_5,
				    0x3_9_5_6_C_2_5_B,
				    0x5_9_F_1_1_1_F_1,
				    0x9_2_3_F_8_2_A_4,
				    0xA_B_1_C_5_E_D_5,
				    0xD_8_0_7_A_A_9_8,
				    0x1_2_8_3_5_B_0_1,
				    0x2_4_3_1_8_5_B_E,
				    0x5_5_0_C_7_D_C_3,
				    0x7_2_B_E_5_D_7_4,
				    0x8_0_D_E_B_1_F_E,
				    0x9_B_D_C_0_6_A_7,
				    0xC_1_9_B_F_1_7_4,
				    0xE_4_9_B_6_9_C_1,
				    0xE_F_B_E_4_7_8_6,
				    0x0_F_C_1_9_D_C_6,
				    0x2_4_0_C_A_1_C_C,
				    0x2_D_E_9_2_C_6_F,
				    0x4_A_7_4_8_4_A_A,
				    0x5_C_B_0_A_9_D_C,
				    0x7_6_F_9_8_8_D_A,
				    0x9_8_3_E_5_1_5_2,
				    0xA_8_3_1_C_6_6_D,
				    0xB_0_0_3_2_7_C_8,
				    0xB_F_5_9_7_F_C_7,
				    0xC_6_E_0_0_B_F_3,
				    0xD_5_A_7_9_1_4_7,
				    0x0_6_C_A_6_3_5_1,
				    0x1_4_2_9_2_9_6_7,
				    0x2_7_B_7_0_A_8_5,
				    0x2_E_1_B_2_1_3_8,
				    0x4_D_2_C_6_D_F_C,
				    0x5_3_3_8_0_D_1_3,
				    0x6_5_0_A_7_3_5_4,
				    0x7_6_6_A_0_A_B_B,
				    0x8_1_C_2_C_9_2_E,
				    0x9_2_7_2_2_C_8_5,
				    0xA_2_B_F_E_8_A_1,
				    0xA_8_1_A_6_6_4_B,
				    0xC_2_4_B_8_B_7_0,
				    0xC_7_6_C_5_1_A_3,
				    0xD_1_9_2_E_8_1_9,
				    0xD_6_9_9_0_6_2_4,
				    0xF_4_0_E_3_5_8_5,
				    0x1_0_6_A_A_0_7_0,
				    0x1_9_A_4_C_1_1_6,
				    0x1_E_3_7_6_C_0_8,
				    0x2_7_4_8_7_7_4_C,
				    0x3_4_B_0_B_C_B_5,
				    0x3_9_1_C_0_C_B_3,
				    0x4_E_D_8_A_A_4_A,
				    0x5_B_9_C_C_A_4_F,
				    0x6_8_2_E_6_F_F_3,
				    0x7_4_8_F_8_2_E_E,
				    0x7_8_A_5_6_3_6_F,
				    0x8_4_C_8_7_8_1_4,
				    0x8_C_C_7_0_2_0_8,
				    0x9_0_B_E_F_F_F_A,
				    0xA_4_5_0_6_C_E_B,
				    0xB_E_F_9_A_3_F_7,
				    0xC_6_7_1_7_8_F_2,
				]

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





			@staticmethod
			def 		__lowerCamelCase				(    __lowerCAmelCase							):



				'''simple docstring'''







				lowerCamelCase__								=		B'''\x80''' + (B'''\x00''' * (6_3 - (len(__lowerCAmelCase							) + 8) % 6_4))
				lowerCamelCase__								=		struct.pack('''>Q'''       ,  (len(__lowerCAmelCase							) * 8)							)
				return data + padding + big_endian_integer





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		[
				    self.preprocessed_data[x : x + 6_4]
				    for x in range(0       ,  len(self.preprocessed_data							)       ,  6_4							)
				]

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

					lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__								=		self.hashes

					for index in range(0       ,  6_4							):
						if index > 1_5:
							# modify the zero-ed indexes at the end of the array
							lowerCamelCase__								=		(
							    self.ror(words[index - 1_5]       ,  7							)
							    ^ self.ror(words[index - 1_5]       ,  1_8							)
							    ^ (words[index - 1_5] >> 3)
							)
							lowerCamelCase__								=		(
							    self.ror(words[index - 2]       ,  1_7							)
							    ^ self.ror(words[index - 2]       ,  1_9							)
							    ^ (words[index - 2] >> 1_0)
							)

							lowerCamelCase__								=		(
							    words[index - 1_6] + sa + words[index - 7] + sa
							) % 0x1_0_0_0_0_0_0_0_0

						# Compression
						lowerCamelCase__								=		self.ror(__lowerCAmelCase       ,  6							) ^ self.ror(__lowerCAmelCase       ,  1_1							) ^ self.ror(__lowerCAmelCase       ,  2_5							)
						lowerCamelCase__								=		(e & f) ^ ((~e & 0xF_F_F_F_F_F_F_F) & g)
						lowerCamelCase__								=		(
						    h + sa + ch + self.round_constants[index] + words[index]
						) % 0x1_0_0_0_0_0_0_0_0
						lowerCamelCase__								=		self.ror(__lowerCAmelCase       ,  2							) ^ self.ror(__lowerCAmelCase       ,  1_3							) ^ self.ror(__lowerCAmelCase       ,  2_2							)
						lowerCamelCase__								=		(a & b) ^ (a & c) ^ (b & c)
						lowerCamelCase__								=		(sa + maj) % 0x1_0_0_0_0_0_0_0_0

						lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__				,	lowerCamelCase__								=		(
						    g,
						    f,
						    e,
						    ((d + tempa) % 0x1_0_0_0_0_0_0_0_0),
						    c,
						    b,
						    a,
						    ((tempa + tempa) % 0x1_0_0_0_0_0_0_0_0),
						)

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

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

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





			def 		__lowerCamelCase				(    self       ,  __lowerCAmelCase       ,  __lowerCAmelCase							):



				'''simple docstring'''







				return 0xF_F_F_F_F_F_F_F & (value << (3_2 - rotations)) | (value >> rotations)






class 					__A    (    unittest.TestCase ):

			'''simple docstring'''







			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				import hashlib

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





def lowerCAmelCase__()				->      None:







	'''simple docstring'''







	import doctest

	doctest.testmod()

	lowerCamelCase__								=		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'''							)

	lowerCamelCase__								=		parser.parse_args()

	lowerCamelCase__								=		args.input_string

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

	print(SHAaaa(__snake_case							).hash							)


if __name__ == "__main__":
			main()










from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


_a 						=      logging.get_logger(__name__)

_a 						=      {
    "hustvl/yolos-small": "https://huggingface.co/hustvl/yolos-small/resolve/main/config.json",
    # See all YOLOS models at https://huggingface.co/models?filter=yolos
}






class 					__A    (    lowerCAmelCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						"""yolos"""





			def __init__(    self       ,  __lowerCAmelCase=7_6_8       ,  __lowerCAmelCase=1_2       ,  __lowerCAmelCase=1_2       ,  __lowerCAmelCase=3_0_7_2       ,  __lowerCAmelCase="gelu"       ,  __lowerCAmelCase=0.0       ,  __lowerCAmelCase=0.0       ,  __lowerCAmelCase=0.02       ,  __lowerCAmelCase=1E-12       ,  __lowerCAmelCase=[5_1_2, 8_6_4]       ,  __lowerCAmelCase=1_6       ,  __lowerCAmelCase=3       ,  __lowerCAmelCase=True       ,  __lowerCAmelCase=1_0_0       ,  __lowerCAmelCase=True       ,  __lowerCAmelCase=False       ,  __lowerCAmelCase=1       ,  __lowerCAmelCase=5       ,  __lowerCAmelCase=2       ,  __lowerCAmelCase=5       ,  __lowerCAmelCase=2       ,  __lowerCAmelCase=0.1       ,  **__lowerCAmelCase       ,  ):



				'''simple docstring'''







				super().__init__(**__lowerCAmelCase							)

				lowerCamelCase__								=		hidden_size
				lowerCamelCase__								=		num_hidden_layers
				lowerCamelCase__								=		num_attention_heads
				lowerCamelCase__								=		intermediate_size
				lowerCamelCase__								=		hidden_act
				lowerCamelCase__								=		hidden_dropout_prob
				lowerCamelCase__								=		attention_probs_dropout_prob
				lowerCamelCase__								=		initializer_range
				lowerCamelCase__								=		layer_norm_eps
				lowerCamelCase__								=		image_size
				lowerCamelCase__								=		patch_size
				lowerCamelCase__								=		num_channels
				lowerCamelCase__								=		qkv_bias
				lowerCamelCase__								=		num_detection_tokens
				lowerCamelCase__								=		use_mid_position_embeddings
				lowerCamelCase__								=		auxiliary_loss
				# Hungarian matcher
				lowerCamelCase__								=		class_cost
				lowerCamelCase__								=		bbox_cost
				lowerCamelCase__								=		giou_cost
				# Loss coefficients
				lowerCamelCase__								=		bbox_loss_coefficient
				lowerCamelCase__								=		giou_loss_coefficient
				lowerCamelCase__								=		eos_coefficient






class 					__A    (    lowerCAmelCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						version.parse("""1.11""" )





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return OrderedDict(
				    [
				        ('''pixel_values''', {0: '''batch''', 1: '''num_channels''', 2: '''height''', 3: '''width'''}),
				    ]							)





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return 1E-4





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return 1_2



