From 77a60e47cac759e95d3af6faab35cc73dcee0d4c Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Wed, 4 May 2022 14:54:42 -0300 Subject: [PATCH 01/29] #3: Added release code build --- doc/changes/changes_0.1.0.md | 1 + .../cli/commands/deploy_release_build.py | 31 +++++ .../commands/generate_release_buildspec.py | 33 +++++ .../cli/commands/start_release_build.py | 32 +++++ .../cli/commands/validate_release_build.py | 24 ++++ .../lib/aws_access.py | 62 ++++++++- .../lib/ci_build.py | 9 +- .../lib/generate_buildspec_common.py | 75 +++++++++++ .../lib/release_build.py | 37 ++++++ .../lib/run_generate_buildspec.py | 68 +--------- .../lib/run_generate_release_buildspec.py | 22 ++++ .../lib/run_start_release_build.py | 44 +++++++ .../templates/release_build_buildspec.yaml | 41 ++++++ .../templates/slc_code_release_build.yaml | 124 ++++++++++++++++++ test/test_deploy_ci.py | 33 ++++- test/test_generate_buildspec.py | 34 ++++- 16 files changed, 595 insertions(+), 75 deletions(-) create mode 100644 exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py create mode 100644 exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py create mode 100644 exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py create mode 100644 exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py create mode 100644 exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py create mode 100644 exasol_script_languages_container_ci_setup/lib/release_build.py create mode 100644 exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py create mode 100644 exasol_script_languages_container_ci_setup/lib/run_start_release_build.py create mode 100644 exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml create mode 100644 exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml diff --git a/doc/changes/changes_0.1.0.md b/doc/changes/changes_0.1.0.md index 0ad7070..f23c3e3 100644 --- a/doc/changes/changes_0.1.0.md +++ b/doc/changes/changes_0.1.0.md @@ -14,6 +14,7 @@ n/a ## Features / Enhancements - #1: Implement codebuild deployment and buildspec generation + - #3: Added release code build ## Documentation diff --git a/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py new file mode 100644 index 0000000..0a87802 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py @@ -0,0 +1,31 @@ +import logging +import sys + +import click + +from exasol_script_languages_container_ci_setup.cli.cli import cli +from exasol_script_languages_container_ci_setup.cli.common import add_options +from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options +from exasol_script_languages_container_ci_setup.lib.release_build import run_deploy_release_build + + +@cli.command() +@add_options(aws_options) +@add_options(logging_options) +@click.option('--project', type=str, required=True, + help="""The project for which the stack will be created.""") +@click.option('--project-url', type=str, required=True, + help="""The URL of the project on Github.""") +def deploy_release_build( + aws_profile: str, + log_level: str, + project: str, + project_url: str): + set_log_level(log_level) + try: + run_deploy_release_build(AwsAccess(aws_profile), project, project_url) + except Exception: + logging.error("run_deploy_release_build failed.") + sys.exit(1) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py new file mode 100644 index 0000000..f915423 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py @@ -0,0 +1,33 @@ +from typing import Tuple, Optional + +import click + +from exasol_script_languages_container_ci_setup.cli.cli import cli +from exasol_script_languages_container_ci_setup.cli.common import add_options +from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level +from exasol_script_languages_container_ci_setup.lib.run_generate_release_buildspec import run_generate_release_buildspec + + +@cli.command() +@add_options(logging_options) +@click.option('--flavor-root-path', required=True, multiple=True, + type=click.Path(file_okay=False, dir_okay=True, exists=True), + help="Path where script language container flavors are located.") +@click.option('--output-path', type=click.Path(file_okay=False, dir_okay=True, exists=True, writable=True), + default="./aws-code-build/ci", show_default=True, + help="Path where buildspec files will be deployed.") +@click.option('--config-file', type=click.Path(file_okay=True, dir_okay=False, exists=True), + help="Configuration file for build (project specific).") +def generate_release_buildspecs( + flavor_root_path: Tuple[str, ...], + log_level: str, + output_path: str, + config_file: Optional[str] + ): + """ + This command generates the buildspec file(s) for the AWS CodeBuild Release build based + on the flavors located in path "flavor_root_path". + """ + set_log_level(log_level) + run_generate_release_buildspec(flavor_root_path, output_path, config_file) + diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py new file mode 100644 index 0000000..b6843a9 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -0,0 +1,32 @@ +import click + +from exasol_script_languages_container_ci_setup.cli.cli import cli +from exasol_script_languages_container_ci_setup.cli.common import add_options +from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options +from exasol_script_languages_container_ci_setup.lib.release_build import run_validate_release_build +from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_release_build + + +@cli.command() +@add_options(aws_options) +@add_options(logging_options) +@click.option('--project', type=str, required=True, + help="""The project for which the stack will be created.""") +@click.option('--upload-url', type=str, required=True, + help="""The URL of the Github release where artifacts will be stored.""") +@click.option('--branch', type=str, required=True, + help="""The branch of the repository which will be used.""") +@click.option('--dry-run/--no-dry-run', default=False, + help="If true, runs release without pushing the container to the docker release repository." + "If false, also pushes the container to the docker release repository.") +def start_release_build( + aws_profile: str, + log_level: str, + project: str, + upload_url: str, + branch: str, + dry_run: bool): + set_log_level(log_level) + run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch, dry_run) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py new file mode 100644 index 0000000..7d64eda --- /dev/null +++ b/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py @@ -0,0 +1,24 @@ +import click + +from exasol_script_languages_container_ci_setup.cli.cli import cli +from exasol_script_languages_container_ci_setup.cli.common import add_options +from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options +from exasol_script_languages_container_ci_setup.lib.release_build import run_validate_release_build + + +@cli.command() +@add_options(aws_options) +@add_options(logging_options) +@click.option('--project', type=str, required=True, + help="""The project for which the stack will be created.""") +@click.option('--project-url', type=str, required=True, + help="""The URL of the project on Github.""") +def validate_release_build( + aws_profile: str, + log_level: str, + project: str, + project_url: str): + set_log_level(log_level) + run_validate_release_build(AwsAccess(aws_profile), project, project_url) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 71a14fb..1bfd122 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -1,5 +1,6 @@ import logging -from typing import Optional +import time +from typing import Optional, List, Dict, Tuple import boto3 from botocore.exceptions import ClientError @@ -78,3 +79,62 @@ def validate_cloudformation_template(self, cloudformation_yml) -> None: logging.debug(f"Running validate_cloudformation_template for default aws profile.") cloud_client = boto3.client('cloudformation') cloud_client.validate_template(TemplateBody=cloudformation_yml) + + def _get_codebuild_client(self): + if self._aws_profile is not None: + logging.debug(f"Running validate_cloudformation_template for aws profile {self._aws_profile}") + aws_session = boto3.session.Session(profile_name=self._aws_profile) + codebuild_client = aws_session.client('codebuild') + else: + logging.debug(f"Running validate_cloudformation_template for default aws profile.") + codebuild_client = boto3.client('codebuild') + return codebuild_client + + def get_all_codebuild_projects(self) -> List[str]: + """ + This functions uses Boto3 to get all CodeBuild projects. The AWS API truncates at a size of 100, and + in order to get all chunks the method must be called passing the previous retrieved token until no token + is returned. + """ + codebuild_client = self._get_codebuild_client() + current_result = codebuild_client.list_projects() + result = current_result["projects"] + + while "nextToken" in current_result: + current_result = codebuild_client.list_projects(nextToken=current_result["nextToken"]) + result.extend(current_result["projects"]) + return result + + def start_codebuild(self, project: str, environment_variables_overrides: List[Dict[str, str]], branch: str): + """ + This functions uses Boto3 to start a batch build. + It forwards all variabkes from parameter env_variables as environment variables to the CodeBuild project. + If a branch is given, it starts the codebuild for the given branch. + After the build has triggered it waits until the batch build finished + """ + codebuild_client = self._get_codebuild_client() + logging.info(f"Trigger codebuild for project {project} with branch {branch} " + f"and env_variables ({environment_variables_overrides})") + ret_val = codebuild_client.start_build_batch(projectName=project, + sourceVersion=branch, + environmentVariablesOverride=list( + environment_variables_overrides)) + build_id = ret_val['buildBatch']['id'] + logging.debug(f"Codebuild for project {project} with branch {branch} triggered. Id is {build_id}.") + + for counter in range(120): #We wait for maximal 1h + (something) + time.sleep(30) + logging.debug(f"Checking status of codebuild id {build_id}.") + build_response = codebuild_client.batch_get_build_batches(ids=[build_id]) + logging.debug(f"Build response of codebuild id {build_id} is {build_response}") + if len(build_response['buildBatches']) != 1: + logging.error(f"Unexpected return value from 'batch_get_build_batches': {build_response}") + build_status = build_response['buildBatches'][0]['buildBatchStatus'] + logging.info(f"Build status of codebuild id {build_id} is {build_status}") + if build_status == 'SUCCEEDED': + break + elif build_status in ['FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT']: + raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") + elif build_status is not "IN_PROGRESS": + raise RuntimeError(f"Batch build {build_id} has unknown build status.") + diff --git a/exasol_script_languages_container_ci_setup/lib/ci_build.py b/exasol_script_languages_container_ci_setup/lib/ci_build.py index 08783c0..39ed860 100644 --- a/exasol_script_languages_container_ci_setup/lib/ci_build.py +++ b/exasol_script_languages_container_ci_setup/lib/ci_build.py @@ -4,9 +4,10 @@ from exasol_script_languages_container_ci_setup.lib.render_template import render_template CODE_BUILD_STACK_NAME = "CIBuild" +CI_CODE_BUILD_TEMPLATE = "slc_code_build.yaml" -def stack_name(project: str): +def ci_stack_name(project: str): return f"{project}{CODE_BUILD_STACK_NAME}" @@ -18,9 +19,9 @@ def run_deploy_ci_build(aws_access: AwsAccess, project: str, github_url: str): """ logging.info(f"run_deploy_ci_build for aws profile {aws_access.aws_profile} for project {project} at {github_url}") dockerhub_secret_arn = aws_access.read_dockerhub_secret_arn() - yml = render_template("slc_code_build.yaml", project=project, + yml = render_template(CI_CODE_BUILD_TEMPLATE, project=project, dockerhub_secret_arn=dockerhub_secret_arn, github_url=github_url) - aws_access.upload_cloudformation_stack(yml, stack_name(project)) + aws_access.upload_cloudformation_stack(yml, ci_stack_name(project)) def run_validate_ci_build(aws_access: AwsAccess, project: str, github_url: str): @@ -30,6 +31,6 @@ def run_validate_ci_build(aws_access: AwsAccess, project: str, github_url: str): logging.info(f"run_validate_ci_build for aws profile {aws_access.aws_profile} " f"for project {project} at {github_url}") dockerhub_secret_arn = "dummy_arn" - yml = render_template("slc_code_build.yaml", project=project, + yml = render_template(CI_CODE_BUILD_TEMPLATE, project=project, dockerhub_secret_arn=dockerhub_secret_arn, github_url=github_url) aws_access.validate_cloudformation_template(yml) diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py new file mode 100644 index 0000000..8c85171 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -0,0 +1,75 @@ +import json +import logging +from dataclasses import dataclass +from pathlib import Path +from typing import Optional, Tuple, Set + +import jsonschema + +from exasol_script_languages_container_ci_setup.lib.render_template import render_template + + +@dataclass(eq=True, frozen=True) +class Flavor(object): + """" + Holds the name and the formatted name used for generating the buildspec. + """ + flavor_original: str + + @property + def flavor_formatted(self) -> str: + return self.flavor_original.replace(".", "").replace("-", "_") + + +def validate_config_file(config_file: Optional[str]): + """ + Validates config file, path given by parameter config_file. + :raises: + + `jsonschema.exceptions.ValidationError` if the config file has invalid JSON format. + `jsonschema.exceptions.SchemaError` if the config file is not in accordance with the the schema. + `ValueError` if the ignored path given in the config file does not exist. + """ + if config_file is not None: + with open(config_file, "r") as config_file_: + config = json.load(config_file_) + config_schema = json.loads(render_template("config_schema.json")) + jsonschema.validate(instance=config, schema=config_schema) + ignored_paths = config["build_ignore"]["ignored_paths"] + for ignored_path in ignored_paths: + folder_path = Path(ignored_path) + if not folder_path.exists(): + raise ValueError(f"Ignored folder '{ignored_path}' does not exist.") + + +def get_config_file_parameter(config_file: Optional[str]): + if config_file is None: + return "" + return f"--config-file {config_file}" + + +def _find_flavors(flavor_root_paths: Tuple[str, ...]) -> Set[Flavor]: + flavors = set() + for flavor_root_path in [Path(f).resolve() for f in flavor_root_paths]: + assert flavor_root_path.is_dir() + assert flavor_root_path.exists() + assert flavor_root_path.name == "flavors" + dirs = (d for d in flavor_root_path.iterdir() if d.is_dir()) + flavors.update(map(lambda directory: Flavor(directory.name), dirs)) + logging.info(f"Found flavors: {flavors}") + return flavors + + +def write_batch_build_spec(flavor_root_paths: Tuple[str, ...], output_pathname: str) -> None: + buildspec_body = [] + flavors = _find_flavors(flavor_root_paths) + for flavor in flavors: + buildspec_body.append(render_template("buildspec_batch_entry.yaml", + flavor_original=flavor.flavor_original, + flavor_formatted=flavor.flavor_formatted, + out_path=output_pathname)) + + result_yaml = render_template("buildspec_hull.yaml", batch_entries="\n".join(buildspec_body)) + + with open(Path(output_pathname) / "buildspec.yaml", "w") as output_file: + output_file.write(result_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/release_build.py b/exasol_script_languages_container_ci_setup/lib/release_build.py new file mode 100644 index 0000000..e290422 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/lib/release_build.py @@ -0,0 +1,37 @@ +import logging + +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.lib.render_template import render_template + +CODE_BUILD_STACK_NAME = "ReleaseBuild" +RELEASE_CODEBUILD_TEMPLATE = "slc_code_release_build.yaml" + + +def release_stack_name(project: str): + return f"{project}{CODE_BUILD_STACK_NAME}" + + +def run_deploy_release_build(aws_access: AwsAccess, project: str, github_url: str): + """ + This command deploys the ci build cloudformation stack + 1. It get's the dockerhub secret ARN from AWS via Boto3 + 2. Then it renders the template and uploads the resulting cloudformation YAML file. + """ + logging.info(f"run_deploy_release_build for aws profile " + f"{aws_access.aws_profile} for project {project} at {github_url}") + dockerhub_secret_arn = aws_access.read_dockerhub_secret_arn() + yml = render_template(RELEASE_CODEBUILD_TEMPLATE, project=project, + dockerhub_secret_arn=dockerhub_secret_arn, github_url=github_url) + aws_access.upload_cloudformation_stack(yml, release_stack_name(project)) + + +def run_validate_release_build(aws_access: AwsAccess, project: str, github_url: str): + """ + This command validates the release build cloudformation stack + """ + logging.info(f"run_validate_release_build for aws profile {aws_access.aws_profile} " + f"for project {project} at {github_url}") + dockerhub_secret_arn = "dummy_arn" + yml = render_template(RELEASE_CODEBUILD_TEMPLATE, project=project, + dockerhub_secret_arn=dockerhub_secret_arn, github_url=github_url) + aws_access.validate_cloudformation_template(yml) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py index d81abde..7dd124b 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py @@ -1,81 +1,25 @@ -import json import logging -from dataclasses import dataclass from pathlib import Path from typing import Tuple, Optional -import jsonschema +from exasol_script_languages_container_ci_setup.lib.generate_buildspec_common import validate_config_file, \ + get_config_file_parameter, write_batch_build_spec from exasol_script_languages_container_ci_setup.lib.render_template import render_template -@dataclass(eq=True, frozen=True) -class Flavor(object): - """" - Holds the name and the formatted name used for generating the buildspec. - """ - flavor_original: str - - @property - def flavor_formatted(self) -> str: - return self.flavor_original.replace(".", "").replace("-", "_") - - -def validate_config_file(config_file: Optional[str]): - """ - Validates config file, path given by parameter config_file. - :raises: - - `jsonschema.exceptions.ValidationError` if the config file has invalid JSON format. - `jsonschema.exceptions.SchemaError` if the config file is not in accordance with the the schema. - `ValueError` if the ignored path given in the config file does not exist. - """ - if config_file is not None: - with open(config_file, "r") as config_file_: - config = json.load(config_file_) - config_schema = json.loads(render_template("config_schema.json")) - jsonschema.validate(instance=config, schema=config_schema) - ignored_paths = config["build_ignore"]["ignored_paths"] - for ignored_path in ignored_paths: - folder_path = Path(ignored_path) - if not folder_path.exists(): - raise ValueError(f"Ignored folder '{ignored_path}' does not exist.") - - -def get_config_file_parameter(config_file: Optional[str]): - if config_file is None: - return "" - return f"--config-file {config_file}" - - def run_generate_buildspec( flavor_root_paths: Tuple[str, ...], output_pathname: str, config_file: Optional[str]): validate_config_file(config_file) - flavors = set() - logging.info(f"Run run_generate_buildspec for paths: {flavor_root_paths}") - for flavor_root_path in [Path(f).resolve() for f in flavor_root_paths]: - assert flavor_root_path.is_dir() - assert flavor_root_path.exists() - assert flavor_root_path.name == "flavors" - dirs = (d for d in flavor_root_path.iterdir() if d.is_dir()) - flavors.update(map(lambda directory: Flavor(directory.name), dirs)) - logging.info(f"Found flavors: {flavors}") - buildspec_body = [] - for flavor in flavors: - buildspec_body.append(render_template("buildspec_batch_entry.yaml", - flavor_original=flavor.flavor_original, - flavor_formatted=flavor.flavor_formatted, - out_path=output_pathname)) - result_yaml = render_template("buildspec_hull.yaml", batch_entries="\n".join(buildspec_body)) + logging.info(f"Run run_generate_buildspec for paths: {flavor_root_paths}") - output_pathname = Path(output_pathname) - with open(output_pathname / "buildspec.yaml", "w") as output_file: - output_file.write(result_yaml) + write_batch_build_spec(flavor_root_paths, output_pathname) result_build_yaml = render_template("build_buildspec.yaml", config_file_parameter=get_config_file_parameter(config_file)) - with open(output_pathname / "build_buildspec.yaml", "w") as output_file: + with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) + diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py new file mode 100644 index 0000000..4d92309 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py @@ -0,0 +1,22 @@ +import logging +from pathlib import Path +from typing import Tuple, Optional + +from exasol_script_languages_container_ci_setup.lib.generate_buildspec_common import validate_config_file, \ + get_config_file_parameter, write_batch_build_spec +from exasol_script_languages_container_ci_setup.lib.render_template import render_template + + +def run_generate_release_buildspec( + flavor_root_paths: Tuple[str, ...], + output_pathname: str, + config_file: Optional[str]): + validate_config_file(config_file) + logging.info(f"Run run_generate_release_buildspec for paths: {flavor_root_paths}") + write_batch_build_spec(flavor_root_paths, output_pathname) + + result_build_yaml = render_template("release_build_buildspec.yaml", + config_file_parameter=get_config_file_parameter(config_file)) + + with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: + output_file.write(result_build_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py new file mode 100644 index 0000000..d9bfc55 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -0,0 +1,44 @@ +import logging +import os +from typing import Tuple, Dict + +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess + + +def get_environment_variable_override(env_variable: Tuple[str, str]) -> Dict[str, str]: + return {"name": env_variable[0], "value": env_variable[1], "type": "PLAINTEXT"} + + +def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str, dry_run: bool) -> None: + """ + This command executes + 1. Retrieve all AWS Codebuild projects for this account + 2. Find the one which matches the given project + 3. Creates the environment variables override + 4. Start and wait for batch build + :raises: + `RuntimeError` if build goes wrong or if anything on AWS CodeBuild is not as expected + `ValueError` if project is not found on AWS CodeBuild. + """ + logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile} for project {project} " + f"with upload url: {upload_url}") + projects = aws_access.get_all_codebuild_projects() + matching_project = [p for p in projects if p.startswith(f"{project}CodeBuild")] + if len(matching_project) == 0: + raise ValueError(f"No project deployed for {project}. Found following projects: {projects}") + if len(matching_project) > 1: + raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") + if dry_run: + dry_run_value = "--dry-run" + else: + dry_run_value = "--no-dry-run" + + gh_token = os.getenv("GITHUB_TOKEN") + if gh_token is None: + raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") + env_variables = [("UPLOAD_URL", upload_url), + ("DRY_RUN", dry_run_value), + ("GITHUB_TOKEN", gh_token)] + environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) + aws_access.start_codebuild(matching_project[0], environment_variables_overrides=environment_variables_overrides, + branch=branch) diff --git a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml new file mode 100644 index 0000000..e4aa9f4 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml @@ -0,0 +1,41 @@ +version: 0.2 + +# ---- AUTOMATICALLY GENERATED FILE -------- +# ---- DO NOT EDIT MANUALLY, BUT USE PYTHON MODULE "script-languages-container-ci-setup" TO UPDATE --- +env: + shell: bash + variables: + RELEASE_DOCKER_REPOSITORY: "exasol/script-language-container" + UPLOAD_URL: "" + DRY_RUN: "--no-dry-run" + + + secrets-manager: + DOCKER_USER: "Dockerhub:User" + DOCKER_PASSWORD: "Dockerhub:AccessToken" +phases: + + install: + runtime-versions: + python: 3.8 + commands: + - git submodule update --init --recursive + - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 - + - export PATH=$PATH:$HOME/.poetry/bin + - poetry env use $(command -v "python3.8") + - poetry install + + pre_build: + commands: + - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USER" --password-stdin + build: + commands: + - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --upload-url "$UPLOAD_URL" "$DRY_RUN" {{ config_file_parameter }} + +artifacts: + files: + - 'jobs/**/*' + name: release_build_output_$(date +%Y-%m-%d-%Hh-%Mm-%Ss) + base-directory: .build_output + s3-prefix: flavor_$FLAVOR + diff --git a/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml b/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml new file mode 100644 index 0000000..1f8956b --- /dev/null +++ b/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml @@ -0,0 +1,124 @@ +Resources: + ReleaseArtifactsBucket: + Type: AWS::S3::Bucket + Properties: + PublicAccessBlockConfiguration: + BlockPublicAcls: true + BlockPublicPolicy: true + IgnorePublicAcls: true + RestrictPublicBuckets: true + BucketEncryption: + ServerSideEncryptionConfiguration: + - ServerSideEncryptionByDefault: + SSEAlgorithm: 'aws:kms' + KMSMasterKeyID: !Sub "arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/aws/s3" + BucketKeyEnabled: true + LifecycleConfiguration: + Rules: + - Id: ExpirationRule + Status: Enabled + ExpirationInDays: 180 + + ReleaseCodeBuildRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - codebuild.amazonaws.com + Action: + - sts:AssumeRole + Description: !Sub "IAM Role for ${AWS::StackName}" + Path: '/' + Policies: + - PolicyName: root + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - codebuild:* + - logs:* + Resource: '*' + - Effect: Allow + Action: + - secretsmanager:GetSecretValue + Resource: + #- arn:aws:secretsmanager:eu-central-1:620087982706:secret:Dockerhub-pFnwBg + - {{ dockerhub_secret_arn }} + - Effect: Allow + Action: + - s3:PutObject + - s3:GetObject + Resource: + - !Sub "arn:aws:s3:::${ReleaseArtifactsBucket}/*" + ReleaseBatchBuildRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - codebuild.amazonaws.com + Action: + - sts:AssumeRole + Description: !Sub "IAM Role for controlling builds on ${AWS::StackName}" + Path: '/' + Policies: + - PolicyName: root + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - codebuild:StartBuild + - codebuild:StopBuild + - codebuild:RetryBuild + Resource: '*' + {{project}}ReleaseCodeBuild: + Type: AWS::CodeBuild::Project + Properties: + Description: {{ project }} Container ReleaseCodeBuild + Triggers: + BuildType: BUILD_BATCH + Webhook: False + ServiceRole: !GetAtt ReleaseCodeBuildRole.Arn + BuildBatchConfig: + BatchReportMode: REPORT_INDIVIDUAL_BUILDS + ServiceRole: !GetAtt ReleaseBatchBuildRole.Arn + TimeoutInMins: 240 + Artifacts: + Location: !Ref ReleaseArtifactsBucket + OverrideArtifactName: true + Type: S3 + Environment: + Type: LINUX_CONTAINER + PrivilegedMode: true + ComputeType: BUILD_GENERAL1_SMALL + Image: aws/codebuild/standard:5.0 + Source: + Type: GITHUB + Location: {{github_url}} + BuildSpec: "aws-code-build/release/buildspec.yaml" + TimeoutInMinutes: 240 + LogsConfig: + S3Logs: + Location: !Sub "${ReleaseArtifactsBucket}/logs" + Status: ENABLED + +#Trick to have log retention, see https://medium.com/allermedia-techblog/cloudformation-example-log-retention-for-lambda-and-codebuild-a11e74516bb6 + ReleaseCodeBuildLogGroup: + Type: AWS::Logs::LogGroup + Properties: + LogGroupName: !Sub "/aws/codebuild/${ {{project}}ReleaseCodeBuild }" + RetentionInDays: 180 + +Outputs: + ProjectName: + Value: !Ref {{project}}ReleaseCodeBuild + Description: {{ project }} Release Build project name diff --git a/test/test_deploy_ci.py b/test/test_deploy_ci.py index 40e4053..6c44652 100644 --- a/test/test_deploy_ci.py +++ b/test/test_deploy_ci.py @@ -3,7 +3,8 @@ import pytest from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess -from exasol_script_languages_container_ci_setup.lib.ci_build import run_deploy_ci_build, stack_name +from exasol_script_languages_container_ci_setup.lib.ci_build import run_deploy_ci_build, ci_stack_name +from exasol_script_languages_container_ci_setup.lib.release_build import run_deploy_release_build, release_stack_name from exasol_script_languages_container_ci_setup.lib.render_template import render_template from test.cloudformation_validation import validate_using_cfn_lint @@ -27,7 +28,7 @@ def test_deploy_ci_upload_invoked(ci_code_build_yml): aws_access_mock.read_dockerhub_secret_arn.return_value = DOCKERHUB_SECRET_ARN run_deploy_ci_build(aws_access=aws_access_mock, project=PROJECT, github_url=GH_URL) - aws_access_mock.upload_cloudformation_stack.assert_called_once_with(ci_code_build_yml, stack_name(PROJECT)) + aws_access_mock.upload_cloudformation_stack.assert_called_once_with(ci_code_build_yml, ci_stack_name(PROJECT)) def test_deploy_ci_template(ci_code_build_yml): @@ -37,3 +38,31 @@ def test_deploy_ci_template(ci_code_build_yml): def test_deploy_ci_template_with_cnf_lint(tmp_path, ci_code_build_yml): validate_using_cfn_lint(tmp_path, ci_code_build_yml) + + +@pytest.fixture +def release_code_build_yml(): + return render_template("slc_code_release_build.yaml", project=PROJECT, + dockerhub_secret_arn=DOCKERHUB_SECRET_ARN, github_url=GH_URL) + + +def test_deploy_release_upload_invoked(release_code_build_yml): + """" + Test if function upload_cloudformation_stack() will be invoked + with expected values when we run run_deploy_release_build() + """ + aws_access_mock = MagicMock() + aws_access_mock.read_dockerhub_secret_arn.return_value = DOCKERHUB_SECRET_ARN + run_deploy_release_build(aws_access=aws_access_mock, project=PROJECT, + github_url=GH_URL) + aws_access_mock.upload_cloudformation_stack.assert_called_once_with(release_code_build_yml, + release_stack_name(PROJECT)) + + +def test_deploy_release_template(release_code_build_yml): + aws_access = AwsAccess(None) + aws_access.validate_cloudformation_template(release_code_build_yml) + + +def test_deploy_release_template_with_cnf_lint(tmp_path, release_code_build_yml): + validate_using_cfn_lint(tmp_path, release_code_build_yml) diff --git a/test/test_generate_buildspec.py b/test/test_generate_buildspec.py index c2baeb5..6358c7e 100644 --- a/test/test_generate_buildspec.py +++ b/test/test_generate_buildspec.py @@ -6,6 +6,7 @@ from exasol_script_languages_container_ci_setup.lib.render_template import render_template from exasol_script_languages_container_ci_setup.lib.run_generate_buildspec import run_generate_buildspec, \ get_config_file_parameter +from exasol_script_languages_container_ci_setup.lib.run_generate_release_buildspec import run_generate_release_buildspec expected_result_root_buildspec = """ version: 0.2 @@ -36,7 +37,6 @@ def test_buildspec(tmp_path): out_path = tmp_path / "out" out_path.mkdir(parents=False, exist_ok=False) - script_languages_ci_location = "http://slc-ci" run_generate_buildspec((str(root_path),), str(out_path.absolute()), config_file=None) with open(out_path / "buildspec.yaml", "r") as res_file: @@ -48,11 +48,33 @@ def test_buildspec(tmp_path): res = res_file.read() # For build_buildspec.yaml we re-use the template for testing - expected_result_build_buildspec = render_template("build_buildspec.yaml", - script_languages_ci_location=script_languages_ci_location, - config_file_parameter="") - assert res.strip() == expected_result_build_buildspec.strip(). \ - format(script_languages_ci_location=script_languages_ci_location) + expected_result_build_buildspec = render_template("build_buildspec.yaml", config_file_parameter="") + assert res.strip() == expected_result_build_buildspec.strip() + + +def test_release_buildspec(tmp_path): + """ + Run run_generate_release_buildspec() for one flavor and compare result! + """ + root_path = tmp_path / "flavors" + test_flavor = root_path / "test-flavor" + test_flavor.mkdir(parents=True, exist_ok=False) + out_path = tmp_path / "out" + out_path.mkdir(parents=False, exist_ok=False) + + run_generate_release_buildspec((str(root_path),), str(out_path.absolute()), config_file=None) + + with open(out_path / "buildspec.yaml", "r") as res_file: + res = res_file.read() + + assert res.strip() == expected_result_root_buildspec.strip().format(location=str(out_path)) + + with open(out_path / "build_buildspec.yaml", "r") as res_file: + res = res_file.read() + + # For build_buildspec.yaml we re-use the template for testing + expected_result_build_buildspec = render_template("release_build_buildspec.yaml", config_file_parameter="") + assert res.strip() == expected_result_build_buildspec.strip() def test_buildspec_with_valid_config_file(tmp_path): From 3a6ef9591bae452524491986a1430737e233152c Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Wed, 4 May 2022 15:20:14 -0300 Subject: [PATCH 02/29] Added unit test for start_release_build --- .../lib/aws_access.py | 7 +++-- test/test_start_release_build.py | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 test/test_start_release_build.py diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 1bfd122..fa62292 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -82,11 +82,9 @@ def validate_cloudformation_template(self, cloudformation_yml) -> None: def _get_codebuild_client(self): if self._aws_profile is not None: - logging.debug(f"Running validate_cloudformation_template for aws profile {self._aws_profile}") aws_session = boto3.session.Session(profile_name=self._aws_profile) codebuild_client = aws_session.client('codebuild') else: - logging.debug(f"Running validate_cloudformation_template for default aws profile.") codebuild_client = boto3.client('codebuild') return codebuild_client @@ -96,6 +94,7 @@ def get_all_codebuild_projects(self) -> List[str]: in order to get all chunks the method must be called passing the previous retrieved token until no token is returned. """ + logging.debug(f"Running get_all_codebuild_projects for aws profile {self._aws_profile}") codebuild_client = self._get_codebuild_client() current_result = codebuild_client.list_projects() result = current_result["projects"] @@ -105,12 +104,14 @@ def get_all_codebuild_projects(self) -> List[str]: result.extend(current_result["projects"]) return result - def start_codebuild(self, project: str, environment_variables_overrides: List[Dict[str, str]], branch: str): + def start_codebuild(self, project: str, environment_variables_overrides: List[Dict[str, str]], branch: str) -> None: """ This functions uses Boto3 to start a batch build. It forwards all variabkes from parameter env_variables as environment variables to the CodeBuild project. If a branch is given, it starts the codebuild for the given branch. After the build has triggered it waits until the batch build finished + :raises + `RuntimeError` if build fails or AWS Batch build returns unknown status """ codebuild_client = self._get_codebuild_client() logging.info(f"Trigger codebuild for project {project} with branch {branch} " diff --git a/test/test_start_release_build.py b/test/test_start_release_build.py new file mode 100644 index 0000000..d83664e --- /dev/null +++ b/test/test_start_release_build.py @@ -0,0 +1,31 @@ +import os +from unittest.mock import MagicMock + +from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_release_build + +PROJECT_NAME = "slc" +CODEBUILD_PROJECT_DUMMY_NAME = f"{PROJECT_NAME}CodeBuild-hashvalue" +UPLOAD_URL = "http://deploy-release-artifacts-here.com" +BRANCH = "main" +GITHUB_TOKEN = "gh_secret" + + +def test_run_release_build(): + """ + Test if invocation of run_start_release_build calls AwsAccess with expected arguments. + """ + aws_access_mock = MagicMock() + os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN + aws_access_mock.get_all_codebuild_projects.return_value = [CODEBUILD_PROJECT_DUMMY_NAME] + run_start_release_build(aws_access=aws_access_mock, project=PROJECT_NAME, + upload_url=UPLOAD_URL, branch=BRANCH, dry_run=False) + expected_env_variable_overrides = [ + {"name": "UPLOAD_URL", "value": UPLOAD_URL, "type": "PLAINTEXT"}, + {"name": "DRY_RUN", "value": "--no-dry-run", "type": "PLAINTEXT"}, + {"name": "GITHUB_TOKEN", "value": GITHUB_TOKEN, "type": "PLAINTEXT"} + ] + + aws_access_mock. \ + start_codebuild.assert_called_once_with(CODEBUILD_PROJECT_DUMMY_NAME, + environment_variables_overrides=expected_env_variable_overrides, + branch=BRANCH) From 7d474793e55ff23f2ad3c1fee8d99ab4612022a6 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Wed, 4 May 2022 15:27:27 -0300 Subject: [PATCH 03/29] Fixed import of new commands --- exasol_script_languages_container_ci_setup/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exasol_script_languages_container_ci_setup/__init__.py b/exasol_script_languages_container_ci_setup/__init__.py index 51a7ec0..5f09315 100644 --- a/exasol_script_languages_container_ci_setup/__init__.py +++ b/exasol_script_languages_container_ci_setup/__init__.py @@ -3,6 +3,8 @@ generate_buildspec, deploy_source_credentials, deploy_ci_build, + deploy_release_build, validate_ci_build, + validate_release_build, validate_source_credentials ) From a53a9cd8c5e1350bd3222766c0edfbdda332cfc3 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Wed, 4 May 2022 15:44:24 -0300 Subject: [PATCH 04/29] Fix template for release build --- .../templates/slc_code_release_build.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml b/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml index 1f8956b..58f3f8d 100644 --- a/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml +++ b/exasol_script_languages_container_ci_setup/templates/slc_code_release_build.yaml @@ -84,9 +84,6 @@ Resources: Type: AWS::CodeBuild::Project Properties: Description: {{ project }} Container ReleaseCodeBuild - Triggers: - BuildType: BUILD_BATCH - Webhook: False ServiceRole: !GetAtt ReleaseCodeBuildRole.Arn BuildBatchConfig: BatchReportMode: REPORT_INDIVIDUAL_BUILDS From e94b347d96b298c6f4bcdc9aaef66c69fce6288d Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 06:41:29 -0300 Subject: [PATCH 05/29] Fixed default output path for release buildspecs --- .../cli/commands/generate_release_buildspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py index f915423..65212a6 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/generate_release_buildspec.py @@ -14,7 +14,7 @@ type=click.Path(file_okay=False, dir_okay=True, exists=True), help="Path where script language container flavors are located.") @click.option('--output-path', type=click.Path(file_okay=False, dir_okay=True, exists=True, writable=True), - default="./aws-code-build/ci", show_default=True, + default="./aws-code-build/release", show_default=True, help="Path where buildspec files will be deployed.") @click.option('--config-file', type=click.Path(file_okay=True, dir_okay=False, exists=True), help="Configuration file for build (project specific).") From cf53a0f4ab2550c0a3cc312ade01b943eec056bd Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 06:44:59 -0300 Subject: [PATCH 06/29] Added generate-release-buildspecs to import list --- exasol_script_languages_container_ci_setup/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/exasol_script_languages_container_ci_setup/__init__.py b/exasol_script_languages_container_ci_setup/__init__.py index 5f09315..ecfac02 100644 --- a/exasol_script_languages_container_ci_setup/__init__.py +++ b/exasol_script_languages_container_ci_setup/__init__.py @@ -1,6 +1,7 @@ from exasol_script_languages_container_ci_setup.cli.commands import ( health, generate_buildspec, + generate_release_buildspec, deploy_source_credentials, deploy_ci_build, deploy_release_build, From 88911004aa2c7334a6f2b77b90e39da3698811ec Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 07:55:44 -0300 Subject: [PATCH 07/29] Added start_release_build to import list --- exasol_script_languages_container_ci_setup/__init__.py | 3 ++- .../cli/commands/start_release_build.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/__init__.py b/exasol_script_languages_container_ci_setup/__init__.py index ecfac02..d1197c4 100644 --- a/exasol_script_languages_container_ci_setup/__init__.py +++ b/exasol_script_languages_container_ci_setup/__init__.py @@ -7,5 +7,6 @@ deploy_release_build, validate_ci_build, validate_release_build, - validate_source_credentials + validate_source_credentials, + start_release_build ) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py index b6843a9..a54da4e 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -5,7 +5,6 @@ from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options -from exasol_script_languages_container_ci_setup.lib.release_build import run_validate_release_build from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_release_build @@ -13,7 +12,7 @@ @add_options(aws_options) @add_options(logging_options) @click.option('--project', type=str, required=True, - help="""The project for which the stack will be created.""") + help="""The project name. Must be same name as used for the AWS CodeBuild release stack creation.""") @click.option('--upload-url', type=str, required=True, help="""The URL of the Github release where artifacts will be stored.""") @click.option('--branch', type=str, required=True, From 9a91a1a323f4d9d1e10adffc337bb1bb65238e83 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 08:02:56 -0300 Subject: [PATCH 08/29] Added build_status to exception --- exasol_script_languages_container_ci_setup/lib/aws_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index fa62292..577025e 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -137,5 +137,5 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di elif build_status in ['FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT']: raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") elif build_status is not "IN_PROGRESS": - raise RuntimeError(f"Batch build {build_id} has unknown build status.") + raise RuntimeError(f"Batch build {build_id} has unknown build status: {build_status}") From 37783c57446475e6a199e0690159f4d93d526e28 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 08:27:21 -0300 Subject: [PATCH 09/29] Fix match name of release CodeBuild --- .../lib/run_start_release_build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index d9bfc55..ac51168 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -23,7 +23,7 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile} for project {project} " f"with upload url: {upload_url}") projects = aws_access.get_all_codebuild_projects() - matching_project = [p for p in projects if p.startswith(f"{project}CodeBuild")] + matching_project = [p for p in projects if p.startswith(f"{project}ReleaseCodeBuild")] if len(matching_project) == 0: raise ValueError(f"No project deployed for {project}. Found following projects: {projects}") if len(matching_project) > 1: From 8ec6071b57757a0778c29e840bad83d60e9de5fa Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 09:35:49 -0300 Subject: [PATCH 10/29] Changed logic for getting release code build: Get the stack resource and find the codebuild in the stack. --- .../lib/aws_access.py | 51 ++++++++----------- .../lib/run_start_release_build.py | 14 ++--- test/test_start_release_build.py | 47 +++++++++++++++-- 3 files changed, 70 insertions(+), 42 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 577025e..523b646 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -1,6 +1,6 @@ import logging import time -from typing import Optional, List, Dict, Tuple +from typing import Optional, List, Dict, Any import boto3 from botocore.exceptions import ClientError @@ -20,13 +20,8 @@ def upload_cloudformation_stack(self, yml: str, stack_name: str): """ Deploy the cloudformation stack. """ - if self._aws_profile is not None: - logging.debug(f"Running upload_cloudformation_stack for aws profile {self._aws_profile}") - aws_session = boto3.session.Session(profile_name=self._aws_profile) - cloud_client = aws_session.client('cloudformation') - else: - logging.debug(f"Running upload_cloudformation_stack for default aws profile.") - cloud_client = boto3.client('cloudformation') + logging.debug(f"Running upload_cloudformation_stack for aws profile {self._aws_profile}") + cloud_client = self._get_aws_client("cloudformation") try: cfn_deployer = Deployer(cloudformation_client=cloud_client) result = cfn_deployer.create_and_wait_for_changeset(stack_name=stack_name, cfn_template=yml, @@ -70,38 +65,33 @@ def validate_cloudformation_template(self, cloudformation_yml) -> None: Pitfall: Boto3 expects the YAML string as parameter, whereas the AWS CLI expects the file URL as parameter. It requires to have the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY env variables set correctly. """ - if self._aws_profile is not None: - logging.debug(f"Running validate_cloudformation_template for aws profile {self._aws_profile}") - aws_session = boto3.session.Session(profile_name=self._aws_profile) - cloud_client = aws_session.client('cloudformation') - cloud_client.validate_template(TemplateBody=cloudformation_yml) - else: - logging.debug(f"Running validate_cloudformation_template for default aws profile.") - cloud_client = boto3.client('cloudformation') - cloud_client.validate_template(TemplateBody=cloudformation_yml) + logging.debug(f"Running validate_cloudformation_template for aws profile {self._aws_profile}") + cloud_client = self._get_aws_client("cloudformation") + cloud_client.validate_template(TemplateBody=cloudformation_yml) - def _get_codebuild_client(self): + def _get_aws_client(self, service_name: str) -> Any: if self._aws_profile is not None: aws_session = boto3.session.Session(profile_name=self._aws_profile) - codebuild_client = aws_session.client('codebuild') + codebuild_client = aws_session.client(service_name) else: - codebuild_client = boto3.client('codebuild') + codebuild_client = boto3.client(service_name) return codebuild_client - def get_all_codebuild_projects(self) -> List[str]: + def get_all_stack_resources(self, stack_name: str) -> List[Dict[str, str]]: """ - This functions uses Boto3 to get all CodeBuild projects. The AWS API truncates at a size of 100, and - in order to get all chunks the method must be called passing the previous retrieved token until no token - is returned. + This functions uses Boto3 to get all AWS Cloudformation resources for a specific Cloudformation stack, + identified by parameter `stack_name`. + The AWS API truncates at a size of 1MB, and in order to get all chunks the method must be called + passing the previous retrieved token until no token is returned. """ logging.debug(f"Running get_all_codebuild_projects for aws profile {self._aws_profile}") - codebuild_client = self._get_codebuild_client() - current_result = codebuild_client.list_projects() - result = current_result["projects"] + cf_client = self._get_aws_client('cloudformation') + current_result = cf_client.list_stack_resources(StackName=stack_name) + result = current_result["StackResourceSummaries"] while "nextToken" in current_result: - current_result = codebuild_client.list_projects(nextToken=current_result["nextToken"]) - result.extend(current_result["projects"]) + current_result = cf_client.list_projects(StackName=stack_name, nextToken=current_result["nextToken"]) + result.extend(current_result["StackResourceSummaries"]) return result def start_codebuild(self, project: str, environment_variables_overrides: List[Dict[str, str]], branch: str) -> None: @@ -113,7 +103,7 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di :raises `RuntimeError` if build fails or AWS Batch build returns unknown status """ - codebuild_client = self._get_codebuild_client() + codebuild_client = self._get_aws_client("codebuild") logging.info(f"Trigger codebuild for project {project} with branch {branch} " f"and env_variables ({environment_variables_overrides})") ret_val = codebuild_client.start_build_batch(projectName=project, @@ -138,4 +128,3 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") elif build_status is not "IN_PROGRESS": raise RuntimeError(f"Batch build {build_id} has unknown build status: {build_status}") - diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index ac51168..a57e8ec 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -3,6 +3,7 @@ from typing import Tuple, Dict from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.lib.release_build import release_stack_name def get_environment_variable_override(env_variable: Tuple[str, str]) -> Dict[str, str]: @@ -12,8 +13,8 @@ def get_environment_variable_override(env_variable: Tuple[str, str]) -> Dict[str def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str, dry_run: bool) -> None: """ This command executes - 1. Retrieve all AWS Codebuild projects for this account - 2. Find the one which matches the given project + 1. Retrieve resources for the release codebuild stack for that given project + 2. Find the resource with type CodeBuild 3. Creates the environment variables override 4. Start and wait for batch build :raises: @@ -22,10 +23,10 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str """ logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile} for project {project} " f"with upload url: {upload_url}") - projects = aws_access.get_all_codebuild_projects() - matching_project = [p for p in projects if p.startswith(f"{project}ReleaseCodeBuild")] + resources = aws_access.get_all_stack_resources(release_stack_name(project)) + matching_project = [resource for resource in resources if resource["ResourceType"] == "AWS::CodeBuild::Project"] if len(matching_project) == 0: - raise ValueError(f"No project deployed for {project}. Found following projects: {projects}") + raise ValueError(f"No project deployed for {project}. Found following resources: {resources}") if len(matching_project) > 1: raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") if dry_run: @@ -40,5 +41,6 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str ("DRY_RUN", dry_run_value), ("GITHUB_TOKEN", gh_token)] environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) - aws_access.start_codebuild(matching_project[0], environment_variables_overrides=environment_variables_overrides, + aws_access.start_codebuild(matching_project[0]["PhysicalResourceId"], + environment_variables_overrides=environment_variables_overrides, branch=branch) diff --git a/test/test_start_release_build.py b/test/test_start_release_build.py index d83664e..a3ecfc0 100644 --- a/test/test_start_release_build.py +++ b/test/test_start_release_build.py @@ -1,14 +1,51 @@ +import datetime import os from unittest.mock import MagicMock +from dateutil.tz import tzutc + from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_release_build -PROJECT_NAME = "slc" -CODEBUILD_PROJECT_DUMMY_NAME = f"{PROJECT_NAME}CodeBuild-hashvalue" UPLOAD_URL = "http://deploy-release-artifacts-here.com" BRANCH = "main" GITHUB_TOKEN = "gh_secret" +#Original resources extracted from a ScriptLanguage cloudformation stack +DUMMY_RESOURCES = [ + {'LogicalResourceId': 'ReleaseArtifactsBucket', + 'PhysicalResourceId': 'scriptlanguagesreleasebuil-releaseartifactsbucket-6ikq8b0bojhj', + 'ResourceType': 'AWS::S3::Bucket', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 38, 36, 391000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', + 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseBatchBuildRole', + 'PhysicalResourceId': 'ScriptLanguagesReleaseBuild-ReleaseBatchBuildRole-18RVZAPWKW3ZB', + 'ResourceType': 'AWS::IAM::Role', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 38, 35, 103000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', + 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseCodeBuildLogGroup', + 'PhysicalResourceId': '/aws/codebuild/ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7', + 'ResourceType': 'AWS::Logs::LogGroup', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 11, 935000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseCodeBuildRole', + 'PhysicalResourceId': 'ScriptLanguagesReleaseBuild-ReleaseCodeBuildRole-1WPN324U80IRE', + 'ResourceType': 'AWS::IAM::Role', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 1, 806000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ScriptLanguagesReleaseCodeBuild', + 'PhysicalResourceId': 'ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7', + 'ResourceType': 'AWS::CodeBuild::Project', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 7, 850000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + } +] + def test_run_release_build(): """ @@ -16,8 +53,8 @@ def test_run_release_build(): """ aws_access_mock = MagicMock() os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN - aws_access_mock.get_all_codebuild_projects.return_value = [CODEBUILD_PROJECT_DUMMY_NAME] - run_start_release_build(aws_access=aws_access_mock, project=PROJECT_NAME, + aws_access_mock.get_all_stack_resources.return_value = DUMMY_RESOURCES + run_start_release_build(aws_access=aws_access_mock, project="slc", upload_url=UPLOAD_URL, branch=BRANCH, dry_run=False) expected_env_variable_overrides = [ {"name": "UPLOAD_URL", "value": UPLOAD_URL, "type": "PLAINTEXT"}, @@ -26,6 +63,6 @@ def test_run_release_build(): ] aws_access_mock. \ - start_codebuild.assert_called_once_with(CODEBUILD_PROJECT_DUMMY_NAME, + start_codebuild.assert_called_once_with("ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7", environment_variables_overrides=expected_env_variable_overrides, branch=BRANCH) From e2c8f410962dc3e42341dd3df13e97281e958f41 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 09:39:32 -0300 Subject: [PATCH 11/29] Changed comparison --- exasol_script_languages_container_ci_setup/lib/aws_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 523b646..230bc68 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -126,5 +126,5 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di break elif build_status in ['FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT']: raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") - elif build_status is not "IN_PROGRESS": + elif build_status != "IN_PROGRESS": raise RuntimeError(f"Batch build {build_id} has unknown build status: {build_status}") From 2d2e859da7f8c19000fadfe0eaa4e780bc2d0f1c Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 10:27:59 -0300 Subject: [PATCH 12/29] Check for timeout --- exasol_script_languages_container_ci_setup/lib/aws_access.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 230bc68..6bdd59e 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -113,6 +113,7 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di build_id = ret_val['buildBatch']['id'] logging.debug(f"Codebuild for project {project} with branch {branch} triggered. Id is {build_id}.") + succeeded = False for counter in range(120): #We wait for maximal 1h + (something) time.sleep(30) logging.debug(f"Checking status of codebuild id {build_id}.") @@ -123,8 +124,11 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di build_status = build_response['buildBatches'][0]['buildBatchStatus'] logging.info(f"Build status of codebuild id {build_id} is {build_status}") if build_status == 'SUCCEEDED': + succeeded = True break elif build_status in ['FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT']: raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") elif build_status != "IN_PROGRESS": raise RuntimeError(f"Batch build {build_id} has unknown build status: {build_status}") + if not succeeded: + raise RuntimeError(f"Batch build {build_id} ran into timeout.") From 8855a27f1f450724bdec333d0837a8a1c9999a9b Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 15:31:09 -0300 Subject: [PATCH 13/29] Splitted release-build into version for release and release-test --- .../cli/commands/start_release_build.py | 10 +--- .../cli/commands/start_test_release_build.py | 25 ++++++++ .../lib/aws_access.py | 2 +- .../lib/run_start_release_build.py | 59 ++++++++++++++++--- .../templates/release_build_buildspec.yaml | 4 +- test/test_start_release_build.py | 6 +- 6 files changed, 86 insertions(+), 20 deletions(-) create mode 100644 exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py index a54da4e..fe98870 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -13,19 +13,15 @@ @add_options(logging_options) @click.option('--project', type=str, required=True, help="""The project name. Must be same name as used for the AWS CodeBuild release stack creation.""") -@click.option('--upload-url', type=str, required=True, +@click.option('--upload-url', type=str, required=False, help="""The URL of the Github release where artifacts will be stored.""") @click.option('--branch', type=str, required=True, help="""The branch of the repository which will be used.""") -@click.option('--dry-run/--no-dry-run', default=False, - help="If true, runs release without pushing the container to the docker release repository." - "If false, also pushes the container to the docker release repository.") def start_release_build( aws_profile: str, log_level: str, project: str, upload_url: str, - branch: str, - dry_run: bool): + branch: str): set_log_level(log_level) - run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch, dry_run) + run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py new file mode 100644 index 0000000..3eff174 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -0,0 +1,25 @@ +import click + +from exasol_script_languages_container_ci_setup.cli.cli import cli +from exasol_script_languages_container_ci_setup.cli.common import add_options +from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level +from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options +from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_test_release_build + + +@cli.command() +@add_options(aws_options) +@add_options(logging_options) +@click.option('--project', type=str, required=True, + help="""The project name. Must be same name as used for the AWS CodeBuild release stack creation.""") +@click.option('--release-tag', type=str, required=False, + help="""The tag of the release for which the artifacts will be stored.""") +def start_release_build( + aws_profile: str, + log_level: str, + project: str, + release_tag: str, +): + set_log_level(log_level) + run_start_test_release_build(AwsAccess(aws_profile), project, release_tag) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index 6bdd59e..b98cdcd 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -114,7 +114,7 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di logging.debug(f"Codebuild for project {project} with branch {branch} triggered. Id is {build_id}.") succeeded = False - for counter in range(120): #We wait for maximal 1h + (something) + for counter in range(240): #We wait for maximal 2h + (something) time.sleep(30) logging.debug(f"Checking status of codebuild id {build_id}.") build_response = codebuild_client.batch_get_build_batches(ids=[build_id]) diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index a57e8ec..5b98bf5 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -1,5 +1,6 @@ import logging import os +import re from typing import Tuple, Dict from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess @@ -10,7 +11,19 @@ def get_environment_variable_override(env_variable: Tuple[str, str]) -> Dict[str return {"name": env_variable[0], "value": env_variable[1], "type": "PLAINTEXT"} -def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str, dry_run: bool) -> None: +def _parse_upload_url(upload_url: str) -> int: + """ + upload_url is expected to have the following format: `https://uploads.github.com/repos/exasol/script-languages-repo/releases/123/assets{?name,label}` + where `exasol/script-languages-repo` is the repository for which the release will be created and 123 is the id of the release. + This method return release id as integer. + """ + res = re.search(r"^https://uploads.github.com/repos/([a-zA-Z0-9\-_/]+)/releases/([\d]+)/assets", upload_url) + if res is None: + raise ValueError("Parameter upload_url is in unexpected format.") + return int(res.groups()[1]) + + +def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str) -> None: """ This command executes 1. Retrieve resources for the release codebuild stack for that given project @@ -19,7 +32,8 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str 4. Start and wait for batch build :raises: `RuntimeError` if build goes wrong or if anything on AWS CodeBuild is not as expected - `ValueError` if project is not found on AWS CodeBuild. + `ValueError` if project is not found on AWS CodeBuild or if the upload is not in expected format. + The upload url is only be used to get the release id. """ logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile} for project {project} " f"with upload url: {upload_url}") @@ -29,18 +43,49 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str raise ValueError(f"No project deployed for {project}. Found following resources: {resources}") if len(matching_project) > 1: raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") - if dry_run: - dry_run_value = "--dry-run" - else: - dry_run_value = "--no-dry-run" + dry_run_value = "--no-dry-run" gh_token = os.getenv("GITHUB_TOKEN") if gh_token is None: raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") - env_variables = [("UPLOAD_URL", upload_url), + env_variables = [("RELEASE_KEY", f"Id:{_parse_upload_url(upload_url=upload_url)}"), ("DRY_RUN", dry_run_value), ("GITHUB_TOKEN", gh_token)] environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) aws_access.start_codebuild(matching_project[0]["PhysicalResourceId"], environment_variables_overrides=environment_variables_overrides, branch=branch) + + +def run_start_test_release_build(aws_access: AwsAccess, project: str, tag: str) -> None: + """ + This command executes + 1. Retrieve resources for the release codebuild stack for that given project + 2. Find the resource with type CodeBuild + 3. Creates the environment variables override + 4. Start and wait for batch build + :raises: + `RuntimeError` if build goes wrong or if anything on AWS CodeBuild is not as expected + `ValueError` if project is not found on AWS CodeBuild or if the upload is not in expected format. + The tag is used to declare the branch and to declare the release key. + """ + logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile} for project {project} " + f"with tag: {tag}") + resources = aws_access.get_all_stack_resources(release_stack_name(project)) + matching_project = [resource for resource in resources if resource["ResourceType"] == "AWS::CodeBuild::Project"] + if len(matching_project) == 0: + raise ValueError(f"No project deployed for {project}. Found following resources: {resources}") + if len(matching_project) > 1: + raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") + dry_run_value = "--dry-run" + + gh_token = os.getenv("GITHUB_TOKEN") + if gh_token is None: + raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") + env_variables = [("RELEASE_KEY", f"Tag:{tag}"), + ("DRY_RUN", dry_run_value), + ("GITHUB_TOKEN", gh_token)] + environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) + aws_access.start_codebuild(matching_project[0]["PhysicalResourceId"], + environment_variables_overrides=environment_variables_overrides, + branch=tag) diff --git a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml index e4aa9f4..d5b84b3 100644 --- a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml +++ b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml @@ -6,7 +6,7 @@ env: shell: bash variables: RELEASE_DOCKER_REPOSITORY: "exasol/script-language-container" - UPLOAD_URL: "" + RELEASE_KEY: "Tag:latest" DRY_RUN: "--no-dry-run" @@ -30,7 +30,7 @@ phases: - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USER" --password-stdin build: commands: - - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --upload-url "$UPLOAD_URL" "$DRY_RUN" {{ config_file_parameter }} + - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --source_repo_url "$CODEBUILD_SOURCE_REPO_URL" --release-key "$RELEASE_KEY" "$DRY_RUN" {{ config_file_parameter }} artifacts: files: diff --git a/test/test_start_release_build.py b/test/test_start_release_build.py index a3ecfc0..f716eac 100644 --- a/test/test_start_release_build.py +++ b/test/test_start_release_build.py @@ -6,7 +6,7 @@ from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_release_build -UPLOAD_URL = "http://deploy-release-artifacts-here.com" +UPLOAD_URL = "https://uploads.github.com/repos/exasol/script-languages-repo/releases/123/assets{?name,label}" BRANCH = "main" GITHUB_TOKEN = "gh_secret" @@ -55,9 +55,9 @@ def test_run_release_build(): os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN aws_access_mock.get_all_stack_resources.return_value = DUMMY_RESOURCES run_start_release_build(aws_access=aws_access_mock, project="slc", - upload_url=UPLOAD_URL, branch=BRANCH, dry_run=False) + upload_url=UPLOAD_URL, branch=BRANCH) expected_env_variable_overrides = [ - {"name": "UPLOAD_URL", "value": UPLOAD_URL, "type": "PLAINTEXT"}, + {"name": "RELEASE_KEY", "value": "Id:123", "type": "PLAINTEXT"}, {"name": "DRY_RUN", "value": "--no-dry-run", "type": "PLAINTEXT"}, {"name": "GITHUB_TOKEN", "value": GITHUB_TOKEN, "type": "PLAINTEXT"} ] From e240b4d415aa979504ee20b12edad67d4a003e16 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 5 May 2022 15:44:53 -0300 Subject: [PATCH 14/29] Made cmd line parameter aws_profile optional --- .../cli/commands/deploy_ci_build.py | 3 ++- .../cli/commands/deploy_release_build.py | 3 ++- .../cli/commands/deploy_source_credentials.py | 3 ++- .../cli/commands/start_release_build.py | 4 +++- .../cli/commands/start_test_release_build.py | 4 +++- .../cli/commands/validate_ci_build.py | 3 ++- .../cli/commands/validate_release_build.py | 4 +++- .../cli/commands/validate_source_credentials.py | 4 +++- .../cli/options/aws_options.py | 2 +- 9 files changed, 21 insertions(+), 9 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/deploy_ci_build.py b/exasol_script_languages_container_ci_setup/cli/commands/deploy_ci_build.py index 15b21ab..0e12895 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/deploy_ci_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/deploy_ci_build.py @@ -1,5 +1,6 @@ import logging import sys +from typing import Optional import click @@ -19,7 +20,7 @@ @click.option('--project-url', type=str, required=True, help="""The URL of the project on Github.""") def deploy_ci_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, project_url: str): diff --git a/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py index 0a87802..51d1d51 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/deploy_release_build.py @@ -1,5 +1,6 @@ import logging import sys +from typing import Optional import click @@ -19,7 +20,7 @@ @click.option('--project-url', type=str, required=True, help="""The URL of the project on Github.""") def deploy_release_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, project_url: str): diff --git a/exasol_script_languages_container_ci_setup/cli/commands/deploy_source_credentials.py b/exasol_script_languages_container_ci_setup/cli/commands/deploy_source_credentials.py index ea57502..280af23 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/deploy_source_credentials.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/deploy_source_credentials.py @@ -1,5 +1,6 @@ import logging import sys +from typing import Optional import click @@ -21,7 +22,7 @@ @click.option('--secret-token-key', required=True, type=str, help="Token key stored as secret in AWS Secret Manager.") def deploy_source_credentials( - aws_profile: str, + aws_profile: Optional[str], log_level: str, secret_name: str, secret_user_key: str, diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py index fe98870..b82de0f 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -1,3 +1,5 @@ +from typing import Optional + import click from exasol_script_languages_container_ci_setup.cli.cli import cli @@ -18,7 +20,7 @@ @click.option('--branch', type=str, required=True, help="""The branch of the repository which will be used.""") def start_release_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, upload_url: str, diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index 3eff174..d5be50f 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -1,3 +1,5 @@ +from typing import Optional + import click from exasol_script_languages_container_ci_setup.cli.cli import cli @@ -16,7 +18,7 @@ @click.option('--release-tag', type=str, required=False, help="""The tag of the release for which the artifacts will be stored.""") def start_release_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, release_tag: str, diff --git a/exasol_script_languages_container_ci_setup/cli/commands/validate_ci_build.py b/exasol_script_languages_container_ci_setup/cli/commands/validate_ci_build.py index c066685..cb77a3b 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/validate_ci_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/validate_ci_build.py @@ -1,4 +1,5 @@ import logging +from typing import Optional import click @@ -18,7 +19,7 @@ @click.option('--project-url', type=str, required=True, help="""The URL of the project on Github.""") def validate_ci_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, project_url: str): diff --git a/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py index 7d64eda..6a429d2 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/validate_release_build.py @@ -1,3 +1,5 @@ +from typing import Optional + import click from exasol_script_languages_container_ci_setup.cli.cli import cli @@ -16,7 +18,7 @@ @click.option('--project-url', type=str, required=True, help="""The URL of the project on Github.""") def validate_release_build( - aws_profile: str, + aws_profile: Optional[str], log_level: str, project: str, project_url: str): diff --git a/exasol_script_languages_container_ci_setup/cli/commands/validate_source_credentials.py b/exasol_script_languages_container_ci_setup/cli/commands/validate_source_credentials.py index 281b5ed..f9cc819 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/validate_source_credentials.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/validate_source_credentials.py @@ -1,3 +1,5 @@ +from typing import Optional + import click from exasol_script_languages_container_ci_setup.cli.cli import cli @@ -18,7 +20,7 @@ @click.option('--secret-token-key', required=True, type=str, help="Github user token key stored as secret in AWS Secret Manager under the respective secret name.") def validate_source_credentials( - aws_profile: str, + aws_profile: Optional[str], log_level: str, secret_name: str, secret_user_key: str, diff --git a/exasol_script_languages_container_ci_setup/cli/options/aws_options.py b/exasol_script_languages_container_ci_setup/cli/options/aws_options.py index ad14367..b760ea4 100644 --- a/exasol_script_languages_container_ci_setup/cli/options/aws_options.py +++ b/exasol_script_languages_container_ci_setup/cli/options/aws_options.py @@ -1,6 +1,6 @@ import click aws_options = [ - click.option('--aws-profile', required=True, type=str, + click.option('--aws-profile', required=False, type=str, help="Id of the AWS profile to use."), ] From 7f48824a14728c254cbe596cc616d1ad1eebcd5f Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 11:23:15 -0300 Subject: [PATCH 15/29] Command start_test_release_build now creates the test draft release on Github itself. --- .../cli/commands/start_test_release_build.py | 15 +- .../lib/github_release_creator.py | 21 ++ .../lib/run_start_release_build.py | 22 +- .../templates/release_build_buildspec.yaml | 4 +- poetry.lock | 295 ++++++++++++++++-- pyproject.toml | 9 +- setup.py | 9 +- test/test_start_release_build.py | 2 +- test/test_start_test_release_build.py | 71 +++++ 9 files changed, 406 insertions(+), 42 deletions(-) create mode 100644 exasol_script_languages_container_ci_setup/lib/github_release_creator.py create mode 100644 test/test_start_test_release_build.py diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index d5be50f..4df14aa 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -7,6 +7,7 @@ from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options +from exasol_script_languages_container_ci_setup.lib.github_release_creator import GithubReleaseCreator from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_test_release_build @@ -15,13 +16,19 @@ @add_options(logging_options) @click.option('--project', type=str, required=True, help="""The project name. Must be same name as used for the AWS CodeBuild release stack creation.""") -@click.option('--release-tag', type=str, required=False, - help="""The tag of the release for which the artifacts will be stored.""") +@click.option('--repo-id', type=str, required=True, + help="""The repository for which the test release should be created.""", ) +@click.option('--branch', type=str, required=True, + help="""The branch for which the test release should be created.""") +@click.option('--release-title', type=str, required=True, + help="""The title of the Github draft release which will be created.""") def start_release_build( aws_profile: Optional[str], log_level: str, + repo_id: str, project: str, - release_tag: str, + branch: str, + release_title: str ): set_log_level(log_level) - run_start_test_release_build(AwsAccess(aws_profile), project, release_tag) + run_start_test_release_build(AwsAccess(aws_profile), GithubReleaseCreator(), repo_id, project, branch, release_title) diff --git a/exasol_script_languages_container_ci_setup/lib/github_release_creator.py b/exasol_script_languages_container_ci_setup/lib/github_release_creator.py new file mode 100644 index 0000000..babf281 --- /dev/null +++ b/exasol_script_languages_container_ci_setup/lib/github_release_creator.py @@ -0,0 +1,21 @@ +import os + +from github import Github + + +class GithubReleaseCreator(object): + """ + Implements creation of a Github Draft Release. + See https://docs.github.com/en/rest/releases/releases for details. + The access token needs to be stored in the environment variable GITHUB_TOKEN. + Returns the internal ID of the new release. + """ + def __init__(self): + self._token = os.getenv("GITHUB_TOKEN") + + def create_release(self, repo_id: str, branch: str, title: str) -> int: + gh = Github(self._token) + gh_repo = gh.get_repo(repo_id) + release = gh_repo.create_git_release(tag="", name=title, message="Test-Release", + draft=True, prerelease=True, target_commitish=branch) + return release.id diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index 5b98bf5..673e133 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -4,6 +4,7 @@ from typing import Tuple, Dict from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess +from exasol_script_languages_container_ci_setup.lib.github_release_creator import GithubReleaseCreator from exasol_script_languages_container_ci_setup.lib.release_build import release_stack_name @@ -48,7 +49,7 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str gh_token = os.getenv("GITHUB_TOKEN") if gh_token is None: raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") - env_variables = [("RELEASE_KEY", f"Id:{_parse_upload_url(upload_url=upload_url)}"), + env_variables = [("RELEASE_ID", f"{_parse_upload_url(upload_url=upload_url)}"), ("DRY_RUN", dry_run_value), ("GITHUB_TOKEN", gh_token)] environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) @@ -57,20 +58,23 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str branch=branch) -def run_start_test_release_build(aws_access: AwsAccess, project: str, tag: str) -> None: +def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: GithubReleaseCreator, repo_id: str, + project: str, branch: str, release_title: str) -> None: """ This command executes - 1. Retrieve resources for the release codebuild stack for that given project - 2. Find the resource with type CodeBuild - 3. Creates the environment variables override - 4. Start and wait for batch build + 1. Create the Github draft release for the given branch and title. + 2. Retrieve resources for the release codebuild stack for that given project + 3. Find the resource with type CodeBuild + 4. Creates the environment variables override + 5. Start and wait for batch build :raises: `RuntimeError` if build goes wrong or if anything on AWS CodeBuild is not as expected `ValueError` if project is not found on AWS CodeBuild or if the upload is not in expected format. The tag is used to declare the branch and to declare the release key. """ logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile} for project {project} " - f"with tag: {tag}") + f"for branch: {branch} with title: {release_title}") + release_id = gh_release_creator.create_release(repo_id, branch, release_title) resources = aws_access.get_all_stack_resources(release_stack_name(project)) matching_project = [resource for resource in resources if resource["ResourceType"] == "AWS::CodeBuild::Project"] if len(matching_project) == 0: @@ -82,10 +86,10 @@ def run_start_test_release_build(aws_access: AwsAccess, project: str, tag: str) gh_token = os.getenv("GITHUB_TOKEN") if gh_token is None: raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") - env_variables = [("RELEASE_KEY", f"Tag:{tag}"), + env_variables = [("RELEASE_ID", f"{release_id}"), ("DRY_RUN", dry_run_value), ("GITHUB_TOKEN", gh_token)] environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) aws_access.start_codebuild(matching_project[0]["PhysicalResourceId"], environment_variables_overrides=environment_variables_overrides, - branch=tag) + branch=branch) diff --git a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml index d5b84b3..77eb0c9 100644 --- a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml +++ b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml @@ -6,7 +6,7 @@ env: shell: bash variables: RELEASE_DOCKER_REPOSITORY: "exasol/script-language-container" - RELEASE_KEY: "Tag:latest" + RELEASE_ID: "" DRY_RUN: "--no-dry-run" @@ -30,7 +30,7 @@ phases: - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USER" --password-stdin build: commands: - - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --source_repo_url "$CODEBUILD_SOURCE_REPO_URL" --release-key "$RELEASE_KEY" "$DRY_RUN" {{ config_file_parameter }} + - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --source_repo_url "$CODEBUILD_SOURCE_REPO_URL" --release-id "$RELEASE_ID" "$DRY_RUN" {{ config_file_parameter }} artifacts: files: diff --git a/poetry.lock b/poetry.lock index 41afc21..59ad7ef 100644 --- a/poetry.lock +++ b/poetry.lock @@ -37,14 +37,14 @@ dev = ["coverage (>=5.3,<6.0)", "flake8 (>=3.8.4,<3.9.0)", "tox (>=3.24,<4.0)", [[package]] name = "boto3" -version = "1.22.2" +version = "1.22.8" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.6" [package.dependencies] -botocore = ">=1.25.2,<1.26.0" +botocore = ">=1.25.8,<1.26.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.5.0,<0.6.0" @@ -53,7 +53,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.25.2" +version = "1.25.8" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -75,9 +75,20 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "cffi" +version = "1.15.0" +description = "Foreign Function Interface for Python calling C code." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + [[package]] name = "cfn-lint" -version = "0.59.0" +version = "0.59.1" description = "Checks CloudFormation templates for practices and behaviour that could potentially be improved" category = "dev" optional = false @@ -106,7 +117,7 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false @@ -123,6 +134,20 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "deprecated" +version = "1.2.13" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "importlib-resources (<4)", "configparser (<5)", "sphinxcontrib-websupport (<2)", "zipp (<2)", "PyTest (<5)", "PyTest-Cov (<2.6)", "pytest", "pytest-cov"] + [[package]] name = "docker" version = "5.0.3" @@ -188,6 +213,27 @@ simplejson = ">=3.16.0" [package.source] type = "url" url = "https://github.com/exasol/integration-test-docker-environment/releases/download/0.10.0/exasol_integration_test_docker_environment-0.10.0-py3-none-any.whl" +[[package]] +name = "exasol-script-languages-container-ci" +version = "0.1.0" +description = "Implements CI builds for script-language-container." +category = "main" +optional = false +python-versions = ">=3.8.0,<4.0" +develop = false + +[package.dependencies] +click = "^8.0.3" +exasol-integration-test-docker-environment = {url = "https://github.com/exasol/integration-test-docker-environment/releases/download/0.10.0/exasol_integration_test_docker_environment-0.10.0-py3-none-any.whl"} +exasol_script_languages_container_tool = {url = "https://github.com/exasol/script-languages-container-tool/releases/download/0.12.0/exasol_script_languages_container_tool-0.12.0-py3-none-any.whl"} +GitPython = ">=3.1.0" +PyGithub = "^1.55.0" + +[package.source] +type = "git" +url = "https://github.com/exasol/script-languages-container-ci.git" +reference = "feature/9_implement_run-release_command" +resolved_reference = "a7d812ddcaaae6b7229476d6f7602a9f96c4392a" [[package]] name = "exasol-script-languages-container-tool" @@ -271,7 +317,7 @@ python-versions = "*" [[package]] name = "jinja2" -version = "3.1.1" +version = "3.1.2" description = "A very fast and expressive template engine." category = "main" optional = false @@ -434,7 +480,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pbr" -version = "5.8.1" +version = "5.9.0" description = "Python Build Reasonableness" category = "dev" optional = false @@ -460,6 +506,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pydot" version = "1.4.2" @@ -471,6 +525,52 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.dependencies] pyparsing = ">=2.1.4" +[[package]] +name = "pygithub" +version = "1.55" +description = "Use the full Github API v3" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +deprecated = "*" +pyjwt = ">=2.0" +pynacl = ">=1.4.0" +requests = ">=2.14.0" + +[package.extras] +integrations = ["cryptography"] + +[[package]] +name = "pyjwt" +version = "2.3.0" +description = "JSON Web Token implementation in Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] +crypto = ["cryptography (>=3.3.1)"] +dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"] + +[[package]] +name = "pynacl" +version = "1.5.0" +description = "Python binding to the Networking and Cryptography (NaCl) library" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] +tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"] + [[package]] name = "pyparsing" version = "3.0.8" @@ -707,6 +807,14 @@ test = ["websockets"] docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] optional = ["python-socks", "wsaccel"] +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + [[package]] name = "zipp" version = "3.8.0" @@ -722,7 +830,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8.0,<4.0" -content-hash = "b4b9d2debdba7583b5f600f60da500f1de2107130076d6bb1d0e68c78c792e0f" +content-hash = "7889bba84574f521476c2208f50d786b5bebd4fbfc228f6c67b60c96c32e3f30" [metadata.files] atomicwrites = [ @@ -739,33 +847,89 @@ aws-sam-translator = [ {file = "aws_sam_translator-1.45.0-py3-none-any.whl", hash = "sha256:40a6dd5a0aba32c7b38b0f5c54470396acdcd75e4b64251b015abdf922a18b5f"}, ] boto3 = [ - {file = "boto3-1.22.2-py3-none-any.whl", hash = "sha256:1d0c9cf30c5c93ce4628b22f7dff21f80efd104706967be2afb47ea93dcbceb8"}, - {file = "boto3-1.22.2.tar.gz", hash = "sha256:fb9a66722a15b0a8edb4f29d63f013877c4c528eff1225bb31dab723c3e5a9ed"}, + {file = "boto3-1.22.8-py3-none-any.whl", hash = "sha256:a6925fe88cc9cd6aab35ea950cdb1678a88210ece5271bb64c1593a46ed6de6c"}, + {file = "boto3-1.22.8.tar.gz", hash = "sha256:222cfb68bd4f46f4beae7770f1f6b066786254462f289027ca123fe77eb50ff9"}, ] botocore = [ - {file = "botocore-1.25.2-py3-none-any.whl", hash = "sha256:dff4aaf03c2b8ee4a861405fd35c83b585a661a541d520f51e863a31bb18e0f8"}, - {file = "botocore-1.25.2.tar.gz", hash = "sha256:78363cd023c6123a65d90080e14a9fb625a9639d970ab03471c6fe95258ab8c0"}, + {file = "botocore-1.25.8-py3-none-any.whl", hash = "sha256:5b342da3487e5669801f5589cc15e379fc9f7803a426584d08a6329575644da3"}, + {file = "botocore-1.25.8.tar.gz", hash = "sha256:f0a7e9fb6000a6cfc7ca63971d8d1ab4ed3c38514ded439bcf1fc8bca162dc1b"}, ] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] cfn-lint = [ - {file = "cfn-lint-0.59.0.tar.gz", hash = "sha256:2dab012912d5869506258f0d4bb15d8e7f0ac2117e75fa599b50764fd867dba2"}, - {file = "cfn_lint-0.59.0-py3-none-any.whl", hash = "sha256:e5e98712cb162ee70eedd0fd8eae8d45d6420d43502e6120ad768f00ff1eec05"}, + {file = "cfn-lint-0.59.1.tar.gz", hash = "sha256:3d60a869f55c5e1197a57f324ace6a3f95c5f9ce4d45806957585893fb23a69d"}, + {file = "cfn_lint-0.59.1-py3-none-any.whl", hash = "sha256:45539b62ae5337d03f5c690126f22266f514d9d697be947bab0f1cc59851f25a"}, ] charset-normalizer = [ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] +deprecated = [ + {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, + {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, +] docker = [ {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, @@ -776,6 +940,7 @@ docutils = [ ] exasol-error-reporting-python = [] exasol-integration-test-docker-environment = [] +exasol-script-languages-container-ci = [] exasol-script-languages-container-tool = [] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, @@ -802,8 +967,8 @@ iniconfig = [ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] jinja2 = [ - {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, - {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] jmespath = [ {file = "jmespath-1.0.0-py3-none-any.whl", hash = "sha256:e8dcd576ed616f14ec02eed0005c85973b5890083313860136657e24784e4c04"}, @@ -894,8 +1059,8 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] pbr = [ - {file = "pbr-5.8.1-py2.py3-none-any.whl", hash = "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec"}, - {file = "pbr-5.8.1.tar.gz", hash = "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25"}, + {file = "pbr-5.9.0-py2.py3-none-any.whl", hash = "sha256:e547125940bcc052856ded43be8e101f63828c2d94239ffbe2b327ba3d5ccf0a"}, + {file = "pbr-5.9.0.tar.gz", hash = "sha256:e8dca2f4b43560edef58813969f52a56cef023146cbb8931626db80e6c1c4308"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -905,10 +1070,34 @@ py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] pydot = [ {file = "pydot-1.4.2-py2.py3-none-any.whl", hash = "sha256:66c98190c65b8d2e2382a441b4c0edfdb4f4c025ef9cb9874de478fb0793a451"}, {file = "pydot-1.4.2.tar.gz", hash = "sha256:248081a39bcb56784deb018977e428605c1c758f10897a339fce1dd728ff007d"}, ] +pygithub = [ + {file = "PyGithub-1.55-py3-none-any.whl", hash = "sha256:2caf0054ea079b71e539741ae56c5a95e073b81fa472ce222e81667381b9601b"}, + {file = "PyGithub-1.55.tar.gz", hash = "sha256:1bbfff9372047ff3f21d5cd8e07720f3dbfdaf6462fcaed9d815f528f1ba7283"}, +] +pyjwt = [ + {file = "PyJWT-2.3.0-py3-none-any.whl", hash = "sha256:e0c4bb8d9f0af0c7f5b1ec4c5036309617d03d56932877f2f7a0beeb5318322f"}, + {file = "PyJWT-2.3.0.tar.gz", hash = "sha256:b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41"}, +] +pynacl = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] pyparsing = [ {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, @@ -1140,6 +1329,72 @@ websocket-client = [ {file = "websocket-client-1.3.2.tar.gz", hash = "sha256:50b21db0058f7a953d67cc0445be4b948d7fc196ecbeb8083d68d94628e4abf6"}, {file = "websocket_client-1.3.2-py3-none-any.whl", hash = "sha256:722b171be00f2b90e1d4fb2f2b53146a536ca38db1da8ff49c972a4e1365d0ef"}, ] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] zipp = [ {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, diff --git a/pyproject.toml b/pyproject.toml index 3ffd0a0..664560c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,12 +11,15 @@ authors = [ [tool.poetry.dependencies] python = ">=3.8.0,<4.0" -click = "^8.0.3" -jinja2 = ">=3.0.0" +click = "^8.1.3" +jinja2 = ">=3.1.0" exasol_error_reporting_python = { git = "https://github.com/exasol/error-reporting-python.git", branch = "main" } exasol_script_languages_container_tool = { url = "https://github.com/exasol/script-languages-container-tool/releases/download/0.12.0/exasol_script_languages_container_tool-0.12.0-py3-none-any.whl" } -boto3 = "^1.21.34" +exasol-script-languages-container-ci = {git = "https://github.com/exasol/script-languages-container-ci.git", branch="feature/9_implement_run-release_command"} + +boto3 = "^1.22.0" jsonschema = "^3.2.0" +PyGithub = "^1.55.0" [build-system] requires = ["poetry_core>=1.0.0"] diff --git a/setup.py b/setup.py index d2fa32b..0d7dc42 100644 --- a/setup.py +++ b/setup.py @@ -12,13 +12,16 @@ {'': ['*'], 'exasol_script_languages_container_ci_setup': ['templates/*']} install_requires = \ -['boto3>=1.21.34,<2.0.0', - 'click>=8.0.3,<9.0.0', +['PyGithub>=1.55.0,<2.0.0', + 'boto3>=1.22.0,<2.0.0', + 'click>=8.1.3,<9.0.0', + 'exasol-script-languages-container-ci @ ' + 'git+https://github.com/exasol/script-languages-container-ci.git@feature/9_implement_run-release_command', 'exasol_error_reporting_python @ ' 'git+https://github.com/exasol/error-reporting-python.git@main', 'exasol_script_languages_container_tool @ ' 'https://github.com/exasol/script-languages-container-tool/releases/download/0.12.0/exasol_script_languages_container_tool-0.12.0-py3-none-any.whl', - 'jinja2>=3.0.0', + 'jinja2>=3.1.0', 'jsonschema>=3.2.0,<4.0.0'] setup_kwargs = { diff --git a/test/test_start_release_build.py b/test/test_start_release_build.py index f716eac..d656653 100644 --- a/test/test_start_release_build.py +++ b/test/test_start_release_build.py @@ -57,7 +57,7 @@ def test_run_release_build(): run_start_release_build(aws_access=aws_access_mock, project="slc", upload_url=UPLOAD_URL, branch=BRANCH) expected_env_variable_overrides = [ - {"name": "RELEASE_KEY", "value": "Id:123", "type": "PLAINTEXT"}, + {"name": "RELEASE_ID", "value": "123", "type": "PLAINTEXT"}, {"name": "DRY_RUN", "value": "--no-dry-run", "type": "PLAINTEXT"}, {"name": "GITHUB_TOKEN", "value": GITHUB_TOKEN, "type": "PLAINTEXT"} ] diff --git a/test/test_start_test_release_build.py b/test/test_start_test_release_build.py new file mode 100644 index 0000000..aa8e762 --- /dev/null +++ b/test/test_start_test_release_build.py @@ -0,0 +1,71 @@ +import datetime +import os +from unittest.mock import MagicMock + +from dateutil.tz import tzutc + +from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_test_release_build + +REPO_ID = "script-languages-repo" +BRANCH = "main" +GITHUB_TOKEN = "gh_secret" +RELEASE_TITLE = "test-release" + +#Original resources extracted from a ScriptLanguage cloudformation stack +DUMMY_RESOURCES = [ + {'LogicalResourceId': 'ReleaseArtifactsBucket', + 'PhysicalResourceId': 'scriptlanguagesreleasebuil-releaseartifactsbucket-6ikq8b0bojhj', + 'ResourceType': 'AWS::S3::Bucket', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 38, 36, 391000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', + 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseBatchBuildRole', + 'PhysicalResourceId': 'ScriptLanguagesReleaseBuild-ReleaseBatchBuildRole-18RVZAPWKW3ZB', + 'ResourceType': 'AWS::IAM::Role', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 38, 35, 103000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', + 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseCodeBuildLogGroup', + 'PhysicalResourceId': '/aws/codebuild/ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7', + 'ResourceType': 'AWS::Logs::LogGroup', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 11, 935000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ReleaseCodeBuildRole', + 'PhysicalResourceId': 'ScriptLanguagesReleaseBuild-ReleaseCodeBuildRole-1WPN324U80IRE', + 'ResourceType': 'AWS::IAM::Role', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 1, 806000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + }, + {'LogicalResourceId': 'ScriptLanguagesReleaseCodeBuild', + 'PhysicalResourceId': 'ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7', + 'ResourceType': 'AWS::CodeBuild::Project', + 'LastUpdatedTimestamp': datetime.datetime(2022, 5, 4, 18, 39, 7, 850000, tzinfo=tzutc()), + 'ResourceStatus': 'CREATE_COMPLETE', 'DriftInformation': {'StackResourceDriftStatus': 'NOT_CHECKED'} + } +] + + +def test_run_test_release_build(): + """ + Test if invocation of run_start_test_release_build calls AwsAccess with expected arguments. + """ + aws_access_mock = MagicMock() + github_release_creator_mock = MagicMock() + os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN + aws_access_mock.get_all_stack_resources.return_value = DUMMY_RESOURCES + github_release_creator_mock.create_release.return_value = 123 + run_start_test_release_build(aws_access=aws_access_mock, gh_release_creator=github_release_creator_mock, + project="slc", repo_id=REPO_ID, branch=BRANCH, release_title=RELEASE_TITLE) + expected_env_variable_overrides = [ + {"name": "RELEASE_ID", "value": "123", "type": "PLAINTEXT"}, + {"name": "DRY_RUN", "value": "--dry-run", "type": "PLAINTEXT"}, + {"name": "GITHUB_TOKEN", "value": GITHUB_TOKEN, "type": "PLAINTEXT"} + ] + + aws_access_mock. \ + start_codebuild.assert_called_once_with("ScriptLanguagesReleaseCodeB-FTGeeZLjmjX7", + environment_variables_overrides=expected_env_variable_overrides, + branch=BRANCH) From d3391a294af0136c009e617f283a770d16ee9bcd Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 11:31:28 -0300 Subject: [PATCH 16/29] Added start_test_release_build to import --- exasol_script_languages_container_ci_setup/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/__init__.py b/exasol_script_languages_container_ci_setup/__init__.py index d1197c4..662e118 100644 --- a/exasol_script_languages_container_ci_setup/__init__.py +++ b/exasol_script_languages_container_ci_setup/__init__.py @@ -8,5 +8,6 @@ validate_ci_build, validate_release_build, validate_source_credentials, - start_release_build + start_release_build, + start_test_release_build ) From c0d8cb9bcfe1aadde4e3609c5edddb11fbafa647 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 11:36:36 -0300 Subject: [PATCH 17/29] Fixed start_test_release_build t --- .../cli/commands/start_release_build.py | 4 ++++ .../cli/commands/start_test_release_build.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py index b82de0f..ad9c075 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -25,5 +25,9 @@ def start_release_build( project: str, upload_url: str, branch: str): + """ + This command triggers the AWS release Codebuild to upload the + release artifacts onto the given Github release, indicated by parameter 'upload_url'. + """ set_log_level(log_level) run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index 4df14aa..42417ad 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -22,7 +22,7 @@ help="""The branch for which the test release should be created.""") @click.option('--release-title', type=str, required=True, help="""The title of the Github draft release which will be created.""") -def start_release_build( +def start_test_release_build( aws_profile: Optional[str], log_level: str, repo_id: str, @@ -30,5 +30,9 @@ def start_release_build( branch: str, release_title: str ): + """ + This command creates a release draft on Github and triggers the AWS release Codebuild to upload the + release artifacts onto the new Github release. + """ set_log_level(log_level) run_start_test_release_build(AwsAccess(aws_profile), GithubReleaseCreator(), repo_id, project, branch, release_title) From 9ca58536f537bcfa5ae5faf2181616f6a103fa53 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 12:19:12 -0300 Subject: [PATCH 18/29] Fixed release_build_buildspec.yaml --- .../templates/release_build_buildspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml index 77eb0c9..2b4e110 100644 --- a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml +++ b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml @@ -30,7 +30,7 @@ phases: - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USER" --password-stdin build: commands: - - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --source_repo_url "$CODEBUILD_SOURCE_REPO_URL" --release-id "$RELEASE_ID" "$DRY_RUN" {{ config_file_parameter }} + - poetry run python3 -m exasol_script_languages_container_ci.main run-release --flavor $FLAVOR --docker-user "$DOCKER_USER" --docker-password "$DOCKER_PASSWORD" --docker-release-repository "$RELEASE_DOCKER_REPOSITORY" --source-repo-url "$CODEBUILD_SOURCE_REPO_URL" --release-id "$RELEASE_ID" "$DRY_RUN" {{ config_file_parameter }} artifacts: files: From c5587ac2ab105f6363beda65e070f222306e107d Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 12:36:40 -0300 Subject: [PATCH 19/29] Sort flavors in buildspec --- .../lib/generate_buildspec_common.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py index 8c85171..35df54c 100644 --- a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -2,7 +2,7 @@ import logging from dataclasses import dataclass from pathlib import Path -from typing import Optional, Tuple, Set +from typing import Optional, Tuple, List import jsonschema @@ -48,7 +48,10 @@ def get_config_file_parameter(config_file: Optional[str]): return f"--config-file {config_file}" -def _find_flavors(flavor_root_paths: Tuple[str, ...]) -> Set[Flavor]: +def _find_flavors(flavor_root_paths: Tuple[str, ...]) -> List[Flavor]: + """" + Find flavors under the given path(s) and return them in ordered list. + """ flavors = set() for flavor_root_path in [Path(f).resolve() for f in flavor_root_paths]: assert flavor_root_path.is_dir() @@ -57,7 +60,9 @@ def _find_flavors(flavor_root_paths: Tuple[str, ...]) -> Set[Flavor]: dirs = (d for d in flavor_root_path.iterdir() if d.is_dir()) flavors.update(map(lambda directory: Flavor(directory.name), dirs)) logging.info(f"Found flavors: {flavors}") - return flavors + return_value = list(flavors) + return_value.sort() + return return_value def write_batch_build_spec(flavor_root_paths: Tuple[str, ...], output_pathname: str) -> None: From 20cde9d1e3f43be9779f2a0fb820d566f7bc3a16 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 12:44:09 -0300 Subject: [PATCH 20/29] Fix bug in generate_buildspec_common.py --- .../lib/generate_buildspec_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py index 35df54c..6c7828e 100644 --- a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -9,7 +9,7 @@ from exasol_script_languages_container_ci_setup.lib.render_template import render_template -@dataclass(eq=True, frozen=True) +@dataclass(eq=True, frozen=True, order=True) class Flavor(object): """" Holds the name and the formatted name used for generating the buildspec. From 77bceb422cc87a61075a23ded1b75e4893a284e2 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 6 May 2022 15:10:58 -0300 Subject: [PATCH 21/29] Added some additional info --- .gitignore | 1 + user_guide/release-flow.drawio | 1 + user_guide/release-flow.png | Bin 0 -> 87642 bytes user_guide/user_guide.md | 17 +++++++++++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 user_guide/release-flow.drawio create mode 100644 user_guide/release-flow.png diff --git a/.gitignore b/.gitignore index 689264b..ee81b21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea .pytest_cache +.gitignore diff --git a/user_guide/release-flow.drawio b/user_guide/release-flow.drawio new file mode 100644 index 0000000..08c79f9 --- /dev/null +++ b/user_guide/release-flow.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/user_guide/release-flow.png b/user_guide/release-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cccfd647081c3bc958b3637102d690a780388a4d GIT binary patch literal 87642 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

w)3==^NwrrDO2+K{WJbK!# zS`h4%^G>@^N<_df>~#yPpzD`c2Qfs*HcGLl$oFVcr5Bu$<5bS z+50+*%nlVEz7*pR5xLuu`@HTVWS%`a8lieN;*>~n-kC>wZI|zW1JEpc%*y6ghlVQcM!#U}Qwb5IO62c9re7wHsM~#q zI2%H+;!-aGb*iD#Iz+Iek#SuTG%O!~7TXN8H!nwFR3vSmc#s>L$a;8iW3$|xup;1R zV7&R~msIsI_!M z%F)1LRk|=B(n}093>?=Ac0t-yK?F zAXt)}+z0LBk|LB%YO0qQ{$E`$V30Bsgft1j!RfQzD z1iALRb(d%p&qMf-N{v0X3?hRRW{iziH+LckmA6+;Ty8qj+|shP{>~)wg6K0$Pew6w zM@uw`%(Gv%1pPrt5$LrgLhq-o1oqcMr zjt5`z`h6}%^NLgox~)8|D&F(PsNPr&mfa265O@cU9K1_u*dj)#fk;XZGtZyY@wfz{ z#QQS!eaj1^P2houcA?-wl?oXQw&8lHt`b8xIGxy@)0=e()E{LuL*Zxdznw{2C!>Jn z{#M(4z<6d!dNs?~b6$;LGC7_^{0 z?t&eDmKQR(c(ZDBzQr8y6hlRuwEW)fNe`S<3Lm`d|vl?Id)>L!M|*)WGacN| z(hg);-dVjAv?riv*eq4ob9j5w@Rx1h-rnB$6LHtgps2G-oaWKpb>K<%!{yhNW|hQ~ zd5UQtGZiVu?$9Ukq@$-%^p1v5^5DrZ^6bqX@`XMf)1PGAVoOxIiQ3gal@y)dVv2}sf#s0R47gx0W$@x=9w#aAKI{1A3^X6H>m$lSe zc)Xo1v5#Ay_{>%bVYml*@-wj%NAFp=BlE3w{XG5ArL+R0G;OG~PM&gE@w;n16F-Zq z$?siW(_E}x^SA%VywM+Dl-fpo-;FF^MCg1k=0xsb(7_d`Wz>tq_T&rknt$q&Qoi-y-}-YG`_rknEB83M^l2Fx z14`^QecgFP-KVt75AXDFi#Nh1a0C=oB*@3O4C=zhmp;KoFjx0%-nGHtj^ z-mPkG>Yp2-tV?-XhvnQ&C)VdJ`}94NSPose>wV&)b57BY7sc14R#x66pKaM|kURIw zvH0DZ?MCVC7aOLAUk!G96Mj9I(p*n(6Q}}gIQOu>rRw*d6~eEBRqJsAvoVOs)vpI@ z%Wwr^T$qSU#W6J-Ig&ufSm_DrI3{8AyOrZsDI?*tV!~cNBiG7jhd@xH{+8QN(fOdy z7qTvJUh=>2nU6u1ZC6%SHstfOqIYgzTi3$0)6-G zSR&|7+||r5lVQ~G6~WD`f97I<>B6-k>;MT$Wh1g`2KP4#WZ8MpLOqr)9nJQCknM0Wp4W@^6rl0X(hWU4N3jUU+C)AaYYbrn^Wu2ihO)&`QuxsKG+?dFoIL!t zj&BuJx4@;In5A2aOT-dG-cE=LBy6Z6DT!r*gp39qRF4Qzii-EQQH%zr>V+6$EDP_n z&Njs16#NtN6keMKE#Z`tv|tN*2wpgM5)!1hE}rBdAT2eOhJU^mMdxpcDwqZSVh5lu z%mkl)cI3N=#;w`RQkUlOJlxyg;O{0LR~KML44?OHm;#TJ^5HzkeqQlBqk+(9oyVgz zW4Etwj-rT#EuODkd|}|uPi+l5&hjLoXl^6B0}0H$4{bG$#b^3&(7&;5j#ZLl0 z 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%0AGrzzF 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�x$~C`@SJnk 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 z zEMrOLOK~GS$FXgM<5I7wvQo-1M1~NBt3xM%ZY$!}9Nd=hHk$ZyP+6Nd~D z_gs@r{NyAgb%voZk0segvYTGq$_sDI)L4oU=TFeV6)insbxGtVEJ9*?T+MQ10lE%6 zaavu|`T|*pDGd?ZE~1qiK9I4vt3d3eS0Ko*OQo%)?RkFqY(${-BV+fkXg3234bY|L ze7OO)7Mqm55E$!JtIT8aGcc*0->4kW!)-moXXjc3lGk{^`wy|^g14#{WRrfT5u`5_ z(LDxYI5d>G$BDp_u=og_4{DAKP5o}vexuULGxvA^zsRsY84LK3xpRg4JPZ)bE6U1_ zUL3j!tpRj@s8T~&8dO>e8>%;3PX~(@8Sa+bpOY&>H*mt~piEd0JZ$-&eHkQkfTW}g?h&^#|_KiM2K_RWBL4`sV@j0bZky+AE?=L zAK@?O?Z2@(s&GFf=^z*OrMFUA2D^&}C&#yfo)vv!RDtIWn9mK6`{_-bgNoPkUWYUM z+6lPe1pQz{PZpV}0uUH10ADIb8?5L?pN4mBi+eXg7H8w4b=y$bLEi2>q|E$3q5IiT z4Y$o;T#Zka?=Lgy+aaA8qu`s0N8Hto5(Hw5(2YMKwBxa~mobk6D_n^2E6lG#qOUvU zULU1Ugz6Zhmrx0FabUBsBm}eT4aLb*Tdum$+JARjDbd`jEguF~xCH@fG#ruYB*)+R zIA#jld}$0ax;pq{!(^xF2;7~QkuW#B#PDpnIfIigf*P+7I4&{?)lm0Q4V!9`2w>XH zLp!rK_Y6%aWF7;a6@i6;aKr#gXP3ywp0`w#Ls0aG?G&#ya0yp7ocCM*2_>gqUnA}0 zB@DkFYyD!!HODA`dTFc^I5!(2jM?VBeF$>@1(;lsM6loc=O9|2e>DE)hwSZePJN8h zGWGf95ku1-$eZc6J#8%uxXytypRYV~ZuN~|(~S!9vgqEQ>Qsd{!<+TJ)vH!@rcmvx z%+!@FFW2YtbANwpe}p0?9uetsDPsN}Tdu8+Ghwlc5;55-Q9Jv7==jukeXkEM5m+?# zjQTe|t=nDmA@%O$blfgVdC$K3bj7yeh#)I%#gx0n*B_62Su2*+48El-FBv%Sx8K7* z?u)7&%;UY@@a!cE>J{MMga?HhNw!V4i(Yjpspw?<@#6tiy~G`?*BM$rHAN+^155*$a zoyvnt6WFOK>lJ?FJ?^H3M_JagUicy};|fJ5x#3WgXvC^%ixXuNZRupm65Tib5kxg)4Jk3`Ir# zYpn`w*tX{)9k0yy-?U^T+D=R7Tsy_=HDmVE zANLO3S}plVcbcI5y{?$lnd9~D>M7cpOI{JX{z*9g9=6Ta5FHaR{~_}A8u!Y`dlU~RAMq(JEPA9FnzgE&$)R;Q_-1+u*~U8F z8fujr&TN>cZElsVqqikqv&3YrI;+iOgUP0*wp*X0B#T2WkLGQO41Yj?Keu(BE;pQm G68{e|-vC Date: Thu, 12 May 2022 14:03:10 -0300 Subject: [PATCH 22/29] Changes from code review --- .../cli/commands/start_release_build.py | 3 +- .../cli/commands/start_test_release_build.py | 11 ++-- .../lib/aws_access.py | 49 ++++++++------ .../lib/generate_buildspec_common.py | 21 +++--- .../lib/github_release_creator.py | 4 +- .../lib/run_start_release_build.py | 65 +++++++------------ test/test_start_release_build.py | 2 +- test/test_start_test_release_build.py | 6 +- user_guide/user_guide.md | 2 +- 9 files changed, 78 insertions(+), 85 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py index ad9c075..776f829 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_release_build.py @@ -1,3 +1,4 @@ +import os from typing import Optional import click @@ -30,4 +31,4 @@ def start_release_build( release artifacts onto the given Github release, indicated by parameter 'upload_url'. """ set_log_level(log_level) - run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch) + run_start_release_build(AwsAccess(aws_profile), project, upload_url, branch, os.getenv("GITHUB_TOKEN")) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index 42417ad..b9e238e 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -1,3 +1,4 @@ +import os from typing import Optional import click @@ -16,8 +17,9 @@ @add_options(logging_options) @click.option('--project', type=str, required=True, help="""The project name. Must be same name as used for the AWS CodeBuild release stack creation.""") -@click.option('--repo-id', type=str, required=True, - help="""The repository for which the test release should be created.""", ) +@click.option('--repo-name', type=str, required=True, + help="""The repository for which the test release should be created. + For example 'exasol/script-languages'.""", ) @click.option('--branch', type=str, required=True, help="""The branch for which the test release should be created.""") @click.option('--release-title', type=str, required=True, @@ -25,7 +27,7 @@ def start_test_release_build( aws_profile: Optional[str], log_level: str, - repo_id: str, + repo_name: str, project: str, branch: str, release_title: str @@ -35,4 +37,5 @@ def start_test_release_build( release artifacts onto the new Github release. """ set_log_level(log_level) - run_start_test_release_build(AwsAccess(aws_profile), GithubReleaseCreator(), repo_id, project, branch, release_title) + run_start_test_release_build(AwsAccess(aws_profile), GithubReleaseCreator(), repo_name, + project, branch, release_title, os.getenv("GITHUB_TOKEN")) diff --git a/exasol_script_languages_container_ci_setup/lib/aws_access.py b/exasol_script_languages_container_ci_setup/lib/aws_access.py index b98cdcd..80464d2 100644 --- a/exasol_script_languages_container_ci_setup/lib/aws_access.py +++ b/exasol_script_languages_container_ci_setup/lib/aws_access.py @@ -1,6 +1,6 @@ import logging import time -from typing import Optional, List, Dict, Any +from typing import Optional, List, Dict, Any, Iterable import boto3 from botocore.exceptions import ClientError @@ -12,6 +12,13 @@ class AwsAccess(object): def __init__(self, aws_profile: Optional[str]): self._aws_profile = aws_profile + @property + def aws_profile_for_logging(self) -> str: + if self._aws_profile is not None: + return self._aws_profile + else: + return "{default}" + @property def aws_profile(self) -> Optional[str]: return self._aws_profile @@ -20,7 +27,7 @@ def upload_cloudformation_stack(self, yml: str, stack_name: str): """ Deploy the cloudformation stack. """ - logging.debug(f"Running upload_cloudformation_stack for aws profile {self._aws_profile}") + logging.debug(f"Running upload_cloudformation_stack for aws profile {self.aws_profile_for_logging}") cloud_client = self._get_aws_client("cloudformation") try: cfn_deployer = Deployer(cloudformation_client=cloud_client) @@ -44,9 +51,8 @@ def read_secret_arn(self, secret_name: str): Uses Boto3 to retrieve the ARN of a secret. """ logging.debug(f"Reading secret for getting ARN, secret name = {secret_name}, " - f"for aws profile {self._aws_profile}") - session = boto3.session.Session(profile_name=self._aws_profile) - client = session.client(service_name='secretsmanager') + f"for aws profile {self.aws_profile_for_logging}") + client = self._get_aws_client(service_name='secretsmanager') try: get_secret_value_response = client.get_secret_value(SecretId=secret_name) @@ -65,17 +71,15 @@ def validate_cloudformation_template(self, cloudformation_yml) -> None: Pitfall: Boto3 expects the YAML string as parameter, whereas the AWS CLI expects the file URL as parameter. It requires to have the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY env variables set correctly. """ - logging.debug(f"Running validate_cloudformation_template for aws profile {self._aws_profile}") + logging.debug(f"Running validate_cloudformation_template for aws profile {self.aws_profile_for_logging}") cloud_client = self._get_aws_client("cloudformation") cloud_client.validate_template(TemplateBody=cloudformation_yml) def _get_aws_client(self, service_name: str) -> Any: - if self._aws_profile is not None: - aws_session = boto3.session.Session(profile_name=self._aws_profile) - codebuild_client = aws_session.client(service_name) - else: - codebuild_client = boto3.client(service_name) - return codebuild_client + if self._aws_profile is None: + return boto3.client(service_name) + aws_session = boto3.session.Session(profile_name=self._aws_profile) + return aws_session.client(service_name) def get_all_stack_resources(self, stack_name: str) -> List[Dict[str, str]]: """ @@ -84,7 +88,7 @@ def get_all_stack_resources(self, stack_name: str) -> List[Dict[str, str]]: The AWS API truncates at a size of 1MB, and in order to get all chunks the method must be called passing the previous retrieved token until no token is returned. """ - logging.debug(f"Running get_all_codebuild_projects for aws profile {self._aws_profile}") + logging.debug(f"Running get_all_codebuild_projects for aws profile {self.aws_profile_for_logging}") cf_client = self._get_aws_client('cloudformation') current_result = cf_client.list_stack_resources(StackName=stack_name) result = current_result["StackResourceSummaries"] @@ -97,7 +101,7 @@ def get_all_stack_resources(self, stack_name: str) -> List[Dict[str, str]]: def start_codebuild(self, project: str, environment_variables_overrides: List[Dict[str, str]], branch: str) -> None: """ This functions uses Boto3 to start a batch build. - It forwards all variabkes from parameter env_variables as environment variables to the CodeBuild project. + It forwards all variables from parameter env_variables as environment variables to the CodeBuild project. If a branch is given, it starts the codebuild for the given branch. After the build has triggered it waits until the batch build finished :raises @@ -110,12 +114,17 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di sourceVersion=branch, environmentVariablesOverride=list( environment_variables_overrides)) + + def wait_for(seconds: int, interval: int) -> Iterable[int]: + for _ in range(int(seconds / interval)): + yield interval + build_id = ret_val['buildBatch']['id'] logging.debug(f"Codebuild for project {project} with branch {branch} triggered. Id is {build_id}.") - - succeeded = False - for counter in range(240): #We wait for maximal 2h + (something) - time.sleep(30) + interval = 30 + timeout_time_in_seconds = 60 * 60 * 2 # We wait for maximal 2h + (something) + for seconds_to_wait in wait_for(seconds=timeout_time_in_seconds, interval=interval): + time.sleep(seconds_to_wait) logging.debug(f"Checking status of codebuild id {build_id}.") build_response = codebuild_client.batch_get_build_batches(ids=[build_id]) logging.debug(f"Build response of codebuild id {build_id} is {build_response}") @@ -124,11 +133,11 @@ def start_codebuild(self, project: str, environment_variables_overrides: List[Di build_status = build_response['buildBatches'][0]['buildBatchStatus'] logging.info(f"Build status of codebuild id {build_id} is {build_status}") if build_status == 'SUCCEEDED': - succeeded = True break elif build_status in ['FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT']: raise RuntimeError(f"Build ({build_id}) failed with status: {build_status}") elif build_status != "IN_PROGRESS": raise RuntimeError(f"Batch build {build_id} has unknown build status: {build_status}") - if not succeeded: + # if loop does not break early, build wasn't successful + else: raise RuntimeError(f"Batch build {build_id} ran into timeout.") diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py index 6c7828e..b05ab02 100644 --- a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -30,16 +30,17 @@ def validate_config_file(config_file: Optional[str]): `jsonschema.exceptions.SchemaError` if the config file is not in accordance with the the schema. `ValueError` if the ignored path given in the config file does not exist. """ - if config_file is not None: - with open(config_file, "r") as config_file_: - config = json.load(config_file_) - config_schema = json.loads(render_template("config_schema.json")) - jsonschema.validate(instance=config, schema=config_schema) - ignored_paths = config["build_ignore"]["ignored_paths"] - for ignored_path in ignored_paths: - folder_path = Path(ignored_path) - if not folder_path.exists(): - raise ValueError(f"Ignored folder '{ignored_path}' does not exist.") + if config_file is None: + return + with open(config_file, "r") as config_file_: + config = json.load(config_file_) + config_schema = json.loads(render_template("config_schema.json")) + jsonschema.validate(instance=config, schema=config_schema) + ignored_paths = config["build_ignore"]["ignored_paths"] + for ignored_path in ignored_paths: + folder_path = Path(ignored_path) + if not folder_path.exists(): + raise ValueError(f"Ignored folder '{ignored_path}' does not exist.") def get_config_file_parameter(config_file: Optional[str]): diff --git a/exasol_script_languages_container_ci_setup/lib/github_release_creator.py b/exasol_script_languages_container_ci_setup/lib/github_release_creator.py index babf281..9efe24e 100644 --- a/exasol_script_languages_container_ci_setup/lib/github_release_creator.py +++ b/exasol_script_languages_container_ci_setup/lib/github_release_creator.py @@ -13,9 +13,9 @@ class GithubReleaseCreator(object): def __init__(self): self._token = os.getenv("GITHUB_TOKEN") - def create_release(self, repo_id: str, branch: str, title: str) -> int: + def create_release(self, repo_name: str, branch: str, title: str) -> int: gh = Github(self._token) - gh_repo = gh.get_repo(repo_id) + gh_repo = gh.get_repo(repo_name) release = gh_repo.create_git_release(tag="", name=title, message="Test-Release", draft=True, prerelease=True, target_commitish=branch) return release.id diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index 673e133..6a11c4c 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -1,5 +1,4 @@ import logging -import os import re from typing import Tuple, Dict @@ -24,9 +23,10 @@ def _parse_upload_url(upload_url: str) -> int: return int(res.groups()[1]) -def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str) -> None: +def _execute_release_build(aws_access: AwsAccess, project: str, branch: str, + release_id: int, is_dry_run: bool, gh_token: str) -> None: """ - This command executes + This function: 1. Retrieve resources for the release codebuild stack for that given project 2. Find the resource with type CodeBuild 3. Creates the environment variables override @@ -36,20 +36,22 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str `ValueError` if project is not found on AWS CodeBuild or if the upload is not in expected format. The upload url is only be used to get the release id. """ - logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile} for project {project} " - f"with upload url: {upload_url}") resources = aws_access.get_all_stack_resources(release_stack_name(project)) matching_project = [resource for resource in resources if resource["ResourceType"] == "AWS::CodeBuild::Project"] if len(matching_project) == 0: raise ValueError(f"No project deployed for {project}. Found following resources: {resources}") if len(matching_project) > 1: raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") - dry_run_value = "--no-dry-run" - gh_token = os.getenv("GITHUB_TOKEN") + if is_dry_run: + dry_run_value = "--dry-run" + else: + dry_run_value = "--no-dry-run" + if gh_token is None: - raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") - env_variables = [("RELEASE_ID", f"{_parse_upload_url(upload_url=upload_url)}"), + raise RuntimeError("Parameter gh_token must not be None.") + + env_variables = [("RELEASE_ID", f"{release_id}"), ("DRY_RUN", dry_run_value), ("GITHUB_TOKEN", gh_token)] environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) @@ -58,38 +60,15 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str branch=branch) -def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: GithubReleaseCreator, repo_id: str, - project: str, branch: str, release_title: str) -> None: - """ - This command executes - 1. Create the Github draft release for the given branch and title. - 2. Retrieve resources for the release codebuild stack for that given project - 3. Find the resource with type CodeBuild - 4. Creates the environment variables override - 5. Start and wait for batch build - :raises: - `RuntimeError` if build goes wrong or if anything on AWS CodeBuild is not as expected - `ValueError` if project is not found on AWS CodeBuild or if the upload is not in expected format. - The tag is used to declare the branch and to declare the release key. - """ - logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile} for project {project} " - f"for branch: {branch} with title: {release_title}") - release_id = gh_release_creator.create_release(repo_id, branch, release_title) - resources = aws_access.get_all_stack_resources(release_stack_name(project)) - matching_project = [resource for resource in resources if resource["ResourceType"] == "AWS::CodeBuild::Project"] - if len(matching_project) == 0: - raise ValueError(f"No project deployed for {project}. Found following resources: {resources}") - if len(matching_project) > 1: - raise RuntimeError(f"Multiple projects match {project}. Found following matches: {matching_project}") - dry_run_value = "--dry-run" +def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str, branch: str, gh_token: str) -> None: + logging.info(f"run_start_release_build for aws profile {aws_access.aws_profile_for_logging} for project {project} " + f"with upload url: {upload_url}") + _execute_release_build(aws_access, project, branch, _parse_upload_url(upload_url=upload_url), False, gh_token) - gh_token = os.getenv("GITHUB_TOKEN") - if gh_token is None: - raise RuntimeError("Environment variable GITHUB_TOKEN needs to be declared.") - env_variables = [("RELEASE_ID", f"{release_id}"), - ("DRY_RUN", dry_run_value), - ("GITHUB_TOKEN", gh_token)] - environment_variables_overrides = list(map(get_environment_variable_override, env_variables)) - aws_access.start_codebuild(matching_project[0]["PhysicalResourceId"], - environment_variables_overrides=environment_variables_overrides, - branch=branch) + +def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: GithubReleaseCreator, repo_name: str, + project: str, branch: str, release_title: str, gh_token: str) -> None: + logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile_for_logging} " + f"for project {project} for branch: {branch} with title: {release_title}") + release_id = gh_release_creator.create_release(repo_name, branch, release_title) + _execute_release_build(aws_access, project, branch, release_id, True, gh_token) diff --git a/test/test_start_release_build.py b/test/test_start_release_build.py index d656653..335aeb9 100644 --- a/test/test_start_release_build.py +++ b/test/test_start_release_build.py @@ -55,7 +55,7 @@ def test_run_release_build(): os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN aws_access_mock.get_all_stack_resources.return_value = DUMMY_RESOURCES run_start_release_build(aws_access=aws_access_mock, project="slc", - upload_url=UPLOAD_URL, branch=BRANCH) + upload_url=UPLOAD_URL, branch=BRANCH, gh_token=GITHUB_TOKEN) expected_env_variable_overrides = [ {"name": "RELEASE_ID", "value": "123", "type": "PLAINTEXT"}, {"name": "DRY_RUN", "value": "--no-dry-run", "type": "PLAINTEXT"}, diff --git a/test/test_start_test_release_build.py b/test/test_start_test_release_build.py index aa8e762..10a5697 100644 --- a/test/test_start_test_release_build.py +++ b/test/test_start_test_release_build.py @@ -6,7 +6,7 @@ from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_test_release_build -REPO_ID = "script-languages-repo" +REPO_NAME = "script-languages-repo" BRANCH = "main" GITHUB_TOKEN = "gh_secret" RELEASE_TITLE = "test-release" @@ -54,11 +54,11 @@ def test_run_test_release_build(): """ aws_access_mock = MagicMock() github_release_creator_mock = MagicMock() - os.environ["GITHUB_TOKEN"] = GITHUB_TOKEN aws_access_mock.get_all_stack_resources.return_value = DUMMY_RESOURCES github_release_creator_mock.create_release.return_value = 123 run_start_test_release_build(aws_access=aws_access_mock, gh_release_creator=github_release_creator_mock, - project="slc", repo_id=REPO_ID, branch=BRANCH, release_title=RELEASE_TITLE) + project="slc", repo_name=REPO_NAME, branch=BRANCH, + release_title=RELEASE_TITLE, gh_token=GITHUB_TOKEN) expected_env_variable_overrides = [ {"name": "RELEASE_ID", "value": "123", "type": "PLAINTEXT"}, {"name": "DRY_RUN", "value": "--dry-run", "type": "PLAINTEXT"}, diff --git a/user_guide/user_guide.md b/user_guide/user_guide.md index 7e0e499..42d4fe4 100644 --- a/user_guide/user_guide.md +++ b/user_guide/user_guide.md @@ -62,7 +62,7 @@ There will be one code build stack for each repository. Each stack contains #### Release-Build -For some repositores there will be one code build stack for to build the release artifacts. Each stack contains +For some repositories there will be one code build stack to build the release artifacts. Each stack contains * roles for the CodeBuild, S3 artifact-Bucket and Batchbuild. * A S3 Bucket for the artifacts of the build. The artifacts usually contain the logs of the `exaslct` runs. * A policy for the S3 Bucket. From 2870623488a7678e63240a0af73ec09943a86fd5 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 12 May 2022 14:18:12 -0300 Subject: [PATCH 23/29] Updated dependency to script-languages-container-ci --- .../templates/build_buildspec.yaml | 1 - .../templates/release_build_buildspec.yaml | 1 - poetry.lock | 36 +++++++++---------- pyproject.toml | 2 +- setup.py | 2 +- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/templates/build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/build_buildspec.yaml index b07882c..655558a 100644 --- a/exasol_script_languages_container_ci_setup/templates/build_buildspec.yaml +++ b/exasol_script_languages_container_ci_setup/templates/build_buildspec.yaml @@ -38,4 +38,3 @@ artifacts: name: build_output_$(date +%Y-%m-%d-%Hh-%Mm-%Ss) base-directory: .build_output s3-prefix: flavor_$FLAVOR - diff --git a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml index 2b4e110..0f0d9e1 100644 --- a/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml +++ b/exasol_script_languages_container_ci_setup/templates/release_build_buildspec.yaml @@ -38,4 +38,3 @@ artifacts: name: release_build_output_$(date +%Y-%m-%d-%Hh-%Mm-%Ss) base-directory: .build_output s3-prefix: flavor_$FLAVOR - diff --git a/poetry.lock b/poetry.lock index 59ad7ef..9c3672b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -37,14 +37,14 @@ dev = ["coverage (>=5.3,<6.0)", "flake8 (>=3.8.4,<3.9.0)", "tox (>=3.24,<4.0)", [[package]] name = "boto3" -version = "1.22.8" +version = "1.22.12" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.6" [package.dependencies] -botocore = ">=1.25.8,<1.26.0" +botocore = ">=1.25.12,<1.26.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.5.0,<0.6.0" @@ -53,7 +53,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.25.8" +version = "1.25.12" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -232,8 +232,8 @@ PyGithub = "^1.55.0" [package.source] type = "git" url = "https://github.com/exasol/script-languages-container-ci.git" -reference = "feature/9_implement_run-release_command" -resolved_reference = "a7d812ddcaaae6b7229476d6f7602a9f96c4392a" +reference = "main" +resolved_reference = "4c581bcdb3deea463d1796dfd79f3b0504aef3f0" [[package]] name = "exasol-script-languages-container-tool" @@ -363,7 +363,7 @@ jsonpointer = ">=1.9" [[package]] name = "jsonpickle" -version = "2.1.0" +version = "2.2.0" description = "Python library for serializing any arbitrary object graph into JSON" category = "main" optional = false @@ -371,8 +371,8 @@ python-versions = ">=2.7" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] -"testing.libs" = ["demjson", "simplejson", "ujson", "yajl"] -testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "ecdsa", "feedparser", "numpy", "pandas", "pymongo", "scikit-learn", "sqlalchemy", "enum34", "jsonlib"] +"testing.libs" = ["simplejson", "ujson", "yajl"] +testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-black-multipy", "pytest-cov", "ecdsa", "feedparser", "numpy", "pandas", "pymongo", "scikit-learn", "sqlalchemy", "pytest-flake8 (<1.1.0)", "enum34", "jsonlib", "pytest-flake8 (>=1.1.1)"] [[package]] name = "jsonpointer" @@ -573,7 +573,7 @@ tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"] [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -830,7 +830,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8.0,<4.0" -content-hash = "7889bba84574f521476c2208f50d786b5bebd4fbfc228f6c67b60c96c32e3f30" +content-hash = "1d5526f4a7dc30b65b595974d4127675b92322451ebc8c18668c1e41dcc7a1d6" [metadata.files] atomicwrites = [ @@ -847,12 +847,12 @@ aws-sam-translator = [ {file = "aws_sam_translator-1.45.0-py3-none-any.whl", hash = "sha256:40a6dd5a0aba32c7b38b0f5c54470396acdcd75e4b64251b015abdf922a18b5f"}, ] boto3 = [ - {file = "boto3-1.22.8-py3-none-any.whl", hash = "sha256:a6925fe88cc9cd6aab35ea950cdb1678a88210ece5271bb64c1593a46ed6de6c"}, - {file = "boto3-1.22.8.tar.gz", hash = "sha256:222cfb68bd4f46f4beae7770f1f6b066786254462f289027ca123fe77eb50ff9"}, + {file = "boto3-1.22.12-py3-none-any.whl", hash = "sha256:9830d7f8748c164a3f0929d8a0c5bb313cc62d7cf69ce55617108bed451a8520"}, + {file = "boto3-1.22.12.tar.gz", hash = "sha256:4b3a49abf7a5f7cdd82714a3ae356a9a8ce12a668e014c5fc68454aa1e2fc0cb"}, ] botocore = [ - {file = "botocore-1.25.8-py3-none-any.whl", hash = "sha256:5b342da3487e5669801f5589cc15e379fc9f7803a426584d08a6329575644da3"}, - {file = "botocore-1.25.8.tar.gz", hash = "sha256:f0a7e9fb6000a6cfc7ca63971d8d1ab4ed3c38514ded439bcf1fc8bca162dc1b"}, + {file = "botocore-1.25.12-py3-none-any.whl", hash = "sha256:53e19890124be45e47ec4f7ffdaf587343d375dbd7c7a501e55aeff80680fec0"}, + {file = "botocore-1.25.12.tar.gz", hash = "sha256:e2fc586fdc0b54c08fc509e906e87fb358b9f5607b12f526f995ee74a4a4bcd3"}, ] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, @@ -983,8 +983,8 @@ jsonpatch = [ {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"}, ] jsonpickle = [ - {file = "jsonpickle-2.1.0-py2.py3-none-any.whl", hash = "sha256:1dee77ddc5d652dfdabc33d33cff9d7e131d428007007da4fd6f7071ae774b0f"}, - {file = "jsonpickle-2.1.0.tar.gz", hash = "sha256:84684cfc5338a534173c8dd69809e40f2865d0be1f8a2b7af8465e5b968dcfa9"}, + {file = "jsonpickle-2.2.0-py2.py3-none-any.whl", hash = "sha256:de7f2613818aa4f234138ca11243d6359ff83ae528b2185efdd474f62bcf9ae1"}, + {file = "jsonpickle-2.2.0.tar.gz", hash = "sha256:7b272918b0554182e53dc340ddd62d9b7f902fec7e7b05620c04f3ccef479a0e"}, ] jsonpointer = [ {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"}, @@ -1099,8 +1099,8 @@ pynacl = [ {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, ] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pyreadline3 = [ {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, diff --git a/pyproject.toml b/pyproject.toml index 664560c..8921d1e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ click = "^8.1.3" jinja2 = ">=3.1.0" exasol_error_reporting_python = { git = "https://github.com/exasol/error-reporting-python.git", branch = "main" } exasol_script_languages_container_tool = { url = "https://github.com/exasol/script-languages-container-tool/releases/download/0.12.0/exasol_script_languages_container_tool-0.12.0-py3-none-any.whl" } -exasol-script-languages-container-ci = {git = "https://github.com/exasol/script-languages-container-ci.git", branch="feature/9_implement_run-release_command"} +exasol-script-languages-container-ci = {git = "https://github.com/exasol/script-languages-container-ci.git", branch="main"} boto3 = "^1.22.0" jsonschema = "^3.2.0" diff --git a/setup.py b/setup.py index 0d7dc42..24685f7 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ 'boto3>=1.22.0,<2.0.0', 'click>=8.1.3,<9.0.0', 'exasol-script-languages-container-ci @ ' - 'git+https://github.com/exasol/script-languages-container-ci.git@feature/9_implement_run-release_command', + 'git+https://github.com/exasol/script-languages-container-ci.git@main', 'exasol_error_reporting_python @ ' 'git+https://github.com/exasol/error-reporting-python.git@main', 'exasol_script_languages_container_tool @ ' From 9b07a223216f5a2785dc0d1c35a1fbfa14aa0131 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 12 May 2022 14:35:46 -0300 Subject: [PATCH 24/29] Add trailing newline to buildspecs --- .../lib/generate_buildspec_common.py | 3 ++- .../lib/run_generate_buildspec.py | 3 ++- .../lib/run_generate_release_buildspec.py | 3 ++- test/test_generate_buildspec.py | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py index b05ab02..7fb198a 100644 --- a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -73,7 +73,8 @@ def write_batch_build_spec(flavor_root_paths: Tuple[str, ...], output_pathname: buildspec_body.append(render_template("buildspec_batch_entry.yaml", flavor_original=flavor.flavor_original, flavor_formatted=flavor.flavor_formatted, - out_path=output_pathname)) + out_path=output_pathname, + keep_trailing_newline=True)) result_yaml = render_template("buildspec_hull.yaml", batch_entries="\n".join(buildspec_body)) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py index 7dd124b..4f0a259 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py @@ -18,7 +18,8 @@ def run_generate_buildspec( write_batch_build_spec(flavor_root_paths, output_pathname) result_build_yaml = render_template("build_buildspec.yaml", - config_file_parameter=get_config_file_parameter(config_file)) + config_file_parameter=get_config_file_parameter(config_file), + keep_trailing_newline=False) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py index 4d92309..8ae223b 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py @@ -16,7 +16,8 @@ def run_generate_release_buildspec( write_batch_build_spec(flavor_root_paths, output_pathname) result_build_yaml = render_template("release_build_buildspec.yaml", - config_file_parameter=get_config_file_parameter(config_file)) + config_file_parameter=get_config_file_parameter(config_file), + keep_trailing_newline=False) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) diff --git a/test/test_generate_buildspec.py b/test/test_generate_buildspec.py index 6358c7e..7ef8fda 100644 --- a/test/test_generate_buildspec.py +++ b/test/test_generate_buildspec.py @@ -24,6 +24,7 @@ buildspec: {location}/build_buildspec.yaml privileged-mode: true type: BUILD_GENERAL1_MEDIUM + """ From 83d300405fcb33aac74c928b24ea47ae1d8c1159 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 12 May 2022 14:41:54 -0300 Subject: [PATCH 25/29] Add trailing newline to buildspecs --- .../lib/run_generate_buildspec.py | 2 +- .../lib/run_generate_release_buildspec.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py index 4f0a259..2e8ef18 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py @@ -19,7 +19,7 @@ def run_generate_buildspec( result_build_yaml = render_template("build_buildspec.yaml", config_file_parameter=get_config_file_parameter(config_file), - keep_trailing_newline=False) + keep_trailing_newline=True) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py index 8ae223b..bc0591a 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py @@ -17,7 +17,7 @@ def run_generate_release_buildspec( result_build_yaml = render_template("release_build_buildspec.yaml", config_file_parameter=get_config_file_parameter(config_file), - keep_trailing_newline=False) + keep_trailing_newline=True) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) From c02c1a26dd09b12937b8df2acf9b77959506d878 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 12 May 2022 15:04:17 -0300 Subject: [PATCH 26/29] Add trailing newline to buildspecs --- .../lib/generate_buildspec_common.py | 6 +++--- .../lib/render_template.py | 2 +- .../lib/run_generate_buildspec.py | 3 +-- .../lib/run_generate_release_buildspec.py | 3 +-- .../templates/buildspec_batch_entry.yaml | 2 +- test/test_generate_buildspec.py | 20 +++++++++---------- 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py index 7fb198a..40ff836 100644 --- a/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py +++ b/exasol_script_languages_container_ci_setup/lib/generate_buildspec_common.py @@ -73,10 +73,10 @@ def write_batch_build_spec(flavor_root_paths: Tuple[str, ...], output_pathname: buildspec_body.append(render_template("buildspec_batch_entry.yaml", flavor_original=flavor.flavor_original, flavor_formatted=flavor.flavor_formatted, - out_path=output_pathname, - keep_trailing_newline=True)) + out_path=output_pathname)) - result_yaml = render_template("buildspec_hull.yaml", batch_entries="\n".join(buildspec_body)) + result_yaml = render_template("buildspec_hull.yaml", + batch_entries="\n".join(buildspec_body)) with open(Path(output_pathname) / "buildspec.yaml", "w") as output_file: output_file.write(result_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/render_template.py b/exasol_script_languages_container_ci_setup/lib/render_template.py index 18819f2..580c143 100644 --- a/exasol_script_languages_container_ci_setup/lib/render_template.py +++ b/exasol_script_languages_container_ci_setup/lib/render_template.py @@ -3,6 +3,6 @@ def render_template(template: str, **kwargs): env = jinja2.Environment(loader=jinja2.PackageLoader("exasol_script_languages_container_ci_setup"), - autoescape=jinja2.select_autoescape()) + autoescape=jinja2.select_autoescape(), keep_trailing_newline=True) t = env.get_template(template) return t.render(**kwargs) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py index 2e8ef18..7dd124b 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_buildspec.py @@ -18,8 +18,7 @@ def run_generate_buildspec( write_batch_build_spec(flavor_root_paths, output_pathname) result_build_yaml = render_template("build_buildspec.yaml", - config_file_parameter=get_config_file_parameter(config_file), - keep_trailing_newline=True) + config_file_parameter=get_config_file_parameter(config_file)) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) diff --git a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py index bc0591a..4d92309 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py +++ b/exasol_script_languages_container_ci_setup/lib/run_generate_release_buildspec.py @@ -16,8 +16,7 @@ def run_generate_release_buildspec( write_batch_build_spec(flavor_root_paths, output_pathname) result_build_yaml = render_template("release_build_buildspec.yaml", - config_file_parameter=get_config_file_parameter(config_file), - keep_trailing_newline=True) + config_file_parameter=get_config_file_parameter(config_file)) with open(Path(output_pathname) / "build_buildspec.yaml", "w") as output_file: output_file.write(result_build_yaml) diff --git a/exasol_script_languages_container_ci_setup/templates/buildspec_batch_entry.yaml b/exasol_script_languages_container_ci_setup/templates/buildspec_batch_entry.yaml index ab17f60..25f9035 100644 --- a/exasol_script_languages_container_ci_setup/templates/buildspec_batch_entry.yaml +++ b/exasol_script_languages_container_ci_setup/templates/buildspec_batch_entry.yaml @@ -4,4 +4,4 @@ FLAVOR: {{flavor_original}} buildspec: {{out_path}}/build_buildspec.yaml privileged-mode: true - type: BUILD_GENERAL1_MEDIUM + type: BUILD_GENERAL1_MEDIUM \ No newline at end of file diff --git a/test/test_generate_buildspec.py b/test/test_generate_buildspec.py index 7ef8fda..92643cd 100644 --- a/test/test_generate_buildspec.py +++ b/test/test_generate_buildspec.py @@ -8,8 +8,7 @@ get_config_file_parameter from exasol_script_languages_container_ci_setup.lib.run_generate_release_buildspec import run_generate_release_buildspec -expected_result_root_buildspec = """ -version: 0.2 +expected_result_root_buildspec = """version: 0.2 # ---- AUTOMATICALLY GENERATED FILE -------- # ---- DO NOT EDIT MANUALLY, BUT USE PYTHON MODULE "script-languages-container-ci-setup" TO UPDATE --- @@ -24,7 +23,6 @@ buildspec: {location}/build_buildspec.yaml privileged-mode: true type: BUILD_GENERAL1_MEDIUM - """ @@ -43,14 +41,14 @@ def test_buildspec(tmp_path): with open(out_path / "buildspec.yaml", "r") as res_file: res = res_file.read() - assert res.strip() == expected_result_root_buildspec.strip().format(location=str(out_path)) + assert res == expected_result_root_buildspec.format(location=str(out_path)) with open(out_path / "build_buildspec.yaml", "r") as res_file: res = res_file.read() # For build_buildspec.yaml we re-use the template for testing expected_result_build_buildspec = render_template("build_buildspec.yaml", config_file_parameter="") - assert res.strip() == expected_result_build_buildspec.strip() + assert res == expected_result_build_buildspec def test_release_buildspec(tmp_path): @@ -68,14 +66,14 @@ def test_release_buildspec(tmp_path): with open(out_path / "buildspec.yaml", "r") as res_file: res = res_file.read() - assert res.strip() == expected_result_root_buildspec.strip().format(location=str(out_path)) + assert res == expected_result_root_buildspec.format(location=str(out_path)) with open(out_path / "build_buildspec.yaml", "r") as res_file: res = res_file.read() # For build_buildspec.yaml we re-use the template for testing expected_result_build_buildspec = render_template("release_build_buildspec.yaml", config_file_parameter="") - assert res.strip() == expected_result_build_buildspec.strip() + assert res == expected_result_build_buildspec def test_buildspec_with_valid_config_file(tmp_path): @@ -102,7 +100,7 @@ def test_buildspec_with_valid_config_file(tmp_path): with open(out_path / "buildspec.yaml", "r") as res_file: res = res_file.read() - assert res.strip() == expected_result_root_buildspec.strip().format(location=str(out_path)) + assert res == expected_result_root_buildspec.format(location=str(out_path)) with open(out_path / "build_buildspec.yaml", "r") as res_file: res = res_file.read() @@ -111,7 +109,7 @@ def test_buildspec_with_valid_config_file(tmp_path): expected_result_build_buildspec = render_template("build_buildspec.yaml", config_file_parameter= get_config_file_parameter(config_file_path)) - assert res.strip() == expected_result_build_buildspec.strip() + assert res == expected_result_build_buildspec def test_buildspec_with_invalid_config_file(tmp_path): @@ -137,7 +135,8 @@ def test_buildspec_with_invalid_config_file(tmp_path): def test_buildspec_with_invalid_folder(tmp_path): """ - Run run_generate_buildspec() for one flavor with a valid config file, but invalid content and check for correct exception! + Run run_generate_buildspec() for one flavor with a valid config file, + but invalid content and check for correct exception! """ root_path = tmp_path / "flavors" test_flavor = root_path / "test-flavor" @@ -156,4 +155,3 @@ def test_buildspec_with_invalid_folder(tmp_path): with pytest.raises(ValueError): run_generate_buildspec((str(root_path),), str(out_path.absolute()), config_file=str(config_file_path.absolute())) - From 3f7855941fb987afd1bbf5358e06dce2283bd4fb Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Thu, 12 May 2022 15:30:21 -0300 Subject: [PATCH 27/29] Updated documentation for release and test-release flows. --- user_guide/release-flow.drawio | 2 +- user_guide/release-flow.png | Bin 87642 -> 95132 bytes user_guide/test-release-flow.drawio | 1 + user_guide/test-release-flow.png | Bin 0 -> 92984 bytes 4 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 user_guide/test-release-flow.drawio create mode 100644 user_guide/test-release-flow.png diff --git a/user_guide/release-flow.drawio b/user_guide/release-flow.drawio index 08c79f9..6b8e2fd 100644 --- a/user_guide/release-flow.drawio +++ b/user_guide/release-flow.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/user_guide/release-flow.png b/user_guide/release-flow.png index cccfd647081c3bc958b3637102d690a780388a4d..e6163aee627dc67cd826430bf80d91abe007e724 100644 GIT binary patch literal 95132 zcmeGDc{tSX`#+3JQz*%ZR47?WM8hz)&=@nrFqSc6#>hH`8H2HoEo%`{QjriXWEX`N zduc;Rg;YqP?3A6{*VOC%`MloWKYqXa-}^Ye$I+45p4aobuIITt&d1}t5-iQJJGSlH z#>2z2!^GH#z{9h-iHC>x4gXf~N!X8@$H1RW{sgQcPg%R<4;~&tOaPh^;1%q~^rZ91 z!%=@<$*aK_Z2tgxxRJb?8rqXi3-DumgO}iQFSaYwjY)U?`<)t0O-&i5p{%M#RMnD) zBh_HwKMge%br_ub_xH~3bnkx#(olhc0Td{zs`79{@XCzo9T*J$25TW45$Z?4E2NK) zC!I`pF=YnGt6?Zq9zpf8CC|N_v2^``;BR z)6}t+OiOGCEWm`Su1&TKu>wEl{)R*M^Jju>`Ljv?xjFZXfDj-0-%nlX93~CSL`@!! z2Ak{3bawZ1_5wd){ zO|XlrhQB)6QeD;3*HxQ_RHx9u+%X=SSR&EVmE#K2wuJd}I4l!&bAOnc8Ozgd)oTL%?$DGnpzZ7BFE4cjBRM7#YAI$EWF&Uw1|F84AvA+ zG-NPb5vC@-?u<|tm5H^41sl1#uyNqAV-W7P{%mW4x;7fgwhq-Yw)E8WBn7xxYjaHC zcnmX;$#nC>`UQpni~RLk6*YaJm_y!T+Oa*^2Y)`neCDjLEVXf_kbY+CNyWlAd z7Y@puU}6?T@TYm0Fif-=R%`;D>1k|*pxdx9SR;)VlY4L4@uLV_?z1Tqw>4Oe$JCxiwwJ>5-%VN7d3rlBVpsqUc-W^Wk;e8eyi z>FlZjE~E!@cRbWw6K||#X-hXH7-|~9@Fr*v511{C7>KdJnvn>88Z1j^wzripm0_ZV z3Z|K3aRDB-WHc3T6N2#y2qN2($l6S*8Wx7aQf3dce_!-d?uG7BH5Y z3DOKhv8#xRVkx;4WFVdfLW@$$qnoaw$a6wA#yfC$HWdJxrFrk+@&4;_!T#G7cb7#LF% z6O`-J-hpT|(_0m#g=Cnp;btag2rVNxf^0!D4YaUPVAK2$au&BlRc8LAr_dwaNR`y;^{SfHg#NU)kVL)(v_4&HMDd~Cd2HT@CpFjXt8 zcVLhk$IRFSqk*DewZK3y3pW(a#uMzAjV;Q9M8dPoa7d&Z*K(~5={^LG8pD{zHbLS2 zJe&<#0VZaQU^AAtaVTBWH`oWp42I!?XcQB)k)NqM6^#gCg?JiUx_GL3SdjhjbTbng zlEv0A#WPVLmSZsf!C<ZO z!J2sjZ}JQTaVjXpmrk{|Hqj)xpuOO>-bhnZbqgPBWQdnD8&5_NEmQ-1(LrDs9L+*K z#KKY)3sVg>4MlL^u1o|?o5(@XSejU*D~pIBY6MybG1U>4u4sz8s&B9nm<7gG%@hV# zg{!%G1=4|Ssu>|Pyewf}m{8-;KpzGz0IP{3P-#RA$pmjpHDOrWB4GhW!6DwhHoK* za8I0bD9%%z?xhX4b_e!}@%9S|4e<{oGSoPl90V*#o8X3Lnvs09EX+OJZLOG0s+BJp zZ|IGsnOK-IG_aIV;F*S$01Xlz;ZH_u``R+7cqZAzPt`iu85I!h=8W)0Va&8Z1~a5F z+13HpSem9E%bgVB3R876(Fihjry3esSTHa_K{y|TwF_KJ-N?fQrd zFvEgm7-WR-Wtsahyo@ngE<{7RmzudbTa96BuC9$^2YM3`e!d_n*qV|Ft`;0^mNCp( zn+0~$FxVV}QPU(6%zXpBRQc)8(_{{Aeuk#z{lj7IjwQiJhEOu9E7XN}OpsB-*lss14-ZyLtZGlQy7h`8Kf0pY-6S!f-&{N+hDa!Fl=`VPl9)-Iu5}Mf#D1>?2te$ zq?H-jBFM*|;O0y7304j9^9`o5A zn44Q#;+<`A+7u=!0PbvU=4OtDYto4>1UEk)AJYIP($vC&;O%T;>!*#hCRn4i;4puT zWdIXSx8+zde7yrvS_JiAZFd_VLyur4Q;p)`?q)+JTl$$AQv985X&&ALjknk{p0Wd2s7nZpiA&BAPO!hS=x-mSN6mJWZnU@O#;YrZc4m7oP z3ot>O(L!7?2z50zYc~ruy!szEbOix{;01#R1v9)ff|3421V+oq$R;Snny8^krW?Xs z0|L}NEHnbJo=jtZALCH3P+uw*2eb5KnTCRuSeOzC&i)=WKN8JZ70iZU5@>5p*Q5li zn~*fvszfgaHvt=Y(#%wiExkQRzP@ZX8w7=bH`0W;kUTi%h!B%NEgPB!osJ4*1j7R` zw(90+aES)f(hU{F#8?vGHvR!9Et-XosumfJ3sD7F*Dy517pqQnCj0ooIQ|}fT7h^v zN!8mcm_qiWV)000Te2q1*O&^2sam)Nm?B6-a~C9zf})dy0=+!J=xSsmjQ|?m+lNd+ zm{*uZ^1PzdzFu)u!u0&&wTaXDCjKYE4WB!9;|3F&s{-2Toj^4W5UCF~E&0}JO zBnCT7T;CEv>UsMt$Tv}3$@0@j-e>2;g7SlpOgX4Otf{GC`7WNg$kX)s^XGXx{}uTS z9s#5N`S5O+Sh>aaYs;_ka|@Z;qo)>UzrIKwl-?vFy-5Pf=)4hq{+6?X+~9HEU5Ctk z96FQIA;wV<;}e>^16Gjn=NY?Fcm%#1oiLgycYYd>asKT^9)X9K8VxqqHYYlfMe>xv zFe1{?9Rik+pVz?4a;Z&;P9O8GY|@VBL6@Jt^xDz{jMga4E84U*dbCpR1aBYo27mVj zW#!9J-4KPCszYY0;6w0FwCU7VaA!|!luR$@2>pbR%n9hk4Ocjkdj}YIG~}SRvcSbC z4)-#eX{+1~4REhgfw%esU{V)((6AitqCSH0tL<@nFP`SNgy<@K5KQGRNDz$XDI9EW z$}4w+JH^S~E;RuLK1znddQxe@y}#TEXq!8CuH5mxt`fF><4#%#hd{}5hvkkY0m*)Q ziAR6|rbyAPt~BGN?gDGcfK6WJ-k-Y#d;jki{NFA3|CkkQeLh!co!@yIyR$7*bGrBe zKKuCIhV=yrHG0dhXMu3{_U6-kJ3H^uTN}+@vy{z%dp>z}dz|YrPEg<>yG=wt%WV?j z*V>dg7~#`b_1v33Z!d&c3f!>w1pf3DH=?ypUlu3r@b*UuKdETdHLp4+W#`10aGs4`VO zVC~%hlbD?c^l#8!TzGl;@XoYjju#ZHZWU+`|0EUL6prWW z)UgNj12;ZCV86MA-Y(zO;5I$+;r<>C57BIc$g8Ru&_(Sn z+?~_P0z3Eg08g9+F9!s!iHwpm+xuH$!Wks7A&Kt?)b^y4ioU zo#fb>V_>jP(>v+M+k9Dv+Te#iUt%nDEBUpdS#R&)QQ+;n7rH@HH^NsJ_>JWsGT+`A zdpz~IM%Fw_3ztqVBy1V)E`6G3dbP9M8P%4qx>;b?q2`tO@%JaeevtGX>O#dnKMu6! zwV9B^XZ$Lbp}6eTKlLzC(<~iEso^La{YsY5Y3WHGJ0K)WkdAaV%TJ@qH2L&3$)^T+^#UiQH;vtO`%M+T#vDlkvMtNG>9>zHN&aUGc-8(#G1&L8s^(W zq(@?ot`5++{-3xlVG9!<3hW+~iA>qvbF~_{ylkGMzy2CmPOQrFQ}$1Y7qe25`DhT9 zhf5`p{G5mNvh~95obf3l7Os6;3Q5ZqnaIrXad_x+v*=P-^4XmST%Mc}=)FfjmvcN% zW?K1o-Sm&HymKu%#P(8{LQLsJ`4wYsj_L+Z;yJnYCJZdp03@WEsfvq%b$mPb6Jvay z#_jmtSEbaRrG2}oc(Sj`dRKy$SoG?*SGxrFz<9czOkCx!4_j2p&|uxEAGLoknlf4= za&9*OD7GmU&=Vf4T!t=ez;;LvfK z5(;i+^_jJwj7&&Zu8IEQ%k{2(4)v!(di3_}qu%207FNOkO}YwP;2``T;Gl6NHL;B7 ziB4*{m^gH|;dfD=XWo!P>GOO0Db4x(H0XK9T}?74&}Jx8q_0;JLx#_9o_%vHn^2g>VSG6lA_7%T^?7v6 zcc{561g2hX2rW@{$~er0BO*8WN8sELYyj3@_NtJ0Vs(BzpPCG;ptyS(xBY%R8G26U zxoh(UDZ6m{zDo^tMT1(Zi>|JU#pVaUTeS#keB=(o(wziYbZ}!!J`dOK5r%WypQ$ zbz90kpU9UsE0N2HF?NXBxsL338`}n@Pp+~`A7&q)h~^#h-_TkSTJVP+9k@LIvJ0p3 z6Zc6b(K^@oX8p(kiv&_Pk7=w!KWu4rx`CAXQSr1)ui~{^Ie*fOJ#PubPBZ9N7C>hQ zzB{tTGtD zMu5;xSOS;fi`_SU5CBRpcKn(5LgCFJlIMq;wnew@Jq?T#-23jatG14U!qfK)F+-<6 z(L_6LtVpDGkPr(}CKSW^YcS(U$sQ`Z-5dIs0N&ysP z;nNpDS_?RQ0$QT$XKu`^A`9ZQ+7)%9KVWlkC%C`@uK`2*3TWYRmpjG`vNsy?dZ3BE)E;3{>+ zGY-eS!&WdFg8z6v0I!`Fz-1gy<~2wqh#w^y&VB!FLfrAIO^m)1Ot6SbFvSunJL;iL|5_PvIfa;IK`_@|?)a00mMBT?q>-=O3jRDb?r5hQ{i$G2 zxKm`kNJ}$0!2 zc6QCJ<%+=De2W(V2)ujo?3_4X=Exm~^AZj3TLkeW)7wm@h z-4oiiJAyl)CmTAh>z)N@Yp}P1*0k_ClgR~CUgx$NHy#1&xqgZH+=M%|=iCZ0p-#%^ zl6k>V?ekJ|#j*Sm%X9Kvtfu8Vbi?^++{gewO*=D1C7K{FgRcV3fv< zufUtYmiqr(Z~OBj01a)~dJ;DcW1oO|ofneQY5e?I%G=v}W_Q7D%z4Avp=V#N@@K0v zMKHr@quv~1L2Gt`;oK3@#y>%h%qa90%eXnIR>ru)wWe2a2u!^uCiui+H& zN**D|kv2_zdISe~?5vb7N5R1Lf`~ls)TLE~SD&=iEh9!>W#P(-g~9q6kolZv2Aj0P z7LN8eL?*8;P8WwrXn1_H_DaLeB#J3@R=kTC+wPiy3=4uqUP#Vagcj= zyrT70GAklCe&4l;S^tTjl2B({EV?t=k#m5H0oo`6)!&jet|R`pSO!Ru`^NkgqS(0W z$f=JOwC8KypB`Ez*hA|;rZNI^PLoNi z_5mEM?)_;`At7(>RsJWXA>x@LewV%28Fe_hR7)8bMFf0}mg`ttmE53Vxtymh|$k)|WJ99(|R%$$gU2y_;ckBL34WWKco znbLqJK5%x2L>%vyZ3+WdkJ^g3LXWZ$S^DABs)*5-DIg;(7_19+z6X!j9)D$l`>dlN z`rH8f7VeBm$+iA|A^myMvRK9H`r^QC07`Sd4ZhCQ#HqJr^wfnd8g@5k9}nrWfS$aK z*)j3)fkkPGvSa;mHMh2<1m(hSiNO$k`veT^#f6WeQ2DBA&d_4LJa+ z9#&7;vnxleiNn>PWYE_RU!1z`q3QkMUS5W2b0t5Hc{^=4Z9syy{NT`1cd4Dn`SMEP z)%{){t4XP!++JrC9($1}w*9bqmgQt;!mh({SzC_Y29QPZPy*hlyb{}yso8;roC{AN zH&+vL43fip%Iu3=)(4w5)2I8YSPF#Pmt=H#WW9-QWo6hgyXqvFUZ}ycAYnT<;#=n7 z|3>@)u5X6!Z&SDwun9-{S=!d6A5%RlO7c?!>->`ASpz6)5_-)f>|W(2)7AiBaHPQA2mEPi%nv)LiVy08 z&MsI$cJ6_lNbqOU(yF~?S3xC%gO~<}uCL4&g=QW^Z5{p!P)#cTer>LQOOS( zlgz5!DT)%V3DRjlgXlZ%^7{^8l&+}|`Q1y|R$?J|7 z?4KFkI0n4yda$+J4@ln)X1e3)Mr+8bFn=PyetD4i<7(EK_aBqfm7+JM@ngZx6^qSY zMi)dh8h_*W>O#cZuVZp2_te>~%AYKAn{#HAV-9?3IF~Jz@wMyO{W0TGUNr7@$Vcz7q#uFBX(tp* zru*xkonBqEta96|&X|fD?a036bwA@_#QdelDyR|3?|ngMT3W{F+u!LO(2qEgYi!k7 z*aOR5k)I?VxFTiO?d;UCz%Qnw9?`m_ySptTSFwrkVREV)0tlAor+kYQ-lM7|6g6@9 zp$m;c2Mwh|lPDhja<2%5+I31zzdx)}=^+#4`VYfK5s&933QwhW(A&-H;tU_A6;q^k z9{BY1wFKEJ4}-c=XgRs-!t_8LYGeOox&KGZ8Nt20%!t;Ksq=e|+-s1eXD8g|b9s|h z7%!^5jgY${cKAX_g@|XFqtdUxkD(F6jVriAz!7ik$cS6k;6IKo-??dEva{h(e3X#h z)|-T?(BPjV8n}_xs9E^cgCQ+BsZmOf>bi$I>=XDFr{gJPpDk-5)eNK+5Pf5z>6;rn!Ts5825k6s|uFitSGY;qs!jPG6K*R|nb z#>RfJ@dk;-gMQx%7z4Gt&97@2LjV75V1rC>>8e$;MLL8}FX%RAImS5aXlzH7#Q_7% zN0oKq)fd6I+JuK@SGCkc4w)wkA4C<6JJg*@FqjiVj`lw#J_}kMsd^ajI@s5Kr@4{To#kT(> zd%vhY&w4jMbS`osMm8pB|KnR{>XI-TEi#T@E*W1^&r9Ynqw4G&LoiRDip3SM+Ov+w z?GxKpsI~T0%lDmhZP?;&sW2g{MafU2(Nj_x1W4w1&$hZhekxK9<;IgsCMmhQ7^m+z zN9^FWfKJ@y=NJU+eG?HMy&e{Hi}ci^_e|h5O|%agNof&+H8A`_nOtiZ#gfo$nz0?XJJS&i;@k66AcmT+rl{B&!(>1Rh)X` zDJZ2W!KbHp#c98KXk15@W|^ZEZ*K#xJbv(CxNf-2no)YqfycLuyz*`4Pa$UZ_1!&J zx=-3;lQApZ%Q{5=wVAy-niP(2dJ7b`-Kk$#oq6S z6l@;Lh#bO=$i^sLZOfxR`?>pQ*_1)}kU~-F>$CVUi`7=&uJ277q^__Xq(#ZuIipd; z4uzQ4^Q_o@Pz7=e!M|8D7nC2BNN)KNozMUK4*%{=hi_G(lA9Ff-AO0wgN25-xj%dI zUU&9;)8+%SHV-@mniIqi=tzxGCAGS)2V~XokKP5J3&h%U^b&CLe$MmNPakrI zFYUxKTX#d1COhX289rFR&wP7>A{Kt=bi5!l_fey?uq-*iux$B8JF*M`vr80vG+k~I zFRUt(rjj0A_%)7qApGpimj>+OCfbZ?#xKWk%Y{%+Y>vuCfk%a>LY4Qhi|2=+sdKpU zJRyGnarqD?${ z|4tIJIX>kg0=1ijABCEXtkfB@|3dr;6t}KDN%*fcekA5~>W($B& zmq!1?x`6Al02e{Y_x!KiZ-;}hsWp;6-OOj;tS#r#tZGzPdSwpvQB&Ud^{hk4C%O8p z==I0o!tseU_ncA4_|t3mxuzX;8PwV1SHb}-Iw7IH<0nfvIMK;8!O34wzI!e%)rmEH zuKzDPl%C0jgv)OTa>{nqf?|rq6TiN{3BQ%{6+JiFk!*7L&_S2x_}`dE{-fsVp1r~^ zE=aviXnv6Y14teKpq>SYG;(!lqrqk4_js{wYCm4A$$s zf!r)8foQW*IF++&qM%VqkPVZL3K|M=Pz4^!n#MW@?qS?ARxB@^8V~Jpl%nZ z-+)3Ez*-DCQzy_PX}{h+gSDB>yN@{}HJu(l+WO!j;G*|wc;tE>4_^@ltTC5Qxbj(2 z+t2A;!A5&emO*6wV{B0usGY4+KL`Bi3P;WXvZ19P>=INKBRFr-TypXlX#&VnE&$O} z9{J_6RSbRM|Qt>D?A8GC`>8Ffx~-VA)KYP)Nr|M7zgy8Qb6@wQ$- zI9vLd5sOfc%zrZ_mQLJ7k_k z5$FdJ&kZl2>*B$`P6YA_WS*(x%#=X$Mkjeemopk=ACv7@Iiz;Y|I1dI3J%zwOi%gM+kID52s6kzfaACqBUC+r*WrXHGuy`vNA> zatzv$e86CVdG>dPUTIe;J)&yvLp$e4%>3)JX<9#XK1Y z_qOzCVDHj^T9}!cu^c~*-V>G#7y{?Us7>+W$Fh_8Rfq+`?b&+8M#X~AcfiWe=I7^& z&bj^Vj4@a_KA4)&8%*3vhxjk`HX`8Uv*i zGT;2V<>LV6d>|V-sT@PsFBCLA&aGk%KZnIHU9FyOy9Qs4AH4hFt>S0u2w5p-(zB;U zh7yt8dgaKj@4xmuIG9-^e3r z!3`qV6JVu18BWZDX)QmVpO+wM*c3eh)%bkE!pQ4P57|;6m@UUUK`Z?1uj>T93+%Ev ziU5*Atl(a?f(2$_EuhD2NHOSlxbb@>FT|o1H$br+3)ZUmC48i9@BE|1hknC}B8>!m z{i)@9D|3JifpI1%0TaD%Mq?Y|gKY=Km1FMO*W4LNq2z9{qvq6|jh{LmGFLEGvG|-K z6SIClpY-@2<1Qni%hyi6ytHXqJH_2TV*h5HU&2k7UkE*qvAqmE=wjshDosM7=jhY! z_0iPcI-e=^2=mPSr^AAbCJubP$r^xag-i%@ya(bR01dY<)pSYK`?z2xOdMb_EGUt_ z`2NzlwJwZ`Rmhpv^R@fHba)`r<-Q^%ek==lCO)N;)=0@Uo^K^vy_`kICZOoI`x?8-dw#A=pSQ!wxD0t1kfI=^Es6O%e=a;X1Mv0#wm|NJ=5+PfdVNH^r+$9uOMAK1PDTOHe|OFlSDKiLQ5>=cxQf}a z@$=}m7U7#&%65n<1VyoxfKF>EKiP8!FY#VT`BvW|5KH)k_8*T2QeuI}C1Tp}?+$c1 z@j6%VD7(yIKtIR?)9vr``?8^H8e!BtyVf<2;rrJosU(Q0`L|IcPT8yjJSW_zQTXUOy=0%M#?-BrWXlLi2Wk_M`DY!40ukH%S+(0EG3y7urfs%Lr(z2S< zS{vOsd(Qp%DW9Fg=iFX=d!#fw*sqtv`F`y(_DgTd>F=7J_f|e5m~GMkZb*ioH7EEA z=D@@a4rnODmtH zLH)`S$1QfpJHp>jvxncWu8KBol7BY-*XfK0KZ0Ve;q^;-GULdlHIb&F0FVt;U7Gp- zP=T=4I6_zVQ3;Ys9`Q`c^!WxYNl-DZ_VlV@bbmYkio_dfyI-m|~fmXx12 zuMIRv$9Shl7DatsBFYl9gyb%aeTB<23&iu4485yzZ+FW6E4uWjU&@hP4!LsBKvyOX zE!n!V4*I25uIZGbeHx~`poaqXR8GCazK$IErmDVF^Gg#w^9X+U4SUHou%lAo>A{@E zy=q^IWgeP-jH5hy)_S--AVHQk*-nd>I2PTITpB-EHHA%mssH_vghq?F(U9wrQ)Q7W zOR9aGAB&EukL_hk`XeA!iegQ9+ed|u__+ptUJaTSMw|==u$W9b^?>bg&Q!czF^9aa zdtlYP|M}$?$ur~+r;INhmA^OIa@O!!tBh~gl|2Tx4&1@-iSG3sT4@W}=(nH06J5JW z_!AN;c`~N}NEmx9-w@X=6Kr``XlzF*;`-|E!!Z_8*wY?)^+#gD*-0AVL;NIWYNGF0&J*XJ zFU3m-L(Sy%BQG4-pPfHd#QE-Uo$B=Jv7Wy39gE#NB#xUGX}tKo1KKooR;74h?BA8w z+`lR>Q0qC=OXJdtW44i4#p6Igju!9Ou;V4%IpHR%vV2&L{wn&4LB3V$pxz6%;_6+; zh9}ve>IxgRIqIk`fqL=!InrXMd^+Fx>@V=q^W)?zJikxD8*i*t{*R6blvwFa4P12i z%hmEPK%K}K=y-N(akQ&?YGAQ#CXjjks%&NLmb)eES2~7s_$8+|B-S-H)>808wLP!T zEs6E}C8cL(W{#!73?X4tzSy&AffcTwy{p`+$@yu$_ngJ5L$iO{?m9YDP5p4Hz_ww_ zHc{pEXU{41XrBuKvm~^ZMYIbA#u9m4>2+p3fBFdYC?a=V8+j|YXrFFLr1;T~OAU2A zYl#DZ9aSug?*?SZ?RPmO-{m3gD@s{n+sV_-xA}IS0u-;oUE6Bm`x~Ecb?*-fVkN#v z-haz)eueQiSEqWi;YMF>-nLIgRvJ}twtY7(B=yexmc65(neo0f{+}|8NDuk3qF1DL zv}b<0-+WeJ`Gd&C8*3T2_=UD<^rQX(lA=v<`kOgoCUJ%uZ@$(4WNn3hS3ICEelB|b zIOr2`jsFXJ>xbSzIulQ;z8= zJDC)%_gPqfZSke!LphtH*UqKd)m`ED?x{`d<2OaT3tgO2e!L)+a3jxmuBxPON;ohOod3hUzkBUkeXC;;7i{FgK^E-rs5*Kp4!1YrNT`1%|C&!Rrjgxj4gSi>4k_x3L} zo#s=ZRw_K^Oco&?ZhzTHg|u!ZtS&w*R=g`{I}o~mpL=wLDwSTAe7>vv9{&_b*g%oG!|~bK<`WBgARKIWjrZ(<`Rxl0@<_O! zpIod_<~t;RV!G)oRJVPjop)zaLv$VIZQpRZrhiP%1F@r2Ocm^72#}|>Ym(0YNyjJH zT>*`}<3CE-`Pt@L#_KMdJK-=Ex3oxf_G|x3RS``VUj6^KYgQ25R#CdarA5 z@^=d=@A%tSq6HdC%gs&l|IKCG;Yak`&c6n3n{hMG`ELc!_lLaw@n01@$Y!U0{R6NK zFMQg<8+`VW%58oGS^xWvKaV!5>Q6ms@L%<0;vkQHXsYRY^mAq1FUhB3H~+u7$}Zli zuxqOKo)Fui;mLT<-8Xq1K5Hp=`P;K}E~t3z8=TD4T$-8P{JZR}XrxWqkLjKPpgR6V zT^fm|UEd1dlnxk|P^)?Vg#zQD<5+{qjPWDC-$^7o!QIc+gC<~52UE^-_hj$wfA2|k zEx&%)3M4epBl?v;`Jh>PIpwj_){%~^_}Jp0oAy7c#;bORh{c~FJ$LP&&-}JmW&9G1 zY|!_gQ;^j46JC$QV?a}%>OX*DGZqi3$MQ(d>v>UYNT&9IUw^Hpv5))ES`PgCp_LD# z%OO5rSHyxRdXto{stgX++Xw%e(YNu^O~SLT-hOH@e^HOD@7fAzM$;>($^$M-tMk;< z#KEpue?TMO8=Cw5S@+Bi@%^Sf)9Xf%Rrj8g7OLp-Yd?_#e{o0&w>vn04QO%ys~*@n zKn?(6&~0Avrp@Wy#`FF<$0HX+W%&YMj7?&Ro;#-op0#^PRIpYLO?;}}R9r1ZFzmg1 z_d$W<7Wq~ZGPbDdecds~`o?pk9m0B;5(}f5o{5ZclixX-o@Ws(x9{SAtwZdOb!hyT zb+n!vv^pI&wD!SzkG`{tKIk;^p3HR0c_CEtF+}k7xXqIT%ja&KN~H#`uZV2}9Q9YX zwQ~uwd`rvopQkb_+&&n#{SMkLW0Z6Ta2>NtZ%~2~27K>ZMo_O;lr3*Cn30peGZ3dA z?RRzT2hN4i2uS+lu8lE&yk+12x$!0QURHPSi8N04*P*LVE?4+0xCTqsT~HG5xb2_0 zHF$nZ9`rOuAK#LAo4&eV%YQCC$1!qoK{@W%cv7i^P4W1y!=};Pc!_&=02cVkGHG9z zsn_FqR$o#?Kf5e{$(jv##Vn~6%%7~`q`{3D^rZhq9N99xb27arEiQ!A-Q-8Gy}$1j zSi%m1VoWP&O0o<{uge?jtBbS0eppv+udkgIS0pN&0+29%pN68#v&2}y3mgPJRmLeY zTR__#svHE6eOxydE@Qv_FGo%jZhAdtLuC1{@4KCU)NpB9Hhp}P+D#Au4w-GUm)Yb9 z(Lc2m1=QiEpq(IWaVi$*^xvwGK;TP(IU54`p6|_VEH>9TMOfve)_h&ibpMy-pQFLQ zzC(fVej3QNUqG*%R``lKP>BMjAT4f!hue1LQs2XU_E!Z2C+zfI5(1iv5U zcfcgN+a&6$HKRept<#q$v6O1hy*76p&Vy3sARv5RrYTFPxxTz{hHV)~Oi13Zmk2ls zC$7#(IcLc&#}mbmT>$+G_X(1s<+W!ar?^z)58oUAcJBWp;PIIXeUs9knjB7`bADeeXoNX(6NtNERbSP)2J=^3SNoSZdL#xf zAH$9K8DiTG60QL0Cy)ndHF1DUaWT#@*BTp6$dg$3@;b8zDbmDBJJ#H_1@7~!b5omr zy_m`6{NH1!MGz%(e;<*&;1F@gXeRHcyRd#nw^Ds zckENQoQ~6FR_2uNd|f=Erv42-ZgV3D0O0afIpCz@U(XSJUkHw$eth0emiWCBOqUzI zX4O)CM&9|>Ms5fJ0b#zvAaca0EnR)vK~ya9{YbQIzB7sUR9DzI72%grz9OVWqM*}r} z@+l}sjjpND-)RR)$~i#*6Cqo$c|EN1>1FKBHvk1jO3iqmT~NL>JhXVAUzVJ07*UPN z(e>vA`~0L#mh3w}hh8HcI>rgMH+;uD&XKGf>ulX~quwo# zA8~w3K;tIJw{+R%Rjd1M_+L|>KkkOMx;b>UT-Wk-`87Ro06_05^hv=ONQ@~EyB|VA zHpC&I`@Iao1jMWSkBdrD%i+96EJ=i&^vu9Gy35x z1&N^9>hzluTlmLkFQSa4%fUo9nQYk$HQUzdQw*-S3J&D_y?3F#L z>NVtZ^0ALlc$}H#z~yoFKy6v~#)`wP3FVkk^PC&q^8cqS*EnoC8cr=mLsoyUeS}oj z#H9W`m-I4@+*OC5Jr|V2U3po30`w`DAYNa(eFc-WC;E)Qu0Dj#Rt)a|IMKAGY`7M2 zL*QL8c_%P3f-+iCZqS3*&j<|~oh(7OG?zoPP&I>2c#LhjfB1b55IPU8EkZl1{SD+y zm*G-`bp=8M15_HZLcT2G{;qsjm zw=;&zJ#Xhz2Xvj^@nmTY#eUf}dXV%9Hgh~sJmt30{0Av&(Q~iNca1}VH6-0%EqOm- zIYhM5R-zNnDLA^+P znKAH+wv{%2FBXV$xB9MWqtYe{tnO;x+ek6!#LA_rT!e~k6rFDH(D*H<@L|d0MOq-` zam3v|9#cq3(!*Ji0*)uN8SioR1(yW~F6CM+BwI!NHOFL#^O2g76`;Juj!m>z{$5WRuC4D;XkA zx|Mf=nV*~?DvtF@ggji~gPRtx?_$b>N%`hu+n?2heyH)MNmCfxl(w1baFF;p1322L;X z)V$_=KW1eG;ai%m_!cYLlx8Mz9RZC7M}lsFMsp9^GteoT{u2K4q2ENWD(T==&28Ua zDhP>`!$JJjb?=Glb@e*$X(QTOl)b6U54Q`-U&24~oDy-)X;&W6j;tTiT)zW;G0z9@ zHL7}Te$$S7>20!JpT0b&^!WrnCVhY?fyS+($*WHzdHo=fYpe8nL<*e|Cxo-jlKmsHDzmy*U6Iva9_dOo; znZ^L}nf7~a8B^nOZFw9V`vJn76F5f%4j$d2uid%L-Q2%4DX)=q_{uMjvrRx?fP4>i zFyb|ohRIOMt_Bs!q7%OzJAQadXfpTk573qO^6Iez;6%vR+;XX1O6YPLq15z--&#sZ z(C0_~`73r$p+3CaqarV$z@kL`=J@yodJ}-hUBAbSp~x7;M}fAypZ2I--=5%9AU2Rl zB}C#N8+vbH(IWeJVRxyNmQQ0}bZ3|WfObEde8i%G`d2I)#chz4Gr9DzrR4U+ud(;r zxkqf+a&qQby;c=)N*It9tAio}&zrY@zKj|LSfOaVHmhv~7)WUjN>BEp{dc-M=&gJ( zrmZ~M#hs1$4KMxI05_)qv8}4Cit*+aBH8BSOm2ogIKWT>j)npCv4^8ZJ-q2Um&}0l z3B2_LJ+5A*4Iw|>4xee=W6w3HSeTTP2RP@n2lV@eBA+{R4^Aw!7DA!J9XXDZen*w- zB%2PyJbPhD2MqRuUNy`;*H5MoFrzUe-zB&% z2TG-zHl@@HBThYopm8w6c5>(v;=5zS@)mGj4h=++s?7Mb25D)pQGoeK`KNs@Mx_E1 zvpZsUXn`a|xN4w(kEX;Y07(N!LYxw`S69Z~7vBbCw}NAR?R{jgdT63k<{_J>)nrmVQ2aP3D_!^ho<<+d4oQ zvE15zkU!j`zbUYi6;&j@%o6GdH`?bndXebT(3GHr5 zT;lb0&>dYRal3ZcOC)bJw^xAT(q6A`ns(GfcDL>3m;Z4#8|eJRhh6y=InT4S{VOwK zIGd49pojV5j+W!cj|+oi11CPcGBr6737*jk{K0S%5PhO5pEf6owWiIgDtG~_X0`Ts zcY`kS^PmM=78wKKY(GEC1I|LxgoSxQA3PbW)`Hc(mGV>);`;RoxRJ|9+qDs&c!!Ho z24E+a8Ia7z>$*Y2@mA0f&OLgNWdcIOwUC`2@4y*=ry#k!$7o3|aF66PWO+bSvILF} zJpdib)b#wh|!z7-b74lc@pUJ;xetzdj~@y|TgQKL?C5{HIgkuMX&+ ziU++*I^r?sW%K!~ef{i3`+yB{HL0(l?EWO!iZ-)njsWj^nWcSSMc>eGSZC}SGDAQ7vHwBX+&_;U`+05R165!6`+s@?;H32wAyJ_)z+hCnJJ|0{ zCGMqPT>@opP1jMcM;D_cuYD*YDNPJC9JuFt;WVTT^sDxI?yb0C0M0*LY%v2ZD9YdU z>=Bzm)PcJ;?bH8M8)EI%czB#gdxE<;*&%@>A~@D%1p2+d3=a=0Uaq_ijW)loQ+U1= zv~!fa5mYzjMS?DT$pB96&kcbqN@O9x0ic)XhF_h5!~mF}W!x(n^7b0s-4Yx(l++1$ znKG+;kdf$g*j4+xYKw1@pLsB7Nr~}36Eudo0ooeI%oeM?K8_&{AC`%Z5(c&oWWApx zUO!Au$*OTCLfItc#6{qRd;*!W>`UD`%!GfFc56_VEt#1PLkGfHnVXssUv*@ItPB`fy!jd2XvL&T-}s*!#G z-nQ=Cp9C6H>{@+8CAcYI6K43~_PlLJu`|RX;w#?@J8h>AaJP2_R$4xTQK?UFOe45v zbN|ekR678x#LROO5a10+t~U_<+H2TgL(&Z*^#M#AtsRsS0bC3?PdqX zjC~G0s^v`fjZtdA5sHjv*~ec3z+KHFd1Ll&fK!_=K#Y{wJy1zc3;ut|dh4*N_AP2y zaI0*QRvM`dNSBm!cY}b^B`6&NqO^2(i-I5>f+7tfDWaePDjm`-A@$95&b{w<-{<}F zob#N`TECcc%rVBCs}ZpyiHaNrMm>Qp)RJqDW;!DR8xsuf{u@SKmgd(m*6Ibol`Te6 zs{qRS-q}t2p;sf(AVzz{Xy2g^G)LC;qS(acE3^{E`hoLlln}-dfBZg4QAb@SA8X$}G+UhH-8J|>T@qW4?Z;dxGpaIOb{ zJz^HZg90Sl;Cta-qDaSD{xI#UsY_SL1Hd!!94=E}Lmb)NF!&FiZZFe{V2KqQJeEE~ z3rch0oERlhyudgg(*OL=!NP(yrRLFS>Z66OkgHNhdu#M}r`+MD!3tbT$=+E{a%ZvX z496l;`R@t1C{WU$#?1%@e8ge|AcjznziAMIGHvxMk7Qv~h?a^VW>TBEHtxazC!WQ2 z{3$PsQv5k+#a2q^d5&8?lspWFOO$g~I_|B{&cd?rn+DI7i{m&OH<6Y>-6BP=-|)CW z5L-&-4XF3%=oC#nS4WA!R1k1{@|zBe5&mx~>2YTFKITgx7k2>qaUdpo&l3qRtUXsQ zZsV&$PR5>HtI)K%oSvRTXa{TwA(Tc}sD(eHr}-2} zkfUj#Q#LaMS`Yo*30k;EY+S>dNyxvqw^UpF{>=ZhxTK9CiE|?cX}3W zm(i#;hm_{R&q?ryb88(14eIWH`$~I5q%kfS6$GY0Vd33u&kgR@;~)q) z2&4Py@-OKxI>^)yGjttvS|NaB&hRGw5%K2swhVBtu3)%1KA4T$!%I%cK-w0UbS!DY z5TvJ_uRsqM=DTZVZYF|BScffDie|dwD);E)@$`lN6AJMh^xT$1nx<2j)ic{B`c^m< z+6D&j_BSTG3zU;M7DUGD_~4MR-y1Zagub#!*n5UMwRRVMJC@2dU{#hWz7F~yHUqez zfjVBHRaqpd0@m8|gJWN>-0>bTEx<gLI{BUEpt&y_vEcZbsjvJ=Pb0Pt|} zyjBW-R0Ck`{$+7;TwAHTnYr1l4YXl}AbU7Fou@SVv;2*I+*UnH5O0yQ>C+6#7Q9{H zV>5?5Q5bFw%eR!B;`{L@L;u7UAoFCgjJYyxiSk z65g9q%@T;OiFg2zv%xdf-`2p-Cx1?hqwYdZZfdK|J@C`8H+XG)qB-Hnl6Du-0AKp! z^lw>kpk$#X9a7tWAC7noZni$t8lWryy0%hI(*lC@T6t1f5RjGEa4PoW@2>-)4!7=d znMvbqGyu4rlG!Y|ri=SV;9sSO!lYd86d;$&+7E$bHvP+pTQU1l+jB|Sw3CdVmR&H? zz#Pmb#;q1n4wSSg`Km3Es-R2Tu?{V`0%6_6b1<|?H#`$c2yn)}6K+oYhBgq~h%%;CkX}Fe zwe!Bv#Oa|br~ZV|dgEZ!BT00D`V*rTFyoyuR0cb&b~a5F5=^;K`7Z{+&tK_`gWN!3r{|ru-y-f?}amQyl1T&DpxPKPWZAjl$+!L zbnncvTkgQ=I4;zDWI{K11~mXLWUx9Xq-9bmjVs4=Sk&oyqVBJa0Ok!uH_!4oR)h+#_6Hi&_< z{Z}td-Z=G!c87kUiId`|Zqnymq6Nsz3K&Tt3pJv#MBFeQM1~VIj?D4KWUC_R6PxQG z074CoL+Xu-ehkHXx~7~I4id|@WfV+rxFe4CxPY?5G>z9l*bnmr(h@)^;|9xbW6cAdAT;mHVaT2Ayf=iHo8Tnv(Vn9{re_l(mNwQA{0R4@1f)lfQnSkInPyILj8%Ej;C(}I`M zLx*J26ezPYCygH2p&^l{DkV*8?5&JwmS2PZ$I9uJ&xm_vgxIjgI-_Ap;L*$nL>d@54Rns(M3YE`S!;z{K6UxMFnZ^6{p*K7wo1WKS|v<;&I=hYaxycC zfbu5JHm-tSHPlJ$kOmurUYs~0Ls%d>1cJroB-kbdGsS~l!(OFVKf1kC)#=Y`9GQLeU1ann?bC(f3U-lV`GY%Go%*5=7cdadzYiXprQiG(5XTa=iP3a z0-XJp(aL}ih@P^{XTa}unR}{LZlPL65JZj4aTDFYibM{5wdp^LA?%h8TsV-uw=QPX zD+=M=reE01MwY}r3f@1{Rl~&=RxynPoUZ{*y?~JC-G1J*b3_K#bbzWuHyG|OD;S^n z+HbPSCtvQl?n519?nmU^Tl@e>?bhU|ro@5j`&=$z1H>TRC10eSW%>DM|0IBDg31hP z>!I1IT%1WTNrdlRkw+X#iH-*~heJL_t{NLMjf~!!gO0#vWu13!^W0Nlpq5)Z;Bbz| z2i)MgiBQKAbKOhbpZszYU!I-+BqPl4kV)8j}pXu+GN1VNC$g1(G=Y3t`J;K>D~)=GvAnUSD6(uk`St`9 zTbaDp!+&e7dx@c2;XM28GOeRwmjg|ykg9A}j&a>>%BWdYh#!yHu;mfzFa zgi0t`Wn*8BwLEFOFDveMT>m%ISQHdQAWbhIDh_0L`tB1Y#eNu71i=ISPn2_gFO7YN zF#h`@FrzNTfs!t)L3Q5C4i5a_HK>1bB*>r;Z8v*^B69-v{|~cM^C1w;QGkjm{!Jm* zQP%mQUS3`xHVh|YL4H;DYyk#S%5j3}g-J={wsuJe2n@2}g!Ery|L9<)GCr20?ynnK z$N|t?>ok5x|1tOjW8wIfuGm2MB%qb_llxv~1l^)JHJ1V*L%dP}8EJTpC>}Q-CV9}S zHD)zDKI8*NCIaZhAL4plMF;_%6L{C5H)mFIu8&sfKo}Vw@xOy7xkb@ z#y~{^)RqE}5?d>kttBNDSBM&ha@il~&Ewr7dIt&bw&Rzf$V`kfG16m!wy=*#&GEI# zDePodlP?Z$lxrrSw8P{@Y%o&Nc`-#8Sr^-jpj)qSKFod5>sI|_g_?wE=1>S#3xH`(8ZjXEU$N!Iu*He_;#^IWYx z5Q|daG?^$5=f1gJVO%Vjk?;=+`p&`w@|?bOihIz2Ak1;7G~MXY=xhYauF{&;@{ZY$E3blf=gUlsZ7?7jL!(Y<5m_|tN7M_SmB8?R42B$ z&rU~^13Ww;&+S3EJ&vbA`wsztP1H(#=`(1USJ`iK5PEIt5FZG_#yRu5{k;Z3PkUwM z-+lXoR(epq+Qd=G{!wtQhk49sAO0E+33GIuubW&J^#EgserHAaFVIO!X!4rF^nO?~ zmcihNgX}MCK}HXQQUy9|-o3(E0CuX>$21kVnJ&>S&nzsWw4>f~CJaN|g9ngv#-0t|es_h0P2W+{KFW3)Aq@y(BjkAc_) zAM4O4H9r(asI6z`QLv)Z!=+-WMZPAO+OBqf#wC%jGA-bgh;#Tw*VxzFW%!Q*iueNW zOZq|y-2rqP!6EQ47;{JL8d7iYPl`Eq{IDr`x&m6XmH^dfCSnbtyZFlge#EfuQ-9#JmKmO_2wn z@kJsCj5R-8+$LL|T=X$tt-adbwf*+vDu`$wfcyU{(*C~>Cvg9(6ck2uv?34#%GC3K zvc2Cu2Px=|DB&YbY*H3Fe_dn<2bBAF#S+^ZA$fb-#x~_c^9T|vzS45SWkDzj1CqLD z;y%^J&5t}=?B1B&r${)DMrz#AR)0yqze_Ba6b9p!+r&^XD6cG5HIv5zd+sVZ3m$ME zHd)n)0m=xGd6SpfjottBcsZQt-^DV)c3ag#3g$n{`YRWu2bH12+Pc>YxK7vO1J@87 zq7H?GC*oHDzZYZ%CIj<1ohe?~mA`AhH*I zDocG`n#1?c$QQB?OY`$jp|vYt^O*!!jS@fR9EeG*2c&_JxIjC-_HWtoor#Wy1~Q;5 zz_xNKlsF4k77^m3LZB*0L!}ycELRXlaqKB?A3-;icyywDuJHk-2nvlXc(R6gvEZnO zJe~urQN@L2k#zVkVZhsOZHmenlY8GI-0`7{LRrk2+}l++kgdNw^`d%d~)|1g0!YSfjyzAC@%`paMN;aLWR%8HH;+w^Q5%B;L~{bj-JSt^Fq$Me94-#u z8>jJQ#vmJ(cR)oJ?|iUsdi3WqoEP2hbVQ^^-#=`E)cGX4;po71Z-xc~+p$CQcH|!j4Gl`x;L!Fa9 zrX;_f%U-H`_tcnO7OeD-keNY$&IBHOf5ld|pJ-40`gLtCP9JYwcwT=%}l$*`n#Tl+^k!iS)CVMOIOPXtkXvn;;V&rAlH z>GngQPVzgeYjuFMp+!*9XqAPdTGsOmK-;>wERLO-+7Bk$P(${8<6jjWk8)7U1G_+c zO!eIF3?yAQp{#?;fQTRYZbAj~+Mb*St!3=)2-$s>s=Mj!91Y}bv8G%Vz^xNMYxF!feqJz8ea=_P@cl}F zX;Q#>G}4~5cE*_X>xU!w>N)edVv7*ZgSZq7w=#CfSWues2f%W86J9$$pc&m`n^Ci` z1ow80=0-jv1kHGL=cuc!F9b*GhT&~>1qH&HKt_Wa<`N97DhTwt%e47tMQ9Pd4+D%Z7lhw((x1skGL^@o!$1c@2nT&y&$m?uG z#G6dc4^#sYQWEEO<;O_qsv!3U27;)#R(l1^3R{zE1t+f5`0tSqHH{}AdJqCTZ$7pi zYx3}WTAdE0%-f=y2nz$1NUV7_uhm7b&;?l;Y*LI?jkR)5E9Bj~pM6_RV4|!#n+a_X zWJ>MEhmL<<0AmD`risd!OdK69DWIN-xL*XV3#vx@yd2)wI8HE(>lU}kV`^SYxjd^` zJj@gZ8^rSuP#qD0PnYHCfT405DGEk+g@7bK18egpTrmh%3;8SI4wm%XcjiBu12{r> z;#80GPIn)gL#ljz=j}d%)i1BU4kR;hJn3t-%mIW18 zXP$Jh%hC|j99SI&IKMeZNL#9B@G)T?Zsou^n^MJwysq1Np3AgJNeqrLDHEOlnRVJC zG}Ya?8KgN53oK7rhn5knj3>(n8R5Gv_8q3cGtm4Tj`Qhec;zFnjyC%WB{Hj*JPiJr z%9%x+2*x5QnC6t+c6G}OAOzgz*{Fw$fNn}|7r&5?l6mMss(qtF2oekMsyvo3wo9Lg zqx_qW0BHj2jK1JPl5f+`=YY=6jTtKnF2xI|04*JiV|5q|<4XS-RaTSq630?gQI@;!34Q$Fb7VLp$^>9%af2@5iRFg^M#h% z=+wR~h|1rN!7y?=MsD+$ByuG}LnX$L-9S<`)z@uqYWhkm-745c9LQm* z(^+%8zBp1z>vz1Rs4t)T<&ERrZ_6AhHWW37x#15oWCaI^zOc!n{(yo&_sxc=UB@W( zjnyQBuzrbNJgHMLU6k{7VUAwHJo%+!LTHVX94b^Vb?A$7vA+xByrS|_edalIDQcEd zj*}iPf>>__&IrFqbD~y;Ao(j$(vjfwD0mMEFgUX*r-dC~>Hk!{t)L4bpklOa$WH5OyTZM;&K*^%=Vg-#WMJ9NW5T)} zR98U7^OHg6rQ7oK^mDlq9A*2sT!9CvC4c+w(Al%5#tq?%JB(IwLkFF76d}yet}OY8 z50l60I3anOHEX4keb^QtdIgH8uD{aDd83f>aPuVz5g@3F zxR#7Tz<<2}nt)>UoKb$NC{@undSx$}G7(#vIdJRuV_H1yl-@pF-Q`jxEa2Pi=Wcy9 zNd~F2_Q64P6iVq_fXCw=J|>@XI%l=J(6V(`#Fz4~-)t9N&)-JSZ0&_{)sxzg)H1Mz zLBy4EFDPruZ*|GtiGTT*mCB+w%L2M`v#jtCJ=t8c5~XUR6pNQgFWS~8+O>^sgsKZ4 z2Q@%)?-Rz&@V7SSx{5oei%iJ!6QPFZrT1j?E2vHVPfeD___#3^EDN zuVkp8(Jw=^`rR!s8rTG53`>3U&f^*Mw#q_K$w{G8me0Xiar>xYt^4$WZ zY^-a0D2k*%YTgdwS{HWoHHsC75R{eU3(m5ygr>w+TSWL@&d z@Iu`-#cyy4j;{Nf!Q@#>AumO=c@Dd&6xuEBUw?m^}IOZ3%ybmG}x#cTo0im)Xu`>L_!Ot_zeSP92JRSFt1+H@j*5(?3>*oHO=a zt1G0Yblqc%3}DE^DUc7?4h&(|mibco0yA34pJv_M>!)Ign>hOF26nFk{Ec1(!=DDI zt61`MRw$PT;4x`+J=*}jM}<%1gBp<*>T2LFA)Vf3f*X>)(QN4NbvazvpyBcrwI$#B zpT(HmWA*(C<(TfNl05uRs|-@129~GFk%~V2Zdl&h-iq+&Eac9`F;=QTkbC;0UGLsz z{tfirY?(+Ne}t*WpVaK^P-BFZhgrO?8pEb)T`gBZdA+m`%A;! zUw8Lv7DYSyU*|V4;bK)*A~OMTEv`Z=S0hC!I~pjv=uH2)H;ef|C$SE$u{-N+&vX|> z%bQ!i9N~XH$EsGwGxq8o^0QJiIPrBka-Q+#Wo>?hPZSRzjTbF#n=dBWZ^D7x~dQCn*LV! zlEoW1VOS&UVu1m)-%s#_e$jzRlivpKgc;70pcVe2>dByi*%N_bH)i}-&rL#bup}LJ z=`-;)@lu-YfbF)`)X|2eKOoGDeF$Z!8qMmxTp#8Z1>?smlSEv|EQwI~VexO)5~l}N zx|+Y7VRxPR7Xn(WBjyT5Dn&;^sxN9>6e7Fz7Zf(+{5Y5w{v^nEY3v{V3 zw_l>&4eKa*xk0q~USY#G{>iNXpin3W7!97`%YM6!GL}Bqzd;~*Y<}Mel+w{_G!7mm z8#q)q?o;{6wsEht07}yVnq%_YmD|LtZ_Pr^|26d*_gn~0GWWU$_d*Nx3jkertlRp# z-2p00BBJi6TPqwSRKzh_q3i(b+@{*Fba7Mb6!(U{%E%Oev7uL$yZNem(j(0_Lc6c8 z5^h2f_0QRsTEO8jY4~bw4~FY37#hON<8t`)3hJT@O*jkT=5WLB&)_t<-*T%8)+)kg zorcLfP)0`L?AU$d#>>oui-Cs9Jm-Jb+9v_2sHR-yY&&Ko@7(<7w$H(I*wfNTxc=7B zZNML@&y+%z=*jV#pt$ksSneYBg(mziebjO7I;1!5V<9jo81P2DbZ2U>&bt=mJNamZ z^KkP$fep|Q^yKCEUj(t^r-n5pO~3=m4me1#IvZH61kkC-**5?NsHG9DtmASw#aA$; zdn!@H0ma+r^E-#7ei1CQde2ijzF8U!%A4y)K&v7VB-O8FByF zW+hszy$`^^_pnzsS?+b^MLg?~`dl@#RUa1c?E49fsOJJlmSApy@d+K=ARblxWx%Um zy_o`~Vt>Bs;_sE1T)2Rx#1rBLl@1^mx~d_v9fCnLRq~#nNKsj zauJ#SOke%DK>h)mxsW_9^X&MyWFel4FNax+aqg2nqhiDA7u7dM%8Z7~v^fUY+7$w7 zxaxiWzH3sgx~HW0n;9FX`leDjH)(@>Wr=?|n9YyzJd_|bX|Hh(9LM9xd1XK=!Z^1a z7QUAHFqV}#B^-#mYz1PKKt+k+jNa8iL!tl_8MmqN8|O)<>+|RFI#i-XFblvX2>45a zU)reEuesW|Kt1~D3jg{6RBeL$i4XlD3^DV52fSqiZ_nqxpk_s5{Kg@JejHYc4wyz; znraP5KJrukILBMvv^sV7^^?%I7N66@(=}*Z!=geS&Uw5+zb}P7jrgza`C#ie&oROo zi+`)ubT!5GUvV#z`TNnzP}`+2u75W40~e6n>_xmlC_0U^>C3O`cYhEOC;oVeW>BXP zS4OQ+H@98&IZ%vzz}ruMaG6grP=P^vwYi>o2Fd9M&iImGwjth3Sl+xEI7-;|U?m8b zi-&hdnyfV;FmEs{c8~&fT))0GO2uOyU<@(mQ$Vs5w@MJnIc~c+KWHs=`}579A0iiF z?eisXYMFDy#X+3y|c*u z#(AR!A7ZP7chsspuHE(LhH?`b!wgo076a(W0VKdy<5qhCGbVT`#)1$YZg=6SVK3b9 zOdeYNDEdMS!&CA~qt{&_2bd^SrD1hP2ut;|TTi^B124GA#l}P3)(;dw$T2NjJ7fE^ z$J-ICKD~GL{?9W2UUkr*Wv$LbQcz^TPn^fF;xcbsDiEkb$Gr3r(xiFK9El(?DHdz#`4FjQ2y^&_}Fat(QDNgwOrWw8-auCh`iRaO@ z&r@C$F5hJETp0ascoVhvqlA%QU;8Mx%+&!+v8|9_z8lSj_umH-NZbGcink$;>YXT# z#WJu3+3uf23JJ=Fh*WuAHeY|Tt368rY=a<7f_qE993uPWJ5!pmWtVb|dQ*E9bC~jR z!@7}g8J^6KCIFSqVxssf-+@m|Y9|w7|4-^u2p~9tIxUO9@0vW_Dh@K(C^T8>)_T*< zC$08r1HSl2iB)YnU(6v#Cqm1x$8YXB(VOc9@tSN*Qf~C!gtH^2zMQheYD^buLfoH* z*E)<1)l15X(Wi3WspUZ>`yKH6veT;=7SiX%yZlN~jHR~E4NjLareCU+4%Y!4@Z*VL(S(VK%X)LRFfbC?lh_n0qHN1HAITJRy4 zF~e@|mIKQqN8v;tVKv;z%9T^FvIsrsTw(f|j0#&C@d&DRt5ICVDRP0$PQp3x%=aSB z=h>4F?{Xg$XED~l8d${`P{#?A)cEI?C?Wu@G&pC~RO9ELL%Gd+J?h zb?z&K5uK-b&2SDIk|eJ+gMbAN37@o&;*_HhIDFtUO`lwc4S?ecOqXGXuxDW6nNocA z_^0FB4BzS+9pb3;I~=u!W-w>o!-_`Ya4ujH}rJ`qonAG=DO3vUMh`E+wXv)#2XWHgYFk&-v@9-^z{-OFlcS9L9u8^w_ zT<&<;?dfxr*2an642!8BBN@b9iU~u>nnpYb?M(XetZc;4qnH1EtN8Ke`>sdSu3-z0 zrk|2!ZcXE#3E%m0jWj>{!}r8oJQmaS7kbxYRBwi1 zVHP`N#=#mgJCpWBU%Bec@38ay><_>FaWCK7K1}VoIh6OV&0=EJJz!SBr-x>#hMpJP^yJ&zz~mh*9W{zwRivb?~qh2Tm9KD zfgH2^QMin3{c@-EFSyS5`(@*-*!R)j1>z;JJKs%T?9-Pg!lA-WPN&~XvR1SplS~S% z8qA56^g|uDth>Hu`88DfCnyEg-70wg52jb}MwP~ki`V4a?BPFu5sfi0{QCgt-d-N% z7HkNMYB-NK+b<1OTPcpgN37CAbEXad&^+&_i^e&4GM*%zJ>&#DH9N;i!eR1iA*i=F{qdgJkpa@@2yptkwb=FLo1c2%g^*yi`cowg z1{d5j#jDdJrv5bf%{BiNfSlSdB8nqGJVJz`?FgfzXT9R?Af=phy zitOG8iyTwmHG!QD8h+d8_u>z{A_M%U7Abqk1A(UP12hiPD;O>(F%VuxUH6$I5_!0q zUd&j!Er~kTxah%kEzp|~r=y{DvjaEAKovd_F%w8vJa_}G!PazY*9394@YUZWO^GFf zr~3VE^n@WX5-v$Ifmqi#47FNL_U^K33YUSN$&R^mz)OHsgkg|4A3|D1|5A?Y+WzRhm^1c!dx~ zUSv^=d27|cX9UPuu>%zY5|uzTO@lK3l3!UhJ`avH-FM!VlSnDT@8T)Ih=1yk?sLF5?T!Uk_tJV@9G)T3j0 z_So%n7}d_fE)5aC^4R^($%f+7 zu+_6eICG*WOpcl0JPsP&fW8hcu(c5(5j>vA4!$d4?AFUP1X+oWfd6^*k|+cH!LG$K z2Et@dv+_FvJ~I(4(O(8sp}tXlJsrfAY|(c43ejzC)Gryj8&u7A4=z+s0-{ubJdD(v zgnFn=4^W#DU5^IA&!ZKVv01-MlfV=5BY=Pir>_C}3!AmJGx5kg+J`#O z9+16E7EK!UP^Z$!uYM{LN4;V{SjckD{2K(%sYSH-`FSwnkOb2#$yfS26lpDtWo@rw z4z2{|l^q$F`pAQ?hZRua?$;|2i@tgYS4JC{T+LRL@%11H%yZavvLvrvKw=+b~Al{caq37i|AW78WmKt4(4kXao@dUkoASJ?tXo81073Q zVm@J5?_vQdSrfTX?bLa(ePlQ&oBaI?qY~QNAIQv-p#oF*XVc{J;42c_KnM4MtuR+$EDfi zfpkrbJsxH-0M}>nd6$1O%djC zxxkQ@IRu;i8cpQQql*uOOFSeMoE8;%gmYja0oRR@ADQ|I4KBH3`%MghwfRW67QZxl zIg5BK#*6KIeSJ-b=sCP#d}VU>e7tJMhptm2TTpAV6OSKfnJuE%mdfZRKw#*ucOq zK+2!u@=rOc6tC<8q^$Z49nfOl3sj?{zwe1MVCm01`btpo))nt#5y7F21f*(R?l|yH z_6J~{pUaPv*#1}ooEvg(62M^G3x=Hnkg-2`Rfw};7ZX-Be}SDn+b+?08L9ljb<8I1 z(4Xg4P&y$FA39gWy|7o|Xzbpz4nCo-L}Z=(=T8mtTF`+SN?Kt` z1OYP}y?h21Mva!Eby0d;8j3}zlJ3p8B!KaO>g-@xLsT7!f72f1`>lX$nY2s&GxzQf zR1^>xi*91D-v~Vdyp+9=p3K1d9p);(gz3+`;zdG7w1IR z`Y8&(YH-EUH?U(N8f@a090+?h^5ln69`%FvpbP3Z!VMrNe8>pc{glr8K3U8V`bR*m zRa8mi;{1v&w*Sk09srz>|D{8DsO7n3Bk8;2t;=dUqmb!UGHhF=6%8sSx6AL(JOrK2 zQd>6xV4x~!4G>i%s((}n7UFaU2du@ID!Yiio+`f=egP(4z7xUdp~;{Rv7I_VQLGBs z#xfW6`$742C$UOeIqBE;qgEW%g15H@{4xn7E01dc0tXaHkV{}a!_Iaw`Y>fhY1;0NP_`9eO2^Jz~Z zzBOp=b5qEef!LPhHTh(ulStcObG>mxkV}87&nixw8Hw6rrw6lJg3kw8vA_R&(%uLP zRNUN!>(mFQiWB;59=`Nn`)Yy;QVD`DY?qdvo zn6p6KozD7-Qgk??NyxjUExFDz^7GZD`B|zHL0UhPeF{z@@9q=>Q&xca&sc6JBuqXcXs4lq zh+eWFCOM{uD2G-?%MrRgmc;2ts@KU{WZydev@MC68c`sb%+0!Od;$<0YULhp1b!(4QJMsM>Haxst51z$%)$sH z4y2&nmJt$TWGm5=p|?1w7}V=rdh(rxft|JN`to|@F=wmS9`)avx$6NAyRPjhsGSKG z&VbH$lKFGspI9rycR)Hvmmn8>9QG&X=*BmBx3A!JQ~@wQ*RWDS5`BZaX;UVWi9COB zbNamvxaOIaE#!Jwg0JricyF4|>K`oT$6e;#sQm_cc32Wa;e5RbPkCMCa8Or6;_OGFff}3ZOXYkZ*wPc)E9_07 z`^XxmPWVx!E>mg!_b6$NdVvASv2U_=0hTHH_@WB^TFoevYK!rrU&1#Pc>Gca@f+olrZ zhX^CN$%|8k7%Pcv^0>+GClNe{+x^_?0yGuK9a{Q`U4+m&wQ9LyMr`^eb5DID?_RPL zsyfD}5>!Jff#FYZg`7Eqe1K8lq>UUnEo1Mt%Z>=z;3*qd(yc=muX59fuoaW$zz~T0VV8W~ovm z-Ex7R!TVMr=@ksQ;=}b{_AUO(8tJ)mN<6+dm5smylj}wm(g501*STRBTOnK4OxK$o zXB|7}ymBgMNZ7CO&`ylB36z-OkJz+k$x<_@Xks~O!ew09%RLSQ$~P;x5%dgJDhZtT z!@Q_-SU;(n6V3g(FH3adtWELgFg?aWMW8^%{604o5dNw&E?~_|?l@C!ACn?9@pwnQ z79+>wCbK>1N`eZ* zTi4AhPF+d09!aH|zbT<) zgG_K1vRw<5Z+*V=7;uLtPU*dFyVzDt%6rv;Qkt09EqN9UjT=)1}vc@S)z~)XYpgw%pr1w2%F7#pF!P{oNg|5 zaUWpMuNT8Aoy2O<8&Anh?V6}v!cL)7x^gH_Q1;D~zP&dyj-)cAa|6`FxQDf6S(AQ8 z1D<3)?maHiW?_-&p#_iV&TE~#DE;+@6)yK5VNoi})|aGdDr5U;5saFGIb~OtZdLX{uXV#j%XT08_K+%fFCb_2A=Vz2TzWgNc-}Duv-PopLKe9+zQ>57wzp(tngil^670z>}vBVY5dnT`fu@LE^O5`{pigLA{ zBO;Ezkg0Y`ecN&@SW9+jDXr5Gd6{f@nb6Mle_o~lN&H)UQ_F8|phi4>drvxLa(zWKbi@NyW$TN^Ur@@rcpdU;?H0=39aLj&0EbfncG1YUb1j)~(-gQcN zP}%%F+x&vb1W2T_`0BNsmXOlHs>r5oOr4I+|erPU= zL@3bcIv@GP=T6iWJe|LY*xi6h>H!EFBMNqjDbjxrq0>M?j$g5ja>q6Cyw|}+lXuXU z(OoGX;LMx@g zc*5!**2tD(LXnGX`NR6Swn2skckJNDpQFbIHsjrVq8N(@!-X-*T?=nQGEqrV0i&-$ zI{Ufi<5K1?!Da>ym)T#0bRF?C;aRm-eRhhGZT>`1LmWk*NMfaH8bE#)fB#479WL?n zg7TG~^WHV)_6+WJS|O{)*3`{YLAZ&x3c%KywOZocW6kV6KschjM9A{NwiVMx@4kvu zEC8?{x{>qlU%N`24SG>h-9D&AQ55H&OnD>lBQdaY(!@C_Fe1zGqJ_k9)w)%VRU*pr z@s3PQ+vh~{KGJxizYw0|JWn4#kwjPb;HQJTf3}Mk%2jtu^*2)72TMnk*7_2*NUZi_ zXulf6qAQvq!B1TC2u7LR9Czpi6eu4>ip)XJd=%8148(C(bTJE?nQWmRUs<66KYzyG zvDLIcvW^EL?hC-bEfk!*b^K0xY4un_pIEUCN;21&)A6AH=P7IE4N7khSPyvJl~E1? z!#yW5Dr!EyW6mjz>AaAvM8j|r)c#o>2S8R;7qd9XzB1@mJojg|r$gPsYdQD?DqQ9j z699V{@Gj`Q(xM;!4W+5|{hLYR8cbryvChG?1G|zuC~@?$^G6a^Dj9%SpMi#=#YdA^aoE(7?vIQkv=zF?Z-7SOR_KP*g)>*j7zL zJ*fIt!hEiTJ%Itw%o+V?y)E(Oc5x^v@(=klW)i>~m~~#-FK#sgQ4(EvLOnB1h;bP@ z&UTLEE1_u0YQkQ83*XuqHtp2O(e?#*%G;_z4%4R5+HOM%$uPHK*X*12iDUdj?9bzg zDjtkfqyPb71m(5eLQun^^-0m(rBt`S*d)6MD+QAT`sU;gfW7$_}<)`~-Ys zSP8s*AB7oHr#`yOnWy+tuw07W4HiJ!&1}WZ2e^%D3dBx!hr3VemmYw>^C62PV8Mo#xfwVGe`Eca*nQL)c@&GW`%=oTxEyS2nB=Hs>VL z83q|e!Pu&oMk8zyj7Ws2S2%NOS01^$_Y3+IvVvu*q(>D;N0e@baAlx zXnPGcYnQ@2X;(&Ry{E7sZw6^a{cuDxp$jD_X;mKI2vM%u-lp#iyQ8oTCXCDLUmj1{ zLSV4<{$6S3EK$1{{4xEp_xAMQrK|ph71XpQSNj+8bA6_)p2fLId^$8Yfv+;L{)lb7 zm5OVbl5(|M>{`nsC;>OFqHV`#q@^vzdvGxc!PH70f$QSJOuT=M9Td8c#zc{5%~4%`;Bg1!)if`xc^tq*XzjOIfk-uM5qhy`vs*}lPg2Nl82;TwAO}RY|%OUG` za1cl>{rGS|=UyTKOW(WAd*SA`7;6%p- zhd=yNXqAFXh?HA;zz5=HT||r?`fzP#5?mUHCOhUV>~h}f{(YH?_D3;76Y{69P0{dTH$#W4is9!^GIvwFC?MSkl5AD18f@R5W=Ws#Dv zsoDNkbe61#FxG=_j%XURt^1U0_yfa43wcrs+Ix?qceK+o%me9e|j<~Vv@Le zSYKF%?o1&#r@=ORO@g{wg`_lE9!KX3nDneZ7@+@29Ysn!oymAP@2PR9Nab;OTKRE^ z=9tT+oap-Fi7~_^(J92(3eorF=z0jvCG1|%w-fe&%G*JGL%MJC;q>RYNrn?Clt_5w zZohNtBt<9gN5WiSxp&Zst!oC+!#6yux3C(o*doUWtZaoacV3;66Xr&oBg&6r| zUwEyKZgH>jb$CL=3jG?SFBiTue=bNCUDgz@9TNNo@_iSzSb=9)m+sS6Sw&)I8HRQa zPP7JrV%Mj3>E%%;`~zX*sdL2aJadBLSZQ}bJ2C4;^GBjTIgD5PgZoVQWftJz^mk8p z6;y-x?}TYI^9M@>Rm)T_2&Zc)QzH+=FoxN!ZUCy}v(EArF}G@3_1XO(y_n8x^|95eb85d4 zhJadqm}`429enZ4w1kDP#$Y%4TI9|}a4LF-emGhOe)U>~lj@?uM z`|n9O#f+&$ire`T5;muMyV=)c3~8%6Hv^wtF{&~Tq@OqZaFG5!<^?nb^)9OX^uR(A zu`Y)E)uvtBa`y%nJ7X)Bv7M{WQ*#BBTkl5Pd4@y@`CnT64DGf3&4jiRf(#h)G<*C| z!f=u>jf74^LQ@G9I?>&yPm|v>`tk3cXN~KuQ#gG_;JMj-CsOLW(zy%IgFkO?y;sD; z?hQHK_U-Pt@NR(->GkL$j;>4Mz4!GxD#pzrp)5W`{`2)P8zO3?B>UxBZR&RLt zy2QOcGjma<#MJ;rf{)ASG{4&(NZ+Bz5ccGwXMr9K*CLML6h2;8v8%b$&|NQYEOWej zPvk@1Un9P0;iIV@bhraXje8y1hIfU2xdbC3;ld_H0IkuCe>mzXbF2|0ax4tQN62}c zYoZ7w8vU~DUoO1%h>E`b_|0L=4AXfu6N$(X#{c>)k5?jJXU(r^GWm^AV`_@zp)9%$ z;UVVt^$m;+-z$a=-*c9#Ne$dFdL@0NQN_W ziWGS}xKUFU4CD@UOVGZmSF>skbg9bAA=F?S`>bpo+$hMR{CKYPfa*U-V8j$ZvP#DC zOD8Ag+uOg)>7N?X(OcHz$i~vKWF(k}-?*gO)OP3+kZ0-H8IwwI-_O~eiJ0W0c)j#a zU@%jB92I`lb^l}6oqdV~bK@|I^VLzE3o_Z&n?pjh{EO`eF6>7Zz8`qAD2$zadLl-{kcV89 z_Wq*!V`l|8fbJ4k$8_5WIMVqg*s2wFHVmWl>D%jXyry;4YCC%BI`se1_0~~UwNd-7 zA_ChWHUa`lZa}&P1w`phh=P=abT`r^B`sY7qS7G(D&3`o5+aCnqckENXD)rebH4K% z=ZyEycMMr;?X{j~KKH!uYl;UZEU3m!zIP%R)Lf^po(yGraYQlpH5~QDeC(BoW?7G9 z-kzMv#ga#5%)%G^7N@uM-s*|{CXo>D=ErC47VI&8PniD01o@>0o`l%D6&m8hCr%*p z@aSt8b#a9SXOmm%sKdvr^DpDha0R+vJg}H;BJX*5CG)v$f+`B*%{{{!B66#$jJrn*J@8|3)ww0{t@0QQYr>F@g=Wq*K#{yY}K zA9$P-t@y&mR}}Ebuf+P~?~?xa!@e)Qy>pR$)BJp3-61}4YT z_9d;iPIve#8f6EKmf0C5Nc$4L4xwxtOC@4#@BWA;SHJ64`p|TMhSne^@NTqNdpm!G zpg*HAZK1UcYM-x}EJFD9ZL=Tq0mMtDmR;Px6ZTIWb{JhQ`)$b(@OVtiM>q5~Gr$30sXS;GO|2uRtM4F$epS+)bx@6Qg(=gd7(!VS%I?Z2@1oN zJl-vxenE1*>2>2z@laC37`Z*-Q4`HdO#-^K_j6=Z0nef|?ou&gZE9bq{vx@GoXS|R z_Kz7wH*_sJeuQR}IN=9U;Dr8xUb}Sc&9<+SuU8!I!7Sw;*+Mj8TPeH5_EuMO1_#$L z$pQETcOG&V?3zkt;2?3)*WI!<}3Y)=9Z`)1b^cUJN}Izj^!Q&USWBva>K zUewLQvwv;<4UV3v`}pa&ac=|8>_j*kW6pPN{kV7$H7}5%$~jHbd`(mRdw0p}RyOM= zt^9^qZqQ$fqC_0US4TACOK7IXLq5o~i4%N3ZoH4aax`jmqfIw*LiqQSHVTSg1E?3T z?UW*zuE%WCO=&)GP*!)KInC4*YIK(Xm&VMEH1B_Y(bY~UkKuP6 zIaWW&^#UfzKJtBN>H4WA&(jg~9|9fLIa(7%@n)?XpGf3kF(?Lg(Xu1SVs|`c@}joN zyE7NhT0D*aDn4kCi;*kt)e}Dqb-fF|l5icI9)r2b2jRk{Jm=KOiY6=noYlI_QY>=# zkw~cxbdTf44Mx=VM@6Pb3ZKp-S`fZ_&>Z?CgR`kJ6n%WV)>za8ujR%J3(bcW*Va(a zh}CCwRpT;3hISKV@AuY!RVy2l<%v9ISZv$i80IatwRfCn5*inNir!(w=!9afh18H_ zh{`Eauii}4lj;1hEA^+hzyfI#EKg)hxf4#Ch2Bs{vEcYHH@RuwM?bApB=h{cJ@t2A z)G*hs#xG5O`8il)$eY1Rmeh#JU++o}n)*&%_m-tgdtVwiE&cV-*84HIsQN2X5%O`^ zB*no>jhku{d@^Kzwoe%Tsl*f6(hOW2=7Bb z&;?|O7h1xXZuQ+@u3}-TeJ`c*T25w9^ydh@AB=>E*bJQc(yW({ggxTyg}rt{ouH2>XHFNb+?#dRKscad~o zf+>c)Uppy&!!3(?*HgpkryL>8EUNPgyR>Q?=2F3O-R1;S)ua?YuxmhS85{d1x}O(g zdvAm0zdx5cV=id8DqNJg`c__;WSt+CBS5hyo0s>}5L60C96Ue!`OhF8vu!y^>)!fw zwesU<`9?iDF*P4;P@-@+VqC@EQ6@+jmSCtSWWQG0XF&Gr1KLU$T%|@PD$wEn+cO-0 zKB4)ZKJMDw7x3tkb{TotJt2m_1W=r^8;{>Wr}2qt>(MKyCDP2L;>ij?Fnd}t<S?ugqn5}BcF1qxQZ+T8|QqSs3{d<)#eHu%oB(sXt@US!H04BT({nUjk9ma>8g zE+9~D0FO((D0xJ)W>EakbqWqmx&i<5HIG+Ewcwv)2W|q9$fXxl4M;1pBsWKh*`&B; z^``2(GU)Xpy;FSr(+#ou&2QHQUZVrTbdeW{?WZp-$VO!YT|{1ray^x z^`5KnMqP@IZUg~M9g0|!_N0`1*r4ZA17~f&6(sE0%ComNto``V60Ag#^dNX z_A&F3Xiszo%8t8i5nd1GCh+46NLRP$6~Me6|M{3Wz6y%;kt2vNJP3&yyqRU&(|WT1 z@2PzmZ7;xrFfj+2hZu+^@C?fSIetPnsex7$#9`xEUwLIn0dGkNsl`XCE7z@)uiShr zhnRZ+s~IxtJf!>d0_nqfd<}EC^}@IHYzS1dg~>o0+9}xpx1C?(j{~Pi`{gLmXQ$oK zR~~4X&wu>s?E88mDAE@U(m7bK4mhR>plJAvL+BeJOYBN*rf~q#^^vpF3qh(B8h*QW z3$+8#1u*sr)C<9`<1pJU{rgn6BibiU&Qj>;*Sg*{&JSt8_wHXJ_|DvfWUl5m4N11M zH0Pl1d}@B1uU}qtB|Xn~#Kxnl4q9`1K>BfHkTX2qiD-{FdpVrPiHd|He^l8;yLE}O z@oVhlgzt&2y)-BAsQ?(DS~7bK-7Q4CP1(pQU(PW@nc5%+bpQfe%a5+pN)6j6*x%EA z6(H{)`oZkTgxrbtH_?qR_&7@b)Pk1Av4!@VWTpTmc%QHB_A@)_Ddp3d_G1v(FEexp z_n9Q==2TWjJc-p$Vri5di~D>6TM_B4W@KHpL3baQLGm!KNfc(}4(#OAlPvuJe@D>6 zAq%GQ>-?&%E~(`slCIh|5>FgHfB2?{I~4K5^I)aoV#g62*+0Jl@h1s!93U;px3!yL zwR`ia%vDiIXVG2|w8&o01`NMYwnfQ>40!E$<0ip7M%~g6_>iFTPZg5Zxg!|iyy9Ny zrU%|MNZXS56t{-uQLlq&cNeshW}$~nZs>R|cni`I9S|X#gT_3{`?~&JZbW?7@py0? zd@45sT5WtA{cNiYFEQVB59|6x1}Sa{>@}*OxN$n@n#wy=J>E%52#H>%@mwxlzpEE3 zV|#GbfkE&_#7rumgb)1_Oy{Pm`r`XUeFCx7QCjb<7=!_Z_?zOGDuH>?57vkH?jzBt z52H$uYuXd;d#I z&@NA|9+)+hcLWA)8q-&4!_ToePiAe};UdmE4IPJ|;qPjrf4ljsy{n&17{uc4g*+S= zaaoqjqVyhIAlOa76|(4;LLxspYRe3WAeG`W!0o;AVQ3bFB=S$(rHv#TaZ5H2(cPDM zs5U-FG==oXEPv1;Y41FZ$+|A)YA(k!V;0GXSRdWT|K3H&0>#v9b(Cy_+l#4}#N3M9 zfuio9aR=N^e{}cat;2Q6rVl#>g~fcf*FdVP%J(gd<;CGQ`*O)Jv+3^K1cANW6ZVUt ziqOZ)CawznYmz8YAWhM)sEmc4(Pw7%e0evLb#@fdb}0@bKSZk|Q2x%0^vxpa3&zG$6oI*!_0d`WPGM1IaY`>CGZ2 z{{(Ds0aD0utMOO5IwEMZqsniJJre}-$xS2YrZy#}TI5kDUAr#<>LC4pS4|S-;^R~o zgd6up6ioWeuPEppu5AC-4Ix1la^G-5TIoUODXzP#5MVn#p%s%2f(fr0L$H;3kDA=% zmqCp*L=0&+if(Wh9k^|MS)?4i2YRil;fhW9Rb}lLj7_kP@e4Ab>X86cH$I8&7ib>d z#xov04^BMlM`!5W!)7&+P9=B{MKFxpgFH4!6TeQdq0h3#-~lWW-Li@Q9`%0OE9jdQ%6@Et6$a$%X260cc5o}s$41fF8QQ+ z5!#T|FBD}_th`OYP_6aa9yYsw>s7_D#6JhkV7Ktd7f{G;YyB98<t3X}YOLS(J>YpuWw zk6*0Z`Xs_v-6$u(z{mX4PyR8%J+9EA=!$U7dnfi6sAqY1L zhFM^0rv+X@mQ$~hKKdq125T}FWgb^!x`{a1=v$dQ=Hl6IzB%$u`ukXY2XVQj_!1c6 z*FMEEh389$B8W@yr2NWg%F9tFUT1`ERfa3q|J?O!15LQ=rq<7%EdsQ*#RtaS4iI?x z?3rFj(dvK}g}E21(bTbbym=F5=^GhZzNHZ(0!}@L z>1X7U1x+x}c9 zR~)SsQv5wNU#;AJCC)XtR|C5Eve_wXf(fdEo9k zK$>s(c^0R~Cv^Q+#3>~_#p+Omp!O+;@?ay;a$NXgV@Y5OHX_Zy;TB+LPA7Byhye>Y zBWj*FI7{;Z<-PxP72G+bPycT(!2j!tpsl-tqz{o_Bm%bqyn*e9O7wd`Yx6W%_8WQy zdx%7YE|^=+h^wcb(E(cNjqGNsqUj6&3fnK;sgZiu?Z&MMrHNq5fsRvrYM)}wb>i(u z)bI|v=|Gt5QBG&jzt8LSHy*{}iax{Xd2fSMqKZN9viaRk_P3YVaMbcun6z|T2a4es zdYST;JofS{^2y|RmRG62=ek%@uiL}|@*Oj9_cATl{nvq^*@J(6buW(~U1kw}yK)bD zAzb_{k|wGMk;kwk**L#i5e~c!@Zqb!ur(-BWJT#Sq+lKzG3RyoU0?D!SbOP~mXj9* zO1dD%DN1Ua{1^>n2*axR=T?ekuc&P+>9r~?Yb=Og9zKBd24VzIv7Wv?37!r?+Y~X6 zt&kZDZ;bjsGlfz5Y1g$}Q++^>AO-@Nm@cjwMTLYa5hjP7VvMlu;#QL)ammrM5OV8I z#lb?2odyrG#V&3_fffrv zFy*||2k2U>A+Dw^B?gX21!tFf7;s@nkfw1?MMPx3)iV`*Fj^H4`Gp-gGA)|^zAsb* zb083TX+Ba(OQTFkyFL7U{3wXR7+w z?q+eVkL}wBvkWK1+vC76bIwOXm7VF<~of{nfLN8Kv)JEabD`HX^9|Fx7pu=|(xpaT!P<{N9E`U}f zH!q6LpQ#n)|3!SQIUI@ZMYFtcW5CT+`a%qI;Z1&Nc`}9TI?DWvRR6bK@xCp!^phs; zQUGtO5!mx~2yigL42442&xnUw(iZUlT!^LM#w^%DgAn^#Kg?l-_LOH96jz($o@-bL z{Y0?`{{jEk^GbU{2D{n~nK&lVx`n-x*PI->ZX`(MsREwxl!+6g*RKv>e1=b# zg8nO~l%|s_nAn?@zgvZd*FFhNz4`t4x}y`v>~IRSGxvJfV=sYKB6fEI3O+NBbHB)l z{qtnu;eW=*<918fC3b^-#su8j;HZ4LOVykES_bwT+DqtBi`KF{-T~^P(8hN}>RY+f zl;#&pTf%c7Pm8lx^Q)k67AkapOssGT~anp4ck z*zq^9+#B#2;{F8@6m37+rCKve)QoF ztG7oAvfH9eO?@Z&|MzXJV)EHE$aY8w`m1xduD#$640Dq%ikk#H!F_~4omg$d2b~KIZSI=SO!pWPbxbd6T@q(eBDHlq0>) zdA3aS*BV%h*;W~evz!sj|BPD8ootO(Hq^XSq9&K#l{CD<%78{VJ8@P@`u_ebw0e#B zrQVGX3_gCzJg{H?J>;gBTEsT+|qbBO@TU=r}PFwokQ{tM+u~c7v%_=@$p$^z{v9?RU6vR zpJn6ZH~-aFcgJ-sy0(c47*H@(xCHXIDo94k=;G55a8q@*{+TA+fj2u9S2ap>Gh`Gz z3(O8=g9b%!AQY)^T8I27P#=fuJBP|j4D>;n~v0ZzBGoUp4=6inrjP{Vuq99F+c}8qh)Nict&AL|Je`SSZ zqv8@)M+(gdZ)3@k&Fp;0cP9WSazkb9sv0@7UoPYCVDozLYHk)1Nif5^EF(>D^W#eR zE^|UFF`dXYaZTro@)tgmirFB_r58i%pNYCBU?yIN0@P^K%i+;eg1F(73q1o5A?H3V zjks0x#Qcx1(42FVvsZJVMUpyj!lt&nI(}9UZH2iU`y@QB`d+1Y9R^bah9`kizo2}& z)N9;l_)-fn|9nQ1v!4^nt%>~TV)cs(V6Wp-S9MgGd;v#2p^-C6+UJ;%3gHzlZ`hrg zb4tqxfKwrB8}m>oL!w43TS2a;vG{cubvd45rAo^C6vEEd5lMJd%(~!lX9GWQ{0-;( z*b9CjhNrmk6|;5xbG8e+J7sf@NYaI1gyERCeX2hZLi@<+_f=y~)F}g0Aklw!oh4 z5DFTgk4EMwQkU-}ZCzS|gj48}4LDH*>pr|Xp`UEM!ZvM~k@H4g(+BUJXn5uc+)uVX^tfg(L4DAnDJFlD;A^#m}}4 zZ`-qyw+8kPvuZETb-W+QKX9Uoca9?)~t4=>LAfgr4*< z)L{`}2oQ#K<@PW>w0ZTlSjKhVy%=fYuT%f)M2{2F_)#VXlp*|JTp}9L?*lh!1k9uB z&c5c%rbB+^UekzEgE!^|r6Fk`!`NZif%Omc5+QFa>s_`JSQ1VoOqCeEZX1^{!qZJ>=P0s*VJODM2 zAQogG;=y`eb;!T%x&w|d@=hPbf;4evqh$NmJdWASP^ zUf%J))$og`MWG7`q&%*mMJ@U@01njeKFuG!^D@%8kGf=;SlCLf}}GpgCg4G zEmi{K2A=q*S8kWbawhlDBlD&NTLl@hD}?ETXi*5!BRHAv-<8TU@?%iMDPrwmUyPs? zAzy=eDINShqKvSd@((lDG4PvqMDCYaBrpMg4cU{yxMb z%o(eSHxo9W=-_)dpk#H*a=jJ6uT@0mR2Sg}G-X4poGtY$_hSuHiAD!Dq4xcox&Z^- z=Xl)QyAgky&vPdqgidroQn%ySbN^>yb&9I8)ZOIv z-%mgSB}-iK$~?m9_+Bav#x-p&&TYFf1CtBo~=z26hAr0gqO)Y-f4c zNRG#5@>r+V&B2Ke@2BfhmXO2~D-BL2=`UP#+Ahn97Qcrm84f=eC}+WX=-(y^JB7?n z_h@^1^4phNO{1jBU(}dx{C7Yyd+}bahTs~CkProvlwR(UPZt;>=5T@oD!kk_DB=|$ z@ex=E%Pz#%jl8lXh;;hG(LyNG+r(0%aq01hT@;ON-A1!0uH-{n`tl>EbKi1dy~HPs z2aIzEklK`97e;V2Van)Q1ZPXZiP?TOkXBp@ZHQ&yKwI8F6Wu*Pp=0kCCwbjFo2ilH zEQ8dp-@_!iJr&^mo{n`Dv>P9FxEk=o0Mczi9^da?-Nq&R*xhb|?DJRJ)n*%b*^!Gk z#RLY&#K#u?YxOK!QWOnBZh+OTF@{IIO&1CBW69;v(=a}#=Daap-A5&VGbkqsa;p_E zzIyx&jTWKnqZ%U$$6i$?u+emAuwld|X`(!DX#5{VA-uJk7_b&|U#Io_PYpHDsL}r* z*KCR=+eQQfJ8s?(T5b;>WKAB-|0@95TD%)dgajL`b?45jbl>I}7 zE7(Lb+zX>LEg(Bs-m(M=@?trg-|EEQQ+;n26HkCD`U(eHaraWny){VGG#1@|d!ZE^ z4eT?U1vD5OD6DP!*jDK$cbt{Y38n(|6vNtz+LipZKUgxsYj&iOW4eQ`?0Z_OPHn!`uFnQ&aAD=({YHOOlIHj}?`xxF!HV$>jn z;|THk@9JC}q8q87-p;CprvB6UzZJ3oy=wc{cdtT?T3pT0k|Wl&f&4hEqradglly-! zvt99f6Hnx2CP(GWPQ#oo6DT^j$wSNI;{#NJ1f6i@io?#cYrX#4S*VDKV>F=E0s9(q zOup+vt@_9zPQUCLw4shvfN7U}b0C#pmhL`Ik<|CqbA|UapHBX1^w7Zm*Wm3)Ww#lo zL8=L9e>l&w!_bl#NJoDkXXs0e$E_*B3zTCE3eHC77*&i zZ~;T)3*(hoL6I9iU&jHLkA$5>>7)3aR{nc5FM+kVA@o{VCJ5^4Thg<7`fCoe+=@F$NQLtv+(azN?{$ z#~*P`oFH0G`ZzLX^4RQ6e4%{;CFy2UylXeVFYSRgh{No<88jRe3Dp8$or9SwZ8JrT zSCSsV&ncTVmMJ!yIP!}&m*pa~YfX(&G<*F{d=|@Au_DTPRqL<&%Y0VkK~?!v*t5$l z9ybYSa9fpvzGPWnBf zK|E1~uixJ5H$ZnC5M2xEQnq@$t^7QsdleiC0|u(KsJ_)cyrsKWmliKrc!7FUwo^y% zPI1-o{0v9aNeYk5^`b|N%G)&N^VzBgp0g4B=Q}cW4+yeK6yBchuWUPtoy&^L(i$tc zuNAE-?z-6fNM-4%Bj4d?R+ZPYOl4*}To(80!fJ1>dJorGX@rSvrM|7dW~K2q+9%*q zLfqY(SeZJ}+x15t>04I?Iv3CLidWd*mvk#s<6>pMz8XWR%F=mwgMYS7gQXLAW?4&_ zMDicGlv7y96or$EeG`R0cP?Rve2hgkc8hQlqpE&jjADJ@Un_sA2U z^%fOGiuABzhDm(nI|I}R66TM$Dz0k($^&~M{zWPb0tdeUM~|;(whA2YlIk-xm%a&v zLf|~t$)!DYER^{|`#dp|nLs(~-~UM4(Dh+xf^A5xkc;eX?V#erhZUxu7LvM>J`HlF z8Xu>nFsokcWtL!r=xCxq=g&!t%9ePY+pF*9~>WTbX% zr?@^AX_vs6dR=~1)V+#p2}0ApDb^qE;E>s-xSI2dE|P;u=eFp@m#vMUJk~s@3{@Y z$$Xr8jy_vqKi`b(-c|j`l@Wp)7usz5TUL)6zOvP>38TZ_5r?w;TnP4lWpCmv1%)H9vqixD{-}Ltd+A{KF zoR?EK>8olW47dp=(M~9%B>41cK@bDI)Px%tzEa;tNsZ2EW41p}J({*#c|XDiwl zPv44R+Wmd8K@O5Uk%UC!_hl_7#=Av_R!Y_RX5xI&Zk)$kMn8vs^GaHNbqaopOWn2g zHK6;bP{W67jK-745?vHp+CSlHt?i#aItJkoZV-6m;Or+nY%_UKcJz!uR3AlX4;Cey zj_hq`8Aljg7`Ge3M#a`~r!i`YMo-wVl_2GYld0qF((jg|7&p+)+f}xqkEH#8Wml;R zS-)i~+KX#9<&iAL=;NI`g`HIGqu9kL?Wv2rK^AJ;`vP2<=&b-I;KF~J<>5HO$Bj~IqQSM+l7m- z4t;*h5EFVAm_C2fIjZ z*7#O?M<)uMM6{0g7?_$+D|ifGk-H!UCx}gmxM5$Mc!*#Kf^Tsd5`GX~R=vTC<5d%# z78%ecvRWyLz(4E1xpS`$zx!C!1r~|nS<#<>AzU7uerR$T9k_=y)KP(-jLL0q5ig+UR$4t=K*qxcf~WK zw|=d6Laii1rZ=g*~WSCX8qcu1mu^oBdVg~bYl9BHT z=bM|4dDSNdLQCa51WO(Xr3f9I0bFUgL&mCzc~+W-rLB9Bjl$mc(g)KE(&3NHISN|| zjmTCH*XuUNgdTOV=B6;!gQO+%LnbR)9S618PSS2B=gU;BWB%P9>H5COMEYLG6l5}2Z!aMH(u9%l@vFNta8 zdS^Kusof!bS}!^i4TLy?;N!N$H){^*E}LGv>V-K?Y3|`s(;n;0pPMeS3C5*Acxqu-bcg0CVs5QSoq8{Zri@ zG#oxnQI~*=ABP*qjbIB9JQ(+}s8@a*a00mRgh*JF#X`cc18C}g@pKlUsEHde`z--F z7-J7Snu5suaO0$GL6c;~B$q?x^?cRAYE5M77J~G~e0f;oVsj3abFrwE1a2tCZ5l~+ z?)HMjcOL5;nxYX(c)H<@=ipc1)I^HZ(qib*iZa4QCTZmPSy4}hkQqTc*|Hli^9=X9y=)Eb7=(qmo)U}AFNv2h%3Z&?)jWfJ_PH~S zL-5@w+&IlkLz<&G`IHB(q{^2eEI~_t^y~LXHAFoDKT`$UX(nw}xGS@iKR}(0r~N=1 zWCHEn+2Qi|@(*q(8P`t+l@T%%bixE3*xA1PYxOLTj#?;hFv6)m8IycJ-JzYb{hK)_SVqmYVk)g)tkz!L}K8R^xdYjiQi70P{ojM%7OTaBiR4$tPU+UO z)1xC+0i7UJf9yK$p4%n4p}yn8*eD;^hOw(W-0V_Hl!{%;6aJ^wmpD1)inT?-d2ljT zzdroadj$!GgjPh$meXOhxkDm%3&-c-PGv7tuXpTycfv7>{tgMrAa5$BUjNK(bhrA2 z4^yK7OLOI~d;X^@Xvxg}S-)Idj^9`862mX6gYNc3CUHxc>cYSKsc6-8`VD^WS@HOo z{;CL@x;=xtlq9bL-DsmJC%9vIP`ALB>R>~sa7D1GnahWz(SWHLMwak9f7bkH{O5rK zIS9o+XT~gA`79=usmxd;J)JHf+A&j8>w{^ZFopLB3mjN-vZr?Tp-J#OTB1R&8I$aH zYpYk1Ip>M$6CQU6Sa`Bt1s5Hjb)^4zc_`1SPq;YRRLj-lKwWiL#Mry$1n7~)A1)gk#eOI$GwX81xY2Z>i}=8n!T%{AT3&VJD6@0ViO=^4|R zPDB>=5qh5Bb!BQ=EfRJ0R6}2}M%RKGSp|M;i4~@WRc=L3N8l_skJePc|=1vV1k{$;I~z6Rw1d0;ga`=d)* zpk85lG8tR(DDK3z1LDs|@`=hL81gMZ9|gob4}#i1gW8CLp##n=-uTgKXhlQ%B8v>~ z?G$AAxT}8aYy0m6_R*p1XNW}U!1T#uQjfs1yZCxNIYBtq#Fk`d&lZ}3j+B9`>cI`= zNk4c=AH7jhQztofy7S_u7y?t2BRaiFGXR|uge5U?+BgB1e;+(y9e}|NeBE&;p#(ii zM>++HWCuWbOn^}HT5vh-WR495yt%^yrv_PgMOm5x!^A+zX0||p212+Xs?h@-jSL|a zKEypf{H+Xm^vfqB;$Z2Bw@ z@%GmeVf8G+eBX@Sly(9IN!g!r3Q%ljvFCNYHrnbnlM1pJi0?dEbL;dvyWy#4cEbU; z9sHo6<0k;Tie)_cJSQdymlj-Vh>3+%vNvCqh2m*K8dt(8+9)exqd@Gc%huw3cj!dM zy$gB&?eX6~CmbPuk*R5lt_eT{LVwheO@)Wc>FT>El4P)MD5eSDN7#TCB*+MWQO7P$ zM_^0sqtmjY^`l?TUeF?O;GYw32uDwDnel{3Rl;MFC@X@IeY@Vn`!c@B+wA>LlameJ z<|`OC7{rSpP*sC&OOvdV;#B^gIrka)MIsxKUI#4936LdkODgV-V6wm@w>!Lga?f63 z(ky(vTB)Hk#9|}i&X1iDJ=RB?0<3O7C|OH$km?J~#2u5H;VT`M^l4P=*R)evmzh<$ z!ZA*+`}Pop07Ey?!E>u(UcsIpnvFE$K#Q+}&p^k^%tKrxV0+Q;a18^gSDvsp*NobR{;98G-We^5xKx;B@aYV%&c2 zXQ+fM$Fu}z55=v_eOwX$R5-)8leu#SWtzqcPsD;%t^33|5O`tiKz+C4ZU$)f|GI4(G- zz$+R@ArryRn*t>{=JbV~;mmmj-O`av1Y;brk{5A1q-w6qMpG#iCcT( zd*bdTl4ezZ%136XjAmc?hOFPTP+L%`$};zIW6F9m7aZ!>6yR6%;_SIyU(v*=(jRHa z6H%v#SEd5t8J-B!8))+&r;I&g=Yr>9jp78xJuh?-kRE(%rwF1iRs-Xv42TMk-kz70 zvp4Rjgt^X9*8{_I?v%PP_``966|Wq$LVO8w?HN9}K2CcCMs5!%}?#%i+e z{9)VtRk@RGz7dQ1tk4@`52|s{{t&b^D@^z5i_ilw2Wnz-CFUhT7Lz_kVwp_Z^$&T`R z@qVQ09VxkUG4du~l;!H)Cr(PApZ_#tquu#($|!qNO-*UURj6LA-1^70s^7D`C%#*s zNMQ61VT!1g#W|GE!khb>`yup>rmxSgQ~+85MRD8zrr*FFY)S0oZLVd~3-Va|N;#f6DTE*fSo3o;jzhc$ zmrhTAhb5tSWBFEkgK@sn-~qrCmkV%%F6t;#4XntlLhFELN^*QJIdl+Rbnv? zpt)rdIZ#a1z%FovTQbC0yx}V_p|1Gr?l-@ED)I0pCld``mT=hoJDBtVP zpZ-#{^Lxf~iSgw=|A{SSCL%Ye-1uto71rPHEoG^V@u?K#ofrjBF2Vw()bSRILBtzK z+AK?Zm-cVD(6T!MwHX(>+q^XAet5n0u>KWv@P;dOIWKrURN)}S2z&Qw;>L3ke&#Tl zufEuKl?wHY1CqS^ax%}ZutrbA5|a9r`EAHWhBTVLBMh>SImxoOOy=fN7J{jF7ARGj zJ4e>MIdbPaImJXO5mrHMorI@#RDvqu1i+!I;H^ydn9J7QElh%TEJwG}3ECmf5>#+`xZ zQ`&HnsD8Ejven~Sv@y<=rogxZ0K}?LUAMl>t+=m)2kk3Bw6@a*$4;)tOu~^_3z^=7 zI9ZTlP*3*B=rw50lOpwpB`(wxj8HaidA-PuF#YU|hGQ0MIUJ*Y4#)LLh1&P}@)^)I zc25CGP^o+o`pIX#<*(9aAPes^?wdr9|31xR5>;Os6~EvZXq~zxL9up6;z^0j+jDBZ z;BsIDz;*&8THMt>U-;vgfQyVv5thzVD@@#49UJ*N$x3q9*P~hD31g;R?@PZ2`6|+Y z(pdcY=aI&n$Z?5n)~`JMzEn_1lf8( zfy2*As7UkIPnOg1N0sMJP9}WAI?bc;=vkR8Vmr<0SRV}R$aYy@zAq!`X-;x3D0W*# z9h)7oEG19E8ZRaJ@WJefo1XKnG25M8uP+NX4~~39S3l~mIu&nJk1wPxIoD~tdDu>+ z15-UUY!;Q=Ax5D6S~y%3WZCwWgbB7|22jUoptBWil&safmfM-5k-!y-BQgygdeG9}3*EM19VD>+@g55c zmXS~1LZ^WSuo<$!iBtN*Rg;ARl!{f%87Ax?XT>Ob&?IEG(%M&n0p&k;hxE5Qlw2}5 zx4-gX>IEstyqU8SIHm(H$Y62kn_#v_41i=m8$Zv~QHhrdT^BD*kivmy4OuqkU|OF_ z){SfgD8LOYS(ibk&^JYzr4ook58;+7jkyr;io*y*EW;JQ?i(mfvgMg8WypM!GVl}Q z`8!<^`EbM;$|#faB{b_LqOxHL3#Peo?)NPK8Q?ib-{mm-sAplg68<-M^B`Rst;G=* z`4W7EQzb6y7cA``(f_O#lAK8j{<_j?zGaqrSb+Qlt0%*e(|FQJ%45k@Ow%_n&CjOkK9E{AIA8$OLW_P zyjkSTU)L846>PI54}rdPAJvx2PVtexbti%(UvP4E)6EGg9?6Qlntr8W9I?iFnxWf;GA*lt^cZB14r!z~AUV{_C zA&6jO9q>EmMJ>dJ^7{r?nSGM^NZ4G6<<6n-I1T-w9d3oFm{-@)<6$dy*ybrkr3^B|8}zFdKMSEjHZjfDtE(0TgQ+8E5|x)Nh3&BC;38_@ z9bff5++fy{f_Ol4ei{i?!U{!Q>?8rFPhjvllndGt76p!kdkSwnhB+-`<<`MwH5V;O z7y}wcstzmLFd*KvW5>*=opwO;<3!ws>)LJNxUchiKo;lU696N}EbTom&&^2O-}evT zP-p^-bFN^j@sa7ffeEJ;-gpv;ZAEivmNa@@eozM1#BcxtyDYtOHG6i7W%91X8wdbg zpX1Yo$=}`73cFXaK*kZAlfK4}ZbLH~sH%-j#Fl*K&fBp6K9Q?TE4H=cej5I^n}XV# zhic5qFRbO8g0#GVy>ZXJ89S<)hLGcl z6VlYPQwg}i?jL5vuRH4L)B8XSFrrX^>nrA~DwfDED@OkweLWm`pEi%GjWQBT_fPti zACF;O7GYFOGDjcVF+H)Gcl*)~jOP%TXygg!##F*g_2v#?-gt+^N)q_PK~{zDs=xs0 zJw>rZwg-+&c-=G;I4=+!f>SVO08Ks(=phC&aYZrdghLWJ1{737Q9;Di@+=0@_Z>jB zu?wxa-@5kK9SAdG>EKN#^1HUgKT!oCt8q8!AT?2zCM3wq+Xz-BGIIV^GzCKuuCSPr zHv~%NzyKEqGnsN+1N0JDaLOM+-c7Bq`Dr7_mMR-95aN_&^QnZuw*j@~c%S3ZE=HTu2M3;2xLN{PWhIVi#B^R@M zu-1?Sjzd(#4AuFxiA-WO18&2J? z#zCD?YF{h~&BY{dflY@y5y@*<|K2tcz0cSz|70xxEb3Iq0u}gRYw)(Xn3@XCgvvf? zG0Yw92S0@h>I0n=7Dn;t4^oxg$@>iX*x2$dtsbFYS@c$?L@g&_9#b@elHPqYO^f5u zy8t8h9uSHj+E;C~Qy-n-`uqaC_^|PpZQzRo@%`(SyN6ui$hW<$w*v-xhJ|$37p#QE z(}c(!f55HL#;;?)f=uHRNVpenfBtTNDVp|i@13d3FF$6=-9+Jy!+D%?XID5eVN1mu zHk8^cR`EYz1$_(6?7OiLA7ztod3LBd^Rj0-2GmQd$1K(f4@4Q85TqOM8fBrQM(fVh z?SccUp!}0}x&|?42!(G$xyS-bNq2oIZu!3z)=&P@S5^pRh?&sOr~YasS_6h8Z@NR7 zk$<}MSh-E=u%vG zf)DA~FJ2e7o-NXqz*-XTybII!ux&)NPTjnHDN?5y)zF8u!Z4mL5mwAcEMwIHT zmrsvOpxX|_ai0lK6S%{c8wBMB9Wjfy>7%EDyYTpabr7Qf4_aw*TOfI5V;ch_*Xt?z{d}X^B8Fe06tULfu2nY zUmP;3<%;`kOpLCEIG*i+_VmZ(%zpg28af{M4DkJgfAUvxeIg4I6y}&aB}U)WdiwWk z=8^2qF9f(su*8oH$?J%L*vSSJXw^|WY47X5I}Gl%$h!_KxB&cqUPheZ*vZN&p#z16 z+^cMi+rk_avB{#llL7ND6BG;C{wuOhf=`*ybzoo4(E;bE@~0E1%8@Kh05Mpg4LQ3t zi$XESe1vtE1I(}lZI~9}ke4APXnni)er{rxFOi_%tD>O!&qXUAERluh`}hxYg+9qA zS@Nxfq>>TToYWdVNbMZjaSipwGXnQJi@@XM za{OVDiv>-8uJH_!;==ZTAPn0};-x8V-|K+B<1Bo+iC`T|RY>NR$%Wa~=kXt%MHxX8 zC`EMpyOC)cL>u44b85Q;YePnc6`54vT;Oyb^@C7knMY|Lv9G|?)q!|FZ7k$`eJWae zwil(4=%6ge;|#1YjMKdi+S3i8$o+kYAwI>y>-F*h-+$Yu>F(0E4e2M5#c}t}b92gb z-U)$Y+hXrs@Nyh0NcP{CS1!wep7;3`Dm+0R*g%`-{R%x`Lz+u5dl3U0_9ysQKkwg; zK%n;>t>+m@(cOL`Qi*5Yf=2f#goN?jAE^UmXqn3bM9C(|P|Q21o!{DRw77?ZX5yx2 zQMZxbAajIm6AOf&Xl!8cyz}xCyY^vCxg_sN|iju7;V1%S7 z{@*y!Hk$OyRDu!8MUKbYU@9F^FH^58mCQo9n;>DMj>$C<5?5IF-WfA1YMH$R&h4i^ zMYt7sq&%S~^VGg@H{eOe{&G)5>+JPK0ExV~IX`qc%}12JNwl)|GUA%t@nRUx7?RRN zm55vR!7lZRoT@?XfB#M$lBa}zA|38Zr6H(g$;2a^SF1;Z}oOa z=R1Y0uWu-1X$AaJ*=zJJx_A{w)L}o@Q97K;aklB<$Y-h&cY)SmLJFe0i~sKjA*~O) z3F{J%yJ*_(6hgt}xd%3Ed@%>-<#%}_VRIztxW}bOoU8;ra70L{oB$K&eE1O@eHaiA zfP-!_92a9t`nSK1W3n6>l<9nB@$KE!Q8 z&}z`w7zKdj10`)Za0z(BoF)bE9>lVs+6@u@169|DFmZz2{GQ|P#SA?H#>UK`fONVx zQgo4V<5=tuW@K-F6EIR!f-_X0)|FOJU<_1XqHX>-2t})Fa4faeUCM-p9VtdoGj>zp0amhB#xk z$ztP0xNPir+Yn$Lwp|BNRE3Z#n|}bDARlWJWO<))87Wr(cpa)!#g>p%4FzQW=k`o^ z>F|hZLHCdXK9O<0YZW`fSDEnvO#K7n{BH=L)`6^^5B7wXdbz?`Vf<3Wj_=RPC2=^E z{`w@eKNeuK;Z@ygb{0`cB=^0dJMk>ITVRmMf0EON@nh;@2+W@av1ELD&SEcw@u$s^ zq*WKxptPPunO{3~7kM+3onN&HNW_s6NO=sdcv9`bQRKUU>0+aiYC5#VPs&_`0%-*N z!Bj0At4U#5j!RvfNM>leQ zok5X{&pdti*Sgo-94Tob@=Nm`9RIG$-*&3&A{$fy#tSS;rq@og>(7Bd{S>3`{phc7c}XBf6_{$QQ3RCn z+XAGt#JWvWa2Kt#Z*J@_Q&pKR*8wfF^ytOts?h7|jQeZ9;Ws92dftNkvVFK5yZ9`g zxEto|8olBo_dza>kkF6BD!6r)unNf>*S$BN{5y}=Q&xVbw7sEneAMn4|3z$+uUm5b z9+E0i<#&?$4ZV@w<&(o55qW=&vd8}9W2u{imcqL+iQQ1YToQeMYKosRB&tiFT!NDR z8i5fmDZvX|REYp#&4VBO(J2hx5dF_!lK&ABZWO~UAi*Fad(S(jLc)ix)m zsn>;T3vo<8#L6;fK$`cylRpy-H6u_a+QjJKO1tRgEj-l0ug7$0fcvPxp%Gp6|2!sa z{|zxu(txHXoetCGrhM!?x|G^R<-$i$UTG0}j7nwU+{2%UjvpxS6&a8G_f_$4J&VWugVNi%)BNk?; za4Pj=e(7X@i|6Ir$GIrhqvu;$5i|~a5xH7EDWGRnpz-0OjTh2db_8_j3VwksRVapK z=puTjXku*SBVu|IbuJT*4#BV^mnKiPt($-E=FOE_QTvN&=h5FjB3C{X8`1aKSH3rH zRevFcYEg(%02Y)ntWCMRP?XQhzNcGZi|73H_E5H{~ z#pT=dD&!;l!E=c~Yc1sK%=Pq#QOZ&kZk1DShbeRO7z7?4K-pX#awk zwup8UmVf5)sEWt(Zm+=OW>)oqQuwztRLJL%o);h@+*tb(m;IJqJ9O(sO?gi;WhI3o zmd1!2ZKr&MmW?r+Nym%r-T-ID4~j`s&11=y&^;EH|nrQ6+h_2>I@?9|}L{OUOQK%x&D6a^$;z1cw<=1JFh_|X@Oq=*_Qa*+t{#~*R~>Hk(o&g1jSe}(xo zEe#}-O?f*GW-_SR1^a@sDfkZ)jZ3T-rw!Nt{<;dbV^`ukv{1N<3IIXRK1+E9!WND& zm5DXm*UTp*uED_AecI}TSg0PMha5lQHK}c0f0p+?^VlWBN2Kxj;>$Ev0>b#%)XWr> z|E_%mHqd9HI!sO>&~>LXTPp!vr!RI(o>?8?q3@XVPLHjRggH?TkP0|zRG0-w(W{3x z_7Gjf$U}2|wZ8{}ND#>dd!ffXA0zJ89{$lIbQ1>3n|<5CWiR1)3??}m%^J*r`_Ln-!nP~Dru0KkIRMLHr{uGpg4eTm$@ILQSa5S!vh zJm{@)-~&|UPdjR>`$ z?!gOhwspEz62Z;`fXmun4R2MLV{b9x3Q)_O%acukrkfpBxEpacP!WZ^9j==?v%B)~ znXhlPU-Mdh>hAZuleb_e=hoFKU9r2_qj7CEzC|d}=*;h(oMe(JMB4rC{8>3|dBn4p{42B=YCZC1^1b0cbs0*V5#y5*PeTih1uGeEO zM_Hgte-~e*Nr~Y=LE-0Jrk^W}0d}Uw#DD`>JqS*g1C$}izXQ~u^j{L=S1UOVfbvIG za_<23wX)^=gg(O2u7n{3l31r=59T%$KOrmXUmFaWR3$^#o?Za+qhkdYW1)c=QZ@eS zjNhlPUOjfM$aaPD**a)djy5a}GtDiw)kBxHYUi_fg7P&;71!T#mzdS^>+d4DHS&*E z-*oi0ZC&hyX+f30Zk>Jhkkd~nd}pog8a(sD)XZOK@K)~kM+AZ@AP;f5;&A+X`8_Mz z-~xPinczR6MGsxCtDEqot!4GKQmE~Bl3xWWY5)XKx=-I~bZlw7o9$?RN{5#Xc?XQ= zJ?F#*_rToHFS^og3r8Xz5A4EEMO$eA1-Tdvq8>LeB29JW(UEXO~tH z7Y1-}_(+~?|3+#_E`xxROlHO$&s8?CB=C~xGdP78j)Rb#U0NHtHp8Gfier4ltFxy& zb>}ajN5#b>NI&g=y$o9DXIz3WcFRA@I3;j$I(u)KL;@kRK%CiO3V{gy(=B@FW6Rap z#&5eX`^X36{`m~Kk~fYtz@hQ*aEiJCBT&=6o=sHDYGM0wisd~((d^khf3@h7CE`$; z7kd=@UYv zx}PZie1-2PfSBoWd5z;Y)gJ`r%penNqHLEwo=tSHpF!a*(uI$#-1EF9qbu*jxuZ37 zi6d3a$6Q^eSx|s3Nj~ychJ|G$9hduIIWRv8}FZFn*L|aZ5zG zn5~RHD#3g~f;upQj!!{Ey?q&iH?#1rK|uN}p`FOgpZqceX;V*x=3@w6MM6CnVf^~! zn*7pJ6zu(BK}u?t3)KWlPQRF1mj0qRSFG?y=$*)i-9K@JF+{;v>Yp8kCZ~MXk-OuD zYt&NI>t}6!TX$Qt9CzY64Pm|~)f0!*ygdxMSGwIo6iQNIvl%|Q;XyfX6!LM@qXA{> zzQ`i`tx>;^_|t~w z0l`HuR;kkHJg9&(tVr%Ev{)``!!!2_T%)?K75bvSn$&cHrD_q6(a|tJMZAgsb@gl> z+Pw#EAwnh3!E~k%lsf6DHxQrUFHf=^BfRd4og^>fjS*nwqd19#dM7i-^Dcqu-DvCz z&>Xd4?Rnr>N3D{0vB#Vfk1x<0MqLrT*@@Mh8)`tg+;(G_>qJ{VH0vQwE;gdHj5y@I zFZPPpUAXN^xzXCspsCl+Qr+=}t&Y!y6koV}d&XFlY+5ge<1Ed($@Q!PQC z6C%^Gl-z~;3W=y|Qe!O;e6{3j)kS)PA!T0HGjSr(>%r9#FnIVA#cQ}yDdcq46)LEV zS^tf^$^XK6cBt|nFG<+wd&qJ#_&qtfw&vmARhx&?p ze2F9nb~38cB_%?VuzNhas6a(_VGlAfAp=Qi>JxZ&WM6VEx z>Tg3{*ae)VtD-Q}rah_*c2i1k->P~Wi*OD`Zx4&q>?-wN4EToYroae0B!eS*awZ+q zGfd5s=r9T!wh2RcR|Rm|lH2=x<|qLqD5|H&CrSz4{HKg1nR! ztN+ymV`ug$peGGX*E*wRXzFb0oL?DX*{Z~_tapmx%l&X(?c8Mf7-U=B2VXiPY~cXUp7dFInje3RRgP69X%XtWH9LQ%)5ylLhWK}B zv-o_sB%aZlsADwkldB0PadBo}FHv;yxS9~$g1BhQT@fV}*aak8cOV^ymE&ZS^@T*# zym-1maWJ*si$D3dC|5Y2-@8LKrpbGzWy|K~<@D*QD^$ZX93+)bG}LjZoXc6PDn(2^ z;`gDQ#9x(^KHL9^%bR=5EHm=eVD|A1U5-!9W;gFPUr`Rw;T0m!Jcna`i81N?qM1?4 zJ$F0SYXhuAyzNpkUeKt>Q(r;6_MeRRT#|crr(2Dz;1cesDIax}z^ERTLQhpvO}yPU z$K27n&P7EDFsJfE#t`wvaTZpUm(F-3W83X(GfnmQsI_U#ayretPKv2^z{rnZVY>q6q62M7MIwK7?}$(dNws3%2H+$utOLv#^$krtW~NfW;#`82z_!=pNLkJ z0uER8d4F;`#N12abEJtq*y;6(YLttvnV6N#>rk26b-?k$g7bTx`UNd6VB;dXea~?J zT9%S?(KM+?QD~~P^@-E@O?tBT9$#zU=QES(@Rm}kXJbY+o-=&ZJaX=&=sVW}dK36z z9DkO9a{4~I*R{@bzvz#UX{z9E6{sAm|FF;5?>+oA&m(=0pEAz@2mF_wna3R{|DWf3 zXk*LIuod0T8-IV=yVK17;eepPeOoJcvDNphe7E*X#ZAI*0Exeof~@+!RgB+!#e%UJ zg}!Wlz*1Ioe(iMN)|RbirHFIwrj7A=lsCpW(;=*Ku(9iFuuABSZ~bBC!^Mozw0^E3 z3tH-v>3aKAE7!8rELI)xldP07*ee*d!ylxXuQD1(eW&zT*I_b79gkJypILm?*^`#8 zPyF|`2s^#{|K8R|3?=BixlZ@UF)C6YLDW3#tT8aiiAZdnFzIj^W2 zZ@&o$XfL$f9xoV$dm&BE((C(jyZZLZ*N21LWK{#F$WzoWGTvg5c4ad$m^;-ic`tRV zS4pGw_~}LA-STWTa))UBZmdy#KQu}A&+xXGFbSh#|9#_(-uBFfGES2b>@%_3yd;Cq zAVkW9_NVYVS;L;$QC)SOw0^m`LIR{l6{nTCPGOsc*>x%@@ZXK{X5f9&(?_gZ!}~lq z8xtu^j}iPR3s3OkHFrcI$#}WoL~p1dA_cOXMoW)?^Y-MLc`CC={-2l~J)K*JP)FfB z+)?sOZI8&x_H7KLk4r$Q(6lEyLWx?zsh)Z1d>meaAJT<_ny#OC4ywOh3m;+l}aS z{!ZJ^8nG%DpNEE0^nO|RL&WD6+iF5hN&awf){2rV9@f&2>xTsH)Y6|TRg}_603gQO zbJ$cDFA#-#v7c|ue?sA+=ne!Miv9N#L*qDrV;WvpClx;A`w+#id$`R?Ypj zZ%MXn>D|1WAh1iQEQ*Haz?v&u7+SE%&z1M%a^50grw5^8x$UcCb$3t37?FMe2Vm%n z_!G|yJhWNJP#o1)^()fi;qjCb^P5_Aw8~VlD5=QE7w*sav4&i+&Rm`%N#5Kn?mYS_!N&9ClO!&Dou z9)FbC6$o)ZKj&HQdwU&3H)t`lmTBk}P2?KqIC|WH?7r&C>2N>}aeEt|3=Qtnu}eC} zAZa)O@69cHAV9jrvmRb_*FBawE(`qrHB$0h$d5&RGEN34;KTAt&8;`;u#CNV)dkJI zV}Z@_=82L}5es%4U!fCBmv@!%+ng$C8t;~5o~30V0vWyMQ3K)-zr0Ix$1XfDl)8Q3=*#EQl~$)>by@5kRry^@ zhm}Axjr+MLdoHU4e|EimG>eb)rW)}J7ajyBNIKq3YojAbggcrq4{W=Uq3ch0Y(u@v zXah$%EDeWHSneyb{>cRep@)!oErm*zrf|x|o?!z9+_BGM*&22N+*DZWoAY%9Wg1v~ zwXuh=SHNbGU4Y^@aGFfx3ekL>4BH(}{zILqzSP#2fKcJ9xomcv%=W*hd-7=W*C%@2 zw=hDm8aR9$k6t_U7ch<Xym1q?}Bv`;Jx&W5)U$0n$-osG{_3t-VdZ;hu@rDy~X$Jn< z7v7*CY1Fv;KBk&vRd{mzxIF&zH4OvBKpxqP#$)-~uX896utSu0*cQ1{-KmW45nQj! z2iVWhEoaUG6HP@Yp#>*-qQVW(lAl2RxCc38TTq)6nxw%xqeBh77x}pF?XsrPQ0Lai zauW1XF5mc&Gu^gw%1)y<5S)3pgZwZhFPbLg?xqi zh-x{7yDUxl$=m z*$)O;9ESywPt~PjY}L84g7hR$to?~!u_LFTSv?h9SolFPY2CL6xD}4=b4kM)cMc%2 zp&rmHeUQebv2tk&V`g0;T|&X!@+dmHBOr*iQ0AW!cEX?eR^wS_~+qnwl@zKK722pJRr1}Bi2!#JtLdHd^?d_ zI{wQ~>QwA1=?6q+$L~8HfA}FA=k!j!c^;Ro_EE>k))ZNeyplmH#t0bY1{OE1=RA-PSym<5Br!J<`gE%CxThl96LFZd0*@3#*-A^w_Q z&Ak7)O*6BOt^tux((POhA1G8ap-Vsh(6Vt?>GO~FjwAG(!U#DiuM$#RkLeoWmG0e3 ziekg!8IFj*MKFKp(i6zSxghHai@&KFbFRb;zFZQ&`f17X;rx=Dwu-_ct5%71+{)wk zFe>L6OQzAMGGsxXXk~Es6g@RC1)o-)F*L#8gnvCmZnOi1gfb)o9?n<+#EP$|_N2}> zaFp)hB-s$kRmF%fDijg`bQL5`)V()dV@i2fB;)qrMHhgbN)Itds{#zE#B+X^Rxct~ zGh*jXbkiz5cY0G>tG&v+ipBiFFn5SxxSQ$CVQ$AH3A-om>F-Y3^<0LeY}xaO!xR4c zIn`DzdL`^Y^NVKDlW;;GBYKZ3?{50&JYDo=#HFZtT+5oOf_@elIEphM=}SyOITm%@ zp*%SS+sp*Weu_@aCDYm9J~|cWl+G?ASUoHjWY;7{TDzZA%0d^ImlM>yMqX9VCo(>BbZFYOZc&mSRt>o&jb%mS}$nvaMGL9vN z%qa(=9lHMEI?h}nJ=!(ip9Agu1iFw|kpc+qb5#`(AhD~50!jSDUVOW=u=K^D-Fx^@ zNeI>u1ou(}2}@7as!rBe>`Gvy!xA#*lEHI?Qf2^2Wr0DwWsX4~hJ=g;M8OQV z3^e@5k6SJBwh?g%eNphzCFnuZf6464o22iu-!V{QeT->5v1NEwNo>tkEO7*To0j>W z8YsEXB45fZSaFYdPVJ}b{3BzKEmhwy$0}-3f&9naE)XE6CEBk~Bf=(mXeV8Su^GQ; z7dg%5($yz-m8PohKS4H{HzS+Mm1=*T8;btU@&i8tBsQKJUAdG-PS2jemZ;$!tv`0H zcD$>Y-Ml9ib!@orHq9BU&?0`Xl-b*`_lBARJrLjTIu;d(o#S9}sqV1yYifmoR~J`t zgU8J)i+Ps4VASu76ZaY9Qn@1Ad7|$tpxjP4sl=0rAv0d_7jVRSkr3kQ@U-{hBHu zw=>sFLg)LAbIMgjk6_Q6q#`TD{Ngl1WMvg|y{cczLu-Ty^AEInkWGu4s~+sJ(ztOC ziX5U&jMjzvFGs>^)hQp${4XxR#+9` zQTDbzbhT0e0?IuHe;q|0tvAU{Yh(+3?5R@T z#M`L6n_iVs$;ncDspbEPJRXbrSTKO1-a?K&^*$@xu+S|KM$)yOr%gL-@*k9b5vHlsXqZVCy~| z+j?X8YL5&@X&xfZJ$aDLk=57tn>RO$>4`05SNdaIU?!F5NkB%=FK4{_tbx*Q(~mxbwvhYko$zs5jwT6EX05uq?4i?d%Y-E=Nbv zdz);e5XcW0HzQ3kbP}^5{3cKUOUdB?_PbyelJ!^R2jti!Bkb26(DwUy{?>Fp`5_qC zXYSf@c_`Lu`W5E!+m(Z*kH_9F2mMMJ3T8NSP>bZkNV|4tRwq2dDvJErYWVZp4eE%p^zBCMs-07}RKuLR#NrKAe9ldJi zK*?Hj`UyGopJq6tmj1pQM*N2S?9T$Iq80`~vujPucXW2?J9=z5;Cfxp)6P>V%_Z^E zIsvjAb-EZ&ECF-O@y~(8^ZsX)Jy9;&eT^2i*^YZ&#xpluBRf_1q0v$hN@)~GVK`F0 zmn>AqNKdWk1|2mgqKSDP4rlT$D%Wdm(C?<3C-wK7isz4cHJQvK$jzu3Nupp~^K)sO z&W6f&kXQvS6VJYpy_z}ty%IX0T$tG}DU|@HfL$UUnN_WPhBa3XYfBnBkh{+&&*eMd zBsYeU@im5osA_(Oq-h{!(ytl#=h)F-zR)%kXnZTe^B$?aR@d1sCC40FFr5jJ2lgJv z&e5iVg0qN{IL!}gtXr7_{rTFfq(V8b{JOLpifq=qqlX&rQEXlk(%a|c83`6dZWk;$ zqqyb+KYnvO51D8-QC}+wV*~f+WWn&yeApQhCJ)UjPpg#MP&C;Ke=I~bf&V!&9V!4> z<)RYMZlXSL9*udzKXT4ztoC*!Fjlvqy}L&x8_@!_9~&CfS1#6d&N`>gya6GA;TeSe zgLeFMDTAm{W8W-)p>+GO09TX|-!0BIKen88vOC$1JWnYtnQ**45=nKnnDe2Mp{t)l z=hK(4nWk+Z0RLF{ypc%@b?4TgRGj_&a@e6{e20<|hJmlS0D0*{4|}an&M%VU{Z^+6 z#O+Uk7%sFdYA&m*Yz_Er;7gve7GwxE9H{IM&x5@NyErQnHsA2K1^{VMg_foTA#|iG z@Keg=HUz|7<#%HLY45ikOeOpHOI))CVNh|N)>Q2&0E$cU&ey@!|3l{qjmgh>8|hoo zHg8oJ+u^6w%4t zU8?;OcwnjS@c_O_G=EGY8&D%b!WL6?k~;+Z>GWD{2hjSJ=8d7J_wBYu+;u?Os}dak zR)ew!q@2f0>-_;?3;2)11_?@4b(5OzN>s%4#*h8JwdJnIH{L=|UH}F=9AD$XB1=QO zWyi!tKv0)M1Z-$GCOb!==HemI(j5rnNlUK_qt09lH=A%GYh#&S@j1nD=h#U4tHs;7WrAK zIK!LAS~-=Y5Y(59tTl(2_jzxKd#vfDK<8iO%?_voSkRuTNOk*5W-+EaAZ_^sArGCp z3~B0XbU0hR)8ykT$U3m(aV9`X?r@A_4GM;4oj2`Koj69(a~5h2{lrw`8Zj>FzH6~w zOygzAeYe|A-@9&hJl24TDpk!x*{8(;UfOZ8XH@EKKQ>er-6tFG?)^?w*O<-*-K8Et zVd<&j7KSJqL5n#ie%(S<1JM4ao0}n!+9732pgvfJ-;20=U`aNm-5)0Z9vo3V4sD4} z#L}9cSqEt!^XD1=Q<3jSvX$Lf~Y+R?+dLg>J8v`Z)AJ`86;AnOr|#~ zSEhuoc6x^n!ToN=uiDD}>;?jAjW> zrtqmE;#oo6_{IO?VX%c@bb(ox|A&8XVV7z!9Y`-64D`={-zyftJ$;r}^;OU73@#Da z{@I}Q!$IR^aKN~s9DSP2^`JyK_#vhx^0c245-?z(iQ@MBR}n@-9Z~10^6$_eQ;$Ju zV?F1drEsCPe&vHp%DdcigtfV1y+()ZY^6EuRlW|eFM??eG70Yt`EMuHpn5{^&%1p8 zdk(cJN=$_VhjuQ?to*PL8MBWWw6SKN?`>Scl}4J38~|;e8GZKK`7U%6B;K7EGEDHm z{eaScsgVYL7GXxRsCQKa1nL-KY&(T_cZfzT&eoryLd<*3>AZoFZ#%VfIK831h=2as#hb*aH8z!J>2QfwrfCr(WV7M6nre`f?WM_nK`PW02S0Ehe7F*;8S@hndoqbPx%bOHtzqqjy95TJ~lY9<{Nta4iP z2yu1ER9RkZ#N#nyv>{0=&}LqSj~(!h3QCs zkV;5z5>9<*^xGE0h{$rRO1X56ap2-?dJPGiMz_`klstq*;spxEg7w1ql*F3Dz#s4( zQn3L6;x(3Mp7M@C*h6eGT}!~-K|CpRs2nd1NLCo!cJ}A2@wHwngqHI>X^xv8rq+=U zXFYe>5I(#;{a-<}%cNie@yW!W`Nq!iZ)<^r^%41K0t%vVr1Ea1hxZUSo!JF*u2f)u zfcru|oaep3gK_ngKrDzVp5upbesI#!WdQse@QBW5XFS-0sX5D)1efS_D3V|8c7v}} zg7_H6E{Tfe>iQ>fc;{C(M@Er%K1o$=*JOe)Mt(vK*P;40DgDjBvvQdJ2LL^+1e~?> zeDo!oTz!bMM@+eMw5t)!T{qtmU4`6h!0&OIS%?mJk4;D2wRBBK@8JrwgF;I?>o8i>p-`5$9Xm$5qr>4w}KdSaWZgF?n7W(+iy@wH}0G= zjWWvqGv_l6hE_$Y5shCiiBMmmv#(Y7e2q!;&qT95%IxO)T;-#aa2^nuVh)^7@;`YD z3>N9%`HqI|bj6)U_&o5Y4k#w79~zW$X|GXHQ|Bj8cb?o^dV%`}N3l2} zH})UR)R_EpPH8b$JIk>;2VBg1Y-*(6FJo7~9sJxjtQ>>Jr>U$l+wsF&iio>vY^1rG zmXA6xFBLDFC`MW|4zdPR#1plmXnjA+-*CaY!Kh%0R+#*eCIMojcp`TWFOu|Wz>0V*Z(PV$?< zqt^BCpJ!f|wdv^Fu^j^9%%$=Adru+O)aKaxcL^uRY{T;^)e=t}?*rd^Z}zvsa`zc@ zb1n2=+pxjvipP{+wS?bS5u@I}$nH^!89|%ZC8}3ISG{L+Q|*(L2>7hnQjHB&8SKIU z>F(Q%=UQi-@=l+CH-wCHj}T%$2lCc>-ABr8Msngz8Dy($fmb4hEFtttNzb#m!&GzT z!E|$#G#UfF6%KB91~mp09z@GYSr~UG-ntMasaZ>nMi9AaAIMxXYZX*14v zp`DE0g2FC7z*|{ZhnJShE^t5&+7((6Cl6XAE@eFQv`qg~lhXW9i;^UFh@rXyUJr!S3ZR<*(E+OJ zff*V41rW+ivvpt5ldo>1Ke%8ERl)7jbHJz>+Bkr@pRAiT!UDAh1CWWm@fWpM|Ng0H z-GO;txfgWZGyLNgF_$^?Mi8odSN0W1rg)ZaRV(fu+K~he;CZqzi}mTlV0|7h!>yhRTy6 z#a!v`FK-6~!#nCq!&i25=29(k!2!W65A_lCGP4m$+eJ2`RSjTJt+>I{+i6Hl!4^zd zJfgQ>LI&TzL!si=9fm8p6A^`oX=BCvw{^ngMVMRpAZ1Hwf1k)1kc2qxwfjQUP6O{?%i|k$qoQEVUgiJ zL{l#U1=nEr8buK&8{;^j9JWwO3L;F`zvm*5K{KY-^)U?U5-Iw=BAmL#pD-y@uztm* zFZmmR__sitP$K#PxpC|QdIW|5Sw_q-Ai($I(`PXIU6ULv&7Xm8%^KVvL=h_F8Kf1i zbTWLIdwX{Jo0X#hBmLZiB32i-DbWAPx>fuj1Ma~KX*U6n$(bD_1O_nhxTtQJUiXKR zHi5#M36_%(+^sf z=(Q8i9eqbA`K=D_jx}e`2tO{)ux9#!m^^L{qp0ZcWIrD{Q^vM`*Yz5$mMTA5Pd@Gi zRgo^&O%R6!Ac9at2ipU^^<~j$qKoD!%vCE#%uOOM1Dj-9rfd>lXAcujB#u3R2=h+F zwvo08tM(Jl@ca)B5d%*@Aj2)-$yW-bmmxWU2}zo*0ojiGv%fOp3)AL76v6U&q{4;T z0Vd6MKt4%eoa0st-?^9*5wj)3c0UjYa>fIfZ(O~X}d6clM%0U)Lj2U zzK6-r~m%(*q{6J!Vkdc<<9F$QQt_E z?l-JB{1T1NfLCM!YB^r0Ghb=wFL1|&tS~Uvqo3~~*(f2W@)Mt;&*ss3R)uOFZQL<=0kD>1f86#9afHHI=vrAV3bR3}hOm%yENrk>8WsihOZ1=XLZgvEoag?xCs5l<@Q=#4dCKvf^528)bT@rCf|T}ji6>PS zSmzG^T%_zfg<@&XuUx>A?w1CnO!{@uwZFtzDIropm#lcyaCCI?{RhVee$-aX+0d@W z9l8+oPG^Y{X=)nfTxi-OL|c9+vZXh=GgNi}ZxckU zmN#WduL_6k|Dh9ULxX_ul?5mS|KYh41wF%8#=YLttfE$qRM=79ZW+y=#bv4yCqgcY zUa>Ov7XX&Z^SaQ#P)h^=_y~KL1^mzo;NMVRO7yND4Vw*Zrxs$PQ6Z0|d|mp(|65Ev z7kN5j)8NiYRMaADw;vlaK+8$`q4ri`Q?Q5lp<3GGxt;~t-ii2qkkxsOjDh_B|2_$^ zaz2XeS+eiCjHXFEeiLC-fKkoRQrl3_5C1Bpr#i~LuZhDnO z+$5%3N$5+aW0KtC_cJ=WmzLTTFN&N&r@1xQG$9|vaPx|nd2J)Q)iic=jx|B)Qv=!dHVD|e+R`SdI`rDN}C~n2B7#%=8!Lq!a%8z#Jx*?LZ}Cs;(oE-g7I^DWB*(uHXK9C*QO@XfvZw^p%xF&~CwKP}10OBs zmH7`6C6BCB6-AaK+RrI$F?uc+Gf3rd1WD)e=SonA$+`b#3u5MZb@F;%5cG0g;mQ!m zds>WylCc@-DIc*Ms(UMjx{*@eTP}|J#g3`%p=_S zev_HwdmA8sL-6Kfsiiy_O&??xs4KoATrI0RBpz>Jg+*)^+zfLm))$s&NkSE+N{T}* z5h0bJ+Y@OqL6@%P2zQCyJgohHEh_=i|Leh}PAH3~VJ%+JI#tB4o`0cRf(75r(pf+! z75A7I(=6Rt4~0-s$ccKDT07@pu?Ke9>ll|;i!%w{;{tlQlI-E6-*87tY0H_`eR8Py zz5GIr&K&PZgN-ZE7h%54mT7p z)U)!(ucza(by!@hiGacD*9%hLGu7wXWDW)x*=VKC z0xOHeA4?5C#k_rGUAk!J0}K+J|A8+KtL9F~Ty`E2%A=SQPd-^*p3$2@HN*FX@d8>^sgu=miBMkK!nEAGIH2|UiUc{r#vyZs4?`+Zrs^|X)1|RzRo|0ev8~;QDY!mTP zdRxRT-InW?_7E_%7L)ihlGZtCO4t^CIjbZ_xrBO{$HQgvpgI^SxQ8-E&eF>^HI}F? zo&O#==Q$Rsv3lMNeDwxNtNaQ@Xbs$q1fF+~;VlQv295n!c^(QjY7YLAZ(ej=n4qP^ zmH1hY%v`;b~z9{qd2Vloo}tjKmALaA4woqPFROY~IIL~k{?t2B1) zkCdsgsgZHr^~puOz90I}W=`@#&fkfSs9+5exfJrs0L z2*XhtYHzE7tT?%h_XT4Pi9fhQXJX6VJh|0!9uf}XL|ey4p6mvFn+U}+eKV;Es=4`0 z&zS!J8F#@6>~>E^kMM*bK`a3fg8tWo?~o$(P~`r+1?s7hpIvaw2_l$GA=QCybP7-= zqEdc5wtgb06L}qw^XaAh>8TYM&*p+xM<0ySF|ft9FQ1+`|AOh8&A(6j1GcR;7NEIB zB!?D9E09?mq1l=zZKn3R=O6$B0Ql!XM`fS%{v__7EKq$aI96z)hMWBTW8 zO8E_f-+ z0a)b7p735V7Tv!pYLVP-_Z6oX2=3RtFh+ZT9lI028t3)Kr@Nx(1anE*SB?M01ptAj z^VfI8i&2@e;t%ALLXsjF%2D>yxXoA*pA=q7^|!~fQAv7 zB3ZyN;rPmrr`w^JnFfbdhpQe@NPO2Kc#7wNYm<@wyrm^h{&b!$NO%wRm9-<`R z@!sg+Lrlv0AVvHXqM5CF{9F$)<@n#=X<&h{05;Tj*_>G^w% zqdVB@{PG}Jf&2w-XgMTBCzP{}aEs?5gV}@cAAOHVbm@ZgU7>Bkc6$TFC~QH^)CbTS z7F#zCvlLnj@a~cgMWptMez!WQ$F8ZA%$E|gf3l=m>3?&2gA`{-$vE;i$Z*zAGn_u*T-Vo`-rN-7F8Bp->R~Rka`24|_CP@A(g8*s# z7VAcY1lZmv&8NwfL;BfmZej6{Mx_#mgXba{lom4Irm4JaIS&{-5=c1&t>fD?b4oN2 zxkp7lefe6=&*^$TKSh}|4n>7G)5tI8*d$&?0klCj8*UIWQ%{A7b>=Qh9 zs5GFTTkd~Z7YorcPtv$mCtUw7P^=QQvF*?RI9q0VkBjDSFPS@GoLA zAAr-|%c(8d2$pi~ofGe_LQ_xMQR3q++c| zB!T?+rs`s@siuO(kzAfjiijY1e`j?`(gc|l#lUz3?78wjLyEH$ZLLs0!fQ#rHC02U zjfxe{a-1Bkec=kR9N0aI5$U#a*~9=nc7Kdmi;K`V+}v<&|Jd4X#hu@B>}^=qnc5A-F8m-j`AHm zk>6rhY0xy4@u5o}xKWHEN>)mQS0%e$M@v{Un#|?T*wwZ9KoZEz0##jfW@Ps+{N9(k zPqyn8Ndu!@X)%L+>s&(-FsEK- zXMK!SL(p+PtG3?&N=xUnzb2n+6cJ@DZL42tM3SfzBx~^t9jWng zhN=xm5tXFNK+l3%@$ejC!$-J{HbULeCTK9~PeF{l(V!L&48R400D%|Sq^`Z(q@tVoGC|z?XlyG9dW*akz&D?=A2c#f?yt_cA_LJ zjk=>QkB|jp`dj%g!xWexpL@lDAXDykI}r%81L}+Ph)o!B#!VD?D`WEdx50uV7hsVS ztUgJ?+r2faxK*x@Nhe$*Kan*@m5FucgtC52sH9*YWa-*{01k-R9j*eFqsD`LGml{zYtF4Xj~+cKp9J)8}djiGR&wHYZ>}U zTW5=p?!~pxbBc-O=ZjJ^WG1P8+_uysgp82A`1vh+{?^ToZ{A?$-$=#cceM~N$)nsY zfhwUB@XsKIJ2wyx+-=TYzpj|y2zTwImUhFcH)9f-+Wm=UX_brHf@1|RPzB3!*c^9Q z(5RnrY+5I1_(+JPAEV7EJQs_(pJ`KFjwsQ~_BT3FT4qhGdlx1zhxzc{Aga1F3|xOP zTTHjw&c(_{UDV-LtfWDO*%G=Dl#Lm-iuL2DV9-l-Wd76|)f~p6bm&^`;s@^adh5kn zx_T<6MaER3U6LoXVc3H=w>2Dy(nj>Xwa*C(fv@FCI>ft*d8pqci~LP*R;E1q!t2LX z(Gjb(KpVn#M^^d~YRRN9uoC=aSSlyg?U2uV9_Jj~-oVsXn6q%i z(onv@sNg1M3uQI;qt%vGi1`6 zhMxo{sN|q<{yAw){?iZ5TX zvEGi>&cjCe=6^B-GUWYLgG5P0GnMkV;z(kcv`3yJ6YRmpi>ru1>? zvX$e31;Ml76L+pg4-0KvBl0<$cX2U!>A_b&z)A8jRD&1T^8eA^cgIux_kVLbauAM9 zA;;c|%I4TJS=r-cBxUct3#rJiNLJZ^)TcDXG^rdGQrsOX}^h) z^U~kW6B4%R(j<(nyFA2oA<2!=NJJ$9`(XY4&V}`ZENRWARG&LDW zKkl4;ucdz8DmPxBhnCWr*ZjyyMNJv*%r}g^WV!RRTEaX(pQ=IQCAq97!Q=tb7e0fT z1gk>at0vDGg`2?*+Eo~CXknJnvQdF~3)&%7Y^+b-KZlCv%SdV5v3KOTnzvdd?%PxS znCDPj$t%FE2xXOR6)PMxehkP|4kP=HU@7 zKRak%^?CNt?W-Iq#<87r2hoLJAb~HD&iSE8D=XTPKHiF>zXzq_6|cf=DbmAOD*U6T zNqW{TUZ{pE$##aCg@XK0^Jj%P4?SAlnOxB8Vu{Mm;K}ry38Hj~T&%ObV)So`@?HgqnhXhzO7n&mndm&R>=`B2^ z-?TP)e@@^!9D2_s^E+z}U+xR9C>c5^KiNzu+92|;{xde(8f_Ev-2>2wwo@Tzqa7d< zHL==PUlUZgC{1TyeMv9f>_Z{h;ykw5!QYXeW z@8XN3Tzj7$6_P4o@fzr)30AQaruAlk=xdtjlPMX}nF}fD3IS07QtQWl<#~$PT;O(_ z<&d|=jmO!qKh>Ub@b8rsiic&3FJ+&SE`?=l;NIh@=IvFm1egsf*&&YWjnJ4S$kPCf zhm30J`Ijd8$j7krt)$cqI-_FJS>@<{nj}rne8bvOy~_SJ7|R}XX$1EyXjl7a%{BdF z7#gU!9*7)fa0}2#wtbq;Pu37okW8T9xJ-8+I?(l5sY9JG zj!7f-A%;E*R?wjcGiIgDJXU1zL^l&?(OWznOlwOTBA<%#$_sEvWIsqjJh~9B&jLUd zEh$|d_Iof`-n$A7h1Ay)34H}ZJl!YFHM7+@VW3$z9Fb<^KyXt>U^CCew$vf9(=T`) z=(oSsOK_gb`1P%vQSNZst%PTR4n}~|Qhn3c@T>bf&9_XSLT)KuisCn#+|WR4w*4ED zzAXTC&Rk^{HNg}3FoFIe;QzKrY9AMB7vF`^CAds9oYhVj767zNy)?(a#`x9Va+|P; z@zZTFq-9OHI^xVti)6g3L0VKKio#mlbjdVfS0;s|Ij~%38>$l1JHkfLr%CGgd zGd#Q)$crJo%Wrgj+~??Cy}v1jyr0jvx32?wrrGQ*VW8?Gk2YYSWM7zl^SPze6N-(r zSYe>~?Q=jjJ4-V~%cET|69NdNrZ+v?8_Pl=vq<;(OXp-FUN3#*Cwf({GXykcMghx) zGQgeV1x+hl*qnH}$8hV9ltNGJc1!EEL&f9GRnubiov5evGk8o z2tL$FbVyM#JH+lEEzq5bZ zTt|vcS4t$bsgM`09RsC5iMiiUG}NYM(~>NpaTj=s1x~szy9I zxnc;ZDUnfseP3V7cNew}omsp4sjt-6eq;J7Ns*N?$~N#qsa4K zrN&K2ixTjATBU3U&AjG08aJ3Ph%3(;%%<^^ZIGKMP9TC7C+n(RLEqmc!-OxL2##T_ z{q07VcgdU`O+vDaQ;>-IE5?CN2?p}riV)TRH{9hi!rFoI~4iA%>Bsu<9+7S9iN3!-EZ`(t)BQ!dc!`tE(eZwRa{%@>I_O{1Ja zh^6kz_}~jSyU~V~n|AeC@j1GN>w!QS`%^l-&LAW=3Y-1@<0b1^AdI%DoZ1%=BD-~P zbm_<}SZl(;xF4X)1!h`7Gxkxk6_icGI*xn>Xm}b3ks0vnW=`vbdwx;z`V(bxzw>!5 z53ex`r=yC9t?YaVp!mCx9kGBDz=f#pZLJ^-&fexX$Q*UmF@%MffdxtKSpDJu=}{v{~#Ipv>E{tdRrh&gY`No2T)-d~#9Sm=!8c%n>rFXVx2polPZX$|1-z2_5ngaT#^!JP_fS-u8js-YE0)PcI z5m2BsG~+vqDuLY96+WF4WYrdp@U8vLe0l*xRY=zH0ZqV5k~zbF9jZ>LS}g#7ux?1o zn(%Q?&8pXXtea9W1OSw@Xet>^sT*>@wGK76fyQiIE}bdd^2{5rbuK1oN2N5c$SegQ z8}g?wt72H&2M~oCF1M6Sd3VR<1?ZF~L418Tp!QKtm<2+wmWJwE0caR0Ur+t8@~R0J z4v2CuP-p4~DY%qi&V@&U*$#m zaJauH<$fz!wCtB!K>9?~tKao3tm(Lo6MHDE>7&ML*k0&`(7ijYFmM37dG)cR#3MZa zBi%c8ar4k^Kp5cwr1Bfs@zLJ!oq^h2D(I@-x!Vrk$xRhD7jN%2Ybyb4TraKeO*`mQ z@v8myWsNL^|2XR$9XkkZU_)O%fnn#J(=lWRi*k-X7HA)-FY=-d(ZkAcgYKUw|C83n zwV8!(6@xgSCl>+`r6jxd3bflY*5EURXfM=<%RR5M1B1WL<=t@7L>sOBCvACXn%-S= zBlxu2NEk)>5>(;N-4EXn>}7SJYhWuQe$VOTW=@U+?_o;Ek64D6b$*%ia>e>4U zF>CH7oZxT|Twt0?7$6H=;>6HWjjgrOGhn3#TB-eI`A#yf-bH#``vDNq`yDYUD+iQG z%eMN@M)eQqf^&8WoHJusHlC3cN@W?4z32^s{Y3gYlzV%m-GDn?i}VgJO6%1E=$iBc zH0?s0_bwwSH*&cZcXG=yr#~3Jh+v|sN}@Qi*63v2C`C9h^gl#EQ}_C&GA4x^NyK?h z*nmcJ^26-cR=)13G*&^L&uHRW6;jH>H@|=4Wt75zSw=51Zr|96zCg_B%E^R+62v%V zPUTV#5qhOH&kuERYluEYJqqAxK)5YT=m0bZI0s|zxhb?-{?HBjP2RB(PaZ2a=^=}h zT9WuEjmYS(27Jhk#zIrZ2X47TQi{xs)315g@Ep$En~P`Gjj8Q!bg2xr^MM=G*yV8f z+ODC{u$D(5%k2Zp1!$N{M%|3WMn{?VIKe|(oxvRv<(kaJR>VvLhZITrZKU2&OezN;G=1UBc2q%0W&rY7veLh z7O>qm2v*buA-u%u4Ukgt99{sa7NiM-BlKu{crln6>YB_Z-A|ckei527J3h{!;6fM0 zzp+$C!maNjl!Z4~6ITB)96M6G^{W%Rph&_69%LGlX%CyFaW(j@PGc>_=64^{qn0xT zDtL(7Fpwo}1bB6ZyQAP3-7S3P!r>WsLi}F6O*SRCbhS$7Rw<9chbPsXa4CQ@3K;%^ zxK)6iv)>}_4WI|QPlj=s+3TizS6sd;Qj`bhGYf^F9x;-J?gN%gmv;y1BF4}ef~DlV zF)eG!yk__b&wvxdIpsFa2rA-?{>YifNU%XLMM+xqEmC|cd?;4k0pu=9KLXiOD6}XR z58iOe?WlRK$Ze)Z6Gw*vC}QF_pJ(Vv;81;iSNq5cIvV8OgI;j2M6`kqK~0NYFK9Fz zCf>vq{#rX~4@&+rvORywndu-qe$ag>Q2>p!qCmv;kcPzu27ja@=rMp=QXf>eta% zr6`q%Z>0#2`?OR7y#Vc7sXBXjVNFpK>)i(DH|p$Rn-`n`1oFG7p-JYaimPqfC0qp0X2cS#GzVZ!hq6H(Y3T+XU7}gA%2AFyvQklfXpCtA%MG%SqSSk3=H4aye`!1VlbdV`rafop5-T^z1A&;hanVmO~6~ zH8K_#z_&zIT3c#>RS8N81N?`;j3tPEfO!RW!IG*T ziUehe=YToB8r=vtApgPjGg1Yd}Q?B#RVogCL324V96T$Q!HDaBMN4Gm{d4+KdOF??K$4Dwq`2 z3_THebQ2NsX#Ds3D@*X`k2J#&T(QjT03PBwtl&Luk5K>=F1@`H{YfJNeL7W;Mbgb` zleClz(Y<)ZRTc2VE@kujlX`IDj0Qn4^;KeX6|o?h=#ku{eQPZbO(x!+C$J@Fp1#g? zyn$T*9MRupOr{X2E-;7?&9c~+NcK=fN(@S=0JWDF&2Fy7WgmSvHw^&Pg@UCs`mQRvZ3fg{Tw zdG~?QAT_b@8N`v$KWK)v1cg8wEmXw~)?e$^mB~;GYM?H{)X8DqL&vN^qi8Gyb52{%O%X|J6kc z*Rks|*)oc?z1)rg&rJ2+{U^kknQ;L{GaD=)qY$f zRZO&2(MBkE)o85GW^YxHiaV1s!TyJJlg9<{`b@kMAPV*sc9S<0Er!sxciS7V+I<&; z4m#U+B8Ey@4y5*lbRH(5YMv)UEzH8i%;~_%7eRr+O<|Sx(u5#Xbs3Wc{dxCx-841h=3Zo+BWDogUc4F)h_@sV zJ<+^$sVM*V`q_kdu^b$FC(rSf6Iu7+(@$`P*eJGPe#IBu=p8cVh&RxCvB=%mgcz{B zz1!DU_wILcqDdc|WY4sNg8z2IHXQk{$5XSz5ZSKntDcKaoa?&zLC4OJqHJi)fP+<( zF$KMc2ZeMRe6nK*I?{(EnQ>AcV{Uiiv89dV1-6$Lf>VUq}Cn-u7wf;O$hojhzzl3)^=6nF1*{j=i&OaJ9%^>bHH6bmQ*st&Wo2cafpu zUIa0)$H}|uVO-&hTTad+b&dr6Rq=#373kHePDP$gMu?Y5ZP!hqQ~MhSO^hBL-Er+` zyo*a&(ZZml`^U0_JD=uMmal$zpmZpd0d~vrbRc%g21<|Iia3W_9J~dqqzT;sLS+)E z4}|d;zb}%J*l(|TNvd6xJqX{0=wIMYs`NhdUY60ic7tX9b>6!bmZ&L9DIF8{2_d9A zdFFVY&zElu65lFtQsdEq4j(2cc%-)!*Mc%Mi+`)yJ2Sj9*!TYV&?oV-$hlLOMTZ&! zrFqbmHv1Ki978M z^{K+^ngoK;%b6H#2$TX-r=hYqr48__b&;XPSVmiF<*G`%ko|G=2u00EZPeoOte!kz zPao)*nl_9wR0AeLNBQwk=dW3O7X@mOsbsO@79uinp*g+sHr7SjnQ)jJP1^hJY%MnG z(3`UiQRB-}9BK)QWqi7!!E0ib=;M2RPHUeFq_@4jKeF>3$OT$myKy&Y9Q&auP>9V7 zdLC#L8?Pw|*wmy_y<2SZ+-n(eeWkfgos%SPTUoI@_hPn>dpw$Yafth1L2(T~=28># zq;Grihb>*>vxQjdXBm9A`nN}4IBdTCy5^Aod3fVakQb;_6kB%Qj!}GPRx(;9l(Xxa z(e}$lMZkPJ{2;GA(wFM6JPJUmrKb^km z?GZ62;|QPkuOY(O>-AZetC9gZfP$Pz;~~w9&r|!IU*y`LLm1ySdq477{b;?hGP(4# zIqQ2Z5$4Ow?&w<#{5uOmf3?4jU6YguyLf$iEv+m(%l*omb(eR3j?(%r{j4uF<#z9gEiiJB=+ELwIOVoc zmKr!`!1BH_w(V_kE4%I0roEhR>DICh&q@k)3ceoCNjX}-q*E!n%f-Wzvtfn zbD}L-+B?0g>*3v}b=a)T%%Ufi+oceu3y3uvy3f?jaG))7pD`DcjIcjmq^!9duKy^e z57?VVisw23s6KK33beuPP}R`TQB_6XRPS0xojiGRd+1x$1^5<;S5ICebI4OaiB7fRhW+G1)B7`nI zkS}pH5-=_(qIw0sO~y0E^#b2k{=ogGg95mKudUuZ7v^_rEvdYR*2(vqx$U~@I0`mRpSK9_s&Nl@l$cC@kzf7jqy{!u|`@_AWQMbOEy z0fBtSugT5Hd~=Q4fpfyt4rz+U|1JbxfAf(Cfb|(t3pLXG5y!F~Obv z{pvR9rbOttU>>&pL*whPgu1OW)fi0~HU!epsT0|W?D8eil`Zql5Slg^VxwH=*LSBu zVIu8m0@DjnwRAZUeZ*vGO>EQTksEevYi$2rC##OD1S1QJ0Q9`qTcyv6jo?C$BruM4 z`a`R+&v8L#MUt^Dmz`FOnBXwoq_BGzGtDt0Q9qB0r0TxB!{AHt8ElYYlsm}Th}e#| zBPQs^`&znUp|Zs(I;6!n0$ZAY)#z@!hvHawsxqs#`(0KJxWpR2WsCOXf}|)n2K~;u zZO~hB09J#WwHwS?skD}u-fF+U-KCU!3KqI#t7Q&F$5!-PxfpvgyY?t zO&u@K?%`*z=C9tE9L{%T6B8b-y;3KRo@(;s;@MnzSF3^Cu-P)7Lt-)A_xDOjT|X^0 zT=G>rZ_R@6-;w_Gg!-a|@KKQ*gj-~}L;T3mYu#@LwoX5k<>oMrx+vEk->~XpHE~{(DNtJhKz=v+2TOo`@r^lyurSY%D@s^+(**lzbXpg>tqND zEE>Lp9LaNN`!NrMLm3|seK<2|U)pF@y08h!%R4J4rD%xhNJg@?7l*FBzn}OdoLIT) z;F=OkB$k!lPve|6#?NPmUm>k)Qn{*SJAXqqTQR&tRaLbhE4Sie@$u`U47T-&U&<%4 zK^yI4UlVN<+Z#bsrWR1-M5=#9ou$WnN6&~*9zCTweitc2AUcjb3JNyvt7G+7OxY^- zjdipP5sP_ZO`bKeo|5b2F-^>4Xl_~W&U4B7g7&{Gj zKzvYbd61ju&(AOOP%Gt@*`uyQjZu{?%kSbzac|?Tz1?3f-mzq`867pLxAg;R;QIb! z1X&EZeC3gBWZ%B}v;l%HUcej;WiW4d(OF)&mzr8|pt$}*aNVgEYHaCth*n9E)tiQ( z8lT%oK1&nVlVom7JaUWw{M|MJ`>peWzB&h*^y=j66d3!Y!u4}J-(O%6y`LA5n^tvw z1gDP?k;p6x4IQPPzpTTx{=@?kDr~Nr$jn+<@4{V`A5L8Oc=^+l*mcV*;Qa|f9*JQ+ zuLLZ*4wT~xK^A`7^C~beb)X&1dV{?m+oBuRH_d!`>1AZZG4u!*0`;d~AM>HQg2r@@ zNgWQMSN7=YXH&%C-u@7AAnwFAF+`1;h=P30_)c7j%3fD_gRwzy79u@;`eF=Wye|1F z8js)miErmPw`biha`zDNBZ?y1jS`_Qq}uf+!%lZEhG1{;$r2Ysm}=Xst5T!2MVXQn zVM8vh>+f0q05PnohBNCb?w~vP%l+k~7dC2gSZj=ipV*gF6Qn>@uaZ)svxFb)voX=q z=B?K7n^iqX$*?nq>m~pF?G3w;pAwLxJGVm?LQ70d)+Q5nYzN)iHYJF*-SX-9Hq~i6 zn4>5Lipax4ChleD8&% zqW{N-z>|o2A_KeHH~mIT#B09-ZrjlccoQcZ^#xU?6;O+hGg>Gu+P~lY=YwG^6Dpnx zC!?fHgWbepNaM&ceJ`SAq8PBq+slirW8`4!*Bwrw zZ!mD6k4+pU*NG*&TDhHtwoIM*`b?P$sX4S`mYY|2y&r=1sAkF>S@}Vck^eN){_RJvSf^BwhGa)>t zVJzh}_Jm0U*2U!tzc3prX4>b0Cpn6po>?xSs^~Wfq68XU>eR2tm?z7hK7cgg{Aml2H!=7($dlzhL-7je%@5U z@TH9=aY0ls8I1G_8Oat7kJ&hsXhicpGvd9(CV<#)gKZ0PnHL@}MnU;E1EQxdLfxzz z7;MzCr=v0Y1|7`lI4${_3Y=6@_D7u4O2qZ1-ywyBXe6*($?NzfN4#G`wMq z##oBBzj1jCL8Cswjz+T+CUnm)%lSS`aNB)-8Wb-DXn)&6V&*wTjjkJQy>ldJ!FtY5Sz?Zy zn{yD*e-OdV%c~9Xxc#D^U2Y74&+q148qI(20y|jKf6aL>xg02W(6Y0Of*q4+P$&P{ z&}He~&I1zeshgVt?kZ@)ddxHthXe_V7sh|~3+l8P4=lEJvM2WYtu7#PbIZtBK$UzU zTdmemgA6(X>p>+VH{ATmg@11##Pljxoh*NVrGTktNGf}6ADap97&9ki1KYGWe|uEId4hjRO4YY6LYF?Orv1{bSYfKi7fBN?d<_82;Q548j=oU>v4EX&OkGDNRjM zK-Gb9|&G)bpk>k5VC4^hKb*-QgD>TL5-E9f_~#79s?hp7<& zL5sMrkZhpTQ^La4N1QD{gSiGLg?VuxKH@aI`xRCelE@JhTuLKDhij=Nr*7iOx%v2X z;%Rw)nOH;CoqTR&VBMBj`GhSAT8mRPVVVGY&o5F zC=!o30=>5MvZQcu(NpyJ40tjj-=+9Jd{>nKsw_cMh{zu^*xDxZY1@PC3@FkY-eQ&J z{BZ4fn;uJyV!<G}2X z>HywZk~^}$gsch<6QBxvvtxMj!9im1ag2ZZOw%zhoejK=o`t96Ybzo zz$)vf3v@W*Mv)f(-*K8+)u~4Xmar%B5sA(_M?zcKyAQ5U9NR>K!*uD zs6YW(K}E6FyhtDCfvr-V1_ID+*qJZD*A!t%RN7^NOosb23`R;BW-acF0XNDY?zx{& z@f;pV9F90%291?o9MhE%Eql$OI~zed1(3nqlx1D8J47p%7H+GJ(Y{Z#!}; zq8ygbGLVHeQWgzXK7Zu7kh(I};BEy$}+qkmhGfEdRjrf(I>|f6h2QVhUcl zlZ=HZ@&QbFwE9pFI}1lg(nU`;0)5?rjmePzPNF<1Y3pJ z0cn9loY)h@;0YGp!N90Nrj%@J_V@umB*Fz{Fds}g1O&7=IXUNmn>2ss%g$wz)k87U z)9)lCP{goCq^bA%u~l$LTm<-{anmUgEqSJZrIQZ${vhniDNLjPq>(BNUPnz>(8;i&HdaX$xupCl(G5mBLj(?diQYtI zpBz&S#Qb$#VcNi&eE&QUhrdkhn{Xu{py}801QRQI1sed|7B$!SUr5JHNReR0|6}lo zOW|OcXo*vyB4Nvse#~N_(G>9jr7WbSAyC!~9zT9eq|Bj)50!*M4JTCUh9@{ZGsVE- zb!r&LMex8&=rFUOBOkz`ML!-az+H-7Giy1{mREuMc0x!{}V^8G};VyN*!VA=2Pq!PVXidV9O871ph)dxkMj z{<@nq8)1SceX`>4uVBk4xf7Fcc*Op>*P$4-2EYQX`*MNUwWKa6YZQR<2U4|IsODzJ znylO}q>Y+bLCQmp15rtDe-50}zC)$H ztF&a@E6XB6D${2WyN^L1jBRd*Bafk$jQ zl4Ht{E@)gdUH-JyryigeqruAV@9VVO6P|vef|-@wekO=*0taogLp6km*dE@Zx8d4j zY?I0~WY8IXm&(Y`!u_uCtQ%EoS~=F(2>q*Vj-I+SJ)Nc>bQz{=itK;CCcUb=;0QYQ zC-cb2F$kNzdMf0*It;3^eBg@18RY=4+HX}^zC~QQO5@m2O*=uF?R9Uhiz%Ee z>(}axpOhjY|FeWGb1M}A=a-Zut8or+#V-J$%ZHpx(#2e|eOp?PaYMY7{0E&RPTzKaVs zO5&-zjxC1pq~{Ga{E1|cmrzr`#VT<5MRrxyiNx}c-{z^nzl)thJW??1?tazAPVuls zXw?rZb%nqRZpr5e|PLWfjbQ}EKhDoP+c`WP~b~gnbe=w;P+sy!_OTnWIsSWZ(>HL0eU|{v=#< zn6n8;aM6%QbY)3<7eLDMz15a?fDz2r%Z}R1)Z|6jfk+})Jh1=Qyb~UIp|MSm@KYV3 z>l<1ipOg-%7cR$qJjfLCoIGh@X$l42-aE|iec)HWvgIkDv3MflKmVCh6fs?d+VUS# zF@oSJ9Y1>G>GEW&sbaV_Bt#85^#>r)a^g8bFB>Lq9D9pe9BgEl#b#EZxc*v0RBT^Lwf(vOt z#L4Sh3xHRL!g$qzrV-a4`vVDgQZeW;-7)26V1bo6lSfGp)BNujkAV0=*6&+VSerGC9TCyt2rX45!XEL{jg zgk!+a4i68lE1VpGvtW@AyLD+>cc>Y}dxJ}B+WUCHHOCLJv ztG@t+jB7r6y+&XdeIpRjE9_KO1~xzl&2vNB^~F;7z(_QK0tBR8L*;{!k-$ z(nymEP|mo%WDIvKFGRG-08K+$Z~J~(cz0>MUitwA1hk0b^Pi1}##Wh31K?OZblZoG z9_}b1B+u~dndTKfvd5PIWb!JQ_h4Qu{5Irx*w$X83ed%9XAZl9-DvbpUH^MF157v| z=}FoLy(_ffv1D;qZb{mqmG8ZZ7FC+KNF1rElAG4xB zR%BUtKFK)J&{_Zz{LPSueFol}2#dJGcW2>N#WrXLXWr%4sO~KX8U_?_E3n=3mj<3m_>d2*lr28#)GL6D@aD~*%jlj+0~bWClJaFk#BNl zCO?AjMpBSqL4W=1SXA`pAb=O~*6l*C#=j3KGU3=rkiYygU5qLs&x4?QT6!eRbmz)jDNj35it{)RcDwrsS$(zD1$wN+2}+jAaF!ri>4`GCD(%5I}bOvDzHd+ zzz@g}Hm~_o+J}JIfzVG4W!clsAzL+Bis3eptP(od|J^wcTC&L~67nw#LFcQ&0M=6o zv9^py=}9Rp<{@}WncD+5|2|$3kthV=OjRTJs>BKM-w5L-p8TcYW(iSQR26xT;7CbC zSyT=A03;(vh%NTQSuvUXa7e3#Mq>Vc3i647Bpw(|4y*k=fyk#52HKc?m1KivRVx$6Z-{r`Fh9b7iNepm1QRxweIIY-W7Gi)Np=FAK;hvYmn$IaMglIh@3QHoT`sYIx*N=1Ifk5m&t2E`{v2-K&)>i6cDveauh(l!iQol+h=_pyy*I$YC)0HgUV|4X%gfOYaAPWE55lZHqJk z|CnKnFcu~O|6CtRqsIR`keLw@44~_WLTRDxz&kg3d@>ija2_C$UrN>agiz78WCP8>hL}Dn%h@Jp0M`4YSMkw$R zJ}NOG4qW7bLL$LOrdSJeBa|r`eDmK+5ngTb_k6rVBSRDE|KsO`tE47{(*9XtWHLUC z>F;Zo#p6q8QyilBPn@s12C+GPhb`k&F`L%|aM9-0J9xC5+9I0%Nq4GTA8 znL3b6QSosxk@2=p_HO2aeF@EKja?4AsMdtYu_xUo-d_{N<>*gxMSA0-%zfP*o&C@#I-X^hfX6W0O#M(N%65B zcsA21%)t+gfpzDYAme?A(MjgXDaoNu6cY;9-N}p>=?QMJN4eVhp~79k+o))kPXaf< zDUm50i|geQOTtGdhhfc~9H~fqA8w?VcQnD1NQ*508yD#s=8v|=69RnA=+5*oFeQq!Z9qKB6$?M`}lyG{S1=A@$%E{E10=|jnIv@cWIfN6q zTq>Iw?ud@$A!F?V92}DYSi1OG#HN@!+c_}_7+Qjh6VV=w%ky%LMG=VvhM66K;pWJ; zGml9Li;OchW7<1|uQ41adL+xsI|0RXvvc)`a-y&UsBBl?Fp59Y4CU-&5s>0w@9WBr zqq&8VePgLiR0N6|>5W8LI43yM0zBg!7%>$0WKsktCDGL{itWN8pgH#LK3IZqzuBl{ zcXJkaLr6|STeyZryQPG=u~|OJ{>i|-6T`hw0IVELm?qJvfM_SOE0&OAf_3(E4`nB( zFrA&8UE@3t=|i5gnS~;2TQD+nR+Y$5Tz{q$CW=E6q|^_ z1b|p-7wT>w8Ja?}V8A|i8 zrzA$uqs*y7bG!O^+eVo3NNhX?fU`q#GMeX0bqeqzkz7+8&Dk-gW;}E}BLMH`Zw}1H z!V)O<3=9U(5iTRq41;Ax(M_T;e@}-TmqZHi2=GbvPPDbPC3)F`Pq9Q(hC6{maWZjY zTM#3|h@QT#Zj9(qHt;h$b1(rrrn&HU$qC3f6dUCe5SEhS$#Ue8BdEzVv&hI8dlJe6 zgY^tRT12~;nxi94gjW+#(Md@@BvMR-UjUm;VMV$*B$*2lAkNG$D#e!@U}8aGI@wbr z6O)n2bRm|9`Nc+ga`5qJbWCCb21WLCaijU$qRo8Gk}SNDk>J*N7Me=Ia;Oo`k*uUd zR||`zM6O?wtpzFGRyadDtP6$h6`CB$WAV(H;BO4ZoklYa4~X`l2gKU3!!a~}ygAm{ z0UKo=k57rUMVqteUS$8cFfR+Ict1{JtO=838Uc{V!P_<KFN!c?C2hu2yS#s46|bqX-QarBok$haU%1QkZ4!a0D$QZ z_O?Xf3nyGiKG8ya`44OTo5F&>|4k9l_Bq|>av>0Ph%>>K%nkZ+UNlMe$;ZdReV>}K zG6pjA{9)0<@>Mbh_D7cWNM3;lWU3nE4$E`0F8VPzF&V>hR@(+rss{S|52l_pFu0jo zx{KB&(LV9qvJ3s={6L<)IQUOfnFJBzR^slle>UA!!{DL1A$71BcSFH*mDwP9I-zE6~lyTBs=J z$!5b9aBujqeggp#8Q+KfC2c1L*7D`5U~P5Y28Q@zbk8I5sl=BoNwvc>-4`5h&rFRx zxp>Z_#A=&$sdZYkW$CU|hrNj-{`5Zm+&!yg#fN>m6k_~#1076Bp*KD7Bj)ZREk4^o zg4OA0(b#>}boi&zd|$6`XLh8CvThYjO3Y0+6#7DqI$vzNdS-+V?t(e;<2l{F4Cmy}c_Eu!~JsmkYux^A8`z?l4 zMjGmm0~d6**lM`d@J8f|Xv>?_XAXNKyGqU{jy~O%nf5gW0-q%-rT9~z0zUPM{e!(Y z@J8~q+ji~uCA(5jb)L7>>6{twdUZ%#zO7y2ufWDc&(3oekGlGhBaao+r@1_363$(e zo3{?HQ~K^&aFuJ3(R)02r;oOItOfXwrG8s>9Ud6 zku*!3haehi6|QE%HpxH`WdZ+=TE+SP_R0k?*vqSX?zQ#)xIum9b;g9+)(+u|h%M}g zA>bJq8TFiBK_70?j-9R#yuUZ4#_zhun>znjS{orEM(qcWl;K9fzLM}|{1o6tr&}$9 zydqehir5LS~n4r5PCT=}&`WE5Uz-Kz9T-kP!3WaBX~ZWw&o#^Dz-I z9CTc4vhR$n0p(?d{gF1pVnWLb<(yUU<5jRkIa{bK7^qrZ;{+cD*8?VWTF|}G%$?H6 z-HLWFjkwGH>9Xf;(&q2Kfs2s@X`)>Es~l;ao`tEA%i&M*UN@(5{(QM`j9|xy&d;@} zkOoCWAtKc>Bta8c?&wVX)bJx16j-MMde(ed#{1x-cTCh>2GQ zZY_xn@iN|gI|AIa9ldS{2NkZaVcV%qMOOoE9X^XmFnYYJ$Y@VMmU6zR%;YZ7+X(|i za9b5XWD)q@u6+f5;^21!st=o%^R2-kv)%9C1Rj<*CZ;X@mX%gz;-I=^=V6F`O~<@- zh$tPD*KaLw{ryq%j%YLRCecE1M}VoAxcEr}U4n?HVGU$0z4aXQ$k`)dUuz*DxZvh| zB^i=8I4WnOd8Kj~;@hixzE3ND?H|vUDdQ*T3)Z@#-(8hZm~>zAjJ^f-qxy<&&jHvU zV9%ExF}{gm3Qnhy+dd;2G~}*kz*O}GN`+I_Di0n!;6o+N+Tuv+!gE62pc@h-oJ`6S zWSODP;Wr0Ir{Udx_>9u@)iaSV&e}_ByOmvXFNVSELJeF(>%lD-RB)>#0Snwz5>xf) ze8)NH4|Lg~yH2lsWg9rZN_uHHC|@moIX`i%!~QgSu+|JVM%e>a@$H0$t!`N{7~#`J zw%&zo>Fnzw*IjQ6Y3NR7z&uK=wSrLD^FIgI9ABI@leUzaA@+Ab6>yI-VESN1Bxk4X zBBBTq1R28rk{|Ik)~uY?RnmPo`FqsA{;VI^@R!0&;J^Mns=uxx1NatWd4c(%DdpyA z7VAeZ>Ut3_SJABP;4%P#bSc>of%=8xSLVR3`*nF2Jmr8lPseW6x*jo6_|bd)0Q=_$ z`}DOHOyQ2*rvPSZb^=fC@Dc8nsn_7-P^*lTlzQi`)Ze7XN4H+yyEsk09%f%e8HFLD zA`mC$b_w@-+`=VRnJBoK-hQa$zh|A-_=>iAa@}GnKbnLti zQtJ9T5Lq|pYO9(&7zc;t%V_&a*oNuxF5^xxweBZs>24OR&jqd!!pMwR;N7I0&XQfO zw9a$ofNLB%X*Gx}|v|05c(;nx?j#Is znUCCakL|uU=>Fa_3J|X7j#UfJMBni9lRA=PFN%H7A+9#9Wqw#6f{U}yFX;lXI_dx2 zlOe7PQ8@mLa3w_GuNU0R(^3o(#-yqqr;$v>()N=&RfhgINS~jdd2~k4TbnuE8*BZl z(p9I3pZ%C2IsxL|=j)S;Aa3T&e11_p+{7G#@8Zom2`(j?B!Td>=N#e!fQnaF5JHy( zDvmGkuH-CFYXbw}ukL9MRj=t`;q#OjE*J7_5nIja(4xw zx4HDPch&9lm%S=AteL01GnVFmNtZSSwIr?rfKQsA*fZ<_hgcW>Ilc`KhaOqJ4B4J; z;x}Do2-Yg6BbD`42+jR=GJ-52q*Cw4BBcsQ*O)8OP4uIXwM2l0iZY64I`ePMqLnFpU$a(EVVs*HT_|!tJFrP z#5XM6df&2N)AjK#Ar~uMJn3;i&(?_AQ84^Uby{XJd|~9|gO_gBQ21mpT&(&cz#gq_ z`3M=LFib-$98Xlf4-u%$0os!g6OtJ2ZP5s=Ip-o$sC1>HJ=f2=F~6N5&^e~&+qrJz z7O7G|^6s3sdQGqxd7SIou~mntJbZH8u2;x0HLNWpm(UJJ720UCU%Fe*S8QHfqY)$? zK78n8(fIr~4M6l%doF8f2GFcFonuvZYzCTA@O$s?Tlv7AerYrY99c_m{D{19wnvFt z#ks!8@sl%QWy2?jTr6ZK!=${4aP$~ikozp*5uj1_zMk56aH177EKLr>b{0 zxo(2s8f?Mv3LjtT>Ge@;S;nlMv1u%?+xr1i0qCY5D}49jXlY?)!*sg@t@6QD(|$m! zUbFC}>7PBUg_L^5+qx0@VvT~cgNm<443ey6r97==ojl79+5F7NOpkmSx&Z!G2*VAR z%96YWbFMv_DhCJWwU}<%3GiBYaMomNkV?eMGTX54b5Ha9Z${=&-z&$t&3;U1$+?sK z>2C6jiDF;8oDelEM1dbl`c^R4iCpc=ia9ED(5Cg-0u5oDL!KC5Of>|m-rV}W`?9xA zbbnK0Z?)DiRN;85>#hqB#FxwL*C|kV#oGv9l6a^~98 z7sup<5xZ?6xbq%hZxwek?)6(}_p4{#yPVRFogl6)j+b5rystj;g(8YlD7iZSXYTu> zw7fbJ= zem>n;d;ZxY*H0F&PCgl!&cwE?{;7RhbZ@m~X~Ocl^dGsDBZ=dM!YQ#l`RP>(!~0kK8HA&AEi9=2^=Unf6w=RbfHQI{8{Dw?b) zYydNDlj!7cUkDbT}$SdWd^C#{lODMo|8$!1TvwLQ_|`fcv**=49?V z07-b+HWqw0=`vR3Yx`Kthk88;RV%+AN87(gvCb;rb9**!Pr*Y)zAdl$7|06v0WKOU zx>C1b{ETX|hq5Grkf|88%Z%AKMPgcVKIf(_cIW9upLY|AGpyG%%ZaR_%n$J zt>B4nzXry(Tl7~B5I2Cqj|Q+d{X?cTCD4hn!4gF05v7^F23jxURM3@xTZC&HV=9%c z%8!57_!aQg=}9&miRk_QWT)}&+lGAsUz#4a&whPHAMZTBX>L?iQFMR7?9$wKo#l}d z8MHEpSb;DQ)z?>CzYR`b%+isbuhjtHc3n^DTLVd{eJdBx?AI;n>DTQoTjGAbsV#b% zt@O3;<#^?9hdgCxtNJIK5tC>8&s%cj(!Ki=S>f;Q)5?I2!{Qj$4f7elhBmfYy*}gt zKe1m_{P3NnKC~d=M`IB`)p+093TOBIj+REF`uI;D%+*52ItpQ43h<61V~<+Ol`S#Z zGabsZ`s6YRCG+e(#Kv>V;*#w{J~$AVc65vxHh+6ld*sd(LaE~c{uH-&)3v8VPL2}~ z21_KYYbaM-ZpFOYRHfFs{`>RRD+LF(9eVdVa*}ybC-vc9NY-b!kGuBTNS>()Zn@8s z#kUqfL=+Eyx9tJEkI=esvxQOKn;d_B~7} zOWClgOMcJ+D+0rmXdZyZXR|JxeKI=3Pz>6iH*jfY_Y7P@kp%J)>kWZt(1P$^jTv1t zGF*SF3E9EN7|FsR_zkqe;5JvQz?`gij05LpM#>3+mjGQ8D;t`cMaWwH;%7N9Rjryb z2YO~|l*1n%Ef;2IC2-nT=3S8G%I#7sH1L(XR}RcLA7)JeTnMkCWEL%RwW$vsa!qZm zI7{t%XP;*4jKRVc8xff&Uz|K98V5t|>eer{As_70+#3uy$eYUwid8U$mwq9blj{); zdJ0Baupkf#Che^H#6*7xIkUIgLT*D#ON+vZ*6%JeRuI(>t-0KIQ`Ut7$^NPQ^sd%q zjRVjU#IxKO)x=gjjW_#cThH*FKGx^wn?3?Z3c>cu+oX zGY5_+J@`N}8kk_@{FC{c@m51czD_md%O@7@pjCc~D{Y1^Bv=J!Wce}g2gYX}0C<@* z0C4VE2Wwr!lgtNSK?IR)R*kgyugF0Nj{`gW_P2cHD^GxRd13cX%VL5S<19q@CF@(< zX@k1{H!en%v3@y#=xn8GbB)a_i4H9&DS7<8GmQ`ByzW^I5b%F1YOdEU17^eR;s1w> z%brBlOm#FXHdRQrXpPI}11Ux0^Nz_A#U;woRpZWxy~jLxJjH94^H6x7r|VJ-ROCa< zQROm72qYOIR$T{9Ak{WsS?1-x(>e~gxM)6OqYTLzI*X{@zWqdoFlGWV?4RUhy)X{` zKdaF+&@Hp+=ShM+U}Y2fkq^I5k={Hp74WThYRc=D9RdUHAkSI3?@dU#sxom9HUaoI!xtqT zbS$gJ`Vtgmwp$x<&>et7M3vW!(}z=^v3@diWEj4{sqP&@JDPvMlG{12*sTd4BNSNO{dMIv<*rdbc|GS{U3)cF&0=h{y?ra;gHiI{NZNI$h-d^aZQtn~b4{Lb~+rWjVfK zyLsFPLV0;P`GSMQ?k*hAz^Z{TT>$bQu)r-UHv7)qj{l^O8v?Ro0nj4@ZbWPZ$w*Gv znG z)9ua>@T=Ybw_kZoAU181%bhC5Bpik}-E7@=n$%X3u~Az4<^8m!wiT?{QkfepPB z02Xfl+1GfoqtL+dh}@2fa(q_L88j_>I)NtZ-MCEwqT|P6G|y77QSFrpP$BBu~ZC;nzS*)j11RPrjz( z!xvk#H;4cUqY`B0*{M%*l^mCUfr}l)M3$RVK*-n~D!tta2T0A$M`hQ*UEU%rC1c ztq+Bv^r14y>%d@*&yRddb-fyOWwQk4PYPF3QgrzGGN>+WPWW0_xSuSHVJ&+J!wN!z(^Z|Fc%8NN3Sl1UgGE1@b^uq&1Qp@Dhf^zps3Up!+r zL|1qL#X90tRXJ~oG?rui_XI#Pe*J-6Taakwz3x}NFOt-F@aLm)VTWKt;E+7^(QI1j zKT&J?Ip_1>g9Bl7Pt~QanGFk;&HGmV2qi_AQ-=On1qE~@LPF6rTbp=JS9_i1_pN^S z_ga7n9T|Rd%;Q${n~H(-we!RhE4`31An=AgM0!~5o1ZxE*RJcBr~G;IbB%l$+%PO6 z;?c`LrgNH9*~~U?h^n+rK14; zLh4rUj>eDTef%SzcL$2Ds z%Tr^!s3;knlCrY})7qo8l0FHi+{RSb2T@*}7eNl@1vJQsJq3OXg6!V8R97Q;soZNq zss^o^A|=P(_#m9l-a#Ab!%_ZV*hK#$zjib(<4oUDa4ZGCX5OvdCJp<;GUi$-T*pU; zWgltFfHR&{!w3mc2l-aek1(BQsH88X>m^1B)kEKy3zMPIeGS+B4q%3doOxG2*9K-~ z)!aM0lG=Pz%R6O5j|~8#2W_80(&7zteLdGxh6SK-(`E8#4=8adRDk0p_5OV1;s2V0 zyuzT$*bk-IrkOx+gsMF+ID~16(XxC(2Is!N3p1FAeSZTAH=JH;?>=!EWJl|#tk#u$ zdG2~?nxqLAS@Ia8p?92#-u#S&(3QF@JUjXu{=+tq>)=;|nq7QqDYBLyri#~q0KVBK zTUa|&K3-Z{+B?;$3b(`KAMN(-zk2pqQ_9TY^WRSBco2oD*}Y+=$dA>PrPt;7_4$uM ziRE(2%;yT`}CHLbq z9n7~y-o%^g-FJ-Q-rqO`3Qvy8Bgbr3ovbLkD0P0O+{uvZE4S0Sa1meWK5r&TZ(QC_ ze*GXR&HFQZxtfEC?^_r=nf@d>>w!9udGlT@Tb?=P_Qr7+ASeI2`)1aY`BQ=W)D>e4 z%ES?`YkfWH-(^}+sLH6SNnV2yWngL=!lzyd@66Z*ba4MWrcn74go z-iiB2iT(J3|L|jck)F3h?9CTU6oJu7+Nv$%&kOJ|vm)Q}dTW6o6lzMM6XD{^sc@Jm zLchZ1 zW&2<0fz)`c{iNgQ)ZDw^BYTBZ14Mu6uLe(=Q|H&oL;%SlP*g9d2|M@oRTiis?AUir za1bVPPHkR>k;41^LyvE7p|GEe1(Nn7AV`9>y>a_{Z7hXsLyd_m!~G(azP1_gu>r*0 zj!Df*+Jn`BjF)ZcM)1uDa!-GC~dH;?m6(H`f7!snaLr%5`v+5E^FmSfAemHg-}PDB1EWGeX8?EcVmZ#@O=h? zmx5O00H8 zw+*iw&)ya8Id-T853L1=d;FR6-h}pl6q8H=#C2y_+lI5qP}rUZhArafP|h8zzN{># z$zoRg%a0!FpW7cS1G(khk@mvA>{7FsQ;-9~Qr~m6Y&DzvQO8-wU|l-~gZ5Ld1mvLB ztS;)N{{9h`2OU5s^jo3&OGO8l8rJhu6*N?>s>;Fft`C2*seAVW{Qd@%EXa1Pff`f} z4#uhQ(II=l(h!&o?0+xkoNzgf@_DuysjV7ztw1zZxw`Kn!tvpW%bu5yv=sXYcc^pd zKRfhN8D6)e)WQV-y|uM}=quF3%3cqtTHY!zd}9m34rAJS(C9h!i=L>Hbh;&^4yLyHM6D-_agM?JKEWkd$%j!7e+~=uBm3N z|IRb7>8c2`iXY-Y)ITv{bf$w96=4YxxnWV^VI}0NY%}@235_)}R}X+T3J~mq@L#=2 z=7}S?MR8-F8gkE**vAm4NdCRgQSIa)1>BJX@|y-%?74a&97$p3HPdL%T@p|Hm5Tvvv9B zoq@LICM)Dxagla>&&8aEBHy*)7aLMIOaXt%I$%hs*Bbq=1+GBg1;hGERZPwAOTSv= zNrI(agOh<^ua`cc5R>;+fOgl66{>F^?s1H#9v^IqKpucyBaQz06EB(8`5niciM=Yb~n*INJ=E=w6)4+~ExhjNoUz*TcPUM6?q|O4J-c;VDdK zQYd9D?f@-DayiqTLrtFBB&UW(`kPY=OzB>VpaR?b`WQxjwA>cRms0ogSP6U+nxL!e z*zn_AgR5f)vLu-aumtO;HVJ(Vp0kP!<8=ei7JGl)5-b^F1564*Qwy9Znbj!d9J?8K(*R_pH;@`EVW13oAGYu@gM3he`LXxg%D&osWZ zuZ*;H|7-VmWkT)c;=ky&W`XVmBgIgwA?YW=9HQ@=gnyKQx*Uje3yIi%$jd?o7}NJ`f!jDi*$9JD3n(UdTUo{u?TEWnX#toAOvgu{RD z66@#!wNts;?e9enOrs^^9+u~UtCEw*2C}#A-+6s_{a3>_PzXncXxy}t@cEggFL`g!LiGJjntW>(H;%2mJ@fA5pE+zGsFg|GqFAlppSqc= zakHnmjQZv;751rG%E0c#!k*=B!a8Ur0Rm&Ch$|qAf>rHn=kSG`qg36&O4UX2 zTOd5DKBE6FhKNLRUh<}9dM^L|3k-8U6`^pvb~R?DS<9FHVrwp13Lg`m+)kg58A)=TO_pODi&UO%eJbxT|X-yflzzM$ZtW zWj8=JJRi|=6#I7`^Z3G|)X@@HP)>H1q*;7l?}dgJZ0Qg|Y~Hs1r!s?DfhoQD7fM78 zjLwKD9RI#{pkKJ4poyqJQ79y%&-#PodIjV$UscEG*ZAZ&H9jygt|mHjKi~jwM@&u+ zISBY$1MQAR>xHyL=(pOoHHvqha`WLSM(hS@Vj1NHNk`=Z*y)`9yO$fpVZc7GMFo6| zz0>+G7u0Hi$RST+{OaF@+FK3spP)j=x5ZGA8#@m)93=@rBK2GP991|@2w?}aq^cWC z?D958(~|uVK5o;R#t|4&y~Q!eQTG`>8OR=CL}-icXvzNDaUXem%+G8A=ralr%ijZi zf65IAvp(Swi~T2DWk)KeS>EuIw$tH_tH+GRZKYF+E#6WSxxU9^(im2_o zFfa)fIrZ1(L&tGYP2m7eAx(QW+yF+d%)8%REee*Bmd4V-2>6!KXJ!NZ)oMUpOqK-d zb)H}`faz%a0O2TlM5^hl%*(KLGKg|-aBo36N$#;$yk!f)l{M2!Mgb!rn4SEjxr9#^ zCIbtkkdQJyY+^_DR`jKIvO^dDD*`V#WDnx2?Px7P;8p6SOfr@ui~BLJQvveZjQ%MQzD_uUhlun3_E4 zFZRy>=(@h$$8|k5-0MBjp2FTGjUBpW*I*sUZ9yh;K=B(MeRHg!w9q5Sp%XrWNpzi49jl2T@ITT7Y zKkJ96KR>#|-eMLnvr`x7mZDHmknr8Ig{BX6up#gW*19Pi^qnk27GB{35WaX*s*HjH zFpCoXnjNUdRJiohRyP4*E&2iu>{H7-K6J#)ah<9@19bO5MXlOBwpt6dPDyX?HK5u5 zIjdo>TUG>%et?UZnm%zEVC;KIdmg}wS3#l^RM4YU9+aq1A_*G4#E-(kcHQ460zdjj zsj;>Ul0a!A3C4wmWS;oKk)AI=IjR?VswT$0%2x&CH_0l+Lc_4PD|oQcJKsJ2^TwAH zQ2Y5~p(hRuI6I?^3_17qsXtYeyNDANyAKNB-Mf#YX~aSna~CL=d=D6M(N!;onE*sS z+t1ltlSqJ@b?PIJ^YpJM___n;q93W2hNbSALA)SD44)JtD!bCv}4}JK{=AAMx ziBPlv7g0HWIX!<)pAcwbHar^n_i>8yeOFjO6(Yp%{tGl*dTzd^%y9?6(M&1oQtdKG zO9Vly%E0wfqK6&92^kIiA4ksP&2!!Z&mTPBGSQz~0`&XVxw8hO`Y2DpcS`*757_wD z`3)tPH05uV)C*|Y*X)G0-M{X2nXSm5A2++AK(wB1*D2+m&pN?Bk#&a&RE#sR`tC@?AK<+ku)6tdtOpyRX~I{>0(cc8k~;^n|9xf9p#aRAHkLA;B(%9le< z0@lZy9^F{!T9o(UPJ#z`y#%@$pm0-;^i~{{r91c?jN-~O{(F?oU90gzTX8?%yvG4G zFEC2#MFG$m=|c|>$)F?M{`~%!&<;2f3$smKfObM1@Vp)<*`BpZxzS*g z(BCxt(|WB=SyW7>3=o8z7NCF>0CC0+piZT*IRWVFj}GJe&@XF!jk`4kwTX;lIDie8 zN#%CJX3)*+$AR{g%b@<~zL520=Xl|fg{P-cno~yYEz8s5ps6wkXhmO#TC+3;HmU6F z<*7B$_#DrPffk$Q^tBRU%N{!Nxq3hLh5!3wK(W5E`;MH_gp8rz@l9&h%JeS&&EAFk zplp7mzYw&z_JDVXBEM{%to}2stp;N0U}JlLA+X0}pCpZQRu-Vdw|9rK^q_&WB z0$k+WdP#BK%;(&wCYIuOSE;;2LZ*_@MTw5=!1SFvGK`&X(L&(5(8Z%VtfPD7mk=EtjS$ojy5eJ2hy-nK*}6i0ZBo1?1J~ zXgO%%w@&->wQ8tm7_-!ut!f^tz%*Wmd3py_NcyK|l>PvbW9K1gWq0SZ--U+$UUg50 z^bwQA?A4y(3+~0{VGEu>%du}Q&f2!Jy7Wuf!ZXF`Pb(PW-}|Uics^7QG}%=YWk}{- z0KTi*DgX`t*|tX|pKleU+v`d-0=6|0oqa*e8)P3laQxB(lmL@A8w#($K>Yd{4KT?v zE`NH>02%dC{V=ErC@8kAPf!Fpxk*i6qlv6h;Awz|cEYp3^9-_qIVUu+#r6X)8YB(Gez5h_moKfqM| zmqFL{>!ja5{84V%Ef=}zP-|fyZbusxFzQe|u*K~MkgBe+F=OkA+-$$!K&JJc4Y2}E zeHZ6JL%cU2Aex7uwChvIZL08Fyt!xrWL3uwDlg1_)lcLV>9!uMyB$%Jx8-nM9UQDN zE?O!Cr?e-(<~$5MfUyP7|NY~==HrJ&x}J83@}Y91)n!aj6E}>zsl|RAwXivK@Xo+K z>5)H;^ZX|tXByJ)XKia;9W2N6ZTK8&X=Rm}wdGdqd#_o!-d2dD*6^DH3-0$#blrGvYaHfc&GsX0M2WbvEL7TjigAz<>8^9JPwr{@eA) zba4t?1(b6%9XAapGP?HPyb;`(cnCD2+yClsmM(iZ

w)3==^NwrrDO2+K{WJbK!# zS`h4%^G>@^N<_df>~#yPpzD`c2Qfs*HcGLl$oFVcr5Bu$<5bS z+50+*%nlVEz7*pR5xLuu`@HTVWS%`a8lieN;*>~n-kC>wZI|zW1JEpc%*y6ghlVQcM!#U}Qwb5IO62c9re7wHsM~#q zI2%H+;!-aGb*iD#Iz+Iek#SuTG%O!~7TXN8H!nwFR3vSmc#s>L$a;8iW3$|xup;1R zV7&R~msIsI_!M z%F)1LRk|=B(n}093>?=Ac0t-yK?F zAXt)}+z0LBk|LB%YO0qQ{$E`$V30Bsgft1j!RfQzD z1iALRb(d%p&qMf-N{v0X3?hRRW{iziH+LckmA6+;Ty8qj+|shP{>~)wg6K0$Pew6w zM@uw`%(Gv%1pPrt5$LrgLhq-o1oqcMr zjt5`z`h6}%^NLgox~)8|D&F(PsNPr&mfa265O@cU9K1_u*dj)#fk;XZGtZyY@wfz{ z#QQS!eaj1^P2houcA?-wl?oXQw&8lHt`b8xIGxy@)0=e()E{LuL*Zxdznw{2C!>Jn z{#M(4z<6d!dNs?~b6$;LGC7_^{0 z?t&eDmKQR(c(ZDBzQr8y6hlRuwEW)fNe`S<3Lm`d|vl?Id)>L!M|*)WGacN| z(hg);-dVjAv?riv*eq4ob9j5w@Rx1h-rnB$6LHtgps2G-oaWKpb>K<%!{yhNW|hQ~ zd5UQtGZiVu?$9Ukq@$-%^p1v5^5DrZ^6bqX@`XMf)1PGAVoOxIiQ3gal@y)dVv2}sf#s0R47gx0W$@x=9w#aAKI{1A3^X6H>m$lSe zc)Xo1v5#Ay_{>%bVYml*@-wj%NAFp=BlE3w{XG5ArL+R0G;OG~PM&gE@w;n16F-Zq z$?siW(_E}x^SA%VywM+Dl-fpo-;FF^MCg1k=0xsb(7_d`Wz>tq_T&rknt$q&Qoi-y-}-YG`_rknEB83M^l2Fx z14`^QecgFP-KVt75AXDFi#Nh1a0C=oB*@3O4C=zhmp;KoFjx0%-nGHtj^ z-mPkG>Yp2-tV?-XhvnQ&C)VdJ`}94NSPose>wV&)b57BY7sc14R#x66pKaM|kURIw zvH0DZ?MCVC7aOLAUk!G96Mj9I(p*n(6Q}}gIQOu>rRw*d6~eEBRqJsAvoVOs)vpI@ z%Wwr^T$qSU#W6J-Ig&ufSm_DrI3{8AyOrZsDI?*tV!~cNBiG7jhd@xH{+8QN(fOdy z7qTvJUh=>2nU6u1ZC6%SHstfOqIYgzTi3$0)6-G zSR&|7+||r5lVQ~G6~WD`f97I<>B6-k>;MT$Wh1g`2KP4#WZ8MpLOqr)9nJQCknM0Wp4W@^6rl0X(hWU4N3jUU+C)AaYYbrn^Wu2ihO)&`QuxsKG+?dFoIL!t zj&BuJx4@;In5A2aOT-dG-cE=LBy6Z6DT!r*gp39qRF4Qzii-EQQH%zr>V+6$EDP_n z&Njs16#NtN6keMKE#Z`tv|tN*2wpgM5)!1hE}rBdAT2eOhJU^mMdxpcDwqZSVh5lu z%mkl)cI3N=#;w`RQkUlOJlxyg;O{0LR~KML44?OHm;#TJ^5HzkeqQlBqk+(9oyVgz zW4Etwj-rT#EuODkd|}|uPi+l5&hjLoXl^6B0}0H$4{bG$#b^3&(7&;5j#ZLl0 z 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%0AGrzzF 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�x$~C`@SJnk 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 z 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 \ No newline at end of file diff --git a/user_guide/test-release-flow.png b/user_guide/test-release-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d46ac38ff4a66dc6e99391bef6d70c3c7717b266 GIT binary patch literal 92984 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 Date: Fri, 13 May 2022 07:23:13 -0300 Subject: [PATCH 28/29] 1. tiny changes in flow diagrams 2. Renamed GithubReleaseCreator => GithubDraftReleaseCreator 3. Add missing link to test-release-flow.png in user_guide.md --- .../cli/commands/start_test_release_build.py | 4 ++-- ...tor.py => github_draft_release_creator.py} | 2 +- .../lib/run_start_release_build.py | 4 ++-- user_guide/release-flow.drawio | 2 +- user_guide/release-flow.png | Bin 95132 -> 97373 bytes user_guide/test-release-flow.drawio | 2 +- user_guide/test-release-flow.png | Bin 92984 -> 93000 bytes user_guide/user_guide.md | 5 ++++- 8 files changed, 11 insertions(+), 8 deletions(-) rename exasol_script_languages_container_ci_setup/lib/{github_release_creator.py => github_draft_release_creator.py} (94%) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index b9e238e..961a721 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -8,7 +8,7 @@ from exasol_script_languages_container_ci_setup.cli.options.logging import logging_options, set_log_level from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess from exasol_script_languages_container_ci_setup.cli.options.aws_options import aws_options -from exasol_script_languages_container_ci_setup.lib.github_release_creator import GithubReleaseCreator +from exasol_script_languages_container_ci_setup.lib.github_draft_release_creator import GithubDraftReleaseCreator from exasol_script_languages_container_ci_setup.lib.run_start_release_build import run_start_test_release_build @@ -37,5 +37,5 @@ def start_test_release_build( release artifacts onto the new Github release. """ set_log_level(log_level) - run_start_test_release_build(AwsAccess(aws_profile), GithubReleaseCreator(), repo_name, + run_start_test_release_build(AwsAccess(aws_profile), GithubDraftReleaseCreator(), repo_name, project, branch, release_title, os.getenv("GITHUB_TOKEN")) diff --git a/exasol_script_languages_container_ci_setup/lib/github_release_creator.py b/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py similarity index 94% rename from exasol_script_languages_container_ci_setup/lib/github_release_creator.py rename to exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py index 9efe24e..604d415 100644 --- a/exasol_script_languages_container_ci_setup/lib/github_release_creator.py +++ b/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py @@ -3,7 +3,7 @@ from github import Github -class GithubReleaseCreator(object): +class GithubDraftReleaseCreator(object): """ Implements creation of a Github Draft Release. See https://docs.github.com/en/rest/releases/releases for details. diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index 6a11c4c..2e0507d 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -3,7 +3,7 @@ from typing import Tuple, Dict from exasol_script_languages_container_ci_setup.lib.aws_access import AwsAccess -from exasol_script_languages_container_ci_setup.lib.github_release_creator import GithubReleaseCreator +from exasol_script_languages_container_ci_setup.lib.github_draft_release_creator import GithubDraftReleaseCreator from exasol_script_languages_container_ci_setup.lib.release_build import release_stack_name @@ -66,7 +66,7 @@ def run_start_release_build(aws_access: AwsAccess, project: str, upload_url: str _execute_release_build(aws_access, project, branch, _parse_upload_url(upload_url=upload_url), False, gh_token) -def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: GithubReleaseCreator, repo_name: str, +def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: GithubDraftReleaseCreator, repo_name: str, project: str, branch: str, release_title: str, gh_token: str) -> None: logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile_for_logging} " f"for project {project} for branch: {branch} with title: {release_title}") diff --git a/user_guide/release-flow.drawio b/user_guide/release-flow.drawio index 6b8e2fd..cfb78f4 100644 --- a/user_guide/release-flow.drawio +++ b/user_guide/release-flow.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/user_guide/release-flow.png b/user_guide/release-flow.png index e6163aee627dc67cd826430bf80d91abe007e724..167c4290577fabc338a2c7b5836ff488e30202d3 100644 GIT binary patch literal 97373 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

2y@epFmf`yh&#e(WA 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 G1phB2s$vZQ literal 95132 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 \ No newline at end of file +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 \ No newline at end of file diff --git a/user_guide/test-release-flow.png b/user_guide/test-release-flow.png index d46ac38ff4a66dc6e99391bef6d70c3c7717b266..b400ef89fb47eb625ba5c6d247a407ff0ea5fb4e 100644 GIT binary patch delta 63404 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 H}3#Y!8 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 EKVUqC+W-In diff --git a/user_guide/user_guide.md b/user_guide/user_guide.md index 42d4fe4..d813dc4 100644 --- a/user_guide/user_guide.md +++ b/user_guide/user_guide.md @@ -71,4 +71,7 @@ For some repositories there will be one code build stack to build the release ar ### Flows The overall flow for a release build is shown in the following diagram: -![image info](./release-flow.png) \ No newline at end of file +![image info](./release-flow.png) + +The overall flow for a test-release build is shown in the following diagram: +![image info](./test-release-flow.png) \ No newline at end of file From 832b589415bd23cb43916e4af9941324f8dfb3d9 Mon Sep 17 00:00:00 2001 From: Thomas Ubensee <34603111+tomuben@users.noreply.github.com> Date: Fri, 13 May 2022 13:21:32 -0300 Subject: [PATCH 29/29] Changed logic about how to pass GH Token to GithhubDraftReleaseCreator --- .../cli/commands/start_test_release_build.py | 4 ++-- .../lib/github_draft_release_creator.py | 8 ++------ .../lib/run_start_release_build.py | 2 +- test/test_start_test_release_build.py | 1 - 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py index 961a721..14568f4 100644 --- a/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py +++ b/exasol_script_languages_container_ci_setup/cli/commands/start_test_release_build.py @@ -37,5 +37,5 @@ def start_test_release_build( release artifacts onto the new Github release. """ set_log_level(log_level) - run_start_test_release_build(AwsAccess(aws_profile), GithubDraftReleaseCreator(), repo_name, - project, branch, release_title, os.getenv("GITHUB_TOKEN")) + run_start_test_release_build(AwsAccess(aws_profile), GithubDraftReleaseCreator(), + repo_name, project, branch, release_title, os.getenv("GITHUB_TOKEN")) diff --git a/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py b/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py index 604d415..7c7db91 100644 --- a/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py +++ b/exasol_script_languages_container_ci_setup/lib/github_draft_release_creator.py @@ -1,5 +1,3 @@ -import os - from github import Github @@ -10,11 +8,9 @@ class GithubDraftReleaseCreator(object): The access token needs to be stored in the environment variable GITHUB_TOKEN. Returns the internal ID of the new release. """ - def __init__(self): - self._token = os.getenv("GITHUB_TOKEN") - def create_release(self, repo_name: str, branch: str, title: str) -> int: - gh = Github(self._token) + def create_release(self, repo_name: str, branch: str, title: str, gh_token: str) -> int: + gh = Github(gh_token) gh_repo = gh.get_repo(repo_name) release = gh_repo.create_git_release(tag="", name=title, message="Test-Release", draft=True, prerelease=True, target_commitish=branch) diff --git a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py index 2e0507d..77ad79c 100644 --- a/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py +++ b/exasol_script_languages_container_ci_setup/lib/run_start_release_build.py @@ -70,5 +70,5 @@ def run_start_test_release_build(aws_access: AwsAccess, gh_release_creator: Gith project: str, branch: str, release_title: str, gh_token: str) -> None: logging.info(f"run_start_test_release_build for aws profile {aws_access.aws_profile_for_logging} " f"for project {project} for branch: {branch} with title: {release_title}") - release_id = gh_release_creator.create_release(repo_name, branch, release_title) + release_id = gh_release_creator.create_release(repo_name, branch, release_title, gh_token) _execute_release_build(aws_access, project, branch, release_id, True, gh_token) diff --git a/test/test_start_test_release_build.py b/test/test_start_test_release_build.py index 10a5697..b5e3b36 100644 --- a/test/test_start_test_release_build.py +++ b/test/test_start_test_release_build.py @@ -1,5 +1,4 @@ import datetime -import os from unittest.mock import MagicMock from dateutil.tz import tzutc