





# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import numpy as np
import torch

from ..models.clipseg import CLIPSegForImageSegmentation
from ..utils import is_vision_available, requires_backends
from .base import PipelineTool


if is_vision_available():
					from PIL import Image

class 							__SCREAMING_SNAKE_CASE       (  _a							):
							snake_case  :   Any      =							(
							    """This is a tool that creates a segmentation mask of an image according to a label. It cannot create an image."""
							    """It takes two arguments named `image` which should be the original image, and `label` which should be a text """
							    """describing the elements what should be identified in the segmentation mask. The tool returns the mask."""
							)
							snake_case  :   int      =							"""CIDAS/clipseg-rd64-refined"""
							snake_case  :   List[Any]      =							"""image_segmenter"""
							snake_case  :   Any      =							CLIPSegForImageSegmentation

							snake_case  :   Union[str, Any]      =							["""image""", """text"""]
							snake_case  :   Dict      =							["""image"""]






							def __init__(    self	,			*__lowerCAmelCase	,			**__lowerCAmelCase	):
														requires_backends(self	,			["""vision"""]	)
														super().__init__(*__lowerCAmelCase	,			**__lowerCAmelCase	)






							def 					_lowerCamelCase		(    self	,			__lowerCAmelCase	,			__lowerCAmelCase	):
														return self.pre_processor(text=[label]	,			images=[image]	,			padding=__lowerCAmelCase	,			return_tensors="""pt"""	)






							def 					_lowerCamelCase		(    self	,			__lowerCAmelCase	):
														with torch.no_grad():
																					UpperCamelCase__					  =      self.model(**__lowerCAmelCase	).logits
														return logits







							def 					_lowerCamelCase		(    self	,			__lowerCAmelCase	):
														UpperCamelCase__					  =      outputs.cpu().detach().numpy()
														UpperCamelCase__					  =      0
														UpperCamelCase__					  =      1
														return Image.fromarray((array * 255).astype(np.uinta	)	)











def      _UpperCamelCase  (a__ :int = 1000							):






							"""simple docstring"""





							UpperCamelCase__					  =      2**power
							UpperCamelCase__					  =      0
							while n:
														UpperCamelCase__  ,  UpperCamelCase__					  =      r + n % 10, n // 10
							return r


if __name__ == "__main__":
					print(solution(int(str(input()).strip())))




