






from dataclasses import dataclass
from typing import List, Optional, Union

import numpy as np
import PIL
from PIL import Image

from ...utils import (
    BaseOutput,
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)






@dataclass
class 			_UpperCamelCase(       __lowerCamelCase		):
		__SCREAMING_SNAKE_CASE  :       Union[List[PIL.Image.Image], np.ndarray]
		__SCREAMING_SNAKE_CASE  :       Optional[List[bool]]


try:
							if not (is_transformers_available() and is_torch_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
							from .pipeline_cycle_diffusion import CycleDiffusionPipeline
							from .pipeline_stable_diffusion import StableDiffusionPipeline
							from .pipeline_stable_diffusion_attend_and_excite import StableDiffusionAttendAndExcitePipeline
							from .pipeline_stable_diffusion_imgaimg import StableDiffusionImgaImgPipeline
							from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
							from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
							from .pipeline_stable_diffusion_instruct_pixapix import StableDiffusionInstructPixaPixPipeline
							from .pipeline_stable_diffusion_latent_upscale import StableDiffusionLatentUpscalePipeline
							from .pipeline_stable_diffusion_ldmad import StableDiffusionLDMaDPipeline
							from .pipeline_stable_diffusion_model_editing import StableDiffusionModelEditingPipeline
							from .pipeline_stable_diffusion_panorama import StableDiffusionPanoramaPipeline
							from .pipeline_stable_diffusion_paradigms import StableDiffusionParadigmsPipeline
							from .pipeline_stable_diffusion_sag import StableDiffusionSAGPipeline
							from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
							from .pipeline_stable_unclip import StableUnCLIPPipeline
							from .pipeline_stable_unclip_imgaimg import StableUnCLIPImgaImgPipeline
							from .safety_checker import StableDiffusionSafetyChecker
							from .stable_unclip_image_normalizer import StableUnCLIPImageNormalizer

try:
							if not (is_transformers_available() and is_torch_available() and is_transformers_version('''>=''', '''4.25.0''')):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
else:
							from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline


try:
							if not (is_transformers_available() and is_torch_available() and is_transformers_version('''>=''', '''4.26.0''')):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from ...utils.dummy_torch_and_transformers_objects import (
							    StableDiffusionDepthaImgPipeline,
							    StableDiffusionDiffEditPipeline,
							    StableDiffusionPixaPixZeroPipeline,
							)
else:
							from .pipeline_stable_diffusion_depthaimg import StableDiffusionDepthaImgPipeline
							from .pipeline_stable_diffusion_diffedit import StableDiffusionDiffEditPipeline
							from .pipeline_stable_diffusion_pixapix_zero import StableDiffusionPixaPixZeroPipeline


try:
							if not (
							    is_torch_available()
							    and is_transformers_available()
							    and is_k_diffusion_available()
							    and is_k_diffusion_version('''>=''', '''0.0.12''')
							):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
							from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

try:
							if not (is_transformers_available() and is_onnx_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from ...utils.dummy_onnx_objects import *  # noqa F403
else:
							from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
							from .pipeline_onnx_stable_diffusion_imgaimg import OnnxStableDiffusionImgaImgPipeline
							from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
							from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
							from .pipeline_onnx_stable_diffusion_upscale import OnnxStableDiffusionUpscalePipeline

if is_transformers_available() and is_flax_available():
							import flax






							@flax.struct.dataclass
							class 			_UpperCamelCase(       __lowerCamelCase		):
									__SCREAMING_SNAKE_CASE  :       np.ndarray
									__SCREAMING_SNAKE_CASE  :       List[bool]




							from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
							from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
							from .pipeline_flax_stable_diffusion_imgaimg import FlaxStableDiffusionImgaImgPipeline
							from .pipeline_flax_stable_diffusion_inpaint import FlaxStableDiffusionInpaintPipeline
							from .safety_checker_flax import FlaxStableDiffusionSafetyChecker









from __future__ import annotations






class      UpperCamelCase:


					def __init__(    self						:		Optional[int]  ,     SCREAMING_SNAKE_CASE						:		str  ,     SCREAMING_SNAKE_CASE						:		str    )      ->						str:




											'''simple docstring'''

											__snake_case		,       __snake_case				=		text, pattern
											__snake_case		,       __snake_case				=		len(SCREAMING_SNAKE_CASE    ), len(SCREAMING_SNAKE_CASE    )


					def 				SCREAMING_SNAKE_CASE_	(    self						:		Optional[Any]  ,     SCREAMING_SNAKE_CASE						:		str    )      ->						int:




											'''simple docstring'''

											for i in range(self.patLen - 1  ,     -1  ,     -1    ):
																	if char == self.pattern[i]:
																							return i
											return -1


					def 				SCREAMING_SNAKE_CASE_	(    self						:		int  ,     SCREAMING_SNAKE_CASE						:		int    )      ->						int:




											'''simple docstring'''

											for i in range(self.patLen - 1  ,     -1  ,     -1    ):
																	if self.pattern[i] != self.text[current_pos + i]:
																							return current_pos + i
											return -1






					def 				SCREAMING_SNAKE_CASE_	(    self						:		List[Any]    )      ->						list[int]:




											'''simple docstring'''

											__snake_case				=		[]
											for i in range(self.textLen - self.patLen + 1    ):
																	__snake_case				=		self.mismatch_in_text(SCREAMING_SNAKE_CASE    )
																	if mismatch_index == -1:
																							positions.append(SCREAMING_SNAKE_CASE    )
																	else:
																							__snake_case				=		self.match_in_pattern(self.text[mismatch_index]    )
																							__snake_case				=		(
																							    mismatch_index - match_index
																							)  # shifting index lgtm [py/multiple-definition]
											return positions




A				:       str      =  'ABAABA'
A				:       Optional[Any]      =  'AB'
A				:       Any      =  BoyerMooreSearch(text, pattern)
A				:       Tuple      =  bms.bad_character_heuristic()

if len(positions) == 0:
	print('No match found')
else:
	print('Pattern found in following positions: ')
	print(positions)





