From fe2cdbfeaabfb413d15108e01ed3f50dd2e2dc5c Mon Sep 17 00:00:00 2001 From: Aijun Peng Date: Sat, 17 Oct 2020 00:40:48 +0000 Subject: [PATCH 01/11] Added new pattern aws-events-rule-kinesisstream --- CHANGELOG.md | 5 + .../.eslintignore | 4 + .../aws-events-rule-kinesisstream/.gitignore | 15 ++ .../aws-events-rule-kinesisstream/.npmignore | 21 ++ .../aws-events-rule-kinesisstream/README.md | 83 ++++++++ .../architecture.png | Bin 0 -> 17991 bytes .../lib/index.ts | 93 +++++++++ .../package.json | 81 ++++++++ .../events-rule-kinesisstream.test.js.snap | 180 ++++++++++++++++++ .../test/events-rule-kinesisstream.test.ts | 106 +++++++++++ ...e-kinesisstream-no-arguments.expected.json | 88 +++++++++ 11 files changed, 676 insertions(+) create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ba1c8f5d..a811fe761 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.68.0] - 2020-10-20 + +### Added +- aws-events-rule-kinesisstream pattern added ([#59](https://github.com/awslabs/aws-solutions-constructs/issues/59)) + ## [1.67.0] - 2020-10-09 ### Changed diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore new file mode 100644 index 000000000..e6f7801ea --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore @@ -0,0 +1,4 @@ +lib/*.js +test/*.js +*.d.ts +coverage diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore new file mode 100644 index 000000000..963955620 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore @@ -0,0 +1,15 @@ +lib/*.js +test/*.js +*.js.map +*.d.ts +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore new file mode 100644 index 000000000..1ce9af351 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore @@ -0,0 +1,21 @@ +# Exclude typescript source and config +*.ts +tsconfig.json +coverage +.nyc_output +*.tgz +*.snk +*.tsbuildinfo + +# Include javascript files and typescript declarations +!*.js +!*.d.ts + +# Exclude jsii outdir +dist + +# Include .jsii +!.jsii + +# Include .jsii +!.jsii diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md new file mode 100644 index 000000000..cca10be3f --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md @@ -0,0 +1,83 @@ +# aws-events-rule-kinesis-stream module + + +--- + +![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) + +> All classes are under active development and subject to non-backward compatible changes or removal in any +> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. +> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. + +--- + + +| **Reference Documentation**:| https://docs.aws.amazon.com/solutions/latest/constructs/| +|:-------------|:-------------| +
+ +| **Language** | **Package** | +|:-------------|-----------------| +|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws-events-rule-kinesisstream`| +|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesis-stream`| +|![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.eventsrulekinesisstream`| + +This AWS Solutions Construct implements an AWS Events rule and an AWS SNS Topic. + +Here is a minimal deployable pattern definition in Typescript: + +``` typescript +import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from "@aws-solutions-constructs/aws-events-rule-kinesis-stream"; + +const props: EventsRuleToKinesisStreamProps = { + eventRuleProps: { + schedule: events.Schedule.rate(Duration.minutes(5)), + } +}; + +const constructStack = new EventsRuleToKinesisStream(this, 'test-events-rule-kinesis-stream', props); +``` + +## Initializer + +``` text +new EventsRuleToKinesisStream(scope: Construct, id: string, props: EventsRuleToKinesisStreamProps); +``` + +_Parameters_ + +* scope [`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) +* id `string` +* props [`EventsRuleToKinesisStreamProps`](#pattern-construct-props) + +## Pattern Construct Props + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|eventRuleProps|[`events.RuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.RuleProps.html)|User provided eventRuleProps to override the defaults. | +|existingStreamObj?|[`kinesis.Stream`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.Stream.html)|Existing instance of Kinesis Stream, if this is set then kinesisStreamProps is ignored.| +|kinesisStreamProps?|[`kinesis.StreamProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.StreamProps.html)|Optional user-provided props to override the default props for the Kinesis stream. | + +## Pattern Properties + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|eventsRule|[`events.Rule`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.Rule.html)|Returns an instance of events.Rule created by the construct.| +|kinesisStream|[`kinesis.Stream`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.Stream.html)|Returns an instance of the Kinesis stream created by the pattern.| +|eventsRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for events rule.| + +## Default settings + +Out of the box implementation of the Construct without any override will set the following defaults: + +### Amazon CloudWatch Events Rule +* Configure least privilege access IAM role for Events Rule to publish to the Kinesis Stream.. + +### Amazon Kinesis Stream +* Enable server-side encryption for Kinesis Stream using AWS Managed KMS Key + +## Architecture +![Architecture Diagram](architecture.png) + +*** +© Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..82353a723ce99ff89f66ee113ab44f42f09085ef GIT binary patch literal 17991 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 D!8r`p literal 0 HcmV?d00001 diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts new file mode 100644 index 000000000..17e92e4e4 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts @@ -0,0 +1,93 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as events from '@aws-cdk/aws-events'; +import * as kinesis from '@aws-cdk/aws-kinesis'; +import * as defaults from '@aws-solutions-constructs/core'; +import * as iam from '@aws-cdk/aws-iam'; +import { Construct } from '@aws-cdk/core'; +import { overrideProps } from '@aws-solutions-constructs/core'; + +/** + * @summary The properties for the EventsRuleToKinesisStream Construct + */ +export interface EventsRuleToKinesisStreamProps { +/** + * User provided eventRuleProps to override the defaults + * + * @default - None + */ +readonly eventRuleProps: events.RuleProps +/** + * Existing instance of Kinesis Stream object, if this is set then the kinesisStreamProps is ignored. + * + * @default - Default props are used + */ +readonly existingStreamObj?: kinesis.Stream, +/** + * User provided props to override the default props for the Kinesis Stream. + * + * @default - Default props are used + */ +readonly kinesisStreamProps?: kinesis.StreamProps | any +} + +export class EventsRuleToKinesisStream extends Construct { + public readonly kinesisStream: kinesis.Stream; + public readonly eventsRule: events.Rule; + public readonly eventsRole: iam.Role; + + /** + * @summary Constructs a new instance of the EventsRuleToKinesisStream class. + * @param {cdk.App} scope - represents the scope for all the resources. + * @param {string} id - this is a a scope-unique id. + * @param {EventsRuleToKinesisStreamProps} props - user provided props for the construct + * @since 0.8.0 + * @access public + */ + constructor(scope: Construct, id: string, props: EventsRuleToKinesisStreamProps) { + super(scope, id); + + // Set up the Kinesis Stream + this.kinesisStream = defaults.buildKinesisStream(this, { + existingStreamObj: props.existingStreamObj, + kinesisStreamProps: props.kinesisStreamProps, + }); + + // Create an events service role + this.eventsRole = new iam.Role(this, 'eventsRole', { + assumedBy: new iam.ServicePrincipal('events.amazonaws.com'), + description: 'Events Rule Role', + }); + + // Grant permission to events service role to allow event rule to send events data to the kinesis stream + this.kinesisStream.grantWrite(this.eventsRole); + + // Set up the Kinesis Stream as the target for event rule + const kinesisStreamEventTarget: events.IRuleTarget = { + bind: () => ({ + id: '', + arn: this.kinesisStream.streamArn, + role: this.eventsRole + }) + }; + + // Add the kinese event source mapping + const defaultEventsRuleProps = defaults.DefaultEventsRuleProps([kinesisStreamEventTarget]); + const eventsRuleProps = overrideProps(defaultEventsRuleProps, props.eventRuleProps, true); + + // Setup up the event rule + this.eventsRule = new events.Rule(this, 'EventsRule', eventsRuleProps); + + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json new file mode 100644 index 000000000..6ae9cfda9 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json @@ -0,0 +1,81 @@ +{ + "name": "@aws-solutions-constructs/aws-events-rule-kinesis-stream", + "version": "1.67.0", + "description": "CDK Constructs for deploying AWS Events Rule that invokes AWS SNS", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "scripts": { + "build": "tsc -b .", + "lint": "eslint -c ../eslintrc.yml --ext=.js,.ts . && tslint --project .", + "lint-fix": "eslint -c ../eslintrc.yml --ext=.js,.ts --fix .", + "test": "jest --coverage", + "clean": "tsc -b --clean", + "watch": "tsc -b -w", + "integ": "cdk-integ", + "integ-no-clean": "cdk-integ --no-clean", + "integ-assert": "cdk-integ-assert", + "jsii": "jsii", + "jsii-pacmak": "jsii-pacmak", + "build+lint+test": "npm run jsii && npm run lint && npm test && npm run integ-assert", + "snapshot-update": "npm run jsii && npm test -- -u && npm run integ-assert" + }, + "repository": { + "type": "git", + "url": "https://github.com/awslabs/aws-solutions-constructs.git", + "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesis-stream" + }, + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "jsii": { + "outdir": "dist", + "targets": { + "java": { + "package": "software.amazon.awsconstructs.services.eventsrulesns", + "maven": { + "groupId": "software.amazon.awsconstructs", + "artifactId": "eventsrulesns" + } + }, + "dotnet": { + "namespace": "Amazon.Constructs.AWS.EventsRuleSns", + "packageId": "Amazon.Constructs.AWS.EventsRuleSns", + "signAssembly": true, + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "python": { + "distName": "aws-solutions-constructs.aws-events-rule-kinesis-stream", + "module": "aws_solutions_constructs.aws_events_rule_sns" + } + } + }, + "dependencies": { + "@aws-cdk/aws-events": "~1.67.0", + "@aws-cdk/aws-kinesis": "~1.67.0", + "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/core": "~1.67.0", + "@aws-solutions-constructs/core": "~1.67.0", + "constructs": "^3.0.4" + }, + "devDependencies": { + "@aws-cdk/assert": "~1.67.0", + "@types/jest": "^24.0.23", + "@types/node": "^10.3.0" + }, + "jest": { + "moduleFileExtensions": [ + "js" + ] + }, + "peerDependencies": { + "@aws-cdk/aws-events": "~1.67.0", + "@aws-cdk/aws-kinesis": "~1.67.0", + "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/core": "~1.67.0", + "@aws-solutions-constructs/core": "~1.67.0", + "constructs": "^3.0.4" + } +} diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap new file mode 100644 index 000000000..7f320a062 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap @@ -0,0 +1,180 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test existing resources 1`] = ` +Object { + "Resources": Object { + "testeventsrulekinesisstreamsexistingresourceEventsRuleEFD8ADE5": Object { + "Properties": Object { + "Description": "event rule props", + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": Array [ + Object { + "Arn": Object { + "Fn::GetAtt": Array [ + "testexistingstreamA6CF7AE7", + "Arn", + ], + }, + "Id": "Target0", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE", + "Arn", + ], + }, + }, + ], + }, + "Type": "AWS::Events::Rule", + }, + "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "events.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "Description": "Events Rule Role", + }, + "Type": "AWS::IAM::Role", + }, + "testeventsrulekinesisstreamsexistingresourceeventsRoleDefaultPolicy5FF81DB6": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kinesis:ListShards", + "kinesis:PutRecord", + "kinesis:PutRecords", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testexistingstreamA6CF7AE7", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testeventsrulekinesisstreamsexistingresourceeventsRoleDefaultPolicy5FF81DB6", + "Roles": Array [ + Object { + "Ref": "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testexistingstreamA6CF7AE7": Object { + "Properties": Object { + "Name": "existing-stream", + "RetentionPeriodHours": 48, + "ShardCount": 5, + }, + "Type": "AWS::Kinesis::Stream", + }, + }, +} +`; + +exports[`Test snapshot match with default parameters 1`] = ` +Object { + "Resources": Object { + "testeventsrulekinesisstreamsdefaultparametersEventsRuleB892ACC8": Object { + "Properties": Object { + "Description": "event rule props", + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": Array [ + Object { + "Arn": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisstreamsdefaultparametersKinesisStream289DD083", + "Arn", + ], + }, + "Id": "Target0", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisstreamsdefaultparameterseventsRole3067A354", + "Arn", + ], + }, + }, + ], + }, + "Type": "AWS::Events::Rule", + }, + "testeventsrulekinesisstreamsdefaultparametersKinesisStream289DD083": Object { + "Properties": Object { + "RetentionPeriodHours": 24, + "ShardCount": 1, + "StreamEncryption": Object { + "EncryptionType": "KMS", + "KeyId": "alias/aws/kinesis", + }, + }, + "Type": "AWS::Kinesis::Stream", + }, + "testeventsrulekinesisstreamsdefaultparameterseventsRole3067A354": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "events.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "Description": "Events Rule Role", + }, + "Type": "AWS::IAM::Role", + }, + "testeventsrulekinesisstreamsdefaultparameterseventsRoleDefaultPolicyF4C8EFFF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "kinesis:ListShards", + "kinesis:PutRecord", + "kinesis:PutRecords", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisstreamsdefaultparametersKinesisStream289DD083", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testeventsrulekinesisstreamsdefaultparameterseventsRoleDefaultPolicyF4C8EFFF", + "Roles": Array [ + Object { + "Ref": "testeventsrulekinesisstreamsdefaultparameterseventsRole3067A354", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + }, +} +`; diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts new file mode 100644 index 000000000..7c2858e6e --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts @@ -0,0 +1,106 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { SynthUtils } from '@aws-cdk/assert'; +import * as cdk from "@aws-cdk/core"; +import * as events from "@aws-cdk/aws-events"; +import * as kinesis from '@aws-cdk/aws-kinesis'; +import '@aws-cdk/assert/jest'; +import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from '../lib'; + +// -------------------------------------------------------------- +// Test snapshot match with default parameters +// -------------------------------------------------------------- +function deployNewStack(stack: cdk.Stack) { + const props: EventsRuleToKinesisStreamProps = { + eventRuleProps: { + description: 'event rule props', + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) + } + }; + return new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-streams-default-parameters', props); +} + +test('Test snapshot match with default parameters', () => { + const stack = new cdk.Stack(); + deployNewStack(stack); + + // Assertions + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); +}); + +// -------------------------------------------------------------- +// Test properties +// -------------------------------------------------------------- +test('Test properties', () => { + const stack = new cdk.Stack(); + const construct: EventsRuleToKinesisStream = deployNewStack(stack); + + // Assertions + expect(construct.eventsRule !== null); + expect(construct.kinesisStream !== null); + expect(construct.eventsRole !== null); +}); + +// -------------------------------------------------------------- +// Test default AWS managed encryption key property +// -------------------------------------------------------------- +test('check events rule properties', () => { + const stack = new cdk.Stack(); + deployNewStack(stack); + + // Assertions + expect(stack).toHaveResource('AWS::Kinesis::Stream', { + StreamEncryption: { + EncryptionType: "KMS", + KeyId: "alias/aws/kinesis" + } + }); +}); + +// -------------------------------------------------------------- +// Test existing resources +// -------------------------------------------------------------- +test('Test existing resources', () => { + const stack = new cdk.Stack(); + + // create resource + const existingStream = new kinesis.Stream(stack, 'test-existing-stream', { + streamName: 'existing-stream', + shardCount: 5, + retentionPeriod: cdk.Duration.hours(48), + encryption: kinesis.StreamEncryption.UNENCRYPTED + }); + + new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-streams-existing-resource', { + existingStreamObj: existingStream, + // These properties will be ignored as existing object was provided + kinesisStreamProps: { + streamName: 'other-name-stream', + shardCount: 1, + retentionPeriod: cdk.Duration.hours(24) + }, + eventRuleProps: { + description: 'event rule props', + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) + } + }); + + // Assertions + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); + expect(stack).toHaveResource('AWS::Kinesis::Stream', { + Name: 'existing-stream', + ShardCount: 5, + RetentionPeriodHours: 48, + }); +}); \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json new file mode 100644 index 000000000..c765a2543 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json @@ -0,0 +1,88 @@ +{ + "Description": "Integration Test for aws-events-rule-kinesisstream", + "Resources": { + "testeventsrulekinesisstreamKinesisStream969B0ACC": { + "Type": "AWS::Kinesis::Stream", + "Properties": { + "ShardCount": 1, + "RetentionPeriodHours": 24, + "StreamEncryption": { + "EncryptionType": "KMS", + "KeyId": "alias/aws/kinesis" + } + } + }, + "testeventsrulekinesisstreameventsRole6E6DBF4D": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "Description": "Events Rule Role" + } + }, + "testeventsrulekinesisstreameventsRoleDefaultPolicy1918648D": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "kinesis:ListShards", + "kinesis:PutRecord", + "kinesis:PutRecords" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testeventsrulekinesisstreamKinesisStream969B0ACC", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testeventsrulekinesisstreameventsRoleDefaultPolicy1918648D", + "Roles": [ + { + "Ref": "testeventsrulekinesisstreameventsRole6E6DBF4D" + } + ] + } + }, + "testeventsrulekinesisstreamEventsRule4154831A": { + "Type": "AWS::Events::Rule", + "Properties": { + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "testeventsrulekinesisstreamKinesisStream969B0ACC", + "Arn" + ] + }, + "Id": "Target0", + "RoleArn": { + "Fn::GetAtt": [ + "testeventsrulekinesisstreameventsRole6E6DBF4D", + "Arn" + ] + } + } + ] + } + } + } +} \ No newline at end of file From e854aa653ae69bce843d6d470c17162e1d4c9859 Mon Sep 17 00:00:00 2001 From: peng Date: Fri, 16 Oct 2020 20:56:17 -0400 Subject: [PATCH 02/11] Added file events-rule-kinesisstream.test.ts --- .../test/events-rule-kinesisstream.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts index 7c2858e6e..35f15899b 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts @@ -4,7 +4,7 @@ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance * with the License. A copy of the License is located at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions From 55fce0974b1f2bd02a62fb9c5223710c0643b0a3 Mon Sep 17 00:00:00 2001 From: peng Date: Fri, 16 Oct 2020 21:01:10 -0400 Subject: [PATCH 03/11] Added file test/integ.events-rule-kinesistream-no-arguments.ts --- ...g.events-rule-kinesistream-no-arguments.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts new file mode 100644 index 000000000..891b39afb --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts @@ -0,0 +1,31 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Duration } from '@aws-cdk/core'; +import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; +import * as events from '@aws-cdk/aws-events'; +import { App, Stack } from '@aws-cdk/core'; + +const app = new App(); +const stack = new Stack(app, 'test-rule-kinesisstream'); +stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstream'; + +const props: EventsRuleToKinesisStreamProps = { + eventRuleProps: { + schedule: events.Schedule.rate(Duration.minutes(5)) + } +}; + +new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-stream', props); + +app.synth(); \ No newline at end of file From 902c6d29bb2e49bf0c49ec05163aef39d76bdb97 Mon Sep 17 00:00:00 2001 From: peng Date: Fri, 16 Oct 2020 21:36:46 -0400 Subject: [PATCH 04/11] Fixed header validation error and added file test/integ.events-rule-kinesisstream-no-arguments.ts --- .../test/events-rule-kinesisstream.test.ts | 2 +- ...ments.ts => integ.events-rule-kinesisstream-no-arguments.ts} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/{integ.events-rule-kinesistream-no-arguments.ts => integ.events-rule-kinesisstream-no-arguments.ts} (95%) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts index 35f15899b..7c2858e6e 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts @@ -4,7 +4,7 @@ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance * with the License. A copy of the License is located at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts similarity index 95% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts index 891b39afb..c13bef20f 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesistream-no-arguments.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts @@ -4,7 +4,7 @@ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance * with the License. A copy of the License is located at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions From 5bf05ccf7128bf27fbe19cb663ad38238f23fa70 Mon Sep 17 00:00:00 2001 From: peng Date: Tue, 20 Oct 2020 23:09:18 -0400 Subject: [PATCH 05/11] Added new construct pattern aws-events-rule-kinesisfirehose-s3 and updated aws-events-rule-kinesisstream --- CHANGELOG.md | 1 + .../.eslintignore | 5 + .../.gitignore | 26 ++ .../.npmignore | 21 + .../README.md | 99 +++++ .../architecture.png | Bin 0 -> 308629 bytes .../lib/index.ts | 124 ++++++ .../package.json | 87 ++++ ...vents-rule-kinesisfirehose-s3.test.js.snap | 377 ++++++++++++++++++ .../events-rule-kinesisfirehose-s3.test.ts | 127 ++++++ ...esisfirehose-s3-no-arguments.expected.json | 373 +++++++++++++++++ ...ts-rule-kinesisfirehose-s3-no-arguments.ts | 30 ++ .../aws-events-rule-kinesisstream/.gitignore | 12 + .../aws-events-rule-kinesisstream/README.md | 14 +- .../architecture.png | Bin 17991 -> 127620 bytes .../package.json | 18 +- .../test/events-rule-kinesisstream.test.ts | 2 +- ....events-rule-kinesisstream-no-arguments.ts | 5 +- 18 files changed, 1301 insertions(+), 20 deletions(-) create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.eslintignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.npmignore create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/architecture.png create mode 100755 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a811fe761..5fad8db71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - aws-events-rule-kinesisstream pattern added ([#59](https://github.com/awslabs/aws-solutions-constructs/issues/59)) +- aws-events-rule-kinesisfirehose-s3 pattern added ([#72](https://github.com/awslabs/aws-solutions-constructs/issues/72) ## [1.67.0] - 2020-10-09 diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.eslintignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.eslintignore new file mode 100644 index 000000000..0819e2e65 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.eslintignore @@ -0,0 +1,5 @@ +lib/*.js +test/*.js +*.d.ts +coverage +test/lambda/index.js \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore new file mode 100644 index 000000000..4a1757f5e --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore @@ -0,0 +1,26 @@ +lib/*.js +test/*.js +!test/lambda/* +*.js.map +*.d.ts +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk + +#temp - to be removed +test.ts +**snap.* +**json.* +**.ts.* +jest.* +cdk.json +*.yaml +bin/ \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.npmignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.npmignore new file mode 100644 index 000000000..f66791629 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.npmignore @@ -0,0 +1,21 @@ +# Exclude typescript source and config +*.ts +tsconfig.json +coverage +.nyc_output +*.tgz +*.snk +*.tsbuildinfo + +# Include javascript files and typescript declarations +!*.js +!*.d.ts + +# Exclude jsii outdir +dist + +# Include .jsii +!.jsii + +# Include .jsii +!.jsii \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md new file mode 100644 index 000000000..14631b389 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md @@ -0,0 +1,99 @@ +# aws-events-rule-kinesisfirehose-s3 module + + +--- + +![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) + +> All classes are under active development and subject to non-backward compatible changes or removal in any +> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. +> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. + +--- + + +| **Reference Documentation**:| https://docs.aws.amazon.com/solutions/latest/constructs/| +|:-------------|:-------------| +
+ +| **Language** | **Package** | +|:-------------|-----------------| +|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_events_rule_kinesisfirehose_s3`| +|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3`| +|![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.eventsrulekinesisfirehoses3`| + +This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send data to an Amazon Kinesis Data Firehose delivery stream connected to an Amazon S3 bucket. + +Here is a minimal deployable pattern definition in Typescript: + +``` javascript +const { EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props } from '@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3'; + +const props: EventsRuleToKinesisFirehoseToS3Props = { + eventRuleProps: { + description: 'event rule props', + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) +}; + +new EventsRuleToKinesisFirehoseToS3(this, 'test-events-rule-firehose-s3', props); + +``` + +## Initializer + +``` text +new EventsRuleToKinesisFirehoseToS3(scope: Construct, id: string, props: EventsRuleToKinesisFirehoseToS3Props); +``` + +_Parameters_ + +* scope [`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) +* id `string` +* props [`EventsRuleToKinesisFirehoseToS3Props`](#pattern-construct-props) + +## Pattern Construct Props + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|eventRuleProps|[`events.RuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.RuleProps.html)|User provided eventRuleProps to override the defaults.| +|kinesisFirehoseProps?|[`kinesisfirehose.CfnDeliveryStreamProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesisfirehose.CfnDeliveryStreamProps.html)|Optional user provided props to override the default props for Kinesis Firehose Delivery Stream| +|existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.IBucket.html)|Existing instance of S3 Bucket object, if this is set then the bucketProps is ignored.| +|bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.BucketProps.html)|User provided props to override the default props for the S3 Bucket.| + +## Pattern Properties + +| **Name** | **Type** | **Description** | +|:-------------|:----------------|-----------------| +|eventsRule|[`events.Rule`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.Rule.html)|Returns an instance of events.Rule created by the construct.| +|kinesisFirehose|[`kinesisfirehose.CfnDeliveryStream`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesisfirehose.CfnDeliveryStream.html)|Returns an instance of kinesisfirehose.CfnDeliveryStream created by the construct| +|s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct| +|s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.| +|eventsRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Events Rule| +|kinesisFirehoseRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Kinesis Data Firehose delivery stream| +|kinesisFirehoseLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for Kinesis Data Firehose delivery stream| +|firehoseToS3|[`aws_solutions_constructs.aws-kinesisfirehose-s3`](https://docs.aws.amazon.com/solutions/latest/constructs/aws-kinesisfirehose-s3.html)|Returns an instance of aws-kinesisfirehose-s3 construct created by the construct| + +## Default settings + +Out of the box implementation of the Construct without any override will set the following defaults: + +### Amazon CloudWatch Events Rule +* Configure least privilege access IAM role for Events Rule to publish to the Kinesis Firehose Delivery Stream. + +### Amazon Kinesis Firehose +* Enable CloudWatch logging for Kinesis Firehose +* Configure least privilege access IAM role for Amazon Kinesis Firehose + +### Amazon S3 Bucket +* Configure Access logging for S3 Bucket +* Enable server-side encryption for S3 Bucket using AWS managed KMS Key +* Turn on the versioning for S3 Bucket +* Don't allow public access for S3 Bucket +* Retain the S3 Bucket when deleting the CloudFormation stack +* Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days + +## Architecture +![Architecture Diagram](architecture.png) + +*** +© Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/architecture.png b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..4b01c8f398961f589662812188af46d46a558c1f GIT binary patch literal 308629 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

F58NSH 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 z zX&b##;grbdrbul9CS^Z<0>F>c^ZRdw3#fQ~SDNmh`FPpA)*gJ1kDrJ{h4;B;oRmQF zAJpRu;O?~p)J9}zJ6l2~+?!g;hcI$|-6*w{k65D0Nt1SjYya~#*sOV<@-psC{rx`W zB@8yhgl3h`s?2VPEMDooCS2pv-h>Qf#h;P2=!KjTwfaLz+7bCD-bJTIT)oBJDoCR6 zNFz6z{9esZkal`_`}0@obcTiDL;xPWcAZwzWzaM6)|&b&|H+}rX`ybr78CuGE5|U zTK+O}oL=oCfhI;?46pZ7^_W{e=Rrwx2zs}VdseYG9_v02zeScb<0|LTvsr@k2VkUJ z#Nz8VDbznj^}pud5AWT%f)R$G9r0u4lQMtHS0&Bu64M)AZu zIFu&WT`I++l|~vC?{D(5zrXML!=n!Q8grGQ&z0p_w_8*HMUMKuEITBVlsGWJ?~=+c z9xoXvYS3>coWCKdErfaIqL@7SiawGgm$V{=aF=Lcv1Jm5P!AK64-b2qAhQK5^2Zz@ zANiI*fngbo?af(1<@n0&B<~l7^k9e;fa%STE~Y6eIFi15oldbs@yfQ>Leb&j)b^If zUJdD~4e^?s&smg{!478nqpNgx%ms7A z++JH3Lo}J^dQ!&!i$&=l>*`!N>D-{=AR*5$4b~tV;QqAjs!^mAFrw<8Tde>gjyy6w zN8|gsIW-++OIXPOyZ`U_)qETgTMvcrXBMQ&iP2T8B>v@=scV0ZSQZ8M^+WmwGD!860-Ip3fyrC_udDE3wO&@a?Ohx7EZ%GC zF@{m{X_hN{XcqbL?vDXc(X`-;!b^>Vyr*ORYO`7EsVRH5T^}UU@DgkBfiiDCf7pc< zKc3}@UHNG`JctkN94ig+@&4^^e8qJ_|5*sVw7f^1IOLHeuv$F;!97iw!#_OqN_=~T z{CxOJrnu-tR^DQ7kUCAzbkhBP{rmLPJm7JjrW zxWwrZGueMM6CV){hfcbk2xIDCN7Ea7e3*$H{0>qasc3 zQ4o9hexiQWejjv4a1B#rf?+62{F~hiM-FT^_p-k+dePJLjDodJXfv~K-+ zAQKng(j3jqjDI#cA-&b7M3{)4OHF+`s;A$_XnrPQ5_yL0(95@yW8|cMZ|ucl!*^pa z^(m7wDu0-d$Npi1p#z@k>ETG`O5r*6O-x#bjoXp(onxdxbyq-khI zEQeEPUjn)R*z7>Au1z<*p;NErM>Eh`7VuX@d9Trs?IPLSC{WTa_ab}jGDzHtz2>ay zzXH#`?8(f;O|c0oP22jP##_xdi>AXTqM{5x;RmvK924-_ec97UaW}C;;gBaOOQ+6u z^EWr#)|N+qGfuVUtmr`RWi$2wPcr^HB=^6dB1S0hkADl9*Ozb@dd7t6J)Ip4Hw4*q z&`;?vZYdbSE2!K^8#!8pTS*CwN~2s{5<c_fcC|MH>gv!oI5Dfkh z=Lw)r+W%ujp(PiglNIiA%8Yfw|7s7it)C57u^ZgUTv!Q5#LPxE;x~XVqTZ)@2Q84H zo{qNj{Se59;`m<_Um855BJG`{*Ms`4EAbD6W5@uuQz z30f@l*5bsQyv$mZ6a?c{fl{o$ocZGVLZmR3@u8oSy^y}o9EBl-9})NkhHyY7lmo+z>Keeqw>(D$~H;C(=b;LAud_-zm--$sP#6NR)FhDdhz(~J)} z3wN1&fFc;4?z-ctVEw&Y4`Fchofut*-9a9Ep_~jAv*a+cQR7uT&eEn8sWcG%JNgP~ zqH-~kwNh7vcd*{NF{-G1vIfc*r!_S^q%59DNj47nBh3s&@wrWOrjir7H)XowD#v)z zMos(yk6cCszv;G zL)QU$C6NuANyt)?z8Ww48iy}_KS3PHvoGjTl|nLZG-j8(^UNWJ(GgIjF6BX%%d}9< zV`G(|%0wgu_ZpBbwz5WHG2d+{iJHzU+o7%C%|oIufGgNexcrs~z!XnN$fn`0=Qvz# zH><7mrWof(>{qy`rbrasHlb!NlKG#E)+b^xrr`JKkj8=1F_<#f%~>3l8Ns;v22fao z5v*^o-Ue@l{R6_th>|P{_qPZ{niop0+~-g>%Cy{JxIWkiJdtqLK0e)6YrEZ|XavWM ziZ&FENZ%Y$jG?A)!XZRz&(8FOgn*G4j#mw9b-+^|#M?6Ccy?}_!?#NHB5Zp|C6{J}Mnj_JMf0W8mCmZ*J;(Sh z08?a4@P~xf%di3F;d*Ksjs$}%2~VaaM#!H7$ZrYN|B*1IkWW1leQ05tm7V_3YA7iq zB#Jh`ABNN#X8k55^g{>|WWy;XP8W<`vkikomy2QH%5y=Vv%*W$kO$zjR|gjHCB9%R zQwXcK9In$_;zT|GCupHzNPNO6u@1$5`6kd}ew}@Fz!!ZbFYij_JjUNEZds4FsAKr! zIzxzP9J7i$cG;O-c)c2cXx1hJ_gsd~2u#A<%gn}tqfuxV& zdHDbzHIJirTV2o8zbE(~5+hQ9_u-t&G#V)|YKjqX-??_v_?bXYphd|P76~mr-QgjH zPX!qxockB9LUC@O1T^KB8>(A3PpbXt0wy!BqS!)pe<+P z37LFWKxE`w6gHmg2XerqpGG%RJbBpa4d(H+?d}v|gfsSD5F4dXDES?nk9Dl^!komZ?+|uT)rlx_?s?#|6w4FjT9QC- zqA>0lKKvkEp19yiogVpG{yXmPCta$dig0^fhzv$2d;wS4gP=>$E~41>1mmP`oLTT) z3?m`m&g}Bw0R_?fWW69g{=?-u7p3T&7uGt5)Vx!5;i$Np;33mZ(BKp z@LN!Mx0KAJjY5PA73C%NeZ5?68SJ4fOlg1E{!}%}S=mE-r#whMbD34dLUT@5r^u2h z(fS}6(<{4&;?9}Is(X3BHraCKXWy;z_oKL!f7I*DVm*GpY9qanp6i>tLD@3mF7n+^ z$BQdnDj11g_#^hOLGmO&#t@3mMGkL{EaSO)5jQNb4K64p{ACY7`U+g}Z{VeI&MtNl4T~j#8AOV;< zoF|m%gdevkSBvKhYW25l>SX$S$z?uLbHC!nqNr$|nfzI`QDdCc?B;X1R>SXBtTnalp1mh!r@Bw8G^xYFfNs?Qi7d@SDXmlWuRl zzDHL1QM+;aUjp$;sPH0ZU*lw442uG%6H^A3AjS`MvbLfa@GIw+<1tH*d3eDe57Mjs z(9?wDhOMWF+D?1f&)zUE|K_<)Z?6Jj@0dxux+|VH1nNcj(B2HHKzVJ*{{E-n^HML? z?vz=eH2v{6J0(MHCXq^qFHaYC-rqPNF?1>sy^rIy`%GRz&YhE-0rQs*4GUBX!ftKYjcXO`KPuiP?z%-18__s|uZA$^! z>>i9J$ryF*IC^x^N;Zs5&zQL&daGtFDO25Hl-C(~;}`(r50opfdbLPQUPiRn?Xz%k zIxqV9Jr%?5tMqY&jh{G@^tw^gaQrRmld@#yvOtH~91ez{g&;xf;ko0wA06*A#)^DU zFRyKen{2v51Aeoe<=rBSt#CM}baCY`=&W0QBNt!2d@SeMa|bQsGb7YzH8<*o`Z-FJ zMS3lo{KaCbay~NdZ1*0Hu3GHUk2plgCt(St_j;qj%@6&+jEO1EwJv`HgTFn0>Jiay zD$G8op}&5?lBl_O0Nx+xIQo;XR}LU5Q-;|5QOww~ySz&Mm1Yt;VBh@Np!ecQtSsiJ zcw```aQ?!(M!JE#tk)NjBb{Or^+L_!ohka)3X+uTJ(^F&(};ni`5d0J2msPbf)yKG zsWBf7Ky-=sgaAcvgrO4HJutsggGPGshTEhRA3#kHXSs_nZWT1H4y0!}^)H7aWLAbC z(8IT$+P@;H4b^Lx!XYRO*EEfzb+6dRWHs0D3eVyMUgsRSFV)uFA^hEDIZD=&Bq#>XO09W5xydFE@+$Y1g>^@Ms=CL;p-^?SKJ8UbKfo~d!V?*g# z5flT$r>_zkAmaC0^ zvH00gbN&whP@1F_#EJ1Ukk{8>l6fhN5lb7S;lRgh-Ld7_+5NcE_TwG#`!~VE@An?| zx1($oSS~I}ZZKvWT_VzVESwiEyEr8_wh6P1^u4cLB9>*rpWEJt__JOxPR1y$?DrK? zPxR$=1k;pS)S}Tp17i6M^uqa@zC&|LE~7RWp)N_)v~WBaxadC7E?T=I_UyiN>RIzJ zKn_Y-F&>srDjwF!C+b-za~g!ki93oa)1tURz~I=Zw`9H0MxKWS$r4+#3U>m&d@Y0? zAnZVVo*nn)LZWmK$Rt0%gasM=A1<-t{9o6Ni+w>{i?+9``wqSb(9(rrhh5dTTBDKe$2@FTc=JxmFDgc~uHWi32pnQCm9^^m{6ispQ$oo3j5{h($T(mp+pNTju1T5-7NA5CHfQglZ0s97Q z!sa7*N-Yv~bZ$x&`m0A%-&RbCFT3{}Z8r7>5A)=!(R@BI)@^?19F20 zN>*-0<QgC!|# z44}XF{61|9;kxYMDBb$?>NmTsO(z|Qd{`rr*`(NL!5B~?95bp^h znGLYgtY75rnEpUN1;fjHJi+&NlZ$xsv+Uv-iPIe%%JE6qBY&8N1{M}Dvhb|kj$c>( z1t~8#neuPTLz4%Le~;tmY{CchB80pWBpx&MA>3E!w3cPo-WOgc(Fqm{oaP;*NFd{a zWeT4@ie@vHHsyV1B2^}U#OHX3l-%=3*itn&yA^JI8e2?8_uVZpUu`v*9_ zO;T0hOHj*oHpZrxs8F?>*NgzoxjhTVh7~{ z!-{3c2IQ1bi;`yod4UqNh;G%}%|sle9XGFJjH^u-4MDpS$oy05LuV8CX~k4(g56Ww z?(AwBReJgppUw)e=jaTzNWY!)noo;H!z(O2v6R}~!2yDn;|YA&Vbx4fIo@KTV^i4l zy?h=EfRD&A@W8v>p=WnTOn#qu$VbAVwk-D-sq!zAo z5Aa`?bolbpWws3l!LR)9&K~HnsPPMlgCe>S;|^@{#jTd#Gx5I#(CByVMs%L+p!nvn zBsmlTz$!NRh=dWaGJn#!jS=l@^)bKmFH@RP^~<=dP@Q0}2Znfgtq2^V^ibz%OpB_n zv+CZ;Nw>lJL&^pVKj6XAF@Ss4fHs5=`_jmf1ia+$0eX=N?KcUdbM3JoK9gV$2zipB z`(f=M$yB2n6Ntk!EYHEUe(^2pv&^o9fPPNaVulnNF@4VK3*IPrv9HwL+xY63bN1uh zb(>~qMdr7s((OG7M*0-Q5JF_q&5VC7w^POjkqo{9n4JWG~$ z2>ou+uISR2yWiTJ1eXA-@Uw|wNxt=RLtE(IRm<)Y8ddFYgV!ex9-7NtrbO;fAGdfv za%^$3@F}oKlgfl_ih!q75Z;E|9Y-cXE*@_;zD>lPHbv9Z=?ts}l^8r9Ly6NPMC~98 z-<(tm24`iKH6^7a$1H_F1J_<;4-R{8EUTlF0yib2Cx)+M=4UJ41Rz*o<3nh{-Vf1~ zOzBfZOG8eTv9RK@aHZO6y+!<8(a7zh4Tb6nvy)#rcqLDW+m@G6Rl@4Ze)4=z)InzI zOlZiq9|>Z4r*HmsNc3{^J$VN8F_nTPUp)Y&OKvEZx4H?uJA|$KhI(8sq_jjswpUzy zO!)QN0a-$r57FF*HI#t6*DA1hB(P&!4P)TuyS;`UXr5?vulu#D&f{jG&Sm5m*lg7@ zWu8gXKL*k!F;}3@)D(UcTDLjbtLAJXRQ_)-+UN5=Zsfi_O~c3Q>uuRL*>rw~D%*L~ z0LH_BE$&D1fjSux+y$caW1AELIuZh2rK*>i`MplE2kGTHS6h$!0X&gK+0i3gMeuf{ zJBTX?*xXCX)wFzo zzowY9d z5?%}TM$4-iE}naGgqvgFQ#-E*%+IWCBP17lf1r9Pi$LL2#=fN{XAzbpC)kND4?*jc z`OV4*4;BuYXs1T_2k;DO7)T|v!;SgZ&SY+RILWQBnT_FJMN0nmIKO- zF=1J8UFyh@Z5cpM)!v3 zl{IoSQ}{DuS$$eL*3mG@&rM#Q6`VDXL#?|dCrlsyv8=B@&Y&u*mh{d&Sr9?p(XBn9 zx_PcI#A0cLFcAkq?QJbCIeZL_%P+_yek1TPbG2kCE0V$E$fz!ZAvY0ycEv|ue_6d? zJ-O&=&vY6c*}F^a>=3xk{BXD|KF%`vX-r^>M|&_&XQy`}Yp<-lnl0z))^aTNtbOb- zVEVd$NU*Jg5b_b3)XCt8XcJe27FZ#)v`~X=L9W|gZetl5J`MKn(9~C5e-0yK&8Xc5 zEh`SWUyi0G%{FY4xd@bm?ilR&C8Gi$#C#Bgh(8>gE(}VW&l?(tbuIK_^UlnpMdX+x zkaM)^rJT=>3`BpPhgPj)PbiTo2E;)9+LLULyy`Ca`Cl6U-`MZgTG*|-vS7nD3Z)TAx07n?wjXHY`a;tn#Gc|?a*-@vvaI2?>|Uy& zHzL~efHtJ`7tC#nnhbbc&chjXLR7FDhNh;t2-q4lrs#Bt6qNJ4ojUsL3+gi;YqH^^OOK(r|kwcLzpxG#deYiGgk<)&+fvo-&y zsv9YgLlY#dHcjJTu8XtOpaP6)!4GjR$mNV0)v_H*Z+*w9KOzus|D7~+DTRLms{v3S zmUo)j95%Z_3&6JW1P6q+V+tE8oR+ntC*_6ptClcO`+d0~n}g4@*H~K&(HO5~mh$@0 z)#h5g*K6F^mx0QSno{qV>bENIr%|>fk~9>9CNpJ^0a-(^4Vao2Z~sk6hYb_{ zwn!rIzfgi&|4@RkgV^8SDZxuYl0UJ+!hg1flkYLfo;emb#d@&in8C`~uA9UhL@xQC zJ;&R}Tq^3;zLN6`zHhI`k3GQvwv zq+r&vpGz?+?b&jDiQN#=To(VgzT#<4cz6Jtb{kB<&jItTd{|no>ry%>VR67VV^0+s zPcb{)dD*4tfME~5j~gt&oO4>E{c%S;;)cRzFvJbh-A2CD)#|SlK;1(T+!|;H`g_Cr zF75kWneJZ@tQO4|ZeY3x?*0E>06?~Vls0Ie7)l*#f3(2!I?rTlE{)86)lH_-9D6;R zSnmVH3U8JnXuG?5r`f@;xLq%vldFCO0^1#7K?^>GcFtRzf57SFveLo&;uU;S&`dW& zqhsCz_@uww{lydKKh(-4cY591FfY|2gS}2($oU%ZvEXj!WmAm>4yE8>aa)af((YiF z@Tz*z)NB@L@Hog4&i=i%H2ufL>+OWNN~*Hk6ZPKVst@%TQGGWP`BMxg}& zmwu}HI0xx#gn!8pu_M8XQ4Mc4HoaC~B%cJ43UEN(K{%ij9^;UMBZQZ3#DMHDkC)ztgh`j+dllN6NKh>QIkSV; z0a=oR-(OtVF9z3vhV&QiV<%&mQ^Zq!XmO14atcXa7oFYSk8MPw=;wNx=VHDm_h(v& zd}^`!&T`uI79VLz6xh&#e=F)t9=`^`lzmd>4D2JWe%ekQ^YY!eck#u&fAAZxHVQc? zEy>NXK(EHaGTn>iUrase`bI^|aXzr|$DA%uC<>R2aj04w+=y&FTo2z&uvlg~aiSHN zkt1~;w-s1!4?k`z1X~MZCPD^qAS6d8C;TvoW|+Hl+k)zp0=RpQX_OgL7||i-9=x4=P(wK<)E*qPpeyXFQUu`+$eUXFyZtBU$7`*Rv8cnD29M!_0lqs*+9f2SG=POE8L+&-k zJA&p|6Gh9lwsEw$vHVYIUuPoF8RE9x9iK+bjf}zxe_u$F8DCNl=HUC4Lk2*fyUviV z#kTAQgK~tNW&@@K{D!A*&I#W~X|QFEvIT4{S~#Xt{*w?(1H6-q06Q?%PP~k8n7pQ&-HwN!32J?wtEgj zS0i7?8x2_sOn1yDGV?g2BVbo}1J43+f9GgU^dc=7`YcC{hQxWmpi%E1`%z!+W#+yJ*k{8eFs&B=A)KRCn=$~>FB%E z9BgWPSs*kFn)Q5JN`H9fkvfBAYs;`&gGRi{@nUqw)z6B9-uLT~c$1WBAss~^E6ikS z!3}%15$M4)vdoHz*xcyFGwRyT>H6K0iH9lr`{4o7?s@QPv%p+%5c7CvkTjmcWaL*`G0_o%7^ZHQspdTw}>Vd$dt1R!l!h7I_dff4JCLXRbv4S zMPZrpxBG-;Z|%dRqYnloU#XKmHa~}ua+mX1<({eEWAh#%jK()(^H(RWRuB_H{>%1F zb`Va|T0SHQ|5ZF$JmYPX}c521#c-ZoaSt>V|HZ`I41%iqqub@(Q$Kz}B& zockoY?aOt%WL2jc>RDenPxrJPc!GzGNStiERspnz4L{DvhB8Q5E zQ-gO~+-S+CPtHTH4PSsilv^MpjoPY~#z&r7kos*iS$NhQp*vqi>$ukzdot?CTq5HZH zFU9bo^?>{mnCld5+3CF(3O>9S@ZtS@0lS1EbC428T^a2~niFb*O{Q8d-p0+ny(>_R z1X}QSdTkx8UKl>PXGaA1k(`6ScCt{pm#*07?sz0Sb|eJ&eYLp(-WiXNE@Z&HJyzG- zD`H30T$t&&R@>$<&;$hA#rp9N1|i16GlA`;>Ylbsgi3#B@hlGU8x_L~zx>g3w%}J$ z1igBU>JBAh{<{7Hw%;J~lR515(-AR6EG3UL?Y6A^Z8JmFxDz-3PqO$|lENbLeb78o z?;7l`#}2+(H>B9%sZXp{CJtBn2(7Skm`VUQ+r((=E7*cs;ee1R5n)0s!vfeDtZkQ^ zUkjgjlE*d%g(r)@?jPBX>H6Kc?zzDJA@JU|ab16QWv48l+|d%5#Ch|3-u3xpiF=)5xpea z_j5Y`C#gi_|BtM%42wE?x1~cGq$Gwer9^2MkVYgWl;Ghg@Y{jT+{H`Y30?bj{^5;k;EN7teIy`OU=0vsfNTQ}cc zopm!=gQgv954&(6{ew0)SFjZ7UN;;nM=JNw+>cqGZs?p=PD(I5S#-?&dTk3mPcHq* z&wu=HF<9pE-j*q=y{@z%E;X|xXhmc$ru@wfa?@e|^**SVllENU3h1da_OtWxgP)Xs z-qdku#jg383rOP~7`3h-9@ph|Y~Dh$(~qZ`T)%P>3C%My8Wyd0Yl*|XM~tnfxda{U zRokwwJ#TiYmAtXd(F&qOzt_RIt+;8)y;m2=ELEaImUdg z=b_bBn;7vgQ+7je1sLJ0z%TrpBfl7yeZEkpllpG51NBW3pl0J)VyLYf854mAPZDt9 z7{~8KS8l5H-6ciwS5F4~gc?$P+97hgbn8v;IDm}R{I^ZEmIbiS&vCcW2P)1iBw;}0 zd8vEPoAt?^s|X12M=PSPf(z_h0&w7W#LVo}O|3(c6Q3(6#3vKLPoDX|jf@`5Gb+m( zU`!f1ZNsr%`K1eM2>&#rXC?jrgjCc*(`SFHY?aaMfhZ_~5wy3}-n2Js6pW>jRHJ`u zZX;Pgq%Accm2n;oW$a>(q@gh&m0El}%j{g?DV*FNN{XAd&<%=T(_HeJXFW$QpK)h4 zxIDdt5T@-K#B`v^(o9!o%jQTswF!jiW*07e5Ao+b8^~`mZ1|9t-~k~r2kr?~Jwo;^ zyn<-qT@WfCv_ITaPIhcnNNb%oouMDsfL?G=ni%qZ+_D@Iz_|PT3rp%|4FtLs&^rcQ zd*~mKDxTh;R&CGZUa;-cbLT#E&+P_+2BoqaHU*TNPF%UKJ^MG?Nj56iJMNZ2T*z%p z(60n0SYP*9>+K(y`{vIa%2G-2hA_S8?L7cKbD@jnkAs6d{Mz(9ZdZZd*F@~&uBzAD zq`aB;)+*br$S=@XhnJlLU4yEWpp;JWJx|%pS8ku@JR6sr=&aUkR`{rEje|MURl43{ zzZ3j7Rr{K>a^3YPvj=_u1`KFBb)|~BduS1Ho41gKkVDYIS>4#!iuVjr(?k!-`&E=X zC`2{k8~Dn9Rd-2hXIf=Z+CKdpiS2@O(*t#|pkJ;vr>Dv6^bI~)s{gS3Jtnxx1G4bN zp~D1qY6tEYvwF)BjjQe z*oHyTub-OT;%z^YKi_`$&ENrPm4K^n;^pPXPkgf)Pl=oe!Wj=}n*I9&x&cDw(vUnl z7A4s3Iuc;aTHOY5P9BIeuE5?n3BAxXxp)mUHG#u(pOytmc4kE?+UNI4&&Y%fXDtr> zXvP9%m~!MMR0_ZKIAs;6S7MLR{S15~>C=;br;`6Mgnw82-B-IPDVmB2!~aJ$MNy;w z<&zLXjNV?udN8-Te&g8Wmka*6O1tQyANH{f*Y|CAL>Cs$YZ|6>c~Yk9Kg9vuZ*i!L zbzXEWcj}c7Jen9;zh=Z*@zGSHl@QS5sJy5Kd~D3d!X$u$%LKWT3;~2@6E>&Y9llcq z7mWk}U6XSUU>wRO`Kia=SlL#?*}}V^n?S&9SL@0Ea;sPh9~alueG&MZ0wKq77-AkT!aBQrTr0&AB zH>~+vi&_t@`GW&RflOFsXDc}rVy#zLwSaxKcRsv`Tjs8ywJhZ~k5`bJA8s zO~hw9#9BcMv2H)KPxF)l-Y5cIzCTKs-96z*q4Y&0>HMi-Fj{>l^&gG$|3-LX>c3lt z_(F$r{|Pl-(k!%8jxt0~p?ej-&|tz9TxcdcUw7$(YQO?VG?J*gpg$&NEM6rUy59%t zO)bob*zeecG77JfGt{W#myTT1S@q#A>-BAfL?qn4Lg1$Y=IcAN@{2A001j;L?W7e! z`e+G&KUBjEdq3;qg1Rj)3pp6|#S$#m{Id&i;9SS@GXilh?8293a{b-?@)wZHBMS0a z-*P!>9y!cEqUVjr;cs#F2;)u5NXr^hN%RVuVm;LzvCzHAy&HB0!o|?Qy9&s8iU1l3 zyY$B*Z6zrUmCeAQT>EGp6{-NtgLIa4QVmYceYNm2Hsdi=Et0oH2v1 z@g(s-JAJZzgS!5Vsh=C=)8I zcgc+cN6XKYWVgt0Rn7BU_S;-Vy+z^+-ty^1HY5&0|#TTY_dAW zs~1a3-v%V{bHW?1m*`H~0OCZ;{E}9gF3nX8F)e!yYYsf8FxzRrZ@hBd$gU{cMM`}m z=QKEshmJ;iR55|ZK8ijdxNZBFOReojU(AK^on53MEm4icDJ-?^fZ?oR-OLn{0DZOE zU{)46Z}~K0&|?25TXc&>TxA+^5fU`i9@td`BVikOEoOP z2Y`;XgelL+8}~ouF14sj4n=Mz>a=sY$MFi+s8DcrVzn_x5Hd17>t35_SiOCE zOwl%*Q*|ouKfjzLCDEx_d^DaxVd+nnr(MN`;#Qv+F_BkT8-B_6w3Ft5IAR ziR(YtOY`)^ZTn7J4lt~F>djR_ThQri?=B#SV)+qoL*PwNP9Wk;V;*}ujt}J)%x#1h zbnNC&yM7x=Fg)`DU}Sz4fQ;HqnZVVlUwF*_(R2WZR8fDU;8Ctcp+>JejjLg$@7KLj zg>({*H}B`y!fx7IAE7qBFhAX@s7wVHbqhvO+6vnFv$oE1$cwtan_L{wFnmlDboi)T zm!?5p)}1F2PCt1Ox9@6XIE>wPn-#h~7TTf8tcmv+BSPkXK9ZDJJW%A@$)}62Hu$N~ z5x$T!nDV0y5qRZ7l+rEkL;Fqcy_)7d?|Cu|&E^NQAX8!v05&dXAe6T8o=ZOL^PgIc zlu2fxJ0t3!VwvuQ`lkM2*}l`I*UR^SO52mly6o#I3TNBnn3a#u34Px2DTVIv9WNrC zTh2d?IB}C-qP$&m7`!LZy|0o%zjk7cuFx$Fvvs{M`CaN7I?j5U@7)inGPh4hSfMNf zm%HcU=k+#K!cpbVW$o5Dv*1nvH?R-|ms&ZOpRh%z;wDR1 zf%S;fvm6H)sfiW5ztDu>z7sGcL}mWiw*F-~adzu%V&qFGiIjA!UfhzXa&UX2-nuaB z*X--4P(NS<>n>@95r`&NJe<|X>T!f5`% zdyi{rVTKN3{(;v&JtWfbARJ`lixCa(K1sLz5X&o1eDdi%h)rzRg&l(CY9rsDL9ZU@KO z<|1|VgO|eiH*=NbNXBr-@}@O)_&Kfe)e1Q9YePLaa6j<+*!FCL;|cTkS9*)a3r{wM zawXQwTkmWaE^M2egRLg2lpYco?k+H$;Nj5f-JFVgiL=&$HQ4pd;=>Ivx@h$KLJmY( z0>d9jQlA^%r+gJa#(&VZ;fS=kq#kW(%V~)UWQ;*h`F8C@q`_(YFLN!yW@Wiyrtnv- zup6$-=hi~^zd?x3wfnA_O3GfEwqW-GhWa@PELbmEMb-ZIK;LnzSaP1hX2J#6))JZr zU-!)oOjD=(O?B`)g$T>-3jpt<-U}kmVDMdDzg7H@ec%4VqA88 zOeZmMjB4MKp#u{0M;9NN*iZ39Q=jmoLqCcP$_2D(if^oNcLhF~$ zWG(_ah5h#Wy}OseeZM9B7r9zlnFdA!Z%qA1B~DK7gPiHqGOPwHB_dH=39m@-{k^d% zHJ=eyn`vc5(8IbLk!54s2Dbka^@KELJ8=zxTNLDAWyVjKT5(85y=^}Z@KizHtM9IHU)W#wH!#zhS;SzVc||N=%wj{8jYk? z=RS~lA2IkG65qWMUK&*Q9dN5(C&(%G>DS~O2}9jYpHYe99Ml0GIZFG6wV^K$d!5W+ z5qR+%)DDhI-d|qpI{gtM#J{7KL^fTMq?7o{-bAIDm*r|~;8%*R{JoE0F>=EPrw`P| zk+&OdfVsGpVyEVqZ20EQ;;HXhr@Q24UmSP0DNf)Ax_+PSjlMoi%pSosbLmc_PU?A* z88$UD7RK#YXuzjkseztf#Pc-_us)Ab5NZTFyGEH1XTQ>%J^wD91zo%djggki3hd6~ z;y0ZXK{#rxm011{BL5dY!@2(wNDbLvR*ynDJh490xRPdsYotZ;A@;y>ae5c$@zZM$ zG2%2(voMefp zqjgM?sj8coN!|B8^K&mg_+zBB|M<4|bZKt=S-@FTvp+JJ`qbGLbYbN*SGmF``wDWU z5%`<&>&s=6$X`K{P~cd3)2XfZw0-Wh4t5Ik)zD4H{g^NQ4uPOv@MK?jgEGrd4Jp4{ z>;36{Wguw|seym%oAqQO3e^K}a+2p)<#{nKD^rZ{V%mFpgN&E~*6k#{b z<)G}chtFdJNB^}Lsm|uJcj#C#FtVo6@U^35J*RF=*n2o?J?z#DqA1drJ@fRE+6xlq zS5F>u5O^Jw*!E|i)mdr94Ml3i=#%+1OPJPhVnKV=B!#Tdh0n zE7!(XS~QzallfHGx>^0FR^yDGIwOXCu;lZR zwVNrSV_RU0?6yI@RVjnSw#!K)ZAD$(!1iu4m&cw|IrYVJdmvyLCh2oyyF3Jt?5gh+ zCQ-vuakDdukt*!Ce~3FCLBjaG?^ipjhf+jp=NW@a+D;lp7PME|CM3irV6$QiOX!9V zOjXG5v=t2phHt8t&l;DdZ@=;{)Xf{aSXS2c%HE$@o^`E$pD^(Gw1M~M$v^@7>*JR7 z`{Y3Q&xz#%Yyzhd-r^<0b;%y$k5kfz5LfIhK5|kyqf@4&lHJv`LkNT_Y46Q#GeL^a zPD-ZSHZ5+BZVBg=W1PLffyE=c!>umI4a=}0b|icb^L=y+eav6fF;ixq>?OjExu(m0 z1AI!eaSwnh33l7lKRdhAC%EEB^rqy}PD)H?+ktt!KPM zKb`K_zsOza?u$F|YdNz3JWS#XW1l(T_qmxkKXs!<__(^=hJxVwEhncf&KHq%OGhSN z(F`aZ!D;b12cl{KSqyZn*?M)JDF|?CntL&d+fl8N6>*Ce6i+Lns1XG{2vZRQbb_-) zs4d6u#!2{UHL`B84QVdBpaWx_6j=V2@+(w$%V=($uH`XEhr1GE57Y{>!g`?u3E0*VgPn_(Y zjlB6QS$q?OlYXJtOLF6o@oS7XuWs>sKQozG;5kUyzmZ7jALYQBqBIKo#jqA7m2Jy1 zRoDwWg{>#}z=fL7sMb$$f6c}S-N?7^Ts%D)^+3q-V{>fJj)~M++O+l)`yGS`2lG<Z`KzN}z#-{7gwL|c#PVu?`Afxn;fl^U_OxdxN4|}0%;F%pkoSDsO?SV5{}94| z*=+&*5rvy>!Q#FW&*_2F2EF{1dw%B(jSPY;dof}hhb_TgZ(lU8@H~EGRW}{)xcLA!DMZ=^&yjkoXJDvS$d>r3IgeZXo3`cqec$X6>&f z_mxr*N}X7G2MJg_Js!o4GM7#dj>BAWPq^%QE6(h0X{F`%~Nhjdm!fLcw{<=&!5$3x&f8zk(TFZ#pXL?sDmWA!?q zl`H63&c)V9fEeIeUw~`NURaGFV8yab06<^aAAs^&=HDZJ0xDRNdBg-SP_;!kThv)D z7yK@@o~PilYBuHh#5u8Z@>{3=-5-yMAA`?;Ze6nnf}}6- z?whH_R~`hSq>;-D!$FFo&Fl?B6xSXbPk<7)`qu{x+5NzT7~aVp)(>eRF5Mv>lr7Qd zep*(TUU$5?VS~*JoreNV>WiP9JUfHXcBGY=y_y0)3>8B)1K1JR2&d|EHLq#~Ad|-X z%S+;f8WRvR*MD=}y9gA)y^jc3Gwkd-*)j{TY%w&isTNT8RKVa3|_X`6g)QI4N*tnNLnt20KUbo^@7!jSM zvNEQJgNo;I;OWZ;r49oc9?c=@_&6#-HaQgui$}7Zb7Jo>hPo6#tG#FQi1q$l{qe+0 zq&L8|!#PR2=>=EJHUUJtDU#~4i{vHX+576j?`n%HCO+X4 zxP=0!*N}ae22VG92p~4>FfRj0qF?V>`ZD`wz#A!i9&+yvJWl#EKXlEYk2pP*#P1Zd z1RMKI^+Dd9U+x*Y3=qVC5^p!CjPgtp39yb9CDxz!5CM(3tM=5JXv4yRO_nL4B(MgyBzVAh0vh=Ws`&Kuar4dIfw-l43dzO~XJ zr{LuTv=FTEb;vYccF02&@A1`eT2emm6|@^S3914y9P5J=2&lDT}{OixWRj)7078i_9k{8ZeCOvuhoT(v?zQO>pUq_%hH;pvPt!>6g#uU4sE*3Yq;D|0oj|(}osXq1ut#WN&GPmB14x2h$ONB?5C9pn?+v62=88pRD*^w)qN94Z(KCu=nkTz1(v;`vMQ zZCyk(A8oR?S4dtlNw)n_q>H%?rjByyW<;7kq`53n>Ki+PC*I}VnjOw^3!B3YMsdrI zrxt5Yh@CbSD~g?}O7}3w@sBD*RG=>0d|0O8Y4;9gxk}J#pVrF=jZe;E&Kdn30oe7C zEjyejF&LE{reMcaj;(xe?5sSnnRwBU@VkUqO8YJ_1|4e=+SBYsS6w&jcTAgj^o}?c z4$)zI3#_A2V}@S?MUgl;G3;y^;Bqaw4A)DmchQ|W+w*!0to?c_0in**C0_i0W}E&> zKGGOUSyi}e{?i;CnR%y_f1srXZ%H*=6`^d6oL{}VXwbh30(+v#&&km#pT8MJr+%+o zPco2<@5+T>pUA1Ra`l8UypVTlzslxlKqAYSuQh>g}n_8!z0#Iep#amztkzw{wGZ%NlSV` z$V&c^h|VO1U;=SI!oaC$p(AlKv3-WM#L-}b#a!pNmTmYvp0}!6aj&oJv=$E!_P;RH z($O8uC8Hk}Va$jefPSo0N?zZMi?qb%{oqqB0W|;Y=hx|sU( z0S<&dMaJ`jf{J^`ua}*yi{Y#I*I82DQ)uZc9q2xKCcabP6AL!0Q>AI^scLrR0<$gx z_8ukT2Cv`m2I@1U=ZK|ULB}Jlxz3_~f%+s3Y0pd?fX&D5_xlI7%ur-{+g9F#TLXe{ z`Qx4EPJb`~;@SJwLB9K;RG3e~!&UM8QqP8AWEzIYrgP7&k0{@Z_?i=xtAxqKVvos# zD%%66OHy7Es;2-|M;z$mK)i%qvQngaUL~b|W{hVKkp@EQN%;1kYe%nBzftG+Y|8Hs zj#nWd;rcNXa-}sZjuH|&HBsPXjO6eM#cyAvwGtpz5DHwBis^=xbi~h($&iI`Q9)6o zd1UNxd6WL{>93!2sNi4H<=CQuwO>kkSF~nab`4!0t&i3+G%Wv?cKb1bTYVN;Dp@V* z$tESoa8-dkYB&b)!E9U2s4u%Nbn92I4VOv*0pJJ9`h$F$6r{+Cd)dRj#V9V!2N_0U zE^XjYR)tMM!NnTMs#j4Xe0`kjzz-UVJISLyv!r9vD^6u^B!#mcLy=Q6dfhl0JVj&c!;YW2*k744&=&iZd;*|!pvYW89!r~Md;U6a}Ilw@( zG#P(6P0p-_NRFbWvwEj=SHg``gy%0_rk-mqr*flM3SQUsJTA-i*^Zid8_e=xk|3S9 z4&5~nL`MfU^l(TKXhEk=PFwR#$cF}#NvZLZNUtTfi-8$#i*KAt7#^xA4d(QKz19Co zp&sP^f>KZWGinSu#*juWqc};vHVZwDb?vr z&-nEreJseSd@NgnB&LY0v9hw>xw4CG*`|!wEySGQ=b78fVD_j1kBy2cj<%=}rqHoX zyTh1{7kRm>y&dMPL`1RGwXm>H@rUsMf9`bDgpb?|v(&%pcYZ`LC{98pd;BK%EqLOM zUDrm=zW@5`qkdpM`YQ==9xnzSE>fw)X@rz(<)B22Q>JYy}8fVdh z`YsyN&zHLVh?zHr@AOyRl#HIAqH45H?RC06%>qE-Id^)mI5jG2%%F#`j>F3K3<0-} z8p=L612p+91IY^G2F0Wp;`~$%wb^kV>ZAPC_~?&SNBDgg?HqYF(zL1$CmA||nz(Y@38jnO&JiY= z^qG-i(3IsPX`7oU1n~v~wjU(n?u9TwU%Aowu3K;r#~*`mwkXs0!tIp4xM=B@_|Og@ ztBAX^}7|;7GJNVMKiwZY_ zO#{L+wkNQ%uBu)?dVjwfgjkr?L0`-UD9?OxW%#QkMYC)Oa&=5f7FrpNqeaxPkO<+$ zGE4eBBbV@>qnyI}Lm0u=B`~`gC7t_p$wZ-`7T3h(o;#Cl)YAfP%!&}o*mQCD=JKxj zdVa?hzdazZs~c5MA-wD|pi7{J^2i83Dh!=TNkE33Tw=V0WRa!ga%_A+YAt-^dKkLp zway5cWQUWep|V}?%)2dB6bZ-BEj-b921el0yJb7HjbsMU* ze7q5vZN4HNz4apG(TR}FZM}q`i@YmlobTZD;6~rUbcOnLo~BkWP*Lr0N5^=_Ll$wj z@$FFqKiP00*P3kb5C}9Z^TjA}%c=RJ{%+z&DJR!*OZc3gWK#a24Z_h%DxcrTYQc{j zWXzS%Mx=`VRp3boqbkh^g}%Vh2eWTbxi6q_4Vb)A=_?JVjZ=Xw5}f-{Enq>&UqJX< zLH}QOOO7_g#(AWUSwG%@-o2{0j+LaSf2$%tB@$F6uZYPzWVV=2FqE__OjNc#PIh2{ zkrAhJp)*>8*r48BGS4w*+pIaq8nTAHJel|xgy1LvFH!g@7<4&4~w2$)X29n zTeBaCHaI$x%i%owd~8QgBHlmmn2YZXgBP6?cZrUe5hq-WQ2~zz@KhI#L3Qg`KyUg2M$N00;y_vkEYwfqzG zXUTjiuVJ=3P=jo@w8!NHmM2^|;J57vtE^}mvLVFY2fuTh>g?9oXXT0c*dQowmo;S= zq1Sn?K5O^R8QSE#2#o6)@h0nB=U$$n;r64)1Wn3e^d8$M5)*?bf`)f5uqHPM{7W() z#8c?mRzozzNC#EYcAAgF@Lrj`)%9fu+vN*-X%#wcsxgQ+t`~F$_ZP`VX&eVvox&o1 z6%EN{lOfGLXo6A>FckNvVfifl^3mDeg#b#4mQxrf%YVd}eL9R(*csiGbt9>722M{^x4O|BkdhdkrCsae&Pftkcyn=aDfp+kBm^UYCH zf;V(;e2PaXy)9(NO=%pRzLMfU<}Tn;otKt=?AfJC8RM;Qx@eurQfAkEl#A{bT_4Rj=~ z+%=aRGEi)PY2CZQLsL!qgH}$b|79}nGe)CqpQLinbqP7!-Vsv0wEn{Po;<=Fg*Vl^ z*W9#%HMAXu8(MC$@?$;PBbe9#Fps=O-p_)xM;~XKMlWr z`je?2w)7d*k1$df&u>zURddyjP|QAhGbr>OYF#~+QnGOo*8trzvX^BDNctUTFO}2O z8ul6h2RnsoTwCJ=92ZtRdjC0(KTqg#jACi_)RX>eTbi`D&RQ&bCA}^L zLb{sAmNHVPqOASFYYF1JpcDju7)|yX0BZjDPhzzGH!)hzvzq4tz3TF zS{b>f=6Urzl=#C>&cMwlEL}5fEb<&$8Cm+0qB0c_2D=$&zp+$1-tyFEcROz<^GB$E z*+Cx7(N0GPy?~J<*N)bF#+sm5oZxHNK0b-S82DZ&*MQ?DyUNYn{3sAUwG|=%<+DQO zoDKZ=h*k`r%ZwaP3o<0jEJ0_6pY2q@cIrpWJdM=z-YS5V;+>X?T@2)1&k_%Ng zrk1~HCTm+e*i-(^o1G)?u*U@LB*;RVUbjH!d9B!9-`AomFaTFY8@mb!rr*T-=&AZH zoHBGc28F_&_AvT$AIcpsT!p-lN|3O6ETXkAu$ADP? z@!LLvRVQ!f6yj>n>Xw5->SqjooU>Jb(`hb@3h_XnfNy~$zPy~!2fa_ypMEpGCpFYG z$J@Qh_30AQa`yE~z0S5(w)(m8PLR@g2a+Hi%bYDbT)$9CLHS7Ac0VtdEW zwhtfjq|bZOf%!PQSAfgUi^k?_1h%ajrDs4*+Gs|bl19RMGHoif~2kcw#n*Qeo9)dj&Q3pXz0Ux zQp>Nu6hvtZ@LnwxKmSVBW=Z8dPmKG(^GNLN^v~ldkh_Dg(dV8p8np{Ig*7(AqH#Z? zjyRq61}pyYO~<=~k1EAy>c$Zy?o4p2juO$l*sx_=DMaQ~#t%IdB*QC|WY$f657t3J zX(<>PTl`T;S}Yy+Y@7EQ&A6D66n$Kge7pPwPvxu%nK2am-5rXFhilGvs=mK5OJcOJ zaHW<~*~B;obM}>>sZW+a8vm5=U0tvruT;G|IUo$u5#K^Y(LZ*==_&FwzNI3GoiVS% zyvz|O(G%3Iq`%l#AWpXv1Jh_euB1@#N!iMZp-nc=WpYr0+@~L=&XRyN~;=sUp zzm0&r{TPp*M6!CvX6c$T7mb@Q`YC&vdwDb}C2Cl>EGb@Eu;d%17^T_Jel~G`>6Q!> zPp|c!&r4xckS)A@QxLRtu}*CDiBbItdBJDJVPZsIepx&gXH(W?tp<<8oTZSPt4$=N zzA>0)@0{hM-jwf&^Rkb8n&4wO>rj1UK?>|&6|NptwVvluG| z+!|p2z|YzHK=w-}Mey2#n0Dx1n?jd^THClq29hzo_-(eSjt3`|4L%euoM8@lJ0u3K z*g9}om~@!?)k6N<=cI;2I{4@NLYkGImQ!U)780J?y982bZ7QKdWPG1yf}VXbmhrZa zuD+7Rs~+Q!Z{~QO+zpVqsyMmw_9$xgoZ<##!tAk~iQ;haYJoC#hFJ3nmX@!^m4_cb z1rF@|qrjuHMc( zSqFv3b0DfyB4m3h@Ex?ZK9{S1VoR>#6?w02BIrx#3;~d)_8s(_icxAiJ5hBJ$penL z6U923Ntbs}0O~-KmfD!lts08xg^EBrNIz3n_&ae5f4+g`>dR|$ruuUc)2j8Wxm(-U zUiX@6_I1lGY2fEfY4|@O%;*)Suz+VVue^7?*N{Yd`F@+`|EYXp2Dh)*I=o&MmMHtD z0x5>w7`FWPE`W`5A@70MG(l?i?Py&72zn6yGm8ofF^cneOgk379R-vAw~Dr_!F&p{ z5un(HU#Ib!v2&AM-LU044Ox?--(O_+Z~jOuyP+F|s2Y8O$OjTB7t8b^jhcGuBl?BERrTqD}t~CkGiqPuP#A zr}ERmo=_{Ny_L>p7+Zvc!;lB-F5%*1z?1C8<7Sl}ps>LUq;Dz%W3!RZHcoSP_Ea)E zrSIz^$)sde&v{$^r)QNDSh2n(oNs+Y0oN*_zRhpE#B3@YBb6P4#(kH$j_NY2n#$rZ zKhe}k3k>h5iO=Yz>_JYoB4zD>K%Z|>Yw_SuI|+*#Ziz4% zUczfVypno>rih{N9E&ajGoqU?684)lh=+rPlt-RB=Xubl%z(9ub@JKH;Fy%tJ0-Ij za^2X)T{q6}^ozDE0qhRV(mYcf;!WOzMS*_o55{f30%u8qt2p4;m@5FzqB~$WXZ`?y z*uSf7;l0_V*(V&ud;*e74yq4;mk8Jtf536y+}=)GpZXpT_aO^6tnZd~uy~CFZ4Mmh z=u2d#wK$)VO+`9HA-=CaMVw*}=8-mURI9=%;{KDuU6G*rOm9f;tBvpo-(dyZLPo^O zCF)js3MSJ!q<`*A#R~c-5kidl;cgY{H$z2z%sUI$b*y*!8fxeigl@9jj8%Sy1>9*r z#TyWI$!eMHA9dXoya(q~bs3_rDwfAWw4+yHFQ*yG?A&`-UFNzi_P0oA_zv|g>ll7o zrAUkQR#l(x@V$6b$6Q8$Kb0n4^2O)qMF(RR8rcFfe_il9cr5^^T_i~q@%#sw%V6@) ziICpfuJ(;$VqJC!!*Pmn&QNf{2VJ||hqmn1?^uU_Q&KtHkZAn7_REpP>0YAWP;g+5 znz?b-T5=nkwMk1Ei4~=d_Li!Bf1E&_O%|r@Qjrr!APs8Q(I&krP1)NWCI>flx`gl1 zpf~YFqz|9*5_2}0bo=J+B$*k>TzvvfM87FNw^fK|n${@z?3v6p+3z`SLnJqxtRbGA zmtXS8nV$5I^d_8@`A@OF)dY)FYZB4@m0FM$=L8dbNAIk6W0s%vCRj9`u#P4|_OY1%P6@IIr6blNPKq zyA>&V2FpgocQDF5Yy}@(qS^?8e$}1H4r6}W!&~bcw|P7aF}a>C5T*A2>}GTY_7<`s z-k`;9ztUrv;uqV$BIu6&>6y`HuV`DB5q9Y{aMn?rXLk-;eVFV*cZF9*g^edr^0@pN z#@Bp-lS3!v-uo(Lr~1(*JRGLsx5`m?>-@%WIP zCCxZvJ|hJ@9;z_4+TM=>Y%IxP;fehHmRhu&f^L1$q2G$AKEF@8JJi17pv0=@m@0av zv9N3L#k*-w*ZyELuliMWE}zdkR_mSXn!@Dp4}9(_5N6LX4#bzX8g~wj2D452?IH7) zFOz-6oZ6rsw1<+*fiAQACyx4ozdd$y_L$dwRX~;z08SB=cL{yYD!Te4Kppq#zAIj< zm4igV=gAEtN+htw{QmkNVy;7T_NB4uhDbf%!pV~N{?F3y6e%@2{{ zB6Oct(Q>UPR8NG>B+w<`$F@9vI_kM0gH7g9^z*B zzoF*GgsmwNJ~&LyI|@V47K#r8{;eclD&=HZrPP5Z%o~p&lgpz`#xn`d=TIKWlgr-| zwS`ZJ-_D#D06mMmy?=$ett#*o+`#HJO4-H}0x$CHevYrl=UOFY6n7RF!v8a~1n%4f zEU#{xQIH6*^#c^udPO3XbDB=A(_jm6q7fhE&Hq3-Xq@9%#r-8uZPKj*hSNv>bXdIZ ze>}VauwM(|`tstgfS9yIKDGexMjN$)2g_X+!}Ds=2d=`m=<~dv{G)L&PpdNLoeTtM z|N1_6Ix&?c~(%PY>@gbZQ-*eDNcV=UZ zV}d(GzQqP|wMNULDkq8}`&(jv+)d5jM*SNW`rq9d;uvq%7~_VN>92@m;`DxA!}+Pg z+6Csd$#IjmJ5`IRpELIpQ<^F}@WzH6Y2l{k)kK-%$bi}26n+)9e*3AM(0P8<=#_yE z;7$0?T;qZ&x-rdJEp^=&!Im{Ni63&b)r-_I=jb&mjHx%1UwaPgsNT`RB|dh`X!jCa z$$w9k2zpsQ z?!XvX_yp9+&0uy#(3K_T+tma0u^%J=ZDEYT1oSGf0QS=gmz|ktl>pe3bPN8Om`fwq z+`m#UO8?CxK{dj4kmRKe{cWW{qxO9Nd7H*jjrXE4X_jH<5S$#l$X**e|7hm6(d17= z;8j>&y||Ie%xQ^bontP6IU{o0^_y zQzK3%x=QF6hd?bnKhfbUK5&ao443A!qJetjeTf77RQ5mr3p1&CFrRIz?H3M35hg2r{?b3Y~7 zcX(uru{0_vzntsE)qd=iOoa)bKt3o+1Dm4Rrsn6cuetK&hB9O&^L64M2T%7~)V{={ zLCATtzwY2Fj|42((BjB`FrI}SSuuF1IW-0-#fdL&V!k%H%V*P$(jEQ}mNJI)0Q;p7 zWDztTzKJDUFTp%t32kMpj5I%FWzn*+kXi$DYYkTgf`ZY+B2b%KJ2alC%8s<(cd?0z z4iyP`EHaX$$a_Im-OodakTho{xhO**+}xn)2#j=1$p{Sgfp2(fOwSJ(S&}%3?Q=aH z!poB;MEB2llk9<-vh(fm5YGkMFKv#d_(4DVVQg^ws#_x4#q+gF z3|xLbz!-#oH*`A%?HPTCv?GyoUAF&K-pZncc>ixA<{Ge)QXU=r@>Ck&PvKlZE z+9t;sOPv0Edo|MfR{2$LFLC0YGflVe92Q-^J88=L%BQ)|qtIi+4no|5c3tt*uN2uod2?D@tv669f z5V-F46#C4(XxR#XV3-zrOye=sH-)Sx4xQO%EZ-6To3&{ zK@}Mq<||U5g#ypRxI1$+>@mPjHlKiGl+DoK=?3&105Db2Ws;#yzmyxtg>Droo*(fM=xWPg~1jc2J`jh9?&TF+Xc?NT8-3VXP;-*BuWc z$;zoPH(7s)&~0DNC8$N`yZn~Q2hoB{l8h^KijTn?->W{Vn&j~6^{eKCgu*Hp1y$XL&u&kAd)9tV~GvacOge-e3{v~cOrKTJ&*mPlxIdEly{6!{m>gvE|x@OR$Xpc^&7xlE??tGUV zg#MAmVgKcUz~P^cyZ4#hzSgHdMy5+u9US+N$^CXR_JU-HIqjL#5uO90T?$BCM@U$r zxsG1B>V{QF7c1zSK`b?{9M2azqsl(PgwrU*EMFwfqn(dca0JycHzWha12;@t)CckT zZWqYuJ&F^6nb|d;nI%okM{x=7nrx9vbLw(C!ZE{a7cgxKaf2sQrx@s7&R_wvk$|W> z*Ka{9x(t!(IMoapn{s#IB9<7>qdCw7p9rVWt?nY$g5WLIQ>n(x>C4o?&b=_N+D~Y) z%inhKRbt!v3EGU0ivP7>;+O2H~_GAw%MJ(%qm8Gy_q((sA8r$$zf z!r?J(qV`3^S5urCka(2K7ZNTAdz|Tl{dD?%L_nz*+iL*?6<^bPt&}8RQ7*hInJYZH z&qbGh!WdJS8g4$IX4Q<`|H_$w2_VV4pN>wVt*9DX*y@f6&8C5PfL%Mg%Gea@7|_3# z4ZWn+iQ&@oS~0wJeuE+i zAymKhVU~4mQ<2pw5>%@qBNkTS=!5xWOlz4T`&Zz5Cf+T6D9V#sG#1XP@=%1}(bPFc zg{t_L5jkPDn8-ls*H`>S8lagqkn%KuLI?iw=hIX_&W7MoPE1aL$RU-MiHeb_i}~sY zRm||WGX+A0ty83%7s$>(ObH9by4kgft+tgPVG)&P^4A@{e!rKez05i6z^K7aU-}mA zCr2}b2saV1Data<{!k_FmMrk)Nyu{0KwtUkAndnS+gmaz!-VVEDu6$?_0N3Y=(QU( ze8phjxpYvO3_{aR$FyMchw&;JeZ8$e31oFc((N$-t(_r5u;Sfm)WNhc?@RApXoMiO19MyaThl$5{8_Y8GuMR=ylOKv-l(~+gs!|h2ZZwjJ@l6kaGo4}6=n>2&hZYl6x zpawB(cyGmTEcPe+(UiqIzpb3fxkFoTP=_U7ovco~&~K`Nr}PUO*p``;t@glwqpZ-= zm%;Sid|d8+9Yq;%_ua}B&;8u7Xsk@Ek3c%}?;&ZTTLsx@d$5!LSJa07k{J6uIs1Sm za;Vn=ePD}*XQJ7f9%)JPS@2Y5nCXuOy{hVL6GGCk?%QRppLtf=aYROVBF+;SwyR(I zR2?Kq>_}`Jw@iz+JixS1lua96TPwyVUnL!8>YWp2g3dVd=rrsn?KFz#AwRDS!opZg zi_3cXXaDs#-oW`ZbN2c(4bcx6GXLgwiek*|)FR@Jn(9v&h(e^`#LncWH=%GNF@?fKM{Za4=IhWUvgwpqC1cVW*KlwNbXnG}ZXWP>brC9s#obxi0{i{|t!y zukI!ySPlYT?yy$LAH!2WanZ%tb(@>|O5-CX%9)2pMaaHxcqa|!c-Mt&O5t_^pLhh*U3?iXXUo8d&3U zWD$%X2~Bn_6eK9SqYE4s3!K3#pR7`~t>wpJlqTy$(_az;sMf zm457Y7orR6*vI9Ow6&IC;3Je@AfreZKk&#^0KxE9(Y%4GdX zcPfI7Ra%j`tK@&19OG;6+tnQUD@{{!3f#+kQjAE>r+rI##Q`zs@Bq-JItLX}Z?30h zv_dIG?)Sq~;ztkji(dte7bN2`2n_xbh0x8rhajipw@yk$fc~lb&fw6Y>fwE#93t;F zC;o>1=sNX@WMVQ8)e;Q7dc)Koy`v*Hs&mzpmAEft*Wr4ku|8{CZ2MPm;@Tl96O_@< zE&*E`*XU_yN$ZTNNV*C+FwxaHO4fG=et(#j;8`am{OZ;2Kv(hMCrk=2@A*kdM1`wp zLwYkvymsMDT|Z_CtT1?Jt)MIYSf>QBJn&J)i%N4y!PaQty~KWe)Okkv@#=Pzr2WH$ zfKxK-bx9lJ>Wg@ODkOQR74pcXjhodXk zY-G>R*uFhNDN*PtCPZd0eoH5jGP}z9_2lx5{QMZCv5C_WkSd_pmf!bz*xjOMyZ(SG zoSJ*<6Py_7UqnNhev147Y?a3k>22TQ`-hFzLAKt%R)vQLKPoU@BP0ls3A{X!dfvAg z8{K4s(t~G%DfzZeT07p0|IZuc%RklZUt@jM_y!zfd9IVUlQMXn4@wVd*gxt1o94!W zd!%yTHn{qH8xbQ!SPu&}o1Xa?ggs`MuMn*1 zhRGr^sYagGf1FG>%CIk+Vv@;dLVFYRCVNzZ%h?}-10mLJbMUE>P5%sd1RonJeYpxC z32z{F(eNE%X#Uqgufr8m)_LwD&XCy@Nsvl%Z{Chwe}8Ub+Ge(3$VQ`gtax#B<~^wy z`7u|)3Bf7Ti>6oFv%D79RYpB9FiIoORN23(I{FLv1-Tuq8cPxQOAif4;B#b{6_Vc8)^hy-FPJOw)}UIE@U~F zlaM!_NxwS9N#(sy*WVwr8C+)JCT&nTJb%ulc7=Q!e#a#LTi&FFRI) zYU_^#Wl=wlzpF@XQUKzMufdIDHMs@Cq`w*{ZA6pj2pi7@zVhQ?JpA6q2=f|Xhw5rN zT2);p3_KG{!|O4-B$RXi&}(#eiBTu}+5OjeWwXTk_4tY-Y}u5P^amlgnp4;*9PsdL zc(fK#JH7i9A~N$Qs~T#yfk-P0-l@*0VT+hj(z)RHhy&i}Xd=ZUb>+uy;!%1Rhw+p- zTB78n@bXd)ug6FSQ$NMqEg*#P3AMf8UN{ych3NI@<8R^T$6zDDAnH`{3IJ8n5wJw< zu$57xeo+B^ql*bSJC3NDo7*vLz{jvKg#E~llF2?_8B9EnZ9L8=h0ghqu(&Ql$tvdQ zb2f;B=S$?T&~KW3%}bh-sd6x$gO+aQ(rnW!0J8$x4yAT=XG8*?TfBBbt^(Dr10TKt zhFIi3AC_QQ|ESgw5^CJGIRDz>Q!@S&nji)V{IQ2j|>bc9ZEo($e&s#<5{BOX#cRgrOS{K|ui#f+h== z7lWZ0`Co`qoGljJC?B1A^*N5HFMfwKzZaz{C`tcW@@IK?9VHLlw+E@t z=&^d|QJS|tEd3#^`V{h{l_5oJ*+&VsV?t@az4?v+d9;H4%ePl@t@CC3#;e@!Ua!^!GHfE zjG19HsFrW-E;j$-*m9VUXc;arTs+N1I21d?5&3n%cPn zfh1=jn`mf<&+?>5g7McPQtTGC-Q}9^Z>OnAaWJ7yu?(SoB5zNjU0ae}YS^dW|^IMhcVSgqimPFhK7>D)u|7pKy0TQnYjfB7coBw?tJ4+01c!!{-P_(m-f%&S zu{G!6{2sU!T~HtUoB!-oEVxQBJHeeD(6{9#ss8hK78!5wO<24Z4KIIghJ1HuS0*Ms zQDBZt0aN)glQ@ONQMjM9^3481_xXuTlP}A6VyUBY5lziIl_l<~y6ijJZWlK0);N_v z(8Tlh7wUZ>!+lP$-}NyA0CV}4t?yRc*{*-Ytih-Mn@-Ht$Y)ktLR1*6sb43&Qb-gC16-{e)4uRI zB80EVV*`aER1_laN2kT?_SnD^Q4~QpsK+E&;gxC1}Ehck`a?9BsvM=FURR!^w z5<8&={S$7pVm=mQwg1bNx?f=AVa=Qg4xHfYxzsnVkEmZ z^&yo+f~#j>dpOW_K&*F;s@lR_C=_`M-EX{_~fAA7Y9KF)@9ewca&> z!}xEcfA+}ArTVC?|9!A5{p<-Z?M#ZN+(P)7~%{6L5=?c~;V{lQ(otK&UaIuiz zO3%W$fkm!r@kFd!;}9u7`|nnVfm=F~PcwcKBQEf6jqQ`KGTv~aN z;OFnGzp~?Ak{uYUU8|F&nre5M9vl7kVj7?mVT)8c=N9>)vC^Fc>a{7B6Q@ zhiM@6-6s#H@0Q%sA-baA2Zx#xg$!>#&88H;mKX46+-o>c#16O z1Fwp}=3*->RhrVW+zq5I_Ww5ffA8?F1ZjV7uwXwgy`?!_Z<(@)X*?1s@}!dj z3M%T!UF}cKD2vd1MgOYr!T9mS41!0+Ul70D|K&^2y$$$G%moAgBOLlbe4fBO`#SW8 z221O>P}1sc`^7jFm(a?nA48SO0=yf27{#6?a))!~w0f*Q@F)NJ8`Uo~?v?zTH^-{g zf@i=yyVk|p{tEaHboP~6%{}&Q=Pa$4F_9;Q-W4@wtSKy>t4sS}NmP+Re3$82%bKtX zR@&Io9mg-g1q*eb8>LR6Zmc)`B`PTb%s5^pBd(Df^zm3nSEgcV{C>K8H~{Tl<|5h{ zP_quTVXMmO;2atMS2tb2!`R*yW7m4qk!>p^i&ZlGK~?Y5PU+IaB>tU*-|ZuKaI8Hx z+fJ=l{u>TxfVp%!!mnLcdwWl)YIc&G^Nshb;p7!@{lAO25}3C-2O(nAbR@uipLMfq zB|JO}CV~&qlIF$u6^vJEoQw7r9S)yW+}Bc#`aN1z=Sd~(dtxX$$KoV+*{gt002k0j zTjZ$vtO7P`I_)zE)lzi~gW<%XG3O2SzPHCeU|{B^3P=Mn-5mogV>Op;?)+M#NhI=+ zpFAU}8zcQd)VKNR9aiW>lN!cfyH{%OOQ$7*$P-qS-Trn&b@AztvR=mn7Xq(y5QgXb3^LJ%mBdjegbbF7xwC z1x^ViRYhR%+URLnitltXhd~~PC$g|Uj=TQM6&f;w=2eWJ#G${+qpD^olLR+S8ja~a zGQ0ktB4nPKw@yMrx@cUJpL`m{Qf~12~vU4@R;kToqPGCVyhK0i0;x*IU5K{)DPb485|61wNmk&kP<%V8P^Jy?Uno`P)_CmD!)jJAu8bL}@z&M6CnDs3ljZqWM4#f=!B$=d)f#oF z8o6U#zv(JBchCwwWvtOb|Aw*kI%R$Ky(8)QVHgJypQ3}{FH|Cj2{A=?)iIx>k7p$5}P|%(#py_#U zNJ@hVMa=gsb!nTL>(gt_m2{57Yx~vVPs-;16w=qt$rL16JFCi+meVF%CqDc`k<#*$ zMV%Q94~}w&Y20rT+B0HUIzf6Y)scI%V1mOpydx57q`|;d&^lPPI*9(XxrAtl`RqUg*I^!;4{^aGO>sv(l>@!~5nc#);N)M*>W|e$W1N z$J%LmMZCq>Xy0S!!~!Fw$^xPbDh|JTG4OfP{xvi0+VwEir=VNu7;LPS@+S0f0m{%`luHb zqlf|0W`k-Aoj*jwH+>U;4Mx$YVgy&>yOuJTxTG3Y=E+VE1H+I1#m$HUdQ}!NKgJK= zhIbATd0%G6@t$Q__%miIx(0s=)sg$cSR-z1^F(f5kgihuVQzV4A_G*p5HZkrm&OZB z&V0zcThzl|*+X^b5(EL(u6i0GKGokQMNKk@`bu_61E;^V0IfPLo-!}qYV#xAt1x;g zz)G(cA^Zew_jDh@iizh$!WkA}*uKvi@%Tu)NBw5?mx15$M#Z0bg^^l-MUx`_TO3Q`;$yCCYa=eA*gxlp;-@*`tp25n82G1gw54Xti1U;1`CJ zB-uB}$6~A>#W3c-&~H-k-M(!eON|n_Te`cCWyb7@f?qd5KDo61W+Iwx=C-8?oul%& zp63Ym>j#?l^H$hEa;6pXcpsEFy{kiE(PAvNiO+wL_KS`E$B}r;b(o_1^h{=Q==U z1RT=Y;frM=(pWSciCs5Kva2k$zEI+hRHgCY@im##D%)Ot?rO^((Ad7Yup)Qod0(|@ zXa=_u$w9J1`NR;oI5=SEm!pA(%cZ1}AeXK{jZ}#Qs zux*@Q%mv=O6YelP6!YGHKn_yItO|*wtALC6Sft6eR(TAsboR7TTtNaD=K-C2F$`EA z%rcQ`x=R4ZesO617xH|ON&d%#ApH`y*adDqZ+z;6iFt;<*WBuS27al3DbtP!Si+uypTtPK8Fq2231Cwd z_mdRdcq^D~y<@jHp9s2=xXxwIRBnEobQ+~s2z~$yuDM5NLL3~z6jnB4o1#l^H!UvL z$~}Dcr*6E#nt5at*BX~qvJMhP9)acTPL zo;#4p+J_r}6T7VBz$Q@dALD0$6!w{;FkM!~0&&!yPZ0PVAaKeahUlF6pX&Sgy(@}% zGX}^=g|m``U}PK;Ah8XYP!5-E{h<7#i0Lt(6a-W|*uVeL`(r6_D^1R8RN@B=9TXFi zbUzPF`B#aM17uXz`004z*rXfn5iF$jxkX8)W)l?TGd@z7fBQL&3lzWPRSTkyPJle> zE?bRI*?zxGikz&Y25+qsmR`U4%2mx|(lT=);AQsAmdXuKJi$7_WadX3aBHO?W7tk6_ zMxBI!J$<&fpT$$tNUD^YQn%~9mUwYBCAz_kfUu9j@}+p?lrhQp|ICnfo!?tTnS-u7 z8c1N?nz*|J;0(v9_*f)T3mOHVHtqBBv5Q@97`N`g8Wze#rb#KjKx3CEmWJ_tNYXE6ICEz4p{bFLh6iGrIQs^fa)m8hT2 z{Vs@}b{f}-R7rzjR5$Zo3Rv7{W;CNg|q@T>)`KkcWimgsF8|!fMei z4k(?DVs9Buicdq#*SCMIoABLtwffAew}O+;7w;;bG@qVN($=usGth;?n7eAR$XpBI z)K-{SXw!Z&cKrrE#7@B$rM?fln}|26Mg0zpic?^;}us4mg@z9w?a zyih~wz)ospyJFl}%L*CC5xk^OjDAI#eb2#JN@!rweUZ4d(0^r9y0Ce zNuc3CG&;O1P_%?3oQwh))OWmvZd_`CelNpH(4e{3UN{+o80Z}2O=uuCDmq-t4Dpgq zV>qqErW(+j#pRBxGQ^Hwf%M#31~e>XHTI&Pu2$X)$vx)<=7}_S_Y1@AAD_2RbF_eT z+(vx?wS;9~Jd7zR?7(IxDR4KQ($sv5`BasID0~+8{qWb_z{?_siX>AnQqGAGY@g5o z&a+)CFhtt$F8WgcAP71|0V}a6?;c}7j1V3oE1i`F{86a7HsQAZjoN#yfwSHze;x@v zTv$F7F{{IOHRZ&69;lZr#3Ak{sdJ!#54jgb9>TPCIe_~vxDb$sHMFhF-(^jh{f)+4 ztso4sOQzzbka6A-n*Q@lOXsM*k{H#ll*N~N;cxd8#IV*mdKke>;q0xLfzGsmnFTyj7%=P7`49#+)!r# zKW>q-p+Zle4!@Is9oB+g*8m~?Pfn@-5EhOljz_bi&M)BQ(-ARLd}&3Wu~s~1rY>4uqswF0{q@%`SS ztGm9n=9*LWDrA}52>;mb`frDAo^c?_*f?W?aZpHdADTdoW!)jA2g=-< zDZzJ9$i`@5E5q4i^j|@f2Xp(`g~>iq+_R8u&4Kyeh!?*Haghrf7uYpVxiuWuwcE`f zJ}tCt-#;;>smbLU@LD{NywHR9E}rWtoD#DY&5_?d?jt8@-1-nc<7|mH6A7kUhM%@cK6Yt*2g3b_4nb)BAEI(wUTNlwbqG5^p5rNG z^|JfQ#|i814m=sVe1OUHtc`Se&v{;L&~Z$m)9hG%Z8bhF!)DpOhi>pJB#C{#Wn`2c zgHm~lP56Uu$t}pfcT|Nf?|D!Xyl|mn^#nBorr&i8WO?5E)qD*5$BZG3bY0>Q?Zm`C z+S(}np9>X!-j@kQbSP-?q2dS6j~B)M{Q@XnQUzZ4``(-b5q+t~p{@7tiAv2pS#I@Y zsI1by#}%bKSI$sEA7JNS6)(7eloy$yZ!$c8Ov(bR;Y9+Q{M~*9KB$2A$drb&m)^4; zQpgjVI+DXX71eevvOQOSweE^5+V6MS+15|QsbeVLwjs1^c623sPPGy;+u*Wj+t*8;p&R;MF7&@l-@W0GIc5ni%{?)cv1aN3?*Vs4n^xeTPQB3+lR!UFn-<=*?U5 z_U;x{Z3mWA;J(A@Kx4KU>mCP;;^>3cn6YP+oNGmpr@dEu9E;dKLDYCh;mIt^&q%A) zEBf|F{(y!@5x_THZ4+1#sLySqL@pk5JnZu;wzxNl^gp`~bH|8of$aqG!Lj8r_gb%I zQa>Q$kYvYEOYbKh;-B z(YB$#A37V6sh`Tlg`OHcIJ=&2589AVHW#tCz(2~hnlt7}!AL%e8Sk{+#ln z4IMZeXj|a5?dHnBGHz~^L(LAmrrnz85^$sHu8MiezqBpp&VL-%A;8WjAHr6^?!lDE-%5dKq?( zrGM#WL7j$14PQ<)xEaUeek*&~j{1>KGwrM6+0C=+V)4xzNb}75$-Fe|#TA{ir`n^L zt)|v*&?{@`dA$*=-~La}nKf+`l9UPm7hr=I2L7mj*D*5qLe z{ZzxY{W)=ZBVakM&Ei3v$wz8ClX)^5n^?X1IZ{zn=v+Oj5WoZ+dJ9|>#rIe*tvRb4 zHOrEc{V2?dP=rpsB_y+sPA3^LgxJfd z)8h?%La>U(lu5=#&vl(c8&7&e&pSMJCTF-0D5PB-_oXaI9t2rS5hNom{kH2o-}*@Z zR7zLQX?zSyOvGiDuKzqah=0qN+NR#!VTG#U^&<|1KW5)L?;92?jMXfFAsxQx7fns+ zXdQ66t}E3@kqttf`8YAl8v^fn^ViTi)}@RzFjtb|P^l`@KnkouI zF+SOnVY6JAZwb;WZgi>OKOahiaaPme?1STFWQp42bWodjK8u4KJn;lS$;78hV3Wb2?;xy}0=|G1CoY|y%WH0t`7y&|n{ zbsqm{dTV5Y@rEC{UFN(Q$fkD6YC$=__BgEBJRZPw`mnmx(!pua(RP~GiC(pQ>s_aJ z-q^Z?{WtWfVIX;51aNN{EkoUg=yP}U%Z&QzefGCULdyQ2w~8_Z4LhLCUBXeN?8BIC3I%r z?75B;o$>mlK*wnGgB1x*S`D@dGjD1ix1~ER%}7aHno94x{`I8N&6LwE?*(iJBRI0_ z0CV-~JPz~OIVV1u$Z-#00ex^-Q;eI$_R&O9CTw@`g~EbzM4UKp87FN~udj#^eFsL> z&RA{-AM78N@Ys!B-cMtgdI+VT(iOS)0WAaNU>!F$CR9)l&plCUH)=2sQN0Gzw}|wS ziJ@YxcW?s(eqTw$xbZp%`8)@Klj-U;N*&&RrNMOzd;gsUP>n>XDQ`06y~Q)g(0E96 zT<`7|Kb|{#`r83g)xLYD`u)C~i1dcovxn4#=xAvP8@=WX7SDPY$}|MI?gLyovS=U` zVnp$7FhL@J%mY{q@E?4lpi+_?X?}C1;L*d>2`I6g=jjLPJ9fw_OIrX2j#vAzMJ@UhwT$4<7 z%xz@Txd(efOJ;evIwV2n z@2bKluNCl#<$Jm;=XCkk#}brM?%iw(rSk5enZcF>j>#cgG%UZ+F7d4cCJ2AUC>R-s z5QcWpAg~VT;;j{b40`{ANrqm=>+)j#*6z5nv+en!RA=d&`dV(6$t;=)XOABdKd+xy zGI#uJ@MQ;chEQ(+oNi6Fvul~Z4U9!N4O5ugr)4P>VL6otj_nApW(v)uzRMhB2!$v# z2@Xz2(PD_9`A|e$5qRmlh*7z9XBB(ZD60^qh@d%>@~_-por)mqNTFBsWhQPZ{g?>9H9-3|Ac61m>+x15)%uB{Ob&gY za5sGPdJntHyqx#3l%>Y?i zb+ZDi6IdV{m%^;{B6^K*^iZ6St_;`=m=Ols9Au_4a2tsnecujd$$OiWu12NyWQ=<# zArUk}^IbAAhp`C#PtMG}Mdy`?tu27QYs~{ZKjEjfFJ$ZehaB0gP+_&ie%;g1Nay$O zGIaH%oN`4P0ao*OFpgluJneE9# zV}MKbnLVP}AKcibg)rJOQqCd>w!g6C@(S>gE^1XW zg^qB(dW7Qnfb$9XPo?t?Wta&u3Y2iKns&qhcyIPTRBhQ3^=cTXe}QYwmuGsrnqQNB zX||ri9B@0M#Zf)&2ip_Dy$L3NdC-smEeV0U9GROW4g{jsbZvoKDH7%|*NhHdOK%v6 z47hy9{0BigPJJFVB8EQV=MA~wnpX1Pt9b+Z!#_nSsD{WitM+o4PAlB@LAJ#N{s$;` z3}vjz+on`J#jtC~M-hKV!Qfbri?`*de4&DrXE}jfhB@E*I>t-&$0YWP_PWh!d z@p_70Y<4 zqx+~6+793}%Ltcq*#qiGDX-ypvt05jjnfFuMW({#nh{8764VzWc2HcW3}c-USI2&! zz{Z3yvgf?B1q^4PcaXl@MN2oiqQB{aWmDSGJw4NKnr2Sr)7E;493mRct~Mbxpp`Ye z4h5ZW75<{`!&CfW`|u_|ittujtMpKeMk;-&**y2V$$`}8+_ca0AJ=swqfK$oF7Kss z68nDNzh~@^=7&-0KnOK|P^1cEMHFmPO38sGz~-jG7YG``HJPfVI?36~$i-h6dPk)M zqeyu25p_VJ;arAmY$i7rxJ2Ice#v;7I`+g#fF-@VSc?ECt3^9`|GXjtEEPZ079}|- zZp@nMaJ>E%hl7Or;qqMfZ_!ZdzGhBExo>R6oBVM(KETJ@Sdl%@gmz!ipS?m{-nGB; z-=i`j2^g(hpJR;(U<{+a6Icn$H)-U|p$2k^@YBN$d_y7|PPU!^3MEP$xt79_ zgc@JtV077rZ#)DwM0jlLM)f}-xhN>%JjBCT2cbjlJDt<>omhMdM_oiBx|7U?y-DTfk0> zq#0wQB6~Lcv^N&-?2uWM4fZkNz42h){27w2fo);MjAX3Lw0Wyk9jEi{UqS?9dVVlp zGpBw({-QwO)YKu|d#!EbYVK}3yY~6Y>mY&3{I;2I!-q<+J*T%04mY+IrV34w%c@5{ z5d3VX@6m{y-8~{=Gj$EMtu7frBJcb_3`UbYQQ|D-w+t8#U)~$C@umaK^7`=SYmnx0 znGp7L1K6j*sSKZ!nrjCb9iDC#Ad1aT0t2PEe!dmwJz z1Gc=WudB3n5=CY0Al?(l{gvX1&E=Ci-sytwV{6e3e*YU|J4+q2@{yJpVFWu}c1LWo zHUh9+2D-bE7c=iVi(P4H-}(T~?Vam*zA0N;hD^Q{w*3i>q9@^ck}TDh+wM~XJ|eYkq%_=d8dsO{$ZQoeVh`4Cz*ET77VM{scR+4+oD#<%-(%DJ>Ja zeFbz8ud+T0TROo_R>~BaDl<7+HF{zM^rQm|$aL_Wne#o=YcVW7=rb}P$_vKJ8;*lw zPslx-uB*8jNLpL{o*!@@DxE6~mZw`VW5JZ7Au^<$$E_5doPoSUSDAGLJJ(jJjl=El zZ+{&h1AQPodCColRto9vd{80_eG=w9MR!i+AHuO#vAqw$3ygU(Avo%rgn{OyjWaWA7jz?NPwhLqFXiI- z)CvCh)KiijeJ`BrLyb0SdD|PfRMqJF|8eyeZc(sN*DneRNP~0?ArjI^$0(^FEg;ej z(jXl}NOyyjln6+t)X+mC9Rm#ABR#}0Gl%E>&U>BjI)B8z@4eUht-VE|Iuo}X)Xi_V zxu-b{n7A#vxe+~zBt}y@V+*m8m{XTl49#)7;{9WGq3!Np{IU+m0xo_ke_ZTuolQ$1 z;_C!I+(-LZZ#j-{efe5eh^12IG7SOhEO`mmN>ambMt5s#iHj$&9j!dyS;?rq131Tna7UF+izyOt zEG&5U<8pb~!e6IU*@zeAU%<-gm^WxtUN5j2ZLmC?Oq2G04B73^O+I6Y?EB+_f3$F) zh)Oc^S=6jfIS;`ToZxL>xAn^8DlM%+RtAlvU(R`ilqnz|3d>5?#+hfYVJ4Z+uI78n)U|V$GE)gM@o{h8zds7+eoMJaJaEAeEzL8&AX7e{SZ<*tdgig*7Gm?_JMbSO zQ5tc^6q`M&Sdwx2ai7y;%sev-G$DztJp5kjU7VF1t69B_Y-e2M0clP|h^9o74`I#a z#)k5>T{od^s0(P$D#+6hp&NgNt=(!5+)h>$h!w2Q`w9w@KjaW53_6s5VPh#7ye%G> ztQ8II%AeTr7@~Jg38Tu4&2<_Oc=p)bephm8i$N;(v8>jd50;5jvN<$MDB+8Fv5qy9 z_N6ufnE<5MmFw;A59?uElAlb;n+uds&%Ny_zdgZb`AQ%>wQ-@d0P7(mgDA=krEA2{ zz5t;UxA-YXS$`DJO>eR<<#+EzPK3fbxJl1QUG?kY&H-%}N%T^$yD1&TpD9h2tP5pY zKlWjt`RGdZ%F@7`z1Je;rwr=Kf6t`h`DlI~nZH$-O>VoRqJI4}a#>d$TBplLH10bc zH2W&S+0d~9I9PcD^xGtZr<&fsnv6bG6S9t6P8z_cX1;CF>gNb*A&ZZ$@^8~@^krP9 zkQjU`$CICctATmpVtgC+cD9P1n>@5S<<@n=K9&L0k$+PfLjKjWFO%6DnE;&VlU_=f z2pL-MNt9`n@jMADW&Y6lWnWQQS}T*oT`FzEL}s&lg4^Uznphokj!s`lMZmL@{&bY* z^I{h;4W4r1XupPr#y!BD;j>Qmf5Omzg~>kB-FOC8h%OjYe^85R5wxwR1;B*~KM$GP zwdKizn}5v#eMIw2HxR6iK>~gk%vCSY;r^{D|FcsA?*)>8wN$7E>SS-l83%$IbE)Gy zAHQ*~32<)5G+cv?Z!LDKfUn5^?PLGQ>P*N9@@^PzK!?>*@fSgqa7Q1dC##(7%2nPg z;JkI{KOA{(SD63l3Dq-uFM;(8;s%6bl3&q`W@cETec3Ua`02lfg-A_8CV0iEKXpHz)mZ~T_Pm!b5~jSORzQTw&lk zWzugd0p7hQJM<`UOEt5_o6+m@WEdo@Xzy~)|%bbiX7jJJM@{iM?lO(9fr z@vCBxNSW7y-p%Ql?^|nI=ahlvcVVvNo49BR!5VTr$=yATQm*6CFn}jUYin8O_04uh zp$Ff_PIvQUaxXKL!`VHx_j7JD@5P|~fxgFmNeR4}PoN9^=4cNTEy!f-&Xg`p!_wEo zlO_@KJE*izu1A|`YHR<(v70E^%SPB`GU1h3{ykWwAu_)t(s3j&X+B>1FxR8beb0+HoKnQb2iqVoFsG#lPCgF zo(e-O<9lG7bP%u;!1qol7@qQ-5Y+$jd5hw2Mi72a<*OK!k`l1{Cid}prTS9h!X5Jq z>7$}wpED!w zt*Xt7)$eKO-;bar zb4+-idfhaYHRhS#9g9S`-4{2V6;!4g`)*>0o$nVIWn0ebYLkuUaSusi^O6m4{Ok0% zi#T|n>mFbK4Iyv+#mQ9EaN0W3Y+4y3%wuuo2k}M?C*5=Zrv?66V2{XMEzBKc|Cu zE<&YL(!Y`O?AQbd@iyCAB$1KOn|!K>9?FXWP)}RE7GKsZAh7ZHbq0BZkRnNuv_v}E zt$*kYqtcnkOKT^xV^Mm=i#tx}uJ)dmKQvjza=rhade<(5u~CyZa3O+X(QJ4z;@ju9 zpJ=F>e`G$(`@uq<{EGyi>UEp3?Ea88E5qR5;n(ASoE1NmqO1KL3x7NhYrlk0f7t@& zJL^VB4@$D+y+wQhfyXx>?2=+18$d4c{-4HSuZ*!g}%RxdP~l^u4b)k+C-7a`YLE67@>l|xW8T!N%AhlW7no+q3Hs}+{2=rK)B$rhz+xE2w#sS0 zXr$Gv@UoZ8S3Qacb14vVte@MTB!h&@1X`R+KMu@BNA#RGBNGxGp^kON?fVrM%h@ns zDe_<0CH7){17A3s4ff6^h16d1*m@gAA_w7+4k_@B3w^>s(J6+ygEb;yM$1*cLcg;v`;bL5SV}$T~DD`&_ z8GMRNi(H?J{`A^Bktixch37|oeB86IF$28Y^6PPMs8S}Ow5MfiaB0f7EAVmRmZHxJ z34z&o`m;t+{E@DHX&(0cuWi3b6%*AW#+Zi379rI3Y0}G`SsQ(h_vAEdnpohN^AqQ> zB|9l1*|Zm3u)3S@oDfOM^cmL4ejLBCKW9^ax;x#1W0y`QSaJv4LsV0q^`^a$@}*LK zGhb9MzB_a`Z2mf3GYF+`r|4rCUs)v*Oi_K}8h+mhuEFgT1Tt7|2`5U`o5 zpLG>rOWCt|Mk%5GxL?%}?EUiP9;ma6_5S_PTSpr-eT`wMa&qnWo0x)XH5Jn1=O&yb z0gL=LEx?R9CeyLVp7|_e*TqB{Ymk+T)&~Lt{q8O_{@?w7%Ho6JzW`_}wWV(#oknMS zBBF9Rf+Hv0_8!N5=>9}4LFnUn_BQas_S;`IN%3F%FUoJ^tcF^%t-0N3{qj@D}_XzgvR*(64UX|F{FP6>(qV-xDqtAxR0pFqv0Cn98; zlKzk_tOu1U(sAxQ!pt^jHrKSSCSuWw#S}yU1_+yuA!Y`S+n+XnqPF=yGu}vcZUG!a z?%FC6PKY|EObuehX6-Rt7{C+un0q>U#@1(ac2Cu9XJ#>Dd>&d{ zOPfesb9DQ6G~vNLYY%}S8({a52yc!qRdTsZ!eU?T-5fkE|PemS`>GIZf@`EN@RKdAd>G%P0* zSN9Y@)AU1IdrJ}>p(W&Qg%R`}J%p+-W^SA7+VAER>K%rC$n zv`ZbtYw{*L59hBQ@x}pNho$P1Rs={I$9-u+V9hbKDe4kPh zIbtu6*yK~W*Ao5VI^kAg;KmZQk3$03a*=4*`tjfv@La$+__5DCm!{rRJ$u&Zj?iY) z?*#q)DW2R1#BVMi1t+MoD893AInIn5da{!`+{-W`jQ`Q(nMK^As=M!v8y-G742LXY zj5z0J(=>PyEjDY|#2tr_DFqdw(HQNZ6u+2BEf?L>w4ZoxQJ?%;t&~3O?30jye4y6X zyjA`KrD9Djs2(nOeXPs7;}}pH=qSWNV#&|T}Re0QyEGX|OFIF5yakDZ+kyW%ZT1Y_0)c^y-)+~dlfh;OKpEpN1PBDT2Z z-u5l^SV_n5dOrQyRdUfReaZ;(gov_3R7C^U&LM<{ca=8dK*OP%UaO_77G6ekkBRv`YW^VVQ}TXp!G~Nyk&1@c@%V}A+HPx zLm%%gSGBB>AM7%aKg9%~yxp@fQ)0%~_e^X?m4Yd>uBH;5^C6iDWS)kX=p&YD=ML(Z0w1S^2qNeyd9(7ksXyl1-jZ4h`) zy@hN1_|UQLOcahm%>%tTWZgGS8!fwT@vqpoZZg|#WV(%+1SKXJ0lLRW-VBFr(Il;p zV?WI%Uc6IycMDgTLN$e2{p3LBw}kbVsOsc)ygl&Cg3m3h%+b7=E585kzIq6gY{ ztY$z8-(A_lnrfWe4<8Wm8(m=Z)>Y_oN!(W=m(21fD$o4RNQHQQcKB#Zsshw`HZ9N0 zc(X*Peg}Q|>S2^5IES`{#`NGj{th>jT><3vGag?@Gt2g*CF1~~xcss3nT!tU6Tb6V z-5b#(qec1w*!Xl*xGit4G~dm8gRw5cugEV%vGUJ*0gX-+OQGDnSA7LZiP1^eJ4UMI zXzg7Kgi~oG!!L0hH zEKdvYo}fb8_+rv#MI+>$cvLy_%ft@tkuD;fXv^O30?v>CQVI3ysZ8voZptJy{}ASl zz)Saa3t%xp@z3$4%=PvB%}n@Ofv37JwMOBPWvBeb$00|ArFl^DCdCWz6&jrXm`Er#n!((r@uD4hPs~({yb^Hlha$HI+N39Jnk(O@*-b)~7uxWlLm_y*sfG8mu_rZd* z%K<{6_!n>7nEGoh3Uk4KvBoQQ=WbHzLk1wgCaV5|Yd}8fMsj?dWwlY7`LTy_QH^Ed z3fG*>et$dQHP@sc5hxH>g>~;BY7Sf9ca=?wZLA?yC|>Hap7oY%(38F2d0u}9 z9z_6oL2LZO-G0b2^pC)cmDG}ISYorxCaMZsQq%0|D*Nu zSCPm{?ciqbb&19AJ~ghEE)%m7b*@49?~Q+*Ft+7B^tPhYQrq?K1zh9PI?H8Uj=**} zdKYGLDn?X&cX$AAKe;VyhCof{MOzoB6272a?~6@mw_xyeT-ZT8hE|&6b6Q2J#EdS- zou9jUn2=wXleNDf?}1&~r*Bg!CXI5l1k~S~-oKT4QmdHr&umFG;}hGRr3N0m<&&?y zs+9%}#}}8byuXrO;S(r=^hCB8w`1TUp9itM33a`Nii>TzZ!dlyf z-mK}Y>@&SsY-gMjBfO`mxQU=_URI52cT`yGx_EG0_lbm>$(3b|NcquxI!$z+qAzni zvHV9D?r8jRL;76hkuov%AJZ8tf&ai-{yQ7~Emh4M1hdxgW<&iZjez}j_&%uPO%62+ z#fj#`@6~a{nT$o$nKyk|;m<^%IwEnlGAPQNCfm-}F-5&3O}wpK-i}D-{nc&a@$beR zmD0nH|5kHn0zTA=(HI)_z=f<`*Sfy;*_dG317CAJ)=fQ9h||%OxLbY#G)|Dc%+e4D zDhVv{zo!gb8dOm(N8vbAg^ z?`Dm$B(vVwLUXPj z!p}=?RV##n@ms75u)nX$_ctaVBL^xZKMJ7_dEO~6^WT|4au#|w(NCSnh1NTD`CvzW z5~%OiS1~dM8{8w-T2RXSlK=h(I?#Rcx#FlTGXo!aAl+ zv#-QHpZipfpUk1py%ULBwjuNw^bXu%FJP)U%Pj!SOHJB*ga+RKV>AcJ|+qwxS04!XFz497K2*+$k*KKj33j+63p{n`PHy0J)Am{eW?*y83 zo4BRNnQqvr>?kEHyIu=EA!-4UZ6G|1L&EW?R~$uyf5X4aQ!_peMxM8NTv|{*yuNTz=;x%&XihY1*4gUIy*kFz~G2Y8IG| zr^kt@UDS~!-7iige|wAqFtk`x z=L0)G*;oxol%tS~)Wi~4CjFmeYAtyTteCsWheq*5ngX!-@S3Sd#c>D)>Pw%bhG=Sf z5Ix}}{B~ys)YIdP2#-p=VRt~zH@Xz^N4$HR{v9MjXHYdeZv_l5pSJ=Ro%l8f5^K9B zH_KJ=E8FaQ;VtnQsR%bg`dGbRqC>mI5tLRHqcy-c~UtQUgz36T;lJbI~e zKML*HJZ_coCEG@ljOtKv?A>#;*VJc)A0!s&%q*X~#UtWn>kGy|1VaeOHUw=?1x2-7 zA;dkNTspGe8wP97HYW#9)ILCBxrtCd+A8Jyv;QEq%=OS04vl z5A29gE>!Ftea9de+=t;=rk{#r!1t*54V`g=Jgdkq<$ z{FrgIF5Sv9H{#=7$_#(ykczIv;U2hd3RfHV@Q;PhlxFGpTK;5XN()wuWAP5{t9&)L zQxP?h=M?Nmbadgwy2~2*<--=ayhUiAF*rZ}@x+l$hrQui{P6;l@i@l3Pe_2R{EH~EQEMmwiVsa3RhpPe5EH_RXC?ov%S|E^Km zz<(P02cxk*o;D6rFias_4Sbe4A7AoILJZxq(pI16dIxRXlz{oK@cCXPiO_w$F^bF@hZZRhNx7+ev>W3iuTfB3!ZJ8NG3-hh&jyk)HxX`$u7TmG{SJ9BGF$85^t z8Z!l+_G(r2yjgt2I>|GH8ljms+i7fOv&w=t-gna3{Wq#ftcLn|^%@i_$L+i-F#k7Q z)Wi6bKglQ0!h&gMQbN>smL#|m|3Wx9-yVskYM()q?AgUfbh3xfycdoZEJ})Q_idS& z%Mx-V7lQ`ULuv$r-a|dI@l}0s)^s#baYXmeMHNyldknp6Shdi+VuPJnTJ?U_V_x=kV%oV0-EM%d*c|ZPy_bN8S&&hMMgE4ZKMaj-JR3Tc@(T2)*WUc3XmhX%IEi6v?4~FH54lfiTwD|H{CJ(G8 z27Xa+cc+*~H`X-!R*){3i%6v!3~t4&(`_jy-WPM{;_0M?TCnB5&%*gfJ9}`xTRz#s zi58+pMjesT|G1oa+R(krMkg08ppT+wwxuK#-6bg9DmnV>kfSiZ3hmXXw zWZ^}Ji~FEXq_eOD?|BT9r3gMh>TrFr*K}@6f5$`H75q3drNhpKM7~%JdP~B$Xy4o9 zIoieh>i*FJ*qXJ+mu7Ysj_XXfFZzt2?e%MQ5z`S_(||YMn3mVhGcGx)1*ldqA+5Cx zH_M$JkB%=S$%w35YvrZi3{s%oP{M|FP#~?PWzN|P%$lq68}>>BCJ1Q>e+2!vi3aCi z)_HADxy(=t({Wap=W4`^X6=`p^iNWQXdtpD<$HHWutsfQ)J<^Um?5|0&wMeMBJkMv z#F=DuL#u~C@Hy6#a?3NrY>vD@BjoIRfb*V7fcnjYHR4_jy9T5X&ff7u_vSdL>OLX(}84|0(L}A(Xa3;JovC@5c03)z|SylAoWS zI<&5|R%V|F?7hr2bXr}B*`cJl?*Pew;qEFD#^Y3UO^G zqJ02HknL;P`lun=fL`b)^VW1H|1ThO4&0u#VnzJnLbX@hmV$dh6`oGyszJ#+Z(?8A z3fF&-m4BJ}iY0TO>E~a80fEEBKLdRg8r&VWiY%*1O3M>k{X zMuxXvP;byQMR2O0>kWru9h>s-iq+r;Ze%*{R*cTq&k2C57hd^p!zV)pT4|-h(&8bj zd8&s)#ySy3-|iD@O}CsV>J?1WbyC6B&vE&LqU&X!jqlTsi=zAMzR%h>gOf$# zKzSIGo5#i4XN2<+$?x__b0sDQF>DasFC>B_OjOT4i=Z1% zxCTycGPiD&I^uwCW7_~Gp;OOG=~@Q;sClNVMgNvCknIBE>^g6z%ddAQ3Tt=dSIX*^ zZL>4@4D9V-2(#@|cx&Tn=yt^mAB7k%cU|qgf*RcM21B)7)DYf5`&4k<$dkE@n$aV2 z$Dd=Ro%7C9Fw5H+dGI`+^ogIU4@Ie~2kHH7Fxlt2#p1u|>tc{g8;mB~JrLWEqj2%}o*Jn6>zHA^}UJMx5bTxS)G}x$%pI({; zc=E9+{?k*Ham*V^7Wnvem6L_5xb{;GRm)RCl|Weo6I>UY5x;iDsL09gX`TJ}vx+ zhnNXrMEIkxwSc&s8v@HFn8wA~(;|e+zHw znw>Ig7O^G&VIGegFfGYfLNlWbE($$_*+XnH9L+qtf=mO02;qXA~L>9x~f)ta%-rgMBm#`in`{vaxTGB9cmcxOW{@w?2yd0dSMNFvXXy$Dz22t3;jB=b(Ho8w z+Z*PPl;pm~rAFYxdz{(Ny~kElNlb{Gp0+yOmA;e1fN{Y!@Q&4g%^ruh98E1j z=hvZtRHcM>Di~{}U)$1KkvvSFu5Phq^`pl85`nK3z3;U@5>Y)EO9^MFhow@BiT|t6 zJtRC+|4Vqw~X(G0r(r@#?`=z zV}f|@mmh5p9M;ZY1kn|4zZs&Q=g5z|v^0F*lp-qlx;8OjWgec?hak1~l+p)vUz?)u zR=f^}^$)eHJd%B)O|SeOQk6(q&vvi%3okpvRVnnTOFfUrmRd{mNv@wK@*nL&^GTks zQ~M24tnn3pyYC?S(WLJie?+WzvnPO1lhdH`?o(g?GswFJpd3}Q`IhNZbfLF^MBu0A z0ac;I)*lE)#?HDI{_$qhJl|7WuvGlV0T0B4ycYE&Mt;}XB2)vtXf}OTn<>)q{|*Pn|3iEe6YMD8=Y?(^Tw=6UjZX+HKWV2Vht;~6(xL~tLXg&Xa)(a zDRAq-Wmn5Ig(DY3pR(l>a<8^8bOrV>qSj-N&P}gY?LiCr4!M=B?F} zYlkpSY69W+N|K(JG?@mJpA-*5l5_Q0$X}W`4D@W)>W~ns=+Pwx=n-UZwhI1Oly58j zNKu5h8(mHp&@h9?ZQ}E#N7s7HHkn3a#v;7P^0kUID=#}Op2qT{Q5!XY*}vv~85yITKs#X4-p%`lgt!t#@Anm{MK)3fcV`=%M<$ z!GTx`YdiHX1R$@3AM8IgMUOd;rC}X$P4$AMm4==4(-q4pzb2!EttBq~>^#<3yde=X z+dCi#wnQJ`!nY~-onGk+9nRNIv@N?X9|>N6Nt7~cM7v2l&pvD-OC!rfs?{Tn`!&W%r>+_ z@Frgd=)kZAD=u>Zh_y;B47bu<&Aw?DC!*Y}8KVh$4t~PJhMz4=z*3neI5#r$1vtQ{ ziEY6eC6M2y8L9b&DI_)5YGM!U8ZY?)?_gMB62x@~8ov4*FS3*fn~QQ_Y7JzADs7tO z5@*~9Bg~0Q^U;xVoSuGv`Ln)|T#$@x?%3BX&Cs827og0*fe?gYQ`>Yv52$+Up*;>n%1`%z0OIr{@P{3xjv@9QXiX^PC9PKD1?fB zg+{+8O)&bD)TF&_C-c`X8ldf(CdkRdRwwU2 zCQp=;d0&;cZDdfwTXle|3AckB%hn4<(@Wp;CrE0rE?_@2lNRxjH_u7?8#nIg8%eq@ zKOMP$@;%~(1Hkt^UYA@2UrktrxNZz_4!DSyXB!znvOebYW*+4Nsg6XY$2qvFi1(B= z!WKp}u_TOsy*~t+{x|2m4wC*)IK=pjaD@FwpsyIynr&f@y#sihdH(n=7?(MRHC@rh z;z9AS9@MWrj)KHv{C)`&xaOzts-CXpl?#= zgp)P0aBn{q-Uj-V3Z5>4t2-TZLMm-b#nlW4)Le9 z=Rix~x4|N2agyjGMN%h-{+axn*c4f+cPXosqsEL8Mplr=A*5;vX))P|sGl!2FkgH{ zRh8q&nLFQuYPsBdCi-36qUUe*<=*an`eU||2P$Z>_&W7ky56O8Dt~CP<#wEVG+~4J zQ%GAJUM}X4_<|&eQgHWJAGR&%GIcXb9;!Ryb!pIuywjnkj80Hz@l>c)IV@Gv-|}FC z`!`tWH4-L%Y2+gR=s|<|@qO`@d>`B7zO?E{7swP#NBZUV;ATdql*86@@W)6US>gkL z`K1yuws$hi)C#qcKo|O~#uzSVCUlkLeZ991ih-ROip~0(V*Vi=R}m|=If%cVEnnze zn)6SUL~%eP)ch_d(#Nl%pzosSf;@W62{LtN`F+96n>S(F|GNvIGMuNYP39mQ+7d>* zBQra?oLy!#r+(iO>v(Y<>yqFG*h*Nnje}D}9#t zt*I`YZw;Z;Er051roh4aY!|=gF5!=4#)F$_xBWsRbd$zT4Htjl3jD_Q;gIOa&|##` z+@kDrk_Z8%Mn1OW+fhSmdSi?fk*_2-g4=wxfQ$ONV2?iTUnHNxZsrTz+8&gdt>pr;-=tPC=-hAOl4hhx=3-5J>-o$SKpqX*1 zx6-1-eKg+8=r;#lNa1J4y~h1PN< z=`k{2wZaBFAI>Yxi2XX8%~X8YaLBHvAjKHw{QP+E%DYmn*&bK={0E}HGk;EW&1~lH z9%o>*_`J>p$^toA1M0~0S_9oaimWBcfo1)=k)O+OENjAbykJHZZY1JZe(kusd$p_# z^j1KgFBPO0Y{duR4?AyrL{S3Irw?-pO*NI#?*ps^a}yRG;j3N}_RRw?r8rviiT_Uq z`oZIW{ogu{%$FyrbN>ZW{zVWPolZ?Qd!R!(&|IU-ZHCS%V%2Ui$9fm5KOsMrBV(Y> zViw8lDK3tRhQ8x5**SB0rs&+}zKi_0^N+dmr6IGrAynmY;S|w`XFN~F77D-M`!8+D zTKO$K!qd_<`I`~nD^K_cdfj7OS-K`^4=YOfM?i%qIP{%>F7WPiOV)AmosWfLKvCtE zc)rttBaC1ygA7SmHAGwBK~WxU;ks z3&@r20lL2Sc1dEX_Mgm`DtFwUX3;*dAy%K|x&nl$&Rgh#0@)x}JCg2ZYFRQuQHsRn z0b*Oj^xIjvko0qQqQ+INaV4F!dj9Wtfz`epM7k{OB&IwDhgy~d?y^tBn*om{Grl_z zCk-MF(vyyV(Vj&**4DZVh_^}=O*Q7%5~g=dYl%&hXQ5YVM1)sZFf>n<`()&>c9^v8 zDuY~!F~xLrFSp|k$Bv~!wL_Pd^Zhb054$Q0WvnLeHg&#k>U-|6i#68-qU*gLmb)}H zs2fh{9U9+vzCd_EU1pg|_(_;rk8I$wP?wc|m1Q^lHxo^88BjokAhGy6dJO+81ttab z0OC4ufd18AdK&m|yaKEQ{o{g~I}d?BFQ88|5UVbxGhN<;A{8}rE^J0n=S^O+j1MH! zL3-X2LB+H<{K3)sF8$J?!(C@Qw|RA-SwW=Xk_YjAb#=n=>e^LiG#$b%E|gehDpnT0 zEid*{yyC&UFW1=v9M1vP?Ey z0d0fRg~Em5F6-^({I5~BIzqH%Q`1QhK&Ta=%ih!8u`7X`;_#$K&*W!(+olOF02>hp2qTnXUa_R&Y$;ZPE7TpoDGGB zeK$SSdK_EVl$>Cz1@rlc)39Z)>*cB2x6>h;-yV+f@VRj0BFYheW`Hw%?ROSn9he5{ zffGNYrlrZKtx!I`_kdGQ-gvZxJ!RX{x}e_+DhxbraQU(T8#?;HHPYbzi7R}1i(}&; zGEXPd`wn>p^u=HsWBP)2Uv?=3H?}d}PE&0BU*_WjMxea&MfU&02$)T-F0NP4P~f|s zwXVu|!I#v^&Q{)%m)TAbnDlzJ9J+shE;4-Kq^qxhXxsriRlA<*S%bx)J?)S1lnkPt zM-D+7oC145!TkXT?qBS%ItsQ7hPr($Pclqs^xP+BI_1MUo7Bg#>00>Z!S$%~MZ|)c z+}%|<-5I`j2tR%>FYQ6$B>TKJK9x}Pembp@O338ZUK@)cB*t;OlJFD_b8~hw<$g3! zBns!)@>2Vu|5!A(D+a>*XkR~7+Gpcg@^r&qet~13@&Ob=I#n0b6H9gb?3b!j#>R7AtEp+rDW6}g)R%e9^Vk{#LhKKUR z95n7q;ZQav&`I+~#1Z0+s`n0W<+6nBeQn^$r31?Q(S(eLV*6c%A!~SxCFs7Q;QH`k zSDfV8xie;mp6kYFc-6#McsfOiV(H@2gr#^1r{wt&+$cU%K*jIzXUV{KCzaE$2ne`WDe zEP5=M>Pvv~3*Php8DZS6w-`_)VHXs#Ajee+hDcDS+3iu8m*b8io>skBbJq2Gu^s)s z3XomJo-Ou-rPR)GP}ou=tR1Biio<0r+U78!i2JVnFcZM`BdNmZBYLKcE=xefgQ0Np zZ{)uvMfOUvqLxzU7d@F?LUPD-)+8`j0-B^$ z+LvG#ZljIgN^BUuWH3Uu1x`TovSti5w5=MYyy~3V;m!)8*PPb%R($8y)L-z$@OSs` z*V>$8g7&krr%nFlxEWmvRpS9zoo>0!=>^oiZR%0e$R#^fu4~)=)`-?4^iv}p|E7S*jkNyTcevR zua31P(76G}e&SdSAqV!5(`^1-)Lx@0>K4`{8z~Gry+W+R0nUxC`TP`oPAB&*`YjiH zvdY({F$HzH<@_SgRkoL}BX0O^TwzX|$2Q6A=wn`nxRm8G{P|R_CFb!8(TCl?I}qMRljVs|Ym~=ih(0 z637u-SCcvw@{(h6hiWCsuag;`GIB&iTe%3Vtvii*~=HF@b2GF z!<7LF5S)vPuP+*)`I?h7H3)gmHN2kX@MwnZn={`zTQ=qK3mxrV4Y?&IVUGwzFYucR(3}ul$oxZ9MtPXm$E`_eb3Z(tP|H8TJcE0^N zCW8L=jMq|NEF!71#knlt;M@ygzc5rbVl-yi&U%r}=kMWv3q0IM?d}#7u}nUuQEu{~ z|3b;5N4EMb_HWiP9p+S%vPcpXRWwmshmtGdYfSd4ClYcH3UB)j5PSL-xOG9Pi)ujK zhq^d|1alaLs~+$aq1NZbY{rUqdJ`Ti+cYgv0EgijtT_0r5n=SuKsVrXM9Jvn7+3OM z=KfWvqRUW)=>h=aG`DmF$m-_JAn+mhlk~#)S;jEl2f*L^=R!ppMBywLPsOb9fget0 zLN9fM2YXA+$^hj%+#ZjBz-_8UG47yJ4RT(B3xw^KMlq$rK0;pJb9-b z6t@+rM62OOaazXusk^a%EJPpm5wB~|j&FeJe)03otf{$twbfJp+q3-xqw5o_xMSp9 zjj8U~OjYNJb-@?t!7!*%_G|#`2=W+f?}+|aNcJ}_u%n;)%aTRIY7K!dd~vkvN$4Q| z+riAQa&nwNkh`5??Gs&X@&deDdMwKF;dT4Pit%#AcW5b`l#Y{mD3bC`BJuzmYD0f; z(qjgZ{pDq_S`EIv^EzLGwD1>P0pJf^g-(EPLM~1L=9_*a2mH!Wb&dHCOm>sY={gT# zKMBL6!`E_PEq!N^k+8eT8oNCspNgv+b+)drI={WR$L`Q9ft-LxEZXOQKc$hC0qH^= zUn!f4AFyBQd48kKl*3;I0}3o(lp2uOaSzilRA1x@`%-~Ec+Rh zN(I2K-8J2yP0n6{Ejff9VE}N6QLK>QC-z$I9IjqUUMh;(@UnLAzpW?elSVMKGN@`5 zV*qq{<-HxOfiQ{pV<$}bE=sK@Qzc^cj9?^Ozm(@kM;t}`&8>)~n8#GivF4|-(~lQs zrgtgcl4PpToyYEY^ukTOfPGGF4!YJN76+NS7&Wyrg$@4?vz%FU#)D(Mde8D|P054H z)3)lVz+=Q&uV=EfLem<%pOy8BJ?{7X+2EPEkSTJ@iW<5xV`iwY>DEMSRVoAA`Jt_KdM-T@z zq(*EYJ0MP9mew108Xcpi=}OLJ;mNUovE}lmme5l}qGSC%M8fjS+F+Lz(%UoV6Oopx zso}1~luj~y?GeaR<8#ENu{&Xt!{_2J?dO0JT=#FmJ)u0gnB=1LO$#VcnsBx{p!b7d z+KFR{(y;HO(E2Uc=;4FAt)5IzB){*K{IV<(2KjC(f!IWZhy}JoVK(hVP`Ufp zYhJ$lR8Gi(X&CEY=dtg{rr^zaM1;JCbEfHU7*3SJW!vVSY8-Ei3HSkoB3k}`h&s!t zr~|IsBO#@PAR#fNNDE5GfPkccfOJSoN(q9*(A|w74H6>VF?36pbV?2#!_@!sJnwz) z{V*S9&04c&&02HjoPGBB?Hh^DOP-6~_ZWWlta|*DT5qFHzJ&nmSg4#!Ervwa4@35T zEHk6bnBU^F{IpaX)i97acpP4ydL~xC>OyCff)R>o6?#7Tsf6)I!C(LJ?Gfm}|*cf zaUQk`Q5Lxko`4bh#Dbc2jCb~+=~$+8w(OXvm#iV@sJh2GeN7oMTP^!J&obrtRX2?gBLg z4tE#VS4%m5%M>?=;+si)NkLx~q{UB9hlLdvYvf4g;Gt?j;qq5Lgs0DL9m#_8W67l_ zd#2w!eOA{yyBuP!)14Rnug`%tSQCVzl1|)8M&tnjLZV|2+_qf_W2Zs4oUA_|NP9N4{vTpe>CB zrtiVS*V_8C)R>vQB?IR>x`t-F`5zUhYb`Y%tS8^hud(^9{Y0{3)QS8(Hd`yRtUh0D z>(bE@b?86x7`sm(Y_s2nASGJQnq4Th$--`B70^lbsg^<2&m%T@d?O@d z(?}0jpB=gT)iYX>mEuRB&eFhOh+|iOHfFBG@Mhi-nj|cO*&R8ik?nsgN-r=If387l zCFRyQCV@D6BYjcm*)#TW;_s=P&E{m2)A9ndIlZ*kv%T7_jA8F->KI_rpY#n)$q`m8 z1M$dWRbEJTm(*Yq)l0lbiFj>@q-a>YmMP+!*A{rdH~Q z<)z_excw@_AC_0=U=K)_ieQaM-K7`nzhKp)&td+gD`Ry3!nlRz)+e>^ZKKCumcbh> z67^>P7yzzQptXUtRl7{33ioJG}>da8I4W#~d#w-YOhdLAz^jn9vM?KR~q# z%bDv$lhoK*PQ%W4R*9>mop)C^yO!4?xH|qY>o$9B$adozV)VL@U!YMR>h${^1Y*wO zv&$EI{`%Vl2vUJw*sG$KIcMJvkC1LlnpF-A8W1?@#Qj`(2H=P?*-45$&;ZLa^^N;Y4Nr8cmnoU zeFt*o6{KCRpWoa*|7j`z9rR-noum$piH??BrM*y791C0*(|VLn#4XlHVGu>h_9IF# zj@NzO1g2T0?RTYyO?}$0StxvJe(zNkMioc2_Fjt!a8LHAUo57!SmAydF8lOhd7@E( zTr-C^y=Q*x=Gld_H;GEgrNM@|wF|qs_(c%v=Y!xcoXm>Lc7wTVnsij2)ncX1$)7l} z-zTm2&qkbsh)bOwkf3|zooGwpqY2wQ-gDpr`m<;Ezmloavf+NQK^sxcimQoSF+m2i z{pbFKriWT&AQ=)o9lPC|7Nr^a)(|Ml_afs z6{>-0T0Qh%ss>j}Va%bEjVoX1h7G=);pOW5ZoXkb*KGVj$pJ;~aSo@5t0OzZG-J%P zWzKreT?VyvdnI}q;#Y)5Q?EJu+~ED}PIieQ_E&f$`f&Moc|k^WZW?XQjfle4K|E6Y z-T&)a(*9$V7}f&Q=KP1^;q;2E3USx`(bs1+=WMR+G!nRgB>`}iw!m zfw)ce_BzF_pE28fqKis~1F@S4_JInYO4#%X%Q}sYk6a5?r7x|6?~`o?00#f9^>fmE zvWnBoA3#BPZ#V11plP@g*|?_tQ(B$qNaYy5Qcsj)bhS8j*&MseK%^#|z;>O0s1!|us;uEoYAJY1)z84QYNzC(NUsfppIM+)d8I1m05HjY=XmL)=zq>Q};|C;%t?{%f-S$C7 zgeCI%5t%RBH;j4YF+cv^KZtGj)qZJKM%UzP`ny~((5ETLJHJ|e7LY$LRn~qM`E3j8 zNhcX0Br(L5B~t#B;{Dw(x_&cn?>@^WyNPd`>ahz)+3trzFh{hpH*M8FT9sS}77v1^ zVar8hy{h=mg+{str_(0$wkCfssR}?`~-c*I{k8j_y zZ1V?J@IlLdc#O=A^v=N?%$nOxzQQV9{XTvh$|u>pA%lz^^-e(51G8! z3365*e(MzBIIu_SO^hUDH?rRxq9N@Uj0=&+rYOH^Q^^zcKN!3=K#3u5-bHQ-MVNzQ z^K)uHFP$v9kvW2;uq%wij!yLdz9#>MVb2FX>I-cDR6Jk}ib8Dk2fj_gTQD0~iAxF4 zvDs2Wda5@YEL`97;PP?F*kS2TqihSgU}YD+YO@8iCBco+z#Rw7wRf6qKXUvNnq-JF z;j{OSX0=q~fv3t4qd=>#~-ElZb(c{ki#gS+GW&Kd%Of~=~Y0ao5>nwd|TT%3>HHd{8jo|;s zFNyGmg=*a4NI#cKUcgm57dFiw z`wD8{e-?c|-u*(n!SbpoUnFJY;Du>PKbew?-!>@&#h$p6H}Zf1^p_Et@UvbKhPb>Z zeF>+T_&obKS44$Qa^Q2!m4MB_#)viS_6`n!)QZnFu?q~SwZn~Gc1h&w(JO`iEY%%O~mxYF3T zz~nx5AoN$3?yN8rWu3Y0!7tiC#FcL>c|G@DmW;2BsJypMbgcz`PQPBLQ-N@S=%Dg> zQZ8mRN8SeY4U7h4l;~LhBVZ1FN9cAqBP(*WLu;vK^PZRe!YCZ*EO?9N=e4?fr<_C&CU zo^Jfc5yc+xGxV9iwLG(CppMkD-0zT_iOW3;TmA!q9C$oD<5l13QM}SPH2FETRAvUD z7@u-DYRIq2E}Xv6hg~UU4mP6dJfDsQc3cO>qdYggMfT$lOsl|a75q3MM=Q!x+EdeC zS1^J2V9itb`Y_3zkT_zyGoY66c1usHND2{o|Lm~N9FWa{>rIUNjEI#kHvl_koe&9l zf=T5r2PQs}17il{DAqGv(_v>uc%q}0|9klOyXC^B|C@H(8FHbCc%nnL#wNS*32pnU zn}rl$GZI27k1!Ycp-qb4eIqJ2&Nh?qf%Un?NUFb8r2Au}P?KNf8;Ido}4kZ+&Xon-Dy*F|j z&DkSP^7is6YWAQHV_(7#E=d^(w1mUHsLb<_&wO3^#UJ=FKiF@SBV@RqbDUP4y>95v;s`^77vGF-3O6~kXnva3>!ePP>srd2R4e7>u((M%OME~9WqZ0lHizbfV7XgteBVEeIk7CG{+aye)#_mzF_T!phkmUHcgA?4$! zr|I>2^moS*oDGR)B@2CbC`LJjjm9n-a*Evkp-d$+04_H^Du_Aw09N^5i*3~Gzczvr2nEeI9>SDBsTSr&S*BCm!cnT zRQnn28uU)-!{YpWc!c&8>IKwdmCgTBV&jx5PwncnD_ZjG-MmnbBsrf+bK=+SkNDX7 zV~C$fu=6=m{p|%go{iPIqc*WLRkD>Q4TQ7QvY}R6f9@wH@sc#Y1`O9GxpsZ1r|xaV zPIaCxP;VFBS+k-?jI=avMJQL{ys&&WXm*1X_2KJ7;m_<5|2rla7>bW8pv}eUzbOnm z4Kn?fm@@kSYXnO$4r-O&>ffClcPcwDP$)UD`vp1;^NPg(c5(h=YRw_Ha(Q%ph?}E8 z$;t*}{RXvzB<=iqkEUrqS}LYqUHm-{I_^jU`6;`=gwE@WJe&vb%Yl>(9dKR_T04hK zN2b61?(vHQ(+%g+KtT;o;dQjME^F8)cVw#u z1wKG-he#lDr}VIcJJU}vS@}8AikXc$S{W-eI_L#iT7W4!B4FRA8xI$cT-KVrW8cP$3fPMFF zEg$z+|L|4s!!5K`X2j%5>?a)AN2%8J_Yz7GX1vTHjz`>JQWcuXw*Q5G9Gs94h3_h! zu`CJy^*xj@{epaL^PjTFhsHMXjDA5j6iF3ipIT!oTsG*O-?uwV>fm%_EH{UoCy930 z|5Bp!A*;Kubrn&J(PCNKEWgl2eT zMOtPAQv@HBF}WR7aa zk7GSYUhuCJ&PVUD+y-^Rsfv%c%b4b1-Xx2C!GrGkO+vUZdzUWoXOzonHJ6R3b@+T)K0EL zc$wx69Z3Nrqq>VOPr&D%DG2vrTva#uiOhb=!u&2_N8sfj!F^WhjoT#$xcR2O9+C$=^&6&LnQ5Aa68e_BG} zV^o*4VwW=ts^yG&HLinz`fWm%-_b2AK+$2It3RQ$>c0QBm(Ibr83bed`osX^m_xn) z$mQvnE?CTN$jj)LjEo(QhOv&-*2!=x-COO9slEhd88u>y+T;~xthH?UG9}*SMoPov zjSr+xUTBv_3zY?nKj)d~UsvDOkJbn_?xhx)0s=#)X{642IoY-U#hA`7r3HX^;JiSs# zM54Eh&6mZHm)8sA5n9Q=Wm;+p3R>Y4M)6{O;iJ$VxqHaNqdrjaI!S07vH(uVs=vbb z`l9B?@Z`L=Q|y#0tStkV7hiw)8?wy?SoIxv$g@(AE??{LJLdYQ%zIkH&Yn41Z7czi z7F$I`IGlrlwg^7q=+|WRu1)roB;coQ1&E%%;vmZ%2@>s%9&sg)CnJg9s30|7Iq?`c z^gQ&NZ%jUQ*Od5|Q_&tkAw7N#F^<0&heKNZ1PM_T~(>(jbm(s-wD(szLsOLUlx(X!5QGD8x- zvh_HH7SvuWz=3h=Jg*7`;*Vk>E*jq5oKCQO?%9EC)ue=(H+WRr-TAnh3IcQ z54W)Jl=&xaAY!KuDHFKvTP9FUjCG6T0+T`Ff~XlJ;xTqg-p)pOD7FlP6OGqb@cA~7 z!MN^=eiiOARKrwi{POvdrU&yjLS!R|2@k6g+uBDG!2kPo0O-z%=>OQQWP12jxDXNn zPNN!B=Z(6@5?U35H01}C8~T}DJa@)Z#s7$Lo&E);$!jAZKb%-&qAV*OqJytly49NN zoUb0@D-`~GblX}GNGRI=+RFs;Ah>3!=mFLb%wx1w3=V5flHX4>e~Xf=2Auwra!M=# z@B3^{(!2!C8xG%`n0VwC7)`@S^@sZ}H5ay+FQa>n!c(Rnl2@D-51|-?AXhtq1!|85 z+nFCuchjjb7}PI^ll+3?)Ylw&wzrkw3b6C$Yl>unQrn|8faf={G(^O9Vl&iIb()Vg`I`3LrTm$&VY{{=cn9ID$Ml& z@MCowr2FtfNGM`Bi3y8$5syo*R+{1E80XShJGLu#R3w=a1-FJF_pB^MMh_*?VE~C6 zF?J0#hWVfFAc%qu{nR5<0_v|8sMRR=UeppL~H+bv2LP<{B!-@HGoYs9R^q6U7r3< zHYP7Md&L@3{0j#Mw~}M4@$uXHPr|Glw9*Yc0liq_V5+O3;S7>m1|x9o`&em^!od|H zYIte`-d9<%74PKD!>Ou&wkVO61jKfnH{@m>5<)>Ye2nhc(fiyjt^_^sC7Tv_|1VUO>h)PPDQfJZgW_rlMRXz4p_y&9Pxjd9`^&5*H|A{&++REPg`mk{Cdh8-FBbM zWI2uB=_Sfqyq&EVF@d(A5gO-@Q|B2AMKGY;`-*NFeV994ARc+NGGkU6kCZkxLMwG~ zNSB5J>1M|mYO2G@sSjS<>jScHbA;yUtr4_#rf7Sx*>|gmKdMVaLFJ}u zm7a=fTY2<|3a-f@UJ=z4%}qU)peZK#Kc+zQMxy>Z9YNlpV$Q#VTZ6E5yzhkn5~V-( z>xb4C9{pT9c-#IL7!h2eb*wegNa4j|zThm>38{Y&s9a<7Fl_-UwGP>o+xT(5{=BOQ zERgJ)VV4n-JRG-r-5X?4>^%-v!>=sXCAi?f?xs*-2%laDc`h+hgnAnT-yDfDTY0s_ z|E&P3y(n02Eq9&La5cc$M63xk0e{!0PtKI(o749oq>3XAb_KT`1~1pQeRzU~UgHvr z^A~&_Uh!J}BfAV4%1e&)h$}0PBEb&B?E7faq$-L!^Gk(Q`YS~}ASd{cqyXR?CB(kbKU>Uo++CH6Poe>-w+|H;rUE**ee0HLC9Zb+fZnyz~+9$wun zQnNwPLIYu3SiS1>&qX8pAiMd7E3~AiP8zhr2cKL)_*d%|jsh3HiP7Qr0TMiNZJtmnNb2%u}>&Es}}OqwYa`C}9BkK{@I$-t*9mRu9 zi`EiZ>14*|Jc4Xgjv;+7x}{ol5{I#{{_(%Xrg`^S>Mv)uvi&n_CL)~#%^jO9hF|-{ zI8M1Q-r!_}nDBY2{L>oyu9LDVkV`wPC$J|f>+l2b5!qluB)m%?b5OQKBlS_?8y9(e z5^3a7*W4Djyh>M!8g0mL{A$M!ynY3bf5j@ZB<<~oPvjSNu?dvEGlb^GiwvvTwRjUe z>rxjkDZ~mbCUgrWbUaYPaiTwZOje4P3jQ#>C10_EC=BkC|N3jf4R3>a0R8~ScT%}i z>Z=0&Rr~=Dw_WipChLJ|h>jY0LXV9Ux6O8w9d~NHiI+#)zt(p!I=%Hnd@P3r9tQ_f z<9QOWt+&Kh!c(UPssz0%!+G69=B^Rz=x#c{- zsv%h-bz;Y{)VKguGeY~mpu#Z6i(ukk|Gq!=K!7xtAoLKOV)QOh$oMt85fND#q7Mfa zkyn#?2iE{f&MEW0T!;e3uyC?em~+qk8fHLs35w}WC7M|~Sl33a{}RCrE)AQ1wdYiwb)Lg&n{ z^uuOEe7|#Ztgr@^b-{Rj++At4ZM2#S$@Xvir5vdR&_ST5%(F3z2NdL{k=w6La?^;fy zCM6+a1O|s10mLVp`iM_Vzg`GRr=}6%Dp6d$SpM86@JGqD z4s{~3=HqWU{#?ltoy79>k?=tm#Jh_;8UOaJGH3grtJ^+_^J|bza0A$9@bn>clFcgg zpDaXD21~D&DF*5f)GKsRN~r5x9f8(;%R}9pph~t%E-1yy^@y)nU1fZ<S$rP5PC}(H@xt>v$+HAobz1DT=kSgSasGU z9M=_1IK%eJQTHhxqnr6FLWY}MaRoWYh(o37pG@$o;6_B|8l2;a_V@qPim0w21({o2 zvwZ5Y0Oj-l8Av);3A`$D_3Yvygddr{&2xAc?g78AuAAE1(8!}TJ3y*W_vQQwGQ@L$ zJLhj2L#<8I$5~ylno=Hg#t3aonX8>C%{}R|PC=&O^2Tvtxq_>YZ4tXKfo3(RRdRyt zBQM{DnwnCX{qIx*bBnEMZ`>2NJcZVz3{($gG6&cEM3Ek4Q07~FD<3UOf(EtypSC>$ zv0ju|8eJJ*LIbu`yvvECtAIB#*Z6XTH3JFOZQ&N*$aSN}qMy&M&=jajsA}y`gbG^? zPcq4ZDTWeEJXx5e7*n*KFmPG4FdbJYkUU@hM_RNyaX67CT>bI@P=W^UdqsEl){$|s zjMw&Zv5z>f=DU(bHw+(`)y7Btw$s7J<&to!UpGtm%*))Em**Gz^=plr}VMHn{q5$-JY*DEVmdqRIkeL4;7Kx*>bmiikUC-?C@ z@6y)bGRkp57;NwEbnX6E;hz6^@W-1H*w+9p``^!)y~A`sE~?4F`s;p`6ejWh#@%c? z9$9OOh0vsl1BU zq*i|&OMjMR(o^yNwe)q>WlS`63(Smz4vZ%E3-IEJSqm^|D*$q(c zy@p-|DBeWqs+|kK1zuhaUeD}!zj(ZZGo*=#kYSc`xkP}g|9;KzET4g^H3cLI_JIh# z^crn%sOa$#sJOb8MCFy;j3G6Q9rFJuMU?%9nmd!n*|usI2TIPA3T$DtUvKHTHr?LYpU%qSHiM|>sx{@HhMpywlX6qrY|L{4q>OxtRl=9I9zu$XElru?v*2XLJx5oF52N(G$eS+?*g~o?|RvyAUaUGWKA>1F3$3g#z@?*ep z?3g?Qp{Fg?=VFDRfi$x@mlV+D@z&FLxqG139UctN8H0Dk&oIp3M*be*k<)km{EC{U zy=p4qSt#g4cHX>wcR%mujdMp)e9cNaO2BsJBh>b|>P6_SqKluvgJcX2eyrr~ej$Lw z^W90%WD~;_2OhO8U4m{oV4b(VWERWbW{8EGCCHsr6QB={i7T{XVev1MX%keZ-va65 zhWjr``CGq}+VGT-6jtaCUK+3cXEh#GvHSCf6f1J4f zg?tYMNTv2^zf0PF{QUsISs;a|AGTYlz7}Mbx0~;nX~~aO4-l(Dg7zwXp%J-o^TMaT&O)|BgB%cNb&Hm3{UokkU_44 zNmQ}~SEgCe4^p==jiV`P#3-JkfuQEH)t(kH|R%7HZ3%Un3j(5!-*-KYY6c;Fh{g za`jNe?TULPgxuwLbLo?5-CaM@LD}vXi(fBq$<`%H@_<2Nf?iTPHeC^nK~m_nLND;o z?032JdFv6ixt+9*>j5_2lQw&bFGjq}XZun=d*0%BhuX z7Nu!uYQ?zzVrFfU0u;^2I~{vX&)!I!427EY2rNJGqyuQ4DcSPo_N=kr_W+wyB*QjF zj7K_BX^|gffPGHfGp{bqJ%}cWuMG*|jbg@^jh~E&*_)lZ9Cl*|5y$r5=oJun`kw4~ zz8@m&$NN)ZlsAJW`PZMC;iD=`3xzTc7;nRlC;=F6*B`)1304Ef`p+H-fr_ zzC94-uedH*RE8o#JXa=c-P|SYytd8cw+{%q8tL6YBeUtcUUVFO)MmMkt8-6d0l#%dvLSbO8hJ)A*t|u5~HCWn^d-{ z))QBW9v%VsuVCOMcBxJ)uvAGYfk@V~J7z+f63Gxb?b(_Pp0Y znkcAH%}yG9Y^i~K#s5`hX-#w1)sBr+d@wLCLd22o>T&?^rZ!&f^ypZFFZ2M9n`}4D zs(HUI^XTX>Y^j-qb494#{&!6J%^mJ%LO&evKx&9rv`BUZONZ0U@5k2u~ zoQeALc%Z~2z}hkhrs~)%UOL?CU5Xk!pJN30rw9Ee?jND3KK$P|bU>|+7kO9SPC-n3 z4$e!opqrl0l?LNaDNMs$ye1^`9^&_#8t6waOQ}m&YxlNzZ{K+KhW&wwOEouZVNA{& zjFwU_&a={2OMX8kI{k%_x`UkffNZF@9;JC(f_7$yqR$$zb_*_A&=c!dP6tW`3H&#q;<@CSsyd zzRskIc9|X29ao9NB3~tA0g2}xmv%KFYe_9_eKM^)`}ep)9;;zjA1d#jGF`wO)e^?t zPj00F`ZNUL*Gc@Ywb>?7byALBh$j=@@i97zCR&b()5^OLE5B{Ade>QkS zihx1kpPK-4XCk_amt>&OOI22`tI$1W{bK($)D+aCWXmwIf+kGx%al4ijXD1E6&WWf z4oeLI!vbinAl{z_r?Otv7yM;_b@>tmL@@#!?Z<&mmp8nwV_pyI|C-}=r3g4P5uc(2Gwr@v32bU{GS@?6>RM3*%ucMj-#)=+H9x2C%Ka}U` z8c!Z_mT&Jpp1s!a$oLuwx3WK{)UEi2!dh2Lm$47XIgkI z(Qy{fu0}uP!Bo}vTGnQ~D`q)XNz(?TSxYm@!)!ND^rBXcdE3do=&8a+hSeC`#Mr<$jRvapSd&2`KjZw=kty4-zhAB%hx8G569`^nSH?g`={$^Lt*TyHxBswK3J;t zun9vcT>VZ*z;oIazwrZidV_Yn*)~2d{xAJsFs6)#aLnp5)Dc8Wzcc)RLv%l-4b2)i zES6jGlGn>39%5nVVBHG-r}Pq!Nc8#EazerLU;FzHZ;|5Z&ntM4XXLpjHnQapilI8e9im#dSU(!?2}>(sBZtiCdsMy%kdZ=}dF zKeaN$6?yTfCExPV&lu+ETt5n>z7f3bN5Ldd-KUve)n{5Af0~-u6|$7aLK`OpQ5$Kd zKHA9sk}A-S`}VT{LrVSifNyxk%T^4Dq}X-jWz+w%0KSoTVd4+8DTz}PS7Zk$`ABQA zt%Vt;5rO_9Sfx8_GjN>sSHfxf%*tgt+Hc+n;@Cbi5WH4zt*C@1ieMVfs*rtm)XtMV zKx5-Dbby@IbxWFwRDW@At-B+@EWC2s1Aw#YHEqWkR)+VDE}0|zAN_!WY1FSxJm#Hb zzrSZo{CR!hx&qiNi7kUUt(Sl0c~3wM*k1`zVSISbpISe)yp=`io#N~kkg(}y?&{wv z_y+i*C+11o3io>OU>$MNl^quc5Q?XBklluOhxPUw2QE(Q+O>pR(Zs>uAS0M{pDdMv20oOZ^(@1S4VAH+_sAC5rK_A+12Hat{Z ze~>-{`uRJ!pVr^BL4bPC;iuH8qs*$liy(DdR51NVrB`pBN`%!#>XB0=tsf48M#?}B zP~2QdA_+GSugfb}vo|9DcZ z5JL@Ze5drCivs@MqnlJobIoxjFqx~G;K!Ut8C2p#Y{ZdTRKyJ*oYkEd@O7N0=qi>Q z3|qY`gf%{;;m7XkSuwD_uY!^CX^&ON&)Z@_oAzJ$e9&z(MlQw0dU5C4_C=yU0~gA3QtT|b?A+@66hoRmJ)8Yv~M?arG zs+}(k+LkPHyt11Rvd2fJBf9tFQ~ITso)5zL@x7R|{O*ycXUY%>5GYnbK)qEf0NeP!O)@Kw`Q?BJF5k^ylVn zs?BlS$dUgkajmOd2EmUmIbcwbu%5)^~eRTu51@HVv<`8G%4Ezj8)f;zpj*-%4Xeh3cJ}2(mGI(3SLjU|e4& z!=AOvQ+2T>9FNcq+UkQFB`QA(qpd?c)&aZH`UU^iQWxG0=q!EF6!=ok7BQpaR?p58 zx~%#$sQ0Mn>Z|&QiDgujTrBwIsEO)FU*mFT*E1J5lL?@Av;%>VE5S-*=wjTj)NK`CGVM;b;_ z1v+D3KFh_B8&6WryUb&OmH-Ah$5<)$9KkzSaX}fX>y^5#qFoiLO&f6wg|EXdpa?yr zwkHE3@72-)zt1-#->xX^Rr9rV_{5N}gfps;%_5b&qAM}^^**VlLXIIhVF?R}EIMs! zNB%my;&JSA9_QDqzROg+H>Zy24&aq{hF9w@y}Iv`8pwW$;YqHM&KtdAGP6tBHD>=1 zEc5jr*>{;ndzSt!pWKQRJLN5rEqP~MZskNyOUU_YALzIn_uPQ^Y0@rPaz>|jQt`8E z{Y4VAEXOzb{%p>j-Kkow=i-u;z4&XjR~8e=f+{y^*nk$BxZfwE zFzUc&zk^-)nOrZ%Uq1UO^i?4_)K}WKVsYvg(Q2nIVQ<%&gLi^Rdbg6a9QTK zh;%A<)-HACHQe&lQTi!SSOmA*w-2J3=n6>{Eyly_Z@IxsejqO;2^f-O>J4I~z{OOH zr%;~Iz1#a}xxx&kpbAXoiZx2*h+tApfoXo*irmL05XiP!b37E>hzR_A{khF_K zPS~XoyIoJNIpC&9aOdPWP)da%&x!Q9qt{;jIQWxZ_delzVz|=(A#F+&M^rX2C-?Of zGE7LkAZzXVPScw*!d{hti1DRY>lNkOv@y%TpmCnoRLHo;BqZ60h+WH0eN2YTmfEU-4a0cUXfqxKs=wo1mgUOaE(i95VH!j|Fx&i5Z6RT z6fK9A*n=D>>K!Co^8I@k*QoOY19JHg!{54vs}$ry@@vaRjh@Fshd=Id`#DhTaPP?Y z=ZR5pysoQU9k~6NQl0Po7+)rAYQ}RPV_Rwe3iE!uu!}p*!69!~bxBZ)Oux>)rZK{3 z>7>jIpT6GSK*E33e%o8=xaNas=%gTC?C&-pTs&Ulq1IHCm1w&BPRP^LW=y#w4zV!A zzi}NNuG42+<(|+h=bZaKfDrp}&{V$Zs@APy?^Y*QjCKOkyA_%TSpnzIeKkAKU!|9H z`R0PPnAhP|kXg(f1>|Rei*-GnnV+cC1&j2p{V?aNEeuaCGplku?vVTz+3jcPmDr)p zcfJOpgs2B1+WXyu8;|H%JE`n3hY7{&UdxfI`)Nvv+u-YFfG~jZ0R$d1Sa0S(7X7Z( zdimcCG32KDU*OhVxQ^FCX@+=Mj%>P@%wu0oRrkIcksz zH{bJ<&uEpOPAKQQ|5Ej{qJE=-mg5(4fB+jWA^sD-wZ%qyesU)t@-%zsiPVAc2)2b)H9v~T>j&1EO%C> z&4$(IlXb_r8D_mK6nOMOO|3`+$FJm9V?ebY5BFE!cMqpI4F}0@aRWnFOW6Y}zEdd+ zJHuB;?mOZih{&6_ki3hB?=rl(ze`P9V&gRx2@aF_)%yM@*Te-!ZVfs4IU#C>UCIT$Vp&_3jJ+i_#t!5|N#b@8?Wl3@sTq2YW?!pwI*t~}0OYH=B4}P(W!0YmluD`u}0>kSlTGe*;VQjW9y9t!8t~4kU zkCqyM@v-(jz72B_ zX{hLIF@Vrj0*dfv=g-#^&Zw#;&V68)+D`+C2|u_$C^%Y&A68--y9fyX8F98>M+}s(wOnG3>I7h>pXg`Rp}>-7_n=64E$4oj$B(i?3T#{2RWn0f?K_HFd|1%9cpTagvRZ6+5FpGlvLks7L-5$9R}E+WNA zRsMpdHfDML4sNKDM+}Fgn%*-kdC<>nI8qHlJdrrnZoB!=tz%4pN@f#IEN(9wJ2(7c zg5#4vPgbw~5}ouw)+ax=T06AuABi}q)tM~!Fc<%lfxzE)MMVCxkzLXam0XHHBKz@# zBJIe0x4R%jB4ih_X;!_I|1rjCb%t_6ptatQ6MR8KmYagSmNHRBOTqz!SD7MBLqJ_uI3=@ zc@?orNFpjk@EUHNQT|l)akdnFe0N2FT4Nk=H&{=Rd#?ZDMEKyy8J*sUifDihDFR(h z*4p>~OZVSd8ULg%INoo_ba*7;yXOmSEw`>rh87FW{uU}$scscD9`R`GZ^SdQ0uwEv z=2UaLQ$d{4*79kS_AWD|xEKR(t|>~kF&u`&hwir)H{S*k>lOwgUn_rtLvG_8c$HRc};cMg98a6DMS^1%a`7 zDkz3&j6}J!D_gZ;2zw(A0rJv{blLs_%88UkpBvd4*l713V|oSuj6G6e%mUtR@-56vzxVKy%Y{iM>~HuLtgyBXr7uJ zKrK1ynxzqvJ@RG|HFp1puD9%}GHTnlN$E}{7Tw*wNI^hA8j%u^E(t+m(OuGrbR!J{ zg0SfB?(Xhbta!Pud)(vs@IKE!IKRv}=6M|3zU>;*PXp}Uz7U@s@bu}Ojo5}?YrG4E zOih)T5qn{2{D*|Xpr9XgR%@+x4lAwJ%Fq1}v6mg8W<%49@zs=|~Wt^RRiB5!R%< z`TbHmUGgXDd!`eL&Z*sQ`5|O77NwtrdR#0&1)hOuN+AKHhsd|Fh<;XlxyZp$E|gGz zLqf>O@#m|20q6mJdq(ZjK`v&jhUDihgKlf(1kiDfgMY<^SH?WC4lw2}2|J5mC{QNh z%&<4r&p6tYIRR0tc6Lsv|6F<|B7k2)u*FvrT_-Ryx`2vyfz$iATUQLp9qzR#q*XV` zPp5QVX*2*rr$Qo*O4FRy1yKijl#s^bMm<;#p12o&M|j z8}gI{4aE@N;nacs?Oh z)FG%+W<%rq3!q5=Ptoq~b)eYpb^pbsQU6+UZUtIQ&E2h%3wQllFqS8+Q-(Il1-|PA zIuppie(XQa79-|OAx&n2fZHW>y+k3bGq6-*EMW}%wB`|=+L(RfFx_+jSwWyAZ2~!Q zQ;Z2-%M;%O`0%l|IpE#BPb`7JxIher#HKgThj~==a0ZGe6$)4ld{J$gAm`q8&iMJZ z7~ovvcYwqFJKT$a3GWy90+@Zn_LA}_7J7v_nK?R{m1!knh=9Djs#eFM6>S;0_%Gz;p+d8_CjKIUnHAd7PYVM zfPJ$qPCfgu6L$`S@pD?x(49zdc!u+XT{Sr1j+mC2R=vHJ>bT78snOwB@8zYy*Q1e7 zbeGe5j!L%i5_#-I94(w(=`kF3oCBi%Y1~Vn?A~GKl0Q zqt_wEmUe6ZlI*M^KF2;v&d}im*&h_(3Vg}tx<|`QAWR%QFv?{M*x?pbnL27xGmKOj z>FcFJ0NO7r?zy?4Ab1kh%AMcpw}|!a*&1E%6JB!bZiD6@xQ*D&(3uRJ_=C>$d&q_h(h0d+PxN818X;MR0av_Wef_G7U zqYl=#z719faow8rtw2?+{VDCVAWAHS9e4;Mu4vQbYhA{GeN5`R;tl{hB+e5ka7eV{&~kp221 z(IOQmiMLB;_I@jI1&r(gSs4NcVq@%TC*r@RovHK3s%9T7+B0ls)ri z4pyJ!8iu@s-uB4A1N*&FM<-Kofjbt1und>~4G zuZX|YXdU$&2tGC8oPg*mZGn&BrT;PW8QVFfP~B9o@zqZ}{MKm6t|;?;6Z>frLYoX( zL$J+k$VSIH5O{@)bj1q5U}u--O$S9PzuGKO!(NO}>^oZ`rCfXjKep3xwga(Rx`~>~WackU%>Fn{KF8aK zeVNw>0_0}?5Az)K-}jN$ChMR7;zZJnwQz-8Co^caXp_mxEs;^&*Vm0T&vh70I%c=- z74uA+=XTHQhI?TM4Cz8my8q;-{J$z|WxO8E`kV-Sd-pCT@QP428JmR`O7esou~}WH z@c8pk8x=KyiusPJT7g?26ZdCkN)iAX*4|7DG*qT~am*>@tKdLcY25RgPK~BDw8o7y92%`BK65Wtns$h>z)Me5J>7LA z3S)^yVxL3nBu1SOc{oN>0HwxK$_c$EfG%j5QHD-X+-zFpIXt(*M!CGt@x^Dtj_)s_ za@68m=?H}1JUBl1UT!5S=Jj?egMhyiZUUhG3yr)1`x5>J7M=N@>pJ3mmoqV%1;HSv zXWDyMI`xAxPE-#%pslGL!c380iSMMXb8`s z1I#wo5%HY2Ul80*Gc4R&QG@M&-q2d`9lIJlCcq76-)jD%82(OuuZIx7ki@af=93f( zMOpB?dhkagEZ4X$TbkQ0FKK#y%!O?L(n#Bt3~jYSBZ+^Z=rH_Ypy90`u(fQE;K2YW zZ!^sCKTTRx(=PUd!anAc~#qE3NoFnm_W ze=vEO6Q%EJ%R5$C1MZ%S((^KXWry%Dp=U04b{dp=%3Q6SP_qeI1ck|p$YIy44exp$ z2GYukld-pB=e*luB@ie@sJKV_hVZec6N^m`RtKXJU&v4WPUy30!Rg^*G_Nr=5MXcu z|JvOu96(v?Xcud82aaCIJ z03(^wvhLNQ3ONji6y2M_p0*}Zh(S@NclcG0N|$QN(maYBl{7YoDp%R_lG78K?oC`P z+$e1Tz(6|ba$yXF5)t^lU8Bl{A^yy9&eOHFANkkVULZ~-NzLhJUfZgI&%!l9o3Om# zS09RR2byFEi4fki7AJMDnVCk$C1lqup_jdA1!*BO`oQ>EkN?IV{)00AXC72LsTuvB zc~DE+Tl1cQj>(S8?u9=l#zs%{M@|)bA9ts+n(Jhbel%c=2v3N7B6~F%8b@V?m#_U{TbYU+Ha6XN@v7$2H# zZT2R42HBPAl#1G;kK_$u5RT#J6lNh$57Pz9pFN5$^B^}e8Mnn1C9UIOT}ndBJ&qnB z8)AdrAOZhFV!LRv7*^-I{mdvN4kdDIynGc^!Ft=oyY&1n25<6yBaVA2XMui_E)4)z z`$ttLCi~DM>*Jl-zfwL8>}y6-@6z@?;_skW>9$d|sw;T>e-c-UAA+@_m;p*1hQyq& zhjuE5waKUF0D=5LHHz)5dX5oD=%T1-7EX!5quae-!gk)hUdD02huLPG?jf&;oszcdKRi3Bd8nYldqYb*65ereTvO7YA(A+-?Rt4 z-jDOR`~32`si`X<8pGR??J!)_oAc@m z2F$@n2mt2?G~HDHw5-dQB}E=tqpL_P{L?;ZGSAqA4V6^<6nGX zA8v&4^-fv-JQn{L%RnSKshT!X`7+7-m!8qzzLU;wi&an{o1DVexxq4=sTv|Iw=dt( z;vY@W^1H=;8@ke#;11;KSu>lZ5-C}8F(y)z(DrR*s3MsQ{F`IFhFC{4sR?dRi(rIf zmcE7&vU?hR0Q|$GPg9$ENDdr>@c!C`;MtKmP`zsg4^~a%mKBh7R zzW7xakBslPd?`sTw3c+)Bp8p3%F70?A`(?5=G$I9+1c2{Q{E$YK|2(Xv)1u=r>Wd0 z;l>O7{g%{*DT_4R(51_tVHm*_t5XV1513Ly41CETEW)MND9}sXxOPD32eRk>&)*Pf z5PD?i%gPW*E>~CMW$f&_plE&rp<3DJtZ8=$jVq#dg?>0oQ>(ExdmLM6JX;nCj0#e2 z9QPbVc2cMQOlY#RwuIF~mtr9>Ba*?MTy__=Zkva@ifT(HHOLd_9_X69w<~++Vt^>$ z7}p0<2I7^^%KZNIWzMf#B%XkXDpt7gKrClD<%*E;<6RzQ`D+{jnsr9b_2}&|mXI5* zOr=N`O3P^(Xz|0DY1c>tyo< zh&Y-JN`O--@IlaMNnTN}=}X<>*W)hdv?Tt?V#k|eU0K3QGZ;O4S%p+J(MJCG%kR+B zYHGj^f-`+%(fOaXv2lr$k3QF2g!kS4Ue~h0lNRqdmjNw~@JJfh^h##Tj5DVSW33#5 zIY46k}EuE zNJUt>$8F;bPt2a(H_DG-nEO94AQZ-VbN zC|o~X_W@+4`1ObMs>TXw=q<1sG*$gtJEFE4*f8us^A{p=zUL|9+i%vx2$?(`Ym9(J1f>Sh2((jjpBb~zj3?^kbZ`=f z7+XF;G*v+q8(ck2!YRkIA?Ut93J> zciZK@S=49wj3xIgGrwQ$obYolG&;g*kWGR1%UmDGC2BVGX7^(;{^Isk>UwB`Q)nlfH90A9JoTM)h;^yEqZj?>BMhXuu71eg zr+;d>1zSYCMO(m*s4u&~6!K!!=_^D_kET87*4;&IuL`zI1z4zVzf#@0`3CC6Wq}P? z(l%b|keKx#m8h$Bk$5e=tOgO@bP>2$5>eA)%lvc#ef&GVBv%gcu#&0(fsZ;O|6u}2 zgTkW!bB$>I$i4l~HBvi4^b!H?&r8Wa<|Dj2Od0;I)WG{StY`V zBEh0o&-jJrYBe(uS#J)V1t1DJEBNLa$BBS@kuHb4y0!)S|9&VxGf`5RJHa-w&~e)& z%v3%1tHPQ0*A;rnQ58&KWdgBpcV>b(aX9l|HnnN<^2mC(Exs3vy7JQRq-y+a;^SpP z(_%%lJFl3F!ZWnA#=#7J`u?o{q-nJp?l}OMG`$?YaQKZsTe2cpzTKfF(DcH2-ak3@ z2pb1?i_ENC#xb(rwjoe)tiDXyJj^2qGuwSu5%M2~*F|ADcP&a3SdmDPqA&5&@-o?+Z$e9^%d6Pe|X@Q_8sQj+ZwvsQ%(4l(pd-v zJmzl4;4UPQx$WO)?xl~l_Zf`-w-KQCyhydPnq6PgfbvV^(#Vk*L_TZv)Y%G;NSXv< zR|&0K$EY$6d{vyp=x!7>Pv%pP7+F1p^=!b+*@(uC$0(q{FN(Mv=m2ol>ohv+*T&cY z#;%920x-yuizw!HlgQ2~O^;l)d@Nec`zS&~zlUJZYeZIWJ7kD*W!bni;hFf?|L%dh z{yXO|JY?VXqUjPt4)kw^ZMD|quJM7J@z?nnVWmFOuNj}B&x3Q;4(Cu zR-&t#yf%82S2XNj07mh+KbSP*Q+(w~k?aF@24@m^n#3k~t2%9#&5&?WkTnD#pV1)5 zZwSWG-YO5xVxa@U2y^vJ|JdekRfF7rp6oY=nqC5fwe~8CpN9C8;lC=EtcbodIDX!( zpp$a3?%JUg_<<8DfT@yJHj0b9o$Zq$xH-nb6^&=M~W_q!$ zZ!v~QYOKQy+k%&ZD6|lT@zjI`O=dw29<N@EI~Kgr99YaJdLoS`^-yqDaJ+`rY>%t^gDI6iX;&k?l=B5lVNr7!jRd`VQe9 zns{3q^-K2x!SaLK>Tq%`Kh21H{x)8G%d{vy@Qc!l-wHmcvUx2O+CPf$o;FodzBu>OiY3|DvRT1%^$lvyp`h>;`mnmV1$ zfq%@A!^AswK}zAx>n6xjD^$ZA@S;=0^pbRrj_0z2c3s zp7{s4>SHfIh(d=H%af}S%XE_{h4H`&@OiA2)I$;(V*^^`>d>@ki}PObIrz*TG=kU! zoO(f(xuVCGTMaE-AFf1K{2;}C{U0B4Ypo}9*Ha7AScis}jt_Qn!L4g~(s16^Q%I8@ zm~w~l-0xxUQsI^y9DvnyKB?#Q$9$m5cn;sNW7hY9H=0b3v^ao5*}AeD67Z189GVnR zjId6_;?oO^L_I7*N!u9v#;iJW1ae;2x^|m;qCd`5IA98>tz~CX=NXN$x3gl=~n3)wad|%VVTuBB_oRF z^JEqr9rzuc1U>+G+*nSgy>`$#G+;JpwrSsD{c@)U0E9KE4Y~$7kXTyY{@7N@&PWZ= zd)rb}4?LtuxLq+jjUfNp`*FSce*VBuH}HS&fd32lQhSNeOQ<*Bzpsa zDD!R=68q8Z7O&5ZDiZhXxRNo4aNw`E&7)Go*%BuCGf}BK*KTb_DAYD%IC_oVE&%UY zF6XBH*>dVXh~{S?7QL_tqK-JlV0vTL_)Jv9i%6ld8Qx){A*|W?Xdg?j4~-_N_S&=MimJVJpw8l!!{MxU#%j=gCRxILJSOM&Tl8j$ds0`k3S_|Kk<5irNmU^ z-o(Yr!%TcI{Ogx_QzX*1?q)QwVgziHk5sG8jEhkivEpDmfJ%keYy|e+q-MMoaFSeSSE1wNbLlSbN|VFj#n|g$Ek67kiL4M z+Rxf^pG)tLzjaVnPXYi@Q5eMVKG{A~CW|To&#&vf%@RX;g~j%2a%q7DfFp{UjhqN& z+sZ4L*;B!(rZ58YTOt-X@`!YQMh^a*<yZ__~B_+1py9LfOjePbqLe?2PEar*g^+ z(*MG=f}XiXJZ=VUSArOc8+Ag6l#%nx6oJw*RLir{@IA0fm*tz!e4Wsg?totRzFmX4 zcNV_zWAT^BYpBEjGPGs?WoXHs-d+5cp{0IdXxIM3&_eDhgY0XcIuQ?K{Csc`=8NTy zLKEn9a}yQN_g$<3vpcBW&GW)Qs;~+cB-ru39Fe(5N~l>un#0y_HAwa}Bx`n=fyY*} zM1-`DB#0%iO(zw_*H*$J93=#N%Y#Pw-Ujsz#kP-+0AnN!PqH-a6L^`kiYWLn4d ztHIz~2=dOpSXVWW#p7Rtc(0jaF~SSlOlw6awioKHr!tqrlV#O>Gs|BDOVqygjRuDu z(|K-1r$$tjox+RZZqP7|!&tm2IA#+CeNRn)IB}k@JxHz5bSlkN(akh*IJXR)?E^k9 zQ-u!gwkC5>@OgBne(0jZaE0ub!y2&22RDKxAOrMn~fuo}fz zY`m$H=k9%{%#|N#k@L(;n!0}nMiqpMAJ)D&(UB`!;(3r$&@-^#1qPRsGes#FcIn=F z2{L#&Rsw6UFlD6*2m-n+(2GE6+E)ZW*!5mp4AvntG`oHH@Ufu%>0Nx~W|xdT;ufZbr=?8`z>t zGr*@)Gsup@1pfCPDhiX2B>VG3jhZ@2&=6BX(2b-BodWP*qqLOyWeW&T%NJNbp_&Gp z*RGg-4IQ8woHSKQxvP>Ngnv8hf8yhx_hRV(|pS=n%5ZV<{pDU2=#7YZ3jj z7sdPuV6HQO(t?yTJ4B9FB+U_(Jv0i1NN?fJj}vIx@WPN%9cjitliby5cwmYiMxa)x zSVRn4Zw#gf#yN&^9jWI0X3UXI@D4qZIF)4&*Cyc^!_KstC-1Uk5gjs1*dRl(Wd4F!NQe*bGI%A+ah|vQ9LPN3bI1uRU;5Ofa~Q3VQC3LBtgg{B za~!KQbkWKlyUpY`>oJ-dJ;~3f-Cbf2g3?=)r?z#~U0k^scLz9f`Qk{)AkK{GF9&h0 zh*IYq(i$ni=K*JlJ^Ga2Ztjei9pD2L%LZVN-^=nav6T%5OznhWlfn(JA`)r1GwymV z^n4a{{!Gh35Do|MlNLeh$BoR?u2zWj^5u=iF|$cMI|jr>W-a(MZW|5&D4ka&l`&IR zKEavu5?@HWf=n&3Ya2}JA!TQ=4`oX#G2jhSfxoC49?NeC5sj^4? z$3Fy&t-6AT%GGd3Z&zG@2G_iIT#fEyw4-l^xM9An2#YMMMd{NMxMgkFf}GE!-c5!Z zeyw4+2o?0=Hm&gh)fhI(w)I`LSB2F5J>9IeDUVQkhj$2INvsfY&FWe~N1|Io+05yT zQqP8H0lXaCS!Edm#pgdKE=!XE_X)K0!*u}_(dm1ySk^BSPI&8g=$Wt+V}9gs;GCCB z2`-`V)Bw8}5Z!VC+?_4M0%0S@^}TlQK&Qa7YWP6}*I@16ZB(8wr(F&w>N3?eHBWmW z$A~I%)!pYm;O9Yy70HQb&XckTG5DY0+W}Mzw;dc5C)!{gqrMHVO@ie-JlGmYedN&+ z@5|Y|3v;d+3AE-Q0C($utwt|{`{=;)gbrV>M990d|2fYcu>W|CfG^(8H;n>;(kIC- zko&MWv2SOSSqNT#wKj+ua0~eY{w77x)jDvLiPv=3A~Y-c_pFN)qZM=iH0i?v^ZZ5P zz~b_b<7NfK(1k#b`^dD``u4QWFa0We26TNB&`NXj*x)#}PThJ|Uq?>Q0l%Bq^kzv= zjMc;s54=noymEOUO=fQhY((^ib<+*_?MR?VXEllxGInr$E@h5A4U^LPFes5Gr>5$b zK}>jCuK0{m!)9kyEL*Mt%+C>uB3sufSSQFUCl%6blZH(prhjVvg!BwH@+#qdMa5sF zXViR7(hcMqI$F5{RcfZp!P}0~r5K1F6QiW{3sJ>MG?Ofb3tKT@eYUV6IgutC%`+D~ zX6aj9YHju}io_^c?{1nvMz`t-B9AZQguBLOY<{nOFg1 zV%;c8923Nc5m>}9ku43r*$KobzUGRxt1@%#d4<-`?R`y)sE=x**X~6nv8e`b=Dp*! zBq|#RdZX@~BuH%GnEK>;UBAXyX+Ei0nl-)phqD54al-z)g!PY7vK79e2eIY|-;NdZ zRid)-H$*}wKXcl+oKk$=M|@L#S>F2^LPA37b>9*!ptgy2M+#uX*`CM&Ry+BX9eQsAH_0oCc55~M-MLgE;UdXNUhwuZ zM|`!J5(?*vgOt!<7WY*@n0t1+?x`@<+$$>Km3viQH)R$@-@A1ImOBf{-07vEZ67ms z<%<5%Xw6Q4=321h$y4VHU_IcV)XW-8^t8C~3~zFx0(>!uOE!~WY)ndW`UJTenjack z-ez5|KKNd#2<`?7G|2ukyOb+LL5j~`iLv}mBS7!B;ou-gs zu!F%r7!0MabJ6k(rtYON4^lrnD>sX|t4WL}ElSMfBW0(re&8xKji7ftRyYo0IicUd zZ7wtmI1}&FZN%vB%j2cC8*GBr(2cPu5j4E{JsahYC=rW7F{zJ>*S_K#Ev2rfId!IN z(1Mwhd$3{>vr53M(&kVc;j7Lft3q~EE<;^ZjuvbY9rI)r@Wylj$EQKfoC*p;vrqVT z6>*fhB4SZ&=|Zz478&WTAwAPG+fy-RUmce;5OA%8@$lk^1 zp`}uG=R3r78>IHvM5-6Mm2@4AiaXUBOymH)7~K6pqd)RB2(?@-;TQ$5v;$^^mc8Yb zM33&vj9qGx-lcz5y6JlRTtk-)d$e330Ueoox$ji1tc(QgLA}OOv%1f)k^LYGzpXn> z@_?ik@#KEHYA)p6>tq2BM=wwT!4K3Ip|A;N?tVKww2ei0Y*U87857qW4!Luoy<$Pa zr!N;&6uv}xGvPyX0CdC9h1iU9AJyCd*p(EzN<8zh+rjTXVxemWPpPWv5EtSay%Qic zmscL-xJNpsbZl1*;t@am;PWXWP>2O(0)SIu1v!yQNxd)H@E2CuUbOB?!5pDYH962) z-)uRy3cr^ZU{^yR>w1r%d#k80dQOXTpx^|Rdk_v7V%qnuPPk9@rN~?C)qED3QI@E} z=IhoW{=|#Y*_~W zYgo!_zuWf>;PmMB0H^^%@p(SH=J)xY(@R(ZHXT8I+s2y#wD{O%Q`LTJDIug#8uD6- zkCu3sp~bcZ0og)-p$rW)lL=2q!l*fxwm_FgEMNBwGEs5od?E|%Y2{1b{jUok0`O1c zMNZozfDE5E234DQ%^8H2i-g*_2JiW^qWkLuWdggz1eU_fjf4r{GnlGP#y+8v{yhkq z>0)X$0_$~&7yGsM`-uOM7jxQXvTGXjp=)y7RrB{ir!8r18$a ztqul#;r6CD7MRJL1bjkanDksXJSYU%D1W4I~%`RfZ} zO5dXd?FO7;Y=&gMLULqSEXE=h30KS?a0}dcDPAOemB+=v>Z2{9KsB4E_Ub;go~beD zkl?jCv@0X_m$>CPnI4&6WboZv#&GBl#AFhevOw%{FnTRHa(7WlV#vXBM*0Iu9?m|NWw(>C2!%X zOgSx8l=%jBK?F&SZEBILjn;cNdLhTFo9JfgT5dDBi1nIw2-s|qN9;l(x-UPNW00|! zatA#Nr=tO)_DL*R)qTpTvs}o4sOX#f3;Cp(_#2Uq^Z0qiNQj|?4($>);rSK{NRbQ#B+fcJ zpUZ~yC?Ts>wro|r=BQOUP5@gw4OYg zAInF~;l}ShVed<7SR?w(L47|$UZsnyax)8ESYO=y3Hb~Va3IC>aUBF&5nMUok>>T< zz(Uu4iSwmuq@w2i;(twUL2TX6XQ#t;ixXjbBhT~?$@GTh3+8;#^KTG0Qk5)`^OQ|i z#%KW6JNfj;)rL?Z@Evygb*(yO)Z*N^Z#U}lh18X>>&N{W)0;A{oBpf+zsZ#MpA_Hx0*fHhhcd)@QcYTJ+0mbAg6Tb{ zb)}{WmSffn_@6KjB1mNr7_S+HDph4wiWNQKza?(Ld6A6KZ+DRz&K+a3>=2u@lPMgj z=VcAHM9F)nAO@Oj`3g+)v|Y9Q@&1Fi$2J0{=W)@+Qto_3moB!5!0_ZS3MZG#ZeB-I zW0<0QTDnCkO!I~`=aZ@`fG&*v87oFg^RbU)Wl2+N{0sz-sIjZ@KT2l^m?XY-Yl~ls zQlWE9Q8tNAy~MfZ3`S}4KIu6e&k;PFyey^OjFj6_iiIZt>Xwo zPvShteoJ=J;`>24ELc$ziEy?r3$dRms#5l2L2fx~g5K#7R1IcwwfZ7oI}p`^^aW0Z z4I~Q0;A=#UHF!az8O5fKZx#Z9UbgzBrnNvIs?LHng(66g|Nc&NMvd`JH>K1@DaYz8hU(uq0Xv*a}-m zoi&yHIEFUZ>Y%$|66t;&8SAnkiuXH%S>dV~xi=_FAv}V_b`&go0jv=cQjT&vdOqYG z$cf$5<^6IdqOy<6AhE4`gC_R>OKW90oO+sH?p5MuOi>VcMNWK5lo)VHcil^jZ%i*F$#(7}+> z0dPYp7uxSb8jDbO(nopgf2Sz`ce9_j13bLEBR7fz#ms5uZ#&wWJT=y)=F0kmyWJ1@ClR7omieSB(Z1$ z0c&@tlJFdtZhmIT9zV;kcs@6I>0)=8qqWcWzb9Jr>VY3$X&Mo{vTr<9Oc$x1Ap5N& zbQIGk@KuD=SJ(;HS8uf@Jd`UPy2nw07je(@rXa=J{L_8c~AXC@%wXQUQZEF*M8wkZQG$vU5kjbmrzAoa&->aY8Fsy7$W@P%xIcBpsh^ua4us;Zc{R&f`i2`Ey1 zfU$1G5mEG`ts0vK{{65fs_}zk#O*rq|}jh&g0H-<9o- z{|^)pfRW*kdmP!s1j2RUN$N9>&m!CUQ~8#yQsj2ZO`i*`(>6U)g5P6>Se2~*$bA(? zDjPlRcn#@s3d#VCp}9u~?W(tJBjisXUd;fowt~P;hpvBGSfHKbSR;Jr=zA$^mJow%dfsreI2RlkJCGd*GJEo;5npez@l$GMl+ zhX(Q3CCarOLh8+2LE}4NXJ9ikLMs`tx{wz?CTmW|N4Us@=An7e@Whe{_=16g8Why2 zr)x^Dt!O=B$+);vX+2AP@EEO41n0$(JAYD4AX~8;qk{P5Hp;8HEZKq zwPR=FtEZ)AA?K&}ldr$Qmwo2UyQkldXjkzpf9{V#bCMVHE*|}&jloSGQm1v~*`xGs ztN6?9-29tj_B3D9)ksntnxTfoV^uI)BkWpiHl4S!6I z&wv9bXExF@Q_;bViks77Cfxi_GFj##U%_WbAC$4TJrUOehO_Bc=~?Wp%b^}=&Q#`5 z$4Do;^NP()*3ICo773oY)askZkr?zIoH*Ucc=33)`s%k|IlYe>)RtA;X5QEAn?~(A zD!N_jV)&Kt7^)BZVUW8Mp`YmaV$V$dwPF`1E=v440em{V(scSPVCMd>Qnpyvc0NS!OQ=3S*~hPc_i5G*iev&Xb-Y*a#}~3`VOh=YT!6=e zn39dBImD&gq2(|{=$zPD{Jj`*pQ>(6PbsdUj-kA>&Apo3sO#)!bycyF2jpiP@R0{& zy%!0kQet4~cH&am*$%iA=YHO!b$#dHDf2clJ;$+ule5gsB)X@+C-R*mTRvC(-#kTW z9S>$&lP1x0)ouK5*2?O_rP?;!LkvEgnn`mD(ofdFpD+~qIN^2Mngk`CMDuc!07D^C zbOVbIkENQze0HrHp3A;p4KBovdt1zbhEH1fC#i$+H=v~mRwyYmn*GX;5$&^(Vh6oH z_u1ogb?-CgH#H}coK#Hg>?J?i36@j-BQP#*@WjIC&vmh>G*=sosUQ24gtKlN>;Q2J z+phK}2_=2p(VQF8ALg3HN*T|YoxAX#XQ%HfnulIJX|~GKz;~lk&*43^`){sJen!Fk zlnI@MV`>*g9a1;6mu-(FPvj;tG{9pIOIZYdrzSJWrcie~GbWHLKt!wH=b50eIBh1# z&z1x*8t%{9IA)ugmQVg6mGvn3i78IT?eW`}P4zV*U|k=7KYHk6T|(KPqjezV`tR8)q30t;WW9p%NfAn007BH2sZ7RrpyY9GGu> zuNU+)Cv={#*1U^jQEPR>r@%higN)K4zhb>9n)q)YxrAY7sy}HM4_l=5@2RPkD`ml^ z{OUp`deW$P9^psc+A!DYS$$#O85ya)7^OFBpB*V{JFHq_Vz=uu1E6HaGc*#8W^<|~ z{hvBzx*sWa8Y?Bg&uFe3(WnN0Gbye3!N&QsvTWH=UcWA3Nc-2+j;UYLs6B6gVs#ox?s+prcA1{y3N&`T46x_tNL@4%I z;}s;voaJqQM8Vqzup+Adq&znB-<8;u1COB>y%SFZToqTOtc=%*%IjYxcHp9(P~PwT z5hd;$U*+NrwwXE-W8H)bcPCTGExBq6V6WUcZZ)WkQ-j35`tLWISqm*;*(5Z9#;G)2 zykFUO$F-2k#>OfbmYQNp4x8WVd*Fn~rxrcQezozCov*{n@eIAYSNrL2cT&`_qDuar zMQ3Nv&d(t+O@e|ht_;2u5YV}>VrJcNq<(U?JS~OWJ{8&)-DuRZ&*Nd#Uwo(~`7DIg zo<08jHuqt|p-C|rEMdVsHIRNtZIn|dK4`t+X6$hVjqrBKuQ9&+X^KXz>*1S4lp(Xw zsWZ44%K75`9N3`El1VqbMK70tmp2E?lAUPat%rrSEi|}PJz8%G6TSL_d%MnD6>OW- z4s#Y#S{H{u;z-1Fq|C_#*ro(TX9WV;!A&#NI8>&0mRL@H+|!?~BNo5X3)yiF_!vOF zV1gRrx#qSzLv>EA|56;8p7ct)pp634w?C65;E|UB-(W*W2j|b;-}qnC-eCYmvJp== z(*c00+aojIu=mT#7@!>K*7-*&WD{ry{IL8%YV|DU?AZaCIHhQ3Sj@3-yEN;2tu>U0 zF@Ll1EQ>zg;`jUK*pVN~pIji>xxQ;2RUy?*aD#t4VKcdi8*$>4L`W2$j2Jx%EF@Ou zeO3jP#1+H@w%wd?X`b8OZq7@~KM;}Pk*8^>Mt`-!J@v?zPn(k%ebo!>j1zb{d$?#K zL_t3uHxw@;j)FR6%@+vEdciIqJP|(qf1fub;WiMt<%Et+&zVyAZJg(TlUBmNnW34g z+^5TeLKdrxIYQ$`3qvdhX$luq6 zXRN5CE&BuoW1^9*3=qs&T72f9`u1J?0N-6U7VMY)PWlP3`>B!ccm2OXYkra%Zx!I& zx)1dKW9u!Wq71a}VMRhfx~03jTL~%YmKajHq;sUCySp2tyCg@XyBq0nqy}b~`QyF! z_u*aZ{W$CSHtRXh*=L`<_c_t$ni(v>XNazpC9xUS*c6#f`%Eo${KwAb zDIL7@WAUabFg-IAZB0lCZps+^Zl*2QnE2;BzIG~?92HAize-ERnv%4D&iMBWT6{KR z>#9U$dExAF2vw9`5MgHmBML}1+`2~46%0TnR1o#~<-UL{^QsDtyxNBEGavrgB6B-z z$wPUUOPlZYqwk5JaJOw_&T^eN1>C&CS5sne0j6-J=n;zgZ+A;(uxk#+kOXye(!h^l zR$&%-YpX9ss%a`8aQt@@Oj*ZIs2^KeO@|kbx*oKc?Mq(?3U*iCqud_LY5Ub(swGmT zW)k5ae zO<6ra;^`9bwB~Ucu|;(^8xts-c2}0kAaWPT0sblF^!(2Br5yA=Srw%`w5i@@3El}l z{Af~^Bajg)V*|DJ5?eNNbLMw{P9{IZgbH^LxXteeL9*smzk6fWj4Xp--~_dTUPwxE z0ys{TF>r82snBj*$oY{(#UBJru3r;}_gZAK-);6~n{FQX4UR7}LRpE$ogV7L-G_f=}Y6`$%F8DM$IcVnu<4U-@Tc z?A8=$w{NAn$=#Or&Op>%q3Bu3Ao7zG3FitT{Xr>wjrnrJP2EO^i2HsUR=#gg7G0S?Cg|0hIEx21gqIWjrQ_YY`7=zDCKda~Fpmc}K}d(z2m3b< z$Ii6Dz#Cu+W|oc&z49FiISz;AwkUzS$9@lm<;lwM6D$fbJalb#sX?_!_f?O?Hfi zfrIvPFUHBDYUAc!C*mJTXHgt>_NChwPrDtN*9jS zz>$x@L}Wf{Elo96W#*~0@z>6c|1KFJP*#5DKW1g4IREW{Ui{&JOrjVB-C<{8@EEmE zoZ;HHi0C&U_e}z!CNKCgkaDGI+^wh;65@JnSFCpk>4lp1WPD}2J_GQg zY+f^fqnl}NZs-LCUMCxGb|jA~+nvX#KRbScmg)#lcOCnz+N_qA2ex632lXagzki!m z{R$L}vcW?Lm|5&6A6Alk!R&|@PX@7tj_8~Z4Dr9QtZuL9phG1?Pd}T@e^0I+e>Vd7 zMqvYX=ui1F&96QyQD-~nIp#XSKfOU8AyaoQ8;kg^uyS+A?ncVC5w>`n7>i@RNB+tK zO8)W`k#!~R?)SrlN^8sLG6evE+$>)OJ>0b2Kiztqv~#725}ISX%=In);!e#<|0%r2)P`tIE8+*EWx{al(A# zS1_N}g42%|v=0S{KY_{fS#yF8`$nj7mgS5+Kkfz{XV|oHOG0e>8Mp%vO`2S|=hDJ) zdLy5`wG9bC2E%MK%j-G7+balK^#5S%=l{Uga9D%*KiJBLlmr2`-V9HkOK!KiNP(rh z_o7ec>mMRc%5i!?Ex*6Mid`>5JUyJeO7I`JiBmV3+1vJ-Nk0h#Nn1VMQTMEOt+X-2 zJ-w$wj?-;SqV%6wz@pb|v81)-UxPUXMngyv+A2Bj!`7nG%#5 zioVqADg1#gFJ`Gb*Ol{hjQxS)>|FS>M0!uRe9P1pvDT?^3$ zKmGel*=gG6An)5>4;=PP5Qg#^wQ-l}E#9EWs zCYx@sBF=M7ZjxFVteUUim4~VE!=?R8KQ+BT5~d_Q!d6^M96F@LDrvORI|kYWB;qXoM&ucddfj{t!= z6>5~TN@mB)5}=E|I&!38pWUh?Y-64r>pWNBbp1)_wba$p&CiF#TDv!Onif-)TcnP> z=P{#>#eYUx;g9-J8Ucz?*#Y<-gZ;+t{0+zmG@^pPFPuDg)sq_(Q>RE#Cl z?*8VnPtE%)I;Cun69$ga>KT6D{LWJa*^zU8S5?x$WvUWea=uopuI=DVCm3bCDAB@b ziR!|$Ex5l_+c}5|XSKMb;Kh04OXba#Mvkq+o|FBs_O(Oy?ZKi<;0g{?8!i4syrx`> z>=?Vt>-v?gYmOje5;b&m#EpogcFubZVR4^9ha{QK0+iKDk-GO!Rqx$#0Rf0I$qo>h znGz-0gUaT`oH1hZdf%%T1_GQExs;_%)ons8_1fcE({~ zT<1`WVdrXM(fz66VxmSwMKSW?Y^phCncj6IL4*@6`Tq-Y(f@&5hMkDj|A1UP*F8i# zV1%-Aybm%g9p#sQ+P~v;mE-(JvOQ1DcXX&iW$SwPL^}TwM4%2^wmA7gk5l0M1O%FQ zT{^{Y(>4U{A)NbXww(OR@*#k^^8?R~NABC1g~Em}X4LGRJLa{?6MdX(BP8kwJEEdJ z+QsT3x%E8)LyXhgY4Cg)N%*1*mcTDF0u10=QTF5U5tdx8#_X!}yFXfkiblhnv!Tzl zhg+h3_m1A5=i7DsX;hkf;fkN0su2ve!W+Zv^8Yttf%q@Emy0!XSX^OVmsw>H^a5RJ0dxUM-%<%8}KpO zHFP(>%ZU>|=GD`-f*kjw5X6NN)B3cLgbM19mkUX_0dN-Y1oMr&MMYLqf`n!VH0-oerE zE?v%DrQ`}d-GK1=^i{XtMg6?5Rx2@PB9>rmtGS?AzdX{TC&@;`kH%?aLnxJ9Omw4OcZj^2uXe#D)4>$O1j}M;!5h z`)_DCr0$X4D??7ML)YaK`Z_nmQy?3c%FvkQl&nL*#8szf&M#F8ae4Io!|;H17tcUe zq0Z)#vnvTIbX=gYw}ow)u-zE|@oQxdo^KNrVf{O#B4crfdf5k<6Ca=XGTnp6{;a%m zBwE9tj@Dwh;G!7Zl|{;je%ilnhx1JWE5Y8A%4g^OyzCX!K#~<fc?P7pUl!Cd5F&IR7FI(@B39Ds~9mLWP<%mE)Tcl8i?RNFVN?Y zt_;HyJ=Z7&0{30}&D#{td0I3oK1%l?BQ@rY^QHMZ=OEBYYR7O`nqDg9q>JfDtJd9wGGt%GOn8SPHW1g%j1L%U=z@e$Ozd)vZ$ zb8XyAaOoRz?tH2HWkhX`?WXbB<-;0i%cJXNzW}^faXE$~4klK6r2aB=c0o9QH{36J zixu1)6tMpsSV7isc-Zg!M^n3{=SUq%oS64n3g3^WGF<8p-i!Z$%fDbn>pbR@#hBhu zX8J=h$-_#0%0+~k?9&f4#h+ZJ<^9q(e>*iRJIn>Ih-)+vk#GrRQ^_Phx-RG`lzOxO2c*($MJ+;5X?@e_Rp2pk1RN#gW9;14A-$9FC;lT1sdY z2I$S-$cL5*K4~z=&sj($u?C5x%z$uw)md89jO84WN zGa$?a`=|f`cb{LKhDV89fK6L=c{{2l!}+p$JYW;UDTd_FNx%*Rn72T5M{@JWW_j(7SxJ?=WM zF)^PaTAoZNJ-d3r)I(Vy<|kD_nfl_}guIb{9(c0CcUx6=J>orlm))xgaZdCcK`!*& zQ1nxJHHsE^r1a@Y4eH=E4rOv9^?+&c)cvt0dbWxzABamD^W={$}uxteHOlXHHj)T(|#zf%d9H0F!XY(Ya<0=(A)dDO_6H9|Nd zWE{681Y6`L2&Vaj&3&74erIUte6Z0i=O-VQbd%VEilhENzo*p;5PxmTF}WVjJ!bW# z#7$sjG3DGrPlG2a0O;V&NWHN{;O!junXcsetxixZYjy2hn`Vr;i!MRJX#|Cj6N2R` zDS}GS1QAL8QGv=U^aNF5!{_m?#91m3dK;hb9B`m|aTX6QP(2DdaGI~#1}n@10UklM z1Z+X-iH=sry983G<)~p@Fz0>T-f|QgFB3BrHNUrTE#fN(j_)?&a}RcgVp*!o2MxG~ z1lWaQ^z-vdh4i%}F%mtv-|#0+_rFP&i++b0UQodd-|zcU@DT>QfT^or0f(>4$NO${ zH$y?HJtWv&q7?z_2r*Bw2UclGCviw2)~;a`kekVa{)+nkDT!Z*A*ZG|USDb@j^gWi z6?4U)kKE*J!tTpAd=9Kb!LBO{-{& z|J++lz7hE~sCVOsKjmc~n*0~#ZI68pAz5@dudJkF!vQQd(`ws-CsiU=Gaan(&4OR$ zF6M1|2z`q!IoB#O+wsM|FoxYW@eZEUq|~r+ZNz7S>_?OwGC)U0z&Q(kx%fE@$z0AxROWU=NZuc7R_1!ovwbA-*W8P?grN|CWN*9>h zn7DId)k7X2ouq-B@T&_Pk#Kn>VUUS%NR^`~5*elNwLq7h-FI5MS0l%%diK-sHiU*J zA@5})3%aR3{7Hc4ar(m`|HXQVe|g{c^i=M@xeK3v_Tuns zo>ckhn%HvRTeo}Z|2!;1TnhsEcYs`oZ-Cb8$?=x{y_`p$ogXJVq1f5j5<5F5g|EH~ zQr7BYQ-0YgDy9qxE^BfuahX0Vco<|ZZ$})RRd~aWw$(`jz|9-Sd_HR@tU#&-TpD|} z4_0AyUHfQ$y52BPV|1Jm(q-un3M1DjzCMs~Jog;8keJ4oDvM;~>zGha97~r#j=z3| z&n)mv{Qp>Bf`0({<4wfHKY*Np3t3>_63Dw3uV3nx?o8U|+k9M2SYZrg3^?X=7BDda z`YS)TUMcaXb@~GFz_Y#jFEP&TknBH=IKUqsH|pE>%AF^}h|M6WCH}$lF#g+NL_&Te zFC|}|gTwYC{Xq_N;{zrWXMAtS>*wUS*`8UXfIinY4iE6?(F+bbOZzI?B;#`sZYX=oHB{VeYy1 zLQDFFHo@B}R$8ZQtmYM*fN02MU3?k%z9-3XvVUQ5S{lkaCUCGeIQlAXXRc8*VWt`s z)_GW z>G^sRR;8hFHpqWQ`Gn&$URLqz&kA}KyTKmpOj5cnmv z4=B9&&utXW3mvA;UE$0L)4-}J@mW!cyp1~p8Np`H3$HgF%Rme>4tqSm(F%{Tq%00F$xpTt%|f{2sB@QvkL=I7>LTDw<&rg}569{gMvR~GEAF4MP!;MO85 z<9(|fvYfX(6i#pyg}c(b1tOC(=V_mfF+Of3xUyX6q5f8baG&z^csgjVZxA!V>rVD` zM1R?rCyq7kTK%FUA>}2+Y`N`{U8O>#`RL2jIsRn;{Ho)G0UQbJ%|Bh6~5P%E-fT)4qJ zu^O#{lgbbi?+cIH2g;VER|KDkW2~_<#gdfDy@Z25{(2s6Yi7#>N>rmZ)EA(2adpy& zT!tU$W7GTGC>%Q0zcz;xv91WnZ^wx48;y*RfL1lsd4$Z-c;)n9Rw{m5f}YKlcZx91 zUjc=wW*4E=P9nCZa^j1^;FW}WQgBg6mpc48SL|M%YR~I}IH$`NfFiwlt+c`i=;>Knz%e#12 z<)Qdj%CSKC=K2*NI7i*a)j}W>NW{DUZkFo<+nz912#7EK8bSrr+;)?eL&gOP)J9yFh_r;O&GwK(zx`1Ly#)ct+?>i1YmY0)f)zk zT29^Pd)(Fe^1_h~xPE@48V6cD&m|qr}#A z!9y8HrlvMNiI0YnQhS-}Bq;AsT0W7ooR|tcI<4GimK~xbIo3u=>q7prLMNmR(0dcM zoqVjfd)6Y@Em|)BP+82FZ@KM80hR0Pdo%jajfw=KS*0R%6{zU@rk8zasE=%{OUS76 z4wbe*1Q#a>?`{IA;GX+o)lCW9;Oe&@MwR7@+Mb!>v$m6Ca!O%J_kDs2OBbI(j}&qW z$xWU5?T5CrEyaE;R~pS@>0h(>@`NNQO^sae!(lBpT!ghgZ2G2?JIL?xhD2I4@NQ4N z5?*zp?H4%B%q;KE0UedX0^>8bg~N@^1%mdVx^HM7`qmrJnIYArVJ^O&j*#EU*oR=ozf#@3& zINyH%r-)sN@cz^U1*u#?G9-kn`@|}?DvUwOAB;u)^yP%x@&C@y!z;s zvB?%V5ZwZuk;{P7scT^jqJk#ZASxsxG%;-p274?Yv#CD`=l_vW+p@Qx-rIdXYvu8Jc!{=DWN01W1hb{@WuWxq%TD}JU_~463MW^qe7$vC z|1g~yzLxA@!wBl}fh#Fky9UBkp4m#3Z$(pq@}?Kj6=K>8yMy&!lL*|e!6iO;2;77^ zvHQwBX83PBUbl{Y>(pu#`0Yz7Qqdq!ZD!stF_t(5LAT-Fd^9f01PE^5OQ7AaVemOa z=73yhnYQ%bVCgWE#(v$wJ0Va_Km45iZaQfE1WVWgMJdEo6cN^*K+Ye91}lOj&A}lG z=<<*#;nl^@a6NK+!H`!@-?FK6CE`U#-MCC!xP?T_^D(mpmMK3a<2ZvyBUJYq-#-=$ z0P6S{bF`0jy59KG6`$bq7R8FnN^-~E`6Ma`*rPo&d{FQspkTEPnFZEuMM z_2mxwLBQKv60(H%DInUnhF04KsXntKmSX4e1tw#^GiMh7jPG~fi~o(6Zi#NN+QvvZ$5laX_X{Cgc2*O= zwvwd$&OGF6t-eR<>p*{X5coApLE?S9%P?_Qc0qK(HB;c_-;Nr_(Zg@P0Uk;O#(T?L z_?vU7vFB@&7AJVKcLXn_ad8SNDH4`NVLwkQhw7zGuKtjpUZKvn;)r^P-6Rg(ctboc zLa}wBJiT*AxKQB8N9mRtpZ2q=r}5jXrtv<}z=t`N^7^2C{EL2pKvf{%@iC)3rvFP( z5c>|@xT{+X&Tu5Iqje4&@5!{THy)ak#CXtE>#omie1wRE{_r&9I<%iFdKO%`g4%M8 z!(@AT3)UBYEXDMnn0hokm?^8fX>pnOv_(bcE@%S3nehH#?f73w;X59T%FkZlS_W#6%lqhULuL-u zSi4wtQyzWluU3a+jp-0GGEf4?QiWgr^4^z3AjezTR52M=ig)40&f32Rzu$;!)C(~7 zTS>p+NR(ChE4=;dW+Udo=T=$8T%BEkVq#u{~!&2zhR^P3s8+RO#!DuKe#M$sFeLf=FSa0cJ`!X&L3&b`@G=#a2{XF zLWkD$Zq?D9e|^j`|Mrl2pEj%|3HMhvM|5{_C)SUAvOU%|l%%o;00t+DrNOUj4Mjf( z=JRl@bZ24vly7UW#%6<`mRUhhzJ5XonV;*G>1}OSB7>V61o?j0j1FVX^>pI$LRD9x ziG?{8P8+=Ui+D3xBv`tWUCP2gI+`yQVl5ZxLu%m?seg!@?a$(+11Ss2W?t465ZFhr z)OhqJE!vQ?G&r&S<(ej867;(n_~{f?uTjU%zM1<~%Z;=1lxdBn&t||!8*l63ZIQin zF0JOS4x#+TormT`azIsoQcdxt=TSidHL32>PX(JHd(K4K_Nk>S2+2E!y-q}}{$na7 zHSKA={*})9*PkSR5_pdI2MiuZKWyyn%7%yIyrB37S=8U<39ZK+xSL;=5G$iO*MB{; zZ#)UZGM*&}Dph00hB_f3*92%)oKE(gf;}Xf?B%@ohrVB5{j6ExKB4*RSEg%18R(V(8<66I}o)^pT==kBy01@BqDdP?F)gA1h&zn}kIH z<%|8j5FJ+^w!!LulE;1nwjgM6i{T`A_DJNnVJ@c2#Xr>bIlZHo{}z+GUpN%a89Yce zl8}D#P;4Yobxcz7_4@sMJgD{V)}stdE}@sg;#up5s%o*m7!F}ftnYf4@O|EKHlqSUeX?Z#us%T$eZ%_yp zAE{2VHfHVW%VOtWPtv#D@=j_14@(~4qvsFm@9_*2q0brbu&Am_=h3m z@0>W?+LUz+X)iCy@1}j{$%sD1Ot?EgKwfD@gFgDpzBzuZH`%qw_dEiQWz{&3X#tM^*F+TVH`8ghwuh7nIyY zZlOi4+GO#U3_;Bzk;HmA(p7D%+{P1qgUH|(unKTo%DK=dE}k)Dl`v=VIReAn!Z>s_ zaIHlI6LZ$sIzbeNG`34b2Qa#3VbDPR<>q}G_S+}~l7nZHg10G<*g{SX2$t*cDJ{Gy zUK(mCBs^Uk6o)&&PU2JoFzju}pO57g7C0!I;{6y_|J|$}K}v49i2emj!A0W46cRBi zGKlm-P6Cv7FcmZ*uYgP8c{ldZ0Ut&q>(IcVg!C01Xk9IF1}O!_N;4%XPW z$<(d4xNd(>O4|5CJ@$Kd9ra(`f{0kJyIB{egC<<*ZKrr23lcEeE4pJ0KoeT{BjEI1 z4~BC{e_Z-zZp-m&{6TjZ;${NK1#YB%uA_fSUDbDH3~=F>H|AgdN#vXHAXn19LmqHU zQ+DRgz%s|I@BUDN@;WrI^R#ajbhEg_gihW{x*u>^rAY$hET!Q%p6Cvk*E=@Y;WUgK zFH5m@b06!LN)>*-B37Rd>F0|=sCgSv*nBnZsPkyMZh1%+c$jAv6;lg-A46BfL_*kx z*(0cD8a(N1Y((o|=hIj}vSpthw{`_FUi>CmL$6%l)0j4pn?1MXT!rYPtJR#`%lo~cN{jH-0z7K!{r~4OF;H+Fe722F(XR2(@!bB zvLdz>?oa&{0Lm2>nEYvi{9|$LQqo($GQ0ki5)vqr-8_<#9pkzqFfAeP38jC|!v3e8 zf^q53L$;~XTW|)2Nvf`t{B*hFvleI~G85+lt?0MQ%(56IEyL*H_%6%GNI>vt12R)k zv`&ku&3n8SbLyU@Aw;flUZ05c;SS2?#gA-DM}JD-DW@K_{{#>xc2s7cC~$1ot)yEi z%z1%}#K5mhUJM%BZ;)L*YD9GViHWeH)c9t?4KRD?r8hohqK$~Y2F$;r2m2HAZ4U-# zr?kxZ{f&B|o~7HIX1(piz!_X}P|K|pw|O_OMlVz+wD|M*hp&)wGx=Dx-I6hTU*tM1%dT?EUUW9>l`2ks!#3##XR)0Z^$x%fP8cohq zy80)nPqCp}Jt%#=wcy%;Vgxx)#$bsQEnNH;wj`HDo69hcw7=8~ov11~?z;z^O=Y5# zzE)Z(tH@fqQYSknB;W;Oy!w6=a7aw(ze2qKZ=10~mU>!iS3Q!167`i$LU&yCg=dX! z4G4w1uE{ruk|6O?&S{?8q=}KsYjxMggAiW{6$vE`}471C`rW+5AEr{yIB8*(8#uQgo})%wn8FlclYn zP|K#ouG&{iKjNly)a)HVBDbw~dJL;Yr7pJ}N z-jR@I4=G{%Gz;8!RCz6D_bBXla~d&|xQZ>q4tKAa7s_E4^rS{NhYIc!5x7bNW@#3; zO>3sw#2q9@*jrY)yJS7Qa0VVLHAasnEY-$#$=mm#BN3l?vz8^LoXrdv9TpdZ^GAsm z1ud=fC!aH1fuqvX{qdnGmQzn5!ID3Q*;y@a=#=EpM9@CCebEGh>3&9ueH(PFyvtn4 zeEjy5w+F<2-tWc^6qGOrm8PtcjvP-%O!n02dtk?f)5>r}Oh8JayuhB5qVzK6+m2NW z3SXFok0L59pc7=(Pj2;X+%G0bR1+DY=_V@&uoOBE-|XVXsd-lFZmrKH*V?kD*R1cA zcajNq)85{CcvXG8Oa3b*u-Fo3Mk_fd5f1E^9# z%i;85Ke=b2#D1cHVO6!sSd0g3B8qp9sr|4R7Z=VzYiznj_Gh!ig8F*bvwSsxXco`J7 zdrCU1(5?DSEkdxmT^f6?&n?+pa5*e~CHl*nrTS8<)_s`Yb}vXHBsT8%ICzfT*GIz3 zZm#X1yx@<1zx;4Qh{$(~Sdr~vk#E3{2_o>}=)l11!E9~m^QsB(LIA$^N;~%{{^8U> zOf>hkO4J${(B;{89q_SYF@BkJjyQ)fHSl~GT#6lH{<`ZdVIK_#xp@Wdby*{?8iaWF zWlgyGv^VscWl(CRP@Dz__B8PN3#lwObXej1?>znPGOlXVv~OnS5a4$0^Vlp=^dElH z3xOO{x266_^Zyc=&z*+@`NJNtIg#4y-y9`L6+HcPAzqOHJ49448=ac^oG|6)7&*s# zqHW@SE>;J9c$2MXUQ6$jZY27!DS%8 zg=t_F<|n?tL%w?s`<&${WN(#t3&c}o2iAj(90iwftC)g38B0|n#L}UQi%{*mIwW40 z(zhP~Cvg&!rHoyo)uzt(@*I~Kg^{7o3m<@d{uzYS6gxyt8*NW(^*;u39a+e16hU6$ zjq=IXt*q}j%CUl@=0V#b^!9QY_rC$FqgXX8?6Zn&;DaU-$~u8^TrRA=_rL;n+ZY7l z3B#mAnwJ}j?An=i2!rzISz%Xb+g7oz-}={^mla!+8}fSqssjqX#JBT4zeAX6_O3VR zbs9%pxkpXhg{I7Sf4adZe}*g!hV?(rl3fq3Ek4gxfKbG$-(Ej128|sUG*Gt(e${OY zg|Ka`x^JCKy^875(5N`3$Rc{YFBUBZ{Y6Y6}xAYe$0l7*DYnBEZ^i!c-x|e zuJrKh8pxUy6BqcM!)`THx$4x!fPG%m*qXq4^0wZ<9iZAVFgS9j$7AKqO;8%YXK!kJ z&Rb8Zb zXgjTy@82VTXMpmIwxRvo$88baqRYMS=XP%v4M7T5dZ2^T9ur6e?Q9J@s3_b0VkBA8 z?R4_mX}Z-wdQ%-%LVctJPeE2dtJ)Qz7mvE|eYZ0akxM;FH@)VYoN(Pe{6J%{%&(+q z^T%@a`A*2O^2^J%#;Y+VKUhaA?CTpGDYy67$sT9$^%iH_Qa*zjrW|8+JObYQu#BGQ zMa_XeDG!>dNPz#FVqqppSFUca#K;S- zkkAqZurIxkt9O+j1lnEHpjA>gRixObi3flY>c6{mcNel4J+NB$s{gqQa`jZ*G~s z2(I?e-fvrXZB;!GotFpXDT`@2yy*B?9d~ES&``-ogPf+D*-XfqUs$a-jH4nMd^Unn zLv~^@9x{d*)v0Ji4?-#tvrmXUrJ^B}L%Hht#%IJ4{K;i*BBoXx!||f|lUUt2AJ2yk zb9__J4xA!iyK^0kLJOt0F{+O;C~hk4BomD^H7IGGcCsXmqkBs_sU^jOQ>di|e?=w8 zBJ~;urGZFz<_m*K(Svp6^AvUL?6+f4c}>wj1{cd&1KG*WOFup62+4+@&nty`;~O9= zr0a%JEPOi1SpPhwO73=J&W<+!wocqu^o&71LG0$GdQ)3qQ+FI;ns1mr8tZAuB4j%0 zct;7asTmY%FpOi}$%7Pxv6<)a`wV8u!@*%f2~Ss4uooC=Twr{HHU}a)T=u2|s_o-m zjrFCQy;{x%UIH>x3fEa@a=#B1dt{r0@NQyyj~&3gEs}Q6utVlZseP&zZ^JuBHMuO` zgZkqM)Y+|$f6@1@~AYe(a*Zkd5eutjOX|G8j7ky?nie@fLpswd9j=Ok1fM#BOocPR0OKe1X*6f~f?WO8N(;KmstxyVJhElQ55;CRU9~7jP6LncUoqzmlCE03;T8BHW3Jyj0c8H+RC6yZ zN{Xv&uIZ&5+-02SGSRnn=+V1RjYC?H4)C&Vs*{9g#_KT-?H}WtcsF;Smk=-^jgIb}ubpso+8D}JyXROj@9Dv# zCvXa;-ZL7AzXgK0BOo?Vt)u-n{I08}P4uCn`5MV4eVQ6~ z@~z53jG5HME@%IO!G*u^osW;UF}n?-0~WCuZsUfWXp5@?Ubn;^V%Uso!P7u zFQa;wq)q#sz+2C@)Wc@B!)33jyjIG%{=6xOETd@1AENLHJa+7hv8K;9z?Q~aRJm34 zaLT-V#im4}l4g1~py-qLtnYAJ-R7Iz|A4y_zlMgn`%dG`U z18-(NxAOYC0B#3g5U5gmti`?K9?`k@(!bE}13!Z)6!=U|RnZev>8-kGsNh)|9KXJN zeL8wkLA*LFCAzAS>sQM!Y-f)}h1vMMq2SA1)P=`(r5bnDmqA4j$Z9_A^J7!ijdnO-RTv z4yP4KkPLj-dwKsZW31l;o^NMh!-`C&qBfE2qgBVnSs>nEaSmkn#>*iq%4 zp7tQPky<$&F$(mjh(DFjsjmBVlB8#DvjY)<(!B``m>ZHt)9mXiZnGtbJl&LgM2j^m?` zl-P_&5ze(5yGYdX#jJY~TbYiwIqG?4Ecs1QwzEAp+9PzcG2dB6a8nh#DiywkXg?ay zezpN~SJg7e`-kW}#rNmti8me#_?_2yPxcX@p}&({T=`i3U8@t92n&Skr}9~SrCt9i zmH%%Fsl?iC9BF_)ew^D3999-o}8Z5{(Lei5cqOGfJtewU27w)S@24>I13o*7S#kgyh#S5=`TG`nyg*&FCv}f? z?K1@5pmu0}^3!4BP)03}E+~(#cPk$kchpelpooDuO`$I295$`O6fYu4=^vkHWieK4 z@b*LFL_&Y`L;~0TM!j|k-EP8w6D3fq!~AFdPXvkoPXwv-1E=}FEP{(HO@>tM>mD;( zc=M;ihQEyt2X}W z6Li(+?(5xXnHIA&1yhQ)3B|vL@AqGtU5~eGkbue6MK?MrLaYmdi+rRs-itXV zkwkl%TcFo;mO|R@gi}kWdiQWOC&nrWj;PjrPBbu!rMfT20H>I9_rn_w4#GPlLA|Gk z{#A8m8Iyi2Q7O|na7MC(nJh!g(RpHA^qUw$d4`-jxt!mS3!OEgc2(#{JG=4D^lS%s zR$GhV>XBm)DSu(Ch-Ksdm zJ^0 zpyYRp!Z9;(R*~~$Wuwwlyek=A%nK#bu-CDiE=>mm6PD=P; z!7Vp771LO#@`GNVC{GVOML*jqCyn_c7a)e-w~kK6xemTrbpe#%P)cFr>I~q|kKM}? z5iHz^(RH|nh!VWAjvYcdYeH+Wp3*4Y*VLEw1GpVR+yIFb*8e~H;Q!>X{IjH^B9Y7N zm@C6lTq6(il8KZBAgzN|Q=Twf^P8o+_ zXvc!41QrmlbcxlWI#Xjp>Tt2B92&Q2Tx93)rrg;p_sxtTcfQ+Zz%LeJt2wD4#hH4% zlC87G?Nb5GJXV(|y#k}SPs_8_hTvgY)%+r>m{Q-Y+J`+kKDj7CqDzjcV}}p{bDgMd zB1I{6w#pcAeJ(<)4OiSk<#!7x-wK0D0h#jhr1E-OD@^*Jko6jeOKt{{t-XTTN5Ng( z8Y@ieh|+Xifh9+R9h_-pT+od7LV9nUJs1MBr&1Tu-!5#7yW#dbh{$|p5uga&IZ{0G zy6A?2MfVh@OtUx%3H0q7vH7lxR8=7`9IOHTJEa{EL?NLuR5ugitFYrXC>4rVRMIHHp29B)mJZs`|M7o97_5KjS>QNg_dn?QpP2l= z8;Lj?9w4Y+n@H`Q$o#uG84SMZCK+7@e?|Gk#K;!8W7oNGd)&$0F2l4H4W?K56AqPh zzT`66o^PPvxOpWaykXh^HiqU{;N7kI07*@Om@beZF&EfeEqFSUHpam`rffsMz7n9N zXwESIW#Ug5o1;|=%fc~&lqa+x}NN} zatS7wVj+SFORtj~-`vtCeo>moD&DBrdTu8tP8=rn2qY{(pb`X3#MJ@kUVZC6T|HX^>E{}{m zOJiKfw1QqD1I!JrT;Bc*ll5|@`bIc&VC@mv&p5U#uYMvYq7vIK<^*Wcp{ym12DH$v zl5}eIIH;N$U7JhC1Kla|UujzOB7M3EQl%R-!l%S}nh)C}VMM0zlML?xQ1O%k_ z77`FC7K&1&hbAb!gS5~QP(V5a2rYC7gce9U@wfLr=lu71a=(E4VM0DY<~uXjnl&@) zngMz~-m8os+l^2{$%UJ){}iGTh%+~F`*cvkx#vJ%C6`dPM=~LXz?}n7Ly0~tSeS3a z`Ew%rjz8MhJPRqj$z$@uwEf)y$?yfGIBOR4ctP{3ZFaFK^SsD@6;QI^6TG|V3!kK6 ztpbVEj#wxG+%1Y{KOH?1>Kc2NA12o-P=Hnt*q-C}sFCnTa9s}2xc-cR+7g3#`3=Bt zWec0gRNVobj;@6D^IB2}yB&y3>6(9?ou2vYUeK*lAFiHc6$^O*(SQF<1gF&O0*IHRv}#kIlUm)MyYrSl8$_v!V7T5BkAP&9k9 z+aHPnmk$JpLnseiCS&d?OhtZ3_li@<|LxtQt`=EGZe>Ky?O=exxu^#O`P9S`a8}h? zjU`bG8lNsfY<96ij({Xz07cBHZa2_*tZIAKXN3+by1sc8YDG5+2E+Vi-vTPjKs(G{10 zt&fH;xn*dlNi*F*e)ztmj8!~7X)FrLh!kmcy7rxw;uPmJ=HLAJD01W&mGQ9l(s^8h z3M93;h;SnOPK7Fux_eoDrLWp|0sLV9+glLgn;Pw|DzsScEGK2d%4dmho{CZ z%h3~$4NL$JumW~Y-S@ee;9__FRXm3)kEh- z`oLN;Q`)nlsIM8-9*bFl{Dk9>XM*;WIIj$3`v`ND>b`l+dRI5BTYJZg6ns@ zHYQ1ed_w-MUx8_B?DVIt@U+@5BSczr?WK4H&Blq_<5ex|N8b$>cy=}yiX@&0$uQI;S79f^R3s2td_Ia zP(o+W1kWEG|BS&E2RN^B3}bWgTj4f;vO8(@CXp}oV1gy!TIwM=w8KHgw<6TF0~uCF z`c40*r41aN#xj`S#w?*S0=Rw1Mh!!u)?P6=+kA2VUgtI|_qZQ&*e9{cOj-3d-W|v@ zRdsJ%XTG7$_fL{f4f{)EU&Oa>|6c&{?{N^$xuZ-;aEM%D;R}195(|8v`}Q%%6=nAe zYpkDiHru-$IbL`^e>vZyyK-|=ea9r#Cg$pGBb^%?UE#^$LFd7JgqRML=WBJ zX-u3@dRCl>wjum5^fKS+=2|aU1EZLKK~5V!C`p9|=9U3{ZW(c?S{6&!0^!GI%+W2T zY=OZBPtZ8Fc$mrs1iyN91w?A*&+1jPQi6L0GVYF!pAA0y!aLu$MyRyv(gh80bN79> zXa>{!RffEwq~_3@%U{UFtJ<*y<7(qgV*9&DF7S>72pWtTsv9anmBL65NUYKS&S(Ea zW$phuFU!s``gJ43#HH`OxqO~y>CzR&^E&Szc*MUw&lP|HfRk2#J=UcWt@+vsQJSFA*>sq(lwCjuz-JVRBK zP@c5NUr<1q4k`El`6Qg*@1W4X^3LU(q_|~>2yK*tb?Ao;CTPJ8ud+W65G6geijPdJ7lA9>eJkh}8x15PJSI#EhOm|MT9t(0ljJvJRCZad(FX|IT) z)VW1b%AZd~S+~!?r>k&WsvbbkD@EDjaS>!i%1Yxgo7T&JwJrxa2^ojch?U~KHMl{Z zO}QfCTffm}>_lwHa++RkRjl9gcX++uX?8}@`fJ@_a5B;hNxjB%+F>FzB3IP{G?VkI zxC)m)(OHPFY0FV|Iykhu+IH*{Qcn;`clE3)|60nb5K$aTHfsr^ zeMY~WjN~vK{;>#-FtB<4Xwg_?7c2}sptB51RX3?_ogq1%?+;FDpc5@ zU{Y0w|74Zl)t#J}dkvQTi}3w|n=l;ZP!>#UcM z9vuMY2(lkG=Gn{8jD3bMO2~_zXkU^qZ`As~GBo4g49%qmy#8Mq`agh4xU5vf%~y37 zmz{gpVdb>l`jM`vuvIj0SMLW z>2+EoK)JV+M4vMsu0Iviq1QMeMm$%2ll335 z)SQtEh`3hF)fchC?ZcC`KErL{U$HxdNSWDPSC)T6HmCn$rTz;T{=Y9L1poTLwwm{< z!2iVF|EbLWcijBPDX#ycmcvN8`&TXJKX3k54*wr7XF_P19>?({qW}N-UH{{A|NE!^ z|CjjxV%CtB|M4U?$t;b_vZcxWsz=kby;DGj5I#0SPc+?YXcjn<5IOgT^-dCHbAaM> zax#tr&20PBrZyi1qK+Ou0E}6vzd#@Z8{W*s{ue<0KM$A^{P!UOa#UXa^%Eaf`febC z{Sx5FAy5PKx17I`j=HVH!m{YY1ph-TZ14@_Nf#MHT6~Hq}RwJZT*;_P3wHK>4l38 zowJ7Zu9tUc9|<_=Ly`K{1aW@d`^N)8F7-RvAJRtZcB5QXX68A3leU9!fsp)+fb}Zd z4^l+2-ra7@<9F1UdOL((GiXI|Ah};@<2FqZY(4@4J?=HVXc#bBXemqnjUoN63L+k^ zjny_E?01NQ+_MncQLGY;ZYO_#w8jc0w0TWrMHs~REs5l#XAf(X&p%sTObbRpiBscw zsnbi>hozCnzZ^Ekidj_xJw<4;7)C6WG>#;d8UK&~D)BX?FCr%$fGLaMJlZ8p$Dkwk z3_=3*IKjKr>NMAiu8ji55*IL@nt_kc*OPCYXD>u!R!>@(L3f?eHNQ_XPDb);n#tvD z^3$N55Wv}(Vul#9JN?HbW_qFmJ#mjYb+I)i2<8#9!$eOMqkou4+ZJm+`Z2L%n6 zH|!kEF@ya|qwEymzlAgN_w4|FEesczqlC<24il3g4-XoGdT-|cvZPt0#A~x|G1^fn zo&fEsl;A>=H|=T(2?QwDI)pp|`3`m;rBu@1yp(ak@^D0cMqm*Dn`0Qaw$MTRvKETN zo4sNd^qbo>!<>vgY;H>MBf&vOhhy$&ZWM9DA|2Uv;9|--BX5h`{b=X4(l0I@B;3%h zCQ(mon+YYd@L5o4OV+`Y{wwL@Hv8&th_Cx+mgQ<4f{50qRnD@O=o6KNh>HSs*R7Xl zv8IRvQ#I?$LY7Cj8PocRIDUosFX^xnROFsRgx63 zA3fvJrFyKml2$qF_(rH=R}l)_?}wAe5kV3k;NvrbN8=6A^MilstWAHGo%nqk>(F#D zggATDJVP&kzIwd*u-XnvUN=3ON(x_W;0fVD5jv%t;-Gt4XV%0&^iZ&XPji3TDH+y) zz=`%T1-bK7Wdl-W%c#oi~y2 zDF?@s(mQQ`y={^!W9Myhv%gHk(r4Y0JJrggm8gNHbowfQ)X0I0F7d8&O4P;-NMW#n z_xwAmlB)*={b&K{xvq-y9`Gr7iv(B@@y7!Q%ae76X$Kz+ak>^ai(BvWn_dAOP2%qI z(m_30_JM>h^2kNRDYxJLcW-Zrvyg}=Dsht;vBS*MPxYq$p8n44&Y`@yGwDj|axG#j z1g#by3{VKIuco2hC$0$CH%Dv-Z^z$!U#d-`Fpf?xPa_y!>~;>b1fc5Af7rW!Q(j)e zzeo2F`a)}Ic^X0e3PDiue?U##>62>ePaGh?ilq<3tXdL z3_!#&I%Z?0S-Rg;`|8#^stR@M#xAw4Teaj`XcA;2J?GD{DrQf$5=j07OeZhWB6xIu z*|Ioiem66u+fp?)Fl6tj33pT-AqwjscUJ=K%&;B2)=gg1=&O(M#A$VWkk?SOy{N($kqyLu)?N0Q}lngsoG#B#OQA((d2C^CBM6`|j^ zd2h2L&cI1tB|x4?Inx^%V8I9?%>%lb?@x1X#E4$O`J#xw_c;jOw)@e2lMO?HP%^=Bjh7a@~;m|m=NlTTD^EK z50%r^%I~?T8ITh<&Aqki(x9#FyOobu+`EC}{RnHTiu2h)?|&YYM2FSSc1FA$b~48u ze$Sf4zIeU>F7@8HMuG0WH?30aJl?qD`=f6YL0Li2_ALzm29&uf%SQmLR7l{+Tl|Y< zz*>>zfYH$z8e0vZ?f|5h2mglBWCMo0JxTiqaliHh&9?aITw#m+rW&+u%xMUCwYUTP zG@7`PU}VGj7ydPI{^g)qnVstdSf+QQeMhooGp=91iFZUDI+jO{nhpUJUZ4{Kkc1X5 zjP@MmA)a_9NpA#C=@Todd#M?+(T%VJe?Ka`gL=J8%XqHu;>f$pZW#pRtHKNdv$@;+ z@}$ngYhMVLcKgpl)k~}cn`1gg`fb(_6Pm!O&6&+t^61E)#tX?by_EJ`N10umFRA<3 z6_FNb>dRvERG567+l$-wLvSkJg7m+!QGA@hlDyxhTX{n{8?TjC%d4f0Q1-YBk z1HLp&dmrw`AYj@~L}v`lxfTH$sm5@SSYX0sF(NemZX)3nu5f;LzsA+WE40#i!$ee- zAX%SzUusElz`wuw5=}Vh;T5%oW=rNyeMwvlO6e>lOrbR!ka^g>B=(N_9?>L9Y0X%y z*r66)-S98lw-KnSVW~!4*{j3*u*x1V}hSu<$^=SIwFZa9V)n`ir~1K;}L{a|L5 z7xnY(u65xE?s+5R$;dtpw!w##y+oT#Uj0Qcc_O8OOJ1Aq-Fn?Zo}2p&;2nlx3tFNu z&W<`(R-67 z1m<0MhIEiY^2QcgtEPcz*3y#*`12tTar_0593PwH;@w-Er#w3!9rqbE>>D)hn?Sg; z#aHV&pjx|j3iCJoii3>Bx-odd8fkA}{IgR^JZv-#Hf3OJVc`d&9uFY*_emYR>)!W< zce{ZoO*HiYO2ram3~|SL&hb_zt&vDNU{9rzJCCKe4va ze<%jh8=lxq{~R(30h8Ln=9`X(ADN#r9?7_?Oj9XG(00@ADYPsPsJ}eV|F`1Y#A5W! ze0g5!6UfQV%b~W{ZQXWcjGZE!O=VRbkYWHjUOH`dL^~Do8fLa!SgT&&y+{KS2-%x! z%U~E7AE0d@iuA%W8i4mT!7^*U*WU+OAxOKmY5mj*ZT&!e+_EPG;--(F9wBh$nz$Z} zJAM?dBCa5HsX;Krr)ii3)?7i?Hp-Uz);E(j0;!{WG1e)LV_LldD=(pYUhIK5RI~4p z*kE2x%xsG+Wc=q*V7rY~BE>-I zxMMBe%%XE6eZjw1VgM(WSn8XuijNBWbCix>t zOQO#9&b602LmmF9gPpF^HynqCWx<8rszoxxFq^B^(b4(A2kWumlN|7CxeS_py-Pil zU-A3b%Hw*+Bv--W*Xsp)lT7{@LyELs+d2xU*2>uR>T$H(OEI<*ADmL=y2j8y=d+w_w|-`2=@Ia+)$kMC*mtrOu}@Gmy+P_+Y+3_^uxgKSaDvp~u`u%AP5X|6vX@A_e3 zCZJjXQV8R#nu$0y-e4V_fgBz;$Ke~hNa&vj9FRqa8U?BZbnoQY)RTCZJa|~(I6Jl- z(Lg*#RXSRl>&$oq+>bms+Zol>i$2Px1g4RD0=cAgLoK-&_j|qWu`%f4?9_+jy z2%KiN6bvgb+$$97NO8xMiD7BDd2RFW;bRx$|I2!eEH@EQez^B8kU%pK(a9b(W4X6h zW9k7~%aREJbvR;P8t&)+Z%Ld5f7WA*-`XRIs@J ziUgH#iyQ&k&q@HzQO{`$l<$O`_F#6P)1?m!vsz6?uY|vBYWr<8xphQ-Q&WmsH!gji z^M1T?nsjl`#?cj#3I~Vyl!hKcsQVDyP6S;HZZ-nY-%*xn$JgLQ9g-jqU80t-g``qu zIdE-_^}V$FzP_|_Zc8TP-^|D4vI`;nHPgnO_n;V^!aBAI;Nl_D1a>lCt2 zllLw8?)kO$jy@ZVER{nkY@_+);!aBk!+er;^e4L-@_?na&uIR#B8QAoN||jeu&VU9 zYEFoWet7)epB&8Vpm<_Rk)EVGNv0Q5hxvT?x7Lb#v7MFFE)~?_x%Q+Au@f?w+qx^R z!w|GYV}4jhp7n>yAT5bTW>$n3YUd37BM!kHOW!iEf{_R4=s17wEeIN)Bx!wC3WAPn zmN%7%x|JLOQaFbgJ&V)4tU^+$O3UQ(cgpm)dHMu9FSYnvD&o`>#AU?E*X=PpyoTFx z$2jAy>*!oywvu9ke?BR3bigXqwI-(VP`0T=E@!q!M=-5SwGh78`=}SyGp8IlcKb_s z-q*%Sa-zq2P+V*67W%yEoT{Lrf-P_1yeFZ|DNSO)A{i_6wBr(JL#dU9H?e*fdq28s zO0>$)g%kLP#tz?-s#FuwmoFgV6-P2&*q`Z_XQWe9li3< zs>G+e=q86^?Ih##{ZE6m7U@bTmqEPttBi2T!QUx_P5zPzz31R7&uX| zLz9V_tuIpp-d;!-Djo$WJ@=K%omS(l3g6kuC}((^xI6nv+_?|=frzIN1lo$+a<%(CKsOi)&Jalb7UfvJmvAmlhZD^yJ z1yXNplog*dsU4^id|-QUg}J1lb~e$>CE?{`Doy1+x5D<`E%bBV#i(V#S0@Q()9t2O zfpsy0qs6H{_-WZ!nYWEYtvikOn8l6#7J|*45jPNm8P?r*M7?cxKbn%z1Y_pi>}WFS z93TT~=tG?cAnpo@H#|fQR@hT+Pzk%Eg)D}(W0gb8F-j$84c{cmUBjYI)(iDz^y=d8 zGzKnx(td-quK37(<5KNM=3W-x)VTaId$J%KR-GCYI@np~|`vklQ#BXT+ z2i5fO0t5T1?-WH;FUfwjMF?HtZFsAXIQ*B0)lz(0wHvYDO9#{41zLS{zi4(NQG=|r zQ8Z3@k{60%zDOs6(^C#^MCXW0|5QdNKEKIP5v^Dzz~$qNC@hw1uac~S?mI)nzq^ms zv?u;-+=?>&R`ba}x5M#9)W6 z2x2P4V=D+`P>|^TpygKRZHYF5uDkQ?+8bI0z3iRu6(bcKS)bA|32hF?xMppR*Sr^N zjMbzQ%c&x_CmqsGq3?5-KX_gCoVzb(Ruc9()?=9@f0g(tVoXusNx|Mku2js6E?AwO za4bKJOOg;SkQT0d3|yRJ93+7@*_!z`wJPUlnY zPu8HtCH!)aS0W3&;m01(v`cU(HWKSLY5N7+X7YB&xpu}R z`Y~b4?9hAeFPqP^FvnbTYUo4-}$7LmT ziELw!i4zum$~o@7%tsfOV$@x={Yng@@=@H7#s#Q7H>t1&`$*!!AnR$##FB9On#YDQ z-o=4zgBxvHtURy0r=$vPG~DOILSgKd8u@o*yK6Kk_t<*d41>o%eeE{5PE*?s(U3up zTk>GWD-KOZ$M5ou;TNA{jhDH~n%sY0=No zNyGezmLievyW7~w@bt@@^WGFF< zCLkim?RQS=<4qlR4hTp|!Yhp0AM>qPt8R4DFa5hd8S<_f*xgs~gj_CB1HE#x^RF>E z>{)4&cp;S&p$S7WKhIbEFi_I4ZDJ3+J4d@G597c=Fs;eIO}&->LyFzSI3*sq#nNS_ zAZS&sy8NKhZa{7in2vaP&D}WiCQ9}}-+Eb5^ak4y{J4;9$hc}pk>>RGGNCMnyBLY9 z$^GZmPra8Fv9VP<^;N^4>cUAU)_eB zG!3vlWz4aG?Q{~)1Q&D<8n{($4Z7Je32h>Wx!e%Us@rF{@U>Y(zAKJp_9vXLF#cl8 zGiGpIhVQIDd@L-`uef(U`p%5f0J1G21SnQq^*PsixBH_0GR1EvF!O{}Y&tm@_yaUGN9uMVC2qER25wRxGq^d_^U)XA9eDX!{@O7UeSH47M>~4L31ffPl@FV|%w4a+7s~zN{WSsg zUMmYpA^WC|G-gAJ5ULs;;=lsny%8Vovd4n$v(p5IWVhBPm?$e?&5}BJVb!kd3a4P@ zlXH&8rN*(fL$5{if9nToPZ={|#=Ws~Bh9_V-%s;0=l`1f0D9`YQ*Haf<7YBRzt?UN z^4O=6M?v< z8DVxyz)o}N*&o4>rMqZ`!tCUgo%(T-q`l%?%j-)!>a8MA<8w{T-S0b}=u418b-O?E zp+B8R^XXTFyn3MHKkeS#fRDN)D@Fe83Ln1r_+$VHv2??nSe{nj6^vg@98`wBE8f2)05 zv;cKD<9rYr+U@m{;XZ54jn`*)Vuxf>RVcW42DHqb5{0y4fxEkZ6l^7Q^f2PsPM`x91}y%n=@3##sCCFfxi%e)CFkcji?mb^pMvLj zpZn~cVmVv$T(HN#@5>Z+Z!I6WZPTXosh`6Kn<7r_sfh4W+^j*n+|i%*<$_W8+pKG6 zd~k{}E~^Xjx?p-OLdL0t=Acp66ek^?!?$^i4GdUHtZbofBJ?0pM_fhoHu zE?>dAb9b_}2`(TIU%UmF-G$d}lr)&DW`oK{rU5&zF3H2w-i6APpeO-U@9raiXeC#j zA=Fcd`WXJgv^!3%rC%Ah*^7u3(3sX8q`a;089~17F91!ks*-9@ENZh+a%juRL(}n^ zkBxm(!Y5kkjSLCVuJ>!w4Qw-nRHADpKm4i;8cYOY&mOdLuG31$FHd?KG6ov2hS8t%yRYwx?hiel0{BIuB9ePMurYQ%` zwG1S=b)?QNEvc=Vvv~$L#WUEp0&8F_H%&M2k5z)*Sz_QzkG_C0>=ukIrCub{m5+?f zqQl)`u6k)taC3}RFze9}*=VE4RDPH^HA;%0!K8yYrQdW3R!y4Wg(cwTFMUpRYZ+8{ zN;jI^I-XcQHJ2LL+RYDhPVrpv#?8G|8V=?LLz}0;2OE&*OWUs0x}QmoqAwI{NOEoSBUz+h%yM&;81#g-Mn>Wo-OYnMw(6|>pSUn ztd>%F;khVvB{49E>?_)_8_aUsf$YPYvRLMC*fH@1{9oO}dfL%@X%(GCI<)*`_ zLMhC|wat_kr^z>3%n*~mpjGgMCMnDYF`31-pF7V>J9t5aW86rVx%Q%zf}WH7{=m4 z)LVWw6j34Zn&&o5ioZ7wA3{ZOYQ;6_^*T+^0@+s^HI7^4{+Rru!dFs&t=n45vIpv_ z9g-u=vJmQ7|9sf1$5D-`lGfg0*7uqP&|!_5LMl^6^luAND&g$>PG9MTnEN{JuY-sOmK114n$4YG2RQ z4m0)sqSdQ^%PNK3bB4^K*wfzDXL(`zDh_6=u2D?T+D~`1pgUf%)&eTl$38oeleAk1{AfMx&ldN&o$mt z*M{?zpJOP8wc1v6ov51MhAG&4y}fp*JI%+xUF%8icTH~)!WnM(lHB?gSCVjlD09!C zJiS5sMATS9Vh<|({pcDjH7wAqUmb~Y#fbPqH08p>)Pa*2 zHD7!`9;4*X{7~6hIlZrO)Erv!*&hzY{O#r^UQZjy{#M@{k%mk&9wA&njUg{(Cj!hCw4Bj7XSMef-9A0U$e^bubVqvjwls?Z zv*;R3)S2jDYYo4e{@4~&^7 z-pKKGs|a#h=+H^vFrZ{L%+Q?C?B^W%CRLgVY7M*R-{9*uq{LxCQ?!cjr;rTF$!$E% zoF`Xbf8=auAa~dSf*I8FWrBs$jx({P&n?E|w@)@oaYKfoRkHVxme#Rjo~)lQ*tOi{ z{Cf^3%FsU{NjP*QLrqy!D1^miy9~Byn^>8^u_CX%-}3SZGaFNKv8llJTA(6~MAOGu zp1C^L2P~GNIxDYm;b_Bgz&(u(LUg ztC@V2+WR#YqI&S;GBpOipM%XdrF0cAYUjsu6ZH~9QNX3oPe_{Yim~0?8S~_`_R8x~ zPw#N;?9;Xo{ZdpZUsZmBEq7hfhR<{Wt^oogh2AXJ0`$s+sD}+6DOotA|8lYhh|>Cj zSH_X@REz&ClCqyK4G^YXM4dsQky~zmXdSBYI-Eo^;pI^y%xK#&B_DCHp^uEXjvQMA zcNZJ%;*KP8pM8zJJ#2PhCc68L>Vakr8kW#}e#05GAwjP-tHb}NMxGV#!YYOn#=w&E zk79i<0mpCs^}9s>ie7yz#`+FP)I`Pm z{;c$*I1yD(poX*ex8IfS6UkiIBks9NqK5^v0_%|~G0T4M_-b#ID$@E*9Of~=n{?gP ztZDCBt?JvscPA0&UJNbitl206ZHIDu@DYK5olV3z1wYh#CszWk2~tqu_mn%l(mKx| z{rRf$d-UHXWp9FYIcXd#S)3G6b6l@->&(iB%O6g$HBV8LJl#HrHgpC*$Idaf;G3Ue zBDkmj7V{_fRWP+4g|AB%`C)|uX;q{t?GyrNRh9{3b^NsGH7r4S>8X;k9N{dmVt-Uo z;qun(F>*{3Rq|AQTdXJqx6~773r$FrNSU!j#Oan%P)Q z*amIANbg`Ijfn<2Y$0LnS zbQQIJ`iM@9bI~q?q!PN9V~yFCckNX2n(*@Mk?w<^5`k!>3avwSndO(XKw^sPX-;|j z(T=-6$LKgq40jSWXVeM=cu-MSI>a1n-*f7bs+--&w3hOP-jYH)rDNtUTieK1qef`VkSF`|)9nB57=NYhCAS1$Ypoa^ z1U?RF|L0cejhGr#J>E+xqtEu-5?gZyo!{Q?+6Pgs@{Zc} zrqxUsj@pwozY-A`^w=R8m(x3yc1NXN9~q0Oaa|$9G6F#_8j1I_3Y&Lqs_BmohNxIi3!#3G2_1xQ|IHE1#9!ee@NpEl^#Xk zQtGREffh!Q?%w?pn)ksE>*X0*<(zNb746QnDyLZ`sS&8<@X1cWHNRijA}hf^iOfBc@}pK=(SInTL+ts^+c3r_~$FgcTb9KqE7 zcW@wwKW+!@(jXpR?9YUaylI_?m{YnN|r3TrVQ{M&~<^ z_nFR}35%>L_TKzu1=WT&ZLh?Sqp+tvD zZ)Wk5+SveuW5km&t@8VcHQ@b$f)^*x$9%Q44`rPZSiZ_Eda_W+2N=@C7sTbW-B}`qalo-Onx-D*9$vmDPL4 zeb`w>+I_@MN8$2~>R|q|4e{FP&jr&pGS`;VzIue0q_O+OquOyALeEsKMz6M4LjG3UJ&yWP<^2|UX*itL7rLImO9+Pw1m{;~UqSwI( z?CVmk$Z0?IP;|ZWy#bBj@iehCp*~f=cs9kw_?Ub=uEv+E>9x!E51YtCD{643RpAZy zIO}Mn_@=M|zmrvVWRKM^O!c_s29qCeYgq?JaEo|+sSablLUB*Ja+!8bZZxQR4Pf983Nby%{h5 z?Q>6#n&-j9wIg(?Ibrur(wP|J+u66}s4m1fZF*PcQ*@%Z3ZL=sjg>0>HIuQ83_Z8@ zIOX%UyriwhL6#<`ej`yW2cyv^nN(98@)h-kn|fnKM>IXYhrtY9Bvr&}Fm@)&+d0q3*6_|sn1s$0 z)}x)pdFpfHMuOc~!T=&7sJr~AvSvQ^Wxf$*BR?i^DWqLx1Ahb2j?v_&Wse#=1N+n) z<_Yqv-1t^hx9c$jwNQ#M)$D*pSO87p*)an{QO2Y~(#^e~kA0gB3ZbRY!&}V&rJzuW z=6CLHkK2V-*Cysttt@SKw&bb9^{Xq~(Xwu5hwIO#zf0&VeGSLiyqV)2&RBlY*WyIt zLuXV8#-rmF&S~a%jTUAQ!|~P>!L#~nCt~qm-l{9z6G8q%-YDItv4aNZtV!3RgRA?| z>RSZ&#ap7(%WZd$<;{{JgS$_?+@Aj7{3nGGcFb@9@5sy=Z)IhAvEwz?%C7Qo{f)8K zRERRZ^b%*G#zps7%3nZOZ!^=d7z3Ww7g96&1t%!9aD*x@g}D|S+Tkv&m_KqD78hd_ z_;XHPe%3Fiomb|~MFfHnd36X$C9P<+E_MIzyKpF{c)8tZL;fP9^ZfWN6`rlS9I;^< zJ+=}z>H`?aovgHLAY|$EDbMb5m`40O+HSzP=yoH5#YLu%xgS%F#kfeWZh&iohupGB zKd-KnaR|f-ZDnGVq}8k+w4Rsh;^F?Os}z1v=oQK?=T+67dh^2Ic)0Jxc$H8rtFL3K-6WCi<8s(^U3U7e6D8;*2s?CPbch}}pJM|`v z=`IX|KQ-e|cN~ds&h#jwEelVC@qJM#g1rq~MUBHCzCPqR=*GAAU~7KHD6Y_Q3EYl_ z1m1v~nu2(+8?(=I`&ZQ68^hh8L&+9CHhXEgrm~{p7<2UJ{g-{kgoxg#!yH^hkD?5( z>+N@Cv|-e`lhEvM0!mmE7PlK1quM!fM`2zfUVD`v#Gk^_GFM3EHr-*^|C0n(P*|(A z*VSi&cD!3lHF@NSwi~WvtImc2*N8A6j@F;K8YN43ovdLkk(cFw~{L)_-<4~2%ZEF4pZ}FYlbi@ISoOwbC9T66{o%HA{u8M3t|F>#klBHEG zfc5pu?le>f9^%f2d{Gx?GAkazaH(8Ox5juBapNanY|=(Ht>%YeJC9XccEPK#9jSIK zREW)*b0IJ>0Yf}qIF%PA*MFqlJ$F+^7{32U+o*xsAPCEV4fVjKs*iRqNHM$EGB<6P zwR7BLdS^^`P&oi1+F%`%+YczTKg*P(oFuO!?x2d+A;b~i31Lb)K@9M9|{ZP)*C z3eB70Puyxi!iFEZDr2|sCy+t>quW*e>LX!a99+p1_#Np%^F(Fc7VH&EVs^7K=P zGv_+}q2~d*R`O}p=8&@hg?F9n!N5Uv5rv=l+~;CQ4XVH^pA}JI>+sbz5RG1cAm4QX zqYIcVGUgSzoaRu5Tj+F1wwt#wLTd_u?GZzyFCC1-1IVM_EWyZ>!}x=CmnA_Hsy(Ky z8t7~nt+@2aFLXaW=}ce(Jxh?=blr5HVjkc%m4V8Bpe}}s&BI#k*u=1#%wkFY-O)=H z=da;}8#F4i^h8ebZ`HRT0@siwa_ME!-4hCd+jIcEUUMh z29@vn`%MGEw0PWoewg&;jzx8=Jec!GG~`y7i}`hj?4qWfApOd<_0szL&p^b8j%KRX=$YgNtqcMhMDh+XMN8-=dN@9fVBA$^g>|npcAm79T;CBJb;N?rI zaF5WFym@YnNSrHR+^TEd3q|{r4#ORnp{D8Z_dSfYRDT1^u6*kuM)X^`58D(EJFFtU zTq*3G0MkER`DJwa)v`Xm3Z-1)avn}{9YE2j8d!55`=zPC?%yX2{=d9l%VGU$S#@x2 z#0!#0q_GUvNpE@o>eUq1@lmB!R+Q;C8{D|patUwKx-Ia&YcJb|?clmT=c5|9qZ+S) z6xba`>DdWD+B2ngOnwZ%?9$7g_X8!U3CHTM*pU2WDcOEXXv*8Aw+AlLG(4kl>;m6_ z2!|$mp2^^)3H+FfD~!{L{EUK?6ln4#^8l!8#dpEn{B5lNvU5dqjdxED!6G64+0h@S z19)<W&@V44aR-^v~!h8R)&O-^CD-N@gCL4Tc{rVvbTrsUlRMbx+XI!|@mO;r(HhYe%G zs{Ti@WwUE&cNDkP1N%ku7mznpSS_?^X+R1{729!+tU*QGhBFS2!3S{tR!2$jAHa$*S+jfck~ zZdXaVY6v5bUu7v1Yk9|;Iv05bgPWh-ZWbO6?)A|I^H}1KM>aVmM(XXnv4*8|jM;L0 zkLvYrgAM|ZnG5WZi1()(zoAF04EYa^w=T5`6ei?gpn>xJcxookpI5+OqAB%&%+TU} zycgWvc!SIpCA3%6LTE3#vBZgj4~}nwQm^rjAud8{6`6Re$Pz>tsW^#syZCnUWww+w z8hIic_t#>!CUtG_@sWhUY5(IR!9OH-C972!dGRJVEX=;)R{mblpPb$z{5=9nHrn3b z&ZF90)_k5CcxGrTSZT>@`0~S#p8ZzErM>T`k}peo$Dmo3yvN=zNYa@BMki>z>kkmv z^*V#k!wOPptijhEua;$(s^x1hEY1>chnZ=u7qOXS&bibi&$0M__OifY z5Ol`!f$ss`9Z4p}anKe{T$9TvwsZx4VQ434Hb^Xzk!nfqC;skBb{xLB)2T<-ZN zRZ2ZKoiNoYpcvt{Z#s)SayrCt620XbKtJ;TWu3qrdR6iy91~{+UYw+n8}VrL-ayul zOlWWiuw`$n#@a8i_I7oq?YG~Gv%#FjG#~OfJ^CeY+oyA>m4#=xpTX)a3LzxWn5-|| z4aL6}gjv@PhzS{*nB4XvJ8d1u3kx#I)CO~Kcc$DSw;I{}0s}7O&%(h+u9kV4MWQuR zsM@Y;m+=X6DX1CNbP}?S85+{RbG?B;~GUz>Rk+9P+T~wloCzj@?6rw_Y_G8&109^q}iU%K-(| z8to^IoBG?=Yq#ITRE(y3|NN6Ph5~c|7&L8X8uH@as&V$|O0QumfEAUPS0wi@J%)XF zfC@gY)MT&35(t2|%EIy3)P!(37fqqSsI$E_T#Y*u7ox8&5w zqEVG<_qW${(q2Cq=vQV3r``idtvarj#63D^kqrVYMdHH8xHl^|7Gg*C&Li^=w`Ksw z|6~t%=r$0R770!U7>u|44H!P3Xg<X%*Bwl*pgk$1&?nSr*>(bwEZcpg1ACL zr52DMG(RVe5_B@I5Zl|IoSYxuc9lc$N{hNv}nj%p;aC@Rp-g%hCK+D^IjD(O(vT;`csJmlD~Z&H7yEqSvSG`@?5ypu}*? zw3uo;qGnJAd#;xGf5a_@$mK^3;`B&La^WidCuFeMZ?e@+wzZ{4%|cykwU;ry3ryg5 z#9jOAP5A-3$>SYYaE+Yf8(hm%P{4W?Nyla9d~Vx@*!DWrn_(Ti3bgoKHA)cA)3M>+ z8Kpf8XAnUX>GcdfD@kB}H+0nm7fKlVGihl>oYQ{X)h@9{Y8L1c644b!L}MsPv)kJl zYiU3VlY@2}cm==pa(K7Hv{EP>x|H&1@A{+&P^z_sVV$oI0lTdT5?Z2~ggd|JRg{ZY zRNpBDZNY1cIO;X>Z;wC9n;L5NQxH|D3!}N(bOE6Sog5fuSlGLL=hYV`^xF!YG|IzKI(D$F>F(8%`wv8QFaDl)*A$I%j7p4G(4aSA6*H%Rx*@w) zh6<@N_A~935unyS1*SJNnSu@lD5>Kq&)$8{r1iy!ndmDWW$3FqQkh}kEUbfZ%wPyD zfBL&bVsFWgannJ{B->}59H+*9WB0moT(qTwF2vyIt9shGh?~);#RFw#3#!a_nXqtl(I)U!UcD13`=n67ov^Uzt#JC5n zKEBO7w&6dgMh}CcjkrnQ4$M33k60RnW`Ipa6O4-9?sIB@A zgMJpuH9;=%3f5QdNKgcy2a^PPfO(34Vm>Mxv31iRFNq6=p}t)yJ~9th#*V#5v5SMj zg$j~SULzI9q@A)_Lm+w}c?tFY;xk-k%k}6dRQ?7*w;3lhm*C5Orcp>lw@9e^b?keL z5e>25=@vfYBJM#gtXR*a@Hz#8O7IBwH<@>VLnUVB4*77P+XJR47reL%){EmxQ3B$} z4*b>5!sY_-z9)}jMpr%iNp|j8t`oh`*4r&tS7~Gl$aIbrB;meS$3tuw{SK3gu1Cmk zih!7ZicQU#&UrzO6#+adtq8`_R}NA7=n0a z5Oe?Ez77TqEinOz5%!gdX1Md*&7${tYRt~S!PJYMhru7yTN{Q_;?aZm=|kF;ISJ_IU0>yQvZ7U+r1SR zk6nD*ZqPfpbngw2lbu^hHB#8k!% zJD$J1@;Kdfh-@liJpM;cV1>&O#Suo@02Mee6mgeSfuQ++e#pFsdDk$pkaEPi$)pXp zvB^L={`5WBB>ym6S#MXCVaWCA=>+r0F&KTLXxPTqFsHg}!mUK)9On(9V6|nb(xhBMG{asOhlcS=2#ZrVW+@sLvk^Ub zrt)2?z4XvV07m)Z_Pt)x7fP$&uJ=ebvD0HQ7OY~w<%xM%2>R@(&+^*LBy%dOGl2LK z*Cx+}{a1f&!@*euC1dw#V=>m!1A)ZndO*f&v##Xq?lK0|D$z~Lpc;uJ zlg*B0P1zG`pmt*6Hc1Wr=`I06vHfewBko%A;(@RK<8AqOk06AY+DOp(?p6bXJ2$?1R_b=uD{>xi=;Lk(OamG%pOlSX!@OVbp{WQ0us5qyj;-1xy=toNiSg-Hji81WJPI}{)Pd(r?g z!FLJ(bBHzKfB)~-0U{LHQvR9sBu}chfeI{GWW;*)E{wvB9)(vFg-YfK zJL?Ks_q{VJ$YjGLCIi0;2;h=NK10CRIxY+UdlDsPyGsM=&GM$Pa!eEeNR0aM3ZR%r z(zImhiYhrAD>Mo+^Zk~c;cNUm_g@s(TA0;j!mDEhohR}oMgTxJJ%I@n8aHD!;r3S= zc;>m(SPAqWW=wB*uuNHE?_XkhV}h~;?c=Zd_w%k!{;&f@!2utI0)I2xD}@)hwSbkD z?%jw5l?9)1-Qz33B&U#=NkBUALgH9+LiXmc@22-$A+c3ZT4mzXCb-UkY>)Xrau9KN z*~sS!HP*YIo~hmmBvYM)_*m+&DJ}s}GV`z-jbc+)UmP%*#Jyl`_v+qA|D77(i~vAL z*&NxBZ=t;hkDvGaJiyR}=$2T_5ky__`LLrC8AT*bnw)eHce!E7rK-jvLs!oE^lJdJ z^i~IsuGGg6GLI&|2NsvR49#uCN*2N=|J&A?BW>^9F#ECKhgyE%$qtW#im#!*Wg%BI zsal#oYV4Oihz}4JZvzT6zZ@A@57r0(kMVW8za#nMk&Q%l6}4YP!X5tp3T$vW&{238 zcxhG5JR?j+aXFnFn*It1krBWEg9}W?4!)i(N_Czsr$f~PNr(-P!BegQK-b9zJ~pb8 z;BUKcQ8?2l*SXsT^nOMW2~?7qsU_@_%>7vS7Z+W3y|?9tosFUu>@lqCqLWYJMgY;)-#U0*N zMe-&*Ph4VIU}Ki38F5v>e`am?<>z2!2*Lr0*h&*x4OK$a`gd|C54AHV%9XeWxXTmO zB-b?@CkSQMv|yB8ELR=^`w#1oEBtb<+rS^OmxS`t43 z)8x^7Q7wd-^RBC_YeBr0Sd=Jbt)ZcmptR#T*S>#px}8s}<$QV!bVi`(n~2 zANcAe0;plwim!6kZYSnIELH~N1%A_&kDiH+*fnvj8zFuVPqUqW>WX6^{TjOr$Y+DIIGezsftQA^ZCDxW(B?0)ed~9v~kguXUW;Wc}Q^QL_b~?-^XZ5 zOcYyHw7V=)b5~e!p#i;k*;e(@oywLp(XvbD(bHv(g#ERL+e&98;nFYVfuuEaSA)EK zsqsORWr`WI^4<*d2EcDR@)9L|ud7b@wo_%PalYcwJq*DU&7H5>(KUeZW3E5`eKH}V zm5!cAVwFw+2uz2f5#NtAcNRvdD21tc$Ng}O7mqVRVX@ul+hc-s1t6cjMYML`j&oA7 zjnUmBdv9G_UB`&uhbII%8*}xPd1*LhpLxpFbpRI9|I0%*gmJ`4=ETI6G3re$iERO( z*>+<*t?Hqu_m=oY^$9!0SY+x+ppAFff9ew+ij0c;TIJD*d;J2VZ_A0r)`EQ+P9~&i zMoWVYhR~5Cfn{WLj_qUq_Dj`pl&M5J^bwW6! za_oSPzpjbpF{9O8pb^VsqfS6*N+G;McB|TtpJ^k?7_wPLEGi$g6L;VBCRk}YG+$gg zI>~<9ft4Pjw5eH)L!uf1-5!QJil_N~Tn+*OF zxSaYn@@bs36XCd|9T1Od1({erDg8)oN9pBxIQw*IN1?UFRPbP+`{soO51m|G4% zy=(FM(nMlBVq|QshBy?O^!qKE`RJ#y?%g?jj{*jyhc)HM3q>n@W-DsBkC&5FTm@XH zqLA~YZD3SU&Eo37lG5!q?C3F@Ez2}{-2gEHbp-emJOk7pJ8~v&0(zu?3r=_1ap*<+ z$lVjY?FhQbk$C4EMQy0^fcI7Qvy_nXR-jL^15QxrwZys=25Ziv&VpV@J1Fj2_s zPC(bl@Nn#-mofb9K~0uh!wB0*lGNX9HvpS;-$NRVUI7wOag5tLYlo~3^v4VO-Qq)W zm@nSbgX&Jrjl2TCWln(Nsv(*@#oKK=Uv{-;I*NfFGoJ*U%^8Wo$z(6r?amLE9yV{e z%Ga}7ip_CnMsB5WW2ZxbY^EveyJWx9ie_TV7Z)e?^+Upk*tO4p;v7-{evr3oBi!f< zwFWCx#5PcbkSH0IQCJLepvI0iX}rZ3(!b2`K6o?F8}S_o9NJBMsw;&?>#3M6^ldkA zp{O%RYw|mj;>lZ}%+QP`WBRM?bAbjP65GroeB!`3ageD*t*9seEI8S@~JDN z*{`9CVIF^}6CeVf%vNY!bbam~w}(N-10Tf7=-I(s6&;2~*9Ak1tMUZYWXghHVn4%N z-1!5HW(tB@mi+Rzla7B+iwM7bFW-EC$!p8>U^)6n;@_{OH!bxE@GEd1LG z!gXPaR&+0V+zHZn&W_%=M%*3IeoJ2Gw>UJf$fLG_@>1_oGyU3qEl%fgMqEdtBM;?{ z#W}0*q#bDX)RyVSc%>DJ=i|#wr>dNe_vJ7urx2*>_UbnJ-E!$}9U^VwgxnVEP600~ z4~d-9L3)q$vZg>(A1e>f(#1!-u@;R6FU2o&nb90wx;k93dP&F+@$PRKAnCF$m!GyWRIdjk*RoN6{kyq8VOSi1OD_zNtv_6Y#=GUzx5*-_IIEzg z1?#30&xx07k-pN?-^XB4Zdge~G_UQt4D!R#YTPyY6D$T6xeHqDZttOG#R|}(8E!{~ zPc~oqSA?B!H{t_;l9g<9QIrMR`<|~Wo6)le!z5?f`KO<>Zxpp|0#9y4T5rFbX$fLz z*lIxQWC3v?j@fNH#GxU4B13Tx)B7`Ii^yhMtv6YUz=ld)KobmT919A)2I*R~?2!t@ zl{*rvdutcKVK=xfK$g}^l8()7r?z$-ld>#C*p?qM83@iis*~=e} zvT0pV9uL(uz-jLjUpKNLE}469!-hlMaXi<42WxSHjjAy8dQU%Jedf--^b1Fi9*i|O zMzC}1hyN#LI%+k%N#I!om)&tqZ|^MRfV#nqOKCu#AzXc#Bh99C;m!q%69FMqIi5H3 z&=6n@1xl~%TE4vz>!Uq0tw2|<=oLVH!c=qJRQjjfJ^Pzm+3%*rZ$C!u@3EB=dmL30 zpPh9$mlOgrcRD>hCmMkIa<~Q>m7gDWS4Y|uId}LkNqzA{k7NE3D_%p7vI@QTIls`B z-Wv4=c|GSpqV*=(A{Ma7J8Ddl+~;UKDi)8x>E;Hx^?Tm_<$qQ&w)U^84P|*;b&n3n z*|hQa;yC2#{D_6bk9{1B4aZ`Oo{=2c+dZ6OffSSHEhA$jV!u*s?t7%;EPb*|;2{4# z3o`dAqyF7miMFMNj zHP?Tq6v)m%V$fGjP9O9NSy$t^Yn|A*Hk-4P=v(v0ETwsf*8C7yXM}DEEG!=_tfd8n z9iforE%2eYnq{ir$4lj9Kn7jI#9^iHOvS~wJV2<|=*R5*F+uxTjvuplC8iSG!-b|q z`Z58Z*cbaP^u`joNyF1UoKWm77l0vXB9oz+&p!=kI#ou>6MO@B-!fL^1h=hjZI;Vk zm}&4IxPDsFh1nIT@TQ}M>FTEG`|8cth?dveUv@-{sL>?SI)Uu`m%U`6DWhuQMq;CA zxTfJx=b0UsfG?xQ>(9WpgB*P3oRD_nV>Szy-QmsWuNecse+YbNay^U%4(-gacMDg! z!Wby6emA!A-U!VaojhE`dUW`EBZjGPG`_=IcSnq>Op0gu3#?#tokY|aWKJq5o>t&1 zxR|6<{$Pgg2xc~&K0VY;(EYeRSOr@RUv6plf)&2cJMbB8veyw28i%sI)|T~qMz4SS zGbA#rO_6ADu6|Lu3t`i@JnJ9XiPNF4s0LK2Lj*s@t26bqBfALr+irONh%P4PQwL zk*@^ml@z`_@~{`srymmJ>(*o#LtgVqWsVmJEu58nyTTpit8$%bMm8o&zinci_Vehz z^^4*TI1~7JOeNKs^jA*`|9(%*zkpN$8qs9z_-UXrjt=AEI=t5@^&;vJ=a_AjmI?&) ze$D(n?;RPahH3F%1~0v>AZNmQvZOZHfn{C=krnEMW}3}(-yV7JGU6U*tK`XlrHgHz zx$8LohFsy|k?lXR8%&`4%UCF%-P7NQZE;+Tvx-t%anjMxU?(hw0(vVUM)^<_Oux?u z4LRJyCR6!DVycwLkQ2K1(vpi-Mq4T1+3RN(=IzJzL2b0t-OUyxA*n_Mn1s+qr3X^9 zF*c-(yd_pLsFDt6-}1{W$z1I}aF6s?qUg%-uPsFGRob`)EkvA+^Va6=_!%E2V|%of ziz!j$eV7*B%iTS;=f8X)&xO^S&Sa>j8(tV+|J2i>(^6A>7nAR1YkQfGP=HY_DSb}S zq=$?LI8s86j8Hf>ETP7)d~7`*t+}i5W|^E-6(9EQ8jiHU+34w4iPi00A2+%XuO{9p z%uVde10%8?(z)3=rjDMAigXBbCx5TmDjU?co^dT}I7+KRrzAZ3J7P>5IVxzlm+qeX zomODJEXsRCc7AVMY|X6$#9U!T8-Tu9^Voi$;h(um1~Bot>KlY~)wba}r7m`LR&6(b zt?8;8RG?reE%Y8;soVns-r+{lZp;tB*~CTOqoxg0b2pkT*Ln#)tFkos{u)diS=jG-YJ z3;4Yvdiy6WNq(>@IYjqXqc?6E!k74Ffx0}+rYu?OB!RA~!pyDyg`{t;2*Tu0I=4X( zyv@o4PZPYD___}Ty*(OaXwsf?Wn2vdPW}SNB9O2iRtH`D}3-n54j)*lnwn}9VJe*^mjH&WkN^ksW1p6UP zgZJcvtpT@K^@l}&s}(ZXS1&A4I&5oBH}jquOBzcyexTa4V*YmMc(`h-3O$(wSq2=VQ#yCee;F8> zl<8U*a4R=pv=cuokp|p322-K=UEiMxoSpo<0Rbj_Q32lkxm}eVi~(|8GgSKzp5D91 z&!Va*ufI{#pxDBD`cZi1?HqhV=M0sbZb7?l0o74IMV=Z zSqazD&-vu>ZZ$Y~`$JAe-Y4o6UTqX`0nH8O`uD%n0JT1AF;YH5h8d-86in-JW(HHE z<+=^KShSI!;DVJL5R1J+A(wP9oSZrt%%l?-1p>iJh4uBwo3ne{E2^@$1`90kKnqihlvkEzC` z+W{k�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±GKP z`iH;UEpIz*Ji&x=>=iVv7Fx+egN3gHUliI)GVy|?fdstFmHW7&C~4v25qb5B@{@`C zb5GWv$23)4QKn2T(qZZ79-&)`_KsV5#ZMk=IL2$BcX9o;V2f~wrI^4&RIbMD=FDQP zcbi~5k*m49HULk`^)#r}@&f#lMoT!lztnHv#ceZ&XcD?iTD6N5H11Hc>3QE2Fi2Sw zSZ^cD6a9g;o|icvKWa1|uu6`DAG`5CwI9bu#-rHl{M@8HD?h1^=a=)47(MK3HxOCW zyCrQMqrnjCFF;$5K+$48jyw)P*e=-m!lhQJVPO`z&E9f>xJ@Pf_U#b_G~W2ERG;~C7?*UvH6WiojPzdrfwk^~{QhOMXK z?uY`CNgn1dAg3f#%aZSKCrgzXc$^$~xz0yA+eA8NS~|F+mQ$RbSpSg*puN%H?~jp& zlb#yZGSjae@cPKbWFJ`Tj(#742tIQTH!U-7NbDfL|F-IFjl$B6^vl~I+7Qpu zk~CRHWi(sGTcTb*u4^s{#XydC;!9_9&)Q4AUD!*KV=uN5=FajqwB%E{J9wj+ldgi0?;CvzcE46R zvE@?jbu^gkPe~%v^*=e?N`IP4jp_O`=SB6Z1oVUj+86*k{yUTp6Z$^gAToT>9!~ds zKr)<4;`lDI3FeT=K0498wVKc}rKZ~IA}kvNWy`LO!8c6+9P5jRhQn;Kd{!!ge6 zVK-dRf*74WwY&ihR^s;;)@pXa{U~hJ@Edq?;_h*Co!fZGoO(c;pkjOUWDf#PbpZ(Q zjPh~5Z}yT?c&Y9KDkZi;>!G_mNVMGe{Sm$S8q-JNa1{-#-!iVthzjQ2(FbV$$h)}7 z=Ew0l`M)|_m(xb2Y2+#;*_6G0ZjZp)t(k%y$J=Nj&mZtGcvP>{^6Nh!*hyOoMUzn9 zUbvFgD8h8`a)s-sL!|K_!sp8(haaz$zy9z3PY{B{xQ3nxwH# zVD8EBXo6A8&a8`*g>B#Dj(t*X;1!+45N{!?`|j*w8! zd@rS2n`W-VntI0;lReA)jHBvJ8{$OH@W)P?$UJ1OC@W;_&^-m#EPdw*jLfz#D6u&S zAF2~Bff$fNMjlTAh;O5bl?On})E*3*|~nA8$c!7e+aia+8Gf};tBzkbo( zvhQhc#nj|`QrMl&JKEgl%DsPPBBz|j#b@77>36lA$u$=O-ZKhX*z!Eq{KFAL*noij zr9edcGTHJXvY!0yuWbB%diI)Bbd!hSS8Zo>cnExz43RMgCV5i2%CuHm*1f}Z4UffI zAQhHj=dK&nN%RdDk{KlOXMJ(SMA7nRKb~iaIe|GE@$F+`Y=5$BMi#tqffv%y(6D7b zM}V2R)QVUFGaKqxd51aJZFFCzszr2%IQ}dsx2TiNMxh{$i$tmBa9H<>YKoC2iv{7F zI)P!SH}I|2MtR03%Zizt5NcuCMiUe;&YJi7)vZ0e=^P@v#mg`n1QbmxO3V>BP+B+} z+WIxREj@OdQ$5jk;@;Lah#r_ch0j_xYXl)+Ccx*dQ#ty2FbC7t;F5o3TSCNe`Jg7gvnl`$sw0MNyk6lH)!CTyWN|5-z-7&f)}w8rQw~2K*|d&50_*WD0-4lFH3yK)B2j3qo`8~DQNc|asOLG2h!nAk1?1H^+REg=v zO%W6~tS)=+0jy@PfZbD)k?UL$g$AcBxJ!We2-dm&L}IhFQ0nn%j3(_I`UM@Jk-Zy{ z03@@ljoh=pizaUE_KEGnRh_qDNQRedi*MJcUu7@E2b{5?-%g^)UxX(2&Q*-6OEAgk zWS%C!jm7seOJe$yk9|*nNa@m4QcBzP-aOqNEs6<~DA*}rRf*m~6(C@=s1R|>oikxf z43eN#{Gq2NlN-_T`rM`Qq*~N`?~~h8G#xI%T?3;MdDLfzHafc*lj;PeRdlm>i#PK1 znK@?JQT|5Girlb3`|74Tl{ug zpn~Ghe&rh)ApECqOQdG%+9wWBI*)VI_c|Qvp@$AUl2rQFP?3>~8-#9mf0x~)ytp_< zxmI{-EYF1rxQxtmQQ)>kGSZh5b>Q}wIw&lkz2Dw%zYqb?JF8yY4mrB54rL8jwQ-*e zM<|Obr@TPC^QTzOR-ZNO*h!Gb@ryXp{;+&?a|yWY_;#0i8(M`Ux*yrhP8$8pOwQJC zA1Fmf%DZn(RHQL3_$A)|bZxQWajIj_QsWUphx;hdFRRo&PX*KB95pzn$>{9qqR8|f$6s>SQ;Z+;{-{?aCchzAi#{m#5^9QiGV0fIFW$o#V)5QO z0pjy6tj@Hr9+W$sM(cdmki3>2ujhjkWD*-Q<8M->^yhLZrOmVme}eESJ`1~x_y&R} zMVX;2t;>Z&Aeb>-u=0pLR#FV@5DV`dHQzCj2 z%mtn#7F#<2lOoHfnWgUBFcPVGOiyOzmNIPR!qpwZ=w&+0F`pr@jp z5zzb0EXi9UmyuuuKUY+p1?JwMJ|?n!=BS7g(#WPNI&8FEYWd3t^YsmM*bu(VQ-hY= zwbT7&f=fHzm|Vto5+{A}xVNx17RY<_l*J^&Ty8oJVqEo0Z8|QjVc|FTt=t0tU>B`M zcHd$E9W%ajcW?@f?=mUorrKgJNJup3F(+MNwM|eM)taknC)vsDuD{P%*tC{G0P%b( zF!t4y+x(GaL|MH7l{=|4gWHU3K2|py`{0MrcgJf3gJ` z3hVEa9U#w9F%S}?EluE*pMW&C~Tbi^|F!*$ECF-Zo$+^Do@?~C;dm(X$>~TtfhHE zAuZ$PP}l}8jxdfD8EajZpJ_jD6Htkqn-O7^EN9YX`7bV0rCw}LI9UKT<5dS8Hht7_ z67bl(y`MMISbFL3mN-=6KG}NbunP(bIt}xV*nio~E_<0^_Q#SA<1%I*kDrm!7RHtu z&r?uy&qpwxQ!~)-$1Lwjru0yhz$ODaXwB|9S6{ByzHmpjdM+(e#?{Lc8J1!0=JAj0ZW&wT~QL>e|2R4pQ4@ z`JU~yZT$6J#hv_5Q>ec16Z4ZZPche-g_ zY}(@p(0PP->Zvy`mBZG?BXDvPd9EMVg&RyYyJSTdhmnL!tZaVlN61E9JMWM#ODyOAJKDC zQ!7rN<1v87;IRT&nzr2F^z@c3eyc(SyTpF2pA>`d1aBxoVdeH1v3`&5un*ld)9TxS(?>Mh5- zVc-v#R0c9@T`g-14Pq)0;E3}okvP3!X_ zakmGaLmjdWRs*c>azLAAN#W3{l9(bXdOSm8nOQ}oFq%0Zq-+RyCDQU#w?4sahRy5+ z^{YuBG0j#P!U36wZaI6wMu zV?DUrQAT#EwVQc#s20#<2cFe-1wZg_9bzUGn{6%qcD8k2-HzWio92rC!0{q zs{X%~#{t3oUaH;wWzJyG+}AOpzn7bAia4$f?M!qmC!eqIieo!Wqe^ zRc8~@ZLiH7{d$n39eSm{id>u!L1C#CnHJ2BP%TZ#U4e`ey~C=gdODS9Ib@$HDik;% z4)HSW7kQn%+L|&q(eVx$0greQzep>Kye$7|zT`4?4uqR83lw;lf@|9L&~u>=)a6~I z>O58ha-!f!>62J3g~jLsj;UU$<1BK>!bnjQxCF)H28$JpHGM`hFpjBg9aUjqzP;wbS9Sy!}nWnu@H{nBvK9t7Z!1mXykEMjWCBGLG z_}l|Zqc3~!rHRB2XklO%vL0Qeu_7OrYfM|P){M=24@$MFL_r`;g3}JV#FKg`@227P zDIL46i~{M88Y|-!T+F9_C5Y%)DxDd6m_bLp?gS7haIrAb;{8TWs}1vs8A^#a`1cCTqX3gm;~6wC>n@9ffRh% zAVs|;P1Ppbn5PX$a~QgIVXo&eht%ROx+EDqO3U>AK=fK7+*7OOw}?z!g45XfvXn*tAe1!$N(q$Y^W(A ziXndaaK&2Ek!HS@&!q-VK|+~!mSGCVtaNWUB@w7D3xl&(+%7}R<3WL1e(VIz9I>?T zG=wpSfhvP3^7c&+AF8a|E2-z&vJgT&{aAE~SM93Z=Ej12{jv;1Y~WypRL)!K3N7uK z27c#0uf9q@HxX9CqP3ittQIE6k1;%+y!n<+iI9<9&TUq6T<@%{$yaNU)w<0Co3-V* zWi$|Ueo;=(7NOu-JpNBM4m6Aes0|04EX3tR1BzSS$G%V?-RTrQ;hDQP>w*LvXM)c; z4O!xY(iw#O)1iNSGx6#3qYaUaaqkC+eg_No^wL3Y*E#Vw7=Z0;>1jJ0zvz@j+KhRb zFTi0*UjpSRQL`$`;6O%meNeOFNC1ze`U3&BES&MoP8RGI!Acvxr9sNpN`f2oJoaYQ z9l6jpo{5_JMm3>*!JZqTop;uXgIyY~X^v`Xfnt*#1@#(Njv0di-GTByUax_nZx8T{ zHpDp5f1Z_Tok?VU!#I{i0^ljQ%=(=ywrlH44oz>8H(NTMmXdhhm)H%dexL7|ebAgJ zXZ0x(X}=~o@{Am{c2Uo&<+;OrFYJ+XE@V0ia}>YuQ?LOlyJy}iGy7)SX%iM%hv__h9Rpjd)`m-n(NWi=!r zp2tMhRe1cgeJGvI5(!{2PHFt!i1`Xo*7}6ATo10;BT-b+yogE7?3bDWvUffU3y6LR z$&8hj39`NvBzxDWCdk1{h~|}Ab=%vQFPc7|pq>ZdInJ&UZ0*z03lIj^0@IBJ$+I{`e~^9y0`zNhPOrVs0{xX(^oAjJhws2Zdie*u{YX5X=U)Z z-=nH*=7EG15BLW!J%9^d2b%Qi_?ZV}`E$%y%&~83y4gC3jh}{SgaVY*^x|>W>JUj6 zk&^+gYIygrdHNEe_q|OkNr7YI)TRxgYE&%?P;nZn5zsmq%eo zH-jNk7rh1uNIOT7gswP{KKxT!zFa^1zN5Csu80l$fAT4$`Hw6;y{X3pd{{Ok=8C`Ej!aAouR-vupCN zek4>$qT^BJKG2N-C$B*sw{YreaTYi^K4)IBbw1D#I9E);Ar-q)uJ)Z>%&_)Zk zcFa#y$X6GJS42c9g-2DX@~HXvR0f)TN3_s-RSYciH?n@E@Mn~$Ln>Rh60}tG`Ss)qDOAEzFmu3i9=HFtmSELgPf1<#NWadjGJf) z-5i?bY=g@252C7@ljLcYRzGR&lXULP6?K@-aQ>)66F4^eNPjTe#+fBPrSu|Qc`?Q6GB7HHTdr1z`v!aGG4^4P{7A zLz$s2Se=or51&hxbu#&l@xu4o{NzIUaJ(rfxL5qh!#@|D4)n=qUQJ2o7r|08(d^WA z)5j;s?qFdfnGIgKp?Upph3<7(8~!J$Og+wZyr-B%kJV44vO2*w+DuWSfxUH)`qY)y zZhZ1a0hZ67T43=vnP-BL*joJEbJ>^knjFAS62JhxR{IbRJR6Xe6LvHoSpqugw$@c| zEbljb`@(njV{G1mJ9k?OX<8-mqG~IpOZJ1FRg4nVm{WqY95t){M^X^9hO+t9lE}tZ zbt4rtbEx{QIj(2TPrCTK0*m61a%$&rC68D_Ll^o8_S*4W;Ybz8p;N&r-)Zf$Bt{sI z(lQ;b)N?kWl^?2^Yfwv-F;)sc9JOyr1oh=b)s3!vzEq~%)nj^B#|WDmQ5WUO22Bz9 z8mVb$Z-GJ%lNwT>b75TjVH-EUr|>kMgWQ#RZgSmy9qhjg*T&c(>yN{WJK&w~kVTE5 ztOd6zfUt;43PNx(CfCW&i?**MFl_(Cqe`!?@cQd%5i=@GLFTViW3d}ARnQ-1d@{>J z0yh$`bx+Xi%B~x6B!* zea0={@!yy0)>9)6bRkDb-^#2LWDmq<@zK}!{UtZ+OJk`aSojg51LNvy1K8Gvpaq5>F$+(r~n6hUUx=B9IMnT5u z;S~UgO44J>+m$D%oxI_omQ|(8M z!s1m#&r~AXh?ChBKMt}KuedMXQ@K>?v|A2Dui&(8FOPVe*b~?Y}3h z$4;eMJf92q^QGR#Rt=U|%@OPah_UD+$+h6=V|*mhwb|yNhXI839u%y2ih^vdj)947 z>y$s+wwhEUAA$Ia_Itx3qtO83AIjVSE{z0)izYx@X#)IMhfP5AO1KaJi3d+q-AauM zQr5LlQKFfD4j>%cd;(ngU5iuyq-3`@lncPc=wA)%|Mfz4^t?Do$q-_%AYylP|Gem} z&KE{tF3Aw7yZ=ujarcHc8l1Qj@fvn@_w7H^kiyy&3S@hv`MIsRX%}WFn8Z{llUUA8 zjL82QNTF)lev&@=Gey1K9^2ZxVMDi2TiXWeTm{}+FvPj@^&(p)`DvsH%DV>6XR=xC z>T*9vf&Jc!0G6wf3)4;l|F3p>cp03SSC1j@(pK8`*HNISol>eiDfjqScIOUL`kklH zYY$31GW=ikT3d=Y#2&?NkF2}cX15yYHp6Z0vFC>W)fxBPaEFg>r}Fykx#54a&E9PI zPXPI)u{Rt3Vv>JHjsO2anM8IYU?5afj}e?c9m5eBXlk8=QmOrPECR~D%12l>GZJ~J z_xZxzr!5J)~@t?v6Ddx67JdJclE*f-#Q;5-KKX3Ss@lg1wI<8*DqyVH1q#IyIEr( literal 0 HcmV?d00001 diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts new file mode 100755 index 000000000..0b275efd5 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts @@ -0,0 +1,124 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as events from '@aws-cdk/aws-events'; +import * as kinesisfirehose from '@aws-cdk/aws-kinesisfirehose'; +import * as defaults from '@aws-solutions-constructs/core'; +import * as iam from '@aws-cdk/aws-iam'; +import * as s3 from '@aws-cdk/aws-s3'; +import * as logs from '@aws-cdk/aws-logs'; +import { Construct } from '@aws-cdk/core'; +import { overrideProps } from '@aws-solutions-constructs/core'; +import { KinesisFirehoseToS3 } from '@aws-solutions-constructs/aws-kinesisfirehose-s3'; + +/** + * @summary The properties for the EventsRuleToKinesisFirehoseToS3 Construct + */ +export interface EventsRuleToKinesisFirehoseToS3Props { + /** + * User provided eventRuleProps to override the defaults + * + * @default - None + */ + readonly eventRuleProps: events.RuleProps + /** + * User provided props to override the default props for the Kinesis Firehose. + * + * @default - Default props are used + */ + readonly kinesisFirehoseProps?: kinesisfirehose.CfnDeliveryStreamProps | any + /** + * Existing instance of S3 Bucket object, if this is set then the bucketProps is ignored. + * + * @default - None + */ + readonly existingBucketObj?: s3.IBucket, + /** + * User provided props to override the default props for the S3 Bucket. + * + * @default - Default props are used + */ + readonly bucketProps?: s3.BucketProps +} + +export class EventsRuleToKinesisFirehoseToS3 extends Construct { + public readonly eventsRule: events.Rule; + public readonly eventsRole: iam.Role; + public readonly kinesisFirehose: kinesisfirehose.CfnDeliveryStream; + public readonly kinesisFirehoseLogGroup: logs.LogGroup; + public readonly kinesisFirehoseRole: iam.Role; + public readonly s3Bucket?: s3.Bucket; + public readonly s3LoggingBucket?: s3.Bucket; + public readonly firehoseToS3: KinesisFirehoseToS3; + + /** + * @summary Constructs a new instance of the EventsRuleToKinesisFirehoseToS3 class. + * @param {cdk.App} scope - represents the scope for all the resources. + * @param {string} id - this is a a scope-unique id. + * @param {EventsRuleToKinesisFirehoseToS3Props} props - user provided props for the construct + * @since 0.8.0 + * @access public + */ + constructor(scope: Construct, id: string, props: EventsRuleToKinesisFirehoseToS3Props) { + super(scope, id); + + // Set up the Kinesis Firehose using KinesisFirehoseToS3 construct + const firehoseToS3 = new KinesisFirehoseToS3(this, 'KinesisFirehoseToS3', { + kinesisFirehoseProps: props.kinesisFirehoseProps, + existingBucketObj: props.existingBucketObj, + bucketProps: props.bucketProps + }); + this.kinesisFirehose = firehoseToS3.kinesisFirehose; + this.s3Bucket = firehoseToS3.s3Bucket; + this.kinesisFirehoseRole = firehoseToS3.kinesisFirehoseRole; + this.s3LoggingBucket = firehoseToS3.s3LoggingBucket; + this.kinesisFirehoseLogGroup = firehoseToS3.kinesisFirehoseLogGroup; + this.firehoseToS3 = firehoseToS3; + + // Create an events service role + this.eventsRole = new iam.Role(this, 'EventsRuleInvokeKinesisFirehoseRole', { + assumedBy: new iam.ServicePrincipal('events.amazonaws.com'), + description: 'Events Rule To Kinesis Firehose Role', + }); + + // Setup the IAM policy that grants events rule the permission to send cw events data to kinesis firehose + const eventsPolicy = new iam.Policy(this, 'EventsRuleInvokeKinesisFirehosePolicy', { + statements: [new iam.PolicyStatement({ + actions: [ + 'firehose:PutRecord', + 'firehose:PutRecordBatch' + ], + resources: [this.kinesisFirehose.attrArn] + }) + ]}); + + // Attach policy to role + eventsPolicy.attachToRole(this.eventsRole); + + // Set up the Kinesis Firehose as the target for event rule + const KinesisFirehoseEventTarget: events.IRuleTarget = { + bind: () => ({ + id: '', + arn: this.kinesisFirehose.attrArn, + role: this.eventsRole + }) + }; + + // Add the kinese event source mapping + const defaultEventsRuleProps = defaults.DefaultEventsRuleProps([KinesisFirehoseEventTarget]); + const eventsRuleProps = overrideProps(defaultEventsRuleProps, props.eventRuleProps, true); + + this.eventsRule = new events.Rule(this, 'EventsRule', eventsRuleProps); + + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json new file mode 100644 index 000000000..085db7cf3 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json @@ -0,0 +1,87 @@ +{ + "name": "@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3", + "version": "1.67.0", + "description": "CDK Constructs for Amazon CloudWatch Events Rule to Amazon Kinesis Firehose to Amazon S3 integration.", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/aws-solutions-constructs.git", + "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3" + }, + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "scripts": { + "build": "tsc -b .", + "lint": "eslint -c ../eslintrc.yml --ext=.js,.ts . && tslint --project .", + "lint-fix": "eslint -c ../eslintrc.yml --ext=.js,.ts --fix .", + "test": "jest --coverage", + "clean": "tsc -b --clean", + "watch": "tsc -b -w", + "integ": "cdk-integ", + "integ-assert": "cdk-integ-assert", + "integ-no-clean": "cdk-integ --no-clean", + "jsii": "jsii", + "jsii-pacmak": "jsii-pacmak", + "build+lint+test": "npm run jsii && npm run lint && npm test && npm run integ-assert", + "snapshot-update": "npm run jsii && npm test -- -u && npm run integ-assert" + }, + "jsii": { + "outdir": "dist", + "targets": { + "java": { + "package": "software.amazon.awsconstructs.services.eventsrulekinesisfirehoses3", + "maven": { + "groupId": "software.amazon.awsconstructs", + "artifactId": "eventsrulekinesisfirehoses3" + } + }, + "dotnet": { + "namespace": "Amazon.Constructs.AWS.eventsrulekinesisfirehoses3", + "packageId": "Amazon.Constructs.AWS.eventsrulekinesisfirehoses3", + "signAssembly": true, + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "python": { + "distName": "aws-solutions-constructs.aws-events-rule-kinesisfirehose-s3", + "module": "aws_solutions_constructs.aws_events_rule_kinesisfirehose_s3" + } + } + }, + "dependencies": { + "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/aws-kinesisfirehose": "~1.67.0", + "@aws-cdk/aws-events": "~1.67.0", + "@aws-cdk/core": "~1.67.0", + "@aws-cdk/aws-s3": "~1.67.0", + "@aws-cdk/aws-logs": "~1.67.0", + "@aws-solutions-constructs/core": "~1.67.0", + "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.67.0", + "constructs": "^3.0.4" + }, + "devDependencies": { + "@aws-cdk/assert": "~1.67.0", + "@types/jest": "^24.0.23", + "@types/node": "^10.3.0" + }, + "jest": { + "moduleFileExtensions": [ + "js" + ] + }, + "peerDependencies": { + "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/aws-kinesisfirehose": "~1.67.0", + "@aws-cdk/aws-events": "~1.67.0", + "@aws-cdk/aws-s3": "~1.67.0", + "@aws-cdk/core": "~1.67.0", + "@aws-solutions-constructs/core": "~1.67.0", + "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.67.0", + "constructs": "^3.0.4", + "@aws-cdk/aws-logs": "~1.67.0" + } +} diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap new file mode 100644 index 000000000..1b37b4fa5 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap @@ -0,0 +1,377 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test snapshot match with default parameters 1`] = ` +Object { + "Resources": Object { + "testeventsrulekinesisfirehoses3defaultparametersEventsRule7C3C24DD": Object { + "Properties": Object { + "Description": "event rule props", + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": Array [ + Object { + "Arn": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehose5062AB01", + "Arn", + ], + }, + "Id": "Target0", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersEventsRuleInvokeKinesisFirehoseRole62BBAEA9", + "Arn", + ], + }, + }, + ], + }, + "Type": "AWS::Events::Rule", + }, + "testeventsrulekinesisfirehoses3defaultparametersEventsRuleInvokeKinesisFirehosePolicy66344F2E": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "firehose:PutRecord", + "firehose:PutRecordBatch", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehose5062AB01", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testeventsrulekinesisfirehoses3defaultparametersEventsRuleInvokeKinesisFirehosePolicy66344F2E", + "Roles": Array [ + Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersEventsRuleInvokeKinesisFirehoseRole62BBAEA9", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testeventsrulekinesisfirehoses3defaultparametersEventsRuleInvokeKinesisFirehoseRole62BBAEA9": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "events.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "Description": "Events Rule To Kinesis Firehose Role", + }, + "Type": "AWS::IAM::Role", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehose5062AB01": Object { + "Properties": Object { + "ExtendedS3DestinationConfiguration": Object { + "BucketARN": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC", + "Arn", + ], + }, + "BufferingHints": Object { + "IntervalInSeconds": 300, + "SizeInMBs": 5, + }, + "CloudWatchLoggingOptions": Object { + "Enabled": true, + "LogGroupName": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroup6BC7E438", + }, + "LogStreamName": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroupfirehoselogstream158BBACB", + }, + }, + "CompressionFormat": "GZIP", + "RoleARN": Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehoseRole9A570638", + "Arn", + ], + }, + }, + }, + "Type": "AWS::KinesisFirehose::DeliveryStream", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehosePolicyC8A844AA": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:AbortMultipartUpload", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:PutObject", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": "logs:PutLogEvents", + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:", + Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroup6BC7E438", + }, + ":log-stream:", + Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroupfirehoselogstream158BBACB", + }, + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehosePolicyC8A844AA", + "Roles": Array [ + Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehoseRole9A570638", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehoseRole9A570638": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "firehose.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "BucketEncryption": Object { + "ServerSideEncryptionConfiguration": Array [ + Object { + "ServerSideEncryptionByDefault": Object { + "SSEAlgorithm": "AES256", + }, + }, + ], + }, + "LifecycleConfiguration": Object { + "Rules": Array [ + Object { + "NoncurrentVersionTransitions": Array [ + Object { + "StorageClass": "GLACIER", + "TransitionInDays": 90, + }, + ], + "Status": "Enabled", + }, + ], + }, + "LoggingConfiguration": Object { + "DestinationBucketName": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3LoggingBucket4233ECBF", + }, + }, + "PublicAccessBlockConfiguration": Object { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true, + }, + "VersioningConfiguration": Object { + "Status": "Enabled", + }, + }, + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Retain", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3BucketPolicyB9432F88": Object { + "Properties": Object { + "Bucket": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC", + }, + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3Bucket6EC968FC", + "Arn", + ], + }, + "/*", + ], + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3LoggingBucket4233ECBF": Object { + "DeletionPolicy": "Retain", + "Metadata": Object { + "cfn_nag": Object { + "rules_to_suppress": Array [ + Object { + "id": "W35", + "reason": "This S3 bucket is used as the access logging bucket for another bucket", + }, + ], + }, + }, + "Properties": Object { + "AccessControl": "LogDeliveryWrite", + "BucketEncryption": Object { + "ServerSideEncryptionConfiguration": Array [ + Object { + "ServerSideEncryptionByDefault": Object { + "SSEAlgorithm": "AES256", + }, + }, + ], + }, + "PublicAccessBlockConfiguration": Object { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true, + }, + }, + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Retain", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3LoggingBucketPolicy8FE1A9E5": Object { + "Properties": Object { + "Bucket": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3LoggingBucket4233ECBF", + }, + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": "*", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3S3LoggingBucket4233ECBF", + "Arn", + ], + }, + "/*", + ], + ], + }, + "Sid": "HttpsOnly", + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroup6BC7E438": Object { + "DeletionPolicy": "Retain", + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + }, + "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroupfirehoselogstream158BBACB": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "LogGroupName": Object { + "Ref": "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3firehoseloggroup6BC7E438", + }, + }, + "Type": "AWS::Logs::LogStream", + "UpdateReplacePolicy": "Retain", + }, + }, +} +`; diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts new file mode 100644 index 000000000..215856231 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts @@ -0,0 +1,127 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { SynthUtils } from '@aws-cdk/assert'; +import * as cdk from "@aws-cdk/core"; +import * as events from "@aws-cdk/aws-events"; +import '@aws-cdk/assert/jest'; +import {EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props} from '../lib'; + +// -------------------------------------------------------------- +// Test snapshot match with default parameters +// -------------------------------------------------------------- +function deployNewStack(stack: cdk.Stack) { + const props: EventsRuleToKinesisFirehoseToS3Props = { + eventRuleProps: { + description: 'event rule props', + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) + } + }; + return new EventsRuleToKinesisFirehoseToS3(stack, 'test-events-rule-kinesis-firehose-s3-default-parameters', props); +} + +test('Test snapshot match with default parameters', () => { + const stack = new cdk.Stack(); + deployNewStack(stack); + + // Assertions + expect(SynthUtils.toCloudFormation(stack)).toMatchSnapshot(); +}); + +// -------------------------------------------------------------- +// Test properties +// -------------------------------------------------------------- +test('Test properties', () => { + const stack = new cdk.Stack(); + const construct: EventsRuleToKinesisFirehoseToS3 = deployNewStack(stack); + + // Assertions + expect(construct.eventsRule !== null); + expect(construct.eventsRole !== null); + expect(construct.kinesisFirehose !== null); + expect(construct.kinesisFirehoseRole !== null); + expect(construct.kinesisFirehoseLogGroup !== null); + expect(construct.s3Bucket !== null); + expect(construct.s3LoggingBucket !== null); + expect(construct.firehoseToS3 !== null); +}); + +// -------------------------------------------------------------- +// Test default server side s3 bucket encryption +// -------------------------------------------------------------- +test('Test default server side s3 bucket encryption', () => { + const stack = new cdk.Stack(); + deployNewStack(stack); + + // Assertions + expect(stack).toHaveResource('AWS::S3::Bucket', { + BucketEncryption: { + ServerSideEncryptionConfiguration: [ + { + ServerSideEncryptionByDefault: { + SSEAlgorithm: "AES256" + } + } + ] + } + }); +}); + +// -------------------------------------------------------------- +// Test property override +// -------------------------------------------------------------- +test('Test property override', () => { + const stack = new cdk.Stack(); + + // create properties + const props: EventsRuleToKinesisFirehoseToS3Props = { + eventRuleProps: { + description: 'event rule props', + schedule: events.Schedule.rate(cdk.Duration.minutes(5)) + }, + kinesisFirehoseProps: { + extendedS3DestinationConfiguration: { + bufferingHints: { + intervalInSeconds: 600, + sizeInMBs: 55 + }, + } + }, + bucketProps: { + blockPublicAccess: { + blockPublicAcls: false, + blockPublicPolicy: true, + ignorePublicAcls: false, + restrictPublicBuckets: true + } + } + }; + new EventsRuleToKinesisFirehoseToS3(stack, 'test-events-rule-firehose-s3', props); + + expect(stack).toHaveResource("AWS::S3::Bucket", { + PublicAccessBlockConfiguration: { + BlockPublicAcls: false, + BlockPublicPolicy: true, + IgnorePublicAcls: false, + RestrictPublicBuckets: true + }, + }); + + expect(stack).toHaveResourceLike("AWS::KinesisFirehose::DeliveryStream", { + ExtendedS3DestinationConfiguration: { + BufferingHints: { + IntervalInSeconds: 600, + SizeInMBs: 55 + } + }}); +}); \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json new file mode 100644 index 000000000..be506c32c --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json @@ -0,0 +1,373 @@ +{ + "Description": "Integration Test for aws-events-rule-kinesisfirehose-s3", + "Resources": { + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3LoggingBucket44AC2AFE": { + "Type": "AWS::S3::Bucket", + "Properties": { + "AccessControl": "LogDeliveryWrite", + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "AES256" + } + } + ] + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain", + "Metadata": { + "cfn_nag": { + "rules_to_suppress": [ + { + "id": "W35", + "reason": "This S3 bucket is used as the access logging bucket for another bucket" + } + ] + } + } + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3LoggingBucketPolicyF495B6C7": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3LoggingBucket44AC2AFE" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3LoggingBucket44AC2AFE", + "Arn" + ] + }, + "/*" + ] + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + } + } + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764": { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "SSEAlgorithm": "AES256" + } + } + ] + }, + "LifecycleConfiguration": { + "Rules": [ + { + "NoncurrentVersionTransitions": [ + { + "StorageClass": "GLACIER", + "TransitionInDays": 90 + } + ], + "Status": "Enabled" + } + ] + }, + "LoggingConfiguration": { + "DestinationBucketName": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3LoggingBucket44AC2AFE" + } + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + }, + "VersioningConfiguration": { + "Status": "Enabled" + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketPolicyA55908CC": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": "*", + "Condition": { + "Bool": { + "aws:SecureTransport": "false" + } + }, + "Effect": "Deny", + "Principal": "*", + "Resource": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764", + "Arn" + ] + }, + "/*" + ] + ] + }, + "Sid": "HttpsOnly" + } + ], + "Version": "2012-10-17" + } + } + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroup1A52047F": { + "Type": "AWS::Logs::LogGroup", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroupfirehoselogstreamFEF0376E": { + "Type": "AWS::Logs::LogStream", + "Properties": { + "LogGroupName": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroup1A52047F" + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehoseRole7DFE85DB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "firehose.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehosePolicy9E420F18": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:AbortMultipartUpload", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:PutObject" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + }, + { + "Action": "logs:PutLogEvents", + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":logs:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":log-group:", + { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroup1A52047F" + }, + ":log-stream:", + { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroupfirehoselogstreamFEF0376E" + } + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehosePolicy9E420F18", + "Roles": [ + { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehoseRole7DFE85DB" + } + ] + } + }, + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehose8BD45033": { + "Type": "AWS::KinesisFirehose::DeliveryStream", + "Properties": { + "ExtendedS3DestinationConfiguration": { + "BucketARN": { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3S3BucketBFD4D764", + "Arn" + ] + }, + "BufferingHints": { + "IntervalInSeconds": 300, + "SizeInMBs": 5 + }, + "CloudWatchLoggingOptions": { + "Enabled": true, + "LogGroupName": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroup1A52047F" + }, + "LogStreamName": { + "Ref": "testeventsrulekinesisfirehoses3KinesisFirehoseToS3firehoseloggroupfirehoselogstreamFEF0376E" + } + }, + "CompressionFormat": "GZIP", + "RoleARN": { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehoseRole7DFE85DB", + "Arn" + ] + } + } + } + }, + "testeventsrulekinesisfirehoses3EventsRuleInvokeKinesisFirehoseRole87540EFF": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "Description": "Events Rule To Kinesis Firehose Role" + } + }, + "testeventsrulekinesisfirehoses3EventsRuleInvokeKinesisFirehosePolicy5B799D25": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "firehose:PutRecord", + "firehose:PutRecordBatch" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehose8BD45033", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testeventsrulekinesisfirehoses3EventsRuleInvokeKinesisFirehosePolicy5B799D25", + "Roles": [ + { + "Ref": "testeventsrulekinesisfirehoses3EventsRuleInvokeKinesisFirehoseRole87540EFF" + } + ] + } + }, + "testeventsrulekinesisfirehoses3EventsRule1D7BA7FB": { + "Type": "AWS::Events::Rule", + "Properties": { + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehose8BD45033", + "Arn" + ] + }, + "Id": "Target0", + "RoleArn": { + "Fn::GetAtt": [ + "testeventsrulekinesisfirehoses3EventsRuleInvokeKinesisFirehoseRole87540EFF", + "Arn" + ] + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.ts new file mode 100644 index 000000000..d351ff36a --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.ts @@ -0,0 +1,30 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as events from '@aws-cdk/aws-events'; +import { App, Stack, Duration } from '@aws-cdk/core'; +import {EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props} from '../lib'; + +const app = new App(); +const stack = new Stack(app, 'test-events-rule-kinesisfirehose-s3'); +stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisfirehose-s3'; + +const props: EventsRuleToKinesisFirehoseToS3Props = { + eventRuleProps: { + schedule: events.Schedule.rate(Duration.minutes(5)) + } +}; + +new EventsRuleToKinesisFirehoseToS3(stack, 'test-events-rule-kinesisfirehose-s3', props); + +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore index 963955620..b54df8301 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore @@ -13,3 +13,15 @@ coverage .nycrc .LAST_PACKAGE *.snk + +#temp - to be removed +# test.ts +# **snap.* +# **json.* +# **.test.ts.* +# jest.* +# run-all-test* +# cdk.json +# *.yaml +# misc/ +# ../../../../deployment/build-patterns-aijun.sh \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md index cca10be3f..b5c7d90e3 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md @@ -1,4 +1,4 @@ -# aws-events-rule-kinesis-stream module +# aws-events-rule-kinesisstream module --- @@ -18,16 +18,16 @@ | **Language** | **Package** | |:-------------|-----------------| -|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws-events-rule-kinesisstream`| -|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesis-stream`| +|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_events_rule_kinesisstream`| +|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesisstream`| |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.eventsrulekinesisstream`| -This AWS Solutions Construct implements an AWS Events rule and an AWS SNS Topic. +This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send data to an Amazon Kinesis Data Stream Here is a minimal deployable pattern definition in Typescript: ``` typescript -import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from "@aws-solutions-constructs/aws-events-rule-kinesis-stream"; +import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from "@aws-solutions-constructs/aws-events-rule-kinesisstream"; const props: EventsRuleToKinesisStreamProps = { eventRuleProps: { @@ -71,10 +71,10 @@ _Parameters_ Out of the box implementation of the Construct without any override will set the following defaults: ### Amazon CloudWatch Events Rule -* Configure least privilege access IAM role for Events Rule to publish to the Kinesis Stream.. +* Configure least privilege access IAM role for Events Rule to publish to the Kinesis Data Stream. ### Amazon Kinesis Stream -* Enable server-side encryption for Kinesis Stream using AWS Managed KMS Key +* Enable server-side encryption for Kinesis Data Stream using AWS Managed KMS Key. ## Architecture ![Architecture Diagram](architecture.png) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png index 82353a723ce99ff89f66ee113ab44f42f09085ef..b2404e8222f9f2f2be0e7276540628e3657098e6 100644 GIT binary patch literal 127620 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� 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 literal 17991 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 D!8r`p diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json index 6ae9cfda9..35f49f9cd 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json @@ -1,7 +1,7 @@ { - "name": "@aws-solutions-constructs/aws-events-rule-kinesis-stream", + "name": "@aws-solutions-constructs/aws-events-rule-kinesisstream", "version": "1.67.0", - "description": "CDK Constructs for deploying AWS Events Rule that invokes AWS SNS", + "description": "CDK Constructs for deploying Amazon CloudWatch Events Rule that invokes Amazon Kinesis Data Stream", "main": "lib/index.js", "types": "lib/index.d.ts", "scripts": { @@ -22,7 +22,7 @@ "repository": { "type": "git", "url": "https://github.com/awslabs/aws-solutions-constructs.git", - "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesis-stream" + "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream" }, "author": { "name": "Amazon Web Services", @@ -34,21 +34,21 @@ "outdir": "dist", "targets": { "java": { - "package": "software.amazon.awsconstructs.services.eventsrulesns", + "package": "software.amazon.awsconstructs.services.eventsrulekinesisstream", "maven": { "groupId": "software.amazon.awsconstructs", - "artifactId": "eventsrulesns" + "artifactId": "eventsrulekinesisstream" } }, "dotnet": { - "namespace": "Amazon.Constructs.AWS.EventsRuleSns", - "packageId": "Amazon.Constructs.AWS.EventsRuleSns", + "namespace": "Amazon.Constructs.AWS.eventsrulekinesisstream", + "packageId": "Amazon.Constructs.AWS.eventsrulekinesisstream", "signAssembly": true, "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" }, "python": { - "distName": "aws-solutions-constructs.aws-events-rule-kinesis-stream", - "module": "aws_solutions_constructs.aws_events_rule_sns" + "distName": "aws-solutions-constructs.aws-events-rule-kinesisstream", + "module": "aws_solutions_constructs.aws_events_rule_kinesisstream" } } }, diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts index 7c2858e6e..70dfdd3e1 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts @@ -55,7 +55,7 @@ test('Test properties', () => { // -------------------------------------------------------------- // Test default AWS managed encryption key property // -------------------------------------------------------------- -test('check events rule properties', () => { +test('Test default AWS managed encryption key property', () => { const stack = new cdk.Stack(); deployNewStack(stack); diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts index c13bef20f..341302dd4 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts @@ -11,10 +11,9 @@ * and limitations under the License. */ -import { Duration } from '@aws-cdk/core'; -import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; import * as events from '@aws-cdk/aws-events'; -import { App, Stack } from '@aws-cdk/core'; +import { App, Stack, Duration } from '@aws-cdk/core'; +import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; const app = new App(); const stack = new Stack(app, 'test-rule-kinesisstream'); From 39381d15d3803ee1ee12a71b3461285539603ab8 Mon Sep 17 00:00:00 2001 From: peng Date: Wed, 21 Oct 2020 11:32:09 -0400 Subject: [PATCH 06/11] Cleaned up .gitignore --- .../aws-events-rule-kinesisfirehose-s3/.gitignore | 12 +----------- .../aws-events-rule-kinesisstream/.gitignore | 14 +------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore index 4a1757f5e..8626f2274 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/.gitignore @@ -13,14 +13,4 @@ dist coverage .nycrc .LAST_PACKAGE -*.snk - -#temp - to be removed -test.ts -**snap.* -**json.* -**.ts.* -jest.* -cdk.json -*.yaml -bin/ \ No newline at end of file +*.snk \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore index b54df8301..6773cabd2 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore @@ -12,16 +12,4 @@ dist coverage .nycrc .LAST_PACKAGE -*.snk - -#temp - to be removed -# test.ts -# **snap.* -# **json.* -# **.test.ts.* -# jest.* -# run-all-test* -# cdk.json -# *.yaml -# misc/ -# ../../../../deployment/build-patterns-aijun.sh \ No newline at end of file +*.snk \ No newline at end of file From ed925a7f2beaa2cb92c924e72452d03323f1d903 Mon Sep 17 00:00:00 2001 From: peng Date: Wed, 21 Oct 2020 11:40:32 -0400 Subject: [PATCH 07/11] Reverted change to change log --- CHANGELOG.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fad8db71..5ba1c8f5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.68.0] - 2020-10-20 - -### Added -- aws-events-rule-kinesisstream pattern added ([#59](https://github.com/awslabs/aws-solutions-constructs/issues/59)) -- aws-events-rule-kinesisfirehose-s3 pattern added ([#72](https://github.com/awslabs/aws-solutions-constructs/issues/72) - ## [1.67.0] - 2020-10-09 ### Changed From 714ba6b95631152de5ef7e42663eb6abc8b64a64 Mon Sep 17 00:00:00 2001 From: peng Date: Thu, 22 Oct 2020 18:24:53 -0400 Subject: [PATCH 08/11] Updates per code review feedback --- .../README.md | 4 +- .../lib/index.ts | 3 +- .../package.json | 8 +- .../aws-events-rule-kinesisstream/README.md | 3 +- .../lib/index.ts | 16 ++- .../package.json | 10 +- .../events-rule-kinesisstream.test.js.snap | 52 ++++++++ ...-rule-kinesisstream-existing.expected.json | 114 ++++++++++++++++++ ...nteg.events-rule-kinesisstream-existing.ts | 37 ++++++ ...e-kinesisstream-no-arguments.expected.json | 26 ++++ 10 files changed, 257 insertions(+), 16 deletions(-) create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json create mode 100644 source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md index 14631b389..86dc3b14d 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md @@ -27,11 +27,10 @@ This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send Here is a minimal deployable pattern definition in Typescript: ``` javascript -const { EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props } from '@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3'; +import { EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props } from '@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3'; const props: EventsRuleToKinesisFirehoseToS3Props = { eventRuleProps: { - description: 'event rule props', schedule: events.Schedule.rate(cdk.Duration.minutes(5)) }; @@ -71,7 +70,6 @@ _Parameters_ |eventsRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Events Rule| |kinesisFirehoseRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)|Returns an instance of the iam.Role created by the construct for Kinesis Data Firehose delivery stream| |kinesisFirehoseLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for Kinesis Data Firehose delivery stream| -|firehoseToS3|[`aws_solutions_constructs.aws-kinesisfirehose-s3`](https://docs.aws.amazon.com/solutions/latest/constructs/aws-kinesisfirehose-s3.html)|Returns an instance of aws-kinesisfirehose-s3 construct created by the construct| ## Default settings diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts index 0b275efd5..d10fd4f3a 100755 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts @@ -59,7 +59,6 @@ export class EventsRuleToKinesisFirehoseToS3 extends Construct { public readonly kinesisFirehoseRole: iam.Role; public readonly s3Bucket?: s3.Bucket; public readonly s3LoggingBucket?: s3.Bucket; - public readonly firehoseToS3: KinesisFirehoseToS3; /** * @summary Constructs a new instance of the EventsRuleToKinesisFirehoseToS3 class. @@ -114,7 +113,7 @@ export class EventsRuleToKinesisFirehoseToS3 extends Construct { }) }; - // Add the kinese event source mapping + // Set up the events rule props const defaultEventsRuleProps = defaults.DefaultEventsRuleProps([KinesisFirehoseEventTarget]); const eventsRuleProps = overrideProps(defaultEventsRuleProps, props.eventRuleProps, true); diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json index 085db7cf3..240c59687 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json @@ -41,14 +41,14 @@ } }, "dotnet": { - "namespace": "Amazon.Constructs.AWS.eventsrulekinesisfirehoses3", - "packageId": "Amazon.Constructs.AWS.eventsrulekinesisfirehoses3", + "namespace": "Amazon.Constructs.AWS.EventsRuleKinesisFirehoseS3", + "packageId": "Amazon.Constructs.AWS.EventsRuleKinesisFirehoseS3", "signAssembly": true, "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" }, "python": { - "distName": "aws-solutions-constructs.aws-events-rule-kinesisfirehose-s3", - "module": "aws_solutions_constructs.aws_events_rule_kinesisfirehose_s3" + "distName": "aws-solutions-constructs.aws-events-rule-kinesis-firehose-s3", + "module": "aws_solutions_constructs.aws_events_rule_kinesis_firehose_s3" } } }, diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md index b5c7d90e3..db25fa8ee 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md @@ -35,7 +35,7 @@ const props: EventsRuleToKinesisStreamProps = { } }; -const constructStack = new EventsRuleToKinesisStream(this, 'test-events-rule-kinesis-stream', props); +new EventsRuleToKinesisStream(this, 'test-events-rule-kinesis-stream', props); ``` ## Initializer @@ -57,6 +57,7 @@ _Parameters_ |eventRuleProps|[`events.RuleProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-events.RuleProps.html)|User provided eventRuleProps to override the defaults. | |existingStreamObj?|[`kinesis.Stream`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.Stream.html)|Existing instance of Kinesis Stream, if this is set then kinesisStreamProps is ignored.| |kinesisStreamProps?|[`kinesis.StreamProps`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.StreamProps.html)|Optional user-provided props to override the default props for the Kinesis stream. | +|createCloudWatchAlarms|`boolean`|Whether to create recommended CloudWatch alarms. | ## Pattern Properties diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts index 17e92e4e4..459f23879 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts @@ -13,9 +13,10 @@ import * as events from '@aws-cdk/aws-events'; import * as kinesis from '@aws-cdk/aws-kinesis'; -import * as defaults from '@aws-solutions-constructs/core'; import * as iam from '@aws-cdk/aws-iam'; +import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import { Construct } from '@aws-cdk/core'; +import * as defaults from '@aws-solutions-constructs/core'; import { overrideProps } from '@aws-solutions-constructs/core'; /** @@ -40,12 +41,19 @@ readonly existingStreamObj?: kinesis.Stream, * @default - Default props are used */ readonly kinesisStreamProps?: kinesis.StreamProps | any +/** + * Whether to create recommended CloudWatch alarms + * + * @default - Alarms are created + */ +readonly createCloudWatchAlarms?: boolean } export class EventsRuleToKinesisStream extends Construct { public readonly kinesisStream: kinesis.Stream; public readonly eventsRule: events.Rule; public readonly eventsRole: iam.Role; + public readonly cloudwatchAlarms?: cloudwatch.Alarm[]; /** * @summary Constructs a new instance of the EventsRuleToKinesisStream class. @@ -82,12 +90,16 @@ export class EventsRuleToKinesisStream extends Construct { }) }; - // Add the kinese event source mapping + // Set up the events rule props const defaultEventsRuleProps = defaults.DefaultEventsRuleProps([kinesisStreamEventTarget]); const eventsRuleProps = overrideProps(defaultEventsRuleProps, props.eventRuleProps, true); // Setup up the event rule this.eventsRule = new events.Rule(this, 'EventsRule', eventsRuleProps); + if (props.createCloudWatchAlarms === undefined || props.createCloudWatchAlarms) { + // Deploy best practices CW Alarms for Kinesis Stream + this.cloudwatchAlarms = defaults.buildKinesisStreamCWAlarms(this); + } } } \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json index 35f49f9cd..1c7214fb6 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json @@ -41,14 +41,14 @@ } }, "dotnet": { - "namespace": "Amazon.Constructs.AWS.eventsrulekinesisstream", - "packageId": "Amazon.Constructs.AWS.eventsrulekinesisstream", + "namespace": "Amazon.Constructs.AWS.EventsRuleKinesisStream", + "packageId": "Amazon.Constructs.AWS.EventsRuleKinesisStream", "signAssembly": true, "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" }, "python": { - "distName": "aws-solutions-constructs.aws-events-rule-kinesisstream", - "module": "aws_solutions_constructs.aws_events_rule_kinesisstream" + "distName": "aws-solutions-constructs.aws-events-rule-kinesis-stream", + "module": "aws_solutions_constructs.aws_events_rule_kinesis_stream" } } }, @@ -56,6 +56,7 @@ "@aws-cdk/aws-events": "~1.67.0", "@aws-cdk/aws-kinesis": "~1.67.0", "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/aws-cloudwatch": "~1.67.0", "@aws-cdk/core": "~1.67.0", "@aws-solutions-constructs/core": "~1.67.0", "constructs": "^3.0.4" @@ -74,6 +75,7 @@ "@aws-cdk/aws-events": "~1.67.0", "@aws-cdk/aws-kinesis": "~1.67.0", "@aws-cdk/aws-iam": "~1.67.0", + "@aws-cdk/aws-cloudwatch": "~1.67.0", "@aws-cdk/core": "~1.67.0", "@aws-solutions-constructs/core": "~1.67.0", "constructs": "^3.0.4" diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap index 7f320a062..fc23ef2a3 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap @@ -28,6 +28,32 @@ Object { }, "Type": "AWS::Events::Rule", }, + "testeventsrulekinesisstreamsexistingresourceKinesisStreamGetRecordsIteratorAgeAlarm0F7901D7": Object { + "Properties": Object { + "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "EvaluationPeriods": 1, + "MetricName": "GetRecords.IteratorAgeMilliseconds", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 2592000, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "testeventsrulekinesisstreamsexistingresourceKinesisStreamReadProvisionedThroughputExceededAlarm746D524D": Object { + "Properties": Object { + "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "MetricName": "ReadProvisionedThroughputExceeded", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Average", + "Threshold": 0, + }, + "Type": "AWS::CloudWatch::Alarm", + }, "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { @@ -127,6 +153,32 @@ Object { }, "Type": "AWS::Kinesis::Stream", }, + "testeventsrulekinesisstreamsdefaultparametersKinesisStreamGetRecordsIteratorAgeAlarmF78CCCCE": Object { + "Properties": Object { + "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "EvaluationPeriods": 1, + "MetricName": "GetRecords.IteratorAgeMilliseconds", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 2592000, + }, + "Type": "AWS::CloudWatch::Alarm", + }, + "testeventsrulekinesisstreamsdefaultparametersKinesisStreamReadProvisionedThroughputExceededAlarm07FC3EDE": Object { + "Properties": Object { + "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "MetricName": "ReadProvisionedThroughputExceeded", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Average", + "Threshold": 0, + }, + "Type": "AWS::CloudWatch::Alarm", + }, "testeventsrulekinesisstreamsdefaultparameterseventsRole3067A354": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json new file mode 100644 index 000000000..01e6c877a --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json @@ -0,0 +1,114 @@ +{ + "Description": "Integration Test for aws-events-rule-kinesisstream with existing kinesis stream", + "Resources": { + "testeventsrulekinesisstreamexistingEventsRule07EC6002": { + "Properties": { + "ScheduleExpression": "rate(5 minutes)", + "State": "ENABLED", + "Targets": [ + { + "Arn": { + "Fn::GetAtt": [ + "teststream04374A09", + "Arn" + ] + }, + "Id": "Target0", + "RoleArn": { + "Fn::GetAtt": [ + "testeventsrulekinesisstreamexistingeventsRole6BFA3F09", + "Arn" + ] + } + } + ] + }, + "Type": "AWS::Events::Rule" + }, + "testeventsrulekinesisstreamexistingKinesisStreamGetRecordsIteratorAgeAlarm6BBE2CE5": { + "Properties": { + "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "EvaluationPeriods": 1, + "MetricName": "GetRecords.IteratorAgeMilliseconds", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 2592000 + }, + "Type": "AWS::CloudWatch::Alarm" + }, + "testeventsrulekinesisstreamexistingKinesisStreamReadProvisionedThroughputExceededAlarmEFD57259": { + "Properties": { + "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "MetricName": "ReadProvisionedThroughputExceeded", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Average", + "Threshold": 0 + }, + "Type": "AWS::CloudWatch::Alarm" + }, + "testeventsrulekinesisstreamexistingeventsRole6BFA3F09": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "events.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "Description": "Events Rule Role" + }, + "Type": "AWS::IAM::Role" + }, + "testeventsrulekinesisstreamexistingeventsRoleDefaultPolicy7B842A0C": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "kinesis:ListShards", + "kinesis:PutRecord", + "kinesis:PutRecords" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "teststream04374A09", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "testeventsrulekinesisstreamexistingeventsRoleDefaultPolicy7B842A0C", + "Roles": [ + { + "Ref": "testeventsrulekinesisstreamexistingeventsRole6BFA3F09" + } + ] + }, + "Type": "AWS::IAM::Policy" + }, + "teststream04374A09": { + "Properties": { + "RetentionPeriodHours": 24, + "ShardCount": 2, + "StreamEncryption": { + "EncryptionType": "KMS", + "KeyId": "alias/aws/kinesis" + } + }, + "Type": "AWS::Kinesis::Stream" + } + } +} \ No newline at end of file diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts new file mode 100644 index 000000000..941908449 --- /dev/null +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts @@ -0,0 +1,37 @@ +/** + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as events from '@aws-cdk/aws-events'; +import * as kinesis from '@aws-cdk/aws-kinesis'; +import { App, Stack, Duration } from '@aws-cdk/core'; +import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; + +const app = new App(); +const stack = new Stack(app, 'test-existing-rule-kinesisstream'); +stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstream with existing kinesis stream'; + +const stream = new kinesis.Stream(stack, 'test-stream', { + shardCount: 2, + encryption: kinesis.StreamEncryption.MANAGED +}); + +const props: EventsRuleToKinesisStreamProps = { + eventRuleProps: { + schedule: events.Schedule.rate(Duration.minutes(5)) + }, + existingStreamObj: stream +}; + +new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-stream-existing', props); + +app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json index c765a2543..7514c0098 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json @@ -83,6 +83,32 @@ } ] } + }, + "testeventsrulekinesisstreamKinesisStreamGetRecordsIteratorAgeAlarm61DF64E6": { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "ComparisonOperator": "GreaterThanOrEqualToThreshold", + "EvaluationPeriods": 1, + "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", + "MetricName": "GetRecords.IteratorAgeMilliseconds", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Maximum", + "Threshold": 2592000 + } + }, + "testeventsrulekinesisstreamKinesisStreamReadProvisionedThroughputExceededAlarmCEDB1659": { + "Type": "AWS::CloudWatch::Alarm", + "Properties": { + "ComparisonOperator": "GreaterThanThreshold", + "EvaluationPeriods": 1, + "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", + "MetricName": "ReadProvisionedThroughputExceeded", + "Namespace": "AWS/Kinesis", + "Period": 300, + "Statistic": "Average", + "Threshold": 0 + } } } } \ No newline at end of file From b2472a111277f2555e65495e970206e6006bee19 Mon Sep 17 00:00:00 2001 From: peng Date: Thu, 22 Oct 2020 18:41:49 -0400 Subject: [PATCH 09/11] removed references to firehoseToS3 --- .../aws-events-rule-kinesisfirehose-s3/lib/index.ts | 1 - .../test/events-rule-kinesisfirehose-s3.test.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts index d10fd4f3a..f786b7e59 100755 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/lib/index.ts @@ -82,7 +82,6 @@ export class EventsRuleToKinesisFirehoseToS3 extends Construct { this.kinesisFirehoseRole = firehoseToS3.kinesisFirehoseRole; this.s3LoggingBucket = firehoseToS3.s3LoggingBucket; this.kinesisFirehoseLogGroup = firehoseToS3.kinesisFirehoseLogGroup; - this.firehoseToS3 = firehoseToS3; // Create an events service role this.eventsRole = new iam.Role(this, 'EventsRuleInvokeKinesisFirehoseRole', { diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts index 215856231..702e5d4f2 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/events-rule-kinesisfirehose-s3.test.ts @@ -53,7 +53,6 @@ test('Test properties', () => { expect(construct.kinesisFirehoseLogGroup !== null); expect(construct.s3Bucket !== null); expect(construct.s3LoggingBucket !== null); - expect(construct.firehoseToS3 !== null); }); // -------------------------------------------------------------- From e544a876f7595070af975b8d91d4396368bc638d Mon Sep 17 00:00:00 2001 From: peng Date: Mon, 26 Oct 2020 16:46:52 -0400 Subject: [PATCH 10/11] Updated aws-events-rule-kinesisfirehose-s3 readme and renamed aws-events-rule-kinesisstream to aws-events-rule-kinesisstreams --- .../README.md | 6 ++++-- .../.eslintignore | 0 .../.gitignore | 2 +- .../.npmignore | 0 .../README.md | 15 ++++++++------- .../architecture.png | Bin .../lib/index.ts | 14 +++++++------- .../package.json | 16 ++++++++-------- .../events-rule-kinesisstreams.test.js.snap} | 16 ++++++++-------- .../test/events-rule-kinesisstreams.test.ts} | 10 +++++----- ...-rule-kinesisstreams-existing.expected.json} | 2 +- ...nteg.events-rule-kinesisstreams-existing.ts} | 8 ++++---- ...e-kinesisstreams-no-arguments.expected.json} | 2 +- ....events-rule-kinesisstreams-no-arguments.ts} | 8 ++++---- 14 files changed, 51 insertions(+), 48 deletions(-) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/.eslintignore (100%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/.gitignore (95%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/.npmignore (100%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/README.md (87%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/architecture.png (100%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/lib/index.ts (90%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream => aws-events-rule-kinesisstreams}/package.json (94%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap => aws-events-rule-kinesisstreams/test/__snapshots__/events-rule-kinesisstreams.test.js.snap} (90%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts => aws-events-rule-kinesisstreams/test/events-rule-kinesisstreams.test.ts} (89%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json => aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.expected.json} (98%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts => aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.ts} (80%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json => aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.expected.json} (99%) rename source/patterns/@aws-solutions-constructs/{aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts => aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.ts} (79%) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md index 86dc3b14d..045675503 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/README.md @@ -27,14 +27,16 @@ This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send Here is a minimal deployable pattern definition in Typescript: ``` javascript +import * as cdk from '@aws-cdk/core'; import { EventsRuleToKinesisFirehoseToS3, EventsRuleToKinesisFirehoseToS3Props } from '@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3'; -const props: EventsRuleToKinesisFirehoseToS3Props = { +const eventsRuleToKinesisFirehoseToS3Props: EventsRuleToKinesisFirehoseToS3Props = { eventRuleProps: { schedule: events.Schedule.rate(cdk.Duration.minutes(5)) + } }; -new EventsRuleToKinesisFirehoseToS3(this, 'test-events-rule-firehose-s3', props); +new EventsRuleToKinesisFirehoseToS3(this, 'test-events-rule-firehose-s3', eventsRuleToKinesisFirehoseToS3Props); ``` diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.eslintignore similarity index 100% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.eslintignore rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.eslintignore diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.gitignore similarity index 95% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.gitignore index 6773cabd2..963955620 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.gitignore +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.gitignore @@ -12,4 +12,4 @@ dist coverage .nycrc .LAST_PACKAGE -*.snk \ No newline at end of file +*.snk diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.npmignore similarity index 100% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/.npmignore rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/.npmignore diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/README.md similarity index 87% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/README.md index db25fa8ee..32e498b75 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/README.md +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/README.md @@ -1,4 +1,4 @@ -# aws-events-rule-kinesisstream module +# aws-events-rule-kinesisstreams module --- @@ -19,7 +19,7 @@ | **Language** | **Package** | |:-------------|-----------------| |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_events_rule_kinesisstream`| -|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesisstream`| +|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-events-rule-kinesisstreams`| |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.eventsrulekinesisstream`| This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send data to an Amazon Kinesis Data Stream @@ -27,28 +27,29 @@ This AWS Solutions Construct implements an Amazon CloudWatch Events rule to send Here is a minimal deployable pattern definition in Typescript: ``` typescript -import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from "@aws-solutions-constructs/aws-events-rule-kinesisstream"; +import * as cdk from '@aws-cdk/core'; +import {EventsRuleToKinesisStreams, EventsRuleToKinesisStreamsProps} from "@aws-solutions-constructs/aws-events-rule-kinesisstreams"; -const props: EventsRuleToKinesisStreamProps = { +const props: EventsRuleToKinesisStreamsProps = { eventRuleProps: { schedule: events.Schedule.rate(Duration.minutes(5)), } }; -new EventsRuleToKinesisStream(this, 'test-events-rule-kinesis-stream', props); +new EventsRuleToKinesisStreams(this, 'test-events-rule-kinesis-stream', props); ``` ## Initializer ``` text -new EventsRuleToKinesisStream(scope: Construct, id: string, props: EventsRuleToKinesisStreamProps); +new EventsRuleToKinesisStreams(scope: Construct, id: string, props: EventsRuleToKinesisStreamsProps); ``` _Parameters_ * scope [`Construct`](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) * id `string` -* props [`EventsRuleToKinesisStreamProps`](#pattern-construct-props) +* props [`EventsRuleToKinesisStreamsProps`](#pattern-construct-props) ## Pattern Construct Props diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/architecture.png similarity index 100% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/architecture.png rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/architecture.png diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/lib/index.ts similarity index 90% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/lib/index.ts index 459f23879..6275d616f 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/lib/index.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/lib/index.ts @@ -20,9 +20,9 @@ import * as defaults from '@aws-solutions-constructs/core'; import { overrideProps } from '@aws-solutions-constructs/core'; /** - * @summary The properties for the EventsRuleToKinesisStream Construct + * @summary The properties for the EventsRuleToKinesisStreams Construct */ -export interface EventsRuleToKinesisStreamProps { +export interface EventsRuleToKinesisStreamsProps { /** * User provided eventRuleProps to override the defaults * @@ -30,7 +30,7 @@ export interface EventsRuleToKinesisStreamProps { */ readonly eventRuleProps: events.RuleProps /** - * Existing instance of Kinesis Stream object, if this is set then the kinesisStreamProps is ignored. + * Existing instance of Kinesis Stream object, if this is set then the KinesisStreamProps is ignored. * * @default - Default props are used */ @@ -49,21 +49,21 @@ readonly kinesisStreamProps?: kinesis.StreamProps | any readonly createCloudWatchAlarms?: boolean } -export class EventsRuleToKinesisStream extends Construct { +export class EventsRuleToKinesisStreams extends Construct { public readonly kinesisStream: kinesis.Stream; public readonly eventsRule: events.Rule; public readonly eventsRole: iam.Role; public readonly cloudwatchAlarms?: cloudwatch.Alarm[]; /** - * @summary Constructs a new instance of the EventsRuleToKinesisStream class. + * @summary Constructs a new instance of the EventsRuleToKinesisStreams class. * @param {cdk.App} scope - represents the scope for all the resources. * @param {string} id - this is a a scope-unique id. - * @param {EventsRuleToKinesisStreamProps} props - user provided props for the construct + * @param {EventsRuleToKinesisStreamsProps} props - user provided props for the construct * @since 0.8.0 * @access public */ - constructor(scope: Construct, id: string, props: EventsRuleToKinesisStreamProps) { + constructor(scope: Construct, id: string, props: EventsRuleToKinesisStreamsProps) { super(scope, id); // Set up the Kinesis Stream diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json similarity index 94% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json index 1c7214fb6..16feae7d1 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json @@ -1,5 +1,5 @@ { - "name": "@aws-solutions-constructs/aws-events-rule-kinesisstream", + "name": "@aws-solutions-constructs/aws-events-rule-kinesisstreams", "version": "1.67.0", "description": "CDK Constructs for deploying Amazon CloudWatch Events Rule that invokes Amazon Kinesis Data Stream", "main": "lib/index.js", @@ -22,7 +22,7 @@ "repository": { "type": "git", "url": "https://github.com/awslabs/aws-solutions-constructs.git", - "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream" + "directory": "source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams" }, "author": { "name": "Amazon Web Services", @@ -34,21 +34,21 @@ "outdir": "dist", "targets": { "java": { - "package": "software.amazon.awsconstructs.services.eventsrulekinesisstream", + "package": "software.amazon.awsconstructs.services.eventsrulekinesisstreams", "maven": { "groupId": "software.amazon.awsconstructs", - "artifactId": "eventsrulekinesisstream" + "artifactId": "eventsrulekinesisstreams" } }, "dotnet": { - "namespace": "Amazon.Constructs.AWS.EventsRuleKinesisStream", - "packageId": "Amazon.Constructs.AWS.EventsRuleKinesisStream", + "namespace": "Amazon.Constructs.AWS.EventsRuleKinesisStreams", + "packageId": "Amazon.Constructs.AWS.EventsRuleKinesisStreams", "signAssembly": true, "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" }, "python": { - "distName": "aws-solutions-constructs.aws-events-rule-kinesis-stream", - "module": "aws_solutions_constructs.aws_events_rule_kinesis_stream" + "distName": "aws-solutions-constructs.aws-events-rule-kinesis-streams", + "module": "aws_solutions_constructs.aws_events_rule_kinesis_streams" } } }, diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/__snapshots__/events-rule-kinesisstreams.test.js.snap similarity index 90% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/__snapshots__/events-rule-kinesisstreams.test.js.snap index fc23ef2a3..ddbf7d320 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/__snapshots__/events-rule-kinesisstream.test.js.snap +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/__snapshots__/events-rule-kinesisstreams.test.js.snap @@ -3,7 +3,7 @@ exports[`Test existing resources 1`] = ` Object { "Resources": Object { - "testeventsrulekinesisstreamsexistingresourceEventsRuleEFD8ADE5": Object { + "testeventsrulekinesisstreamexistingresourceEventsRule50C4E158": Object { "Properties": Object { "Description": "event rule props", "ScheduleExpression": "rate(5 minutes)", @@ -19,7 +19,7 @@ Object { "Id": "Target0", "RoleArn": Object { "Fn::GetAtt": Array [ - "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE", + "testeventsrulekinesisstreamexistingresourceeventsRole6431B874", "Arn", ], }, @@ -28,7 +28,7 @@ Object { }, "Type": "AWS::Events::Rule", }, - "testeventsrulekinesisstreamsexistingresourceKinesisStreamGetRecordsIteratorAgeAlarm0F7901D7": Object { + "testeventsrulekinesisstreamexistingresourceKinesisStreamGetRecordsIteratorAgeAlarmCFA3A3CB": Object { "Properties": Object { "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", "ComparisonOperator": "GreaterThanOrEqualToThreshold", @@ -41,7 +41,7 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "testeventsrulekinesisstreamsexistingresourceKinesisStreamReadProvisionedThroughputExceededAlarm746D524D": Object { + "testeventsrulekinesisstreamexistingresourceKinesisStreamReadProvisionedThroughputExceededAlarm2DAC9390": Object { "Properties": Object { "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", "ComparisonOperator": "GreaterThanThreshold", @@ -54,7 +54,7 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE": Object { + "testeventsrulekinesisstreamexistingresourceeventsRole6431B874": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ @@ -72,7 +72,7 @@ Object { }, "Type": "AWS::IAM::Role", }, - "testeventsrulekinesisstreamsexistingresourceeventsRoleDefaultPolicy5FF81DB6": Object { + "testeventsrulekinesisstreamexistingresourceeventsRoleDefaultPolicyDB76C6C1": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ @@ -93,10 +93,10 @@ Object { ], "Version": "2012-10-17", }, - "PolicyName": "testeventsrulekinesisstreamsexistingresourceeventsRoleDefaultPolicy5FF81DB6", + "PolicyName": "testeventsrulekinesisstreamexistingresourceeventsRoleDefaultPolicyDB76C6C1", "Roles": Array [ Object { - "Ref": "testeventsrulekinesisstreamsexistingresourceeventsRole6600B7FE", + "Ref": "testeventsrulekinesisstreamexistingresourceeventsRole6431B874", }, ], }, diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/events-rule-kinesisstreams.test.ts similarity index 89% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/events-rule-kinesisstreams.test.ts index 70dfdd3e1..65d33628a 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/events-rule-kinesisstream.test.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/events-rule-kinesisstreams.test.ts @@ -16,19 +16,19 @@ import * as cdk from "@aws-cdk/core"; import * as events from "@aws-cdk/aws-events"; import * as kinesis from '@aws-cdk/aws-kinesis'; import '@aws-cdk/assert/jest'; -import {EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps} from '../lib'; +import {EventsRuleToKinesisStreams, EventsRuleToKinesisStreamsProps} from '../lib'; // -------------------------------------------------------------- // Test snapshot match with default parameters // -------------------------------------------------------------- function deployNewStack(stack: cdk.Stack) { - const props: EventsRuleToKinesisStreamProps = { + const props: EventsRuleToKinesisStreamsProps = { eventRuleProps: { description: 'event rule props', schedule: events.Schedule.rate(cdk.Duration.minutes(5)) } }; - return new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-streams-default-parameters', props); + return new EventsRuleToKinesisStreams(stack, 'test-events-rule-kinesis-streams-default-parameters', props); } test('Test snapshot match with default parameters', () => { @@ -44,7 +44,7 @@ test('Test snapshot match with default parameters', () => { // -------------------------------------------------------------- test('Test properties', () => { const stack = new cdk.Stack(); - const construct: EventsRuleToKinesisStream = deployNewStack(stack); + const construct: EventsRuleToKinesisStreams = deployNewStack(stack); // Assertions expect(construct.eventsRule !== null); @@ -82,7 +82,7 @@ test('Test existing resources', () => { encryption: kinesis.StreamEncryption.UNENCRYPTED }); - new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-streams-existing-resource', { + new EventsRuleToKinesisStreams(stack, 'test-events-rule-kinesis-stream-existing-resource', { existingStreamObj: existingStream, // These properties will be ignored as existing object was provided kinesisStreamProps: { diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.expected.json similarity index 98% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.expected.json index 01e6c877a..218bff240 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.expected.json @@ -1,5 +1,5 @@ { - "Description": "Integration Test for aws-events-rule-kinesisstream with existing kinesis stream", + "Description": "Integration Test for aws-events-rule-kinesisstreams with existing kinesis stream", "Resources": { "testeventsrulekinesisstreamexistingEventsRule07EC6002": { "Properties": { diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.ts similarity index 80% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.ts index 941908449..6833bc388 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-existing.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-existing.ts @@ -14,24 +14,24 @@ import * as events from '@aws-cdk/aws-events'; import * as kinesis from '@aws-cdk/aws-kinesis'; import { App, Stack, Duration } from '@aws-cdk/core'; -import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; +import { EventsRuleToKinesisStreams, EventsRuleToKinesisStreamsProps } from '../lib'; const app = new App(); const stack = new Stack(app, 'test-existing-rule-kinesisstream'); -stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstream with existing kinesis stream'; +stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstreams with existing kinesis stream'; const stream = new kinesis.Stream(stack, 'test-stream', { shardCount: 2, encryption: kinesis.StreamEncryption.MANAGED }); -const props: EventsRuleToKinesisStreamProps = { +const props: EventsRuleToKinesisStreamsProps = { eventRuleProps: { schedule: events.Schedule.rate(Duration.minutes(5)) }, existingStreamObj: stream }; -new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-stream-existing', props); +new EventsRuleToKinesisStreams(stack, 'test-events-rule-kinesis-stream-existing', props); app.synth(); diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.expected.json similarity index 99% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.expected.json index 7514c0098..040404e62 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.expected.json @@ -1,5 +1,5 @@ { - "Description": "Integration Test for aws-events-rule-kinesisstream", + "Description": "Integration Test for aws-events-rule-kinesisstreams", "Resources": { "testeventsrulekinesisstreamKinesisStream969B0ACC": { "Type": "AWS::Kinesis::Stream", diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.ts similarity index 79% rename from source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts rename to source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.ts index 341302dd4..9b3455f3c 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstream/test/integ.events-rule-kinesisstream-no-arguments.ts +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/test/integ.events-rule-kinesisstreams-no-arguments.ts @@ -13,18 +13,18 @@ import * as events from '@aws-cdk/aws-events'; import { App, Stack, Duration } from '@aws-cdk/core'; -import { EventsRuleToKinesisStream, EventsRuleToKinesisStreamProps } from '../lib'; +import { EventsRuleToKinesisStreams, EventsRuleToKinesisStreamsProps } from '../lib'; const app = new App(); const stack = new Stack(app, 'test-rule-kinesisstream'); -stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstream'; +stack.templateOptions.description = 'Integration Test for aws-events-rule-kinesisstreams'; -const props: EventsRuleToKinesisStreamProps = { +const props: EventsRuleToKinesisStreamsProps = { eventRuleProps: { schedule: events.Schedule.rate(Duration.minutes(5)) } }; -new EventsRuleToKinesisStream(stack, 'test-events-rule-kinesis-stream', props); +new EventsRuleToKinesisStreams(stack, 'test-events-rule-kinesis-stream', props); app.synth(); \ No newline at end of file From 4d30b8caabe782f0509bb8fd7ff7033b8d938ba5 Mon Sep 17 00:00:00 2001 From: peng Date: Mon, 26 Oct 2020 18:52:29 -0400 Subject: [PATCH 11/11] Updated version to 1.69.0 and events-rule-kinesisfirehose-s3 snapshot and integration template --- .../package.json | 36 +++++++++---------- ...vents-rule-kinesisfirehose-s3.test.js.snap | 24 +++++++++++++ ...esisfirehose-s3-no-arguments.expected.json | 24 +++++++++++++ .../package.json | 28 +++++++-------- 4 files changed, 80 insertions(+), 32 deletions(-) diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json index 240c59687..66098a047 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/package.json @@ -1,6 +1,6 @@ { "name": "@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3", - "version": "1.67.0", + "version": "1.69.0", "description": "CDK Constructs for Amazon CloudWatch Events Rule to Amazon Kinesis Firehose to Amazon S3 integration.", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -53,18 +53,18 @@ } }, "dependencies": { - "@aws-cdk/aws-iam": "~1.67.0", - "@aws-cdk/aws-kinesisfirehose": "~1.67.0", - "@aws-cdk/aws-events": "~1.67.0", - "@aws-cdk/core": "~1.67.0", - "@aws-cdk/aws-s3": "~1.67.0", - "@aws-cdk/aws-logs": "~1.67.0", - "@aws-solutions-constructs/core": "~1.67.0", - "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.67.0", + "@aws-cdk/aws-iam": "~1.69.0", + "@aws-cdk/aws-kinesisfirehose": "~1.69.0", + "@aws-cdk/aws-events": "~1.69.0", + "@aws-cdk/core": "~1.69.0", + "@aws-cdk/aws-s3": "~1.69.0", + "@aws-cdk/aws-logs": "~1.69.0", + "@aws-solutions-constructs/core": "~1.69.0", + "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.69.0", "constructs": "^3.0.4" }, "devDependencies": { - "@aws-cdk/assert": "~1.67.0", + "@aws-cdk/assert": "~1.69.0", "@types/jest": "^24.0.23", "@types/node": "^10.3.0" }, @@ -74,14 +74,14 @@ ] }, "peerDependencies": { - "@aws-cdk/aws-iam": "~1.67.0", - "@aws-cdk/aws-kinesisfirehose": "~1.67.0", - "@aws-cdk/aws-events": "~1.67.0", - "@aws-cdk/aws-s3": "~1.67.0", - "@aws-cdk/core": "~1.67.0", - "@aws-solutions-constructs/core": "~1.67.0", - "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.67.0", + "@aws-cdk/aws-iam": "~1.69.0", + "@aws-cdk/aws-kinesisfirehose": "~1.69.0", + "@aws-cdk/aws-events": "~1.69.0", + "@aws-cdk/aws-s3": "~1.69.0", + "@aws-cdk/core": "~1.69.0", + "@aws-solutions-constructs/core": "~1.69.0", + "@aws-solutions-constructs/aws-kinesisfirehose-s3": "~1.69.0", "constructs": "^3.0.4", - "@aws-cdk/aws-logs": "~1.67.0" + "@aws-cdk/aws-logs": "~1.69.0" } } diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap index 1b37b4fa5..876ac825b 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/__snapshots__/events-rule-kinesisfirehose-s3.test.js.snap @@ -98,6 +98,30 @@ Object { }, }, "CompressionFormat": "GZIP", + "EncryptionConfiguration": Object { + "KMSEncryptionConfig": Object { + "AWSKMSKeyARN": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":kms:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":alias/aws/s3", + ], + ], + }, + }, + }, "RoleARN": Object { "Fn::GetAtt": Array [ "testeventsrulekinesisfirehoses3defaultparametersKinesisFirehoseToS3KinesisFirehoseRole9A570638", diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json index be506c32c..cddb1b97e 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisfirehose-s3/test/integ.events-rule-kinesisfirehose-s3-no-arguments.expected.json @@ -289,6 +289,30 @@ } }, "CompressionFormat": "GZIP", + "EncryptionConfiguration": { + "KMSEncryptionConfig": { + "AWSKMSKeyARN": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":kms:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":alias/aws/s3" + ] + ] + } + } + }, "RoleARN": { "Fn::GetAtt": [ "testeventsrulekinesisfirehoses3KinesisFirehoseToS3KinesisFirehoseRole7DFE85DB", diff --git a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json index 16feae7d1..ae8db1e5c 100644 --- a/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json +++ b/source/patterns/@aws-solutions-constructs/aws-events-rule-kinesisstreams/package.json @@ -1,6 +1,6 @@ { "name": "@aws-solutions-constructs/aws-events-rule-kinesisstreams", - "version": "1.67.0", + "version": "1.69.0", "description": "CDK Constructs for deploying Amazon CloudWatch Events Rule that invokes Amazon Kinesis Data Stream", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -53,16 +53,16 @@ } }, "dependencies": { - "@aws-cdk/aws-events": "~1.67.0", - "@aws-cdk/aws-kinesis": "~1.67.0", - "@aws-cdk/aws-iam": "~1.67.0", - "@aws-cdk/aws-cloudwatch": "~1.67.0", - "@aws-cdk/core": "~1.67.0", - "@aws-solutions-constructs/core": "~1.67.0", + "@aws-cdk/aws-events": "~1.69.0", + "@aws-cdk/aws-kinesis": "~1.69.0", + "@aws-cdk/aws-iam": "~1.69.0", + "@aws-cdk/aws-cloudwatch": "~1.69.0", + "@aws-cdk/core": "~1.69.0", + "@aws-solutions-constructs/core": "~1.69.0", "constructs": "^3.0.4" }, "devDependencies": { - "@aws-cdk/assert": "~1.67.0", + "@aws-cdk/assert": "~1.69.0", "@types/jest": "^24.0.23", "@types/node": "^10.3.0" }, @@ -72,12 +72,12 @@ ] }, "peerDependencies": { - "@aws-cdk/aws-events": "~1.67.0", - "@aws-cdk/aws-kinesis": "~1.67.0", - "@aws-cdk/aws-iam": "~1.67.0", - "@aws-cdk/aws-cloudwatch": "~1.67.0", - "@aws-cdk/core": "~1.67.0", - "@aws-solutions-constructs/core": "~1.67.0", + "@aws-cdk/aws-events": "~1.69.0", + "@aws-cdk/aws-kinesis": "~1.69.0", + "@aws-cdk/aws-iam": "~1.69.0", + "@aws-cdk/aws-cloudwatch": "~1.69.0", + "@aws-cdk/core": "~1.69.0", + "@aws-solutions-constructs/core": "~1.69.0", "constructs": "^3.0.4" } }