






import math


def 				__lowerCamelCase     (							__lowerCAmelCase							:					int							)     ->  bool:
   assert isinstance(__lowerCAmelCase					,							__lowerCAmelCase							) and (
       number >= 0
   ), "'number' must been an int and positive"

   if 1 < number < 4:
      # 2 and 3 are primes
      return True
   elif number < 2 or not number % 2:
      # Negatives, 0, 1 and all even numbers are not primes
      return False

   __UpperCamelCase	:			Tuple					=					range(3					,							int(math.sqrt(__lowerCAmelCase							) + 1							)					,							2							)
   return not any(not number % i for i in odd_numbers							)



def 				__lowerCamelCase     (							__lowerCAmelCase							:					List[str]					,							__lowerCAmelCase							:					Optional[int]=1					,							**__lowerCAmelCase							:					Optional[Any]							)     ->  List[Any]:
   __UpperCamelCase	:			Any					=					factor * value
   __UpperCamelCase	:			Optional[int]					=					value

   while not is_prime(__lowerCAmelCase							):
      value += 1 if not ("desc" in kwargs and kwargs["desc"] is True) else -1

   if value == first_value_val:
      return next_prime(value + 1					,							**__lowerCAmelCase							)
   return value











from typing import List, Optional, Union

from ...image_utils import ImageInput
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType







class 		_A						( UpperCAmelCase_ ):
  lowercase_						:			Tuple						=					['''image_processor''', '''tokenizer''']
  lowercase_						:			str						=					'''BlipImageProcessor'''
  lowercase_						:			str						=					('''BertTokenizer''', '''BertTokenizerFast''')

  def __init__(    self						:	List[str]   ,				lowerCamelCase__						:	str   ,				lowerCamelCase__						:	Union[str, Any]			):
     """simple docstring"""

     __UpperCamelCase	:			Optional[int]					=					False
     super().__init__(lowerCamelCase__   ,				lowerCamelCase__			)
     __UpperCamelCase	:			Tuple					=					self.image_processor

  def __call__(    self						:	Optional[Any]   ,				lowerCamelCase__						:	ImageInput = None   ,				lowerCamelCase__						:	Union[TextInput, PreTokenizedInput, List[TextInput], List[PreTokenizedInput]] = None   ,				lowerCamelCase__						:	bool = True   ,				lowerCamelCase__						:	Union[bool, str, PaddingStrategy] = False   ,				lowerCamelCase__						:	Union[bool, str, TruncationStrategy] = None   ,				lowerCamelCase__						:	Optional[int] = None   ,				lowerCamelCase__						:	int = 0   ,				lowerCamelCase__						:	Optional[int] = None   ,				lowerCamelCase__						:	Optional[bool] = None   ,				lowerCamelCase__						:	bool = False   ,				lowerCamelCase__						:	bool = False   ,				lowerCamelCase__						:	bool = False   ,				lowerCamelCase__						:	bool = False   ,				lowerCamelCase__						:	bool = False   ,				lowerCamelCase__						:	bool = True   ,				lowerCamelCase__						:	Optional[Union[str, TensorType]] = None   ,				**lowerCamelCase__						:	int   ,				):
     """simple docstring"""

     if images is None and text is None:
        raise ValueError("""You have to specify either images or text."""			)

     # Get only text
     if images is None:
        __UpperCamelCase	:			Optional[int]					=					self.tokenizer
        __UpperCamelCase	:			Dict					=					self.tokenizer(
            text=lowerCamelCase__   ,				add_special_tokens=lowerCamelCase__   ,				padding=lowerCamelCase__   ,				truncation=lowerCamelCase__   ,				max_length=lowerCamelCase__   ,				stride=lowerCamelCase__   ,				pad_to_multiple_of=lowerCamelCase__   ,				return_attention_mask=lowerCamelCase__   ,				return_overflowing_tokens=lowerCamelCase__   ,				return_special_tokens_mask=lowerCamelCase__   ,				return_offsets_mapping=lowerCamelCase__   ,				return_token_type_ids=lowerCamelCase__   ,				return_length=lowerCamelCase__   ,				verbose=lowerCamelCase__   ,				return_tensors=lowerCamelCase__   ,				**lowerCamelCase__   ,				)
        return text_encoding

     # add pixel_values
     __UpperCamelCase	:			str					=					self.image_processor(lowerCamelCase__   ,				return_tensors=lowerCamelCase__			)

     if text is not None:
        __UpperCamelCase	:			Optional[int]					=					self.tokenizer(
            text=lowerCamelCase__   ,				add_special_tokens=lowerCamelCase__   ,				padding=lowerCamelCase__   ,				truncation=lowerCamelCase__   ,				max_length=lowerCamelCase__   ,				stride=lowerCamelCase__   ,				pad_to_multiple_of=lowerCamelCase__   ,				return_attention_mask=lowerCamelCase__   ,				return_overflowing_tokens=lowerCamelCase__   ,				return_special_tokens_mask=lowerCamelCase__   ,				return_offsets_mapping=lowerCamelCase__   ,				return_token_type_ids=lowerCamelCase__   ,				return_length=lowerCamelCase__   ,				verbose=lowerCamelCase__   ,				return_tensors=lowerCamelCase__   ,				**lowerCamelCase__   ,				)
     else:
        __UpperCamelCase	:			Optional[Any]					=					None

     if text_encoding is not None:
        encoding_image_processor.update(lowerCamelCase__			)

     return encoding_image_processor

  def    a					(    self						:	List[str]   ,				*lowerCamelCase__						:	Any   ,				**lowerCamelCase__						:	List[Any]			):
     """simple docstring"""

     return self.tokenizer.batch_decode(*lowerCamelCase__   ,				**lowerCamelCase__			)

  def    a					(    self						:	List[str]   ,				*lowerCamelCase__						:	int   ,				**lowerCamelCase__						:	Tuple			):
     """simple docstring"""

     return self.tokenizer.decode(*lowerCamelCase__   ,				**lowerCamelCase__			)

  @property
  def    a					(    self						:	Any			):
     """simple docstring"""

     __UpperCamelCase	:			str					=					self.tokenizer.model_input_names
     __UpperCamelCase	:			str					=					self.image_processor.model_input_names
     return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names			)			)



