From 1ca14ce05889fa45ae420fd6b51cb8d02f372fb1 Mon Sep 17 00:00:00 2001 From: Daniel Gatis Date: Thu, 20 Apr 2023 21:39:13 -0300 Subject: [PATCH] refactoring --- README.md | 10 + rembg/bg.py | 21 +- rembg/cli.py | 476 +----------------- rembg/commands/__init__.py | 13 + rembg/commands/i_command.py | 93 ++++ rembg/commands/p_command.py | 181 +++++++ rembg/commands/s_command.py | 239 +++++++++ rembg/session_dis.py | 28 -- rembg/session_factory.py | 110 +--- rembg/session_simple.py | 30 -- rembg/sessions/__init__.py | 22 + rembg/{session_base.py => sessions/base.py} | 29 +- rembg/sessions/dis.py | 47 ++ rembg/{session_sam.py => sessions/sam.py} | 77 ++- rembg/sessions/silueta.py | 49 ++ rembg/sessions/u2net.py | 49 ++ .../u2net_cloth_seg.py} | 25 +- rembg/sessions/u2net_human_seg.py | 49 ++ rembg/sessions/u2netp.py | 49 ++ requirements-gpu.txt | 2 +- requirements.txt | 4 +- setup.py | 6 +- tests/results/car-1.sam.png | Bin 0 -> 79493 bytes tests/results/cloth-1.sam.png | Bin 0 -> 106426 bytes tests/test_remove.py | 38 +- 25 files changed, 966 insertions(+), 681 deletions(-) create mode 100644 rembg/commands/__init__.py create mode 100644 rembg/commands/i_command.py create mode 100644 rembg/commands/p_command.py create mode 100644 rembg/commands/s_command.py delete mode 100644 rembg/session_dis.py delete mode 100644 rembg/session_simple.py create mode 100644 rembg/sessions/__init__.py rename rembg/{session_base.py => sessions/base.py} (55%) create mode 100644 rembg/sessions/dis.py rename rembg/{session_sam.py => sessions/sam.py} (58%) create mode 100644 rembg/sessions/silueta.py create mode 100644 rembg/sessions/u2net.py rename rembg/{session_cloth.py => sessions/u2net_cloth_seg.py} (67%) create mode 100644 rembg/sessions/u2net_human_seg.py create mode 100644 rembg/sessions/u2netp.py create mode 100644 tests/results/car-1.sam.png create mode 100644 tests/results/cloth-1.sam.png diff --git a/README.md b/README.md index c89c276..81039a3 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,12 @@ Remove the background applying an alpha matting rembg i -a path/to/input.png path/to/output.png ``` +Passing extras parameters + +``` +rembg i -m sam -x '{"input_labels": [1], "input_points": [[100,100]]}' path/to/input.png path/to/output.png +``` + ### rembg `p` Used when input and output are folders. @@ -266,6 +272,7 @@ The available models are: - u2net_cloth_seg ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_cloth_seg.onnx), [source](https://github.com/levindabhi/cloth-segmentation)): A pre-trained model for Cloths Parsing from human portrait. Here clothes are parsed into 3 category: Upper body, Lower body and Full body. - silueta ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/silueta.onnx), [source](https://github.com/xuebinqin/U-2-Net/issues/295)): Same as u2net but the size is reduced to 43Mb. - isnet-general-use ([download](https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-general-use.onnx), [source](https://github.com/xuebinqin/DIS)): A new pre-trained model for general use cases. +- sam ([encoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-encoder-quant.onnx), [decoder](https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-decoder-quant.onnx), [source](https://github.com/facebookresearch/segment-anything)): The Segment Anything Model (SAM). ### Some differences between the models result @@ -278,6 +285,7 @@ The available models are: u2net_cloth_seg silueta isnet-general-use + sam @@ -287,6 +295,7 @@ The available models are: + @@ -295,6 +304,7 @@ The available models are: + diff --git a/rembg/bg.py b/rembg/bg.py index ab342cb..eed42c5 100644 --- a/rembg/bg.py +++ b/rembg/bg.py @@ -1,6 +1,6 @@ import io from enum import Enum -from typing import List, Optional, Tuple, Union +from typing import Any, List, Optional, Tuple, Union import numpy as np from cv2 import ( @@ -18,9 +18,8 @@ from pymatting.foreground.estimate_foreground_ml import estimate_foreground_ml from pymatting.util.util import stack_images from scipy.ndimage import binary_erosion -from .session_base import BaseSession from .session_factory import new_session -from .session_sam import SamSession +from .sessions.base import BaseSession kernel = getStructuringElement(MORPH_ELLIPSE, (3, 3)) @@ -120,12 +119,12 @@ def remove( alpha_matting_foreground_threshold: int = 240, alpha_matting_background_threshold: int = 10, alpha_matting_erode_size: int = 10, - session: Optional[Union[BaseSession, SamSession]] = None, + session: Optional[BaseSession] = None, only_mask: bool = False, post_process_mask: bool = False, bgcolor: Optional[Tuple[int, int, int, int]] = None, - input_point: Optional[np.ndarray] = None, - input_label: Optional[np.ndarray] = None, + *args: Optional[Any], + **kwargs: Optional[Any] ) -> Union[bytes, PILImage, np.ndarray]: if isinstance(data, PILImage): return_type = ReturnType.PILLOW @@ -140,15 +139,9 @@ def remove( raise ValueError("Input type {} is not supported.".format(type(data))) if session is None: - session = new_session("u2net") - - if isinstance(session, SamSession): - if input_point is None or input_label is None: - raise ValueError("Input point and label are required for SAM model.") - masks = session.predict_sam(img, input_point, input_label) - else: - masks = session.predict(img) + session = new_session("u2net", *args, **kwargs) + masks = session.predict(img, *args, **kwargs) cutouts = [] for mask in masks: diff --git a/rembg/cli.py b/rembg/cli.py index cfb1760..bd3ac26 100644 --- a/rembg/cli.py +++ b/rembg/cli.py @@ -1,25 +1,7 @@ -import pathlib -import sys -import time -from enum import Enum -from typing import IO, Optional, Tuple, cast - -import aiohttp import click -import filetype -import uvicorn -from asyncer import asyncify -from fastapi import Depends, FastAPI, File, Form, Query -from fastapi.middleware.cors import CORSMiddleware -from starlette.responses import Response -from tqdm import tqdm -from watchdog.events import FileSystemEvent, FileSystemEventHandler -from watchdog.observers import Observer from . import _version -from .bg import remove -from .session_base import BaseSession -from .session_factory import new_session +from .commands import command_functions @click.group() @@ -28,457 +10,5 @@ def main() -> None: pass -@main.command(help="for a file as input") -@click.option( - "-m", - "--model", - default="u2net", - type=click.Choice( - [ - "u2net", - "u2netp", - "u2net_human_seg", - "u2net_cloth_seg", - "silueta", - "isnet-general-use", - ] - ), - show_default=True, - show_choices=True, - help="model name", -) -@click.option( - "-a", - "--alpha-matting", - is_flag=True, - show_default=True, - help="use alpha matting", -) -@click.option( - "-af", - "--alpha-matting-foreground-threshold", - default=240, - type=int, - show_default=True, - help="trimap fg threshold", -) -@click.option( - "-ab", - "--alpha-matting-background-threshold", - default=10, - type=int, - show_default=True, - help="trimap bg threshold", -) -@click.option( - "-ae", - "--alpha-matting-erode-size", - default=10, - type=int, - show_default=True, - help="erode size", -) -@click.option( - "-om", - "--only-mask", - is_flag=True, - show_default=True, - help="output only the mask", -) -@click.option( - "-ppm", - "--post-process-mask", - is_flag=True, - show_default=True, - help="post process the mask", -) -@click.option( - "-bgc", - "--bgcolor", - default=None, - type=(int, int, int, int), - nargs=4, - help="Background color (R G B A) to replace the removed background with", -) -@click.argument( - "input", default=(None if sys.stdin.isatty() else "-"), type=click.File("rb") -) -@click.argument( - "output", - default=(None if sys.stdin.isatty() else "-"), - type=click.File("wb", lazy=True), -) -def i(model: str, input: IO, output: IO, **kwargs) -> None: - output.write(remove(input.read(), session=new_session(model), **kwargs)) - - -@main.command(help="for a folder as input") -@click.option( - "-m", - "--model", - default="u2net", - type=click.Choice( - [ - "u2net", - "u2netp", - "u2net_human_seg", - "u2net_cloth_seg", - "silueta", - "isnet-general-use", - ] - ), - show_default=True, - show_choices=True, - help="model name", -) -@click.option( - "-a", - "--alpha-matting", - is_flag=True, - show_default=True, - help="use alpha matting", -) -@click.option( - "-af", - "--alpha-matting-foreground-threshold", - default=240, - type=int, - show_default=True, - help="trimap fg threshold", -) -@click.option( - "-ab", - "--alpha-matting-background-threshold", - default=10, - type=int, - show_default=True, - help="trimap bg threshold", -) -@click.option( - "-ae", - "--alpha-matting-erode-size", - default=10, - type=int, - show_default=True, - help="erode size", -) -@click.option( - "-om", - "--only-mask", - is_flag=True, - show_default=True, - help="output only the mask", -) -@click.option( - "-ppm", - "--post-process-mask", - is_flag=True, - show_default=True, - help="post process the mask", -) -@click.option( - "-w", - "--watch", - default=False, - is_flag=True, - show_default=True, - help="watches a folder for changes", -) -@click.option( - "-bgc", - "--bgcolor", - default=None, - type=(int, int, int, int), - nargs=4, - help="Background color (R G B A) to replace the removed background with", -) -@click.argument( - "input", - type=click.Path( - exists=True, - path_type=pathlib.Path, - file_okay=False, - dir_okay=True, - readable=True, - ), -) -@click.argument( - "output", - type=click.Path( - exists=False, - path_type=pathlib.Path, - file_okay=False, - dir_okay=True, - writable=True, - ), -) -def p( - model: str, input: pathlib.Path, output: pathlib.Path, watch: bool, **kwargs -) -> None: - session = new_session(model) - - def process(each_input: pathlib.Path) -> None: - try: - mimetype = filetype.guess(each_input) - if mimetype is None: - return - if mimetype.mime.find("image") < 0: - return - - each_output = (output / each_input.name).with_suffix(".png") - each_output.parents[0].mkdir(parents=True, exist_ok=True) - - if not each_output.exists(): - each_output.write_bytes( - cast( - bytes, - remove(each_input.read_bytes(), session=session, **kwargs), - ) - ) - - if watch: - print( - f"processed: {each_input.absolute()} -> {each_output.absolute()}" - ) - except Exception as e: - print(e) - - inputs = list(input.glob("**/*")) - if not watch: - inputs = tqdm(inputs) - - for each_input in inputs: - if not each_input.is_dir(): - process(each_input) - - if watch: - observer = Observer() - - class EventHandler(FileSystemEventHandler): - def on_any_event(self, event: FileSystemEvent) -> None: - if not ( - event.is_directory or event.event_type in ["deleted", "closed"] - ): - process(pathlib.Path(event.src_path)) - - event_handler = EventHandler() - observer.schedule(event_handler, input, recursive=False) - observer.start() - - try: - while True: - time.sleep(1) - - finally: - observer.stop() - observer.join() - - -@main.command(help="for a http server") -@click.option( - "-p", - "--port", - default=5000, - type=int, - show_default=True, - help="port", -) -@click.option( - "-l", - "--log_level", - default="info", - type=str, - show_default=True, - help="log level", -) -@click.option( - "-t", - "--threads", - default=None, - type=int, - show_default=True, - help="number of worker threads", -) -def s(port: int, log_level: str, threads: int) -> None: - sessions: dict[str, BaseSession] = {} - tags_metadata = [ - { - "name": "Background Removal", - "description": "Endpoints that perform background removal with different image sources.", - "externalDocs": { - "description": "GitHub Source", - "url": "https://github.com/danielgatis/rembg", - }, - }, - ] - app = FastAPI( - title="Rembg", - description="Rembg is a tool to remove images background. That is it.", - version=_version.get_versions()["version"], - contact={ - "name": "Daniel Gatis", - "url": "https://github.com/danielgatis", - "email": "danielgatis@gmail.com", - }, - license_info={ - "name": "MIT License", - "url": "https://github.com/danielgatis/rembg/blob/main/LICENSE.txt", - }, - openapi_tags=tags_metadata, - ) - - app.add_middleware( - CORSMiddleware, - allow_credentials=True, - allow_origins=["*"], - allow_methods=["*"], - allow_headers=["*"], - ) - - class ModelType(str, Enum): - u2net = "u2net" - u2netp = "u2netp" - u2net_human_seg = "u2net_human_seg" - u2net_cloth_seg = "u2net_cloth_seg" - silueta = "silueta" - isnet_general_use = "isnet-general-use" - - class CommonQueryParams: - def __init__( - self, - model: ModelType = Query( - default=ModelType.u2net, - description="Model to use when processing image", - ), - a: bool = Query(default=False, description="Enable Alpha Matting"), - af: int = Query( - default=240, - ge=0, - le=255, - description="Alpha Matting (Foreground Threshold)", - ), - ab: int = Query( - default=10, - ge=0, - le=255, - description="Alpha Matting (Background Threshold)", - ), - ae: int = Query( - default=10, ge=0, description="Alpha Matting (Erode Structure Size)" - ), - om: bool = Query(default=False, description="Only Mask"), - ppm: bool = Query(default=False, description="Post Process Mask"), - bgc: Optional[str] = Query(default=None, description="Background Color"), - ): - self.model = model - self.a = a - self.af = af - self.ab = ab - self.ae = ae - self.om = om - self.ppm = ppm - self.bgc = ( - cast(Tuple[int, int, int, int], tuple(map(int, bgc.split(",")))) - if bgc - else None - ) - - class CommonQueryPostParams: - def __init__( - self, - model: ModelType = Form( - default=ModelType.u2net, - description="Model to use when processing image", - ), - a: bool = Form(default=False, description="Enable Alpha Matting"), - af: int = Form( - default=240, - ge=0, - le=255, - description="Alpha Matting (Foreground Threshold)", - ), - ab: int = Form( - default=10, - ge=0, - le=255, - description="Alpha Matting (Background Threshold)", - ), - ae: int = Form( - default=10, ge=0, description="Alpha Matting (Erode Structure Size)" - ), - om: bool = Form(default=False, description="Only Mask"), - ppm: bool = Form(default=False, description="Post Process Mask"), - bgc: Optional[str] = Query(default=None, description="Background Color"), - ): - self.model = model - self.a = a - self.af = af - self.ab = ab - self.ae = ae - self.om = om - self.ppm = ppm - self.bgc = ( - cast(Tuple[int, int, int, int], tuple(map(int, bgc.split(",")))) - if bgc - else None - ) - - def im_without_bg(content: bytes, commons: CommonQueryParams) -> Response: - return Response( - remove( - content, - session=sessions.setdefault( - commons.model.value, new_session(commons.model.value) - ), - alpha_matting=commons.a, - alpha_matting_foreground_threshold=commons.af, - alpha_matting_background_threshold=commons.ab, - alpha_matting_erode_size=commons.ae, - only_mask=commons.om, - post_process_mask=commons.ppm, - bgcolor=commons.bgc, - ), - media_type="image/png", - ) - - @app.on_event("startup") - def startup(): - if threads is not None: - from anyio import CapacityLimiter - from anyio.lowlevel import RunVar - - RunVar("_default_thread_limiter").set(CapacityLimiter(threads)) - - @app.get( - path="/", - tags=["Background Removal"], - summary="Remove from URL", - description="Removes the background from an image obtained by retrieving an URL.", - ) - async def get_index( - url: str = Query( - default=..., description="URL of the image that has to be processed." - ), - commons: CommonQueryParams = Depends(), - ): - async with aiohttp.ClientSession() as session: - async with session.get(url) as response: - file = await response.read() - return await asyncify(im_without_bg)(file, commons) - - @app.post( - path="/", - tags=["Background Removal"], - summary="Remove from Stream", - description="Removes the background from an image sent within the request itself.", - ) - async def post_index( - file: bytes = File( - default=..., - description="Image file (byte stream) that has to be processed.", - ), - commons: CommonQueryPostParams = Depends(), - ): - return await asyncify(im_without_bg)(file, commons) # type: ignore - - uvicorn.run(app, host="0.0.0.0", port=port, log_level=log_level) +for command in command_functions: + main.add_command(command) diff --git a/rembg/commands/__init__.py b/rembg/commands/__init__.py new file mode 100644 index 0000000..64f8993 --- /dev/null +++ b/rembg/commands/__init__.py @@ -0,0 +1,13 @@ +from importlib import import_module +from pathlib import Path +from pkgutil import iter_modules + +command_functions = [] + +package_dir = Path(__file__).resolve().parent +for _b, module_name, _p in iter_modules([str(package_dir)]): + module = import_module(f"{__name__}.{module_name}") + for attribute_name in dir(module): + attribute = getattr(module, attribute_name) + if attribute_name.endswith("_command"): + command_functions.append(attribute) diff --git a/rembg/commands/i_command.py b/rembg/commands/i_command.py new file mode 100644 index 0000000..d65313c --- /dev/null +++ b/rembg/commands/i_command.py @@ -0,0 +1,93 @@ +import json +import sys +from typing import IO + +import click + +from ..bg import remove +from ..session_factory import new_session +from ..sessions import sessions_names + + +@click.command( + name="i", + help="for a file as input", +) +@click.option( + "-m", + "--model", + default="u2net", + type=click.Choice(sessions_names), + show_default=True, + show_choices=True, + help="model name", +) +@click.option( + "-a", + "--alpha-matting", + is_flag=True, + show_default=True, + help="use alpha matting", +) +@click.option( + "-af", + "--alpha-matting-foreground-threshold", + default=240, + type=int, + show_default=True, + help="trimap fg threshold", +) +@click.option( + "-ab", + "--alpha-matting-background-threshold", + default=10, + type=int, + show_default=True, + help="trimap bg threshold", +) +@click.option( + "-ae", + "--alpha-matting-erode-size", + default=10, + type=int, + show_default=True, + help="erode size", +) +@click.option( + "-om", + "--only-mask", + is_flag=True, + show_default=True, + help="output only the mask", +) +@click.option( + "-ppm", + "--post-process-mask", + is_flag=True, + show_default=True, + help="post process the mask", +) +@click.option( + "-bgc", + "--bgcolor", + default=None, + type=(int, int, int, int), + nargs=4, + help="Background color (R G B A) to replace the removed background with", +) +@click.option("-x", "--extras", type=str) +@click.argument( + "input", default=(None if sys.stdin.isatty() else "-"), type=click.File("rb") +) +@click.argument( + "output", + default=(None if sys.stdin.isatty() else "-"), + type=click.File("wb", lazy=True), +) +def i_command(model: str, extras: str, input: IO, output: IO, **kwargs) -> None: + try: + kwargs.update(json.loads(extras)) + except Exception: + pass + + output.write(remove(input.read(), session=new_session(model), **kwargs)) diff --git a/rembg/commands/p_command.py b/rembg/commands/p_command.py new file mode 100644 index 0000000..2163bfb --- /dev/null +++ b/rembg/commands/p_command.py @@ -0,0 +1,181 @@ +import json +import pathlib +import time +from typing import cast + +import click +import filetype +from tqdm import tqdm +from watchdog.events import FileSystemEvent, FileSystemEventHandler +from watchdog.observers import Observer + +from ..bg import remove +from ..session_factory import new_session +from ..sessions import sessions_names + + +@click.command( + name="p", + help="for a folder as input", +) +@click.option( + "-m", + "--model", + default="u2net", + type=click.Choice(sessions_names), + show_default=True, + show_choices=True, + help="model name", +) +@click.option( + "-a", + "--alpha-matting", + is_flag=True, + show_default=True, + help="use alpha matting", +) +@click.option( + "-af", + "--alpha-matting-foreground-threshold", + default=240, + type=int, + show_default=True, + help="trimap fg threshold", +) +@click.option( + "-ab", + "--alpha-matting-background-threshold", + default=10, + type=int, + show_default=True, + help="trimap bg threshold", +) +@click.option( + "-ae", + "--alpha-matting-erode-size", + default=10, + type=int, + show_default=True, + help="erode size", +) +@click.option( + "-om", + "--only-mask", + is_flag=True, + show_default=True, + help="output only the mask", +) +@click.option( + "-ppm", + "--post-process-mask", + is_flag=True, + show_default=True, + help="post process the mask", +) +@click.option( + "-w", + "--watch", + default=False, + is_flag=True, + show_default=True, + help="watches a folder for changes", +) +@click.option( + "-bgc", + "--bgcolor", + default=None, + type=(int, int, int, int), + nargs=4, + help="Background color (R G B A) to replace the removed background with", +) +@click.option("-x", "--extras", type=str) +@click.argument( + "input", + type=click.Path( + exists=True, + path_type=pathlib.Path, + file_okay=False, + dir_okay=True, + readable=True, + ), +) +@click.argument( + "output", + type=click.Path( + exists=False, + path_type=pathlib.Path, + file_okay=False, + dir_okay=True, + writable=True, + ), +) +def p_command( + model: str, + extras: str, + input: pathlib.Path, + output: pathlib.Path, + watch: bool, + **kwargs, +) -> None: + try: + kwargs.update(json.loads(extras)) + except Exception: + pass + + session = new_session(model) + + def process(each_input: pathlib.Path) -> None: + try: + mimetype = filetype.guess(each_input) + if mimetype is None: + return + if mimetype.mime.find("image") < 0: + return + + each_output = (output / each_input.name).with_suffix(".png") + each_output.parents[0].mkdir(parents=True, exist_ok=True) + + if not each_output.exists(): + each_output.write_bytes( + cast( + bytes, + remove(each_input.read_bytes(), session=session, **kwargs), + ) + ) + + if watch: + print( + f"processed: {each_input.absolute()} -> {each_output.absolute()}" + ) + except Exception as e: + print(e) + + inputs = list(input.glob("**/*")) + if not watch: + inputs = tqdm(inputs) + + for each_input in inputs: + if not each_input.is_dir(): + process(each_input) + + if watch: + observer = Observer() + + class EventHandler(FileSystemEventHandler): + def on_any_event(self, event: FileSystemEvent) -> None: + if not ( + event.is_directory or event.event_type in ["deleted", "closed"] + ): + process(pathlib.Path(event.src_path)) + + event_handler = EventHandler() + observer.schedule(event_handler, input, recursive=False) + observer.start() + + try: + while True: + time.sleep(1) + + finally: + observer.stop() + observer.join() diff --git a/rembg/commands/s_command.py b/rembg/commands/s_command.py new file mode 100644 index 0000000..ac015b8 --- /dev/null +++ b/rembg/commands/s_command.py @@ -0,0 +1,239 @@ +import json +from typing import Annotated, Optional, Tuple, cast + +import aiohttp +import click +import uvicorn +from asyncer import asyncify +from fastapi import Depends, FastAPI, File, Form, Query +from fastapi.middleware.cors import CORSMiddleware +from starlette.responses import Response + +from .._version import get_versions +from ..bg import remove +from ..session_factory import new_session +from ..sessions import sessions_names +from ..sessions.base import BaseSession + + +@click.command( + name="s", + help="for a http server", +) +@click.option( + "-p", + "--port", + default=5000, + type=int, + show_default=True, + help="port", +) +@click.option( + "-l", + "--log_level", + default="info", + type=str, + show_default=True, + help="log level", +) +@click.option( + "-t", + "--threads", + default=None, + type=int, + show_default=True, + help="number of worker threads", +) +def s_command(port: int, log_level: str, threads: int) -> None: + sessions: dict[str, BaseSession] = {} + tags_metadata = [ + { + "name": "Background Removal", + "description": "Endpoints that perform background removal with different image sources.", + "externalDocs": { + "description": "GitHub Source", + "url": "https://github.com/danielgatis/rembg", + }, + }, + ] + app = FastAPI( + title="Rembg", + description="Rembg is a tool to remove images background. That is it.", + version=get_versions()["version"], + contact={ + "name": "Daniel Gatis", + "url": "https://github.com/danielgatis", + "email": "danielgatis@gmail.com", + }, + license_info={ + "name": "MIT License", + "url": "https://github.com/danielgatis/rembg/blob/main/LICENSE.txt", + }, + openapi_tags=tags_metadata, + ) + + app.add_middleware( + CORSMiddleware, + allow_credentials=True, + allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"], + ) + + class CommonQueryParams: + def __init__( + self, + model: Annotated[ + str, Query(regex=r"(" + "|".join(sessions_names) + ")") + ] = Query( + default="u2net", + description="Model to use when processing image", + ), + a: bool = Query(default=False, description="Enable Alpha Matting"), + af: int = Query( + default=240, + ge=0, + le=255, + description="Alpha Matting (Foreground Threshold)", + ), + ab: int = Query( + default=10, + ge=0, + le=255, + description="Alpha Matting (Background Threshold)", + ), + ae: int = Query( + default=10, ge=0, description="Alpha Matting (Erode Structure Size)" + ), + om: bool = Query(default=False, description="Only Mask"), + ppm: bool = Query(default=False, description="Post Process Mask"), + bgc: Optional[str] = Query(default=None, description="Background Color"), + extras: Optional[str] = Query( + default=None, description="Extra parameters as JSON" + ), + ): + self.model = model + self.a = a + self.af = af + self.ab = ab + self.ae = ae + self.om = om + self.ppm = ppm + self.extras = extras + self.bgc = ( + cast(Tuple[int, int, int, int], tuple(map(int, bgc.split(",")))) + if bgc + else None + ) + + class CommonQueryPostParams: + def __init__( + self, + model: Annotated[ + str, Form(regex=r"(" + "|".join(sessions_names) + ")") + ] = Form( + default="u2net", + description="Model to use when processing image", + ), + a: bool = Form(default=False, description="Enable Alpha Matting"), + af: int = Form( + default=240, + ge=0, + le=255, + description="Alpha Matting (Foreground Threshold)", + ), + ab: int = Form( + default=10, + ge=0, + le=255, + description="Alpha Matting (Background Threshold)", + ), + ae: int = Form( + default=10, ge=0, description="Alpha Matting (Erode Structure Size)" + ), + om: bool = Form(default=False, description="Only Mask"), + ppm: bool = Form(default=False, description="Post Process Mask"), + bgc: Optional[str] = Query(default=None, description="Background Color"), + extras: Optional[str] = Query( + default=None, description="Extra parameters as JSON" + ), + ): + self.model = model + self.a = a + self.af = af + self.ab = ab + self.ae = ae + self.om = om + self.ppm = ppm + self.extras = extras + self.bgc = ( + cast(Tuple[int, int, int, int], tuple(map(int, bgc.split(",")))) + if bgc + else None + ) + + def im_without_bg(content: bytes, commons: CommonQueryParams) -> Response: + kwargs = dict() + + try: + kwargs.update(json.loads(commons.extras)) + except Exception: + pass + + return Response( + remove( + content, + session=sessions.setdefault(commons.model, new_session(commons.model)), + alpha_matting=commons.a, + alpha_matting_foreground_threshold=commons.af, + alpha_matting_background_threshold=commons.ab, + alpha_matting_erode_size=commons.ae, + only_mask=commons.om, + post_process_mask=commons.ppm, + bgcolor=commons.bgc, + **kwargs + ), + media_type="image/png", + ) + + @app.on_event("startup") + def startup(): + if threads is not None: + from anyio import CapacityLimiter + from anyio.lowlevel import RunVar + + RunVar("_default_thread_limiter").set(CapacityLimiter(threads)) + + @app.get( + path="/", + tags=["Background Removal"], + summary="Remove from URL", + description="Removes the background from an image obtained by retrieving an URL.", + ) + async def get_index( + url: str = Query( + default=..., description="URL of the image that has to be processed." + ), + commons: CommonQueryParams = Depends(), + ): + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + file = await response.read() + return await asyncify(im_without_bg)(file, commons) + + @app.post( + path="/", + tags=["Background Removal"], + summary="Remove from Stream", + description="Removes the background from an image sent within the request itself.", + ) + async def post_index( + file: bytes = File( + default=..., + description="Image file (byte stream) that has to be processed.", + ), + commons: CommonQueryPostParams = Depends(), + ): + return await asyncify(im_without_bg)(file, commons) # type: ignore + + uvicorn.run(app, host="0.0.0.0", port=port, log_level=log_level) diff --git a/rembg/session_dis.py b/rembg/session_dis.py deleted file mode 100644 index e215806..0000000 --- a/rembg/session_dis.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import List - -import numpy as np -from PIL import Image -from PIL.Image import Image as PILImage - -from .session_base import BaseSession - - -class DisSession(BaseSession): - def predict(self, img: PILImage) -> List[PILImage]: - ort_outs = self.inner_session.run( - None, - self.normalize(img, (0.485, 0.456, 0.406), (1.0, 1.0, 1.0), (1024, 1024)), - ) - - pred = ort_outs[0][:, 0, :, :] - - ma = np.max(pred) - mi = np.min(pred) - - pred = (pred - mi) / (ma - mi) - pred = np.squeeze(pred) - - mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") - mask = mask.resize(img.size, Image.LANCZOS) - - return [mask] diff --git a/rembg/session_factory.py b/rembg/session_factory.py index 9d021c4..b1e1cb3 100644 --- a/rembg/session_factory.py +++ b/rembg/session_factory.py @@ -1,114 +1,24 @@ -import hashlib import os -import sys -from contextlib import redirect_stdout -from pathlib import Path from typing import Type import onnxruntime as ort -import pooch -from .session_base import BaseSession -from .session_cloth import ClothSession -from .session_dis import DisSession -from .session_sam import SamSession -from .session_simple import SimpleSession +from .sessions import sessions_class +from .sessions.base import BaseSession +from .sessions.u2net import U2netSession -def download_model(url: str, md5: str, fname: str, path: Path): - pooch.retrieve( - url, - f"md5:{md5}", - fname=fname, - path=path, - progressbar=True, - ) +def new_session(model_name: str = "u2net", *args, **kwargs) -> BaseSession: + session_class: Type[BaseSession] = U2netSession - -def new_session(model_name: str = "u2net") -> BaseSession: - # Define the model path - u2net_home = os.getenv( - "U2NET_HOME", os.path.join(os.getenv("XDG_DATA_HOME", "~"), ".u2net") - ) - - fname = f"{model_name}.onnx" - path = Path(u2net_home).expanduser() - full_path = Path(u2net_home).expanduser() / fname - - session_class: Type[BaseSession] - md5 = "60024c5c889badc19c04ad937298a77b" - url = "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx" - session_class = SimpleSession - - if model_name == "u2netp": - md5 = "8e83ca70e441ab06c318d82300c84806" - url = ( - "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2netp.onnx" - ) - session_class = SimpleSession - elif model_name == "u2net_human_seg": - md5 = "c09ddc2e0104f800e3e1bb4652583d1f" - url = "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx" - session_class = SimpleSession - elif model_name == "u2net_cloth_seg": - md5 = "2434d1f3cb744e0e49386c906e5a08bb" - url = "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_cloth_seg.onnx" - session_class = ClothSession - elif model_name == "silueta": - md5 = "55e59e0d8062d2f5d013f4725ee84782" - url = ( - "https://github.com/danielgatis/rembg/releases/download/v0.0.0/silueta.onnx" - ) - session_class = SimpleSession - elif model_name == "isnet-general-use": - md5 = "fc16ebd8b0c10d971d3513d564d01e29" - url = "https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-general-use.onnx" - session_class = DisSession - elif model_name == "sam": - path = Path(u2net_home).expanduser() - - fname_encoder = f"{model_name}_encoder.onnx" - encoder_md5 = "13d97c5c79ab13ef86d67cbde5f1b250" - encoder_url = "https://github.com/Flippchen/rembg/releases/download/test/vit_b-encoder-quant.onnx" - - fname_decoder = f"{model_name}_decoder.onnx" - decoder_md5 = "fa3d1c36a3187d3de1c8deebf33dd127" - decoder_url = "https://github.com/Flippchen/rembg/releases/download/test/vit_b-decoder-quant.onnx" - - download_model(encoder_url, encoder_md5, fname_encoder, path) - download_model(decoder_url, decoder_md5, fname_decoder, path) - - sess_opts = ort.SessionOptions() - - if "OMP_NUM_THREADS" in os.environ: - sess_opts.inter_op_num_threads = int(os.environ["OMP_NUM_THREADS"]) - - return SamSession( - model_name, - ort.InferenceSession( - str(path / fname_encoder), - providers=ort.get_available_providers(), - sess_options=sess_opts, - ), - ort.InferenceSession( - str(path / fname_decoder), - providers=ort.get_available_providers(), - sess_options=sess_opts, - ), - ) - - download_model(url, md5, fname, path) + for sc in sessions_class: + if sc.name() == model_name: + session_class = sc + break sess_opts = ort.SessionOptions() if "OMP_NUM_THREADS" in os.environ: sess_opts.inter_op_num_threads = int(os.environ["OMP_NUM_THREADS"]) - return session_class( - model_name, - ort.InferenceSession( - str(full_path), - providers=ort.get_available_providers(), - sess_options=sess_opts, - ), - ) + return session_class(model_name, sess_opts, *args, **kwargs) diff --git a/rembg/session_simple.py b/rembg/session_simple.py deleted file mode 100644 index 7ec3181..0000000 --- a/rembg/session_simple.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import List - -import numpy as np -from PIL import Image -from PIL.Image import Image as PILImage - -from .session_base import BaseSession - - -class SimpleSession(BaseSession): - def predict(self, img: PILImage) -> List[PILImage]: - ort_outs = self.inner_session.run( - None, - self.normalize( - img, (0.485, 0.456, 0.406), (0.229, 0.224, 0.225), (320, 320) - ), - ) - - pred = ort_outs[0][:, 0, :, :] - - ma = np.max(pred) - mi = np.min(pred) - - pred = (pred - mi) / (ma - mi) - pred = np.squeeze(pred) - - mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") - mask = mask.resize(img.size, Image.LANCZOS) - - return [mask] diff --git a/rembg/sessions/__init__.py b/rembg/sessions/__init__.py new file mode 100644 index 0000000..08ca20a --- /dev/null +++ b/rembg/sessions/__init__.py @@ -0,0 +1,22 @@ +from importlib import import_module +from inspect import isclass +from pathlib import Path +from pkgutil import iter_modules + +from .base import BaseSession + +sessions_class = [] +sessions_names = [] + +package_dir = Path(__file__).resolve().parent +for _b, module_name, _p in iter_modules([str(package_dir)]): + module = import_module(f"{__name__}.{module_name}") + for attribute_name in dir(module): + attribute = getattr(module, attribute_name) + if ( + isclass(attribute) + and issubclass(attribute, BaseSession) + and attribute != BaseSession + ): + sessions_class.append(attribute) + sessions_names.append(attribute.name()) diff --git a/rembg/session_base.py b/rembg/sessions/base.py similarity index 55% rename from rembg/session_base.py rename to rembg/sessions/base.py index aa98693..6c6c0d8 100644 --- a/rembg/session_base.py +++ b/rembg/sessions/base.py @@ -1,3 +1,4 @@ +import os from typing import Dict, List, Tuple import numpy as np @@ -7,9 +8,13 @@ from PIL.Image import Image as PILImage class BaseSession: - def __init__(self, model_name: str, inner_session: ort.InferenceSession): + def __init__(self, model_name: str, sess_opts: ort.SessionOptions, *args, **kwargs): self.model_name = model_name - self.inner_session = inner_session + self.inner_session = ort.InferenceSession( + str(self.__class__.download_models()), + providers=ort.get_available_providers(), + sess_options=sess_opts, + ) def normalize( self, @@ -17,6 +22,8 @@ class BaseSession: mean: Tuple[float, float, float], std: Tuple[float, float, float], size: Tuple[int, int], + *args, + **kwargs ) -> Dict[str, np.ndarray]: im = img.convert("RGB").resize(size, Image.LANCZOS) @@ -36,5 +43,21 @@ class BaseSession: .astype(np.float32) } - def predict(self, img: PILImage) -> List[PILImage]: + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + raise NotImplementedError + + @classmethod + def u2net_home(cls, *args, **kwargs): + return os.path.expanduser( + os.getenv( + "U2NET_HOME", os.path.join(os.getenv("XDG_DATA_HOME", "~"), ".u2net") + ) + ) + + @classmethod + def download_models(cls, *args, **kwargs): + raise NotImplementedError + + @classmethod + def name(cls, *args, **kwargs): raise NotImplementedError diff --git a/rembg/sessions/dis.py b/rembg/sessions/dis.py new file mode 100644 index 0000000..8c38276 --- /dev/null +++ b/rembg/sessions/dis.py @@ -0,0 +1,47 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class DisSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize(img, (0.485, 0.456, 0.406), (1.0, 1.0, 1.0), (1024, 1024)), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/isnet-general-use.onnx", + f"md5:fc16ebd8b0c10d971d3513d564d01e29", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "isnet-general-use" diff --git a/rembg/session_sam.py b/rembg/sessions/sam.py similarity index 58% rename from rembg/session_sam.py rename to rembg/sessions/sam.py index 5bf2067..131ec53 100644 --- a/rembg/session_sam.py +++ b/rembg/sessions/sam.py @@ -1,11 +1,13 @@ +import os from typing import List import numpy as np import onnxruntime as ort +import pooch from PIL import Image from PIL.Image import Image as PILImage -from .session_base import BaseSession +from .base import BaseSession def get_preprocess_shape(oldh: int, oldw: int, long_side_length: int): @@ -47,14 +49,19 @@ def pad_to_square(img: np.ndarray, size=1024): class SamSession(BaseSession): - def __init__( - self, - model_name: str, - encoder: ort.InferenceSession, - decoder: ort.InferenceSession, - ): - super().__init__(model_name, encoder) - self.decoder = decoder + def __init__(self, model_name: str, sess_opts: ort.SessionOptions, *args, **kwargs): + self.model_name = model_name + paths = self.__class__.download_models() + self.encoder = ort.InferenceSession( + str(paths[0]), + providers=ort.get_available_providers(), + sess_options=sess_opts, + ) + self.decoder = ort.InferenceSession( + str(paths[1]), + providers=ort.get_available_providers(), + sess_options=sess_opts, + ) def normalize( self, @@ -62,17 +69,19 @@ class SamSession(BaseSession): mean=(123.675, 116.28, 103.53), std=(58.395, 57.12, 57.375), size=(1024, 1024), + *args, + **kwargs, ): pixel_mean = np.array([*mean]).reshape(1, 1, -1) pixel_std = np.array([*std]).reshape(1, 1, -1) x = (img - pixel_mean) / pixel_std return x - def predict_sam( + def predict( self, img: PILImage, - input_point: np.ndarray, - input_label: np.ndarray, + *args, + **kwargs, ) -> List[PILImage]: # Preprocess image image = resize_longes_side(img) @@ -80,17 +89,25 @@ class SamSession(BaseSession): image = self.normalize(image) image = pad_to_square(image) + input_labels = kwargs.get("input_labels") + input_points = kwargs.get("input_points") + + if input_labels is None: + raise ValueError("input_labels is required") + if input_points is None: + raise ValueError("input_points is required") + # Transpose image = image.transpose(2, 0, 1)[None, :, :, :] # Run encoder (Image embedding) - encoded = self.inner_session.run(None, {"x": image}) + encoded = self.encoder.run(None, {"x": image}) image_embedding = encoded[0] # Add a batch index, concatenate a padding point, and transform. - onnx_coord = np.concatenate([input_point, np.array([[0.0, 0.0]])], axis=0)[ + onnx_coord = np.concatenate([input_points, np.array([[0.0, 0.0]])], axis=0)[ None, :, : ] - onnx_label = np.concatenate([input_label, np.array([-1])], axis=0)[ + onnx_label = np.concatenate([input_labels, np.array([-1])], axis=0)[ None, : ].astype(np.float32) onnx_coord = apply_coords(onnx_coord, img.size[::1], 1024).astype(np.float32) @@ -116,3 +133,33 @@ class SamSession(BaseSession): ] return masks + + @classmethod + def download_models(cls, *args, **kwargs): + fname_encoder = f"{cls.name()}_encoder.onnx" + fname_decoder = f"{cls.name()}_decoder.onnx" + + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-encoder-quant.onnx", + f"md5:13d97c5c79ab13ef86d67cbde5f1b250", + fname=fname_encoder, + path=cls.u2net_home(), + progressbar=True, + ) + + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/vit_b-decoder-quant.onnx", + f"md5:fa3d1c36a3187d3de1c8deebf33dd127", + fname=fname_decoder, + path=cls.u2net_home(), + progressbar=True, + ) + + return ( + os.path.join(cls.u2net_home(), fname_encoder), + os.path.join(cls.u2net_home(), fname_decoder), + ) + + @classmethod + def name(cls, *args, **kwargs): + return "sam" diff --git a/rembg/sessions/silueta.py b/rembg/sessions/silueta.py new file mode 100644 index 0000000..c09e3f2 --- /dev/null +++ b/rembg/sessions/silueta.py @@ -0,0 +1,49 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class SiluetaSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize( + img, (0.485, 0.456, 0.406), (0.229, 0.224, 0.225), (320, 320) + ), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/silueta.onnx", + f"md5:55e59e0d8062d2f5d013f4725ee84782", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "silueta" diff --git a/rembg/sessions/u2net.py b/rembg/sessions/u2net.py new file mode 100644 index 0000000..2702a96 --- /dev/null +++ b/rembg/sessions/u2net.py @@ -0,0 +1,49 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class U2netSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize( + img, (0.485, 0.456, 0.406), (0.229, 0.224, 0.225), (320, 320) + ), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx", + f"md5:60024c5c889badc19c04ad937298a77b", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "u2net" diff --git a/rembg/session_cloth.py b/rembg/sessions/u2net_cloth_seg.py similarity index 67% rename from rembg/session_cloth.py rename to rembg/sessions/u2net_cloth_seg.py index 575aff1..7765109 100644 --- a/rembg/session_cloth.py +++ b/rembg/sessions/u2net_cloth_seg.py @@ -1,11 +1,13 @@ +import os from typing import List import numpy as np +import pooch from PIL import Image from PIL.Image import Image as PILImage from scipy.special import log_softmax -from .session_base import BaseSession +from .base import BaseSession pallete1 = [ 0, @@ -53,8 +55,8 @@ pallete3 = [ ] -class ClothSession(BaseSession): - def predict(self, img: PILImage) -> List[PILImage]: +class Unet2ClothSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: ort_outs = self.inner_session.run( None, self.normalize( @@ -89,3 +91,20 @@ class ClothSession(BaseSession): masks.append(mask3) return masks + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_cloth_seg.onnx", + f"md5:2434d1f3cb744e0e49386c906e5a08bb", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "u2net_cloth_seg" diff --git a/rembg/sessions/u2net_human_seg.py b/rembg/sessions/u2net_human_seg.py new file mode 100644 index 0000000..8156bef --- /dev/null +++ b/rembg/sessions/u2net_human_seg.py @@ -0,0 +1,49 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class U2netHumanSegSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize( + img, (0.485, 0.456, 0.406), (0.229, 0.224, 0.225), (320, 320) + ), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx", + f"md5:c09ddc2e0104f800e3e1bb4652583d1f", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "u2net_human_seg" diff --git a/rembg/sessions/u2netp.py b/rembg/sessions/u2netp.py new file mode 100644 index 0000000..dc9edab --- /dev/null +++ b/rembg/sessions/u2netp.py @@ -0,0 +1,49 @@ +import os +from typing import List + +import numpy as np +import pooch +from PIL import Image +from PIL.Image import Image as PILImage + +from .base import BaseSession + + +class U2netpSession(BaseSession): + def predict(self, img: PILImage, *args, **kwargs) -> List[PILImage]: + ort_outs = self.inner_session.run( + None, + self.normalize( + img, (0.485, 0.456, 0.406), (0.229, 0.224, 0.225), (320, 320) + ), + ) + + pred = ort_outs[0][:, 0, :, :] + + ma = np.max(pred) + mi = np.min(pred) + + pred = (pred - mi) / (ma - mi) + pred = np.squeeze(pred) + + mask = Image.fromarray((pred * 255).astype("uint8"), mode="L") + mask = mask.resize(img.size, Image.LANCZOS) + + return [mask] + + @classmethod + def download_models(cls, *args, **kwargs): + fname = f"{cls.name()}.onnx" + pooch.retrieve( + "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2netp.onnx", + f"md5:8e83ca70e441ab06c318d82300c84806", + fname=fname, + path=cls.u2net_home(), + progressbar=True, + ) + + return os.path.join(cls.u2net_home(), fname) + + @classmethod + def name(cls, *args, **kwargs): + return "u2netp" diff --git a/requirements-gpu.txt b/requirements-gpu.txt index c58c556..f331549 100644 --- a/requirements-gpu.txt +++ b/requirements-gpu.txt @@ -1 +1 @@ -onnxruntime-gpu==1.13.1 +onnxruntime-gpu==1.14.1 diff --git a/requirements.txt b/requirements.txt index fb41d7f..da62c0f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,14 @@ aiohttp==3.8.1 asyncer==0.0.2 click==8.1.3 -fastapi==0.87.0 +fastapi==0.92.0 filetype==1.2.0 -pooch==1.6.0 imagehash==4.3.1 numpy==1.23.5 onnxruntime==1.14.1 opencv-python-headless==4.6.0.66 pillow==9.3.0 +pooch==1.6.0 pymatting==1.1.8 python-multipart==0.0.5 scikit-image==0.19.3 diff --git a/setup.py b/setup.py index 91e3471..3412140 100644 --- a/setup.py +++ b/setup.py @@ -42,12 +42,12 @@ setup( "click>=8.1.3", "fastapi>=0.92.0", "filetype>=1.2.0", - "pooch>=1.6.0", "imagehash>=4.3.1", "numpy>=1.23.5", - "onnxruntime>=1.13.1", + "onnxruntime>=1.14.1", "opencv-python-headless>=4.6.0.66", "pillow>=9.3.0", + "pooch>=1.6.0", "pymatting>=1.1.8", "python-multipart>=0.0.5", "scikit-image>=0.19.3", @@ -62,7 +62,7 @@ setup( ], }, extras_require={ - "gpu": ["onnxruntime-gpu>=1.13.1"], + "gpu": ["onnxruntime-gpu>=1.14.1"], }, version=versioneer.get_version(), cmdclass=versioneer.get_cmdclass(), diff --git a/tests/results/car-1.sam.png b/tests/results/car-1.sam.png new file mode 100644 index 0000000000000000000000000000000000000000..f36b6695aeedae23b4eaa7f6cd38fb75bb5bf943 GIT binary patch literal 79493 zcmeEt2x+QdU!B%LROTonx%Z0<0oLn1!!AWMz5W?qUi^iQ6!oN6a z3}Lx`D_=nv`35^Y<0VT%_?elD5E>p-hS+bPKTK@4n`&dVMB?uSnxE!)*lthc%Qo7{ z?l~0T3DCq1TGku>@9BR_@V{N~zk~4q-z*sSQMuLX!H63?VMb{n?){!bdTr>5?x6K5 zQ>__{4+LTC(+bsrGtIB;38Yl3M`ok_>2xwE5FR{QdY|>M9ZM<1(vx;s26XAqM;VrU z4qm>V>{k2`gQ6?7aA+QOZyeSs{`PIruZfo2hF;;?v%{2civcS7&fh;rZ%}+mqiMno zoY>QI?Ye($^|yN{2vZ9=+j+sht;?`%p#$2fmnQ&mo4PR@r+ z{^!k_Pr>Jd-^UjwRcIn8M(6pG=Orf9kO5m-91bK@>&NABxuLj+vKr(vrr2QNRmN;A@9~Bm+mb?I$W}(k}T|aI~*k?}A~1f7jIP z7)8EInEGZbTqQ-hRYx@1KQHKKHVE9ryz83>9ddA9Zq4qGB0Gr+e)!;>&=7#I)N+a2 z66q~v^!}Z`O$Zh3^?EY)gQ8R?#!UQO^Ni)`c0#!5YI>#KQ)&nzi1M_ZO%ZNTp6Z<|=awOa#_#VBXYM zGar0T&mpb0%&PXEb%g?N1Xua$Axnueenc9DLA&bi#u|&;kqIp?C!GBli@BVETwk#- zMP*G!;Ecxaw#|<6Er`ibdf-0r136X+xiueWs&pT%-jJiZJ|xZ2YwQQZmSY49K2MY_ zyS88^0fe;_5(DW{uAtax7i8q(b}PYQj+W<*Am-Q%5%?w0cG0~ng@oAf*u-}-K9Z`b zQ(ipjq4=<2Ebu_Ge0#pvoJOId3L2JgCxwLzz>-K?VXpCoZkRE%Sk)57VdPkxgkhTPeWxICLOmFl$`%!ZpIoL~pLE)|aGFP)BEb{4sP+5! zi#wMBcSB$!RtiEK8l=8ulC}!&Z1l_#CMdHf>ty{<^2o!)?KQfgES#{?D@y7X4^GV; z=1_w%OAUI2&Bp5suudS1+Alihw^R5&XH;o_1z*&2R}7w*j|5)6C`s4Z^mFOdG0kG) zP3ofq7fKjsC)J~Tec_4dM^Z2qDy7yS`*>T6@Hug=ShgfmfW7p|LnytKiPDnrOGjs} zU~%LOyZ9w(QiH$(@QPdW8gKG&%!a;c_l1X@;q*m(E?Daj>=x2yu*@!=_HFeIQPs85 zcoIrO_nIgE2Q^QF_#idKz)=uhIFIP;5QfSf9pV(jEs&O#WtZ~9B$ zLJ`Y2i_@U^jI@B#1l-&A^*b$n=U=ek}pKRrpPx@C0<~?}2X;ZKd=*aYQeY z-xO545RYN>W#nxv`pWqy`NH|sNmd^`iDo>QA}T|_iC-gY;WCg?P?@gW&DY|o-j~S8 zw;{UA4?GT9I;GH(m)L4w-pp=#%yDqzgVR0=jE|gzgVoedi1QuYU)trE5S@Uzb*25_ zDO(~C8~bW#Y2rKsCkG72+_zOJdI<{ZoMw-s^vn^FkWk97DRF@8WPbh;&|nh!9p6D= zW#|nb=;bGEzsNE7muph6#aH%}I{;h}L@?RQxw@^B}2TnIHI zReWad5CIg-@>-`PE!-md@CJW92`#Myxj0-!^pk;ATb69*$~5+WdQoTv^r?9tG~Om! zX(_~Q$*Bqu z)F5ppT))qg2~U27IJSLE63oe~*mVf!KLV2tdnn`aoe&qE=ipV*b=j7(JawT`U@3j+ z(1;mRl&0CEMUKPsbVO7shc|_T6C&E6Zqc_yv5wy$K6K0xibmbMfPy^s7ep>(I};Zd zjrxQ)o8~l8C8iz6;6!_27Q{q-sozj4b8wL<_R|Neg;a#)U!N5F>U2KBk5a!{NrUyW zkM;AlP1Cp#r!%E`g0*+rkAw6#i}PyHR0)K}HG>uwlb@uMXdMhV-K{NxIA=G#jBdnC z=>n=*X>C*2-hubPQR?!1@rB;P!|Ak<^-Bo^pvRCj#v_HgJz&;!{E>0#x}$-gr7^FiycS$f)76yc-SL#U>IVLH;*HN&AWtZG zJ4DB(rg1rdR0pC5Kkb+E{bEY_^x^$N>ZIjggQBQ(T}7M{KieRxvT3#GLM?{?t#mZI zc6=e`ypmReG8~SO;$}Hsz?-hx8_b4nng*gSCBQ>>q?%%5U zGLMUAmpn}&XOasFLa8P~+SJ9Pp%En}f{mS>6WxJ$trv`|n+@ZFs63CU_1V`2<3@J* z-$u*f%Ec?dh}EXbhT9^FR}YJuhM*uye<8~|#ju)KtMLY6q*qK)v}374EwWIjf?O#u z=!`zGaj$r*hw8&eBY{<1)N#$64iiIFpQO!Sc2wUG3kiu^&5sf649m#{64@Pf>KFB* zj|?i#Bj>5Kvg_)V9jsoe+9~qld21rGcbYTwwQf*invc^UQdY&P9hTOO!Dv2?4i}J$S`#I%9E+sM1v#$ z5{^E*2?Qh9r*zmIQ*6R5RC`v-jjLx5FL~1;)_z!!RGT4ets;C@aVUr#XK-6B)rP*- zf7fH**x|3%FkFvjyjWPgQ}JFJ8{BENBT!>X`(8;0L~HtpGV+JgXQ}@1K(FMmNe|W2 z<#5={cKzTfJ!%|!HvmIrWfrL)r%xq(el)h3bgGxlR<+@C+6qcLo}-sJ->XTVFDCiO zz6EV@vLPId#QXjH9$3vZDaBn-0mrCn3b9Iilkt-xDb6ar$2uD_ zq~<-_3>V;AVdjUc;l)k|ep)j(%<_UD87===C2OTYpPp3}{BMyJ4jGJ<;mu>8SNPQ^ zX2qX$$?1Ib1m;8Wii>XL4?{DvGX2UK$7XymZ9ccPgL;Kt;hckZt=_KZe`yfTS@E(J zXX^FiXdb4ci)UR^HQ5;t;`^i4^@rIt$W~%2+b9^T_+h$jcWe{#}^*_Td>$k9-X~BZ9u~9eO|1 zxk{fYhLg9>^4PUu6&G=ys}lF0g4nR495I2lala53LH#0ddAR*6G^YRHfLWWEG?~8J|_=R>oT*m zun2{eTHmjNhto-+pjy98SlE=Po(v1Z60|$J=L5`fv)V9pYl*|y#s-_3<;e)du1fH! zn6&ih>it&7{!fR$WL8>iaiuRS)SXQAgsH2@7-?JTe&O4x8E^XJE3ky2;u~m&<5aEb zIgFIywj8P(%be6@ebNR>OUcGWv}6SwLJDI}Iw=equqn!>DV4%4R4vkMq&OlOd1}9I zXUK2NK=>ah6ETmaLN`N%!leCe+~CVJfi-tXpISf&IZ1G<&Ss$ktCr1q#_k`1*60n zNW=mx$!GR_va++~EAlkU6+vX5GsdfGYIJImMy94^CW5I0*g0`T@joE@D;)*-&s#i} z-nY~PAAfPM_`2GRb6ixHJcHBPNV!zU!oeYiM0f5MB^R(zQ;_jMeu2|qh*7OOIfB32 zcY~us`rJ3paotOYzHhl#__8u?x_n+q%FqdfR3dmIZ4F7biRBo7W29Wfx$-KBfVN_b zr==sKv2^Ey1k;hQP$$hteN|C%hU!>@uKR24*e^^D0a1^<@9y>5j>(5(EyH7+_dT=w_+S&hYNH#RU6rLSrfsg!`d^rrI1 z5lEg&DQ%opL7``<_=lsgel6-o@b&B0&WjBZZEZ&2)k0vgrKP{sTd4p5C~rSGQ>;>f z+ylJ`NU9ixe(bgTvm<~)q4pOWqw0?tJQ|1b!I__tWk?5MX_3j~;;4mAKQR>;$im${ z#id1~*;t8JVs;&d!nCro@_hbeY>Of%Eiqt+@}bP@?AiU9R@0dJnPt(7sr$Pd>Em!p z-<`rJ`>Lvw=Gvh2{O8_o4=X+k=YKzdZZQAruAPy2V*5VoS-d|K6J*pxa3}Uiis5Wz zBig%GtMW(DqVuf%R{$>t)FK(Lu7XtCbPCOwi)Hl7jVpBd(%o(;PAg@bj+ARvqLZ!h z?B%IA*^A*$vSTDfHsE)xp4xiN8H{GGs;L~jqlhYXGYL>?OY4kJ&Tl6)kq9!BZ1fEycI4mW@`}?3c zB9DE)tDsqNR#>X`U_&o&3A2QD3ONpEIQ#A;oBvD*3;tq*4N|4E@8hAKn zBV)gHW)!~TQaMmi;xIXYUqaMCWaJ8UoecvM-^ItrqRnbmYLV=}&!ab9 z7^P4s1%`i*;IJ=@ktHl<46`2+hcuCY5={XsmeN;@RTzBvd}zq2F@Q~_mcp8^5M82I zW>T}3$scY(KYXs%&>8I*-JCGzmKw%(hW)epk-b{&+(uaNrB7bKZ--Z1FE9{6^Nqd_ zH>>8(&h8y%!HE`VU^5HN7?n&4V-K=GcrwRB9tTBlWC`PszEy_v2Ot1RV^p@#h?Zvx zIFjGsDV5uyP%*vjdpRW}Sl85Kot7E<2Kwd;OKFK-1#nVFuQtWI4;x!sM?%A*+E7y; zvhscn00cid%>l3*M(w zkP7csEJrF<##jH>GHYzgcJeJbr?|3GT}x}uwi6;^n8^rd%BP-jhDI4;TCE z;ierb7WayHWGOcEaCCARFV|45yn|D8k4hbL$<_^N{vi9M)@!nG7KCWd0Zl53a;FG? zT;TSja`Cr=mer}gJ}kAAgr;!2#3vSq{bbOaCoLz_VK*26uSyZ%e2v`RX_F7}e3HV0 z1^W7abxMiWbRZj@7sigAG9j?do$pD};gdfwF`?Xk$HW)KVNjwr^o~5WBCl5{lwEBu zPkel0fE{MOfJ8?>v@!i!e{XAHxA~(6aY)Fj%(`=4h(2$HgXlK}#?@Ef=M;J1&Qd8U zX%7J3DOd768^WWnE

ASi;)Nj}+nY#!s^r`P98LH%rcz*cGG{pYUU`Cs?l8IKsPf zaCy0kK$6Y^&~ffT4gs)khMN&tZ>Q=zp18AB_@Lyot36-uxhS7Q}26u6!&o zbajm*Par3Nx@PJ-kJXEKNrjLO=$UaUh?!n%{Roa3or}NhyjcOj0(bS&K_Vy5|93^6 z-!*-}SurywM14zgHvFnzc(e0#3Kh9m)8cgXV7VV<_qSVtw^)q_BV3WHTooav6NgnK z_3aciE5)V8)_q=`EA75Ht?J-l)AkLU4BY#y=dT7sWhF-VR)`KcMR}Rd{AJ*D3Wu8N z1U|E_HYew-S6p3{GFsX$-%IizAClTF(cSUxaL!tM1+%@m$d6CZ5^kv*8MvZ?X3Xtf z5`3KIdCn`}Y-Z)1pjta5=#RNY-1Xn)syd`;K+ykP>Iz82ti&1kr4(izbAN9$y0pUcpMRa% z^^Ep6C1rjwv0GjM>>tpU4go^!uU#Rv5s2Q^+qCiAe-vR-IvjYv-72n7ORsInZ^BIf zOX0}+;IEX66$i&c^L+C(0w z0UIc0Gyv*_0O0L;`i<$r`@TN?&u{hSmr4zht8pwFS$_S8OBcBJu`WIFqkuccRcjZQ z`5N@Ycpa<#_$5h&Eb#wYRH>aBhT;LejCP6`*!fjhWHkI$#r9MrQ_Qu?r&$r*!pdE`N)86UI{;mwD0uWd9TMC*h~BOv(!qV>28EdqVM}Isc=1tc8ZnTiLXsl zJ|h5Iylt^~h!R2l!@cy){uqAWbin-2k+|z_L^8VyPiAGfMfTsewug2h*j5j*Q^?cR zXB<>mbo~l+?;{^I{S+zv6wbX?*cH`w|I@XuyovbQCJ+j+V*rGz z#6j7xX7*6!st~aqLx2J3V`Hb^=Q3Spi8>V%-@gwPC2*F_*w=M-s@HbK>c)R}suDcO zJPe{u{BZlX^NLf*%ECfOo1)Qbn4pAV)`e)@e~pjhqh_t{*!RJ z{d7BVvL4zm?$L-R)jB-#Dx)vSspg)-s+llMUz18HJ`uSH78|{nB@@=}%xs(A5h&ij zDSIZBK!9DaEJ3}fJuk+{XVKT?ZW_H1K7DFQT)dc-B^%4ZFUij~t{nLcLF5WonCtMJ zDja@Zg+mJy=`)tfdbFd!!8ty!tjed$l4(;$Xlg&b`N>_pjo!Xc!U(|=Ve0kc?fybN zcAW->hDmk0{qPj}CgwxHv%J9o*oC-w4n%e?+@ znpIz)A30C=KL41Z&Xzw(z2e z_dk57$+xumK2`hQ64eJYkCdp}5s=hfi(jkZzNW*>^gq`Zly;?5hvlgv>3C;mRX>!` zM_V2Z3A>bIGRXk!P|F?L;V}&(8 z!O|41luee{{F*V9u6&0afG{EV-x^a9jU$=GL+1t57_hPJo#P|n_R*!6iyVOp8|Bl0li2oEO z8JCG_vxQYtfe-TXA9#trxqq32s!pb%K$m&%->b(TyAZwKT2I0z3Hxp@fNtX*} zdJcU;mQqBT+%;D&^aKl?`{ysRNBv#uxf6&YV=mLHWDkF5>&Sq?$}u-L_e%R!g$}OC zqnQw2@#lgSTuEn9DRrPfu+BHO4Q{aMLYW0b9wxr zU9XGG z`WdS|CTuUoj-E%BAw#4pW9l>yE%)%(=JW}ZLsMjG>Wo`P zX~C(Bn?0QFt!r!%d!dQ98if)#I*GIl<1MtX4&VsW-9=!^~4C4_s52!c>A=Nt{J6bQ43NtamtR8g{Md^^o z|M39f`K(}Zg_lwJ4?ij3>7-}HkZ1jKgy;#TAUssgjr*wg8g=lFEqv1Ul{B%MrP6XD z(H0l&$qNTp*v(;27<&|HaoWbhKKL;B@B=GetzMs(DF720^oPWDIlw)nmF2?S!! z&`gO+`DH0@ZP0_>F^K=z-hy4iQd)I^14V|%?a)dp*8bs#onI-_H*Oy=aR&Y(9Y_ZQ69 zjDoaH++D6}t;r0cd&;snpIChcftna%6RZ3_ZQqt%1s64+Dmrq&c87S~zt6D9Q^Rkr z3AYQa?J{iGvGXbdsP5>xwfM%NveLgjF2H0hJZadJ&2-&0+MhpAZA-4(Jq?#8Lq>En z`@w32i2pNJ%IBnS`Q`o`IBZO^cI9*H{|x5l+Q6s4aqB!uuiZoj-ywN3#|P?p`NmH{ z!_cdUf?yIT==7c}2%ncT`1nuH=6TPRKZteI%My7xEH#gP@48LY($XY&^4j=i9=)r< zTGlIVi$Fc?D-k^f&nAqnuNWhite`Urap|CU1E}Jl0{<=;7y8J8y@EFKMK?NyBS*8` zR6Txl`sZfzHZ5$%B7JTxlx&uY(I9^rh z?+V^YvmzgF6hb^T;-cK*mN-9d7~40Pu$CzB5a>|1J@c68^MoCZ)C?zk7*J(6R*y=Q zFt~H7rHKr*(Rg+!%T}zs<+OI2S#@LYxdD0$?%O^v08< z>5v3SsX`k_RIXO1}R!b~QkSM+&0zGiSc<#q+(} zGe>-Vzho#SGd^GaU(AOmz$qRB}9ODE1HzNoWMA^|MXg4?-|+;_Qna`gjT3se8n5_J@)geQX5m~ zp{UOpexd7^vINZeL0brWxInmwxB`u081e?o(vYhhwkQ2aqoz@TWFl$P(X&di-?8uB ziPcAUEj=Or_&Nx!BTYw;K%8)R{D5W{-pZVO!1sTz3;qc@<%#rN@aLHC9%fl+a-j5C zhSD-hs*6cVM($lZFMTCp#UUaptG#XCt3mzScPHaQ=(&P>0e~}bAv^$s7{VK{TCT@; z+|hH>aeLwVAbD<_FL%`?x0V@n?v>~d$`~f~jyf}+K)dG58IL3@Q1niJ$pIxR;3w!( zwN+huA}>KNPA=D*(S8Hac%4{bVqhA6dl%yQE}&DPM@+aY(oeHxsc>$0de1AmXk@de z$r^wX<5Gnh2?aDhQl3X6uQdLxleJ8k3H=O~jd)N#Tbik0COJ>IXPnaeos}GoNHhc4 z!s9Sy?q1llXTr z@yDHF++IEWg-!)88+pn+1tPCUHGu!=yX=RCu1C;{%C(FDw7d0m>bX3RC+o;jdGH0d ziTC2L@AX`Prkv*0NoF^s+<=NJ9a3!e9Vn`#p53gqf0A&$Z#M6Tf`Gg;oKkabx=>O5 zeU=3|=V0fWM8Ey7f}$e`ugn3{`L$HFKGCoUdiYgf3dd_GIEL{GBSN5bNGLuSM5e0C ze$C1W_fTeXRNv6TN+v+fL&$e+iclFj* zQ+iAM*TvVC8JCvDHVnOV=EkLJVCk*qr#U%h@E z9uZaHis!x`;^vN<77H&_toel8OG5K*32!dc8*OiI6UN9tp?g^-rY)~C z(0csTKr2Wl>er{|IgFL*eB1prV){>LdE>}U*GK94+qvHIxW&4`8@)~Xa4X`bxw2$O z+u2w#oy2@1M$t?LV2=3;B6)^V`=_x+?Xd#1){s={I5)b;&D{{G-`YZWS8xu5f50wL zL4P`7VmKn;nsV6#y#iRTZ6=&BE6EAxqSZs%p97fH%Bl0eMa}3=JZk?gCcDoU^q>+o zNXgwy)GG8uf;0Qa%`QZNBWd1w0x3a-yy^VoRf~#btUm>|J^FE z1`Mze4h^dSxy_?O>`$Nco{H^U_>C|98hb|$psiB1K?MFe1t0Zdo4Ea=^u2C`D;x67B(i&E=<-Ev-;L=O-G@kN9GN2Yo^!`6?$}7f zxQ|T{;V#KlRaJChvOA4VNI}W>KL<#VrdmKpfd4mrq}1^Fe2qqiaY4T%y6-0y7izGq z7_wFM*+d_bY#qOiNp=`qa{T0OH6o*#x%J8{8bvrXG(@K_Rr{=auK<-ixw3xGfE&Sw`k+)p~iw!#m@6;SI!u#4eMU(z`XQ}FQ#bb;sx@vV2Xm< z>${&`ra&w>$7n|v`;@0N{#gc^!%rEmOw1-$oCdaXUKZFimMT7K)J9;2_d+|9At5hW znn4k*y%skY)dB)Sg`&)>mqup$xlkARk#CB_SM&X3l*5m8DO2-4Oi2R;wPdqe#m2>w zrT263Kq=@GDB}pL06b}5C6HQ9xJ#JABQg0fD>C?Yb~rr(Q}E=&h?i(&pAuo)6j25- z9x>0W$D)!JQg1hX)031wsMeELt_v&|ktjJetP`8socQrQvp~ut=`uRAN-Nz*&Zh18 zN7!+s;TWr__|(vI134{Ds#kYRnSmSb7vL*$opvc$luqpNF?1VkD}B%ea4a(}EivQC zxA1dC#JYprm7ZYFttfCZ(Z_{k!L8E}NfdsnRN2y>Yy_meszwq()I6X2zst~@162b+ z|4*EqiOcV#au8g~xe3vlxM9lO{5Cj_(Fy`pHeuO$F5?VIUu-_5=GoDOZr4sp>~B8UshA@TpWHo5C>Rk+sh8(t*Ed6 zJ?3f8r}?4NCS?$J%MH4`CZB3gczf}A$dyi+DY7qW$lKR!v&}fQNZ?+d25p^3d<0Gu zCI$lRfBl<|VOJ`Z2uH=aKN(BKvda%^e82oTA z(WX6YAxyW{E_ic!h)!?~V9zx3=M@S%j{7@}_X~md;tDh9+~8OEd`?TxLAB@er(a!H zHOuF|d2oi3%giULZyGWY8DifuuUVP5D|Nt+bAX?RamOR--?GQB9c8}U`xqZt%og9m zSHkwY<*|au_g@li>lUXyiiP6#eMqOJ1Ix?&nM0p!INaLHA)V*}`*kC3iz zs)_G9|4? z$2l=cwI(Qar^annZA!vlFN#QB*QFA4(Y7rkDt=8$&+vA$KXQYhOy-AgYulr0YKI!- zLbP7CWL7hX**Yw~`ERG~$7wf=Pyu5Nh)rf|0j2-P+Mr#2YwgUs{nJvR09e$Y?s6V~ zQC#O{;{=}A1%TcIa+)3C;eWs-_i%0g5^^=U8o)Rkn%TWSSXCuJt)%@JALW2+Vd!fe z`_H04cKz`JdRLV{)^}$51GdHuj>mgW9(5llIL$D;xT!$YdF|;pfY%LzwhUVL8^*H= z3d&a;8f@YmhK+K}OGNdz08euL9`DZ<0KlJC9CRv?^c=gY48D_BHRpG>ez3!vSK8_w zE89)Fh~87M*=Y{)Xi&&(G!=fvF)L*;y_;-1G{?YPxz4hqgzbMo8h1LZniBp52o`@< zl)L}>i>A27tl4v$OL*qK^t45%LeE~DL24=|z@}73zSLEsDrFT+|e-m_oNYI7&K+9E4y&b5!psdJH*|HCjej5v`1AN4rqPT0KSUT|KgY8gp&xe@8ku z#|Sj)0H@Mf)Kg|se+bBX9V9JhdAKyJY`My_a^S*5H?tIeIa%;mk<#-PLM3EM zI}7L7eZn00SS8{_W)yZwWt+xWq|#W09Bpa%vd%)7)z*bCtre#H1GUp5OGehe%wU;> zQ>9A}iBFEkEuDh7$K%*?i_)$2CK?5Mc2rOAWw0QeF;jRG>Oa~x8Z%Mky0tg~`^C)b z-5r01h!h&s>-|o-8U)1PHZCUxY81&sBEeTG!6PRpY={2H=SN{7jffYiJijSPHZ18v z2fPAiIYj!%{7CU>XfvaWvfeL!#dNzmlK*+&&AO4i;V0;jQC}xKyt&EYvl_@P6#RF* z_3w6W+x73tILq3kpT6mu<*zHKP6{uBlX|Xmdp37wipvbXPIprDn@${I;cG{Gi!%c5 z?a&EDd0tZ-BKZDPYSyagMPwMuq~(}J2s%A0Hy3sP;g4;VK00kqbNd)A2Xj0h-SnHP zw;GnJ^C9zDT^Z!>Yg16{eMO*6sBK|iZ*tNtQBq*nzlH4p;h&ue)A$||r^#3VRb2WFfEdmxqT zBbT#$f7P-Tvfdkt{oPRlsJ;F7)!D+P^xM;xWrdcdt^C6P?!&;t4}L(aMB3lEhgrMw zN9)<_>wnQLGcXOM4?9nNAMox;zr7KD_2y}mUgg`_g;&e--iH~(6!RDljIF=RWQ}Q* zGy(Z!+c7vcMj=&3@Pb&e7r&Q#w>{Zehh6yBzVX8AkNRm4d5f2kemZC=b}-#Qh=?&m zf?*449;-pX2DPmbpCIk48B_n$1qRCBiew}MIxIlNt39Rn9A6>PtVhvf)p4CS3*@rq zzhjas$xux&PR&;;s*n?;NK&GvnL`r$Z4WCZ44paB6gDJJ(vKPx_A7icmtoQFqhg_) zIwx^hK0h6&j&J0oQ6tVbr~Fox5i^EEGvVr`h40+PPv4i)=`64CBlhs!@xZ)Eu%UEm z9c%o2?OOlkpgoe$O;OXl&jR+A_CFlSpZ;vJ1z0m+7;$lN?ObZ$2fMhyjJw7V-M=%Z zWzadU0VKQlDID8pb6V)aD5jS(Togb>Tw6|=MmAfylt&RV`Y%`f7Zkn|Uh_lTSkzqY zm$yB1|`d@NaVRH7dJK*5_n)+nxS5;fz8^y)i7AELwjjNTb^-=9kuJ8P9Qy5)3VY|C( zU!8wW08-iSnp4Zl-7)XSkGG_tg<*|nE2^C0gBC{c4JlGFU0tBr(y~&d(hojNJ=Z@AW)82HE|-MQtbjb_fjZ!KWs7|TJ<&5_hr#;Y!B?A`JIO4a zD5)~3LFln;B2fNmHkS1JVtEpe_LG_|p4)ph`Qd;4)~=s5R-34AuPNa4r=V(-_?e-N~p5S;`1O8WD{YMw^XK95Iy9 zlp1t|;-p58pdhhm_E{BybBEr=A;LWv1txsccHH+>E;l>T!)2{gOSOKUAXjV|ox=1eepoOhasM`sx zo)qx}hi3Laop+>t)7;~tn$mvH3hwspw53~N90{q(ELeo@>8uerrERAd&jEpoj|jSG zd}B1_ht40C^;w-aCX0LH8kT_j^HN_R%c z$(8Bd-z2P|$*`Wn6Wd)Gn$UPAmFR2zDSa`mt>!;Eq-98i{;;f|#$?$iJwAFU+3M44 zzZEu|u5Ls?_4v!IAyXJX4nLfBp7_tT+xgMOIr8Lji`mL3qv1zZe{MUv?!zN+We*PZ4qjK$XDt;llOw+htEd z!NcDIboYlp7C;yZoaA-2;gNTalQpK#0mF2>$LDY3E$zt;iEGAV^Y;4})oDe5Z?)_B zj}mx$d+Yt>4L2HjT}tu8INPxr=qfV!;aXX36R``gHwY8+q$>cOs^=|-@0TU zc$ZG=*ExP*;s%g`u0Q})3Wk0YopxVn56mNA~mB;$ zK8b#_`c4=y8BVeh0g+Z7D$)mBym;&FaHQK?_~c4){+kFTt* z!nnGjp+U#DnqbAnNAF$J3!jb`Q60ZJOc4HIpy6Ztf%WOrCoV%1dZiRwCw0AJLR6*k z@*c9qsqfzeJiC`*I_Qz;ycME$=2Yu@mjom1O4HHfqlVv~m3vG|Am3DE9qN5=egC%{*1J9a2N&GhM0DECv$B-@T5ZkK}yfaXeF#V8q1c-6RS#5yt2f2Mi7AH z!L1-hdK?APrWs+RW2wZT6da)9!bJqdZYD714D}#yDq6wLUtnxj{8+yE^`d9X)gR0- zW?8janqCn`gz=;mi2J$FthhHrDrG-WD&bh9JGS+mxML&9l3}kKS8iZfjMWki)7$B! zQVJVV(lz{UrU_^@kO~{F-fO|TP_`rLZtflGj-ZO0O@}c6o>jY;*ldP609lasC`!f2B6)+uX!?{`Ea-h|$#=J(X`eVczEa^IeWcd%mOv zoet@1!0tuiTP*|($8%FTbuIRJ#SywkSq*PPO?{}oVJNe%917HlDtY&#bsSA2Ze+B4 zcsgX_1EluOvmtS=^Pb z9%6Grg!eyX48^`Wop3BX;-dSJ ztWu+o?4~8`Z?Z);6r!6UZ{B||j4b?W@oR!#lC1wDe`B(nvSixc)i*S8;YfGDvot0y2SvA%Ff%HuUa`)Uam2qlL+i>Qw|L2n^ zc3jxR@e^9a}4P{nEvKib%m{s{vvU=!aV=^P8VYpuZSic%0E7fXZ>IvDkwh1l-L3_pi=+bMb!v zS67?|LN-b~&dAJc`=62;`?_QY#6J_0lOkebVJJGpJ;0dDmLv-Nf~T#Vt29%>2c<3e zvQx$R*u)?6ymurdJlF`5D+K0cUERx$70GnOUhM8Xk#W3u7LwLN-ojbF!UFo^xQH!r zVy}jFQuuCR)##PY$=X9ovcx)Cg<&eVg5i3`+#h$H4Oj+6-co%J2yE^fMJ^Fx1FswMh)mEdGb0yHI`{G8k(Bg z?0tRe3)@_JwlYF*mp3$Ub=7lZW_ZtC_sI7NfZ&q(Wg=Eq5`81(GbZ1TBY&il%CE75 zw8P^kN>YuRV`tJdqV+5lO5rLM#z49NW0D=K$>(0X`UPc2JPN}EqJj8Cjg$cbD+%_j zI`L;(6*|gnKx5t3#wOzPDmyG;)0`Y<$SOChOpg%YW-MyU+#0$Y3*mL9NTtd=ftcfQ zCL_nrXdT{Op+3{@!(7&lZp1Z#hz`Vr*Nw=vk6@mr#{%y7)Vy39e^$J3#bwse>|dAN zwo#3ubkmr1B`KREcd_w7*skExw{zFwV&5;?xO8ZCgUyBfQ`1XY*-xZg!Oq0B%0+}v zSLjrLYq$M_-v*Tk-x#^rw%Za^j6s!@Y0h`6zDl>+F^BHeOZ5yOyS+*JPNQ!EA)J&O zUZ$hBx1bt+hh~P(BbA^m2ycn8*a6?e6pITVg;jQJ!=u4EG#YKZ5!X>ixL94 z41ABAM6~9%&)^Crch4^PaK&AbFFZ6vlAB#nFr3U}{&(zcC;Fi)>K`zAci42kWu-fl z8GufFzxrvik-%shjmlaqRw2M9OD_#L2b`-u+IwLJo1fDS6K5ayh|6~#@(T){SrM9M z3ZEr}#4?RNFWYRRxAArMW(rjdCZ|Q?mncp4Cs~-$&Yv%D`>mHkCR9mK6%1Cm7IZK+ zAvij_X{?>32<&o_Y@CZ{BGtZH!6$td{@``jnP}_#@YL+cANzKs8|B?0>wjmwr`_%A z?(Y75sI=J@3Wahw{oFf`)j)v&C$k)R2wm|)9{*ELou~PSn~3{;t*g7$hd@2sFY{zf z;DJ4}OJjX~ecz*ty>kb&+#rpmY-HUdIxF9syB8fkhuiRuL)1dORbJ3GJ#a@T%^K(= zJ;H8$xz+y0kPs4|n2@ZT>~JO&QEXxl8WzvBty&mLVBEdD@ysQeqe&_g5ENt!&&D>c z(90sm0!r@L*;xvSP8k^)z0lS@*z@eXyjN0hNP%lezJ(5w@9wkwf>a2Lc=!fr@`{r9 z`+c4OE+^>Ky{T*oRwn5bJ%DlelZAL{YarfUI^z{i;>&N~5`!_i=75#UF zB{3nPdJD(tZQ1ab{ROb%4xUtvR&dgr8ZEb<4&^iZ#J;Pmx74)(=ZNE@Uw5AcLVN9% z6wS_Ne=CeA<}%smvuY^+)a&Gnnc{%tLfvZ4)D2hDOVnNo?V=!2#du`N<-ECNEl1pk zckJI;#hiORKy%)k3=$31OOn8K3cKV|kx&0nEs}ibIe=2H;f9X@mXYclX!!BOlYFICE`@&=Su5*xnxy=IMb{C` z1ZWleYj*%ems(uWp?FMdv4|k}v+mu@opTK`-!>Cq$WxmgQZ2Q(6wB?fg|on{+E*lj zdLTz^LcJR&{AffJHA-^&{m%Xk9VitAQjVE+^1_TPDliEZ@Lzi}Y;ITLslD@7rlu9T zb4QBsYTVVky%{r_zuzu6{rDguy%Jm@}FU=0>jdg#|c>)ue{ubm&H6tZL*zZJOr$I6>Ch|@QNvplpK_QKJV`I2ZZ=Q z3{NwT*muhrq}vCPvOJGSY;`$mq=#@`MY)Y|T4ni2=09M^-b69nk3kbu%7x)Mh8J@4 zF_z+B^o~oQY>4+Aj4;Q{Sz1|J>lqsIn*URvqo*GzpR@b8)R|IS%f;Th=2u!;ih|(S zzzJMmFsoG!pt-ubLfmXPSXc&L84EOapV=kpIChtgFL@t2KC-9W;2( z!!)Y8#n~~3_o-s@MkF-JvfoS4zBfJzHy6smb(U3~poYWb%yDz`68Q+ff37E+sR~bg`6K)MT z-v>JOw1AbJU1d3B0z`@mSINHDH7Iq6O#BQ+2HO~a-qZc=O)bS87eMJh<7WzxPab>9 zN{4nHCzY0}E?+@@HJzf!;{Cw<#8-3*5)r1{C0GjU0y46T=nGE6unxMyaI|!0KM=ut zX)IZE&>EWHE`6#W4bLA;+Q--wHEF{|+L!;R*W2>zkcE8vtY)*#yUQh~$v*b*dXR8M zC`gA`7XOOC-n*Cd`)NqbU|W0p2+)SXOQK)Jht`FuX(D>gBic*xbV_k98+aiL*7r9G zzBhYM?e}M+-r#3?Y|i8X&CzEjYrfs|3y2Ii{0g0|*skrns)Bz!`_Z&lJB-?m-t+o% zJXnZ`oFmP?dtf1I4IW6tYmS_q)$M1og`%)28w4SBmCOC}4@@>mk(WrdEH!CfpfyOF zA^y8JI5L-Ez195;`vHmc@(s^J7`=}5c;VK0e%EtOO&dP99C zDn#^FW&N)hI=Z@g@89RoaJ|_4@Pn9y@8f@VE}yGN_-eNsRv?#51nM)Uy z;D;1Mw$|6CAx$fO=Gex@WF0!6cw+_qt~u|n{?f_gB4Qy?d6&w$j1yVEi?u81TkX24 zx#<=4M$RouC#?CTP_8@LP>53TM!^y#hvbr(5l@&`K-wgUFQuo_=2Bc?GEvJKB(mz~ zXfNn;51njQ$w^)8O1Sf`2LroL{SlzSr1T7B`yO|t7_^Fn=swSa-+HQn!%nJ!W9ig; zX$AQo#CUA%na0qNli==6ipSI5_D6TewWPdTUOApp4p=Yq-e%h6x?xZ=XLOa0Iqh4o zQMRTR@l58ks~4sG&YQsA0W`z+=I>%_$bItBhs_q=17A%p?S7wp;Xhe`2Bhj&>1@4F z^!pph(tM4a*K@IjSEZ7r@-@bdtax&aOjstf6u?7A9!V7ysHv&=Ef>?flZThem6Q>u z5abjh%ub!J8B9jbBdKglavMJxm$NO0Gp#vjdz>c~zB@j_+s%QHBG#9Jgpk>RcudK% z9Z4QZ8D3)b5aSgI$>osr9QAZ>wiT|Auk>}dN~65HsI8S{JBDhhr>3!{&mW#i)>z{qL`V6I<%+3 zy7HaBCHz8_61lHw@;tQu%K>9|t>=???%4~~om&zI3p=yKyzAk#^N7*Mh>8lPfCt#` zv4R(O70Cz=w+Gf2xOorMBwqrePyDSvJ>5#C9S&#M7V?@}J_P`0RJ_H^<#YWYK$BsD zH_4hq=h>hdAY>Z7l|K4w9U{!r_O0$ht1SyjDTAQf9+o`uR9ti#4{IXvh#EDXJTVuS zNa(Ljuo45TAf1rH+9Tk#C`yd_mA}~ZL8E-)5W1r$o%$@lg5U#r?k?6f)sYHG0WWvd z@L9M@{VG7lsQ|Cd+$Q&6#o+^cPO55%-Eaq<#1oQ znACyR3bVZ|1e)Rk7h;xCIc}Hz@2$#1cFXy}JHmE&9Q@ zo!yUFQ&@*kIrR8iDuZbNH&z|NcPh%b?=8&m#R$5PhJ@4O&8}vRw%5~Y7iLLxItp`d z(q{$1K4(&qi=UV$L74uZx^51;Hj0x}m?7ox`jSm6bbqB$WYa}vcxgB)1A94nUGt5^ zQyJuJ&sNkzhIwM9v2IHe7BeU^-9k16LU^(Sd@dLtjHNmpLKNyCRIIvkN!bQ}n}Zen zqs3Q4azn?^Hf=TdnN?wzj>2AtUlw0cp(qY4@%wCqma$nDq^HEq!oIBkVT?R6jH4ZP z3hC|_FV7|oJp@3S#o2rdS60BOKcVt3;?}>RsME|01-k6!rx(ikD0ci3+!2{=&x4QM7$Hoq=`=wKpm+ScN zUsNM&;I*vt?zTWXl22=iFZD~(!wj~6B2!p^h=D>$&wre7Y#F(kg*w$IK)lM~e>mf) z2l|4_ygPz-X8qHec%stOp)BOPBL(umW6RCPoNv{v&g;^EC0>70yGGMr6%sS-JA#m)~_S1qd5Ga8*Cv zYD?LIwx|nze}w|*>^0u`xodJT+JhHdH$X=LJnZj#b^hz=4*wZ;Q%8O0qmE|t`+9)? z?5}6X=oVTEvy2jbNGCKOw%doRTDC4pi0pFga?Ipww&ja^%Nl*|setw0P~ zV6A|>O&Q6J+pPMLo^kkNHS|k2##p&r(}|D~CiHa7ORmb6&mgqc8ElZi>BwyT#>$_b zp3Y5mR(RrMBZ&r8MY{-=~3E0oaV zJFT8XuItXYNh~^g1gsEvOQ+&#gWI4I$F396G40$DeuA9y{-m^Sez))M^R%(Cbi0LJk*gK}i&}z*zi*MT@$-&iBZQ0rlxU!~$2*h( zS1_kn$p9$c z#s-dtB$mMaB<8y~a6)%J92uZW2J#-_Q>rM*t&W9|ZJJZu5sKbUr=1W4o)RRZ_3j9~ z1~3IbP`cU0*9dM$eQ47Yb_T>Cb+_*cewD*mO8H~ZWvHmoP%2_1vdjn6Dj|ajiCViM zL4(W7tii@o@2l5dmR3`aZzRanQzSE`^h})#{B`=XdJCQ08hDBG<@|e8pbWECzDww_ zFJRQVwi0M%WDTsD=4x$)R`5%{e?Gox@I|$C*y7Jpo_Q=m4CQ4mBCR4~IZ~s@0@Z7U zjN~2G)gSOGeAE$IBr{7;Viv@jt(MCaxQpMDE;iuzzo+l?lJ9 za)K@e(m__%^xA?NzipPAMOd{2nr3JhAeO)kC^!AAusI{@r;F_88`A&vl%1-12A-ad zuL8qbZi=#$UrQSWo>;KXtjR*!uvr4IC~(fJ$@So1{8}SOc9N zJS`m(j6~W3E$%mIRXU?v8ee}T48jgChw7sDGi-UN%3zy&>gM0Ws&K}w&YRKJ9hwwt ztS#<|}C>J?!-&Q)e0y^+SoHQ)TW(it{%SqUYhU$| z!s(?gF)oPYYaBvMIAuJKtV`V1rO{(to#_y9lm*>v_;yesVT=bF7>a=Y?)0Bwi-s}C z&19d}qW&YBAADtUEpdSRM&xWNZtY8AKB*JnZg;W=jh+)f0$`d;2aK_m)yURgT^;YK zxXx(Zu7ea>d7TiN7@Gmn`(DwLUJgHaUE`aV#fVU6!SxW_=Iv4gC!;tJObm|ah0eEp zV0fknr+1A;bgOSGBZRIKdB?r`S&V;jfFqJ7#CB<_h2F%Z1(7r>3y>CxZQ#G!B=FEc zNvp(IR$&IS-Ep;3{l_UMD_SYCpypr`!q3)REhPu%A)gnC<}SzT%N!RY$|g>Ugiw3n zXp%TwE{w};Rw zQt9F(FuNRaw$1+skbN1?Pn!bChe^psum)rM)lfqYIzirllB#dyNz0P$aA)Za-5mNH zHh8%r%>u${c-3cR4@vniQ2par6~mFSZ8J64Q{v;|2Mq&HA&wTGV4`3|$;XR^9X=;` zd~7xcVt^0@tW566Z*;aj=ebvq-w%I1&kHHMvBBiQ`409&s3SK4UYT=OqQr2+c{jHo zl_9%(CRjFZ)XYnKi{DTAR1=!F(`XOP$AkZ>I$^Go7qWHome z@JWmWxJC`Xq@Qxk*5|pv+AtKAG+?sGd9c})K&02LzL*F*`B{Q zpA%DH_byn-wzf4Te4@mwCw3OE{vJcXG^WwT5O?2=Y@J^C0wjdt~{ zFPPh;s8@$bt)QG5Ss;WWQO!;=aCd!(m!MRa>OgwUl;eS0rNQS23G(dNgu>74U?b8I z#~=xN{sDa8%}|&q`fEe4DcpJgGl$1p|G>E2%!55-iq^cat3SK1bORC|?yhFu8?CP# z2k-}8JUyUxosvAkw7Lo2&E-Ayq_m%D*R1ut;@AL^WB#1Y`AIM4W-Gfo={icB(zZnl z5nWSj`&d7L$(U;A{b0;@Sq?yhU%&j@y!kqoG(-A7bgN8;>rUOF5az_fG!ITfP7$3l zjS5a4p5DH`kkh@SXke6Y(Z_`Sy%X_vkoXg{8~1y3{p9mH6wW#DgzWgHTw9J&0@{x) zL)wd7y4yyI#L6)-qiOv=wQ3zoU6eud^H?UI;PhLhJeL-wqN#i>cFnxkW0T2?^NY@J zkO;rr{5Sl?CB@iL4DS+kgj_RALX8M$fW$0OO3`zt3YK-e^h9p*iMiM%r}sbFYlyDi z9whKr*$`7Pe)*EFoQ0jul?MuE1YWap)Mzljqx8NSBbbv19xZ=1^ELo<*W*t2e54vOt)l?PUXJj~{m;%X)VViY&; zjFvp$+O&>W_A4ps{mFUm=qr*g2R(eR&pklVCN3sfb2xeqZ1@;{BxjxX= z1)t0JMz-<0t@9t#@5^_E7%d@%m&8MHWAJfEuIQ_G>rk`wUc8V1vBVNeEiQ){I&{hE zj(_^4*7Qs-MI;0SVxx|;e(~=UKb&f93rw5N((~fwh^6yUvxRTWUU1)kg ztfsfR)CYRwe4|wbp9g;XAB>^wxh!&pB1gZ_9s<%Jy3MhYnOj4q7`-$-(C#70w|V`U zw7dUtb~}$zCh;nx_Bv^?9ea~g+|3VqjT-#!;qN@f2spla>~0`#P2AtNElvhaSCjky z_AYVGASE+gFFiz0H#v|AFLAA>J^`)e890EmLbJM^*b|{nX5K&2#LPz4-&Gx5P__hy}4PgY-W>WwK+BLwk&Sb`~N!es7#I=ozw$g^;fLJTk8_O^WZS=b#*Qkb@?oi z$wnbfP=Bq+I!4x$LXJBp6!?!nFboUtr96?shn<}`=TlAg(iI2Sy)|q;`-PzivNo^Y z!@!i0YaQ~ypSXI4*@KwOHi+VcI2gCdUpLD+H~0fK`LBalAIKcq9`OIR96D@vG@qza zv}FT>-ty0)KlS+_{?N3DZ7ROZ;F>pi7$)hOvg4!n<9^;FD&m&leQ(%fEN0+!FFMjd zZ`GWgn^4ZwK=0KJG6fO{z{YW;vAM1B zd`KIQqtR++PsvZ@yh6<;gUENn-e!_U$XF5um`WM)=P!JWwSc(OCw!uLXSmvcgDRW2 zi%{`0mbV4=1I=RWKTJ4y_0-J!?-x#n$S}+?XlztGySSRT5c~AyX)hd>`jd8uJcIc=3x77ZrUdz|qAsZto5vwn1JpqGREDl%dVw=*I16^b8$>@VlxjNEiu zMVdOd|Aa6@6lbFdFK*?K`&xhX$ZAd;T-_BhW?)%q7XK)nA;~9fadMhS?6TvCXAV7(iqm#wUAH29S$q=J_Ts~pCc3GZW334M;&L|2Zb1tZC zcoH9I5~(PmnrebTb}>8dz4O`?eu@sh!&I-n{>C~sWoR_OLd)ULu{EoyYPtCZ10>Kj zt74oVFjmbj&rQ}UR69bz{1i8%A{;!U@@{3zkfAI+_ctiQ1a4!p26$JW+2Xjfpl5^y zWGuiR0I4n`n>VG9A=iuAlyKUiDI=W_lrT;RAAc;$pX2|nlUw%54Eh^c(Blu`)o)*Z zU1M)LphmCq{8rWQg5@42SPAAHZ{B=<#t2kuRLf>Ie)}G859aiot1}(xWZBUb!|bW` z4(GIrrkrFrRxiBpf5#^?+9Fl9^++eVxH-gPBqf2I9*|o2U14Nb>)v%(Ocn9lsIfEx zyUx2Vhh$B`@%MeI?VoFmTwgF`yCKaTAnE6@i&sSAAegke`S@>$=Ru+p7(oLf#ohIG z`#IV1Mi{$)d&IpLJ`P^!vs<*^BJ^O;n8 zIV$HDj>*TQ!~}!q3Drb{6%8`~@oC!#at{o=RzRrv0(v@O4CtevU5$fr{SJQm6s4ED z1^-$+gI19#tT>&&AKjfvF{|Qq+oliiyx+QIDl^aF zfIi4Xi;G)(L#BDocR$B2&~bk--(9^Mt6J?$yZhS__3Hqwa~JD2NRNS3U1|n4VEH-_ zN#^W(Z{t_f1VclVE4Mam@in}eYzdHmPCdL70wUt`Gk&ILJ(j{ft~;TCSAPy~6DLjR zr|0d;=05p3-2799>=&L3T+V9h>FaY>eB~{ji2yczue;HN$laf(&u?I7$J@RWaMmrq zR$Fg$VnHy@+%iLePx2KoBvt}y=KF<9SGk-jl0Vqk4y*`vh8;Is&4LdE_H``3-JijP zQvaTW0XRA34vjL3tKkjwbu@(lR64w2$^we3jJ%xP<#XuvPv7IsI#oj%U)wiLIMm5R z+5%k0pya1bMuJ@bRVsp5u&GGj3X$!yQJy{B2k7%F* z0bq|I`+G2`AULjOi{8!k{Z}qsVZ!(xBUGk+vP?rT1HzA!F}M?Z(j9!o4R$B+ zaeiR4D5Ns^nc({ja=z8x-AYoWI$a{^DjHSD9d)iIeuunI&~Gj;wiR`rN~rUe~$8&mX!fojegvfo`GJ^o=+_E zyA+Hg*i*dvkjqCEvR;3F0a%=(!Utg6f0)&L8|PIIMmvQ-a=osYN`Kn8;ce z-kxbR+$7NHVxiyHP-*IMiVzXV7*02CA!`b`eOO^D63^X zYqfaEwxB+l)2SkLL`JP-rNHpDv!AuwUvmD43eG;g)TC0PhsRIrZa*BFMuT1;6RDt# zooCa^%h={qa%Po+6C&vuK%hdGd^TMW!af5+Hbd zT`yYN(c1URerd1CK1!x+hyrT}iy`1rdyVueA(l$S>PL(GV4YTQIYO5svW z^HHO4_@*1LNX^VX=(1<{D-vYj(2-%mxrWT)O+PL}0K+(Ghl>c_ybE3Dp6kjamHjj= zIA@o^syN?liW~U2d%Qy-av}a~rkr7>j2Z`&k0qbLs%WdkP#*w8PY=#*L_d8HTvy~TXiWlt-*lxS0-y5 zj~g6Lq%^iZ)A9^4?JS&j4%LVFi8(iNSQ`oG9S2iCtdz4qZy-{b4m@2JrSpPjK1}kQ z-dB|uw_KMIs1^ms%Ql|nzYZ=6LvF8W9~hCCPJ?kYv&t44oL~9=JGSoKF|uH`-uyB? zHUZ_Tx5X7ChO#9OevXGs43S}$xcHz-zlx(CPp-g$9lBNvnhs0F8aADDlOY$3f1xM8 zcqPpf_T7*=3KtYo{jlAQt@@Z*!KK3nRQt)G;QP(6r(6Sv&Il{>6qhwk_LT6ucMT(I z8Mgi-Nu*WWg^c2tJPosh-rc>UClBPx42t7@H9+{t-o+!~NV=jpXwLEr=msC*~^TW}Uk zK&RX;UTNFAx&yxd14DIl>J#HC57M==Wrf2UgrmYP-$1D)Rvd zbG6JlR$(pug2pHJy9ryU>Kq$u3BlPOBf|}?Y!a*HpoN*HN_X{2wwDN4LE9RjJQ76I zL#2v?39gk?Rj7<;$lg~Z+q@;|Q}oY_;d>S3IyOF0-z)%neW_xR8QY$Xd z6+X^$j_-^cWTbziD%tqPqq_5XFi-jUmYC9MzF2d8HXbqR$ikkl->?Rm#s?}B)-QlQ zXYK7C;eYoUc&h?_7WmL}FCf>7gR2^LC&+-#po}tzp0{_=3aYOnfbK;kj$|v*4v@L^ z?D`2(d7{@yT(WSdY`_v_A~gx$C=8EBBpegHxnSK zA_;SI!f^f1SrU|A&(^3gbE#&g(G}d}$=a9Z+9ct_Dr3^j;!FJSGxms~u6+@%Yz#N|TB|a}IhH)D zguu4(SSZF&&V05ZKhG+h)s!>69NV*vxb>G~5Y57fbF* z#GVZ|KjWohLeliIsT3cIT`7x3Dh343*o&*>kt)DjlYtT#NH~Dc1SB-iXg^2KZF{?| zSN?O0Wuy;7r5yI55BG%VnZ5$9JGZ&SbYN z;B5Q3hJ!bA^v`@<257?E+1*_L$9&9o%2V#kg|nIs-yS$sl{xnctqpM3Lcz-4=Upp< z%$4hjj~%}kBw9i3aO`G+zABz{cTr#vT;1%S#xB?VX08Kz$C+MdfDSS=ue7BYmPF4n z%(q+8Y*Q8+qS`iPWjil2*?@bGa8r5CjU*ExG*LWA!=IW(2_tAeoqinI=04I1vuX>a zp>5IeiXHtD!}D>a8GeT2LrdJHAltm*@vL8HB;hX=sIz|9bweMW7~m%j{N6@>Zm#xT0$oE1(^I+Lm`?A;ri zT(WW&Y$ix;o^)Og5XuA5r+!ZSmTJXVNsXLgDzcbFljLhsDe9ch8<@MG=@K5Obruo{ zN_}18Le{Xh#nV{iB458!@}qg=dX~OWV0);R4qVveoS2_%OF}ZjuK<4^+BEm**%VaL{+d_W*(fb8;G&3?jm>$OF74#$arJ4l1?takN_f@|Vy3JFe*0fd z_zG-t&Z->!qp}=ZgFNp~DK?N*)G5){`vgFt7eUSA_G+!rWE|BajARXDkspdUeBk%8 zSz~TCQu3^O$M7@=-AgYEs5ngu1<0eLK|@c`?+#g>@6{hFizt*o8lkA8s9nG(xoV+h zj%#O*^Bq|Q`|6NnyNt+3$IZ<*?V1h@GT8FzqV{s%MU8AJZSO71arwl?nQR4t8z1KE zxVX4}0;1D^&oSS);xkPGv7suCw2^|T+z$=2Z^mSyZC`3?{-(l0khMIPcM$M!am`C7 zkz|rSCerGU1}ng9@Z*psUV(oW^W6m&rbs(MRe@ne0oI@ShJ?8kdR2b_i2+Ws&Et6I zOIBw;U7BGJh>|H(ScDMivuU>M%W1lg*rfl||ErEh39Zm#MyysWn<;@g5ImHScOG(a z85e2&15R7hsy7LWxZ@mJj9xt~f9oBSUn{?BOI&nGr&(t{olW((SWnT-0cl{b;_N9tQF^z7A=Qc3# z#-VkE9dr-5K7ZqYTw-zJ0d)s}d&<*X2|F)v9yqwtJ4~Bjje8 zlttIweS&8t$vQmH7e^?Uq=HXQEO6zj$Q-J4H+r*!m)rY;oD&NE3tyj4hkL|0+y4}3WpDF+IvOr(O z93mKX6M9E&p;3YUl|-3$E`OnR$bvgtC{Pf)qn5;;lq0;~&XDSgY54O*2^Ps4!k#FD z#FKZ(+S5bU^;^@H#3U?hzEX(krSfm{ihyUO#gqWG%*bjRYe|Yb2a*)0r+2DMee4I} z&)fMDP1+3R#8P7QD?swZMH2VxKtcVCLNkj4mm=nxwb2R6N1$(gz5cy5gHubg6!cI( z99+_ui6zK3UBf{t5NM)%Gx+bl$x@ zH*T-put$DF`-v$1a`t^JR7HQi^LWsW(G-FF3sq#{l+CPQ;3H&obkr=%Mq-3JZS)lt z+~_(;uzdSg?Q+i6bOJt5v1y$bC3t8r-6So|&13fWnLaLA+1tmsjVL95MnZj`YS}PP zS2kr64_JT6WHb7;I?l6%t#Fm5iJoQZI-Ep>vhTO#xdibFfT1U=?XHtVm)sTZ+*}&A zz;I|^CkCdBx`i|iy0}V4gh`#+6}NmD58)T_HmWU%ZwEW@pPnV;EQi*J=Y9~7g3H2u zxOF@+7yVZRm;Ej<7S_J=_I~^6TJcNR7w?-Q7QHc??n>FYoY2Xb(U=Y1{*Gl2) z-$JWt3v{wVEa)Zfx1Q$^`MD_Ahg!hF45G|gAxGv-y^D*)39Qd|SJCC?1T}2JCG&hQ zTXN9Cg!0_QI7+i*vLs$nO30T^*=bh2o;kXZw>*oEKBi1zak-cuce~}QP>MwntnL$^ z`mcU!@DxHi7+hMub)O$*FU%|auAPzE#Yn6?2t$aa?pvWPQY(%rF+C2IWD0YmJ+@b^ zh$~+x>*##r_`x*2`5d)*uO+y6r4GGu4kUnsd_~XWAUCr`?;prptI@JXR9-QC{y0ME z^iF7;J`>NZKX<6n9=C4*J=h*xRMZop*xY{FhylS|y=*KuaQ^t@o&V~cT(>D9PJb{Q z%-wv=vRyQM<6Mc5fA-)lw=LIew9lUaq&O(@kE@5%0(d8X7VFbE?ngV6RE{an4AELx zTdTpy()-*hu}*`$&!_*brp5)dV+!R=Je|G0vb#TyA#g`v-alA== z0=LK!4%W(*aDOffvpKp6lEvyn+HXxvhkl66q!kv#zoB@)DxVm_8sVMJDm|nTLOsk_ zmq_~`tTw@X;ybH6qG|YUD`ICJiU+Bvhf+BG?BSoKHh#gM?nZGPV&X~tktVSg?URaD zGC#)MEwriZGdBu}QS(d%J=)aYkcpn0EQ_7+(Y;aDRkOe-aIA^?RbyUYi`L?YFCPh3 zaM+J2_Y|x8s9jVRUhO#$nUV+Nfk=yCkVo5iOZ{#}Ru*oAK98FF3l1!{rOQigTKS)z zq##^n`=bp6n2oPmVYQu|Dtt)=b9V92o%i~N#cGW4qgE(}ssbn#iz()x(iINd$U7OV zY{b{FZ;j1{Q-_P0wzz@w^MEQ&_@CZ8jS5l(NHO*;HYgEZSG)>LFox2Z$jy{Ha`I}e zEq-`Cy?@#4=N&W|vv>P?MaL-l_ET~AX3=|AZopg!B5AN=m2 zA`^!uPd*}-x_MjHf&Z*;(xCpilqdqO2Y9RJMyvh&0P{!JWr;?|Jg?|_G;qm8svcBh zSLHz26J{4zvK+Rm_q%|K_5f0keA+5fK{{Ok1(`aJ5~bzx*OJ#v*6%*#z;yynbeeS( z%*shh6qFt~x>DC+uKM@+Sxr{miB5EI#cZ$SoHp->=WJ{& zQ>Uz}p9S@u>E|f1LvI)9`^^$uccGf>X$$l7v{~coj=$tfG(f~>dV#bGl+%{f(MeH_ zGSel5c(6Zg; zYN*M7sY#Z*=f>L1EZd_^8B01s;|)rV0rXrdOP1U0Ydsr#@$p?qz)AMaxJSZu&>i-7 zZEtDp5Ic!0EH;AzczeQ)9yT$79<8<&2Q$5Q;28E_q0SmN(@QOHe6#Mo`|>rqg>Q-6 z`>G1G++Au#9674UZ}Ai95!D~@qy?(Qpv;xg)n&NY=u3^YZ4&vEkri~NdknFxFOvTr z90*y_E6ecLzKa{e$xq}Aap(#|pUqOXJIn%ge^YkuVhK|;s2u3=W_JPwmLyIWnKa;G zy`~WA-c*H*6a*vhUkEoW+E4F;X1s(^%a;g3(M!wVjgC5Evg&~EY%9q*^nU%NvLJ&V z(X?*Guuat@q4~HIIYJ^n1w}sg#E=U)FC8)luFFbeH}TpG0+CN40OWIj$eAUim{VCM7rCr%2!F%L&|KU56w_ zvbsSMitNu8QAThRXc5)=%7rI}rtlXj;D-|NQgom@vBD<(C82Lx8&xfBvKLykSve@9 zwTP?S0Yh|nNuRnoW8*IV>pLWm^0SI+xC{u5)*24DkR}rj=R$Ykhf4bx8FRRujF63V zP!KRtDFn|Lx1;_nc_x!-YPTAN$x`?ybF7?SJ--3tG8lt(p>VIU74RmHW^36p9NMI@ zyykTQRac+*E zDa!&vgz|pAFg^};UnOm1F_w(P$~Y%Fp1jsdhF0eIB7KQj5a_O+R0{?DuJmSNOmEHn zEmO>4#=R?^E5jGFv^gHZQ|s9HRvbyArJ!AK`Clc!NzPMe_l9)Fr>@7tE)jhLz3r3r zV9={kU)QKm1}l5djw?Ue6mpbT$y7_|kH_(^AN?H76v18b2V)SO0**Rs9)VP+Sey)Z zKBb}rm#h=@OALuf4lDJw%|-Zt?0AKjri$fX(WIz+mS0~PA#10CUKF)h+)h^eEKy{+ z%FmVIb{>pTeQsBqI8ueiA``6-CpjEJRjD1Zm zjyG-Ve$xBtqmW{?TE3p6)6TNs4m%V_K7OJ!1ioXp$c{L5JKq**!7a$A{#pA_YBI9k zjdd2eSjTj^VhK!9tT!^$?wPdEdP~zymuN#%8H|o~OASAelEpkcOiG~llNa4^_2(7D z0+~C7J9ZN=@*+cI<#k_Vy1G^2dY9Ld0iexgN9q1P;D>^No!$j*Ce$=eov96a99%)7+{ ztwirYyF=XqFO}29;s>v*wpC@?;1anDzr1eb@%r@N^(6Ax6KdjE@x!}&3x$>1ZWybW zHvA+FzV-pTT~GMnaxUqKyu5-LheA8GrMEMVK+%} zkiPy`JPrDVk=l54)l&Y8G4$1k8?Af=9Ac>;=OnW+k7;(O0J_uvD@2m2vM+LJ7a)=y zertM&Lp4~H!HK2%+OL4vs#Ie>HMFq2*3ntC(E)FDbhaNso)ybpp}(DwiqN)wNJ3i+ zEffJ{`~1Y=2K-FMu4kBnALjhu>%?U_biyy;+Z;`LhLc7mm<3Th{-qe?d>Q(EX|^K`_&}X@-b*MZTCBCl$OvaxT;N0Uk|@rRnAR& z$^Pfno!#lj?!J2UXlU*cx|NXW7A{qGJOcD*ai@Ukj6~k z4n=lxW~pf=eInkJ=bx?fsDB?mu?80&Fft1h)fhFJ(8O?+^eLlto zG=w-7$R|8}kNY4@D(ry)0(?4Of5O`DRjhW|agan742f5-_I?PTwj1Hv%dFz+xW&7X z^$o=0IxFp;`s-f9h>=Q7alRn9x$cbV(ej43+usez&fo0zxwJlMlOnaY2l#~KY+UTm z3`N301!H?BR_MR}AZ z`n>#su{Z8BSF6nGf}=#t;F%>o1;TK+ZOI84d#>{&T$reuM!t3nXAanCC=zAh_w17-Ah=l z+E%zr$xz=AN{bTl;NR)P2CubFsO!e?V6&Ggl5&I`kx;e$`ai_@io@0jkG5TJ36Edr zC;q3+M;DvNc#y-pegnF8>MjumsSoc}c7DFlW!FocGRtw`05#)zN_<)Q>4O9GHVp?B z_1-Qm=vi4=O2_l4rczC-1*`Q7_12iFBy_|JpmzBgZK`V>yN)Gel%fpPQs}94vS^Mj z94ekc>iobZ$ko#Xz*Hi30s*iNn)lAIva&h>bwVXiWc+WAFzDuo+-xN!k8anTvDFN8 z>9+6ToNV-PH~nr+a=5}fJj{xY#dJOa7m%f;nTHhQg9KS33Lk``8_`Rp&cAaIspb`O zz4*QYn-PrQs8CBGJKBG##IcRbg(rpZ10b}5lU6PzNug9FS>?5#x(#)j=R`M3ZOh7CIW}T&Eu*O^H z0rve%S*~BA1l8d4du(V}JZD$i+B(wHGoqUlfx#P4#7Ui`I1`od6-0q?!7o%!D_8T- zm`it&s|;T+P*$iQlr!M+vAXN8jL1p7sAL<=s;Y4~?tZK7=7hsP+>a^7{8G^QmRcRL zh^Dt#Qx7dv0^ygl5kLG(t9rfX5{lS%E|faIel^^mozy!FU9~Uy3~Gm$S)ESxkRZS`X$y)^46NDk-`@sRK=l0*%DqEsct8sP8DfN({`} zsg~>Wd?^X)q%gXy2^^~OPburzkfj14hys@`qC}-6&HGg8E?ALPh0FDcK-Lf9jBgR& zD!_&ud#X-V=zL^K#V-h<#m~!?9GSJ9U?GLeuS_H4Se>6XXaLqX>a zM9`C9X=}^mJerx8C#yZjB4toL@QT4$3-$Vg$wTJe*|y*>7(Y-R8F_ei%VE+bYps9Z zpzH+EQ9@vsmRQhghpuVY#-?vgCR?=fJ>jcmutU1zuZ#+Hgq+Ge#tC;3)3a+E`*$Ly zN)Grd(Xbe(QvWrPbNNQ&^x<}Vs@Rkb&Ur;)N~DihY>>?p#m?qiVv|CKh?;quR^Z%FQAD=4N=~L`)IMmSAEFM z--dPkDp9KDPy*e2QrzZ;kdm^p^Lo$A+<;qKL;hmJ3C)@&Q{TA7)30VLBKRv^Au(7)M>~ODiDi<*&cZ2&;K=-js5mmQtzz~Dzjp+6Kpvb_0Ot2w) ze~#zxh{M*;+_)U*quVajd^Cz0({|*^7fW%Q76!67;)XP%>dDc;!E#h^et4`){mw5Y zE%-iQOy6+#yF@T1Iz4M@%t!knz<&O?YktS|yS9p4r$%ut!rU0fo4LYnN^2BU zOwbgRuf+s4ibsj{Tt=01z>BAGW|1G}V@**QJ{35b!RU>jno@V^$7$T8-*xX=Wk?$4 z6cQRKQA{JOL|+$BDP*@MM0zflS#g+&+Wt?oG}eB}LK#CZQXt^Sl-;Cr?5Dr4E#IM3 zXYbZEZx|+dz9GBo!|4ZbK~n?qThg|{Apg4sLlfnB1farzHOgP!qiU0Tt8Pq;`P)O?9AvT*G#0O9z_?hU7*-ooqLwhjbx zEv*-c_xTv_t~-SC@jv?dwcU6CD=kOGME&xmxEOPa0y-7xU=i$%D^Eh-8$4-TpXPw@ zZ2`mp+P+mw47~&=!#qkS#Q(8$mO)j1ZxvUP|MMwOZi`j+pDSPfAOP5Z(aPwu0(q7!pm_HH3dN()e0Cc$Je;edl zy{+{K91=m#I4}au8xo%of%ba5H6@>BM?-%20Q2*54-*qCrH7|d>&`njb<4A?jo9<< z=CcwdG*Qr$a>aszeiWz=Z>|SKKp>iVE!~B8hURc*jW6Y!TOY(QgwP68J=RkAw6Ah4 z(_+zHgP=2)O;|4V+ttW^&gxrfwyW6qkNo-teU?uk;5i;|_h2}Wi#)zHzHaefooH{{ zU*Z`1b4)NTo>fplRG=QPGU>!LO-w*WR;bHDM;!(CW@p6sk<idCp$cVktAfwz_iXu$R*X?;0+8z#}h+1 z2JNl^(HFD|~fW$@c*6p{0SPH-UJi6r||#=yyk zNyTTqOfUi0*H4h^^@E-u^v+r^aJrTPOdJPGHbBTpBiK{UQmt2Op< z%i~$BRL5;u$0+f?W4d48_<)-QVN5$(+U&ocKLq6DG6}(m#TI&UoWYd_i`{>tj&3$P zf?#hpihl$PB6X=ik~|1PU0W9OQD8<9uY>=d-3X=^PVQak>gr0WajBO;7~cjJMg-4Q zf0kunC`G8|qCg@RFoptIIO^oY+u1CI4^6VApes~^L`$}_2QQ}C~q#D1(iaAGrPqED-S~cOrr#!zE#oDUjG$UfosUYR<59CPc zDT+B1nECDGD_-1Cs=D@Uk=*q)-Q=)R>_(M0pp9E}BwspXcMH;K-%M)VGdxthkepwO+3@ z64Ri@+H)(>C7J-6o6FX(KI`Lfu)t;IQd+yeIdcLScvU8R3M92xn#~RakIU{8-ee0H zw0bPFlF4*Xn%r;%C~m*XU#@6XbzlkXb&}wcqB^G@?$P>+3ABP55b-7I47s<0nq7Zz ze=|mRR)5L_)-JxWDHWk#H!fB{VYSWiN*u*!KP&nGsr^%GT|BAJOx_j>ZR3PTnz61* z4EB^NayRAx4F2#$aLbVZfx>~17D?!Zo5D9M;@2lPqY!AHX;epCqgoi1w2Ta>RRMGh z*!;nU@H$JTS~u#Ye$6)lkC=zg?zQdhFdRw@`eF zD~42{U*V&FL=}die$IQ`x*zo$Qe0Zys^$h|80qlP-owT2QGjHuZD{BR9?02+1;t+x zU{m8CvUYEK|9K#i4(_Q}<&mJwZqMflqc!vBChKTreJ62${+$w7E5qyn+CWm_Zw+?f zU8mQ2+1MA~k8!GbR6YSM*~d!IX` zP@GOeNZ%&KDAB@`uu**Sg=gzUHGo%{NN6@hoVlP((9<_Ib8rhXWmFN?$)7A1qoF^i z;OGIfrhvzr4<{pK&NLip%fOlF1MS^YxO`I zY2El<=Nb-`aPS90ITJjbFy@R7gj6nBE`yNFf4`cS(s(Y3faR;Emi4Qa>gGSYyOzJb zv$Fnm^(mYgJDG3~n$%Fe;89+}J<#L(o;q@xKI23B(Q8j1*}`-D&JRjY?i;1Z-&5&- zt<&`M@6Pl7WMF4j$mnT)<`kN;C^tXhwcdVrbEoo%`&q^vQ?~mj)sHl;|6(aN!=Z;^ zyfH0{!Vi8T)m0jh=jfuuwJktU1U(M5oa*QX4&%U92Aqs~)E9Iq56Z8vyVl_*WQF*nqU9412j&G&} zAFinp+JnqIP7EU%&L_<=mUgC&cn7h7uEV>{$lxUMfq@}V*kpUE?!dFUq%V>KA9gZX zC$<`W^>8)|#}pdBfG^HJj~k&q`EJsg?B3`f_8uY90aAL7B5O()7b121Y4Z>6 z8^v^qyDJVL{w%8wpn5s`z>Q-@U6<}wlLl$7sA+1F%b|FoK}}8FdZYiZceMa@!Slf_ zDh9n4pdTqg5v--0>64z5LrK>ks%LCWn?0^EnDogIAGWK;627aWg9e6^Y7nqv7~S5s zhF>1BtgWWC*!7A%DLXkLXM-Z#|IrwiOkp)N1(3jukL~e8Lr&h>*>g>(>$QCInU=r( zNUSTlGnBmB{^5QO?M1f5-kOuzNE;7M{m1s0q&`V=M zb3dJ~%L%INdr+p8pfo8+fqX4gB@>%6s0JkGhwpMH86F;T_KN6~y5V4s3UdM4{`zChIA?sYcl~%Z+fC2lPH4TkSV$rZ z3TWL`RB*h>(pjeVF4&b4?YT!l;Q-jvA66f^K52V%|6R3h{j@4oZN=Hd<=Zl_dy8U* zlLwv$-~WIGjy$LIRq`T^BfS$maoyLc9oN&_%6!%TbkvQrj=X|;S+njIY~>QNGq`Bv z0$&_g_$;6X6N;UFlYM2LPa)}?MAIdofB;P$n^WHJ;V<5Ql_Dc0rNd=E5?z3Ri$rzL zE{c+S{TZ3sRg34O^~I8#lcBLJ0uz(T3*RE(9L-yFOdQT{)O!e#R0}7*TSMQRYG(YC za?k!fb-cP^e$}ph)9%@B4_4u|R^!g++iF0JC)yWEIafZ5ueP06hLWBv4y7qKBG*b< zQ&{D89CTM`RaLb+4GDY!<6})PuWD+LYx^sw8T9JSUpVv+F9zS55ov%V#`e3zjfW$D zk*8BOV{xs<%eHR@)XQy1C*OVWSG=`#zs zBcZmkU)FRnp;$pB#7+u4+-Rz}5XsytK^>$nNjSCrV`{kc((jB!q2?dl^vzGbXc#|O z_=U!=fEVMSj3Vl%>j{ZU_UG`TZ0~PVMJj7|tZ9ld6IZ?BT*tGs_9!T-QR?V|o#l8^YE=GPZy)Ha2_O@*>8U&+SJzIoP3awrCS0TT%%CM~-~$BzmxS;cZ?! zcWq^|IJ1X58d4r!t0&IlbgV1b=9U)o<|UO*8%U ztq}2MFI=uqOHKV?Yb*bvThPQ&ohf41&DWQ7K{&|(`qf4iX8j>d7*Hqr`n)cWmd1N9 zL`GMF5N-5Gk$ltZ)2*HEgl9;E6)D-8@uUXFUn#L-o@ z%VIMTTa>37%`$jyR_|B`VhnqR6335Eby~k-_+F3tbL zySJidYSdC3&m#A)pMirfAQWK{v3eA=ju??u_v}OQW51GA4`%1PGZN0sxCB=qHRZKAI^v&Hu;;AR8#p6DC&%Nj?NiSRBlG*RSJ8r}hxJ41 z#Ht{_AhOQQDa2}q`cnb9!+o>`QqK!L?bTA1?iz$X`S_08M;tDOY#B1IVDNGaUw2`g z4ypJhVEAs&U>$bk^1B=2_e>y3a7=lSbio$eKJx%l>(O^jmQxS^r`Y?&qDL|jv^dV8g8B$4!58Q4?@xk)AU^DA76*hKf~hypixA3-25gJ0^F29 z|8tb#o%>OaI;+}nT570rn-QoUPHzOCu|WcF#1NU*C%B>&-da6JZ}lWmjaeqLqwR1} z*AxcW?AB$tDH;~3!It~?V$IU&6ckV)DB@LSst^ze#ya{9*qlfsn&g4Lx1=b`6#OMH z9XGoXB%O-qbQ&(58|q+9uuXV&(J$9-jZ3YH4kPD%u@8L~rdkgC%FMNW+kWd~_W9+V z&&ku}ppP>AzrW+K+vzjfx-IQt%--`+BtGrl1jGm)D6@&z1UCL|yAH#ZtjU7&(yjeC zA`S6q6wW{E`_xarPby?P$E9O1n5qK|SH8EgjySKjd=x(G-WWpF`Tl`-ADW(41l2RmZRufg3B(az z9<;8J9xa2wN1qvwHd46c=s1fi7DPiGC!tuFF_23GEeQt~S1OomSb%6rJmStG|j$VRr7YArH*5j zr*jqS^njcU%n)AR$cclR_G(4CAN0uyzA$K)3XR_{6N1$+HSvKnAr)8u{MmTFPOVr9 zsCgWOOG!rk-3d?Y7uR;tr5Z+^(sPGMgB(drPlD#O?Lviw;KE%@u@0*>FEVQCK>s~2 zGB7i*?#qrU9TxvmIAiJKDjt;(J^@Ly@BiRq9}cjDf3;JtlX==A0G1GGx~)LU{cvFj zr0fKnQrW^Zqg`I2nf6ul_L%+>WPz>2ynserI?QKmPK4Hd=b-faYZ ztEX7(;wt&NCn^!aIZl&MouoLUFah}A^@J04wa5xlkWiH{x~yL(R_I-Ns% zS()J-;_%nIm5CwP@igo7h(y!5uiKJT5o3iuTSn8Yg#2sR)v3!u6qEsCr3Z?NT}4f; z!Wox18Zj*-A)b|Y=>N8E=FfxD5^@fc{fC(P?c4hOs2)kf$NcuTbk@!SO@MMa+*Q4 zcqKgpBl%5FY;|?}u!rB4f3LfsYfmSJP?qPeoMZb1-8zG0qB#}4D2f;ymy$TT)TtH? z64eUN8_JU$j0Yz2+lk84VI9BM#&`9`BgPNY#!j1~g#S)rJTRqJ>jC_RB2)Pcc(tYu z+#{&AUF}bASkwqm7M+Y)itPuKi*+e_lg*W+wA}0ma*RHr)K?hcE2)8bnN+-*7U{sn zw!VXXr4-HHcDg)A1{k{+^Vt4$&z`uVL@|Zbe)?rw|K8Ii&bkWK_wvUXTa=h_4ZIpv zBH>hFLSNptb8tcwB(yj^G+iExvd_ROLf%4FvlSYFeROCKR&Q&FQUAg43~m7_0RWJ} z%$^{$t9PBCjCl|3wazEfkej9vj^Fcn?^!h%aS2JuR(>qqT7sdM=kka#RmyKYW25h| z@>)T1tQ%pwGUolImW++Qm;KVAUZ*Dm;M=50k#l+6x8d0P@sX2*JJ9T6w#f`=RK|u^ zsSdOwCBo1rk9t6R*8LUCwU%kwypS)vqu*NnV&~@W2jI%*08UkgPlx+xV%r=5Jv9tb z&rVEC{KoGF70-!d;c`Ei?^}x%`NiY2g<<@|&$#m>P^D8PTd*&NG;!f-NQHyPBh9eo z^3&t}95Y(^lg=uNSG&I%S|^*%W99+=Q{{cyt4f&odyGfbQPN~cPCqengs9uGU&4!G zblxmjnLcGzWiK+X{9(`w1+Od|ojB|o7AU&b^sKcb^imtGlt_~~i0}MNt*HSOs{0^Z z>32~!x3FOD>6!ZZ=z(hK(cxp)*^g`Akj=A8B`P7i7C9YDm4<}MudT|`NYt1pdZK!2 zy5U>d`moccJL}K7$w{q!-Q6h9hwd20(=o=`NXI$qbD+%DLX!)iuRUN=V*L+}Jap9> z%OEMM!cXSSq*OFbr%`$gvtMWm z@VKi8-ZPj{Qv+%-hd@Usv^IjN#4}!28<|Hd;pbKs+oy3MW6>F{N5F@R$`tT$zB#qX zl|_m#E*)N7HARyQB2CN#qr!C1Sl78J=PTt9{oQesQV@V{zas)^zPHJJFATGXaZgB6 z+$+P(kbB)QLl6=aX-e$5{~k-gZP(s%t3z_-m-+D8VlcZ1NSI@AR?y!7vsB3lSdwTVOGl#3F6g;zM9Ji-7#JNZ-W@J2Ag!F4Z# zZ`sJ;Hj>HufN(Dsb)Li@9vW@|sEM@PR-zu;fX>-n>nVejaOElGJ}8emk3*a@`cU~{p**!Vwfl0B0WU~z(P zRlNj=JS-gj0sxi6d9@cA1P+i+!N2>JDF7-`0m95wip(K)mmO>|%n5t$=U|~GgJkbE zu^e4<6ZaUqiYB^h5kp{HZU^ZJ<- z_g@~EyBrJuP`V;@+oazCwcNBzsQCYh-Y+@`##?He*`8djN={vOiL{s61rOG`3P#y-d1Cr0rwMo{5KhW z2k#A@5@6tTz31ovaZRI%u|j<-c>}2#d?9Q6`M+&gie$L6%`7)b*4BFJh?S(7B^1$P zbLCJLEr|`)hSCea|CL>K7m)jrJ%ogkKKoa=NF{soIsXlazIBskcfUuW5Ayh-9v%2dGrr7^l?&7EOg+P&H>xM7;L(ND)HVYNAG zQ|PY9&fy#f`iE}ze9a%dg)}J8(!>#qpPnb2mh;R1*!&_Ut4&aDuruo2w6*{Kyll4f zTJMrcO(g(^mw4qOzR#B|H$GW8l$0V(RaJ3=6){m!RZUGp;J4`M=>aPkx~&haDQka9 zG{EZ(k;+kJsH&>!?CtHHzC4ShFq%O2v^Ry`9X)Yox@QL=VgOTr)KO4yXgR^GHloB- zTo&Tbx8eS8;4mbgo|f7l=aBc9;i?|%-Rtsu&DiDe~CrnItd>#eHGx*mG#z0ZQ{C+!&m}(@DpURvw zTja*^i7$H`^x_dmcTuqzd8JIxC>vEs2#7r2yd@%k7$iU52qVi~Y?uH-xJzH+F~z(- z?&zh9hofZ>iT>vPTBSYAy>WcDmuAe8c>H9@qQ=$R;ZL2ISFwDKrn!Sd=G(1tr~7Tn z!@KS+LSn)qO~$kHjmYaS_O`N6#R(UJQq7WSo}CL8jv#m6-!_Q@N6ERnA*NidmMDddD-P=OU(@905F?YeK6h@s;-p_|5d3n#1?!`}qY7pz_1{19b{j3Y+smwW0mrzsOVsL}V+y5$}M> z$AGkZmn-|MnYj@9G>qn1_LAi-JKxV!?dH|T@AU$nf^ee90V3-J8k`dei^^rQ%9WT` z)L#*TY5IO>dnpLB`6+7lV%6mL{*u=JAt<3S_bYobD>$CUXFN}pB|)yBgvS;TF*{}~ zeBG2Neg?r+$yw2#x9>*B4J~KRxt`9)pE|*_X33#* z86sT4G~$_1r!_0Q^jF3EbbMaLY3QqFXM#M0Pj1hNf*(tc(zN?_A&v$pt)fd&z7HQg z9v+=;`9E4AWGU4Cqf8tECKl_u_jNFBaUu10FXbkW?eWJ?JfHk;UON7KwDh~D{}-9| zD=>e#FTp>>iVeHplsaH5k>fQ{J)PJKAa3w!5-(KEcetwN?j@i|8kr#YfNvfVJx^DI zR-hj5-4>B6JDWVR^mtHoQ}J{y6rrnFY2|df4%Yg*G=tAr&7VFuR3ScOBQ;g!WEb9~ zfvU%y5)nqVL2Kyu)>>3@1v3Y~5A+anbW?A#!p!()8=^PP%^F!Kmsjt^|KmF~2q2H^ zJK4Sy{>P0|LV*+#cC^eJ^%Y^PoB>5%(2891XAS(|q_zkB;qIUsgl$zkv`m5uD`gmH zo+w2^kM7LP=A^W6)#Kyg+x!5$52ShKtJ@fi1H1F0qLShd=;B_D ziz&QTeD#5Fn{vivJd+v)9>&8co`7^+?yNNsavyhQj2ya33#arWHf`}ZWkHu%i%0yhuPxQ}NE0p8H% z{#=j=!8bv#gaPGvu;062Pi zjYm!L73bTy-w)H2A+6rb#xSOj(P>wP*%GCOrcb;P9H+*)`-E<(QD|d&^~1a$D=7( zUY(#~7O!j|MXi#l39c}&7D}1GklP``X>mWp@V{y#kOq}H=Ep{cLat)TQ*9BkzpgAZ zQd6((^*;&TEs`}UW`R__i-F3u?om)qrNb|Yp$k!oQz{UI&Q@O!>gb0moOYso`g9V) zYlRx^t^*;|I zFPL#qXT+T=p62zvWP!eFILO;+K7OkARekMu=HZ`x5+T=qb>|biW;54GbLG}ddTl|3IT%orSU>qlIEK9{_S;0%I4-Imz1Z#$QOc-8XvjD0x6LSzK>^^b-OKsxigt)*9(D+FpL3ymIzwHe@Em4W{&T z{NmuT1B=0QKZYk6h_+yDOQk293O4OZg4=fNEV&R0qevk9PzE+gsPJ4$EJm-wEe-Jt zub?zQuHZz9D1s!KENk%_KJmMqq^wgQme#ji28gql!8q2|M;hcaOeyNjUsNL#jsn}I za!b1?iD>UA&h7g{nR%77iDSq&3W+~TPC+PDIk<<-VukuayL8TPXcEoXLejMPVr%>x zu8-3cjfM57QFG_@HbKnv00*Rd(8|jusqORC?;X@JxQ<0jAJc@2X)ABr1ZiI!J#9u@ z=j~Fc%`Sow7^J`DvUNlH54f(>A=tNMH8~orctF($h8PnE^(X(OI985LdPtPum&Fqnb@e(XCD(c2VOaIAsg^d~#~C172o z0dK~vY>}y&mnhzWu9U{4E6$Xx1VI9~h3$n~oP{&cXEFSE9Npt zYP~a<0maQ~vtusyTh$UGO>YWwxR8^B40E(loyA|ugFppgO0K{+BVBGGvYm&E z0@W;GvN1p_F2(as-6m*w0@I|NroN%M>zAPbuiGk@gjN9Efg8-)n@LP0%p^)Z>E(pY z7xzO~eobhB=b`m7FFKq5PG&yZf4N_#=v6-TxD7Zttdv4}{}kHuKUBiL(xc%%6aoNK8^c%R`(pvIQj`J{_Ht*r3<@?+uIOn+H^H2LE+YSVpc9LNwJn0C2lKdHzP#SIRXt}?je+sPhy2%860ouD7GH(VGln^gp&GIW}hS5~URmfp7qT`UU@pc3}zT*b*H&-|0j$st9F2 zp95tbG`9+{umF=Dl1HkZO#fvP{F)|XL&G~B40|+ugE%X*Zs4^ID+r#LRmtMn0fXJ0ZyG`+r?jVVxwq$zvmWG@oNp$bbKUq@K2n~P%Om5@#7wRFgQU)y)RPLo3(KWT1D>=r65 z9Y;l|msE9!egNzR4V~*1Ha zUzNG_C8_fN*?iDv9mJYh{Paz^BdB!u5Ao~3RBAph{$R`E`v;Ln(zUfbuDv&>H&hL4 zk(U*%1@PR(;oa=L;jd{$e^!Gd%O19RDPYtM;+H`XFW8lktpn*A$KA>&z|b5OYF)+kP%nEoXsJlUnBQKlT)+t-F8ps2Z>bf?Lsz;( z^55|g>Wvpx$eV0wCz z5xn|3qP2;aY+XNp?)^YBdFd_GEW~`$k9#Nt-#fi`W!B~zpNe=I1AMPoG`VRB`H%2ppPYEJ`+Dj$KT{K@t5W%0^e%=drc-Xucwc=lcl=~j2s835k(UK6wwdN|*n+tlo!?YPqEg=4%% zzU!>7e<#XP=K!+=%nTs)$x#JN%$n-zu8SGtaqv|EHvIxfS_Zot5Z@&R@M@Kx%y8Dy zDY_h<6;5DI5{in?$}S`Xid%}s`+GqRWf<1vPNle_x&J zz>R&=8j&dg#_;E#xxs45y<=dom$&Jgs3kWM{Inhm?$CzwAMU>lI?`1nCb}Jym_)O1 zrg-N0F2xA|f>1AKb>`_PnWI~{cnDUu5#kZcdiYCSmt@<_9xaQ(h@dQPTyRE3b-@Qz zK{-)&eOa?;du|YYaj%1O+(Dbm;Jy_R!v0F@q9eqD5)X^fRbvC3%lT-T)zuN#9^Y+I zD%fa{gD6%79@q5$=Nwdd_@gq_XperlBvT0!OQO|O5=++X4=dwsS7~d&8{djp%#ke> z4)}*FnyW|`;s8V57`*a*7EaZ}#QoH?<1Jnz6Y{CYnXE=6Px;&6g=$@bVUSM(uwq;lpJPSBWMFp=Q3--*HYGk^Wx7Bdn?#Edy7@q6; zTLus*hIIDE2{ckI?KrIv?OK@<-e3oqrwxYE^xT4Vjmws!tDy=W6;R0M&Dke#Ym6HF z?EKS9)91|5Z~@DY8(9_L4v9kcOV&0EGOZq*RZSbgxAN>8F_s3rgX0y6!5W}T>Nz9% z22`PjEjA5AuKa<4=GM>QB5N~bYYR7TA(2vouv`PyMCCMq5~jH;(PeqQGmI{4QmSie z0xcpM9&#kYB=vdl0)Q7-c3laivx5o-EdFa}?{hq>M8D(?058k4odw|QL15m@ z9*D;4&0`5LZX*K!W)KvXpNdn>TfRzVeSzti_ zj8*`zEcncIjg7Y^awI_SlQ+41eX{m6vb8XMErP>#jqq($+Uz!(Du|AdqjaW-&~tyG zDI+9=)^+haCs$MGyNLZC^Z7z(oZ1X^PI#)o{)!5V9&6lRIp ztZ0iCYiXzf|A4e_kUB?n+StU=xsza+I!92fWaW&+v{FA^p>-onHsR}ctjIp98`CuD zJh39HcpWY#32KPEILr4fqz{S({G;n%b@{G90AeN?kS(Si!GYM<6WIC71}RC!P{g+(9nJpF){2mN2pbf^I3Z#{pyL^*13mqM4+UuL`-*NsQPCM&A}F zpfrID+USvy-{F1~yl0BU(|u>Y6=Q>@1%yqfvu3EzaWxUI*S;5s9M?QF>U0L#-`9x2u(sYt zA*f2u{3WqGe<{G_@?iN^`;g>ESt289@vrQWyX(5ReWy4Ul>q&zgw`oB8@?f=m=F zDK+qj51a{_>urJ^2m`bmj2FP<4#Z^v_k3O+wL!a2T77+e@W|esFi1^V1M_|pupb4< za{zu`S_&djpIu)ky*Oau;q-WagMiN|A_BVc&j~1xwyno&Qi)#@nFzwU_>#5Jkb0;} zOF8*DV{#d|c1fjWqzChZh4gb&p<6A4EF)Cj_9@D@?Cp2m`|XS@OFND=&wBfclCf!|6XbI z)f%2x?HoWF&_!JP)8@_!3ZqGwOVNA~i%yQ{u8a!AtBhWSVjMo520dTnPQ4mOVlYYWP_Y9S|yrb8Vjg2D=UNtb0- zTf?hTtA^iAnWZwXm?O(+N%vpQ_^o%ecn$^2tvNW=A_5e+_xARH7lwnI8N`i0>qr0$ zm({SjcXpOQ4N?tm4sLF4UbkI{Oe|Re>>y#toB=NqG#AfGe1aPmpAH!r8DOM~k7?aV z)(6!E3Gb&b;K2tC0(ezOMEt&i7^`RN<4R8$kjK(zj8Vy910@!?0*8lDp2t^V802&r zWAMiyt|M_|18_fKx<*EpK0Z<41jj@m5%x(f%JxfNSy_47a5=QS&yK(sgC`@fbSV%G zLC9fIV@a+O!tcW(nSQv#m^g4p?hYSfbQ0G~mZGEHR822L*8I36{?_#pJYDGJtm zj`8s`K@idIyv<%;E1#p9yVPjoZtr}90{5z?M~h{IGK1Mn5B=_vyo(*}R$G*yv~?w; zJw)XCV9CnIo4znjhDUw9=2gW^(M+RFgFf(J^akNA;r=^M7hk_wKh-;J5(L@9U+KXZ zUs2o4$4Agc3&S$zze%*~8Rq4!xwTcgmDi}ZGap{HzLcI*e~F`IfOZ~H0l5QKSIyz& z!TA5~r$l^XvL8#X5{E42O!g571=+f}+-?`i3dG~b{Wi0oHIj~w%A>1VNy=prrKJEQ zRR1+k&A4dMHn$ih;HVE$!G5x{2r7-z)oHDO@4nY7VIh?#+*nBzNWls*8q_GF+UDJ| z((!H(sXUk+NTKe?R7hc+Xlx#o4=3)7x2s$kZ6f66wl%G=bD&)@s-%y3n&mZHe#^qW zAzGm+zqu1yLYpn8CaJF%qc)HL$=RiYGSy|G-f$T$C(5I)ca#@D*W(on!7tY*W`V}l z3?K$)uaWGS%OEITxt(TD|3La*#c!LL5(ie7PftdNetkdkr|3KuFHnHrl-Ku`>p6zd z%$Jl8MGbe*LgSm@31p2r@2hl}ZfZ*}7=nUW;Aec3ZcNYbZus=V>h@+JRuqdj@0S@E zEDZ6UZF*b8>$6M&3{VVEasJFrkm&Y}*Ov)SjxR={$-vT9-nAA0OftU3iocM?|5H1X z!Ux1m2ksdPDQv105S-g7(1n2B|KvB?jG=#2UxAlBtdLM2mA?Ww1s>!9!%^*BT6{Os zfblK=PFBZ_^*S#)aDk1~u%iXN|B-Ah7-qu2yHx#Y;5)5R*)%}zfd!iL$*R<|EMjiP z|8Dx`D3ZqL7}+xt#w2@*EW(rAsR4QYF4$IzLP1Nahil3ya5pg)D|yEiPihi0YU?Oc zJ|dFSucZg*0Ldo#AUER`;Ky0G`9^EEjMUF8iu%@u5=)ZsdB2$xkB_c*Q=cP|spRWl zQxO)+n=UAaUakZLg&{v+iku^h1D#LHb{+pJmkFW6xOEZOR z@B&~g2yq5`{fJ2pzdLI3mH&>O7{MB@1U(7Vv9iuzXv!d{7Q+QhH8n}R|Bd&tyZsIw z+UzIdG4dz%qxcr|>zi<&o$;L;cr1YWgF`7GPN@h{)`2+<_30>_Ve=Kn3l&&m%RO$D z0ccm1izEmTtkZjex27knt%Y$Dm4weZ)k-<5zoE~HHK~`wOb-vV`w?lP72oL58EaG*)szcH!3lz{9%oetq0I6P;8nDT1DMTLbsXRR5Ywxgk4nZx+Ik=@#?KE>NE z-(;|1OX;}ZXx-8O*SR7gz~^F_EO7WULXmD@N+mOA&VFj|ig1?w@7{$uUBsE|>VC6YIuzPp z6dD5wwag=D;^-&6iJ%ghv~d7=!MX-NN5NsEk(^D!hmipO@p2=Bh}p6I-CNDfDr4A zp`jLd93$xJa)E*GnTmkGzfi*q?86~7scqtKfTvm$bh7fe}WpT`6E z_@M6?YBdDnmL}^6Z~@RIc5x|zK*sn~QP4UhdK-Sr0QJoCg#c!@d+i6LLvRbW5$N3j zG&5$Y5mkBW1>U$3P@d`P>*s;nYGfnM0<;2MV8fh|k;_j`Oq{351iZQ-PYzqK>FXz9 z@P5p?`O4Dq27GHJKf)1dUK!Qe2&Z ziO6Ufb@x9kp%Jd1Y4i2O-Eo?g3xHF2Tcb=EIo3tJa0XBt<$s>Xn zqsWCG2RJN5QqtP*?8nVqtsx`zU`G8%->s&ECA}nvncr`HZH~-nJExc*TA28YNVh>k z#Fbrxkw&ZU@M8PwjVpCX3GsQkaK*vIp}sW~dcbe+uUyUU4`8klSM3Ye_tSx<%rlE# zdmk!_TFLSzZwRGfdToCP=VwEYQsaVX%d{y#&KY%tnOLVf(Lxa5Dv0TM`MT@h&=Bqt zXZ+#T@tW~}6tn!5wXz-G1M+~fH?Qjv#pXF92z2jW`}qm;_u@LIL~ObUu90p#O9pLW zE2uJAr<3UPc4G}S2yuC3-0BeY{r-lnCaNB9n;vRH0QyI(!y8ZnJj71!xUI>nwT^@3 z;@CId6IYg(guiX;UmpF&05XSEX`+Fe@a{Oj${@*brZNQC*@oglH$#fdkgk`hg}(r& z1^5@bE2?!BzdQ>qfK0<4W?^a?7>SR^{`$4j*!O;iEsv+!mYanw;epv%%(F;TiXLX* zx0xS9-!OeC@s>deGL-tNr7+~ZX2*=FvuUt$i(HZ6 zz=Szby<7W+($XlXnShSR^fFD(>>}fvNTYn^RIVn|huv58($OcA01CH$B18ThBAzp8 zU8SdQWpc<#O)ViAAkzplIXsne-=CK&TFh&2ia$QFBi=*PLO3*aaYHe6Kvrpa{&8;E{)c6Jb63%$^-e{YH|!a>>T z+wkVa$NxhA3zvG|#3GzhTH3n5x8y99bgQ&p_}GW*NYQ{GYBzne7?Qc^xw0=>}a z>35|P7W0c_bM{&9^Q5>l#1it&FN_%=*llLBrMY=<*}Mr6Uy;PCNK{h8!?3N!v#gw* zp+Cmx9cIbvYFOUb$cK&1-wAXd6^dRcNis2{~BJF_V zo`Mm?1HX+YWP!+UH_J6zO}^Ks*J03z8f(VK$B)PjkB`UF)G9Fg=zO@)Bw0Ol_0aoH zN=pljBA)}UR5jD=`6C@s#BPCk*2j2|@U~*v`&A6{wyv`zBp5t(gM*lUj4B;V1=H9E zTX3GTKgs2;vwHgbUmf(*r5Ap>`_XuE!{(C=91u<*AC2~IXHHrE>HVtj;hOQvO+@JN z7sS@-?j*#H7^-{*zsF8xjz?l}KpB|p8(tm=bOHo+krxd1uYY}(w>D*K(hYau0#Fk^ z{r*K<_XjZ&+Vygr9SvM;Cqjr?Nhdy6&~br@OtRpkJMcK??(qXH5jz^-%zB~Bp{z4uRy9PlUiWi4vtk3ovY zzvZWnB>qMz6ezycg~NwwaJ#i?)nzVI4TgcaJzfnPvyXigkrFvH+!H@qLP z%W=sIv*8i__x1SsEPwxATrK!udHxgy$e6i^qVwPX`xoeLn9_3C962_o1h)+pKmpFJ zrsVy_7W}0vGY3ah!x^wZ5T6~uYTW}4F|f`9gb^Saavm4D`gDKo1XTA$%9*Pze%D1E zrhz^W`j3g{@y1VS3_zj-5~+7DynnMEx$?_}nOz+&M%YMHYvzN1sQpEmYx6mLn{8p?mPVSWaZQ&3n22JAPmg8}4{VDeXBMZ%)MU`#nADJiLr zkPt`{1d)@C52ljhjX{;o*T}`)nk55=8o-JdycgGUoj<^9pD_hQP~f)#Ndj?GMZam>*wiHVTrEAZuj1sNFafCV>Zk`@^8FYe^nnEG{mo-qP2R1WYpi#+0p zj2zt`evJ6L^_$k2FHs^a=D5!vXw)*4xOs?9K94Yz2A857>m$g)b1S`FiPDy#1CvB^ zPCmfc02oV6rl4sL_ED}rbtz5gG-S>`8RV!zLP08by-X~f!xQlJk~S{&_j^ZMW%+z1 zt`HeE!&n*z%54t-TQQNpc>*aSlu^M=V*wva!rz+^RD3W4xVyTa)miiBG=d;|0>wV;V@IZs z@c6U9x#`TRfqmZ;UT?uqhSm zSStE!|D6yRG06s;06@uJy(>kYmStphzv*pm=_CZOvnR_@zeMMPBSO-lO`1ECGMj1Q z5aohIE@{I2^+-K~`B`zPI3yHc#Rl>5JQ;g>Yd+WMUzo>Oq|+6~Qvq3$QV~Mcu*>YM zuF2*;qmkRyqV6KPIt1+C*f}{RE0=tgyB}{q0u%TuYRNd`IwRLs9@zgS=wlV#n zN^h>H1%bMtw*@N~5C~sd3U>R?=PDQx0eN#FSQZ+PVG^(E0>H}w`s_ED-ojaHCf0Omns|D+ zZzt@RSLe~wb1Cdh`(-Ft9+0SgmMolo6vKrnSS8zxVvQ=ph{vnvf4mY~KE)9^!2#bP zs5K8ep8VR^1peJ>B_7p&%zkh=opm|HFltO1ZD>sHVQT6m8&?TMZ}N{9eEy zhuz=+6cn+7j|h$b{17n~JlGolx&9wX*By^_`~4FSva`u1B-vTnGqOYW-q~c2WK;Iu zBZMMk-XSYHNwW9OCVTzP{rmp)^m<+m_x-s(=Q`(o-b2*QE!DP`vVB^N(9Ky^eJ}Wy z*2wy?&%blCx&PG3eR;4C-?iZgr}lR_sxkEnrS_|R((bj;0BZI3?_qhHXlC@w!eV9Y z3uk!6rTf%#XAXX=HGxA;H^+hI_I`l;%7LNiz=qqhn`MsA-vD3zVGQM46XN$z3lSbwU@4YygkC$z{NQFmKit%pbQX5q?mUXa?!nk( zoOi;@tJM2e2w}(vk|$;dhT&Sq%Sw{(=)NbebEz#Mwi$0#l|b3n-_wJc?U?Fx9z#~A zdlj#5d`Kcb7o2<5zdqr%T)w{;O(uIgpzD$R`_`LFb9G|Hr>wv2fQ2`uT4k_Moawmu zdm|B=qdTy^O;#ii3#wOkzC{;h-74|M>n#Ij{QlS1K=;?I0+bebNo>jVF269^d6d=p zEQHz*WuB<0Ybo){vO4T1*X#cm)z{O?u+Q2@YW+Bh;a90rLD%NE)Ggz9tzQp@jr8=V z2>wcEkm?h%u`0^26`8QIX(OUjR7^8$EwnTR2UU0#L_$yk=7X3-d_<@6Cnh^RL)i;n z>XR3%^eM5FJ%PE~t`T;WvJ4g)z%>naAl)>9AwYIRfcb@T*>L4=pX)I~u3yP@ zF~Ml;RYzXLvNGUXrl@e6=2o6;6%~u&ZHcL}sQZMw(~=B0SGVf74j9D`99vGiIQJgs zHiwV39M?jN%N(ia&LI|4`PP$)QKRI}d=yPK`T zX*8}Q6%7U-xRaBprRrlR>qq*_*tWAL*T!p;=Hcnt*78t6$(nwjABd9MbJ1@)4-N>`2{cMmSjn(I ze&iUo<=4?ST-a>cc}ykd6?f0EA*QiERYyOgNWHSkbB!$HD#O=n-XINOc01B&YzL|wDJP#Enq=JTIiu^z8{c)I`sTmNH)DRO zH-Ry5*wCL^x}_CIE(!9z#0}b0q5yFOpzn#tBey2txQEOKtziuZp)_g76TNVLkU*C} z*tur1$|EL*M_~L-W9m!zicE&eCHF8SEpesS<6g=?FV(!AGP&dYC0mN|8Ji>ly)0W9 zP6jEp~4Qp6kQ@1BM}~Nc}avOMo6z+DJzz`S|v}rTyt~jdAWz*nkZMJ z!e&W;Hsm05qdNFHan7m#qrKL*;QvOxC9h3XU5VD$S50kuOuyN_|L6~x0Wps(71Ca@ zww^B-TY>t!X5@bAkG$@0_Zf?cdaISnN81lk`3%W&b)q7e{=>wSCf7k#R#7o?+H{r( zDR>I?XK(1{GWP3X_U|So<`s3){5emF!Z_Wv|&Bzk< zrP0!&prI_9wa@z?yj^Fref)`|Ww)S=CyF7yejolV*)9PT@atZ~O!JPuiQ0^GnS+H-QJRhJY5n-M?H-pQ z#lxA+-@Ag=(;3BC=gNd*wH(o)@SyV^15=#D=zri~@6eZwwGC!|>dw^Re)+H0n$k*% z)yWwi!ZxAMF5~IEOKrKWaL^|9h+Dr3ah}o$T7{BKumyWrQ^Xhg99}NE*aA%DKM7+v zA=4yUa&nUK3||_W(+1y@SHjzQ2%^(pwnPeAn0L1==T2Pw+laI+D29l7CX6bj34908 zTTYdVZ4;C&xp5X;&5wL^Jn-kLCP02wlI!=j=R`+e7s>?jgZERlT!Zch)b-u19yb%* zr&ouD+?5}SK}ye`fJL@=g?%UPB|^p>0Nkm~cx7udT=Phk@k*DN^mE{9C-X8Q%fwFLkFZpOYWu8*ryYj7cY07SMr=R1NIR;^v8o%Oc?7 ztVib1i2>Q`I;!>NqIJ!G_u@fVcscTRkR~H_6TdkW?Vb^HDDjU99kH8qD{^ge~iEqdRkV3Xbd#(}3m_-S74myB5q9i7jQ zPZb~XdRU+4^*l9|kwBAtN{$ZVV@>7au?=h*&Uqi2P$`sdmxRu;&4TK($M*^jk}MZ2 z@1eO*QPcaUDc)BUXxV+vP71)Z%m|;x1C$s_wFLA(k+!_|mxb!@m#R(jXc3q&(6@-k zDJqpH|B@5d{$}jyo-Tas(7Y2`qAd1h0y9BYE#d0Ot#<6NuYSK2cGd!77KZP_4uf9(*Q3bAKS%#6vO(_}ro=4UXdpL&W58l! zr-*5?>`Kvg&%qNg_P=VOidDpcWGMfprpF_umgyUl6pGRozg>&Ijg0|?7Ch;lKiiawob5C9nvppYU>{;2#r}Gqw&e=L zSaYnV+~u*6CdL*bU~6U=_)+APl!P^OOke5DY%N3c|6)RZ0y0XdJ#lP*F;b;0AofX!78Qi+8AlJrelF<#1AtTx3^;b=AakR|LFJ335x4CAA5dFOnLu%L9 z+2dn}2T?0b%XLe}?5YEIX&^W^7gC+i+GsB&VX?6<5<7zkEgUd8zOP`0F3e>E*%?~D zpn6c~#uL6MXxr?xp2@()lh8KWnkX+bYq7UkyhzJXteh*-d%(q`vGTjO0Ga_T${zs}4jvL0_(S}R`=$y` zN03g6G~|HpUgU6qH^j6DdL)-cHZQs>K?29pvCxJdz|>PLQGVL+f&UTc(qm?iYdOm{ z|BNN=kH_vg@UE~WQURrRF^aoFKU;icD;=jbrze%Qmr_jvl64Vj=P*5q_z&= zj?IO(O1-r>S-FcwMDYj2@7U>=&O5jTys@b;FWz+Jr`zYb@a5C2(rndB48-Zhn2oDiOu z3fwZ!o$tpNQw&jilT!5QszwwA|9IpWElWfmrGrm*PG{wO({UN;*Cl>zE}o+E>(j@N z1Za0Rz9_Uhu_W*3UCcLe1nnL^fgj-(QdO?@HEzlWSE7nF!Gm0ipV58~UiP+U5851OokKCHvT8c5I_ zTrZQVndq$Z3CSPYQ@c+}@u1r2gl6`*t{#|Js$7r7Zdb@6vs5Ztky`%B%n ze3ax(DG>)xViH-INus-!uO2IR@C`Ci;3t%2`!Itt{XNh$rZCwlz)zU z`K{~k6R(!wV#@U}#Xc@Tj^t9hd?_;8`}zn~#r9cqcK52p&spcL|2XAqu)#TYYOHt% zKT|q7YDocWQb@k9gljah#*{r~das(IBjauE%49Sz2d*FQZVB=05S&=zD96q?N)ao| zB|ny8pz&Te6+06MOikP9{q=_dumQc#hR-kiuF7qADy+?qsEsbbrO+S5P=52Mw0YX) z_gA;BTC%^$)`wSYeqCb;%t8ii0U@j$kcvBYVweS;m4Y~-N|wyo(L!bPv^S^SXI;jZ zva4ikX#N#W^yOGFmb@auZx~(zj?ARxP6@3IRF&QcGjK{fJM;EXQeys%7;D~nl_lg4 zoPpp{Y>vGj)QJ$DmAH^k@3ECuFt-ckLp8sQ?ZRXG{m8V5sbdP5?!Xa^SwcG9K|G{P z;V?nUn_}S5yp4_RrYqxteI^{P>Mvg*@SxWExuz|!i*F1 z_V@41Aj^`Gd%M8CM{n>V>t5qimn&2U?NvPl9b2~lc^ zW4W~03ow?GX`t)+^h`?&fMvLo*IqZEJFKGImsT%g%Kw`YSq70*VNCcUHliVHNh-qG zk}3D?r`oE|LxRE`u;<6&Fg=iFjFJ+&?xyWSxrz#qH6(E0c9*-g84RC$5kvXR-6 zesf?PkkfxylSYyF`c`|K5{LW)W5r{H!_?MfEz88*t!)nsh};AgP?1!SoPVM_Tzz#M z?1ZAZu*t&i_~|wH(nz|G4{ThaY2x8^i-GP3r-LrF|8rG~oKSAz+%}90f}T56W5$7^ zWo5sB3*(9cx_?Z(gr>_F~EIa;P(UM}iYqD-n%dA%W|e zO>G)Ewe;}g+hc{pJA2nBUsL6Cy|Th-PI=;)3d`B5%L*O}M^)ta7W_wn#_^P1h9{xt zcCY{YICr*ZG7|IhX!-Kw669wE3DFGv0-KuU(oAAGD@fFPQy0l)cMuujYh2BEnU*mt zDVA&PR;U74ug*sT*}I>#pOJ@_j8vrsreQw8{5wFp$A;68Xp}Mf6lh6+f`xeV|x$du=G!+R-uQqUDqmyhCUAQN<<7M@>uv zw7+B&5-`?n_giS(a=#F@(0%vNBm(nJa0C|?8n1lRo`JF8Lm5K#Ei;n4vA4}$ewB>K z#i-r;vlKj0sl!!t=Qe)7>*?;z)ky-Hh}Tuk4gT_Z-B3t9YL~&BshwSvQKdXvGHmaO zrs}-GBCTIpV5SoWIP0?>c`>j#1HQA!P)9Yp%&T)qnT-sDF+B9i|6?-&(Q*cB7->t_Qk|bqgy2uhtycfKGgE}l2(5x+rvB-iPb3W zTuvj;M?Oa|W;))PQKe5^LsHVj{4-n|2QH^ADQh1S|NmPI2F_kf0xgo4j;1N@!h^y1 z(?dv6%)tRekr_y<)=!jH{ z9forH1^LnUudlPhLF2}9Hca&s>6e4&`mwLl+jk?|x(zYX z`8vyc`O-2y!Bla1`TubWwsVDE4Ca~n9)DW$vdNGFXf&Ijd(eHL@vU`k{F?%>qY_0S zPhf%_AfSk#RM2~58WY1#(DUrsGr+K++e0xmegRH%XL`i40E$p`E8G&9vQ9<4HEa?? z5nAvnYly6Og~ujClE6zaCVUg?@x!SN=rq>#4bMe09V?YVOgOg7CEyz$&^i>)7!IG0 z7LlJB)?34HJAB#TyTA)m&#!f~^sS2_^pm@R2 zYISl$e*4sO`_#~4>~n(WC^xe*} z+0gE@WFyHpTA3t;V9ly3ZqSGHT54>~)dUMP?`Ni^rG2Y&05}--^f2%>1CSP{m=2WU z{5YssV4!;^gj=PpXl^sEe}$D8OXQ#jY5W7$ctB%r|IQ;9Jcn#?;iN~tE&kaVgLHfg zJQN7*K!)%E5g7@E2DE~1>-1Dmo$2QYvYCg^P76Yt6_U!psp!>7x5pLVZ(i&d2;OlG z^+PjTwL)+-t6&rWyRdx+JIMk(8NQ@oD9VMIc7Dka4C>W$rPn6D?>H=X=bh9DvAbbf zba@%a^y|wwu78OXF9~Eq^6`6Q2t$IDhN@lIqd_I_x|Z!}_Ff5;h7gaKI|!sJ;Fn;h zat!bO+h@#GtZE0^DHuXo@I3GnXG-m#7o^EqGa-La!1}G43jL1#o)A@cyNk@TuT$HL z?6`9oFgTTXJnPV4(wHh!D9E%X#p?eTJC%cD{V;95Ut^IPrfoGhgqa{IK9b z<7S)Y!tt9c(sH^hi;~<&P-}(S!IeO|rC|DzjkzUvuWZInH=49I zAtDpA!c#c?CUBXNHfT>VV83Q+AlR|@80{07g_z-R3OLO4 zp4l|&hAka0FBt_T<>IhB?aD~*HD8fEjjTFwLo$G99z)xjQhTHYx=(H36CmIJc=5B& zTo_-ZN4dcaH_Y@`y}jZJRy?!I{7)364ij_pV7uDB1yl@>z2Ru}!}yb_qk@Fc|`c zfBsZ6a{}DHRu5Mp0cq6+KqZ(QV8VRpeE?>X)j%uiv@8Q}@xYq^8lQD~Vp&r=#i#ms z|I#s{e@Nv!hu&<%4EJJ5HsLi(@pa&K^NTnOTaURD1atGy$AJUgS$8eZ7bor~12F>Q z|B+%3+|I*RWJ)1GiN}eTLFShxH!1QqPmZDJMZ%~vB@yl}%0`V+5o3rMr494LAQPr&>g zz-&QL(fgTCiVVtr+CSd&qRPYR%sM1kxx2#k{Erm(>Gas#wnsR{)>`F$ogOs}?gv$? zZ_Tsc3~tGdo(^2h?NU@HO>Z8N=aMJqZq~OPJ<^C=#=qK$7`i&V_Zf_S^giXWLSjS3 z)CyHqS=p(d7#<$pd#SNXfI?wAq6= zy)7?Su28morlaD?op8p6ESht2Dk@r+jfrOsRCvf#kl9%dk4!n{#P;HH!E6r$yeCNa zHhtrzl@~@#*@E=sIIiwq5`4rKo}Q`WPm`XyhbXau$-IfXJ8=iWjuJ~G;~#BpAt9mf z3(g6HSjj+)llA1vQzKxBC|>q;Qd zhKUDcunS&%TTG9GD|O$H)b#&lL_yd4gwBe(@advw^ZCk)rTANyXkiBpe~#8R#53Kp zVp{@Z#Z-M+56`?e>tFlL(DejpdzQ^UgtU&PwI5^tfoTwW^|^9UUI z$w)w8__z41iG1o{*p83lpYI0^{H*+AXWtKUmgZcqU5lcIi1NmW4nG-H#_snj0FRj> zH*0>9<;4Ty1DmEd-7D{BY!9Yao{3yclVF|UK=e1?Cdu*fvDbETs*s@HH`=c!VwEB{ z1zZ1(PfXC0MlT%t0uMP$$So}PdL9){f)Y>qJP>CL8eK!B@}UMH>#TNt|NcIAkc5OC zN2XyfIQqc%0u$Ni341DPYHnU$FiZIgx%J3D<1YNj`ZZA`8XO;{M1|{LbEgQ^tE#T{ z#n{Y}02Vl=TzxCmI`vw_Wus;89mB7(Jq)SlaXa#c?dM&5!BOj1o-Y@9&zUkWU3niD z_AmGIV3e@)&+J#r5o`aXR9fI^fhOF-w<^FjKzc z5ffZ!8{p=V!^fp&ibv!8)f6djX208c4G_m1&pTas82#i{iv9h)GCyk?8%lj?y zL8zsQ85~517ar`k#!pU7Qos!<@2!LF?SwSB`uz3OG~0*IT2ILu54J3K9B04N?h#UA zS)yG!77Vk7U*Lb9c!i{H&;G&NkVydV#U8n8ctni`#YUA?b#-z;YZ)dzU&dccBbj#O zl$Y=Rdb${G&>D~pBNAA<`1<++0BFnasED5SSX!#&bqF;C6WG-+HtAUjC=8j11 z6J-$^0h-C~4IC~cOb5Aa?(Tf{JucB_3dDck3DeZCYd-EzE?yci;fmV~w0cg2sV_vJ zyJg<-L3~|9OU(D`mV0WV5dt?XXo@yT_v0Mr9}NGX*HkQjkI;D-Ls4d|P_>?0eDnML zwe9lB^Q^q7Z8NO+G~JIg$DbLg;wI83EG&vERIPFsT_swl0=CY(0|YdG4^hl4#OF;5 z1T_3!E}ZO%wW?Fi>G7+RVc(hCaDTs;RBZcYvVDAZ!5KV38jgEMX)o_D?%Q7;D*jZ> zVHauiFVOdEuoxz7s~fg4DN8^Jk)l`ZDj=8CcucGX=~@MLSe$+v-kOHye8TO&`gm@3 z<}UR`!~}?z7G*waR{*x@wbNH4BPRvY3eb+A-|RYF^5*y-^Y9~75EFTN50_4SddOU1 zM*C^=`}0fTe2I`t+Z1Sc;gta{@>*_Sj=S*v?83MCXqzTn^Lu*)^;3|nN#WXf8(b+g zN(VM8TYo&+{n`N>iK~`4olj$%zZ80jvAA)W0L}N_FAuyf6%EkQ@w@9~=a~l}YlmY! zAaF<<&eg$8v*~;T267z0UG9W;ko$umu3^Tp(W4fDc*ewlv#qSf`sxG9v}5$^!=FAs z22IxUcnN%>4u0J_k4?%GrzHuq(+ey06(I6OCl`9>H3iqUN~8AFru)8^NW0E0 zvBc60itRPaHRhu~9n3W>!Pt8`=$Bq$58f1gUqbo2KPUd=$-~9Pj!m2{lRar3ljqHU zd#7-u*B#2s!py#z{0y{zf_r`tqA(y|AK7I#ZqE-V5e{B+vnbqO*QmKe*52+H180*% zIph&zjvj@XEGTq}14SDDwaz_E5z|B^!JV<{*gWRu73kKnCl2J2fQfB=IihCM`e`xI z$6N?@J$*fqF1TTVmD}H2dHwDt47NP%{OzC#d}oy%S>=*3DBPt%Q(|bp^luqNlkYT2 z>6ldH3(#&CsFzQX%oRz{N${jI5o7hf-lWu{12$NW{|*+sDZM)Hz_!MGmGUR0zXyQgEQ4!ehCbU7{#VKgwu3 z9_|j{>rY1c?Rd}eq=UVC>wp@kb8DwC_Qt|npF$+*jUUhHt=Rv3$zxp7PiR$euks$7 z)GVF$uK8~r9S@9MbqepP$#fdKre4*7b3ix;AU+2zIK?{u8 z#NM9PQNDL@Me?=kzq<7`0RPY}I;4Y9NwvFF>t3uDyAixgj?)b>Gx>z?!cKQiS~|qf z+I9v=tC#{&aA-9dm>{0)6AE=jfRn4Grtkq}!Dw=C9FVWv3=#cOiCvir_!q6chy-<_B z+hM=gd+U;dZzUXkUS5@*#^H4W3lX(C+phbhhDOz>-S9?T*qGx6kFGKueqF>^UCT@^_kl+lf~|K%T=>u~9=}%+$p;CHMSqstaQK-xFn@TCCDUBE_@Y;umh>{jT*VFP*hWMwz^^BR@UF)j6CR5$!Zf{?V z{_z~)=3sA6ZpCjyjtkCM&*Jh$;TNw!L>bmdIpu;Wk1FScLq{hMqK zzwawyx~F#YH`4X90cT+6^$^$maLhh!oqwzuRv_#5C3M`fvce7Frea7O&L}IuS&h5KB>tJ#} znF3R+ZLQrnHD$6!kmIMm^`~g9#$JnIQedY0C8@w(plhI_V<9f+E?xZ7r$h-rCFdC!_M>gao6!I$FPlNjtCNr=+FAK{RILe`4LyYbI&SsC(Yl4cIEQr zOlCXSnhr;FnI-kLlYE#UW|Jt^e>=2hzB$X^B0->~bq75dV0s=(5@ja9AR2m?4^OWG zs8r}bn~b^Z&EP#>BC?;IVj#y{bZxZZ(}P$SDm*g0aF7;5R0{c#PoiQG6Upaue{~vr z{wWy-`sy<(vD|Q}e5R!2FcmJxdi`@k?E3|`8vXE;N7wPs#~nO$%}8*~`ndF8*wj)s z7|=jnd7DJ- zRkl$*Y80DjeCGBabL#n~8M&I_Z%g|l8+B^x7E9?9kz4y-TuI^Rdsb`JXNK$le8&0S zJ!O)rAE8ZYnBsfl@PobbGvem8jo_R9C6Hy^Zk>xATI*PG-M{jjgV8EFu{qd3h1ALg zL6wz7#mz6Q2*#Qhv!sD1yI1&L1}YrlZb5dnIH7~8#ZEDS@* zgr7Cg8WdK?*9E~jR*AWz(QOUr`QU{@EW6NrGP`snU<9{OU0oe`lSq!e0v&u*!Bgxu zKto|5o0^(J!lz2i&_4jbv#*PA?sQWdqb9VA7DIJArvA%k8$kY;nY%lKZ0z5{9vSTG zu>J$oyt4Tmoz}P+38lkO2jY}wy|&#GBCJpg=gpIgWt9Uu z%(CJUH002frKiHvs1&fYq)S%hBBUnKo0G zYmt_dM*Kr%2I)I-)r|2rCYGBbw^)a5fy(OhRe*6oF2G&3{F(4HkPGhov(&kJtmKyx2Uy zJ$#YFYtPRurpcD70%R+z&*TbzUbO%ZVzK@w#6OOmw95js#x#RP}m7D zdx!{mPjBbiPM?d2IsG_2^!h>%&P)M2Zz~(W+oAuJ4=yiYg^&2)yD7Q}?`y=2W0S*O z_oikJlt37VaU{Oc7HB?LqU5jg_7{Wui+rYZlsq#l57yKVUtpr$2Id5MFio2YdC7!9ivs4h>ljmUOlZ2oPqjYmqwd76#iR1!451#5wE@1VBccEL3Xk`$3hwn6tLbO zJN(dBf{Qym>|s7-e%16A1k#18!6o>Gk#{J(vM&OzImMGNnnSx{@2QT)kmsiJN_CiM zv#;Jk3sDPTh&KU8-U@4AH^D0!U|eCtdFvLxgo2EuW-Bd0k(!&z?+tgn?%0qNmmj`rlD&F1`_lau8mp$Zi@*C0YY#WFC0*4_#6P(z>l&VE%l@k z2mzm4hn9a6f8)|Ghm^Nl-)dhnJV&~pWUC03-@}S{jDWvHMO78$Zs$OrWz$*Ogvg$A z%V8us%gE<%S-v|*J_ll|Kjt%9Gk5#(JNyRZcVBwMXX-YB6HMRFfuDo+P#%^bWN7r8 zCho|qY)3?JP|zINdyPl=FFmL@7MkxxcZI0b49N>;TiM&=z?lWk=qD`(vD7;GZ;Z2ehXCwoP%Y2N`(x=F#Eb=t>u`%@5cf3sBZsPR0iK z0+`U$B91K0Mi_9I>!*q}IdC50qYsH)uycysP;nrFPk-}G7=%6L0vk$qU+RO2=T%$k zY)eNzF6$X;C3?C`fSi0NQ*1V}_OXhB2W`)P4~P)tOnj68D}ti}jMNa?0HGl;`2je; z55b)YO3d)}{yR6^m?_^Bj+A)=Gr8N+cU-`oU<)&i@QgJ+-wfO>og90_&Yn|n>+ld# zVu-&*M-w|@R|_Q^Ex0Y;Cpj0?Bx9+{@n=t&+F>7G?>N)G?ZGQ5I`~Pyepv~Y)J)`f zJq|H441VVuB|IH}PrA;{_%pk9PoB-qw5bKYP$zB-J6q4#+}J3k3WNbKD<`M#8|qWH zQ&1Et7X313M&09j#?SjIaVV24;LE?OU@qF-;T=oEu_ET0Mh<&3xVU=bO687inC;N9`Ok;{wbPajoZ;=H~XWC zpF4a2BH8e7=t;c{o!FBOpZnAq4m=vVFtYIHgL$|>1T zMo_(DkB%Py$kAVV==Al+mO++lqf+Zs;oL^lki>JF-+uwu;t~)K9;PM0!wA*=?mTn+ zPGHvLaFzMt!-p_ni=D4Ce*fMXiOho2VPD+$TDGQ+?QRUbY3ccm{hwJ?+Gnwkni1Vg zFd!0>^sPYNY$})z0AUy=_AK$h9C(jauS$)*?T%frv7@`a?L2-=H2w#QRHUUs`F)E+ z*vJ8?8onmkIq)F^co}?$<0bJBVgMn5%N_tZaErs+2+dbt9yd7hl#ec+o|5Md$&1iH zdsht#pc#ZGTo=`czqxRB=30k9Xp|hq%B>1gMA%tWRadtU58nkjyuE|N-FrkDiDhMg zA%LAnK2&LJ1oQnW2fn zh$I5nfuN2BV5mSKK$VWY;Ne!>p!9-snqz%*#ni?LPTwe&HK59amOyNPP32{Pcv%@C zCfd(e**?$QTUAw6-QaX6etJh*_4Fz~+ZeBwo(D&}H$droBhMArGR<~5pn{%*e zRsz@>A;SPj2LORXB8NC*6^4ZxrIFsh150^FC=9O3Tn+`G^l0?fcfcn5$N*z%oL;^EI0tNw+~ zFa4v=J&4f_4i4__i?EV-#+(SkivExADM4~X0keLlP>~LCT>y~E;PgQ%D`)dRLIJ1Q zq#?K6S$LEzbhmrcd99(QRSWfrr~~xm)jXSDlyk^UAH_2I`PQ`KiM3;(yYd*HJJ_+P zu`<0eZH@t3MHcqewA2mDdyz8B!XEi*CS2rzJQd-5Xw#?*xlUXqjO6=c6prD~)t1X^~{-m#SjTicIKb+V?WZVqM3AqIuco zyL%TC?G`;XL@0clouxT<9@JFF`D!Gv;hv%LOou>4_1)5b)9K#T$?31dA$2wqE_C=j zPsDO#U8_2OYi5DuwBo~CRb|(cW9Fg^L5lIIDRWqSAbpTWlsw3(u>D-O*~*_;vnFGQ zT#6A!hKQ(h2Upp?HQ{e;-fPE3_GIu?CW7lC{-KEk-FhlvI&|hu_hmfsKs^j8&}o9w)j&HHwWo1*5jSM7f39m2nE#Lz>T-W>?&KgoIR@ zIld=Bx6sFBleQTHJvTB3zA=lqSjW&%dW6qzl&8@E5AH4SL#K&N9JDGD@&S+}TjiO# z%ZNoAj#8r(X?O?yOa@dASpOA4(02V4xC0mTewa$0Y@++)q5p}LU)dU1T~G|ctrLKM zgy$|HR%lq1QNh=jRuZp?8M%)D0q2AsNrznySSav>peIWcD`RnpA;CpQy&d$;Jbky2 zCoRmBAi7JYX58c(pqfz(Z#Q2Vrdqyov;V$(@|-oIio1qSjGLSOSvg!+{8o=Caogir zyIhs|tLKzFzWzh3k}0D|^b?)!T^ZLomcJ*jb7paNxc;ydTa zC3860Wz5s*Mm`(&XV0#7`;CHEl4Yxu=3Nd;uK#g5du+cI)a5!4kwU>bqbkxsDd`BC z+Ah|6v~=PH1u`ouOO184$OHgws6?N?G`%q;2RsX$xiDHeC8~gA;e^C4ls&nG9{0$LBi~}wLgDc#*exw3+3cwn6*A>7af_xdoknK zzcuDq4~|P6MbA>ln*wQLyMqCFIXz8-82gb8;+k$e3^+U<`hxT@T#4nfP~koQq-{w6 z;}$>FimMP69!C7rkb44-1ej7YL5`g@WJH!ij zPrjPO2;T+~3!`nq8iM| z%p}r|>yV(tL5JLWuVy1Cbs+AYn3(AP-k@ZTr9ASKiBL&ZHTv5YHdv}r;GiQRc1MAt z|8k0LHD8k0^JnVpQt>;ZC@Hea++fydmEB_n2LuEh0Iy>Kpvj2f9JPbb?C)W7gtX z@a!1Yj`}I(;>8hHiY~5mwD!BuR%ci-l4Gi~zxerzI($a9NUweUAMjztE6=>s?QG|6 zu1}D#PPU2&&BDQ`U9APL2_NOk%apYWz=u;x%+{!Jecu6?3_}1^Iw0M^j~AByCR^2M z&WwwEe%~uCBcnj?~#GXbfa_1Sy`V;pz`#$3I9`!;T94QLZ3+T|`@UOnd%HE`FP)=VJR)UaLv z6c3ubJ)h7xX?D^jxHaKNh8A^vdO8W$IA0ADG4o@mLXC~*K5K2hS_s4;WM$ndIO`+U z;xcrAIhPy<{g=qhKTFZT>#td!{56xBY_fcmT}%6W``xsFJF*DJBMhe<1pw@aS^?@6 zxSOqfeKUcNihl|FIv`-d2dB}0^24eIIZPJhf|VE$nt{OxYmZ(F9#=6Tava#^^?{gc z;{^8{ot?8%qjD_Vt!yWsTk`F79!rhe^EI8MV%*7htIi1FQxPNh=K!d;R}mSr(bOa% zOJVkD@75Bt|A`IM!T;jVc_FM z$ab%L=rwGaHP2>oR%n;Qo!Lli=5Zp=aM!j8_{c7e2ABVGYcvjJM18KC&&9y)1Eqb$Z00+F!t69_bVPu0KwtN5L%5@7OD4}B|<1nDh9Wsa2eRpmD zN`X;j|0~5BV&98nhk%XLfXGY%Cy*L}hdQJXO^{o%X}*hzIoLt$BF&@W&4PFRAcT$> zOP!V288M^r@Cg;3Ir(>K^#m!&iu+A7jxZSxzcS2010)Ihis@28MGl8xJwTKAw6wt`&rdQFBU^6+0UQ$v5TnO8b@F9O3 z9Ppgf@5T>BF^fPWEJ#j>tH6J6MKK=yYY64Tw{~~k0+y(Nv1)vu@Q%WBZ)I-ySKd#2 zd|sYfH4*A~nm4w#*!8TS(UFPm(}{|Tit_}umk5o0hN0DEQ^hZvKj68z2>m;hBsX{0 z9?;kT&W3jt0QFV6aM;AsAsd#lJn?4WYO4J#X*9F8jE~4gkm^_WsY!OcPC<%w!nz)Mrp{oL;7Rg5>rH=8#Wr@?It>#?k(v(5Fg@aW*rU6{l|pmaq1 zFl6+&_%zcX5D0wyW5&Cev$whLDOU#AW@2pCUGc47 z;N#)h@KJ&WGbKAaJKrtdUq{crf8Y?_GI-;_^+4vu-=C-Sl<)e4RzQnhrIWPz4PYOz zv4t*e;;6i`1xtcI6B>oYr%a!xwvp?7;BQf9!Jh>3K>W*6D6cx~%=glvY@7nsM4dPk z34y>2Jt4V$cosIH69LEeE~d7&pqN<7I}Iz{v7{`%c3_#$MUG|y9SFYoB|+ub!?6`=JPehRM8B4vr}o6*9bMPgG|fh; z?tUi-PDR`;&mBG?R~QHw7%4Zx>iiw+6OpQ$&H|)d%Q4*0 zJ*-~;pp%6dYvHJgd;OQ)W4M6OZlkb~3||Te@WQ8OOzwkNEs2BE5EHJR4O=|8LJjNV zRanxqDA%s99sw)|L=-^-mA;ilXaB|?IC$_?m=#5hZQd6qgi~5wQ`0>#fJ0f(4x-1Hsc_Fd3CIY;O&c8s1_of(5DFP5la-U= z;l66`1eZg<@pUzE2skXdQXdwj8YRs9>9rtK9>ENidd+%MqVWK#)yl_Bs4PIOfY(ec zH}xPHehE7xp7f-dUyzrhMRs3DSshr~oo4EHKTxaSoOcvAqU?KRDG5J7)cK3iA`nwt z>)^Bj@S}y9UluaEQb_0rOv&CrjcN41;IG-YMGr=qI@v|$f!ft#!LnGTUQ{HKl>jGf z<*O^$Rl*hA(IHK`N(M})cwFbzNP|MQa}v176BC!DcDUygGk&nJ$RAiJX=(MXu)#`= ziZ&Y=MFhAMv{XLLeIQK&*S)3Xe@LwV_?Tm31Sge4tfTejPdz|L(=BePFcE+y z)`QgYPHXG*Tw|tqMGf{O%n)gae1wz#S8Zu*!5KI7uPhgDO&yFK@9qgSI4``(di>{A z{)xzwCqSQCNmLcfAGN!qFwpXOL|;b-E&&+lk#@7z*77maY1!SYO-_PTtMl^`I)i6^ z&}4w+1*+oZ=2FB*rJ3 zo;7N=FYR-|h0T_nH{%G}vu@*yhk+DY!HT6y!21|2f8l*KnhGCe*{uY2pRP-juioUp zUawZY4>JN^<|}5FlCBS#V=QZ-u`w}#e?w_;&+9M904yH(Q%IQZ;fspB`8Je*)?8;g z)-Daj`|8E@PdX$1Y)=V*ToxDx>XiaO#uK?IB7+{Qa~IzgCfeU>{S*HXfC_`kd_Q~F zFWgHc1|C9r;CI52&!0~dd!E;rw_Z41N19Sb&NbHG=Xn#7=7|#)dhEtZ$egY;au25` zJBNoP*HT!FQPi#V;?D_GRgpR0ixWXaK#tS(W*}^Czr)cvDke`Y)wBaADp)_3YK9FD zyJ%`9FVU>(E&l$UG;oP5jP?3fPB2BEwmHtV&7>*3)cC?aBEZjMU8Kxw5-fr$nW9J+djyThjXY{~Bt zgP_NODHyKpS?@J!Bd>-3;GTc~Os#S(anO>5g#{#m@G_vl?M_8QLx>f5^a}t~BsFn= zzsleqEydl*iP*C6348vt4B(dmOf)lNXyktcZyL{vD@E=Q%UFYQQH=y0QjHIrF=X>0RsV!SmYkXdPERh*uYu?UD>9&AGSX}WgZ_S?dDT{hZf%d{5q zH$5WR>x{|?@i5Y(hdwuYM}uF~j?qPD+mAJIp0kO*kZwkMkDGUs|!O@dAB?i zgnVtXH}{~ieK}UKf6!lvsrxI802eM6Dk`!0#V*{K7<>xq3i?>+%2i4zXi170@M*UC z6}$R5Ta|c{7q{!@R@1F>B(=1fW-9CpV2DTd85^UyzIMmY;c}p*2C)C?y7h)7tavJP z@%P`1BxkDJj77kNfZoN{p;V=DmysKus<0?`1_MIYP3mod8Y>q?F6`vow$DqD8w3d5 zfTrzc(fE>iji0~ALItLO7zsf6cAF0I3g-In5|Byv6GoQ80q9nGE%aE$9{*)6W3BlC zY=Fi_1$bXQJV>>)iZYTPv@aa_Sl;=Q^n*{U1$sCjVZ_ahtm0HvY*NwE_S4l@)dP_5Bc;sLrJt*ovCg2w4!3VLGh_w03W8QH@m^C%O%<_Pm|jwFdU|=2+$P z(xlH*+0dEm9iao}@q_)z_W5435R$$~X5SJdi<#j zmPJIhU+UR}5VU*|Z$lbgj))fb1J$7MK3O#)0BPT z8F)y055(NaFSc=PBOTeuOTdl+?sRxXCI+eQ-Ah$whs_}?-`OR2P%|f@5-}YbJjKO2I{ZeHnLP;%m_*ciL zzebCbOVmHHeKq;((Ynb^1OS&(@m$cVL1lM=hX(Z;*2Napx`0!|{Xfx2u``1RA1oGS z)=!5`GTLp|-z?cGfG?$|rNs>@tyK3M3o9=$f2pfGj%caQL>ld_trcm$7xMH22$y$4 zyIz`=Y89w);Uo4Ygy_Uwekh2Mpzf8Fz8CzN->NzxwBc zDoo8?jTSeAWwhgXPOPBhoj(JCyn-f<7|!`}fPzkPuVInGd$Py}%J zvaQu14EKEqd(Dw02s$z`;%)*dCW!X4pK0s|``>gW#V7>K6uNCc-ID{Hkn23CfNc_( zg+NHkD=Yhg&W`JF8@Euk)rkNTL(tE;=kGb2r_)?=JACADkey{i&l(3~?)TI;lJ@+# zsn3!M*4D_N62R&QfIiNaQy6yy`iH>R+SL{0x675++pRahw=wbj#|Kp@24i(AfBcHM|x(kIfTjcD9Y-N;Wo;@NbGCoMM5`X0iqNn&oCi&Vdmq%xe&FL2!=`njQhLGSKaT_3= zBg_PPv#tBxPS3Iba5|byeEvAs?RdkRqM=*^Np`O_Qa}{gV#~rJqfagGmiuk7v@^W| z!NlWf#-i#2?%}O3c3YKp>ISg5hbs)nwf=P)+nw8MUuq1~Y{i@X)(ZkFZCX;!8@ui^ zwzjIhCw2(DynGXDp0iwj5u>obbJ)ma-g~374PlsJ&bMM|6{)Q zgm+<-1Q)^hIx3hr_sy{kNXO+JCF-m=(cnepO~COL{8gnxx~q%vMlP+}RVC;~;9)=y z3qaX(mB6?-HjuCV=In)Q2dWYYoE9a z^Ewft27kWd%d>aFVH>|h?a!6h)s}7E_3!$@?F{*o0(!&{=JItidDQaF-|2XuH?=8 zI!-CVtxK3XcU?#ZbNYrxLx%eBJaepOT2F58U^!G`vB+l9-|;smSG+(p0cH&Smg&5{ zC*{1DUuLWoLD>kchYx0pds__e4vieKotS90+a$=$!()TASa0pGTKL75;GX z*?~0y@nyx67n*JLSkW7vFoKTyZJC0~ipg~?LOUW(@s>1FuDwRVQ+n4UxZ?$W^CDo&~3}`^8m8JC^g)81*X0c$IzQ1Y7j9EM-VA4{;L`r{Es>6jo*&=v-k5?fph`^ z!LDEW?mB>*r=yve>Wyo}rmu*{Gw!6cIJldZA4%+GHu(44Nd_1J=wP^Yi?~EbIygY% zEU7OqCdT$s$M^4_Yig)5NISm#G)4XGZQ}I${U*~s@>>{ z1cyAVgOjRyZXlZ8Dqd-O?)Gi%;+oQHzSuXqg7vU2wRrxjW6@b{y#c@F!0n&x@y3xq z?AQ(CA+>n5QHYF50|5P9z=4;j)r3oh=jNc4GmI&HeX_F2+L~zCwF3bOpap3w6%@n+^W^&IbM`kCA30W26l;0A1O$wlcII}D~sfLMuhzo8k2g?Kl$ z)bJ$|*I#Iy@CJUY&B0rdAJ_%ZAx~vSqZ=H{+S_i)^V$H-c0Kd2x}5xcm;+yoI70KV z##Fb=1g;t29Uul5pjN&#U3*gDpupoW9*k#z zo6t~Y1wiGd3x;TGLg|gM(^*?BU4u$!^@^Tm(n1s zdYWLzGU~-RvCL5BIClOt3-Pgsec#Z>l>6trV&4xsu5^UF64t-Pvc>u`s)=Eju6pml zXS)W?m?cETE657TDG!v}Lj?lVYE2+*R?`)Xn!xn{`QnQffI<#dY-E?B`uR9ZV4OhD z2HVjH-u91p z^SlPp<{6c1<+6?{5o`qNdJ%D5cZuL9pp{89D!M6e0l|cvejD3pu?+}kg zT|uzeTl7E8c>SjvhOij#{``E#qG^+NE3IManFc|QWzm)|pW2ruy?*s*L46M$-Hc>s z$kUiSWF2lqs*F z={J3slGs&IR(3;z!y3L?z$U2B1+)UN?9uwk6D?Wm#H<4wd~3Y;-EyzB?2o!YFoy!T z46+<4|D7)Xzc$sWQ~pKsT)soX(t&Gc|KiGny1fVcAlp1Hc-g2@tW}!7597Q z5U{Yd$anfetBua!uWABN5!(f0yHDXaYM{+&5Sm$+HtxhZ=5+mPPz;-5^A46ou=jNp zfI>r6?`BGhw1V7?3PY=@NqXq549|D2PM!w%1?Vb!TD#q2X`ms&l-+;;U?U^I`~V_= zB^Az>WKi}DJ>)ObzC~RZe!itnZ!tlGACa60&|J{~dP=-0LUyfDDH(G2Nw8CSsB=isG(9&JfY`Kffk~6S5zMtQW<|k;!?&_dr@Wg1A+^=BXRwp) zkyt#p$Ko#=OUn~!U4&GHt$X)QF5Xz#W}jOZ9dS%HF8HfCHoQ?0iF5@;*>Zcp)RJHN zrs{uqj`?irp~Bd{GP41POqzJc9HT3q>7gqZCMxds?Wj{HZd^fM`S+d(QchX@FZ0R$ zru*10TQ9bQIx**yAGv!a65`ZnY-jY`LNNG{Vbb5H5kD47D=2f?v5BZ>{$$(jktM$b zWV^W9mAwAAtF@p%bIEIi$5RpXcH=UFF3`93W*s$m)d_N)(A(p5g^E65YMbmiTJk5! zOH1vNBY-5sOM-P|34G<$wXO>ba4R%GC5BJlPFSp8;4B9R7-Xr;ZK2#q-0f%!ViKf@ zB^7W)VqdA{wG0h$gPaDIBFH8`azHip^>Ki0RKHi8mjyYCg|Q38P`L*pt;(vcWmS1}5tdxmRJjQ~^mm(a+u&wS{EeSwL=#4!S?-|DC3!(B0 zk~XACz!&f}_{P;9v0mdu_`5K8``9p4rS>COx9*)8PFNIjO%fVsUFl6Lb4vxaX6-ob zwx0je7^Tv3h@L)J6$%PJ(pgza>CAPO{5I-saIizVf<`y#qOM!%tq$^5j^LW7vqAhb z>+W1>3R{!EczAg3WStdx9WETDBOhQHT$5^w(k9ru_Sm67Ymr5q8{gOl1s-TWoiBa; z({m|b+t$Y?6q-io`M!&fH?ErRtR{Ft0L!xXh+SpFf?JA9f#&4w+qprm*UxE_+DfC9 zEy=&`GY;}9S=Z0re63k?9XPMS5HAe!N?y|R)*j%R;243J~1fmm$u4HHk|N_UPuD5}IXW!Ov;)8{YTl3@=#{-FPK|NogM7#hUp{ z8y#%aQRJ#ud)fh$aGodfNEAp+VZCqu8w(jg#h*%ACJtz2LsJ35L+@{&gSn6;fvsp* zy=r)3dzqnV>_(QMjf;1JY)us*G2Y0RRvGTD?IZr!GLM&$kuDokI-can{#F}I@s))a!GATKZ>sPh zNtz$J-YLU}fMw=A&A#yAZW=`Z?7u4g?kH{RfPgfrbi1J7qH#f=lOGWzD0D{YCK57r z^3AEk$-p8uS!F`E#4$6IC&#m13CjgB759YLPY~_HT;_gn3nQInkjb4k5YGNL_^3D$ zp3|jwcg88K&gC!4HH2cuI}(xdBa%I>?9ka%Z}fS9km#cXVCh*5+Z2b<3WARRv^X!H zz?7SOuHlDoIXOSvQXdMbW)42I^nVwp5tIn=k(-;;)DhUg1uu7V3*;7i`s3+lMOx`1CE0x2jU8Nlm;_!*wgN}m1w^PqM(N=GZ!E7tjCxm4-uRVzRy z=lhkX0Soz6<(dHaFW4lhF%$)5qmvCGOuPd8D|qvOxV^0}xj);~v^&x>xpkk&+V%3l z7g0Y?nA$p(mNGf!xA)+7ROHmASGuyr+Ni0S&(4|sbeMN*me|sgLk?(qv(*Ds{-A;j zbM3G^@m670S-0g+3Ui(?C^Afp&>`l_&2rJXUHjWyEJIw3BxNS(9;@=>@+@mhLioA@ zB#K$PJ$Q;)yV8^)1Jlfg<{1E|a1Fr(I{(!RwGkOleu^8pG#(+csp(V_9g2Nz;-`Yu z7nc^7%MPjzS9BK8wlH>uPBl+jSRALTCzTo$xHB9ZVb@}IxM~sjm^g>^k>|a-ahR0S+$!*tSroxexK~eT`F>aCJmrgK#9;j$0bi5`qX+tkzZ!UnlmuFdx6{27n9V< zL0GX<E%;FrX>*Fem!$Ae(S87*wuA_g=LenyU9GOcrF_3@m!ITD*7gs>I7M4 z#Iaqaml4}7r2JfN#I6NC7_bZXUBvGA%2hkL;rHRk7dAu99j+;2#!mKss4RE$GBFg_ z-ch9cHkF^`shr}-b3H(1jPrd)VE%hiu??HE!^>+u?A;EGmHFv^xHpV>=$x*gyo1p- zk}f`cm`Lvrht|bK5FN1Jyk_mE+l_n9rDBk-OjD(OO^CbR?OenhC=B#01K?0f$W70!2^2T zGiT`Oo1C;pSaJ*l{%lsVj)@y_6<#cZ346qh^_tNv7kv_a4gY`xW6itg8G(hlt6pcW zRhJD({{t+RWlc^V7?r$nFHL6e1V06hh{(O)8|n`N{00_ z-LqfzX0d1Lnzah=sUBOv@IA8VM$+4fb#y0W;FGPoJ@(*q&m?s?F@9;#QD{H3{2 z-RN6ZHg}S?oMBbxrz;CM!Zb?dvI90}!l@kW9FGDY)8L46vhYutz*ZuRjF_X_DFgGp z9a`El?96o14lEeKAik=?Av=?yEk%;Vg0nJ22!Yd=*stx^bdh9e2os;UDhppVce|?- zHJ1BPji7jfhqIRvUT3rsdT7ge^0KxJct<=P&Zze{x&||RkEVB8^GH^gTfl^tW2TF> z651^X7Q)k6(;oczHYLVQzq_pewVRwYz_RvjJf{By>tT_IkVr$o= zT}{SI0i(uG!yA@@Y|5A%Q+kh3!sftOriF;CspG4Baa{Y<>)}Z^1w_#pvid2f;APwe zx^P5&ej(@VR4bM?{AM2F^x?xV@~#`K`$R*t!Mye#LHKy$r= z-*M>9{3VK6{LLl!Qy=dN9eXnG13kRu%F({(KPFjuS_+mT;9UIwhuYFO94LQ2FEeaI S|Ja=der{dEXcVeh1pN=ns^!%H literal 0 HcmV?d00001 diff --git a/tests/results/cloth-1.sam.png b/tests/results/cloth-1.sam.png new file mode 100644 index 0000000000000000000000000000000000000000..664a7dcf54883e15b7c6e3a641dc8f9ad64cc3ee GIT binary patch literal 106426 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