


"""simple docstring"""



from __future__ import annotations

from collections import deque







class _lowerCAmelCase    :







   def __init__(     self						,     UpperCamelCase__						)     ->		Optional[Any]:

       '''simple docstring'''




       snake_case   :				list[dict]				 =   []
       self.adlist.append(
           {"value": "", "next_states": [], "fail_state": 0, "output": []}						)

       for keyword in keywords:
           self.add_keyword(UpperCamelCase__						)
       self.set_fail_transitions()







   def 			lowerCamelCase		(     self						,     UpperCamelCase__						,     UpperCamelCase__						)     ->		int | None:

       '''simple docstring'''




       for state in self.adlist[current_state]["next_states"]:
           if char == self.adlist[state]["value"]:
               return state
       return None







   def 			lowerCamelCase		(     self						,     UpperCamelCase__						)     ->		None:

       '''simple docstring'''




       snake_case   :				List[str]				 =   0
       for character in keyword:
           snake_case   :				int				 =   self.find_next_state(UpperCamelCase__						,     UpperCamelCase__						)
           if next_state is None:
               self.adlist.append(
                   {
                       "value": character,
                       "next_states": [],
                       "fail_state": 0,
                       "output": [],
                   }						)
               self.adlist[current_state]["next_states"].append(len(self.adlist						) - 1						)
               snake_case   :				List[Any]				 =   len(self.adlist						) - 1
           else:
               snake_case   :				Tuple				 =   next_state
       self.adlist[current_state]["output"].append(UpperCamelCase__						)







   def 			lowerCamelCase		(     self						)     ->		None:

       '''simple docstring'''




       snake_case   :				deque				 =   deque()
       for node in self.adlist[0]["next_states"]:
           q.append(UpperCamelCase__						)
           snake_case   :				Tuple				 =   0
       while q:
           snake_case   :				Any				 =   q.popleft()
           for child in self.adlist[r]["next_states"]:
               q.append(UpperCamelCase__						)
               snake_case   :				List[Any]				 =   self.adlist[r]["fail_state"]
               while (
                   self.find_next_state(UpperCamelCase__						,     self.adlist[child]["value"]						) is None
                   and state != 0
               ):
                   snake_case   :				Union[str, Any]				 =   self.adlist[state]["fail_state"]
               snake_case   :				str				 =   self.find_next_state(
                   UpperCamelCase__						,     self.adlist[child]["value"]						)
               if self.adlist[child]["fail_state"] is None:
                   snake_case   :				Any				 =   0
               snake_case   :				int				 =   (
                   self.adlist[child]["output"]
                   + self.adlist[self.adlist[child]["fail_state"]]["output"]
               )







   def 			lowerCamelCase		(     self						,     UpperCamelCase__						)     ->		dict[str, list[int]]:

       '''simple docstring'''




       snake_case   :				dict				 =   {}  # returns a dict with keywords and list of its occurrences
       snake_case   :				Union[str, Any]				 =   0
       for i in range(len(UpperCamelCase__						)						):
           while (
               self.find_next_state(UpperCamelCase__						,     string[i]						) is None
               and current_state != 0
           ):
               snake_case   :				Union[str, Any]				 =   self.adlist[current_state]["fail_state"]
           snake_case   :				int				 =   self.find_next_state(UpperCamelCase__						,     string[i]						)
           if next_state is None:
               snake_case   :				Union[str, Any]				 =   0
           else:
               snake_case   :				Optional[Any]				 =   next_state
               for key in self.adlist[current_state]["output"]:
                   if key not in result:
                       snake_case   :				Tuple				 =   []
                   result[key].append(i - len(UpperCamelCase__						) + 1						)
       return result


if __name__ == "__main__":
  import doctest

  doctest.testmod()









"""simple docstring"""



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 _lowerCAmelCase    (				snake_case_     ):
   __UpperCAmelCase			:	Union[List[PIL.Image.Image], np.ndarray]
   __UpperCAmelCase			:	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 _lowerCAmelCase    (				snake_case_     ):
     __UpperCAmelCase			:	np.ndarray
     __UpperCAmelCase			:	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





