From a85c59e3e2ac8d13b66573b68fd19b0e407a4644 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Mon, 22 Apr 2024 22:00:37 +0200 Subject: [PATCH 01/19] Fix: Improve user experience for machine identities --- .../IdentitySection/IdentityTable.tsx | 132 +++++++++++------- 1 file changed, 82 insertions(+), 50 deletions(-) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx index 804c2d054..ac1cf31c3 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx @@ -1,9 +1,22 @@ -import { faKey, faLock, faPencil, faServer, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { + faCopy, + faEllipsis, + faKey, + faLock, + faPencil, + faServer, + faXmark +} from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, EmptyState, IconButton, Select, @@ -44,7 +57,6 @@ type Props = { }; export const IdentityTable = ({ handlePopUpOpen }: Props) => { - const { currentOrg } = useOrganization(); const orgId = currentOrg?.id || ""; @@ -83,7 +95,6 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { Name - ID Role Auth Method @@ -98,7 +109,6 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { return ( {name} - {id} { {authMethod ? identityAuthToNameMap[authMethod] : "Not configured"} -
+
{authMethod === IdentityAuthMethod.UNIVERSAL_AUTH && ( { colorSchema="primary" variant="plain" ariaLabel="update" - // isDisabled={!isAllowed} > @@ -168,7 +177,6 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { colorSchema="primary" variant="plain" ariaLabel="update" - className="ml-4" isDisabled={!isAllowed} > @@ -176,54 +184,78 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { )} - - {(isAllowed) => ( - { - handlePopUpOpen("identity", { - identityId: id, - name, - role, - customRole - }); - }} - size="lg" - colorSchema="primary" - variant="plain" - ariaLabel="update" - className="ml-4" - isDisabled={!isAllowed} + + + +
+ +
+
+
+ + - -
- )} -
- - {(isAllowed) => ( - ( + { + if (!isAllowed) return; + handlePopUpOpen("identity", { + identityId: id, + name, + role, + customRole + }); + }} + disabled={!isAllowed} + icon={} + > + Update identity + + )} + + + {(isAllowed) => ( + { + if (!isAllowed) return; + handlePopUpOpen("deleteIdentity", { + identityId: id, + name + }); + }} + icon={} + > + Delete identity + + )} + + { - handlePopUpOpen("deleteIdentity", { - identityId: id, - name + navigator.clipboard.writeText(id); + createNotification({ + text: "Copied identity internal ID to clipboard", + type: "success" }); }} - size="lg" - colorSchema="danger" - variant="plain" - ariaLabel="update" - className="ml-4" - isDisabled={!isAllowed} + icon={} > - - - )} - + Copy internal ID + + +
From fdf5fcad0a26eb51ca6221044b12baf951b0be84 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:09:46 +0200 Subject: [PATCH 02/19] Update IdentityTable.tsx --- .../components/IdentitySection/IdentityTable.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx index ac1cf31c3..f621e3e18 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx @@ -185,13 +185,13 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { )} - - -
+ +
+ -
-
- + +
+
Date: Wed, 8 May 2024 09:20:30 -0700 Subject: [PATCH 03/19] Update IdentityTable.tsx --- .../OrgIdentityTab/components/IdentitySection/IdentityTable.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx index f621e3e18..fa8529371 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx @@ -252,7 +252,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => { }} icon={} > - Copy internal ID + Copy Identity ID
From 265932df208b6913003a11cf258e8a6159a02ed5 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 15 May 2024 16:30:42 -0700 Subject: [PATCH 04/19] Finish preliminary azure auth method --- backend/src/@types/fastify.d.ts | 2 + backend/src/@types/knex.d.ts | 8 + .../20240515211432_identity-azure-auth.ts | 29 ++ .../src/db/schemas/identity-azure-auths.ts | 26 ++ backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 4 +- .../ee/services/audit-log/audit-log-types.ts | 50 +++ backend/src/server/routes/index.ts | 14 +- .../routes/v1/identity-azure-auth-router.ts | 261 +++++++++++++ backend/src/server/routes/v1/index.ts | 2 + .../identity-azure-auth-dal.ts | 10 + .../identity-azure-auth-fns.ts | 34 ++ .../identity-azure-auth-service.ts | 286 ++++++++++++++ .../identity-azure-auth-types.ts | 120 ++++++ .../src/hooks/api/identities/constants.tsx | 3 +- frontend/src/hooks/api/identities/enums.tsx | 3 +- frontend/src/hooks/api/identities/index.tsx | 3 + .../src/hooks/api/identities/mutations.tsx | 78 +++- frontend/src/hooks/api/identities/queries.tsx | 25 +- frontend/src/hooks/api/identities/types.ts | 39 ++ .../IdentityAuthMethodModal.tsx | 13 +- .../IdentitySection/IdentityAzureAuthForm.tsx | 350 ++++++++++++++++++ 22 files changed, 1352 insertions(+), 9 deletions(-) create mode 100644 backend/src/db/migrations/20240515211432_identity-azure-auth.ts create mode 100644 backend/src/db/schemas/identity-azure-auths.ts create mode 100644 backend/src/server/routes/v1/identity-azure-auth-router.ts create mode 100644 backend/src/services/identity-azure-auth/identity-azure-auth-dal.ts create mode 100644 backend/src/services/identity-azure-auth/identity-azure-auth-fns.ts create mode 100644 backend/src/services/identity-azure-auth/identity-azure-auth-service.ts create mode 100644 backend/src/services/identity-azure-auth/identity-azure-auth-types.ts create mode 100644 frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 994b324f6..faeb89c4f 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -33,6 +33,7 @@ import { TGroupProjectServiceFactory } from "@app/services/group-project/group-p import { TIdentityServiceFactory } from "@app/services/identity/identity-service"; import { TIdentityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { TIdentityAwsAuthServiceFactory } from "@app/services/identity-aws-auth/identity-aws-auth-service"; +import { TIdentityAzureAuthServiceFactory } from "@app/services/identity-azure-auth/identity-azure-auth-service"; import { TIdentityGcpAuthServiceFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-service"; import { TIdentityProjectServiceFactory } from "@app/services/identity-project/identity-project-service"; import { TIdentityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service"; @@ -119,6 +120,7 @@ declare module "fastify" { identityUa: TIdentityUaServiceFactory; identityGcpAuth: TIdentityGcpAuthServiceFactory; identityAwsAuth: TIdentityAwsAuthServiceFactory; + identityAzureAuth: TIdentityAzureAuthServiceFactory; accessApprovalPolicy: TAccessApprovalPolicyServiceFactory; accessApprovalRequest: TAccessApprovalRequestServiceFactory; secretApprovalPolicy: TSecretApprovalPolicyServiceFactory; diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 9e8a2a752..5617539ce 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -62,6 +62,9 @@ import { TIdentityAwsAuths, TIdentityAwsAuthsInsert, TIdentityAwsAuthsUpdate, + TIdentityAzureAuths, + TIdentityAzureAuthsInsert, + TIdentityAzureAuthsUpdate, TIdentityGcpAuths, TIdentityGcpAuthsInsert, TIdentityGcpAuthsUpdate, @@ -348,6 +351,11 @@ declare module "knex/types/tables" { TIdentityAwsAuthsInsert, TIdentityAwsAuthsUpdate >; + [TableName.IdentityAzureAuth]: Knex.CompositeTableType< + TIdentityAzureAuths, + TIdentityAzureAuthsInsert, + TIdentityAzureAuthsUpdate + >; [TableName.IdentityUaClientSecret]: Knex.CompositeTableType< TIdentityUaClientSecrets, TIdentityUaClientSecretsInsert, diff --git a/backend/src/db/migrations/20240515211432_identity-azure-auth.ts b/backend/src/db/migrations/20240515211432_identity-azure-auth.ts new file mode 100644 index 000000000..3d91b2f9c --- /dev/null +++ b/backend/src/db/migrations/20240515211432_identity-azure-auth.ts @@ -0,0 +1,29 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + if (!(await knex.schema.hasTable(TableName.IdentityAzureAuth))) { + await knex.schema.createTable(TableName.IdentityAzureAuth, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.bigInteger("accessTokenTTL").defaultTo(7200).notNullable(); + t.bigInteger("accessTokenMaxTTL").defaultTo(7200).notNullable(); + t.bigInteger("accessTokenNumUsesLimit").defaultTo(0).notNullable(); + t.jsonb("accessTokenTrustedIps").notNullable(); + t.timestamps(true, true, true); + t.uuid("identityId").notNullable().unique(); + t.foreign("identityId").references("id").inTable(TableName.Identity).onDelete("CASCADE"); + t.string("tenantId").notNullable(); + t.string("resource").notNullable(); + t.string("allowedServicePrincipalIds").notNullable(); + }); + } + + await createOnUpdateTrigger(knex, TableName.IdentityAzureAuth); +} + +export async function down(knex: Knex): Promise { + await knex.schema.dropTableIfExists(TableName.IdentityAzureAuth); + await dropOnUpdateTrigger(knex, TableName.IdentityAzureAuth); +} diff --git a/backend/src/db/schemas/identity-azure-auths.ts b/backend/src/db/schemas/identity-azure-auths.ts new file mode 100644 index 000000000..856f7b8f1 --- /dev/null +++ b/backend/src/db/schemas/identity-azure-auths.ts @@ -0,0 +1,26 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const IdentityAzureAuthsSchema = z.object({ + id: z.string().uuid(), + accessTokenTTL: z.coerce.number().default(7200), + accessTokenMaxTTL: z.coerce.number().default(7200), + accessTokenNumUsesLimit: z.coerce.number().default(0), + accessTokenTrustedIps: z.unknown(), + createdAt: z.date(), + updatedAt: z.date(), + identityId: z.string().uuid(), + tenantId: z.string(), + resource: z.string(), + allowedServicePrincipalIds: z.string() +}); + +export type TIdentityAzureAuths = z.infer; +export type TIdentityAzureAuthsInsert = Omit, TImmutableDBKeys>; +export type TIdentityAzureAuthsUpdate = Partial, TImmutableDBKeys>>; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 4993003f9..917f5c1ea 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -18,6 +18,7 @@ export * from "./groups"; export * from "./identities"; export * from "./identity-access-tokens"; export * from "./identity-aws-auths"; +export * from "./identity-azure-auths"; export * from "./identity-gcp-auths"; export * from "./identity-org-memberships"; export * from "./identity-project-additional-privilege"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index aaaa0ff9a..e4c6f6a91 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -46,6 +46,7 @@ export enum TableName { IdentityAccessToken = "identity_access_tokens", IdentityUniversalAuth = "identity_universal_auths", IdentityGcpAuth = "identity_gcp_auths", + IdentityAzureAuth = "identity_azure_auths", IdentityUaClientSecret = "identity_ua_client_secrets", IdentityAwsAuth = "identity_aws_auths", IdentityOrgMembership = "identity_org_memberships", @@ -147,5 +148,6 @@ export enum ProjectUpgradeStatus { export enum IdentityAuthMethod { Univeral = "universal-auth", GCP_AUTH = "gcp-auth", - AWS_AUTH = "aws-auth" + AWS_AUTH = "aws-auth", + AZURE_AUTH = "azure-auth" } diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 0dc993358..36d236323 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -74,6 +74,10 @@ export enum EventType { ADD_IDENTITY_AWS_AUTH = "add-identity-aws-auth", UPDATE_IDENTITY_AWS_AUTH = "update-identity-aws-auth", GET_IDENTITY_AWS_AUTH = "get-identity-aws-auth", + LOGIN_IDENTITY_AZURE_AUTH = "login-identity-azure-auth", + ADD_IDENTITY_AZURE_AUTH = "add-identity-azure-auth", + UPDATE_IDENTITY_AZURE_AUTH = "update-identity-azure-auth", + GET_IDENTITY_AZURE_AUTH = "get-identity-azure-auth", CREATE_ENVIRONMENT = "create-environment", UPDATE_ENVIRONMENT = "update-environment", DELETE_ENVIRONMENT = "delete-environment", @@ -504,6 +508,48 @@ interface GetIdentityAwsAuthEvent { }; } +interface LoginIdentityAzureAuthEvent { + type: EventType.LOGIN_IDENTITY_AZURE_AUTH; + metadata: { + identityId: string; + identityAzureAuthId: string; + identityAccessTokenId: string; + }; +} + +interface AddIdentityAzureAuthEvent { + type: EventType.ADD_IDENTITY_AZURE_AUTH; + metadata: { + identityId: string; + tenantId: string; + resource: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: Array; + }; +} + +interface UpdateIdentityAzureAuthEvent { + type: EventType.UPDATE_IDENTITY_AZURE_AUTH; + metadata: { + identityId: string; + tenantId?: string; + resource?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: Array; + }; +} + +interface GetIdentityAzureAuthEvent { + type: EventType.GET_IDENTITY_AZURE_AUTH; + metadata: { + identityId: string; + }; +} + interface CreateEnvironmentEvent { type: EventType.CREATE_ENVIRONMENT; metadata: { @@ -766,6 +812,10 @@ export type Event = | AddIdentityAwsAuthEvent | UpdateIdentityAwsAuthEvent | GetIdentityAwsAuthEvent + | LoginIdentityAzureAuthEvent + | AddIdentityAzureAuthEvent + | UpdateIdentityAzureAuthEvent + | GetIdentityAzureAuthEvent | CreateEnvironmentEvent | UpdateEnvironmentEvent | DeleteEnvironmentEvent diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 3a050bcad..ebc572a57 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -80,6 +80,8 @@ import { identityAccessTokenDALFactory } from "@app/services/identity-access-tok import { identityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { identityAwsAuthDALFactory } from "@app/services/identity-aws-auth/identity-aws-auth-dal"; import { identityAwsAuthServiceFactory } from "@app/services/identity-aws-auth/identity-aws-auth-service"; +import { identityAzureAuthDALFactory } from "@app/services/identity-azure-auth/identity-azure-auth-dal"; +import { identityAzureAuthServiceFactory } from "@app/services/identity-azure-auth/identity-azure-auth-service"; import { identityGcpAuthDALFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-dal"; import { identityGcpAuthServiceFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-service"; import { identityProjectDALFactory } from "@app/services/identity-project/identity-project-dal"; @@ -209,8 +211,8 @@ export const registerRoutes = async ( const identityUaDAL = identityUaDALFactory(db); const identityUaClientSecretDAL = identityUaClientSecretDALFactory(db); const identityAwsAuthDAL = identityAwsAuthDALFactory(db); - const identityGcpAuthDAL = identityGcpAuthDALFactory(db); + const identityAzureAuthDAL = identityAzureAuthDALFactory(db); const auditLogDAL = auditLogDALFactory(db); const auditLogStreamDAL = auditLogStreamDALFactory(db); @@ -730,6 +732,15 @@ export const registerRoutes = async ( permissionService }); + const identityAzureAuthService = identityAzureAuthServiceFactory({ + identityAzureAuthDAL, + identityOrgMembershipDAL, + identityAccessTokenDAL, + identityDAL, + permissionService, + licenseService + }); + const dynamicSecretProviders = buildDynamicSecretProviders(); const dynamicSecretQueueService = dynamicSecretLeaseQueueServiceFactory({ queueService, @@ -800,6 +811,7 @@ export const registerRoutes = async ( identityUa: identityUaService, identityGcpAuth: identityGcpAuthService, identityAwsAuth: identityAwsAuthService, + identityAzureAuth: identityAzureAuthService, secretApprovalPolicy: sapService, accessApprovalPolicy: accessApprovalPolicyService, accessApprovalRequest: accessApprovalRequestService, diff --git a/backend/src/server/routes/v1/identity-azure-auth-router.ts b/backend/src/server/routes/v1/identity-azure-auth-router.ts new file mode 100644 index 000000000..9e9e49b56 --- /dev/null +++ b/backend/src/server/routes/v1/identity-azure-auth-router.ts @@ -0,0 +1,261 @@ +import { z } from "zod"; + +import { IdentityAzureAuthsSchema } from "@app/db/schemas"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; +import { TIdentityTrustedIp } from "@app/services/identity/identity-types"; + +export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider) => { + server.route({ + method: "POST", + url: "/azure-auth/login", + config: { + rateLimit: writeLimit + }, + schema: { + description: "Login with Azure Auth", + body: z.object({ + identityId: z.string(), + jwt: z.string() + }), + response: { + 200: z.object({ + accessToken: z.string(), + expiresIn: z.coerce.number(), + accessTokenMaxTTL: z.coerce.number(), + tokenType: z.literal("Bearer") + }) + } + }, + handler: async (req) => { + const { identityAzureAuth, accessToken, identityAccessToken, identityMembershipOrg } = + await server.services.identityAzureAuth.login(req.body); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityMembershipOrg.orgId, + event: { + type: EventType.LOGIN_IDENTITY_AZURE_AUTH, + metadata: { + identityId: identityAzureAuth.identityId, + identityAccessTokenId: identityAccessToken.id, + identityAzureAuthId: identityAzureAuth.id + } + } + }); + + return { + accessToken, + tokenType: "Bearer" as const, + expiresIn: identityAzureAuth.accessTokenTTL, + accessTokenMaxTTL: identityAzureAuth.accessTokenMaxTTL + }; + } + }); + + server.route({ + method: "POST", + url: "/azure-auth/identities/:identityId", + config: { + rateLimit: writeLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Attach Azure Auth configuration onto identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string().trim() + }), + body: z.object({ + tenantId: z.string().trim(), + resource: z.string().trim(), + allowedServicePrincipalIds: z.string().trim(), + accessTokenTrustedIps: z + .object({ + ipAddress: z.string().trim() + }) + .array() + .min(1) + .default([{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }]), + accessTokenTTL: z + .number() + .int() + .min(1) + .refine((value) => value !== 0, { + message: "accessTokenTTL must have a non zero number" + }) + .default(2592000), + accessTokenMaxTTL: z + .number() + .int() + .refine((value) => value !== 0, { + message: "accessTokenMaxTTL must have a non zero number" + }) + .default(2592000), + accessTokenNumUsesLimit: z.number().int().min(0).default(0) + }), + response: { + 200: z.object({ + identityAzureAuth: IdentityAzureAuthsSchema + }) + } + }, + handler: async (req) => { + const identityAzureAuth = await server.services.identityAzureAuth.attachAzureAuth({ + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId, + ...req.body, + identityId: req.params.identityId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityAzureAuth.orgId, + event: { + type: EventType.ADD_IDENTITY_AZURE_AUTH, + metadata: { + identityId: identityAzureAuth.identityId, + tenantId: identityAzureAuth.tenantId, + resource: identityAzureAuth.resource, + accessTokenTTL: identityAzureAuth.accessTokenTTL, + accessTokenMaxTTL: identityAzureAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityAzureAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityAzureAuth.accessTokenNumUsesLimit + } + } + }); + + return { identityAzureAuth }; + } + }); + + server.route({ + method: "PATCH", + url: "/azure-auth/identities/:identityId", + config: { + rateLimit: writeLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Update Azure Auth configuration on identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string().trim() + }), + body: z.object({ + tenantId: z.string().trim().optional(), + resource: z.string().trim().optional(), + allowedServicePrincipalIds: z.string().trim().optional(), + accessTokenTrustedIps: z + .object({ + ipAddress: z.string().trim() + }) + .array() + .min(1) + .optional(), + accessTokenTTL: z.number().int().min(0).optional(), + accessTokenNumUsesLimit: z.number().int().min(0).optional(), + accessTokenMaxTTL: z + .number() + .int() + .refine((value) => value !== 0, { + message: "accessTokenMaxTTL must have a non zero number" + }) + .optional() + }), + response: { + 200: z.object({ + identityAzureAuth: IdentityAzureAuthsSchema + }) + } + }, + handler: async (req) => { + const identityAzureAuth = await server.services.identityAzureAuth.updateAzureAuth({ + actor: req.permission.type, + actorId: req.permission.id, + actorOrgId: req.permission.orgId, + actorAuthMethod: req.permission.authMethod, + ...req.body, + identityId: req.params.identityId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityAzureAuth.orgId, + event: { + type: EventType.UPDATE_IDENTITY_AZURE_AUTH, + metadata: { + identityId: identityAzureAuth.identityId, + tenantId: identityAzureAuth.tenantId, + resource: identityAzureAuth.resource, + accessTokenTTL: identityAzureAuth.accessTokenTTL, + accessTokenMaxTTL: identityAzureAuth.accessTokenMaxTTL, + accessTokenTrustedIps: identityAzureAuth.accessTokenTrustedIps as TIdentityTrustedIp[], + accessTokenNumUsesLimit: identityAzureAuth.accessTokenNumUsesLimit + } + } + }); + + return { identityAzureAuth }; + } + }); + + server.route({ + method: "GET", + url: "/azure-auth/identities/:identityId", + config: { + rateLimit: readLimit + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + schema: { + description: "Retrieve Azure Auth configuration on identity", + security: [ + { + bearerAuth: [] + } + ], + params: z.object({ + identityId: z.string() + }), + response: { + 200: z.object({ + identityAzureAuth: IdentityAzureAuthsSchema + }) + } + }, + handler: async (req) => { + const identityAzureAuth = await server.services.identityAzureAuth.getAzureAuth({ + identityId: req.params.identityId, + actor: req.permission.type, + actorId: req.permission.id, + actorOrgId: req.permission.orgId, + actorAuthMethod: req.permission.authMethod + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: identityAzureAuth.orgId, + event: { + type: EventType.GET_IDENTITY_AZURE_AUTH, + metadata: { + identityId: identityAzureAuth.identityId + } + } + }); + + return { identityAzureAuth }; + } + }); +}; diff --git a/backend/src/server/routes/v1/index.ts b/backend/src/server/routes/v1/index.ts index 1a02a4cbf..1302a9469 100644 --- a/backend/src/server/routes/v1/index.ts +++ b/backend/src/server/routes/v1/index.ts @@ -3,6 +3,7 @@ import { registerAuthRoutes } from "./auth-router"; import { registerProjectBotRouter } from "./bot-router"; import { registerIdentityAccessTokenRouter } from "./identity-access-token-router"; import { registerIdentityAwsAuthRouter } from "./identity-aws-iam-auth-router"; +import { registerIdentityAzureAuthRouter } from "./identity-azure-auth-router"; import { registerIdentityGcpAuthRouter } from "./identity-gcp-auth-router"; import { registerIdentityRouter } from "./identity-router"; import { registerIdentityUaRouter } from "./identity-ua"; @@ -32,6 +33,7 @@ export const registerV1Routes = async (server: FastifyZodProvider) => { await authRouter.register(registerIdentityGcpAuthRouter); await authRouter.register(registerIdentityAccessTokenRouter); await authRouter.register(registerIdentityAwsAuthRouter); + await authRouter.register(registerIdentityAzureAuthRouter); }, { prefix: "/auth" } ); diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-dal.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-dal.ts new file mode 100644 index 000000000..7038e2b9c --- /dev/null +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-dal.ts @@ -0,0 +1,10 @@ +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { ormify } from "@app/lib/knex"; + +export type TIdentityAzureAuthDALFactory = ReturnType; + +export const identityAzureAuthDALFactory = (db: TDbClient) => { + const azureAuthOrm = ormify(db, TableName.IdentityAzureAuth); + return azureAuthOrm; +}; diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-fns.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-fns.ts new file mode 100644 index 000000000..ad9e6f12d --- /dev/null +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-fns.ts @@ -0,0 +1,34 @@ +import axios from "axios"; +import jwt from "jsonwebtoken"; + +import { UnauthorizedError } from "@app/lib/errors"; + +import { TAzureAuthJwtPayload, TAzureJwksUriResponse, TDecodedAzureAuthJwt } from "./identity-azure-auth-types"; + +export const validateAzureIdentity = async ({ + tenantId, + resource, + jwt: azureJwt +}: { + tenantId: string; + resource: string; + jwt: string; +}) => { + const jwksUri = `https://login.microsoftonline.com/${tenantId}/discovery/keys`; + + const decodedJwt = jwt.decode(azureJwt, { complete: true }) as TDecodedAzureAuthJwt; + const { kid } = decodedJwt.header; + + const { data }: { data: TAzureJwksUriResponse } = await axios.get(jwksUri); + const signingKeys = data.keys; + + const signingKey = signingKeys.find((key) => key.kid === kid); + if (!signingKey) throw new UnauthorizedError(); + + const publicKey = `-----BEGIN CERTIFICATE-----\n${signingKey.x5c[0]}\n-----END CERTIFICATE-----`; + + return jwt.verify(azureJwt, publicKey, { + audience: resource, + issuer: `https://sts.windows.net/${tenantId}/` + }) as TAzureAuthJwtPayload; +}; diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts new file mode 100644 index 000000000..02e3996cf --- /dev/null +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts @@ -0,0 +1,286 @@ +import { ForbiddenError } from "@casl/ability"; +import jwt from "jsonwebtoken"; + +import { IdentityAuthMethod } from "@app/db/schemas"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; +import { OrgPermissionActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service"; +import { getConfig } from "@app/lib/config/env"; +import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; +import { extractIPDetails, isValidIpOrCidr } from "@app/lib/ip"; + +import { AuthTokenType } from "../auth/auth-type"; +import { TIdentityDALFactory } from "../identity/identity-dal"; +import { TIdentityOrgDALFactory } from "../identity/identity-org-dal"; +import { TIdentityAccessTokenDALFactory } from "../identity-access-token/identity-access-token-dal"; +import { TIdentityAccessTokenJwtPayload } from "../identity-access-token/identity-access-token-types"; +import { TIdentityAzureAuthDALFactory } from "./identity-azure-auth-dal"; +import { validateAzureIdentity } from "./identity-azure-auth-fns"; +import { + TAttachAzureAuthDTO, + TGetAzureAuthDTO, + TLoginAzureAuthDTO, + TUpdateAzureAuthDTO +} from "./identity-azure-auth-types"; + +type TIdentityAzureAuthServiceFactoryDep = { + identityAzureAuthDAL: TIdentityAzureAuthDALFactory; // TODO: Pick + identityOrgMembershipDAL: Pick; + identityAccessTokenDAL: Pick; + identityDAL: Pick; + permissionService: Pick; + licenseService: Pick; +}; + +export type TIdentityAzureAuthServiceFactory = ReturnType; + +export const identityAzureAuthServiceFactory = ({ + identityAzureAuthDAL, + identityOrgMembershipDAL, + identityAccessTokenDAL, + identityDAL, + permissionService, + licenseService +}: TIdentityAzureAuthServiceFactoryDep) => { + const login = async ({ identityId, jwt: azureJwt }: TLoginAzureAuthDTO) => { + const identityAzureAuth = await identityAzureAuthDAL.findOne({ identityId }); + if (!identityAzureAuth) throw new UnauthorizedError(); + + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId: identityAzureAuth.identityId }); + if (!identityMembershipOrg) throw new UnauthorizedError(); + + const azureIdentity = await validateAzureIdentity({ + tenantId: identityAzureAuth.tenantId, + resource: identityAzureAuth.resource, + jwt: azureJwt + }); + + if (azureIdentity.tid !== identityAzureAuth.tenantId) throw new UnauthorizedError(); + + if (identityAzureAuth.allowedServicePrincipalIds) { + // validate if the service principal id is in the list of allowed service principal ids + + const isServicePrincipalAllowed = identityAzureAuth.allowedServicePrincipalIds + .split(",") + .map((servicePrincipalId) => servicePrincipalId.trim()) + .some((servicePrincipalId) => servicePrincipalId === azureIdentity.appid); + + if (!isServicePrincipalAllowed) throw new UnauthorizedError(); + } + + const identityAccessToken = await identityAzureAuthDAL.transaction(async (tx) => { + const newToken = await identityAccessTokenDAL.create( + { + identityId: identityAzureAuth.identityId, + isAccessTokenRevoked: false, + accessTokenTTL: identityAzureAuth.accessTokenTTL, + accessTokenMaxTTL: identityAzureAuth.accessTokenMaxTTL, + accessTokenNumUses: 0, + accessTokenNumUsesLimit: identityAzureAuth.accessTokenNumUsesLimit + }, + tx + ); + return newToken; + }); + + const appCfg = getConfig(); + const accessToken = jwt.sign( + { + identityId: identityAzureAuth.identityId, + identityAccessTokenId: identityAccessToken.id, + authTokenType: AuthTokenType.IDENTITY_ACCESS_TOKEN + } as TIdentityAccessTokenJwtPayload, + appCfg.AUTH_SECRET, + { + expiresIn: + Number(identityAccessToken.accessTokenMaxTTL) === 0 + ? undefined + : Number(identityAccessToken.accessTokenMaxTTL) + } + ); + + return { accessToken, identityAzureAuth, identityAccessToken, identityMembershipOrg }; + }; + + const attachAzureAuth = async ({ + identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TAttachAzureAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity.authMethod) + throw new BadRequestError({ + message: "Failed to add Azure Auth to already configured identity" + }); + + if (accessTokenMaxTTL > 0 && accessTokenTTL > accessTokenMaxTTL) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Create, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const identityAzureAuth = await identityAzureAuthDAL.transaction(async (tx) => { + const doc = await identityAzureAuthDAL.create( + { + identityId: identityMembershipOrg.identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps) + }, + tx + ); + await identityDAL.updateById( + identityMembershipOrg.identityId, + { + authMethod: IdentityAuthMethod.AZURE_AUTH + }, + tx + ); + return doc; + }); + return { ...identityAzureAuth, orgId: identityMembershipOrg.orgId }; + }; + + const updateAzureAuth = async ({ + identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps, + actorId, + actorAuthMethod, + actor, + actorOrgId + }: TUpdateAzureAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.AZURE_AUTH) + throw new BadRequestError({ + message: "Failed to update Azure Auth" + }); + + const identityGcpAuth = await identityAzureAuthDAL.findOne({ identityId }); + + if ( + (accessTokenMaxTTL || identityGcpAuth.accessTokenMaxTTL) > 0 && + (accessTokenTTL || identityGcpAuth.accessTokenMaxTTL) > (accessTokenMaxTTL || identityGcpAuth.accessTokenMaxTTL) + ) { + throw new BadRequestError({ message: "Access token TTL cannot be greater than max TTL" }); + } + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Edit, OrgPermissionSubjects.Identity); + + const plan = await licenseService.getPlan(identityMembershipOrg.orgId); + const reformattedAccessTokenTrustedIps = accessTokenTrustedIps?.map((accessTokenTrustedIp) => { + if ( + !plan.ipAllowlisting && + accessTokenTrustedIp.ipAddress !== "0.0.0.0/0" && + accessTokenTrustedIp.ipAddress !== "::/0" + ) + throw new BadRequestError({ + message: + "Failed to add IP access range to access token due to plan restriction. Upgrade plan to add IP access range." + }); + if (!isValidIpOrCidr(accessTokenTrustedIp.ipAddress)) + throw new BadRequestError({ + message: "The IP is not a valid IPv4, IPv6, or CIDR block" + }); + return extractIPDetails(accessTokenTrustedIp.ipAddress); + }); + + const updatedAzureAuth = await identityAzureAuthDAL.updateById(identityGcpAuth.id, { + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenMaxTTL, + accessTokenTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps: reformattedAccessTokenTrustedIps + ? JSON.stringify(reformattedAccessTokenTrustedIps) + : undefined + }); + + return { + ...updatedAzureAuth, + orgId: identityMembershipOrg.orgId + }; + }; + + const getAzureAuth = async ({ identityId, actorId, actor, actorAuthMethod, actorOrgId }: TGetAzureAuthDTO) => { + const identityMembershipOrg = await identityOrgMembershipDAL.findOne({ identityId }); + if (!identityMembershipOrg) throw new BadRequestError({ message: "Failed to find identity" }); + if (identityMembershipOrg.identity?.authMethod !== IdentityAuthMethod.AZURE_AUTH) + throw new BadRequestError({ + message: "The identity does not have Azure Auth attached" + }); + + const identityAzureAuth = await identityAzureAuthDAL.findOne({ identityId }); + + const { permission } = await permissionService.getOrgPermission( + actor, + actorId, + identityMembershipOrg.orgId, + actorAuthMethod, + actorOrgId + ); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Read, OrgPermissionSubjects.Identity); + + return { ...identityAzureAuth, orgId: identityMembershipOrg.orgId }; + }; + + return { + login, + attachAzureAuth, + updateAzureAuth, + getAzureAuth + }; +}; diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts new file mode 100644 index 000000000..b8c4b6855 --- /dev/null +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts @@ -0,0 +1,120 @@ +import { TProjectPermission } from "@app/lib/types"; + +export type TLoginAzureAuthDTO = { + identityId: string; + jwt: string; +}; + +export type TAttachAzureAuthDTO = { + identityId: string; + tenantId: string; + resource: string; + allowedServicePrincipalIds: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: { ipAddress: string }[]; +} & Omit; + +export type TUpdateAzureAuthDTO = { + identityId: string; + tenantId?: string; + resource?: string; + allowedServicePrincipalIds?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: { ipAddress: string }[]; +} & Omit; + +export type TGetAzureAuthDTO = { + identityId: string; +} & Omit; + +export type TAzureJwksUriResponse = { + keys: { + kty: string; + use: string; + kid: string; + x5t: string; + n: string; + e: string; + x5c: string[]; + }[]; +}; + +type TUserPayload = { + aud: string; + iss: string; + iat: number; + nbf: number; + exp: number; + acr: string; + aio: string; + amr: string[]; + appid: string; + appidacr: string; + family_name: string; + given_name: string; + groups: string[]; + idtyp: string; + ipaddr: string; + name: string; + oid: string; + puid: string; + rh: string; + scp: string; + sub: string; + tid: string; + unique_name: string; + upn: string; + uti: string; + ver: string; + wids: string[]; + xms_cae: string; + xms_cc: string[]; + xms_filter_index: string[]; + xms_rd: string; + xms_ssm: string; + xms_tcdt: number; +}; + +type TAppRegistrationPayload = { + aud: string; + iss: string; + iat: number; + nbf: number; + exp: number; + aio: string; + appid: string; + appidacr: string; + idp: string; + idtyp: string; + oid: string; + rh: string; + sub: string; + tid: string; + uti: string; + ver: string; + xms_cae: string; + xms_cc: string[]; + xms_rd: string; + xms_ssm: string; + xms_tcdt: number; +}; + +export type TAzureAuthJwtPayload = TUserPayload | TAppRegistrationPayload; + +export type TDecodedAzureAuthJwt = { + header: { + type: string; + alg: string; + x5t: string; + kid: string; + }; + payload: TAzureAuthJwtPayload; + signature: string; + metadata: { + [key: string]: string; + }; +}; diff --git a/frontend/src/hooks/api/identities/constants.tsx b/frontend/src/hooks/api/identities/constants.tsx index d2669a308..57dc5beb6 100644 --- a/frontend/src/hooks/api/identities/constants.tsx +++ b/frontend/src/hooks/api/identities/constants.tsx @@ -3,5 +3,6 @@ import { IdentityAuthMethod } from "./enums"; export const identityAuthToNameMap: { [I in IdentityAuthMethod]: string } = { [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", - [IdentityAuthMethod.AWS_AUTH]: "AWS Auth" + [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", + [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth" }; diff --git a/frontend/src/hooks/api/identities/enums.tsx b/frontend/src/hooks/api/identities/enums.tsx index a67776c87..bd51053f1 100644 --- a/frontend/src/hooks/api/identities/enums.tsx +++ b/frontend/src/hooks/api/identities/enums.tsx @@ -1,5 +1,6 @@ export enum IdentityAuthMethod { UNIVERSAL_AUTH = "universal-auth", GCP_AUTH = "gcp-auth", - AWS_AUTH = "aws-auth" + AWS_AUTH = "aws-auth", + AZURE_AUTH = "azure-auth" } diff --git a/frontend/src/hooks/api/identities/index.tsx b/frontend/src/hooks/api/identities/index.tsx index d59e096c0..ce1f099be 100644 --- a/frontend/src/hooks/api/identities/index.tsx +++ b/frontend/src/hooks/api/identities/index.tsx @@ -2,6 +2,7 @@ export { identityAuthToNameMap } from "./constants"; export { IdentityAuthMethod } from "./enums"; export { useAddIdentityAwsAuth, + useAddIdentityAzureAuth, useAddIdentityGcpAuth, useAddIdentityUniversalAuth, useCreateIdentity, @@ -10,10 +11,12 @@ export { useRevokeIdentityUniversalAuthClientSecret, useUpdateIdentity, useUpdateIdentityAwsAuth, + useUpdateIdentityAzureAuth, useUpdateIdentityGcpAuth, useUpdateIdentityUniversalAuth} from "./mutations"; export { useGetIdentityAwsAuth, + useGetIdentityAzureAuth, useGetIdentityGcpAuth, useGetIdentityUniversalAuth, useGetIdentityUniversalAuthClientSecrets diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index 5c2e20ff0..615d53336 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -6,6 +6,7 @@ import { organizationKeys } from "../organization/queries"; import { identitiesKeys } from "./queries"; import { AddIdentityAwsAuthDTO, + AddIdentityAzureAuthDTO, AddIdentityGcpAuthDTO, AddIdentityUniversalAuthDTO, ClientSecretData, @@ -16,13 +17,14 @@ import { DeleteIdentityUniversalAuthClientSecretDTO, Identity, IdentityAwsAuth, + IdentityAzureAuth, IdentityGcpAuth, IdentityUniversalAuth, UpdateIdentityAwsAuthDTO, + UpdateIdentityAzureAuthDTO, UpdateIdentityDTO, UpdateIdentityGcpAuthDTO, - UpdateIdentityUniversalAuthDTO -} from "./types"; + UpdateIdentityUniversalAuthDTO} from "./types"; export const useCreateIdentity = () => { const queryClient = useQueryClient(); @@ -323,3 +325,75 @@ export const useUpdateIdentityAwsAuth = () => { } }); }; + +export const useAddIdentityAzureAuth = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }) => { + const { + data: { identityAzureAuth } + } = await apiRequest.post<{ identityAzureAuth: IdentityAzureAuth }>( + `/api/v1/auth/azure-auth/identities/${identityId}`, + { + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + } + ); + + return identityAzureAuth; + }, + onSuccess: (_, { organizationId }) => { + queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); + } + }); +}; + +export const useUpdateIdentityAzureAuth = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ + identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }) => { + const { + data: { identityAzureAuth } + } = await apiRequest.patch<{ identityAzureAuth: IdentityAzureAuth }>( + `/api/v1/auth/azure-auth/identities/${identityId}`, + { + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + } + ); + + return identityAzureAuth; + }, + onSuccess: (_, { organizationId }) => { + queryClient.invalidateQueries(organizationKeys.getOrgIdentityMemberships(organizationId)); + } + }); +}; diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index 2996f275f..c5236a86e 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -2,7 +2,12 @@ import { useQuery } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; -import { ClientSecretData, IdentityAwsAuth, IdentityGcpAuth, IdentityUniversalAuth } from "./types"; +import { + ClientSecretData, + IdentityAwsAuth, + IdentityAzureAuth, + IdentityGcpAuth, + IdentityUniversalAuth} from "./types"; export const identitiesKeys = { getIdentityUniversalAuth: (identityId: string) => @@ -10,7 +15,8 @@ export const identitiesKeys = { getIdentityUniversalAuthClientSecrets: (identityId: string) => [{ identityId }, "identity-universal-auth-client-secrets"] as const, getIdentityGcpAuth: (identityId: string) => [{ identityId }, "identity-gcp-auth"] as const, - getIdentityAwsAuth: (identityId: string) => [{ identityId }, "identity-aws-auth"] as const + getIdentityAwsAuth: (identityId: string) => [{ identityId }, "identity-aws-auth"] as const, + getIdentityAzureAuth: (identityId: string) => [{ identityId }, "identity-azure-auth"] as const }; export const useGetIdentityUniversalAuth = (identityId: string) => { @@ -72,3 +78,18 @@ export const useGetIdentityAwsAuth = (identityId: string) => { } }); }; + +export const useGetIdentityAzureAuth = (identityId: string) => { + return useQuery({ + enabled: Boolean(identityId), + queryKey: identitiesKeys.getIdentityAzureAuth(identityId), + queryFn: async () => { + const { + data: { identityAzureAuth } + } = await apiRequest.get<{ identityAzureAuth: IdentityAzureAuth }>( + `/api/v1/auth/azure-auth/identities/${identityId}` + ); + return identityAzureAuth; + } + }); +}; diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index c1d8e09fa..4f756fa60 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -195,6 +195,45 @@ export type UpdateIdentityAwsAuthDTO = { }[]; }; +export type IdentityAzureAuth = { + identityId: string; + tenantId: string; + resource: string; + allowedServicePrincipalIds: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: IdentityTrustedIp[]; +}; + +export type AddIdentityAzureAuthDTO = { + organizationId: string; + identityId: string; + tenantId: string; + resource: string; + allowedServicePrincipalIds: string; + accessTokenTTL: number; + accessTokenMaxTTL: number; + accessTokenNumUsesLimit: number; + accessTokenTrustedIps: { + ipAddress: string; + }[]; +}; + +export type UpdateIdentityAzureAuthDTO = { + organizationId: string; + identityId: string; + tenantId?: string; + resource?: string; + allowedServicePrincipalIds?: string; + accessTokenTTL?: number; + accessTokenMaxTTL?: number; + accessTokenNumUsesLimit?: number; + accessTokenTrustedIps?: { + ipAddress: string; + }[]; +}; + export type CreateIdentityUniversalAuthClientSecretDTO = { identityId: string; description?: string; diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx index 74c4c7f6d..b4cbca0a6 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAuthMethodModal.tsx @@ -15,6 +15,7 @@ import { IdentityAuthMethod } from "@app/hooks/api/identities"; import { UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityAwsAuthForm } from "./IdentityAwsAuthForm"; +import { IdentityAzureAuthForm } from "./IdentityAzureAuthForm"; import { IdentityGcpAuthForm } from "./IdentityGcpAuthForm"; import { IdentityUniversalAuthForm } from "./IdentityUniversalAuthForm"; @@ -30,7 +31,8 @@ type Props = { const identityAuthMethods = [ { label: "Universal Auth", value: IdentityAuthMethod.UNIVERSAL_AUTH }, { label: "GCP Auth", value: IdentityAuthMethod.GCP_AUTH }, - { label: "AWS Auth", value: IdentityAuthMethod.AWS_AUTH } + { label: "AWS Auth", value: IdentityAuthMethod.AWS_AUTH }, + { label: "Azure Auth", value: IdentityAuthMethod.AZURE_AUTH } ]; const schema = yup @@ -86,6 +88,15 @@ export const IdentityAuthMethodModal = ({ popUp, handlePopUpOpen, handlePopUpTog /> ); } + case IdentityAuthMethod.AZURE_AUTH: { + return ( + + ); + } case IdentityAuthMethod.UNIVERSAL_AUTH: { return ( ; + +type Props = { + handlePopUpOpen: (popUpName: keyof UsePopUpState<["upgradePlan"]>) => void; + handlePopUpToggle: ( + popUpName: keyof UsePopUpState<["identityAuthMethod"]>, + state?: boolean + ) => void; + identityAuthMethodData: { + identityId: string; + name: string; + authMethod?: IdentityAuthMethod; + }; +}; + +export const IdentityAzureAuthForm = ({ + handlePopUpOpen, + handlePopUpToggle, + identityAuthMethodData +}: Props) => { + const { currentOrg } = useOrganization(); + const orgId = currentOrg?.id || ""; + const { subscription } = useSubscription(); + + const { mutateAsync: addMutateAsync } = useAddIdentityAzureAuth(); + const { mutateAsync: updateMutateAsync } = useUpdateIdentityAzureAuth(); + + const { data } = useGetIdentityAzureAuth(identityAuthMethodData?.identityId ?? ""); + + const { + control, + handleSubmit, + reset, + formState: { isSubmitting } + } = useForm({ + resolver: zodResolver(schema), + defaultValues: { + tenantId: "", + resource: "https://management.azure.com/", + allowedServicePrincipalIds: "", + accessTokenTTL: "2592000", + accessTokenMaxTTL: "2592000", + accessTokenNumUsesLimit: "0", + accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] + } + }); + + const { + fields: accessTokenTrustedIpsFields, + append: appendAccessTokenTrustedIp, + remove: removeAccessTokenTrustedIp + } = useFieldArray({ control, name: "accessTokenTrustedIps" }); + + useEffect(() => { + if (data) { + reset({ + tenantId: data.tenantId, + resource: data.resource, + allowedServicePrincipalIds: data.allowedServicePrincipalIds, + accessTokenTTL: String(data.accessTokenTTL), + accessTokenMaxTTL: String(data.accessTokenMaxTTL), + accessTokenNumUsesLimit: String(data.accessTokenNumUsesLimit), + accessTokenTrustedIps: data.accessTokenTrustedIps.map( + ({ ipAddress, prefix }: IdentityTrustedIp) => { + return { + ipAddress: `${ipAddress}${prefix !== undefined ? `/${prefix}` : ""}` + }; + } + ) + }); + } else { + reset({ + tenantId: "", + resource: "https://management.azure.com/", + allowedServicePrincipalIds: "", + accessTokenTTL: "2592000", + accessTokenMaxTTL: "2592000", + accessTokenNumUsesLimit: "0", + accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] + }); + } + }, [data]); + + const onFormSubmit = async ({ + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL, + accessTokenMaxTTL, + accessTokenNumUsesLimit, + accessTokenTrustedIps + }: FormData) => { + try { + if (!identityAuthMethodData) return; + + if (data) { + await updateMutateAsync({ + organizationId: orgId, + identityId: identityAuthMethodData.identityId, + tenantId, + resource, + allowedServicePrincipalIds, + accessTokenTTL: Number(accessTokenTTL), + accessTokenMaxTTL: Number(accessTokenMaxTTL), + accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), + accessTokenTrustedIps + }); + } else { + await addMutateAsync({ + organizationId: orgId, + identityId: identityAuthMethodData.identityId, + tenantId: tenantId || "", + resource: resource || "", + allowedServicePrincipalIds: allowedServicePrincipalIds || "", + accessTokenTTL: Number(accessTokenTTL), + accessTokenMaxTTL: Number(accessTokenMaxTTL), + accessTokenNumUsesLimit: Number(accessTokenNumUsesLimit), + accessTokenTrustedIps + }); + } + + handlePopUpToggle("identityAuthMethod", false); + + createNotification({ + text: `Successfully ${ + identityAuthMethodData?.authMethod ? "updated" : "configured" + } auth method`, + type: "success" + }); + + reset(); + } catch (err) { + createNotification({ + text: `Failed to ${identityAuthMethodData?.authMethod ? "update" : "configure"} identity`, + type: "error" + }); + } + }; + + return ( +
+ ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + ( + + + + )} + /> + {accessTokenTrustedIpsFields.map(({ id }, index) => ( +
+ { + return ( + + { + if (subscription?.ipAllowlisting) { + field.onChange(e); + return; + } + + handlePopUpOpen("upgradePlan"); + }} + placeholder="123.456.789.0" + /> + + ); + }} + /> + { + if (subscription?.ipAllowlisting) { + removeAccessTokenTrustedIp(index); + return; + } + + handlePopUpOpen("upgradePlan"); + }} + size="lg" + colorSchema="danger" + variant="plain" + ariaLabel="update" + className="p-3" + > + + +
+ ))} +
+ +
+
+ + +
+ + ); +}; From 9352e8bca059dd2c9186bebab9ba11471a1b43c5 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 15 May 2024 23:13:19 -0700 Subject: [PATCH 05/19] Add docs for Azure auth --- .../routes/v1/identity-azure-auth-router.ts | 5 +- .../routes/v1/identity-gcp-auth-router.ts | 6 +- .../identity-azure-auth-service.ts | 2 +- .../identity-azure-auth-types.ts | 6 +- .../identity-azure-auth-validators.ts | 14 ++ .../platform/identities/aws-auth.mdx | 4 + .../platform/identities/azure-auth.mdx | 176 ++++++++++++++++++ .../identities/machine-identities.mdx | 7 +- ...dentities-org-create-azure-auth-method.png | Bin 0 -> 525551 bytes docs/mint.json | 1 + .../IdentitySection/IdentityAzureAuthForm.tsx | 6 +- 11 files changed, 211 insertions(+), 16 deletions(-) create mode 100644 backend/src/services/identity-azure-auth/identity-azure-auth-validators.ts create mode 100644 docs/documentation/platform/identities/azure-auth.mdx create mode 100644 docs/images/platform/identities/identities-org-create-azure-auth-method.png diff --git a/backend/src/server/routes/v1/identity-azure-auth-router.ts b/backend/src/server/routes/v1/identity-azure-auth-router.ts index 9e9e49b56..d10cd131b 100644 --- a/backend/src/server/routes/v1/identity-azure-auth-router.ts +++ b/backend/src/server/routes/v1/identity-azure-auth-router.ts @@ -6,6 +6,7 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { TIdentityTrustedIp } from "@app/services/identity/identity-types"; +import { validateAzureAuthField } from "@app/services/identity-azure-auth/identity-azure-auth-validators"; export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider) => { server.route({ @@ -75,7 +76,7 @@ export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider body: z.object({ tenantId: z.string().trim(), resource: z.string().trim(), - allowedServicePrincipalIds: z.string().trim(), + allowedServicePrincipalIds: validateAzureAuthField, accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() @@ -157,7 +158,7 @@ export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider body: z.object({ tenantId: z.string().trim().optional(), resource: z.string().trim().optional(), - allowedServicePrincipalIds: z.string().trim().optional(), + allowedServicePrincipalIds: validateAzureAuthField.optional(), accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() diff --git a/backend/src/server/routes/v1/identity-gcp-auth-router.ts b/backend/src/server/routes/v1/identity-gcp-auth-router.ts index 58654f220..34940eb13 100644 --- a/backend/src/server/routes/v1/identity-gcp-auth-router.ts +++ b/backend/src/server/routes/v1/identity-gcp-auth-router.ts @@ -160,9 +160,9 @@ export const registerIdentityGcpAuthRouter = async (server: FastifyZodProvider) }), body: z.object({ type: z.enum(["iam", "gce"]).optional(), - allowedServiceAccounts: validateGcpAuthField, - allowedProjects: validateGcpAuthField, - allowedZones: validateGcpAuthField, + allowedServiceAccounts: validateGcpAuthField.optional(), + allowedProjects: validateGcpAuthField.optional(), + allowedZones: validateGcpAuthField.optional(), accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts index 02e3996cf..044ca28bc 100644 --- a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts @@ -63,7 +63,7 @@ export const identityAzureAuthServiceFactory = ({ const isServicePrincipalAllowed = identityAzureAuth.allowedServicePrincipalIds .split(",") .map((servicePrincipalId) => servicePrincipalId.trim()) - .some((servicePrincipalId) => servicePrincipalId === azureIdentity.appid); + .some((servicePrincipalId) => servicePrincipalId === azureIdentity.oid); if (!isServicePrincipalAllowed) throw new UnauthorizedError(); } diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts index b8c4b6855..65459003c 100644 --- a/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-types.ts @@ -79,7 +79,7 @@ type TUserPayload = { xms_tcdt: number; }; -type TAppRegistrationPayload = { +type TAppPayload = { aud: string; iss: string; iat: number; @@ -90,7 +90,7 @@ type TAppRegistrationPayload = { appidacr: string; idp: string; idtyp: string; - oid: string; + oid: string; // service principal id rh: string; sub: string; tid: string; @@ -103,7 +103,7 @@ type TAppRegistrationPayload = { xms_tcdt: number; }; -export type TAzureAuthJwtPayload = TUserPayload | TAppRegistrationPayload; +export type TAzureAuthJwtPayload = TUserPayload | TAppPayload; export type TDecodedAzureAuthJwt = { header: { diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-validators.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-validators.ts new file mode 100644 index 000000000..3f7f7d8af --- /dev/null +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-validators.ts @@ -0,0 +1,14 @@ +import { z } from "zod"; + +export const validateAzureAuthField = z + .string() + .trim() + .default("") + .transform((data) => { + if (data === "") return ""; + // Trim each ID and join with ', ' to ensure formatting + return data + .split(",") + .map((id) => id.trim()) + .join(", "); + }); diff --git a/docs/documentation/platform/identities/aws-auth.mdx b/docs/documentation/platform/identities/aws-auth.mdx index de43fd83c..567917f27 100644 --- a/docs/documentation/platform/identities/aws-auth.mdx +++ b/docs/documentation/platform/identities/aws-auth.mdx @@ -277,6 +277,10 @@ access the Infisical API using the AWS Auth authentication method. --data-urlencode 'iamRequestHeaders=...' ``` + + Note that you should replace `` with the ID of the identity you created in step 1. + + #### Sample response ```bash Response diff --git a/docs/documentation/platform/identities/azure-auth.mdx b/docs/documentation/platform/identities/azure-auth.mdx new file mode 100644 index 000000000..3ac957752 --- /dev/null +++ b/docs/documentation/platform/identities/azure-auth.mdx @@ -0,0 +1,176 @@ +--- +title: Azure Auth +description: "Learn how to authenticate with Infisical for services on Azure" +--- + +**Azure Auth** is an Azure-native authentication method for Azure resources like Azure VMs, Azure App Services, Azure Functions, Azure Kubernetes Service, etc. to access Infisical. + +## Diagram + +The following sequence digram illustrates the Azure Auth workflow for authenticating Azure [service principals](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser) with Infisical. + +```mermaid +sequenceDiagram + participant Client as Client + participant Infis as Infisical + participant Azure as Azure AD OpenID + + Note over Client,Azure: Step 1: Instance Identity Token Retrieval + Client->>Azure: Request managed identity access token + Azure-->>Client: Return managed identity access token + + Note over Client,Infis: Step 2: Identity Token Login Operation + Client->>Infis: Send managed identity access token to /api/v1/auth/azure-auth/login + Infis->>Azure: Request public key + Azure-->>Infis: Return public key + + Note over Infis: Step 3: Identity Token Verification + Note over Infis: Step 4: Identity Property Validation + Infis->>Client: Return short-lived access token + + Note over Client,Infis: Step 4: Access Infisical API with Token + Client->>Infis: Make authenticated requests using the short-lived access token +``` + +## Concept + +At a high-level, Infisical authenticates an Azure service by verifying its identity and checking that it meets specific requirements (e.g. it is bound to an allowed service principal) at the `/api/v1/auth/azure-auth/login` endpoint. If successful, +then Infisical returns a short-lived access token that can be used to make authenticated requests to the Infisical API. + +To be more specific: + +1. The client running on an Azure service obtains an [access token](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http) that is a JWT token representing the managed identity for the Azure resource such as a Virtual Machine; the managed identity is associated with a service principal in Azure AD. +2. The client sends the access token to Infisical. +3. Infisical verifies the token against the corresponding public key at the [public Azure AD OpenID configuration endpoint](https://learn.microsoft.com/en-us/answers/questions/793793/azure-ad-validate-access-token). +4. Infisical checks if the entity behind the access token is allowed to authenticate with Infisical based on set criteria such as **Allowed Service Principal IDs**. +5. If all is well, Infisical returns a short-lived access token that the client can use to make authenticated requests to the Infisical API. + + +We recommend using one of Infisical's clients like SDKs or the Infisical Agent +to authenticate with Infisical using Azure Auth as they handle the +authentication process including generating the client access token for you. + +Also, note that Infisical needs network-level access to send requests to the Google Cloud API +as part of the Azure Auth workflow. + + + +## Guide + +In the following steps, we explore how to create and use identities for your applications in Azure to +access the Infisical API using the Azure Auth authentication method. + + + + To create an identity, head to your Organization Settings > Access Control > Machine Identities and press **Create identity**. + + ![identities organization](/images/platform/identities/identities-org.png) + + When creating an identity, you specify an organization level [role](/documentation/platform/role-based-access-controls) for it to assume; you can configure roles in Organization Settings > Access Control > Organization Roles. + + ![identities organization create](/images/platform/identities/identities-org-create.png) + + Now input a few details for your new identity. Here's some guidance for each field: + + - Name (required): A friendly name for the identity. + - Role (required): A role from the **Organization Roles** tab for the identity to assume. The organization role assigned will determine what organization level resources this identity can have access to. + + Once you've created an identity, you'll be prompted to configure the authentication method for it. Here, select **Azure Auth**. + + ![identities create azure auth method](/images/platform/identities/identities-org-create-azure-auth-method.png) + + Here's some more guidance on each field: + + - Tenant ID: The [tenant ID](https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant) for the Azure AD organization. + - Resource / Audience: The resource URL for the application registered in Azure AD. The value is expected to match the `aud` claim of the access token JWT later used in the login operation against Infisical. See the [resource](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http) parameter for how the audience is set when requesting a JWT access token from the Azure Instance Metadata Service (IMDS) endpoint. In most cases, this value should be `https://management.azure.com/` which is the default. + - Allowed Service Principal IDs: A comma-separated list of Azure AD service principal IDs that are allowed to authenticate with Infisical. + - Access Token TTL (default is `2592000` equivalent to 30 days): The lifetime for an acccess token in seconds. This value will be referenced at renewal time. + - Access Token Max TTL (default is `2592000` equivalent to 30 days): The maximum lifetime for an acccess token in seconds. This value will be referenced at renewal time. + - Access Token Max Number of Uses (default is `0`): The maximum number of times that an access token can be used; a value of `0` implies infinite number of uses. + - Access Token Trusted IPs: The IPs or CIDR ranges that access tokens can be used from. By default, each token is given the `0.0.0.0/0`, allowing usage from any network address. + + + + To enable the identity to access project-level resources such as secrets within a specific project, you should add it to that project. + + To do this, head over to the project you want to add the identity to and go to Project Settings > Access Control > Machine Identities and press **Add identity**. + + Next, select the identity you want to add to the project and the project level role you want to allow it to assume. The project role assigned will determine what project level resources this identity can have access to. + + ![identities project](/images/platform/identities/identities-project.png) + + ![identities project create](/images/platform/identities/identities-project-create.png) + + + To access the Infisical API as the identity, you need to generate a managed identity [access token](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http) that is a JWT token representing the managed identity for the Azure resource such as a Virtual Machine. The client token must be sent to the `/api/v1/auth/azure-auth/login` endpoint in exchange for a separate access token to access the Infisical API. + + We provide a few code examples below of how you can authenticate with Infisical to access the [Infisical API](/api-reference/overview/introduction). + + + + Start by making a request from your Azure client such as Virtual Machine to obtain a managed identity access token. + + For more examples of how to obtain the managed identity access token, refer to the [official documentation](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http). + + #### Sample request + ```bash curl + curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true -s + ``` + + #### Sample response + ```bash + { + "access_token": "eyJ0eXAi...", + "refresh_token": "", + "expires_in": "3599", + "expires_on": "1506484173", + "not_before": "1506480273", + "resource": "https://management.azure.com/", + "token_type": "Bearer" + } + ``` + + Next use send the obtained managed identity access token (i.e. the token from the `access_token` field above) to authenticate with Infisical and obtain a separate access token. + + #### Sample request + + ```bash Request + curl --location --request POST 'https://app.infisical.com/api/v1/auth/gcp-auth/login' \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode 'identityId=...' \ + --data-urlencode 'jwt=...' + ``` + + + Note that you should replace `` with the ID of the identity you created in step 1. + + + #### Sample response + + ```bash Response + { + "accessToken": "...", + "expiresIn": 7200, + "accessTokenMaxTTL": 43244 + "tokenType": "Bearer" + } + ``` + + Next, you can use this access token to access the [Infisical API](/api-reference/overview/introduction) + + + + + We recommend using one of Infisical's clients like SDKs or the Infisical Agent to authenticate with Infisical using Azure Auth as they handle the authentication process including retrieving the client access token. + + + Each identity access token has a time-to-live (TLL) which you can infer from the response of the login operation; + the default TTL is `7200` seconds which can be adjusted. + If an identity access token expires, it can no longer authenticate with the Infisical API. In this case, + a new access token should be obtained by performing another login operation. + + + + diff --git a/docs/documentation/platform/identities/machine-identities.mdx b/docs/documentation/platform/identities/machine-identities.mdx index 28bde95fe..41f464c4c 100644 --- a/docs/documentation/platform/identities/machine-identities.mdx +++ b/docs/documentation/platform/identities/machine-identities.mdx @@ -7,7 +7,7 @@ description: "Learn how to use Machine Identities to programmatically interact w An Infisical machine identity is an entity that represents a workload or application that require access to various resources in Infisical. This is conceptually similar to an IAM user in AWS or service account in Google Cloud Platform (GCP). -Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [AWS Auth](/documentation/platform/identities/aws-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. +Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [AWS Auth](/documentation/platform/identities/aws-auth), [Azure Auth](/documentation/platform/identities/azure-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. ![organization identities](/images/platform/organization/organization-machine-identities.png) @@ -38,11 +38,10 @@ Machine Identity support for the rest of the clients is planned to be released i To interact with various resources in Infisical, Machine Identities are able to authenticate using: - [Universal Auth](/documentation/platform/identities/universal-auth): A platform-agnostic authentication method that can be configured on an identity suitable to authenticate from any platform/environment. -- [AWS Auth](/documentation/platform/identities/aws-auth): An AWS-native authentication method for IAM principals like EC2 instances or Lambda functions to authenticate with Infisical. +- [AWS Auth](/documentation/platform/identities/aws-auth): An AWS-native authentication method for AWS services (e.g. EC2, Lambda functions, etc.) to authenticate with Infisical. +- [Azure Auth](/documentation/platform/identities/azure-auth): An Azure-native authentication method for Azure resources (e.g. Azure VMs, Azure App Services, Azure Functions, Azure Kubernetes Service, etc.) to authenticate with Infisical. - [GCP Auth](/documentation/platform/identities/gcp-auth): A GCP-native authentication method for GCP resources (e.g. Compute Engine, App Engine, Cloud Run, Google Kubernetes Engine, IAM service accounts, etc.) to authenticate with Infisical. -IAM service accounts and GCE instances to authenticate with Infisical. - ## FAQ diff --git a/docs/images/platform/identities/identities-org-create-azure-auth-method.png b/docs/images/platform/identities/identities-org-create-azure-auth-method.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0fd16657a24938fc60b88e123f83e4e91e43b6 GIT binary patch literal 525551 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%0AhCY;0DVmW0>AL$A$S407Ytlb{8!(4Q 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

`$0DT$#1XYE|HVECLbm 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�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%0Df5}mW-gV8s8(iDEoy?R8Wcj$B!5L~v*!qIU0 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∈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 z z4bbc6i%-**J(ZwLG^_I%lw_U7c)<$`qi`wVt<~5eJkyjY#oh4d1COM|*e8VXzI1or z<4BthC&dh^vW^S7Fa_;VI&l_-4`@3PR%z3vRiAH`!S+4@_(Vw^!=Zl9F%=TP;&2|) z5IR5?vt*u7fc5HS0`FlkCms&H{4gm2(I(?NM|Y^zHvJK2(FV`nLbTk(EDri*HYv0; zwDeL>WY%^XBNMv^#k!7O6GGk&`w0+f4BGC%yI5j+A%o|@2tHB`eXWoRCWX>U zX$-{i>cQd!#4XVKbD`S7C}j?-TU3Lx;+$TR`{pSVa^sKKkTYHzH>G56(_uCm(Y(^! zM|JQ;@-#I_*aiNKxXjYWouIuJZ&rwB%AX_`BMe#ztRg z%v9ny+=LNSw9M^OC}Zy5=uz=0fX~QHq54PuLe&2RJ;9&y6;xxlHv1pn+xtpgLEi#P zq1S1b^R7WHi6KtOwC5=mv~DH`q3ozlpV5DNu`@I@G)JE_F@j35sV!#ZxBBu$sU?9O zQXw6m$bBBNK{)RN#}dAh%n}%1Y1?-={!?FwifI@<`jVwBwgp|kCPIrS3iIdD)j>7H zWp7A*1UEq2?>B%E;EeWegC2x3B;zv9;m42Gu4~==y%T3~JdMQ}19it}@0Xa*a09vc z)n$(g=dF+NW`e2AsV|43IaYmWD9IS5*rj!IEa3<2aX0z+1Tkktex(*J;x{le7?jz= zJ*l9)>V48u_7+3hpNe+mow#E-e*|6hP*GsbP=^juP#tmZ zfL%!6eYv~weE*B{mpdyg+KE_OBT{y2e0h{q?Ruagl-ruYPP+FEE2p=SC>enLp1K4F@73P{F06GEgifb?5b9?d9iRQ8#CfuGSuO@u?s}E|?dyMrRhwy)2qtas;sf zV;`NJxG&^RM4zSN*NBmpJ~EzrXGerL^+w;RD`$kf0_3l!;J@T=lY7Mlc|wDz)$XUK zqwBpH_JG+OkvJDYOKXYTX~Z<#m);5Qm3z0k?s{+lQEoF-C|d(FAe&flR?b*&nMJvs zRQO)gNFh{B2|XFv>DjdL&oxsXem49Js_Um6G?bu?1^LJxTcLdnu{J~7KzC)iTAbjG zC=D_Z5s`g$w+^5uy>Ww1p&0JRH7^y^%!BKB$j`G5ax^^ROh(dSh`hvj1B!FH=7%YK zFiP9kb|JPcewbswN@J}?%xOBNB(z4+%q`2mm7 zZZ~i(=I^o`fyUh_-xZ&DZGBsiKgF{-F4TY-A0L17IiIoJF{n}6q zC?QT)a>cQmvxtxf`_J!#F%to5%=55A>O%9#K8iuq;_wHuTz~7-V2+>OT5U&3Ju2>{D_X4ztP8 zOcku(C-{3Y9vzV_Z&hL(#HQbSx9C=j4g8DCfJ#ChV2(vs|320JIcKqmtf;YhH|eJ{ z1Gd=>Ka-81fXZb4x)d+CI`1s0vJ{N>gKjtqZX2#(tVMlfX*5B#^1)hkp%W> zu*Q9MpmWm9O!)A1{rCna;#zQY;$IJ+jR+?#iB+P$y_I{j6LY|CT4(q9vtp@#!8f7l zmX?>9;%SUWi8zq_MigQaj``B)JLjllMo-0zSzyJ$Pni~Xa&LsmqS4+vA_OS>-i=cJ|fF`x*rPgi%+_9ws`CRAKHJ+q0BgCU}cL|NI{N@+2#xAY$boPK-ZatW1qu^!%Lfj`JGSa|Q;k=cAtLjYzo7^hRA2ko=g8MeKeu*~*>{1TG=!_am zA4_8eCeugUjgE`-T|3ZABiC_93AS+)MCO2oVQ$6@^vl(wAlO5GN={ovnD^#QAy(hR z%xRQ<3gIp9sE45TxfPhYJ}@-IS!x+%6Lm;})Go0)YjWg=-Sa%?)oMcK^!+Jm!Y@9TM$dba6<2XzI)b#HtR?S#*tJ5OSN#n!;Pxi3gR zR9PExFwZ4mI)Mx(g_&dazkl`BCJXqQ)XT5vr9N3O?=(#?=b|@yr&dykQ#z%~2*|o0 z9r~w^E?HkTHRha1sB4WXwx#l=;3w0qV=2*j#AfC6#8ChaT@h1v1%aL^u~-~aIX{{} zKm+o11v!ah=cIaKU7Z`5G@E{abM}t9nYy{0slUbD<0}xClgUU~<>7B@d0X1Vs1`@U zGthoRu^>cFFqp!G9L*p+za~Ru3d@9PE;-M3kZt&D>*?7$ zqxFHq6|R?$9zACmE$B47UwxQ86K8Ea*De^urhrd?J4x_X?CX*%()T2)oCQbkT4vRFS9uRt;r?d8# z0~WQU|0yJq+Bi&gY)3GXc8?{e;{b#}QbsQ%ZoSi#EfIMh+;HNw=?LkXKc$PQ-rEd^ zFL?lc4#pMTh?;CPA|Rl_i*b@BpZp?N$PI0yaP6-L2F4Vm-GTPOnSGHFi$_%b^CfzS zmso<>)p;of8Lva0towsOD32&Kz)~G-uQrulf>9^FwcBxitRFLDMJfK+1P6!hhh(AB z#ok0HjhS&CaA@FrV(G@$7ea@0SisFNVgyw*NC%aixKxP3#&04fyW z1n-{nH+%HxnO{+h1NqpeW&z4Amcc!9fCx`*i2U?sEBpq+g;ed6&O5YhZ9g_)SLs=h zHb1Ce-mP8j=5KW9Uf|GAzFzA z8iKp8{uUMf%W}wzLjGt#Hg>;KRZOeL501KxIn0z~z;HK9C(j8V!Z>8H33& za3ZZ}J6(CkU8(^`Cq8qrtmk>}nh#clsG19Zm~HKz0bhV9Hr~sQp->8lgK$I+ZF;om~h}FveoDYe)v8D8(K#(R4Ww43duGcIc|{)w|KO3FMmb zUAx2-IZnt{cPIYi^P8V6dpJ3s8X55zKGsThX72xX1X8e{x$BIvLaz%=J{)W0o=<*A zhJt&mW&x>B&fT=XXmm9;Q=F4HM30fQLkmoAlh}4%pJNW_as%bY3XG^O8MGxo1vQLl zeU8`GQ$Fo$ZAs3Q{=s;Cydws)PJYPb`+I!oaoco*95?SbJGlKO9{8bJ#>{3L8yf|# zIOM@X5WRFP zQhmLt76rT;MSjDu5;}CTtya|j*j8X9CmGJwrrSmY9NS2;1qdpdCW^Wy%JF3SGcbq5 z1=urW)X^ zaPHE?vWJc4z;lsEu1(cg585HiF$Fa;7eZ4zMUMhhru8Kvq=3rq1LhE(kjG~}%hjoc z%+_`vd}95M`=;Ua+l9q5%kdOtzK_oE`Q>98KYhAVo39{`qm4@{B-V6_$FF(Bq^W!o zCEB$6_VOzleQ=6Qv1=(9%_U$Nna#jg-Jy?z+SmOSRZk~6d2k)&h402j)6YoWniIys zeuI2Ix`n%|e5h0>ABu(VsXG?sB69mSrOW-X?_8%b-^*8tkuGP@PU)b_@H76^{5ey9 zmr6Dvp;<$f#@4(p5n`mtl|+-5!KkWds1_d?Z#(Y+2%1T%K#FUgn@Of)Q67Uzx3AnU~Epx|6i_K-9~f2zz7?S~#ob~2okOrvd}X|Cu)gsjLC z_U)0vR}`QDBP&EVar?`U6!quWp613EyxX=*(H5ZS3m6l&%M&m3%8N@VHR z_VeYkrsZ9f*wN|l;2Y__XL%+nsaj6bQdu|QraM>CTs6Vy<6UEr0^@0Cc7rauSg!4` zAK}U581QC%=GHJa=Ga$ZJ;dOWIptbwCQFE*EEwTeOPUrB9iwPH`2L#8n#DKjt13%m zLI4_E+diX%3n4vM2q5LM=@W`|6zAkPoj8XCeF3%#3Etb&bcls>kL4lRTJPgRiCaR{ zbX`@gu8cNcoS8>JX*+41zot%=u!PMtHRIvTQruS6G8O~~%US>DTJ-1Kc(%vDSe*!} zh0CSAh%=pr?S%4RuDzIxvR3$yveplb;`Ichc^%ybbG$Il8__fF-sr@U!|q)vx8eZm=o61`sd0cI<*9uo5R}y$_Ue_v$;w(aj{DhPv*obfL!S( zx-SH|AvWKZef%9D9w|sL60dlH#_eP+Cw+-UYHq%~`$9niU_+8b9Y7Ih2w<<`OCYl+*M?QVk>jYE6yCgs(H9Kbw57%r(5e*^qdT z!qiv;{D&u7BP5+wS*}p3HWI%|6Bwi{{k3;mhIJiQy!(d=Kgvk;UKNea%>jTwlZJB2 zuB(Vk3BPVq>gC@A8;?K#=d1M*ZXB%Cb}S8&?bubAxt|uZac98Ck4wc}iv2|9>g9*b z4r(a^vzv2b@g*C(0SmkPh@M2*=gskkv zZ9>@4j2WO4sK7+?vV5rC#|)7;nNh}gN6L_Qe(|8mS`ho?F%(`VCOXm!iqkDu&NMRi zS0T=qHS$j|aw(O2Jy-!{;TU$lPFZR1CIc^d8(e?O%J63Pm10SV!gO%-_-+8w_oSfNxGDR^6H8cfLAJh(j(D$3~u2nsgg~^nqtzYbk^wD_vX8tpfh?nVgt3e;~nT zv|Qo$9U^yBDAZ(UYfT`>x~I9}Wd1eWfI{FAdldnF1ZTv(gpHHOVqL00)4|w|3NWT{ zw^q+eWw2ymB_U-qM}w`J^rFW(bVkh7 zXD`2?Z|Ax1G`)+rV4S){VKL?{yad(Ad%6+el5hWCU=uC0f({Qi2gE`MT_=JoKHScsxe;qJA>9PqoaR z{ItJY#82HO&Y%6M9IUeKDEnCH{1#zOy4NZ59k5XVB~T_kjEjmutIYU-NnJ#d)Hg$a zuf63FfIgPrpv*d`c$R;^F}iMP-iPbag4%T$~0g1(W5a* zys+>Riq57qx%85G9Kz=S^h0DY%kC=HmW$Bney43(__&j&Q!gsEI(vx|iVtgjeX8Lp zKx)1E7QV>-$sd%&;P^4v=McdP}s~k zY9Z+y%2C#5$IrnM*E|WH9$Oi~e0!HOnZ-7rU`KaoI;0;PfbLVrC^uWjy9NgZNH|q*Lgmq9evR#o)Q8k{l z2Xp(}hu474WsdOmGv+;>!G1SgW~Y~VPJSp36n*z3|$l7vg&vYO}^ z=w3ff&UeKMnx_=69o*yP{gQ8qg}37IsmXQ0wdbm+oNc-k+wilu_0x5g`MsnzeGq+u3nX!r$zAUoZAH03KBMULU(Jc%Ip#!s-@0# zMIjWJ$oFKJxDOLaEw3gG&^MD!Ohk3NnikQybrQL4LV^IWy zUtCyjVLf4EMwZu-xaj{oWN{s3%V$sDc(WWp_6^PX~&cy@V4F<#VzNT7bAsbB%asH6gOU* zJ%u##`^zwKzHztmXgddFDs%fT;;Mk`1^+=Ce{mMD_VFw9f7`C!^g#5!ncF_*4;)fu z^|iXR&4bi|EFqb3XT^uPj>W~t7bH7m@Ga>Uu#YLvHT(r$+goWB(u&LFetb@$c-gDI z;+ii-{^52&VhMC;g(MvX*D8N?bbxoZspeSQiE2}x4>OG8(UjRw9 zh+?4qbnuoaI-Qn03r2aw6vnJ(hfQclc^6Jr?gW`tfcZ`OyB-&+Fj`HIm0n|fsb*^93_cr?O~uClpoHtpz3W*ev)qwIdU#~2koqriVL)P>^!*^#SiW# z!9U9LHCbxtlN0pAAveDZ7bN`eL(?h=t0DM;cYj^n_%Nvbg5A0P##RJwB!@XakiTZq zo_!rUOUc`M$~5l=l?>Hl41uF>_TKzdn{%(NXP)V%M#LCFfURi*)Q32CXrCkc*le`*(WJhF=7HhtK)FoCvk?s-|3P@ zyEQ62j9wuo?ApT^A111-hP+`oQmSQvzqz7lt+yIcp-hcfknWn~Dm`#Z6E~kE-jn5+ zSV$xf*`J(@HVTj%^Cv>@O5s*zJWOwKkJ=94Tzx6YmlcIw^ZCp=J>6k6T{XCOm&wIMS zNQ`XT`swNpxT?L-FQ#!_T@Mz$%!(JtusQFxRp02WrDtzyvUCx4*--`p$zA4wTT#%e zYx8Fv^_n}aRYk8@w}YL(H!%d5$5Dz6sNC@N-%m5AX z#UEY?o}!)nqBYL{SOvylYQ_GY9uE>6e2D|E>wUbv1jIsn$l!F~(9kly1StCqLb zblMcaezKaN8YG#T1k16n&d#1DCUNf5U%*8^S>wDgkDMg!r|P?|+L&nawfhp_&(Zz^ zJF>mQ+hyKLtn|znv@uTpG(~(Y^AKwOHn22f!27|fJ@raYS z`U;xWwd^!kdWE^XQ{I?(a!fzocFj#lNXjz%wGt)cA!!JPzp|ptutYE@gEF~gmx;WD zpTlm!Q*;$`$D`tzT`s-(igs9rnf0adT>iHCuEvH2?$b`LBn&lUgcMB|rWj@4+*_EpU0%I+vxr*YM8g$xBO-QRA; z$(mzKj*A>(ZJoI~IZHBFYzX9}Ph!wP3wU5Yb{eB4j?mfM6axh;=T&N7r0Z&DI487 zpVO~KL6JStD`>jJ%eakli%Y>aAKR*$JXly*N@9?Z`^*TSR~Uyi3o_kbUlOBcfPo|7 zba^?%q?16L#a_lnQgU*u;z{E4JVkYsjsQHXwnnj3#NyHGP9kWVdw;UJgsqvR{b%d^ z4*O`;&dq$rJ(lPN=TybRNEgCu$)JN*u_DlkxIWC=8-Di9=wq~-0hT=KIiJjx$A6b{7Y&|s)rHZd3YlK;-`{h zwYz_O0b(ddXDm>S$8DCwT|aPax)&|Egdrr@M=gb2cLZn*Co?uX+YgOH$8JXVbuOSZg*@v0=1|;Q7f(oNU9R|9C{GKMEa?yw*p-!^<23 zYxR5#yj=n0RNJ1f5-b=~@*wvaAsFp`wl4>1qn42naqen@(xWMa-xI#~EVwJ%0p zVq1J7&u5cB$@xxO(*{WWn?KQcGVXVDG&+eBwtDmmNx5y-gnP3&d+c!aQL+1JbwQz9AlRu+OA#u4=j!~gkVx)eM|fI@-4?t@ z4q&6OJo@`%(e$C6(Ung)m$(q0BjbYU?L8#m;18D^9GD&uPuf$;wx)I8E6Qxnbe7oT z+tdRsdx@X!1na%Ui1=&|?I^iAt?1D#q7#97&j7K80lx$ywys@{%Ffq!cjytd5TvRq zYiOr`BU1!DgQ-nTR#@PzP51E(UpNOtZyBbTb)GfCvvF>TH)}{YR&OkRfJM}sp|BKC zTb(p}C*7|r(!Q6&1$7_@y?a)}mYs%@$*v<-RIei9!XxCDQrQ% zdF-%($_(xaD#*DXXz4_yUF@G=BVdJ1{vR2#BFjQ!PpQ3*7pn zboui&5d=<&_~IjwNkt{DuZ#t%aaA`XBcsh1L;4|2bn`gs))d~{kZ~1e1y^uv85t!* zKYT9p%nCcOx3{O#&#Sf9}7eVi6K8>fb%s3~S0ZN9t{EG{fMT4bjA z;Zz{Ho#e4GMM8_oC3M0XmJrK_r+LP&#ocd!xTwO7t*w&#`f+eK=SOgx!UH0JL-2g` zs|7ait4WVPiN8>dM!5uLL^Kb?4IF;UJ8=Hs%|>bW)!#MgoJW0V!n&P@Qnzek(=Z6gzPndYMG|N5vN@7?c_zCM*oMt7~44rj@8afaY9( zM;`=S3z)GI%TFNRecSu&Fwyh;q{IZ_$95xKWx175Z^5xK3ti?xIN?d*!C*n&I`KR zq5@HaFK_!lITYnneQio$?x&-GtbsN$u@R3H1w$ z->Ai>t^n?t;~RYC4H0}-n9@4+Qf|B>$WH5vg~?hqsnK~5eYRc{MXpUZ}IUJD@%Ls z4@caIy)g!(MPxs_6>shGvdR^yp??yEDh6X*bj-|bW*mlt3Ur{dCoR&PP%LOUcyp{}HatebpQmbVh^1$50Z zcU<1`>@n#+8XXBby;*vFbJ%%iV{J{q(=$^ba7)4RUbJnJDGn%9>bZ7|lVItB7MQ+# z54^wbvJat6Bbeq0kh$dN)%BI;;@%r8!rL`cG)X=0xZ0R~{~KS*J*uX_m&HU6A3jWY ze%k893np-d5!$&F8+Ae0Yo5x4=VoQN-i0x=JbY-F&7vjvb` z7IL5U3=Ez`u{sSUO$e*eFx?+BHqtp=M(g zCH#2vr*B)>wnJT;rlwM^(>BYQTF}DbO!%+Ft}4=IO|~LRi)Z+K%#4iUU-qiiE*Ci0 zf5i*yaK9NSMYH+dE;G7u3PFjg1|qh24m$H ziE4=p^GHJf{(g8OKqwD>95c`}RK9<2s?-Ln(|0$xhe~8 z{J+2KPlXDU69fSX3;svg!JpTi^BW>O5XJN`5TVlsD-(EtRsSr<9Z`81z=q~bw<2qApPRj!y6nVl^o2>%!KE)9hU;>CC{x}Z@W+?=9#W# z6_HW0qBlgNUq<+O^O-l&eoUv)uA!HiPN&~kC4j~e>;bh+)DwGqA>DaG%I-JxgPT9c zaXLRKjYZop4(I7ijsfm4IVJ{T^f5IE^-N|;)VTKLbYTa0)3EB~w}2QoSOd?ulF1|u z5*pattYA|91XwngD1D)!TLpNc#wJadB(xJB5E$HL!7&L7jK+s^;tqxlZ`u;pm{zBm zhWY}oXD<+YVMIa#vL#yyX=yBwS$egg-1|c_Gpr@7II9bt(aB%GekEiV4f>WHt?DSe zk3cMl_6sGF`y3A1L1FpwR?}c;;^6E(4uk?>U0t1nGD^)vY1jjr6UuHVne~alU?ogL z=aJ!4cQSDZhBJ6th@+2%*fum9JLt4{V-$(YnVLE6>zlJBfX+Pvr&jED&t#({TxG;- z!JB6bgW5v;gS*tg=Rj~o@cq^8hVt^C57n$Z^o*kxn%CEca#T25i}DMTjKrKAzu++8 z-4>mdpL4H~mvB}|c(XSjePx+=y_rUPGBCfga#S)XBf7|pB5Z4V0VJ3#o=1Mlualm_ z*BfIkFe@h=2GGJUwllv5@r>L{BuGxAS+sJHZ^S)0)y+;mQcI4W^rWO8t(*@c_{CLe z=x9SWqH&$=^<(T^JUqmuk^VOMU?9A7=jPKlt^OcQwk6S5l;Byb!H z3uG*S9m|2*A~M>}aS^e25p5NrFhy_i(JOAi#p}bfpGR#!aQg44*iH}p_*d`@PREAq z|4XPS*jCYcCkZ@lAQ>^;4)s8S#li-jsrTs7rdgIXaDRp4D#YBxRfNU9BMXsL6@FQ4 zK+7&OQNcKrrL=1DF!qWj;UasNGD_Qa*w@j~akPd@)#iCucQ18L43qaStEvF0{Z^vp zR1>yeDjDR;g14HnPvhg`9iS+WgKUZ>ryPOlu`#R71t{m1`3HM0o~P81A! zgL(x1Te3J#nnf1FA@*gZbl*Gu`DrpCEm z$mvk2#ra>PK6b8;{-|h3e;KvJI=dh8M67r`iEp*0NPl!tDca^AnBol)&IuKeh*`D$ z{|v5_f82&vZ~nFn!tpFRp5K|hO$ibm<1W(?TYn1Ibp>PMS_iBuT;ea{@?NArI6@j0 z7GA^*=qdh>Ko@WnKUw}KgZ95JQA7y1T)kUUZU6FF{6>8dLP7$h@W@U!A&+;GPfvq4 z9r=tZHt>LCurPf}iXGVcXg$;7|5ydHyC6#yvwI|A^grvx3w%lc0$;UnXT@~#@bSc!X_*dqLr$)8u(FIf4#T9Y zhW>eIzrP?Sz&^dhMpIyxWN&+{B=2urT2W*1Xwk{h?I#-c=KgKaxqSL%W%T=({P{Yz zsSkqGZ7!1dkF^F6qNZn*&cN|I5iX447%Heqvsx!w%h2qWV|&mPh5BW>eqp0BDXMrYO57A2>l}oSsC7kjzMzo+ER+TIM-WC5o|0d1HD{vH=3GJpUxc<_FLJb(v z*e?#fizbHbqUD*jzrH!}Nztc3XV*)b%dW4WEF+_d4x9#eL71;^Yfn#4c&?wq;W^ELedXUt!T-6S2_afBjk)K_Q)W+Z@bW@e)9vZF)Ueu6 zb0`7^5R^nvb)fI|-^-dUAot>tAHhAWUVG(#r*reo0a?E89BrsSpUB!(K;8@)Jmaty zu<+w3^WgitO;cp64MttM6#S_!OA%`+VQuY6X&FxzEbK>m_v(2b>6PXGdFHSMkxn6rCKgj3x zXPM>xsW3r62;!HrU61gY1=?PAiV-NC7_gJ8Y%yApeg{|{;J0o7F3v<)kw zsHmuj*eEJRMMVWcYEV!>s#K9Gh$y{E2_zySf)oMi0s_)Y=%GiY_ufmSO9+IPP(qS_ z2lc*{=Xt+(z3X4g#X=68oHKjMHP_6Z-Hm%7rm=lEEg1HE%MTfT zAC?g{gnxMTElR!q1n{u%@T1H>RriHEz$XlAkM`I0Yt|O@rG|cD>c#gx2X40c%Ue=| z-=CTpOx4W0eflboo;EZzG-I(D5iv3R>r3Zi{@%U+k7T?LKMa=G+1)KI531!6v9Wyb z=$E~ppdD*f`cSx%*G%XB)?r{NGP~T*9HF~~@lrOZ?E7{vPhoE=zRk5{Ug=~GTIu!d z&pSs@^^(sy=Akj4A^fuNKPv+CRdnEKL^kSvJf8X3@yNx+>vYn=VyVB ztAo)*9W8($J}Ji&1S7gbn3i?o32aXivMKDVth4_ywS(iZpTrm#0`XpXH@qy>@dW_E zJqLf~odCOm*5<$sPgKph)`%wNkIQ#2K;90%vWUwa*5-ZBR{z+y&+7Vu$M0||^II(` zfdj$-6Pd939f%k@vq|yzpM=TS_ui5DN~XnABcow?acHE|PT~bRPZBYO?;+EFns)vX zFw;*u^x3N?el7xHioJ{qfE0aTI3px3{hF--CYkiGifyY5duSI`L1ze<)#MoI|5-f; zO7@&iggdWz$}Pxh`;p_yHZDZ=;Jcq`;Tj}eQ$)t31=nfQKZ1C;Zo z>1M-HE}XfSPv%q3gV&^kG1+j%*CYnkCky76BdIG+U;si!X%+x%P=2m;`Dfm7Mx3T4 z!6I}&kqvT6+;zC&_@4yUKcD_NI4gb=MUFfCOXio66t5 z9e3qDfK@zy!YUIgtkSN6?I#v^{AOQ&i{j_wae#@eABL~ywcYxDE1}B`wfBN`J>fI{` zSIvd~%kAGwlmYrSAnaJce}N(H!`$zks>sopl>7I9?sE<|za;^ve~)FKfPlaOvH?H^ zNf{YK85x(OJge{K6_37!Jb^5I`0zpI^&|}+1j1XJ+2^|GdW@MlDn9;Pa8#I?MyO^J z^~?i(?SROeO8$-Y^*5uIlmZ&-o3As0GiENKo4ogeiSjqkK?XeSjxjYlKXKM-$t%h) zXR%BI9T|4{sr8nT5fL}R=}*6QhDh`r1tF}ZH!#|XE5c!Sh|FuaYwQ=G$1{KEv31N` z*dj_K84L!rpb><)O6fIEKqHELzQU& zahaFsnCJ$M@SvVW)MrcW&}?e*1;>mrjlwL~bfP*^Y6IB7kqt3gx8ZVT@2Dq7<7!_) z<*N>vBvQ{b65zl0A+waapMGJ%`jdwQ7y*0nxVv};3jW1D<_ACL*qKj+wZ(Afjg{1_ z$bm;f0a7E5gD;~~&JVmSq}7VNYnfm9l`3;cuQlwBxvG%y6wgM?FG*hKr7n1=Wf+UDwo<9 z3pxU478c$}>3}A%t0s>#e{YVPot+Fn$|4#0*v)NtsKia=Oo)EK zEJ&w+5aaAxT6yc_X%fM_ovdusl#JhVi|5{bIDKb=d55pR|AwHp*N)8bl@+_$XW4V? zmO#hZ-7iz4mY7?th4F*l@{J zbJU$9LxNp`bve#2&;tV{)N}W$7DJ8>Q`Qy>7X+lHYnyg7-Z+2T*w}MZ-7{ep3}}c1 zN27#;*?|j-patS|oLEFu6yLHfxw-iupNNP_qiyst>oXXhuJ0#)&jRpT2Ir(i?N8l> zaj)?3^MCV{eQ&0xxNh=}CcSGnZj8-O-JmYslPg<+=-wD>)~ex0IS`5~C!Ma0jnUtXld)q&Ek{tUY==CqS8{+HoF-xvQ6I60Sz-DZ|>x)um z#$Y750yuv3VG+XvN;!1Z_w<94hjxGokfSn`ULvu1YR@T-vF4#OosK2EWmdMP4Wg%< zk6mS>uM4o7Xvn!nxelC{WJ5We0;^gN?%%pqq>&Q3p z>j^JNy@@f;KuhAy?p#!N*81$H+O71|-JGf$Hk!V@?pFqE0)6wPK;A&%q=UcXhkV;HZ0i@?e^Q_Y9B}2-_#+#ETPAq8F`i!3S z@jAPo3^tV%ve@O$e!h6|YT+PmxYX+S@#9$Ag13_a&W7tDAxw5eLiFD2<;N%P4X*Z9 zG7$p2A5y&E5=a{A>c*f?xWD<`J2^0!u#_x`bpg8&Qd2G<8!g3h;?f>9+&X?~930Z& zje(d3jMHr`zQ|U9v;ZJ~TY$_2D}hn|BHpcmoNwW$ZMx6%m0e$KLJK|7_ADJ z7PTL4;h9DE84%Qv$Y)eWmjC9>fye+7oG`yjA}C#aff6Mu!WXq{x@_vmnMrfhK=uOr zS@-P20tPK6QF(qA=H`{_=0h`*A+kFtiQpHuGODAbxr0%yziK)-AMP;nWv6V zxzWV(tX|Tk7Y^VgKgU+2fx0^H=195{enP*zhi8M$QDX%emM6ts)!OF0m^(L8F0ET+ z{q;=gBp5HE=EcA!F!_K|ywt$6%tN&5&s9Ijz!3G+(vVVUF&HAset76OuU5v>mhi_u zlPq)-(RA^JLUvOrV2($4+ILBs`O2NuQ>U1sZqOc<_@uXcsEYiSS1yielhpeh+NT25 z8;D^dX0k!S)g3!&)2^`VCzLmfaO9w0WlMt}Z2k1#FSaxsgys9x-~9Jy;I=Pz%NxRj z`B3~bK83|Ab}HQFHdt7^1{UHr zlaLPfYVIkWYVFO?O%NU!Yz7D4m#V?xD4`dOL_y1;W5r_>pAa53B}Yf`o`(mVg6$Zg z(AIQdj8jDUC;{~=+J#LY*&sG|ScF_T^lNw0>}7AOqXE*9(&gqMfGMft=U(oh*()!; zbJ~j&_r8i;zk2Dr&ynr#z^?TY@Cj_D+b@L6xG!m9c?F=dDGNa@r!VHf@tE$kyu3=C z@~8~9>KsE)#THyW=QJ<^B|L!;`Skfw;;>D;p>&9D*{x46uzi7uNMVPxM-`%BeQ<1% z9-bnzl15oSbcP)~)xmS$xd?;2(v#RLatmJzhn(%7Xkd}1*q;xPQuxyK3PAuoGmJh6 zhW;FTDpuH{Bq;X0_M^d-($*QA{R-n0pi0vaxL3l^DSNW+kD&OL7(UGc}4=M#FctFw-~ZY7|Z*e$h7Ut}sid&bv2FS&y%S0-ZX569g_*5cwvB*;H_We)<#gaO-} z)@Ni?W)1s6xa@L!aSiXP4 zq=8c|EZvw#BenWnSX#@)=rk?v&Hz9EnTeIN4x4=s3QT$xNr!Aiy6@tme~jI8S{AcX z?OfSK^ITB20fmE5&KEjQf4FEm)4^m~ohH{^wobp&+BXMovdX}~FdGYpcBck&ceTuE z<3+kyRCeuRHX85q@%LABi{|O}2{~#Nw;oY03rk`>slIE&1S3henp$4^B2`nbKmFdy ziR!}C&ZN|J;TB9|PpVelbV`f=3(mzi1yP#^DolD0IV^mKIZU*DRb!yfemc4-8+@`M5R>A9Z!$odm6qpT)LV<&ur_BmkYi8fbZ!< z(6P_4D*=O9WlQ(-7Gk@={*USmGI#BkE%>u^rq8h%7r5mZNrLt7*jwaHdZ3?WetM^tw_ooj9kJgWkyb>2W>{&@9~?7%Y=KO1vVoSe~JWGGE{Cu$*b7Y&U&HSxhxK zRfELms;Zi&wOgO{9IltAC05Ao5$XF(ZFf)e>E``pn?N|xks<>*(Z;07atUI$@p)qq zwUMV>d`#vjxgaq7T7#>%AkRwI&u4$0q7Dx^5zW)D2f`7nt)| znf2(yJi>m5N(CgwDNhaQ&&_a6MpSDNoz(|lny|sIB`~Cll{!Y!l8Ro6iK%v{>yaKg zRF|YXs8Dnm(Gb+xJVTV|iN&t*fHXI#BWFdPL}u+fyH97fc~5a#87v}zSao@u@8L>* zDT_t!^LxG;+E9p`t|s{98&bebX1uApToWh5!Gq}*gN1j=k71E|1t2UWCJisty&Z^W zB+i9$<-ki|P6ny4w-SZ#nCZIwSwzeo(RvyhADHNkgF}vS9&tYio+2Deb(BupeJgMc zESr^c4RwJIhnE2_A7+Q+)wPQ#nJg4>u%+COZbPTJKwDFn%garb5inj^itezOX-`J~ z)3*sO>YK^2uJYw;-x$s@j!b^7VQ`xmpNiWtV~v&B^jLV&0!Ego#FE0`*~#nWn;)U; zOq!|MR`7&Kly%@mTqnZ`oi?0GFGBMh4vSUO6%)H3G|E{|`4K2-N_y9tY7*nBLopW( z4=`ew7|4Qkr+51aqV%pjbn=#+g1BKmJImbG=(RG#Dd#>StC0*ms-VVbOMKsXhBOOp zf&Rl4Ey?11L@7R92XI!qVczG%n9G|?LSCTOVN5f&Nt;?Ty{l!x8 zPA_79`QLv+1V$6YhK+K^rtK@YxVu3=2NfRJY~D3@>SB&Q`5_7%Hcyf!p829xe(F09 zQE&0N49zPJ+@QeM5K<=xfv#34QBzvf=}YVmb_N5JQy8C`wy|Ts5 z^+#BXk+VDm?e`OIVR|`aZrH|j*Ai3MCFf_G`FdjT;y9cDPtrBVD9&(f>WUPmRnjqF9EU}+f@e%3UQ^^W^^+KX*x~9NRl+E> znyAk&=7v~(kWXf8@r7(e?@dV>=|e1Pr}bbDSVUYN;#XH^Uz2AxqKTnt1z`wPyQvnw zdTMi%dMu?Wc|~L`nxR^|#N5-RHUQO_AJV{B8<6TJJQC+Yrxt4oaTu_7=l>*>_i=ZBQl!0;1C_F6O$?-_gmv{(M{4@bGw|sFZ%b z+5l}$KJ;`wFg?EyeZ0NkLZ(KB&STdJR|A8#4AWaFn(MRe=_l{sakI<2FrhJsF1Aay zQm62HlR7lVG9KpWuuTeR6{A*N5hZ=_2M#}~UiRmiOtM9uU|~_!E;PShPgh79XzWRQ zQEnJ-ZVM5#8o;ItGHucU6MQDIQ!ob}e>H%K$bCP?X3H^f#lBol$aIu3gqLW3Wzy73 zfQ_NbwJDne@%QkhD6y3qx)mQ%u8*sxX27EoS5KG50CKoiv)(yKg614$ zsuy?gpzTa#V|OWfnI}m{qnWY{At{6PmC$GmbBwhUTxa>FL~4R|or)gfWyp{1#hqK2 zU<^phj1u_4v$`-{RGR3xkEQQp_=Y~F633%B43Rm%3)iXJUx(j9y`< zNlVHuBE#z%FmE^OQ8qg=9z9y=g*SzdhG3b0;p~lhfY1?bj$fHg-ehUV4{}&YN>-W@ z33G8zHuAkmN1>o@Y`Qom7xbo`;ot>uj@Q+^hEIdaBU)d?4cI5a@rm@D@0h#95B@!`%L#`4ya5apv>4%50;*VUPM3F%6( zv2jdSJ!3@@YH<*ScseTu?H90kh^TPEO?Q2%epex2+rj6Mwvo6>dIPqG2qn$Wa93Dq z^gEtzkfcQ|nV}NdTz<3^v@-~cZhmp>-c4$|ZLOVaUhLA_x*6}y;{b8O*x=dpiH`bt zj{>HnE_45ZW2lJ5fk(m+K0G4K<^LPq{KPre_R-$qA(+T&=PL^Mwa3t{G8P(Ao=5k= z*+2F{Oj^zqSdY^1HA{LON)P5ff0W2PTSbmo1m>v~L}b4F@Dn(K#Vzb|=rpu7D#y#q z%gw4;AP;&Qd`OI(twmd}5v(KuyRq~O#+Ol!ME9W#s}qyj zd7zHz2)A|m92PytMhnb5aw>>GT=7|DBPE~@7P!q0lHZk(9gyKmBqAXNzJ`Lcm%Slje&2SoAh^6^@D!-x9TP0DAsx3`KY zO!}vx9YaGIBZQXNE;rkBVr)Bu@@97}xevJmAep@0Z>-ypOvP@1WN^gV?E&>lqeZzood1L+Nc0CIj7@V!E&O6`NF(d>+9s}X0!l-F~S?_NI*()Tv zm;=$esF4G)U3))(G|@D#9mKijm5eJmMs28a2h2{aK=u{5twLeyx+POLR4d5U(_Ovu zq*s^@TpBkzs(^ncHq6WGLs>9-{cXtHut6`{DbHng5I%Iw&)+`=ykJ+yB#%5k zuT?a)VljkwBa&QII+B^SGEy!vL?&BN?%WmYvJ%PcYJniwj=#6Cw^t)g#*zYICa=G( z6|lDI(fuFXT$>N6`f6{|mC#(|_0wWGXuY34(tY4C0217$_cDN{F8RKrn$)#*fI(Yb zS|@K;5eP%2_4T_jm6DQyal#@Z-Ad#Y=*lI6nLH`UZ?>CRe7QBQ5JetD#ln>hNOG;I z2YJgsPc_FPk`!XI(C%3Zc>HRrok`0N$7qpHif16lqrOulg>xvMrfTnRKO($tyRV;a8j z0Wo6*TadgzP*3nkX4RxD7Qk1#>6Ce zYhF_L{0&NzZHQ7g{&{ckD?sIwvNPVmyVJAyya~Bu}@NVuYaxG-zv39fzx~C`0vUFSl(=&)uQ*fzR zYM}wKk)q84dC|o@F3Gm;1cvZfxsmknE5QNlm;^=fH9EF-+=Xk+YHrio`l?E+@X%xOF-F}zydPPkHNQcX6z^D_liQvo3j z@nlHFFvk#n@zF140AxK!iH+?%J*z?0a@}H9(BwzC_QlUj9D5Jpt6M4Q!f0qqZ$V;# zy4%`$cpT_sR4C4P3lR`Vy9(wMX$<1pa0lArG@HX*WP8G@D9NmFwem8ub2qwo`W?vR zF5}JE)`nf<$$Uy;Nvv)QFo*deEqxK8nfdt#$e|a>B{MyP4mV))$TMzk%w5uy1;;xU z!TTpxkDFZuaAdvRF>MB2-;UKiz%kK}xK}s>72}%2uw3inh**X89UA)dF&2mtQO#H773U9W1MC?A5i{ z|74QjGBVW^ZIuLH`%d0h>?>q9ohmY7k9_3Voi2Z;f@2xJY_^)FaJtuPsxvj1fF_a| zF08YrsB^FD7g^tq7PGq_E$((7KQsQkGb#NfpGkT|-qUogJd-GL?oskM8m?TvfaT)~ z9N81%MLUAe!#yzT(R=LUf-h1MBfK3bF%I^3&_gjw#A;oKWAdMyRyTCJgpf)vPu(;W3s^OFvNZ}x8@B3-#<7WZS7EtT-z$hEEI_x+8d0#cjFYE20Rb-!?jcMzG=#4!N zb7onZU~H19wY7v8aU~cNhjWuYctGcX-}!x{-ii&E?%~b^;bi;N1nEPm-fqASmk(Droa8eHBMI|Szey)>u$#NF7E3MnCdDnp@iMmRLq2w4i z;Uan$-BBrkeFG?1tEENqsy$siYcm9Lvubk%nQgMzo5>2)b9nvL6@ zuac=u0}5K>yPatWpz358?f&`&WRzGhF|_Bns_?CA24?-g(#xA59YL?#KB0xQFdaMu$Q*RZ;7a>wb z<*nCC(z}`wDAg+ui|V@Yc)X_u7Kg#~;0{X7l?DcUSNR3(b>B%6G2bi{7N%usIyaYv@!m`X~_C>}u1l zy&co3+^p(oa*gIhTUF|$)6<}>wCo>70FaAkfh?`w4%XfM)9Qg<@~22Vt0wb%``hp= z4=&x}(ZB`-|6GVqrvTdmzd4rdUGGDB{^1!FFak%xNnMoJ@qX>y!xkDdsKumSV3AML z+S?zLtB_ydzq_F|KnH4GbHjjAuMK>igi6&MjGCSjF+Df{bPQp-*-G*Yefg*l%C#D2V)t7;=GMspQL*7q2_Go3fxq>d~jA94Vs zmBmPi#E7>6m29bHg(;&vzSJv2wHHPqBstO!$tWSxP%=f=S`u!`8uWe- z!^r9t{DQ~o^dQKvH>HIB5Dk?>N-?8m*c*iF&f7BVJuzEB)NZe)8|q7lx^qtwM8QgBO68L$#_f4Mbr9@ zNz>}YbiB_hy_z(%RBuvm#&OpPWx#rwZ+b^nP|r_{6sER+L8onnPwth}{2UQE%4FC6LSbBIiZNN58 z$qUeU^Zi+jQ-~tWDTi4LE4Ae*-fOa(bSwKw0ip}K1x7@Ha$AawVOvj+1}Ejo>60hb zgD%A8gG2xwqErQePUUZ`NkcwbjesnGBMyS}O9f}7ai(vU@(>t+=^A^Iz(%5r&P7XM zDlmk8Hxy0TNs_n|Y(oOTP=`g_{u(;}|0*kLe63rf=Jp>m z`q1AIm##8URq_aMVvy0sU|E{wB}!A19nU-+?>Pn9!MtpMUOt_l{uLGEzO0+hvjp|& zM;35QAj&uII}EZorh2}+dOex}L%S-CZ&(Ef#oX}5RiC@sL7KXv^Ca@%iat;TD;eyP z9co3q0Mk*B)ZBjFs|!u;j-4EoQ=zE$>X^0Eu5_LfDYR4vy%R0HbPOCe`9mB?`^qLY<=7*><%8_=VMZRXT8%3_go?X?}-e z*`g&QZgX7^4<~OJVO(*=b&H=Dyl~E?RIH;=-h?w^TihgdanO3iI+*A=j*o zI-cTUqN$-=b8aw?M_mPVAooeXEuJ1ny19I4H#me2qm5qkaUsmqp0E9Q6YB4RtT^7^ zSZGJoz|SbTb(|Tbbh(I%C~eOf@KkW@hK4-d4vzb1LiBSWU*A=cY0so>3F*>RYMGC& z7t2m4vjvPIgyyfDRiffJG|CZ3`Z$L(x~nTA6rqzi@6^eVZrrFD@tJH?>z`K3<}6_` zkgX^C3N~QTY^<3=AX_b4R1D6kyv#`Fl5J!pa;*Yf*4%Mv!y-uH*nqeVbX{+G z7`2dYIn;JF#4I(Mp)c8T@xo-34PXShzWk38V2i13TFu(dT^eFM&jLMe$m1Ti( zqk?SYysLdkiO<@PZ{5w^mYUY4A)hU(;FAQ=2^xAOH5@T=AH(cB*580=$V?{!9;)*-3M09%bWbSQXW0hR+E-aenhPYH5VYRr{f!a z)}b%vl=U}`a!08s^|oaebk2s@c@Z-4x2f@C@n4BRJsE@l%wuY%C`>{6g;h$7c$cfIm_*My-YE5<0BD8{NWx2(>n&kS~b$g%{rvy3d>`UR-N zIdTHS2m%xkLO~6P<0RPvw<%kogBU=^Y1V~3af{HlvO-wiNGe(Jpgn5RGUUt^nh{DN zd9f-3mz;fe3F@5uQh&2sU-MnqWxnO0{jyzk@kt=$nKXqzFJTd}eJHk8j{D(w$Ep5c zFeD4_wC-*DuM6G!P8mrh8|E^N#3rr2aeC!+GW3|-b%N}ehc~4sx9T>9Yaq0Go6)VL`>3+PZA0IA6o1-%| z5XCyf3nkiJL(cT}H{f21pEX^o$!EKVIt(??VTW=J%Q?P6Hrhz0NWE&9Jx7^gh3JLs zCo}sQ&DPV@(@N88tKQSPtRK8ye!FHl3J{%jXhB+)% z+2FCAN+}0t_0?{mi$K#rb#s*MHZ9yZ3@Cf?dB(gg)%({Ogny*z*3UuPaOR-Dem_jL z>`xdPS#J{I>rIh;P`#Fs8e2AVqiR_CFGAAY6y)Bq>TBHa4Q4gay_Gc2Ftln>Ak95V zhXmF40@uk)1@mc|sn0u2QVx|zmVdZ8qrU9*=1tf4?=OX6*tc56u-2^TxR8Zmr=TH} z!6+vtO;b00s#X89F#ggSOLTOaIyXk{6{-q^>(4GTo+iyYZyYvLGK-7vlDKN{IlH*6++a@dJ`qJa({cE|-jvf^i6;+E9 zE@nb{V-u;{-af?{7_Axk`1RY{#3g%K*&d)mfkX}ofL7##U8vXH@9*c}Bxu@x{QMB$ z>(7!bKWT}OW9&JQ^r(?F=FFUjSPUGvY1DK1=3R)>HH!gzMjHbIiD(F15wH8Bv)83bwCla$ zh0f1Cm2G0I%Jzb&H<^=~x_`#o#|E~#UN#HfHjyEWPscY)<*kBkm|9K5izY18# ziZd5W<6$}F(fV1@eg<-L&P!BJ#r%h-3I?94%yqas={q)}voPuEDyTIIE{nTb!*yHq zxrQ?|F=6V2s3?$>R!W-6APi$aaKzfj<;It1kkJE4npn1m%sz;)aAcRU&g_Ky9<2g> zfl@D|x}U`1KlFq$gz5xZ%MFwMeS@vRA_#yXj1YiGnEqkWB`RD1B9Spf z?S8xs-B6cl0tD6RkiQoUJiy%k*BYQvN?L-5yCGG5Y<7K&L)RrvMTa1i9Ha=3UQ9!?C`B!}{edxnvD`ZXt~{9M z=yl%`@;_hN-qPIF#3G;j5XR=5FG2^yfELmIzh4HR!JBH{-v8Xit!g~dMm`FIk>RI0%D z{DZ$IB$`iPFY`ZHm!VD$&kFe5d@7dpf z=(A!|&KsU{7J{B`B)Ne4pN6N{Pv6yj+!_{%r+!+Y(BigRf=?Tvt|?Na#&z2zuHdbe zd)!AWGuRR%JqKEW?*9e}?4S)%v?dIg6TIy6NovCYFc^^Xvr~JfoYl86Qq=##Knx+V ze%z)V?8l*vFl*vuE@J?-A5BR(g2t5O<5VSFRY9P31mBwS67;&0UpB}{PYH( z=mC7u$r?~-Lk&z-Z3CIWtX!xDH!^=>d0SUtxI7If0xZ>WxqfYB;2-`MlWJS@CV3qy zi;s+)I3g*q^>BZE`DE{&lXJZQp!?3ns>Osvx|BH9PLn47y#Cyo$)OBa)Q!dHuC|Pb z{o8{`J}-y{hM>7=4@J$+GEtJXrxh)-)$!xA_XjU+?pR~^DRrX+7eoNJDGw(w zRy!c}KP>jUYwIYBUd6m==MNClzScN6h?^14bPo;1ANs*W)CT6AHO~^fZ6zc=h0@+z zL7N{3m=*WCZ|kF3a*PZud~p*_rn!0RR!U2BCeHIP zaCcZRfa_;){Oxq*HQa+Vu>p$O9|ULLDTU`3F^2Y`yE0bd+ufUW)6im}>PZQLNOk*n zcV-@%8|jW7U}rcZKXhEM5CslLacni3hCJ?_iiKl0acL z-*{8DV-`IZ68q{HSB5g=DGo7rn2%T6;^2O$W7kj)L@LfCI}vqnb; z#=07G{XYX}5KV&1Xd+kniIL6S^vxnWV??0$K%c$3?OU6GyM~maU_SQ0Mfv5{-VbGl z@EjpdPAPw=A$;OKiLifYMQt^_ifp}s2xd20FDvI^PU(1j)J(FOM^m|>Xt7r#V!g=D zCcvY8P82JxoIMgVc)}8@9hQ$I1r2<7WHS97_gkm>U}W=U9s0lIG8%xjuG9H^=T(KD z&ReZp`;}7LcyHzU1@nZ}W=4MVpc7G_CzG%c%VMjj_{ z5E^%l4vVQ$5xfHdtL0F!nsJ1q7?L#)S6jZl*fiuc^%OYO;wOCsAnbUWOayT-7`cnq7UIl6^8)N z@bQkI@WZh7CpwHo54%IUYVx^og(7vOQkgY*hd7^<-zEUhh!##(42 zGlFW{#|It+o7pW}4+7!P5_IVG4N>+5eil2RF&{2l4u;AcreId-8kBDPG(T+Lg~2P^ zvKTWDS9LLu?LNJ`)#LGgF}qz%*YX%Ew1avPdITA8XroYS2XleNNP68y?-iccxZf$Uk@2FcM`eES+t?JDOLjk zU|5}Yu*ko7eK5#C4&8mz+z>vdZbp-S{*{ zyfcwj%xW%h0FoUwYxhxDi*EC6)d*{?5y_gtgYaWbulNQvM-4P22=xX%wHn zudCa&hYLDY@z5zrCpxl*u;K-^EcQ{=P@Ep^_~3FK*`0$-=y`hc#tp+#H47XULDS;> zId`ob)ZWA0Ki^VK{>%DQjfnZ@D%g5|PF|iI>Bz#wI=Y6;M|N7L>0SPmn5e~jtPKH=Z4~uvE|kX{E$8<6slV|6cbj;hNyzcK6?iCL3l`7cBCjgr>d@~t9s$xBCZOK6U||L z7?H)=6O@T}-{ncm7e5xyeLGiJWug9KmL;$cadzzWt4R(1&nFnq_lY~P`m!-0hjPD% zdpg~4vA3|+YtP&tc+Nk*gtqdYA8R-7IoIq9W`-!1tZM~2vS;_{x6l{d$f7j0RNeCt zQM!*^T|HQXEbye`w)eJt(m3~azM`$?3Z6|G)8E1Zdi19#{2iwyk=IwtAE7oCZ^OK-bMz^! zw<(HoM+A-%Pmf-;J^06;Qa#CSYA|Nlvp1%Z_rMSb4fHB;@jmE%Nk7Ohi2N*%Me<$N z@&53kq`3F8o11rL1tWZ7Kmohj%IEad59{E?am&?*x@1&uW!@f6u_Z0##VTKJ_M~SyIHlP-~{w`x-r#Fdd59gVm z?mma6#qk!fb525IVk6s_h%jd{N|Jk-hg7?Egyglp^QI{O2dFd$iS*G`E}8P0jpy#} zzvBeJCj6lh&22&y z+L;GB^dI|b8iJFo(zUz|tS?-A+|{_USJzcl?Y?!2`V;pk!N719?Pm|?h8$Nfr3dzn z)-Xh>QQ|yb8Che$Id>eO&om4uJ6rRSc#>89{;P4?R^!(OO32vEJQCI!+jOo*-c)-| zSOk}1Gh`-f%G@m&fBE8T5w&cyYlGqsty(I-R&oZiRC+2(M}&$M#6I3XZP{BzZ+&{h z-{P|VW0=%MKhr>q4AAsUcAjW?#UKOf7)CC4`vU_K`B>==o6zmB}ifQnonM8hqm zvlEM#1xSr{{Tuj8w|-GK?8*u|r=hI4>?7cpm4k@d+JkCP>CzG8EG^{$$;;WTeMt;K zKFc>FQf@l3({Niq4g1S4Rr|vAy_`^|p9!QB1k*=HZ{NIiEoD{mU`Q8l0|!BA$jmQr zTXL1gt-RzzTB6@6DElQQxj#S?Y)`vY$03VdOcSLW2(*gI=Dmxs&+dcf z^gcC2$rsY}o+z7=pO#(T3#+N)mxxmxh}$n_D}9%dn6OJaY>$WZM-i60Ut)s#V)KHk zV7CMHIW+Bn2-1ZVRm?T8N*!^BwsJK<()Hnr?BxM&1Fx(A8!_$SS*Z7z%gl5^e}sN1 z-+*|jFU1_8|2qW-^uVQy*ODl#PmgPyV(EcTh4oj(J5=9w~FT& zYW=p0ao%a(rc3#2@u1ycD=FRt81n3{fG!ZuC2sU~iM5Cae0`vEZZUXV2!KWp^)L?N(TpFWNB3 z>yxsES7JaQtZg*OjHC}K8De67v>Rve?dCLecGu}IG??W(-=MC(9rx_U`*sfJe$R=P z&la657JTg;WDTL`yJ#YMI#DgqwnlzNx&5hnIO252jeE^P3Wjhgh@h*KL&-UA8ITpi zeQ!;+yAJ`OoB=|qy~7qW>8tMA(%uf92jVg{83xF}inB+40t^{$0~Dn_v%In%kl!tD zG`2Ys@Lvg|eSjl;xEh?kt=d+%FPw>Z<;~~!!l{P~iwud2O4xvsQ`%2giyN0?i^H&7 zJtdPzYAsdu&lPEp;xzrLV3dNYfVrpR+yzUmeeh5=o^ukBRWNwIp^5wLC68H{dzuah z@^((&5xip4bu{Tip=ZOlzz-%Yoosi{g&>WirJWOwcITMFg5k0iy9# z@e%o5f7{!qcp78CRxqBM%K*$-g$5(B{38Q&pL==Ko>M9NV@edZybAC&fU_yS6p=TjeXQ^6KO!Maagkk^j`2Lxzn>E zRW-0|f~I@6V0!opO^e_g>dwSq^4*>PXyHG4%bx-$@q;c##h3r$Kn#ND!P;>~t1hvQ z5qj!+2A5S<{XX_tnNL7+*Ml|^zi8Cuz|ZHPae=PKt?idy#Cs3#sSiAF77c(=z_AA9 zaD2=yL60i(duV>zl>(wNQo`K~i-^qdCY_s3>jO9AAQ1JHei28?VmqgatW?Gp^PKVI z-_oLrG+YMIOx!B5IosVWr!oOFBXd1vWKYz!lY94E{MI$)3~epEfVT<5>Z#we0Bo(F zlWhV%j(&(muLif4rjXsqV^$|` z(I03V2_?E*6Xiel>|uW=!T%6r_P{tt^8ic%oTaQ}dhb`IW$%Y82B_(FcPbUvc#rcx z7m{5$n95{MSUgtQW}?RX!BRH*29^-l5PeFZJn$?q>R4U6f*V@RXTq^Qs{RbbhU;at_IttkNePb@zd77Eyb z>{{Q8@29R^;-$V)U^#dt9)!HqUkbQoN}rBXSxnE;FK7NpcBmx&r7P5xPvnpZ>SMDZ zc0BF8XMg3Gr^f_yh@-9cx6J)Vjs~c3pay$y8-A1zd2TYN^X%gI=b}RETVlzEmAiux zlDAc=_To=^y~-boOFg!0pF%3Yp4_dO7q5)S$K7RTTo<7S&jW`%OlaL#eZ z8XwZQNwdtBY=d>bz*-YnsB6JZGsYC_1LjP4`J__w{-j5wzIcOb&xQhCx$fDuSGs!YABqEl7 z)CYO7sn|(-@EpMsvuEGp(KJIM=RxD-;1imH_Zcf|PPMw_IM=ptj_)?cgr=%uo9vkO zU1v-i^9XILe~vjL9Jed+tCGCCX|j>5*K@0Ku=8OTZ8D?CGlQ3e!sDIxPR}kB%5h#A z5D~r+a6W%Nf6h4-R9tv$xV?YX3Qp~uK7F2Qs{EGu+uZ$Dbw!D~r?J$e>BQe={HaKy zpNGJF`kTVbjKnG!_vCr|eU|5vQ8y~Mdb1vuLn4J5+Y=fk-i z$k0VI*~b-$cV$YlUWezXmz=x!Is)143)l%Dh&;7%1b#hRz$(%PcL%{nCpSLA1?#o)dSu8b+9=dT+f z6fW_UGeyZaIYpEhV~+8;8&7#Ju1yc$+4H}B;w#%p4ge8FZe{ZnRU z^Rd;{)j`wWT|~-EJBi(zbgR^|z<&PQ+nyO1k^4So_8j;(tDTJ0)%wG#QeH_^gZ{Sr zZ!>vW$F?NnG<5%fXS7c_R$)yiN)9?q~0!;hoeeXY`?>-)~ZKOQs5=)+0he`Q}r zieAyWf~Qx=8hZ7aUg>Rgs&)>5`!)8)|7m%BKw||n+JBp8Qi{e z>%-lB0fl5h4NfO7&TOl3QX^DX5eQBtE>i`poi}K>xS3w!oW~$fPuG zLbBA`ocD&5(j&*-O@pe|@hkVMOul2JZpQc;pH#Tv(AafxT%mpIJ(9z#U?TX>;j#{e z@Qw22BS$g(p}(ul~@ZJW^!^C~Yg5y!n$(uz65>V$4xd*79T6^@e9nyVsT z7p(4VCVb$rw!Qy~dBO}Mvaj&+N4m@(zG_9vz!G48}_xHc7vo=w8J29Q{`$I#1DU5pwwF)zDd6IEk z-Baf5;bKF$4=f^*AJnNl?TBC*TYSD+$iSvc85na zgmi>Ij#}-$Vm7v&oCK@D2v&howZSL6P2n79FI5=ARbD-*T4zpcf= z`FzB-Y>XOal+}RqjhEuzZrYMt*3zy?wH7Tz9zdMIj8UWlVciPr^_Itl6Z#g|nhR2g zSk`Mo9wB3!^%om#i!tusl&dCa1_uv>ya=j48~w;}=_ze;3rqh+!Xdzx`n_r=Jsb^R zhBRYveJ+0jBQjm^#qcp z7k7L@s6Hu*x}J)>{Z2q_MfVbOC(y zZ}nk_^*NA8IPbB(FMRVqbl>^B17&80m*tNRl=qJq96KOWsuYmaF(SPbcc6RsMeRBZ z!b0_%%Z{h!q{16+?i?mzZshcBk!cB_@-Z8BU7I5O*0Ti}N3u4~(f<3>*5ZmkADda3 z*D@wSil%nyj@kANzQ}4536-2oUT46`ZVSe!pI1Gm1y0=ZmJD-d0TbQY{L35z zJ&qT9W?tB}=^Jh!+%HgeJ7xdf2e0l{-_cApotnEwZgUFDo$o@Qw(2nRhu!MEmO~m< zX>j&AG*5V?`gNfbN>Bc;bQa)Y7y&8so@O=wgH58A^wagAT~W2acYaar@*QfTpb3`dSc%q`{cZ(6-)!RlezU>t z5M-<=NNlP1@usV7ub9e{O=@Q(pU-(PWx@V>%fJ>`p3wpHcHRDquB6xuIU3(<0H`vs zIDyyyVRnLm7$0harumadB#KJ~FtynjKc`WkY@fVSKILCsX^;CsYeKswoy+f)TmK~2 zy)mpQ9m_Fy578{AG^JXlIK}VMuW_H3?E1uj`};fmA=Q$ZZ(98NZ~ObQ9JybY1%?#G zhoW@`V*$F=WQ=P{4BW_Y>97G{%r{W|wutvs|GIr~b&vnJ{fhg*?HA3`to$31FsOw~ zEd`^avf16QyheS(`>JWuq@N{F(p8h~#v1sohxYZ8HgUs`qvCU&b3@QL`xv+RLEh5L z;<3H5%jz69Hr|~rCUtAU_he{5m8zRd^}+qOLkQBI9_e0F*mO0zgP|7uTOP1lmDEcL`)iobGo&uAG{B6KIM-FVR8&#>ft$Mw`+mRxwe*LIB9z`ZZ}OzAFm|6E`i&X zQZ=e8isj4okC;Dj*OT{_X@7N`bgE(^3SZEeoRl1#b>ilGL&=5t0+MTBLDWrXZ-VVS zJ-0VncE7xzDq8p@>mvUx>*r^C>cIc2Wcs(HpBt2Q72s^Ob!JL`KqZDisRAmLX1l`p z%R4}!L*;?w8o%hUSUmN@_%{}n*>_C+Qw#Gtc4fu}`sw<0OOwW*^1!Z}EOVn5)r(Sj zjpTF15%*^V&FJdlC2~}!4|t{D)@cg>>ph;_x`32jxh8-66gb<5=VE3b%bjb#Nsmex zT&{Yy2D@KX1u?yZ%}-VChj5I(eLNz@!ZZNNH|oa+ACTy4aspMtYctkWtIOL8n-QL7 zYQMr%sgDFH_QK~tnB7)M{NHMOeq|Yg=lCfM)y(lnBzd1*?T89B6VQDM7>bYXqHK2p z`&Fydgus-KW~P<|!F|iZ#j3>yjmaEvoQI%W{PV= zM`4fE)POj=F{d&5v9M)iooUCE9AQadj%V!+J9gx_i8S-h%xqXZFldF&E1}>z5c=$> zBc4;B%BF^YaRYrv@Kbj3&rhI8nJw^dFZMI2;yzES^rf1l{f>|S@_ZkOmH;kaDiii$ zl!oHBsm2aOMGSmra6H}NrczJXWAaMnl=`bivsJY9-KC_@vJ;C{=0?JnlNW>m+GP0F zVE&KTYEq!-?AtW2cao=fZQ$#y#93nOYf~ov17(JP9*mMcMbC8m6RKrP>(qleB|&mc z^z=D%{ikU*Dmlba+AbA}%Eomnv=AVriqoTgoGCVQnxwmSA6J@>56qKLob_M&Ah)F{`(*f4J;2Pp6|A~R4~}YW z6RG}A;pxr-VrrZeRBTYCzwfQ+>cE}eaZMl=xcJc3TPr4SFHJKZbeY;|I5&=YKW$}m zBA?l9Y==~}Ze0;~fr;u+i>n4FK3(l(GZU|xdkNxd88|<*bpM3gw}VEp1lXaog5<9g z?~`uQ`?W*RB2uQ~3&Chd^5w739JyVaii(t70AJSD4E?20c^`ZZZYQ3HmQ*#wzl`eN zS9dO{N*MrzrhGT_<&UF2`+2Q)eoR5=@2G_LSlU-9jUT6m6>Qa+5Our=;U0nfK}38* z;bt5-g+t9R8J54(E+o_VrX7;5IHoY|FQjgZHgh+Fz9zP)NP-)+GRKU?P@xnTKJfff zAu}Lu%>CIa*rK5QA9mr*IUDkOa@*J+c7d1VT&u1ES~ZgRORJa=Zv#hi!gF<2C2#4+ z3+Hn>C%|FOn*=xV%AZ$iGAU#{U^CZ9rOk=in}$TAtMP@5H0OfId5ok@nueIy1KKh7 zVwZT`y=&5`76xr=fQokd<`d3e4;f4O9@aR!0>DB0hySaf1H8Te8_AY|_1t(F{8)** z4h9;U=dWv@!2w)B7A9IcZhhAYkhIaIWe4<(5Wu0hSgVr=_$c; zLX|S7%ZGbWg?PSgx!Y%WjAxeR-;0l)QPftSCP5Z#vLurz#9qQ~jhgB{5wlsc9?E;YMUW0oNMeXkSme~l;dvG zbQS_O1AWC66fpYvtBDB|^Kr>QX1az`wT`tEv{mTm^6Nk`>yHecx+r;9!$GYmO#N z#vhvbWIQ?(bk#<0Vl~Xez)^F0;&Fw&hB1eTK)LV!e2U-rc#8QO8Pv2BuL^IQ8xunN zfM7mC*`#UC|98^6fOX!Bd-*&AAz^#xKjJh>HULn`tn&%}+Z9Pw;6DObkXQzh&&!*O zEPcUfbzYk22EZ4$e%kvSimdH~-4~Kz4JueaAPqGG=@L+$_^epsL+21EsEGVDQ!V-b-f^qN2;`%@$JQM*py6*;`?BI?H7WJ&?SBBF}bAg-OiaWR!VGkpQ;`0$!MbH z_=Y48bYzPe?H&=7Mj;j+fWe*dzF zKOMnX%6VqdRWaepAFr7JKdH9XQ;92QN#gMn$FbRP(+wa8j+%U43X1pH0*=9*yI-^X z>@lLan`x_l(_n})=JkAg`PNnSPW^RSxsFe>fs z0Y*l~hJ~_zaji(}cge5b>;ViS)8NMQtu^PIVEW3OUvJfS9k85==gv!8J}K`Hs||c? zmI1nuK*O#+f0Din7|)H8?W1fZpgD!zjf6c4$6ixsrf!LD>cm5rXJrgg>P(D+=hU{6 zuD!|YcCNY5g%U=5=<>X?C~i1STGYwE&>75*TzSuUB5|Vc#b$hbu1G9fsme`4@-;NAp`$W9__w=<;iCJ*+m6q zE;IX!RRCec!N?jwc9!&w`C2Sh^&`ZyzHYvna|GFvL6=N+yw({E+ulJMcLx=2)youI zhU7Do<*}nzYrIC2x2QAtAXtrgYx@$ zH{^iA)dpfp28srPE_bTZUx@Sp9YDlkKF`W7ejmK?^KDnKFf{qw+S_Xv6&0CVwYA+n zXDJHAeMerbaIx+G&5Hl&(STgxf7bT_Ww0{T=L9->RusDqjhxLK`(~U}p=UN0z^O*} zO+^(R5DV74e(5kZyY0{S#dcbRg==+---*ossx?yFa>ULc<=K{@?rCD!Y6WvxteQ|7 zv|dF(t5turZS{H1%^`aJgp3`SvS?v{JuOhNSLi7MDzW49ziPEjB8{+9GPXF0=_S4Y#1_AvvP?KqzKTu#sEv_;^O=eks zzE8(QATl7i5!30}f$@E@8u2W%-BIZKWX&CeTbhgfPry2f_W~nv_i%FqT|VBbd6>eK zphi@c`n0#k)*hLu67^8y-sKbO0MB`VdRFDhBE^z|EfOW3y1n|!>{5z#UZ$qp z>fIkKL8c;LCnGwFp8R04TbfD2hEDVps4RnNjhfrroS#=e0ztRyv!65g0PvFp)ZR7E zh3kp4D>AQ-yQ#lfvGrhOAQ>3h1QoEyFU7;%uX}F|YYbM!@=Gt=|TWS04w4 zk_8(^gx*C0sA;(+X=|#6UUvA^U%&`RL{|dV)r^wjUw9XIAA|%qJvtyjJ;?C2U2Q=* zILi3ZjGyiDbY&GvEjI>8lEHmP-{lGD#PC~IakUf>!V1dSe(OLy<4FTQUas?k&fu+? z__t231u3sO$SJ!*wtFVD@TWp8YW=?%WIa?N@hIVRJ>7t!H4}oEa z{uU55N9^-$hqaG|hj<*?OS#n$w8v2|J8Wqv?OccfS4 z23E3*mO!B;3P1E`c^0^K4pPL4cH1dc11A4TP6bdp5N(&=+xsKfwtC0_P&uKGT)@ge zKN_lc`7v-7@p#3lVGC+pOtc_s0tcPE>Bi zFf$;(pKd@OcR4ia^#{gy-X$*md>a_j9(I|0^?nMLPSok~)=b?58yi|pYZ!u>nzIw7 zlkh129%aX^SEprAYG**V0_-DS&(BTM0Hzq6e9rd&=;6Gtz47wZ>nLT44^8MTdsgTC z{8~LDXkikcXLw?Cy=jXbI{dQU;iWTaY3ZN?uP(9K7wgPxD9^dV^oul`vOU(%w-cEV zptCP+m2Mh4Fko19h55iuQwH+aJz~O_H-^~vp9^~;Z0^${7uRZ5)3ssQZZ|$0R{FEM@6marb*Url^5`dQ0_Ri)2G3GJC>fZO zV*>RNNswV!6+G$K#xv-*?1V5O zBl3Z{F06S=1xqaBqZ4=&+-td8@zV*;np7(umyQn)r7WS;^2hr+7P! zCwVs2B|SC-0I0DfEMr}Vs^2*3MKc-}1??UT3v)SWfN~?idHsd`;dec&M%W_QT%L!H zzW6E9uOw9BpH;l*Jn(oz(`UJHYvslxg4j`o*jGj^dzxXZP2%TeR!0`scJz<)wpUAl z*z~rD?H4m5Llk#^{2MS`4S0#r@n_okLO{$wh+yxbe-h5ZakGMF8GC~M*4K0H$1Mw_Vl`-_STV2!B4PYx@0uw_L^tLQRwQoxSf&0uP~#g z*|g4Wi-DvfyT+58Gw--J9TX_BW#^AZnvS;@RvL?!gsYvAPK7Hu=9<&F^t10gSTDE_ z1U1bJri0RtZ&qx*+$n~0moCqyh&n%SI2;LC?@#2j)0}&)VbauKfmrOA7#54%h>uYH zc8WqBZe;9|5hE5MPls0h8dtQ?Cs_>*(iLkcE|6DGLmad?u)cW7^ckk7D;N0T!rDDe z8op|v$)~Hc1liHJ5+ymy9B0!w$TQ{rmgMJe>otY(_W)&9Mm!c$-N}|{G`z{ zY$O-Xg0|6jH|S>JS&+n5!%}JOs~;XIrCOcQL5{zl!58kOSqdT-^MMIueH$6d(CNMg zt6^;CVONNLvKQttAIMs-ca`3AU^(1&@gG|-{%<=Ce0zz3`c%M23`#dq@7sm?J^$B! zt1d|@xQclSdCe{(o_ec?u2xy(w)9nB5#(dbsz<)I3od;TJJ(iF!e%RKxH5#q{Gp^* zUQs(gS23c6#oVwg?&>T$Lc19%c9x#UGoAyo)3kgYCI=i^^jCr1-E9@iazngtoxJ_% ziCYYB+t#=`Lt*=>n_m#YL42~MO;|LPo1*%1b0I|a@iR9ZEMAso-53}&V|T+2<@ zf{hkNDb_G0^*$N2jJlVroSc(0lu&HGK8_W08YyB*c_OZ$vb`k%)ApA%8_e3y4ix~e zD3#su){a*hw72CWuJxuqeTwaXq`GZ3XeKRiw@i?f4Aiwa-({4DcYFen$jX3wABmqU`@d+;Q`%-2$ z9f|-TngK?Gh+1~Km635kYnjt+t-g-adzgaROixXy~HM*3RG^z;ah!MI${W#%B|?D0XMABEsMEd+~C6GVR3%g#KNUtZM@E$*)TSsEE6|T!9=Qf=iqLHxC!F*-cs$d z0i{;4e*VCrs?Vfyv1akw)EveoFIm5=U(b*}Du8>{(SSFn-)NR`J{04sj&!YxEz~No z)XYu%AbrZ1Y}yr3H@>1{2!H-IY zWeukl%-ENW3#_mvU~PG!-PY91co9q@ev=bMbK({o(KNrpf&iVgM_Uc1h*+JLuN4&5 z^-afTW=Xq^czhZ=F_~cp)}k#hM?P^ zQRrvV>-ZmfdxLwD4cn$B+Qs&mNl`cPTV=-*KfK$Q8d}IT^*}g+Y#sf=5~rxQ%Q?B} zc&6{<+h=kKe?Y%u>whTE#m{|t(OT_ZaZ%P@+RM1T&xgakjT5hl*VWMKCa z*&*BVNYn!Bcn!6-FjuGAD>gP}%yC!((2#SFrKJI##1tg^&;AD#>5c<0D}r06L~6!u zF^uIZ6pKNxp8!$F=cofO1Fk|N5CU$>(jvMR{&;^GfEvpC#Z2K(Ow8<-*LWJ}$9snS zt+4E0&LGT{Q9R)6}?rnLc)ZncWH3vdTT-A@zETGc;9( z%d`(^PAg=~-;-@;p-^B@{wi|2PT$#S{n@u8F#@=9R5Npp&PsylM0K>6ns zO~T#BlWUIFF5a%Rni?q}oi=B*M8dz(x}uaC|mI3|jM*rJ=U2-akP63In};lnm#DsgS#a)aH`MvTqc% zp<7FQ9v5NMV{Vwlx1||EU>Vc()9R8vKTn}jY@$UPkHTye6DY$7mMmnig>o{1j1?e% zYH`qN*^ngdt&tQ(ikg1CN{e()mD{5*+PWF9g8>$GC@_0;3tl=ZF3xDaa1Xm=s(=AL zO82zg+CPmBaN~)JfPQP&qG(`#fuTZ|a=`>#%YxARK0ZvP+#MxQEnn*OL}F!W`#Y$BKIr8DR($6=|wil*LExMyr6&!fQCk#~BR$(;h#pGZ2s9b`sOKU&fdy|lVa z&pc4B7B99xq}1u6c!zs(BIE3v7Hg}UDsP_~K-eTLFm7t?V>}g1$ow1{|524KKJFSQ zpX-!2gr~ZJMcM?5HQiB~o)RrC15LYX=*wu_VOFo>?5exXYG=dhl3cEgDn~1h=AcKI z!cyU{O~fjh^+L3_J}^a5P`{qTf$Vs0r-oc0^1&f`a_uObZl8+}ywWcQX1sDd04$pQ zUeku`_Z2!ogZSCLBxRO0^rR!6 z;9|gVm};tMkf{9S=9k&0_nu>To4*k@XT2*RtxlBUWHgtfMg|#gH#hr;fmcF(8$ul$ z$^-79afH?)BHC47#lIJ4T)iU2ysIFLSn7!;j4UI?Z7v^$!|{Jq4dWOa0vjqO7*JO} zu(Y2{TEldw>Q!GQm}zdX$po!%;TRCcQAmNH7%#1Bc3ecqE#wg6;Y#!%Zh*%()=9Ic z&aHWy+!x05eP*oH)=Qt3q;HK@<)%X>&sg*NAy-*e+`#qX*CYf5w;M61>{E#?s21M9 zW(fHaxIdv&9b324R93pjAb=X!V|p+oS!NqfT)_~a{2*zuv$WRXyPxcfp$S2>`R&P! zowGgl-F$8su`#6_H*26VmfFbch3R7`(JIX2I9ZuE`HfL z(P?Ue97fWToSq?}Sfn89-J%uSw0)7K8{o$Ce|dt>Zk6BqLEpU5T;HI=Z|q7YxdBl* za9)5x(biwfo`A&R>F%~x_yJAEwqswvGJ`{!#gER`3t=;G9drFxcfE>CMVdD7shJ!e zQbL7=PDGnUT2Fc;Pp%=N&0hH*q=4}vQpHHN;vJxc<*61am_6r^po5rNUSKBuWMtE^ z$I-pJ2vFE@SZ(iDD6>|fsi;w!a$X{@}m!h*n(6)UAv1|Jq$?K{~h3O{oU zQ8318J)s&LYF!e+d3fnT+`Qcif36#gzr|~FLt1zH)AbrHaPjNJJ+HHmf0r!T~G6+C0dd>e65Y>y&?v^cn-75!!J zL7@6N>SoCOcFB0pYjFBO{Qp#}r{1WoDpCrTdnbTjxEZ4=b(HEl8?=pA4&9kSUM}vx zO(jmY3g9q)y9 zVmyChV#+0!?48l>?spGI>RAH%#K|)$@2q~fAQxu%C;-8IWf+Y?D>->`dClX#3kxf+ zbJ}AU5|A+4qHxNAgx(*-DC6;CF01zw-?wLt1&oG`H|AuOQW<7gv)-ARfAMS9Z8ABW z9C8|dD6k%a^Ld83QXnuQ(kz__k1s4j75*VGG0~Eib~ejAv{zDG+yT0R;aE=%w z#Ls`nzI&he8s#h2gfy6K+-d^F`;~ge`5~TVzYAPT#@?-sSU|kv2~&i)rCern%O|8YH~fY~sMAXNS#>hn-Kkl~5q#+-63(==v>`2+=l+PdZ{N&Z5Z}3h zn>+_R1gkDM`XIfLUr^9AZ5ljr)j1tAqAC}+v$j?`LwH=xp%a`K_eCJW0bPqRqJm)4N0eP~V^502-U&NPqyg8}|l$kN1xK z7|hNxK!Z=tclIdC=*&^f6>G)?tBMaE4uHs$xi3zYrWaT_JUK>Ty-9B6|E6NX6HO;?1rt# z*VuAxg;d8{t$s*p{n==F0)Da;{wY{MS5vzDi?sw{m|!eygj8Z=6a1DD&Q-Wx3 z^zS37DgTdO)Q6rd$1CeU+QXkqJQgy$(Ub0DMbxgxcxFYQhFYPu*Lk^Y=2NiBZCG+| zn{Ld!#=QAt2s5u+1+z{^-*!Q4uHt}m2k;pkaBFOKR*I6hlVMFfYG37RSjxqOg>jBg zLkm0R>I1q#VT`X<8Zf7G7Y=9b-yeKbjK30#4NpZig%M9t^sg>lc$B=jxOhEw=4KZ+ z`Rc*sj@JCf2&>#1N%w_pJ*k)W2vC3%b}b##V{H7WLI29bb=S$og#HT@h!S2HCkjaFu z^z#u0jmFzIp}$^N54}b6dWd0CbalTdS!mi_YG`?|P`@OdM5P*M`D45x{*5`)=TOu@ zRi&oeL7Y4>)Iy{Y%YN?CQV1cQS{_6# z+sECgmG-E^5r#%v-46Mdt15tyHM<{6sHS$&dp(nO=k=_6deuI&O@@2I`br)_hO(XoVtqbRS@c^Q znf!p_%IX4Pj(y`v=XJsdQG#0~u(PRz;UeOl;!hll_S@w`8bSI>L z944QX%RUy-u4`8dV*TiYj?4kQ%_&;pyZc2mdAc3wqdv@&MOe_evNL=cY?pj%49aSy zTwlHM!2WW`-NuWb(nyZV?5fokqE#h%?uk~-l|Lj(4&hAT!cnmZaLFmLU4J|;F_$12 z_zDRWkV-}MZ_HCO!^1csfegGYkZ>ACPu!`1X&Q+Xb-4EjRqlqvr~yjEGJpU(ZrySQ zVLP}l`Jt8HvCQIkCyRn`Qu;koauNQXq}@>T(S$9;feUjw(WJ7HZ69AEakLbPc@Qj# z>hEAFD+6yI41xMk^~a}y;U~=yL}VR@Lkq$8Ljv*i=}bS87hWDZ##qmth7baAa<4L% zY&$H%9&5guLXJf>VUsJ={Aj!+j!%Z5c4pNFUAi(6OVW3gn ztRRr~+TKIR56zhX#U88TqpY{wm#o=WK}OQ(JC_F48;emBT65_?^~rX}Km1qx`P+fj zXEstq$cSmgWH`qLS?poc{a^C_w=MGlnzqGhG6m!6Bx& zJxVz)r0oOIV<2`t0rByfz8Bcw=HS4UGAI+&(zNIl69FV@# zE=luRKrL}Pc;Z6NmE!bHGGee#cTKmysZ?_4hjj9F3j@FLvBb55p`k}r{a&Aw_h4V+ zw2=N5cim1288(MZiNtJ@ZC|S_DFVg2?TQJ*vQOaE#^%<5R?~Dn5cTFN9Eh~Zub81@ zs2UvTNJzQlNl4xNn?dQ(IXNsLyBG{=hxVoZibN}l^_f` zt3Da*pqOrH109g#ZLS`iY#3pwPZM;d7E#|@&b-8Km0Wf;M#URpMuO*BRjATU7&Q{S zysbJrBrwiQ9Bl_K97`u6E~dswDfK(EP%NI<>Z5CNixzj_>GoGC4ywz#6?Go88&iyJ zS2dwI?e+GJL8ucW{r*V4l}7zi({m+)0!rj%H|w#XJSE{L`uYWhk#@e2QI&|Dm+~Oe zeb2=RS~*%d@l^g_4r!(ka7Z&^g8NFpP5A#{JO+aM+8H?&MX4>(q()pvKavlY(MMYH za*HOtNZA1`=e{1~aHRIv-uzg$kR4rirP!y3&btJwoi`i5*meja(RNTMYv;=gKGHdq z$J>RUmo`pvddn9ISBuQcSnXAGg|Y~Sk|TW< z^|!jYX!y>fmAp=w{LnAP4mvuRky}DW79rsvH>gkdI6fqi=wzk!fYAoyDWjckq|;rg zz7!m}i)AEywKLtYA&L2sb?2jy#Z@T?0KYi>hf_it-rlj1HzsRxqy%p^Ya<9^{Z&^Ch?tO z{hAcL?0IL&lJv&TE4!Hmf0T$MY1s50}2I#I8qacvjF%bU4|4Gj&& zxpiI6TN}J}V}WRd{Gd?!jnX;!yGW$l%O$LKsSogIm?go77U9;JJdZD37iPmplnJL( za_M}FKvetq;GkULslJU8mrK&WprM#m=*rQw{|Oj;u#Ls+Ad`C?r~{zrcxWjq3kQYO z!r3&^)pc$<8Njkvzk6re?%rQhU0sdy0PAYb=Y?5WT|EeocMY!ND3L@R80nNhluGUK zM|YgA*imi=jJwL}3Y!g%`YG+zkDxGa;)zWXX^3uu zROyQ>U6=bc-H57;HDxI$mxiL}Dg~?gS|tPZa(D4)_=dl|DRe#}Ey9r$oQ~~totd7# zZ}qnB)=MiHb1=-?^gG%lEpXY(;FkN8_JQn~vzpCBs)x~<4zCV*U*8k_g6u(;)9dA{ zstxA#WJ6^y4+6{V2&wg!FUnR4b9%#rD|9*RNiHtfaLYE1^jPbp+rxIi#zq`N~${NjX2cdsA^R~R4jCTj16zYJ^D*-L~Hu9dqW-ZMi5K& z4Dah%8RVBQH55XaKQ$5r(8@@FkF^Yn?s`$h-ljm6Zpl|g78H@s2QQ?;dsH_M{m&HZXoPp$oMFRtr4VTw$%f(9T3sancY?Hq& zrEDM0k~bi^9`3;PnofPuNt9rwB!rXx!-27)dXA|BeBq$%dZp zH3xjfoSZ;2X4LIAgpi~;0jSOIa2d^dM3Q2SUO0KPa6SFbb>qc?wFVRmspldW<$5_U z0Igmms93V*H4>_}?wB#Avqc`gm3%ts@}p_+<3BxyOD--h%5}B6oBeM=`k62M8I{4) zaP|DqON>O;ao|I)6A#R!yxSD}RTQ2L)B2spd;RfNf>f6kdBAuMEpKQg#}?nbshgJb zAWmBBlkw_FYc7$s4M1ECcmzZND<(Rz;)g*-l4qiu2PZ1=mqY_iL-Dov~9 z&$A`WPu9xw;W@OWGxLqG4ZX{s&x$m{Ke`s_;C1Xj*)u8R{f0o^fe+EWkzR*Ul|l<^ zGQIvf<+uieThrBaNlRmp@1fAFTig7zM_nBsW~wSGbf3D)ZLz>_;ZDKOKLq?UMR@Ub zyqV54#IP}Vu6AaoFJHC;tO!M|&=S5E2O1O)N2X?k>8`%y_c4qq1*YU(3`UvYwLbDi_Hz9Q0M<5vL&gSQttLI@L3 zkCz&O-QL_-E0SAo1A#Z`ULj6S!mSguDSeI;TPx{V;6s(b6XA-=8R zgrET8*WukdS75F2CrK(?RPu!b>=G-e^fockfvSnT-`W}*UZl3RHqJ2&?~-cW>V=vE zk(c-Jfqa`Wly>DtrfWD&*E)bvTq!9jwW_9#I+`Jq3m?*>Z)`;4RJud37$%nuVGA|U zgAiYI$I2~N?7YdX9C>1draYGk8^6#={kium8|b)LR<=C@I&1MFGumjxtXm6-30Whn zPMt4`Ssbrs-!z5-(!T=+q~BCNqK4Ygt3_#FAOQ?6MheFSrx_Z ze0SUJrf)2ERF{&!=)yJgcnT{t-Qb6P%L7P%SLnPpvn{Gt^vOT--FlVpC@gL#z^zHHO6oJmL3*US!d`NvKiVuW0}Gj;-g5|7)qMn^VV|zPWxv}0{%egr$2yx52P+3ndYHH zuzcvD_75PZ6aR7CcDPkFSF0G$^-Tnt>V6vPxxSXWnS@MC=e|nBn$Xk!xDTI)n3OVO zIdY;2i{7D>;+v3TWpwvak-C8d=&W%KfVI&}X(nmS#P5kF*byNldP`Akpl84*HR)ej z{_Wl4FZe}kcrb6LSALkystHSz1v(dwW3Wk0W7^ehS`JqZ%@E1cdHy&JhU zqWxth`D~Jjuu7PXU=!va*AyyX@cg;UP9y5AUlQWzs77ecYxH?)_1i|Y$hscU1bD(1 z^rD6E$m4V^cP3N%?PbT+ZBn4(4KLUEZUI6kZfvg!Chws4B7B+;+J^L%zKp?_v?jD> zM5SEGb>G^8Y)aA>5i7~l9Un&dQS<(wy4-Zpu#8J>EA&}QZ--k*e9_t9|)5yzq$8xID>dctV{NIs}5H%K2oMc-C@HPmEqH4p-96t^42jpfXFZ)Q(`C{wex z4)NSRp`LERyVyTxtqrSLWDVCt1GzLI@9aZezulci>w}I<7n`c#nZP`=ZSf~1>11Ez zv7!{!uX4RsY7+c|LPXB&fR#7%72EkgDz;k#54P`r=%9Y$wKZRFsMobY>LR_D|64;; z0S)nmY^Lo+ze0wdoQTvL)*I~#yxscxb-b3^$Zhzxh-3ToF@U1BD%w%)6F8C~DXWl{ zM5yu#_U>8JyyaO_n@F!kP+j-#(YyScFi>pe7J5ScpAf?sd7q&KiVP1E|0}oqKgj*D zZ!Z-b9}x}RRdURipR4EIfq^5=9;GN4H))&W8Kp&I4W(tO$XpkeF36DUwa4oe7FWJc z;K_JI(vmNvbEe}G*sYJTa&qv@_i!m~dRR+n#3X2vDN{zj?&_t82rvcWg)*q+%0iePc z9dMVJiq?~)Ez3XEuw_|ZfUv)kuLon-z?>S#z zKu`vY@2Tr&P(}36M#OUZEfEzgt zYuz~>AES357ORIrkgB_%L8#W-c&$$_x*Z+wQHHDcCKeku1m~?91<3YFauaMu@S}sm zNKpIB@kVy*)U}IByW=B&)Rg$t(Ug#q@4oq|Pu|8d?jZAcZX*|YGI|%% z1lNG(8a;x$yQrr`oAfRE2Vx2i@fX+UsiTf-$D$5`!O?6$X^E^{+KA{TI6mlLl^cfx z6e!~PB@G0#7q)0Xn{;V3L%yyGgD+gk%7$^k;NVWwNi!xLd$xLAAr(fF!i|6CZDNGj znzDdVdc8@c6M$o9T<2=+8_}Kfo;$1&Ud7)mu+KXz;)b{=shR6BryGb`9zhrCp|9?G z*)J1YU|O5UuWuZ@fjvtR`i|=dM2%z7AxvjrogTjJnIb~?5LSK`g0cU5t|Enk)c*zDA#a^zdAt1Xs6w4M2-hQ&TCP*Ic`QPeAzny`X~-` zIvhbdqLQn*eR{M(7)80xgs<#S)6g&jq=xtikrZdl3|lXh{g(Uhswv($W|u*yceLWj z4O!eFQu2u&ULaneJhRAlWWg;Sx?6A@dG{^n4%xg)>snu5AF7C#sjn|hYo{OZwJ2qgJuG22}o5&93tT~og z)TrLAMM?`10sKy66o&XZe*jLx20dxns?VthCdBOiNDuZi2n{x|pIm zmn%g+C0^-!>)X6+FhI<}ov^RpdqY+CX7xMo3KObFq_gH>a#yJyA$9U`3<-kr!AkvN zYu8Ii{CNypqN>JnBU5`yiGbaqa+8s*_LLPezPffiI zq_QSFivUOr@O|A3(r`{{f>2`{_lS_dYN_^IK;_CSW-O*rnxrM^Lmbr7p`o{0HWZ5* z!u31+(%3lMJ`j4%dBSfgp~d4(Vx5KN48=gAmhp z`t6r39S`*%?*heIV%UpezWSMo^sVwOf${$@Uv`gnla>BqctuKI1h?HEe`V_a)GBb&WGY1n6O+Gw^tUsr!kqrBtN%}bFrXX8KS5ToW(%Tpcu zL~nhJ6A~(li!+HI^ini3rT9tVqZ-0FWCuQPk!(gVx3*BMEVe2C%r_qvEHqL9ZtI)o z{U}&=rQpMh!0}taPigycoSJG-`M{@HgmDPSOVwS( zsaU06A-%<%CjpdVr99Ff=FEAcQc>Heoy(i7?@<4Tt}hRSvTfTR`<6XqFBGyRTh^h3 z%951q28HbV&R9eCC)pX1rG&BXj4k^XG4?g<*crdWulrX?(+ZM$~Tl@pU zw}ys>3y$FrPj7WU_T}_HdMRksJ=cS{@?pQ|Iegys@oBP?VC!yKgN4Hz?;i1uz#)<{ z9XyPxb?Tlxllp1*Zs)>zeZ7G)H`shnOyc^*#emd2SGh;!DE?s_8?&fW3#IH0r!wN! zfa(X7p9Q#Kt_s6a_m5$I2ao8^8ug|>K9>am95&h1XOjJ!IW3G7xEKBs6B&0Ia03qW zznB~fSViI<_J@lKk}l?uwPDAi58r@T#_$f-*j|yh25h!<3aiF(Jk+Gj8nUfE4T={B z3;2>#+^xM6?5^qX- z+hWEq`g0Ge7&q|5rp>#&wsIkfF&S02hCB>^eU?#n#WQnZDdNulwpM7Tg z76}tcm4)3Y6yNm0<`yg5us0DyBRlxDAcy@`HRik`v$|bj-RQp%q~|XL=@}c<_#gWA z_imvUw9Wri64{cu$`Kxcy;y4bUa6h!qJc2y!v>q~16r$pos@1&U$E5q8f@$(j|CZK-+qT*=_bb*_rRNiQU8MXn}v8pPaB>>sOl>5YXu@8M@>f+9C!-kI&x@Xz;z=4G z{h*|g2MmTnY!KrpbX)|s3N%J$O<#U1yN{i``3!A{XndlZybVljjd4AppIf5>jlFL! zquQctyfv)Z!dxXw7)npld(RutFewEsKg?ryJku2qhp*xp;4ct%v*H=L_TS@B4-MYn z#JF$Y&Mlf3pZE7i3z-6$6+`vBW%R9O%U#8#p(o5ESrptU*07NVvQr&an>N^(Pp?~^ z<55@xx05zmZki4lFcw$eKYbwt$IYJ1b>5FBnfuBvO%1&`kE2AdQl5M57*+N?(1X(; zhZLO3$jv+l?FT6?Kk2*)+&SLQFlZ|i_A!Bo6Jo-{!-cq{-B--xhZHd4zAy0*1Er1U z?}TJNmN1p|5p|V~J*Pryr5nv0EK!Kmm-rixD+6>ojpQ0@?hn_1)3u->MIi-fYSxW) z@NTTd;2nA3tQHl1nsH+09C`BILZyi;N@VdkNLGzzb8SmAr53cX&`NM^ew6q#<~(}A zv4I{zY)TC{CDs?XxNtKgnpMD>`(-dXSNGFc<03*Yzic^w;Z_kmA3Zii^gP;Y2q$1* zkY+ZzSl6Y=?lu1T5kY0ugw@5oqH$eHL}^S$yV=qfucw}LV5jN@?%f&s0dUafhPb-06mF`l>6ff6o8YV)+R~_)%v7;r2OQenZ7H@ zuhppq%yBkHSdS7`SvTV=4FmI^{5zYpLqy1RN}$>7v>0j-xgrol%T>Kdp%(D@=fxM0 zKt|bn*VG<94_)n>gJI7wNrn!tA?drri!(l*G6~=~BQRRQ={Tl1g0XJF!6-dAU=jj- zE@orv8kH)muP|jl*RztI`St#pe{WONjoD-VRpDMVeMQw*nbhy873EhFUm$B}IkB(x zC0!^S%|2bZu}>GzgRAA03Vt7>xSaj&17B{PU{vcv<^sc`rtCbF4Y?}R)B?57 z$ztiB4rzow#$ZlZo%%>GFXVzQ%T2$++JaBZ%A7;onO}g_1^eoc(i2dwTP4NCxpSda zT5902cOZUlFKUP?9(r=KE&1wszhrXRy+x`V4SKp;YK^lUd^^#6gGW7G&=BmBBy-RO z&Gr4PITHe#&-~D5pA&^LuBq}ktF#Xu$Go2NJEXL=vay-U_HQ5!sKP@+Stz)srVO@) zkFkstoPJzL+0gx0uk1HF_V?^vHEH}Tr!%NSJ^XLy*(cqMzL;?xGN|fHE=>_~v?y8z zcoxug&MI?Q06NvMBPZ^T^JUXPufSfzh=XbUk%R|(w@Gwc^h;C!AK&~LD3lb=*K>zM zAFlGI$c1K#ZkE;NmBcm>%A_-84AnTq7_1y*WjQq97Q>-s&Wl7$X{dS5Z6{|8n%(nf z?~DEh^*basZlttFaU85=^+GZ5gPj;lBtvI?>2dPuIiWPF8@ zCI~Brs!vEKb#qlBfwg}7MjS1bMbuvv=B+q`90@9=<<(S%;KHJkXRdnuwHN8*Dx3#D zU2LZYAJtUE0)Ux#RXavtOrdLg_j1R*NK7F%>>lW_{b)7av5nWNfo!JEwJQdqN}+Ig z6ct(e#BWY|obe_H?a%hL*=ciGBLu<{G4#Rl&1&VJY>_hwnr13*EI3 z3d?gl6e5j*MB16_1+IV*HK@gSBtZu0a5bWK$a^->_%5>&>@a+4FTAwNk8;&k8s^_} zPq0QwI6@i}gE`r)3FE39Q1(A-w?dDv3mJa>&~PX4=WTzi+3a?;2J7ShA}||te)%k1 zjaEMV!DnHo6{G>dq5Bz1v2bqmt|fdPV&cN+dj)l}t`=&03Zxkz{ldMqH`G5b2tvcM z72SHx-wA_BnUAbUZgJHB;PZX>*eCp07O#)taUun#BwR zz^S%al*#W&F$J7>_`xPExfS<_K{EpD72A3skUNLd9s3vD&NE0V`rOzGXy-Ep4R1$= zUC+8Ayj)8rd|T#$jL%568_!W6tv8jQN~w>%U+&@VbB?wi!a1oQ9)C=%eiOGXHlq1) zpA5SX5Hqe}Z+tALJm~hkFT2ACIBsR7ruN9b#XQaDI85|k@LIVQ%W%W&{4r(9IZVq^MowOH$u*?;pu$aWd+Apa$1|Sz-x{XVc43c;-31}wXM{Qvg#`rIVEU85Ngew zI93AF7cfkG3|ZQuI`reB8MLa_GxaG`3_GlOis`ptzNN6`hi+ThsxaQ%h4D7;oYp-u zC0ky@Kl{j@rGry9WwkHaleY5bcmtkyHGK?roxbhS1Q^ggutt3OzGZ0F!}U1mYI?e1 zwoX%w?YpO7Q_pN_7+y1a#TWg+*U$2v~L7-PRTGdG}|r233X>D`s5>* z@_TGa0&Wh+c!r1F%C*&F=gq>{f}x|PvHGt%QAGIejCpJ{0$k|bq^mZMVWgA!BQ@b4 z+RhNx*y!F%;BIHwunhg0h4fJS@|XAW)cZROc?u8Wa!UOq?@7w#i;C1ut4LoOfX`4b z_tLZnE)_PdSOhMT!gkGJG(=8Uj_LoL(S;KZy)^#1l|-RewO}<=5hwawUq+FGQU# zTBGZ>{yGhP)Mx_ufX&_J?or+G;;%AFQTk!Qn1`Ab(<0CIXe~dq=305{^CLOU^Fvv3BC=a|lk;Rv7d9ZT($P|JHiE!~st=RJ^|E#c%!ZAAgC|Cz1@p zu5jMJH)@*fD!5V}w{zm9ilY9(KQ>ytyGDS~%3@Palyxv{iM4*Km?d>>U-;IurI4Bo z*9}KU1qBBPw1<6q<_96Fr2#-Q)ZFL_!6e>Sl*WDu1x>&u81BK6734%GQ5lvsrk@tL z`@dYFS+iB~4nF;kk9p5KqtZ0&W?@PCZ7r$DZsvk7QFf7hqVHIslI?s5Ubv;Y3th+G{-2rhTjMCkXB(mzH%5QF>x z*qg7*XRC(Cafwr)NIpGbNraOH*x3Gpb?pGc1uH@h)Prb@2i~)L-h^s?Y#_2@^!yYr z+8_dNDU`eUT9-KDB^6qgTIo@VeQrGL`TmG$k{v*Rtm|&LxBW$wMSdtwxa`{ZVZ>;7 z3;uHfom3FE_4Aw|jU2m%Z33agu>u~#|Jy6hzyBF=X|pL{_>VXAkM9jkTFL+N$IDyX z(E9J6`!7{H+lM@n68%1obWsCp+^Y?=1%i{)KYniW=|2z5|54)O@f+^{ zTD0cZRzm-@X!ZZKXe)82swk1S#YqL~0dOcHZ8=RzBPM= za-~w2N1))-6Gd;!PouPIoJtGn(^^w=ukspMIac$V#D%8}42^-5ciT=afBExR-y++h zz{up;Cf^e~6JY+L7NB+}CV%wUNl8d=0G=Pp%Yx?;L`PG-6@VV*Us_!39z#i4(ooPP zAtl8+CMPAecG}*^_aXN{*W_yNiG7DERKM^Z=kx(bF#0?iAeo=%Br-ES??VFLlIhc<;&MWG69W*1aD%~{j-6z{Yfw%dNY(ee zuO}_gJ}rVxF>X@cE*G$$)O*IZI?7sAvPc_KU4a=xbkB*A%q&qg3h0)AtEG+VXpDg9J z2qL}m6>V+Px3=1mw?2Q1iJf!dN4X(7$x{D%6oh*JxTC+C#)!e8xZIL_nu2A(HSIIg z07CBJ!ORo|1nkR!t{bju+5KhP15^w#QMV_*>B<)j3%F+IcUnYfUnRHynt=Joa!1TP z1A5pTi`KEq9~K7Juf{FQAI*if8k=>8K<^jb;w3B0+ONN;xMDz$6tcXf^HJ|Jj|e~2 zAt8p<0**U>5RIIl9o^QVeJKwlMiIQKgH&?Dpg zgl~JHC#{TibSzLzie97#Kn8;W#}Fsg%&yfVV8@g8?>4d|KT;~v;nljSA36$5+HWN# zC$o3S=-lQ1%l|J&{8!0*%U_&qKS<~xO`Hqv9`~jS0lR=m$&*E+AZ%EbcI>|^H)!+r zuY#U0Btw;!w3Xlbr>yi(U3T`@{KD*Ax`W@2|9_f)zI;}k1PYq0E#m_lLm61i?FA8r z-hvquHt4cA^~vb|`Zr!Y`uBPBZ`LVteW+g`j0HV5_|Mz`xafe>8Jd$wtH8O+(5gM>+?Qd2Ii zmBNeeF-k45*LOX7!4!6D&xIu=r5}d$wV{LWduxgv9}FeRz3>un`b$J#gVJ5s$=|+M zF>G_j!Oq5qZ~N+@E(9v-p2+*#RFOvhYOdh)#2g<}^tsgT53=3Ao-gEt?-$P!9VYij zko!MOXFl-Ab4}Wo3Z!UW$p7jTAR21?h%A!$rkzc}O_|ojYno)&7z}#q)uUgdm}L6! zddD>ixTEoWy3AI8|ev3LF@)<#bab?o#H4Ap5P zE^KYL8bgSPM+WiU1Y(2+26kw2(7RhZ9?|1qQPG`mUA!|gz2kTtae)}Pr{#En{nb>f z8^|GPU5a=Z?V0St#NHm<*3q$s?_{FX)bo(y&@zsK`Y!ihZwk(>n!&%`l^vhXbtaS* z;5&s5K-?1havvQ;zwXb@`x+H2#5BZb7qV;;@THJ0t!GTY_5z=mKOJ#-psFtM_l_S_ ze6_n#Yu{0y5bc^mlRv8KdmRK!xy!;nL3W}izl3Fj3+n|C zm-lRBTQ7gG6JvTF(XVqdOD`E17{K{nwdZ~3_jFv!YVbZ(Vea}NILa;Y% zSVM$Fk&Z9%w*K;>*WH&Y&KTPJa8V_)5~nb4dU)-dQ(TEyotZbX-zF-r?LxiS&+5^m z6z?$z^b-|^{UJ((3hgWOo+I1$lEb$blL{z53TNH8(6t8ic16Ug(0~x}vDnh(Kzhy0 z%F3%N6RxVHfZV%H8G`d3I6OX1EOIQY={_GfIufW?A)BY#Di?yjnnkd)#P%-bpZt|| zn9-m$wqR;+EY!PKK&P8?Vc|oDQqqJa`FLO)^ebrXqxg4}9=)&6XzCh%t zw}b8#H0Bn4db$ITbRO(#b%HEM-lU*isTWpVzSL>|z}aD8#e@h$vGKp$R{v@YUO;0g zE<^pFjluI*WAKa)Y5ZNH|7_Nqx8e41*t#;|sDuCWj?4aqFbGt`zL)Y!Wdl7g704&6 zYbdRVh;Uo-`=c=i_of^N*z*f<8^ac=~Pv<4F|T9kFk1fCurAM^FfgD%9^ z?q5-gnU3 z-2676G*#$4$x-{~>er0pA0;cL;ZSLGUOqMmhjqfe}y8YQ? zQxAX2$z2`UBvHrDep1pp0*?ZOe-;_`<7Rv`C};TF>W;lGS1Mk{`1u}3fQd-M?>4+8?YuYX|3aJ|alZ_>Lweoxe>j>JX5mj0WBQyQ0tXqJo9YVJ zcQ%8t(t5?le_8iDwAoPAV|+~)epkVA5MS|@tC&I*>Z$-OL;ss0hjU-KZ)>04Z@bw> zl@WMAs%G)f^p}<$mlVW1qtf`OZFcsZy~TFoFNbqWOF0exnCjM_7#jDMh6dI>IglG@ z8+EqX`z}2_oglGgA)m${c3notUdU{n()0XCC-4XBb%vb9E+<)-NH8jNZIpjdU{&U@ z^TA$|y!;NLHH5fql**H#*5xO;qPyVT>wIxUH)&U5JBjxSDk?_Z0kBX#t{aFx*0zF- zw(lRh9y-|Ae3ws2Ei1fWBN^x28*08n$?n$V?_Wrp$DG&@uw8Hblqu;r^0KC~vR1g7 zOe1YXfr)O6Znz74evew-dbu?O7}1~9tRzr+6-HrRtC&p{#hGT9W=!I?yEzpe;FiKz zeG1a}K0XDc*48v+&*{&{DB!r~jL4Qn1>D8gH*86V{%Wz~#p?5aVZ1flo=F}b zCi43U=*Y&GJMCXrg+Q-=qk@s6=FNg$oBT$wIf|=I2~D5BVF5ipj}E4}7p{wFczShHCUluiBGI z{elbXZ6mup$RX{hM~kG+kpWhXq=R(f!M;6jKKd|Use2mP5$eg~%B^rn;+4R4W;MS>$AVc=Y7&w5}ch? z@R2S3@I5)`w{PFr`Wzr7H0Hduhhw8!%!F}T%P0cr>PLLAyA`n_U5Bn#LpM*Z1qE1p z-3wsMH6{=?ZAK*}C8)=M<~wbK28&aLvL#v z215K1jmzO-esjR2GCsT|dA3YkOnzC|^payu@p#ep)Xbckk^RaQs+<8`fhQ^R=V2Zr zV)aY~lu~5ZpyqyU0|P^yCw$`E2NUUW82D3jCnp3VK!Nyz<~tC-((1$`(lJ>TM*EYN(isuhE6LU<1S zHx>V%PrWY;Y`r)Qh@X$#4_7MxzVUqA)5Z58QxF!o=;{acAC^DqFMvW#;dlaYlVaqz zy2-3(-f^Lsi1tTfl}7J*ZHng7wkwD%lt$RG^UhC!CZyr(#)e9x2u>0J{@O~9@S?_+{^ThAZbyK6uVq-Nu z-$B6Bt@h_Gi}!DtgNxj+n_rXxqY>;mNHHOTTc#?{FJsXj1kTnm2^+5TN@rtJX${VY z`RS=yDw4-vore@ozCP?&ix9nwBUZ>hOxV=n55}TAV`5sF)&^6x#u{6oP(n1pshNSX zF_ET>8={&<9%C%68>8tX4SeKCe-6WM<=ZCy1xj zq%unm#_C;P7(F^lY`DO_-XhrDZ-3aPhJnW~41au3^0{vEUH-ljw}j|DGF7y6s@7g+ z1Kpk8%MSuCXJw8)3WOe!NjN8TMAGvbiP?>iOhq!%KzQ+#H>^0fw(1U*Dhcl2uG(P~ z<&bimaT*;)ibu#So`cY%x_@0?nyj#zWtl3-axUYMl{U*AcX26Lh-8Ryl^O~R{;?FT zZhx+$NryCzHJBCEcFo;Ju%9|rJ+LJW)(mB#~zip1of z|EcMi1lfmRS8kH#Cb{r@>Z>Hr_U3&b&i8VnX!h|L(*6du`Cw>=Gc6pJm-E*nZ!uDE zx#O#}9_IwkDNtFp64$aBSTN>&G+Fz+_bBRgzcPvr`r7V{oUrQ+zYE{l^`3G{u}9g~ z*Uu6x`uq0h-|@DPTPYa8TiUtMqq3WdrotwT5o+in56u(VhWeS2+|&qcbo8Rq5x_>& zc6L6*+=;p4BMZR+^PRe4zM-SMyYs5g&tx55he?i>u#Rj?zl|=OpPnWGDZIB|(S*s^Q}A2E4jm|u zySln&+u9nR+_+74qfj_n6^c{DKdpdy?#_i38!|R^upvr;KyN`f3=6DaRT1GaLC12E zwt$}lRE}@+$Wtl$tYB6)u6})w@G*Vbw!W{ixJU1hE%NLy41Y6Nn5lf>@z+Gx) zb~-v@jGdB`zJ4n6hQ`KaBJ18e^R`TWrS(0@Fv zv}uI=@T$rigLj#ew=peUUu}tI0TS{l%ir?&KQJo7;wz%M_0r|MBm&D^MYlo-E590x z9D1hR^U3d{@QRyD39j zMAGpv%s=FBPyG0?p%Tkw4(93=E8~rRCn_mvdA<4JOqaw*S7H2X92~J+2M?|#-8_X7 z(Ejv}*7zQcw<$P{9JA)^r!{JcT)zz6Yf4-tm{}k_;`UMah?S{qufzvMK){|f@Q2qy zGl1)I!@$rGH0*j~kU0C2|I~XzNLVlp#|m1PHkqB3XM8>HL853Opa*x|8rP7Ll5)gq zA}+C*Vxh}4K-9y>=$~|VlQQxiO_dM`K7f9vV4}Z<7>Zrs;NGX^{sPX$jJ}*pC;2)Q zhCic{Snreo@?^b^>fri({QOf_f29&OpR9MEV8Eg)wjpbdqiYr~rIrBXsiJ43r=}uB zUj}ATl{}E<2HrnjbXiPe&$}-71IF%|D^D2iCi7?dCVd{bOny&@PR<=i_X1EQE8xrT zQ*X8#QLvQq{)Pzw=IrFYt1CtJB_qZ+7|QuoP-NQNsM&LEop?4z~6^DKrs#S@cFMDfubY!?JFZ7gpcy3R)G!8nctkoP=8(683STKFpicm z!HBxMkx2Wyp+Oo*w+1ic7Mzl%19C!hKn+SQtXuF5<*G0aM@zzoAq01DQ!KgtLj=mE z&e6{X3U?J2#dws{9NpO2w?Sow!@}25Q{q!9pma!pFI@Z@)?Y zds7T1KF(J)zile@1t0Cna%ITlg2WPVS^={nAX$l%H#RoCvvvN{LIe?O{!t~5WLPc4 zO4Gc>|5h&m*En6%TPtj*l(}Rze2l0;5wU1MW(5c^% zF9Nr}O9|iFd&2_3y;eb~a$VKp+d!7(N>ZQQ;Kumu&iN}}s;>A=iw5rb#k8ITj1bt< z9a#DAKoI3()bRMA3X<)+KKzGkEuU|k;{sjXcy%lqF`b$x$ehHx0&Pm zhm!fV={?dxK&>K0%VdGgz{@HJG9`S{6W+79vO553UT%HA^*6Tq53Bj~=`SfH zIO%b>R|Yp)HPDjqaj4RPe+|XKVzZ)4wEd|q{%{q))SY3fz*7(xPd{*%_>ZLrNh$ZL z|Ehax=Qp}wi9hTf;Wt>Rt+P8m>K=jEnZaTxcIHkAW^S%Hre4HcT|RVHMcG(%Zf`j_ z6NJoya%^c+GbyNO_SqB_LS$YA`W6koU82WdI;vva6JPkNjzKC`GC2v9YN3s1OQ(1v zH0FL!!Wu1Jx`#0)&Dha2eQVv$?HF`ni>F1uCpnxRc0i`-s&2{j5F#AoLW^v<7Klx~ zOY3g?Snr2Rz(*44PBD*bWjMl|84NW7X-a^>6U6ueofirI3lF2SKEG|4>tJp^lhYTz zs^3CFiwdXJhatfBUyDoh#V=BsV+*uchrf=pEBGNL@LmtOE3W&zA3oQ+vHK@c8%5_z}B zerEw>V~>v|rimaP9*mOy4chW(SlV!OCJBPxe^nT-y*(T*c3=LyEaFSjpu#5kG`IUjh^zkNC#vMX6fKYl=$9pIKI z`KXNw{uEK5IP+d(Mh<=-%VS;~Wa6KkEcRpeS zBaBaTzoso~6JmK6Ny>dB_FZma zH|&M70gMPzPD<5sOUz_Gmf|8=!tFGE=jO=fH;Q;>1OYyGEN5Q zzN`-N^0)tP+$BmIzC^tdKIQ zD{J@aY=Mw?ee=A5uv}W>*@;&G)z(t*MN1{C0ng1Z@H3-`A-6>;EEn-ti%Jzn=@ z*lVyP>`KvSG!cNe14kybY&-bb-H|*QSPjnhdd0t48<}rUK1MQo%+Z~iySJvP;fSD1Hwe#d}E}$ z!pWkEfX*2j8MwSGF>)>v5D;7_dd=>gTwYF@UXhf}Of54R!G2|Gdg{so@5LCYe{B&S zM%&OZoYVX%t<9h@KJtX2(i?m3E+w_g#9&7Vfxdz@5Z*BdGf600B+YkO&pd$j_pqOS zc*7m=>4^hD?sJz(ID~YaY29B>PMUgaKOb?a%#!&Znc{`cbuTDAY=;33+Z_RpN!#-4 zr>Dl#i|PsIMUu|1)c#N#pAcCu1C<(U4bKq>JdBAQy0y}O{`j7!5d^m^=W}5EhmVl+ z!*3$BIJiQkuEWHAY+IdEn!MS}d(MD!;P6zb z(g)O$ElJnskyIxx z2V$l2opKdIgnbFTH+kQ_%kYALb$FIldmy;Q_D3B7!B|ffJT$>rK^F0_RkTH!VmPa` z&)B)vHGj&4eO2Z%FbFegrGf&B`;jKdro$TvmfzOhd6x;g#XABOkwKkHUXzDfTl3*f zzkE3Xs4_=Sp7aqnslw}BfxD=XN*}46py5I+fhm$hUgCTl_7ez^BvS*UyDgUaRuGav za95Va+d3!GC@P?yM|E^|dVds+)V7HTdq5O0LuFZATtT}nI1Wypl2&Xjff6`J^L3?F zYX6HBVCba*@S3=@Z?mURQ|=`X5j@t0ulL*04?0>e#L@#%TeH2lxzO||Y7dI_?Ttuo zbeFp`5U(fF--67ToH^=yr|K^G^Tn}BeoW5g${Vrg!df1!hBvZd65>R*9n3)?M!OYE zKx!GWM34Nqlz0m1%=Z09f7c5TVSINt<|4hL2_IckS#7rO+R*eeGd0!axcaF(Z&jlG zpMe^rlph|uyNur6D%-um#JIZ8KHp|B`!EO_cf8l*{fE!+W&eu#3i4r?4FJ*+9lx2< zuMpnx?Sz2)@m~{l;CiTIXe8G|uw55B^a{s2F%$I6cfc3ayD^ zb04_XE1D*2W^?h*p$y-Hys&i;CZeVh?iph5#qg z#9);L9^#h{s`T7PWhy(96a}jkeQl_I0}0(*P_kAp8Z2(>0=yUogaNTSd``y3@(Ukz zC+6m2J*I?~ng-|vtbT|x-HA2wg4gd@T5;CO*6f1fty)A4yb+f@J&!!Mr>Y21Rvnj@ zmjPRJ1^BINyCP7>k;4b3b~fdY+~ha?RR|9Gv#uS3jl%l^J-a@(N3ANAM& z$|3%z+~sn0!PC&4GKTb?RKzY?m$ufnK4Y_?!ppE^38ecrBrqwyXtkt!2tdN31UbL=)@Ar|0?RewNv?kXZ4BW8e1zJLgqodp*(Q z?5dk2Gg?ky{3Y5qEmR{ttay{}-KDZ&cO;dZRHD{M$C=@d6rd$ZYl<++N=N%rXH}JR znx-bIr-yGFys^#cFb%vEOXg}idkPwFb>CXm@7L}?Ei8n%E|)p7{ijp|-D;}a{)#Cn zsTPeSbUdpfJkkLzNYUswcO4&>U*Y;Pdevr+_Yq$IL3isVeHZ1|wRXjni>16L4(!@z z@)xs{lRzMelK-vM*=9;Or}mC5-XxG%xJCcz1Ooo?%FVll263gMMNgOzqXQZOkUPkq z6r<Ydz?_%NRWqvFL-A zdpuWc=Ov#(`INHr&F(@_$ZEw8<*@yIGAU^ZvVjR_fiLas^!0EgaAu^BEG0vN!JIXl zY~1LVglJ!iNh(ak3pq=1z8Zdost-J|=~}6@2cGZP2uMzBIxg=wF(FOWm}h@`;-1i>-71GnL`xL7cMB--cRANx?Ta<|!sV24yvUa7 z=0(f=B#`$|T^P~*3!&OL!aZ0u>0bqSnMn_WkOH25>7PnUwPD=?AKd|LC` zPs3)Uq&QhvSnMUs%8u1P2&b-V#xld9feLBY>OWnsjg!&N^;6NH6SSKuP-cm~I(KcVSnP5Se=aNnb_%x=^auJuA6M90w!Bhm` zagb^=G=2gA^xf^PxVibcdfJxciIhLMU;kAK*?vUVcI3LKw3c<$UtJ_d1B4AqaH0e@QTgXjU|$94P!_YXCikMi3sQY zserW$6Wfbz2E;s&j%v&*FQj_aNp|E| zdsEqFe)k+Bqy5%>((HmKc%+Y5aYiCyPGQl~5@fbKrEi?2`r6iJVs=3>omB=-{o`eh zJ8?H9y%6R(@DwR97EAA2w0lLT!vTr~wA7`YFsJOD+zfEkqbxzTNz#6&q~f1SoCyP> zkYIaSjH{=W8W(z^llBrQJv3jX59IhPO32;Ktu_RN0SLP7Um`vVmew|&8kBB?Qi^Y` zp@x7VemiuC4tvQ`E^}P@LsS7Mtz zM%=yA{SSPjyP+pL#))0RwD8Udtlelq>c$3-IoR{Y0u_jxTh-WA>>{q`D3wI4`d(1B zysXkZK!bS_BWp^h+20N@jxAH+%{VUr;-3QxR)ZVY$z&2O{#GP(&vCYKV`sL-u^F!5 zZ=TaKvjK5(y3^a<^x-wi&w05%Jw3BiO~oGtj7iA>C~>tjifKPX+2>W{71m~sY4~$| zd(Nt>4AgH0C7<@*sC@ePtX7?@`DaD-=QyR0=9g>Zwl)zkBAdF9$iw%M4X;pcOKPDk zr?!AkvA7ZSyA<~TYAgz%#(?&=%?a0>Q|bu7WsRR0{8!ZDzrE}KBH?9S1@*8kSdSkLMtM0&HjT zk4tNJ{DpSb%K%#koa!lSwgh}RdgxaF!!z zSt%u!6jTwy+?54JwuYGi2uDarellj~I-)-s(#YrL$}f=GgcoLin{7M;X-`bRA)w3F zTiEDvj;{@|Xc&6`p0+}sccHb<;b+dsuC44j);JS8W0N*UV~AEY={6P<@+G)-Y}5*hlfeNf+`gS z$8mP;5VX!TNci+!RCZ&HnrI0Y0ffKP-Ay|&b5-c}LU#x&kLkSc6Vz7e9J1!=9aw@o+mA23@WS%fz~#FfK-`;>j7F?H6L;pqMk&hfTd;u zm&L}#QWOY7i-pC5>6xU}%};{eL1#115|`VF$c&yktq+?aJ8}q5+k7W!F}bM^;V^A% z?$vD*Co%|bbIRsOEv54wYq*iutnCN>vNOSq_JB(};TI@P>yLVM8I4|St~(CibwCZq z{Hnp}D8R7ra2#;b3rf5F)`K7Z`oD-d0qisQ;{P;EN#>?cg`1h-APSG}2-e6dT#hH@zu3e1zD z`Odj*aO9t1|F|&mmR>Xw(cvNMPVdi#h-OXejCct~7C1g5xwwS6Z1+duiP^A-%l^4n ze6GvdK*SGPY|nFL=$D=J83?oCNQ?s8fux^&<;K6X2l}2xybt41^kd+)Ji)_oD`sB5 z;Dewy*x)dW4qDX4wo=DsD`|8%XHkTCz;^G8n##skXYR;^#j(#iC1qtJ9VM-wZX7`! zmpBk7ucQ7NA|mYH#e)wui_tb)9r?8sftc{davTWJC;H5nX<1p1xzJ+43h#w{t}#0w z2X5J;$_fJ)w;e-dFt@K9Y# z1Wy7!Xt^=WmTSj3CW3~-UDFhjVD~9rj|sQd_>GsZ+Gqy-sw#RUj5|yCH{@3fy3I$^ zDDum|{ZdIc^&eW{e}EQ%%Mt;5)5)0A7qLH75xnbap$yVg9o9rwHh+FiyDfExWyIi$ z?Z8#aAyWTjV5I1&<^;aA31KLh1jIRVjMt$m90XDNbP>{S@35yB{&2)9-rWh?%^Mnb zL8wA?(aArVETKGLbrmb?X-S*s&%7YUcm?7K8mH3f=mGs8LQr$CCLC|gDuGUmixW5> z8Jgvt&Ugg~@+e-o*5V_;KNcKj(}?Aoqjfj!KZ4{Qz5&g;>mA)04i2L(rV2t%hR8AI z8vY=`P}DHU0JkPn!Es(Zv_Bt`w4AN7)(~4~MS^@}xxRBU<26z#W=48@?p(*m^@j|| z->(QAWbVnzmcOEsa9T$L`q|!5?GKO?N49$Eig1`LUP`=@89KkFbRuU?^^Pne0JJ$# zV)6t?aXFlghyaHINPyC-%ZEJrhmQ?Ag<2A2_8NZB+i%1n7_uW*Q6-^R;DU_xQR7qi zyZlLm7+Jql_%_|btQsP~Pz_)pMuHQXv6#gP5aLqCV?z8D$8=u6SPa&}&A-JOVitgR zxSC|BSQ*fEsZNNC%4LxmO?C$N#h& z*WGRhCPJ@86g>Hx7RV<5S89n)5cWm&w8mzT)cjQ#^KLx~dg z0_Iy)nmNI>b%|f`l>X52Sd~h~HiL@Cmc~2~9Eb}IyQb`R;2qd!OMJ@_q&)b^ZkljM zRdsE4w&6*HAN8p$Geh>SyX_7#(n0y2DxsSqR)Y9|KKomtexjRWAE*46J_{D~<}7~B zdR(jmLNv^`a_9%%WMrN#?dO)JTq^AaS-jGT*4?X9A7>*z?F+s7(ZNMXa8y=-AO_k_ z)5d2BPwdo{FAo=d3HJ_9>bK_S*WXfC5g;t1yoJ)vHiNNY(>^`@SE5xrWRcIwV- z*REBrUq=ZC z#d5H*b#Mi8SclFsyU4l?_puI3}3JGGyUF@8i2q;-(hEwqPaBc>=(R#p>W=*$;-zEZ$5$HE#lWJ1+larJH zS3}5EPX9JG@Tk!3f|UmPp#80^TP={lT;%GG0;iLdfoGuf_dU2CPDT(G~#DTFhykGOS=fEY-HJaFZ6Z zNR8QO^P)H2gol z-aD$vb!i`VD;7iqK}7{ck)l$9g_B81Qp0*MHy5dj6HLli|sx^x1B zjz|eTp(XT|kWfPjNxp}3Lxu(_ z@MDb1l`PWtWJ9$jNXF?Mf9<o@-S$z5?-Pb=&)KVMq3zne9CI!kl}mS&UIX>g9>?OZ*y=2SaWQEVgflr!O` z>iQ$Ies^I+t%<$Cs=p&cI;K7Hyt-!<0c_p9@~2g|8oE z98>)6gZbi+r(~ltb+%{8*(cRb+PCYu9GQD(|7}YV_WNeorFZXdcA=PW9MXy%GYu+P z=T7P}QO58#j?pPS0-K6yZ2bX)%t~Tk*03<*6znNZMuxf69qll6zpO5;ogpD1sH=mE z2^NGiAPNsE@k7bZ(7<2wno;{e!$d%op$YPAWDzv^ca?bmvcnaay4Z)pg39(}P z^`HzqZM}5|(}G0Wf5J#`Zw;mMJ~#PHN@nquf2M3V5vJ{&*a?PK3#DN#KMB^Gk4)-R*3vXd;aT|XPifK z7M}3S+nZUf01CE;v((BWh&Gkk_#H_8OO`dIzD`R_R7-y!}zNq zlF6jU)b#~kx`8H-Dx_fa|Z}tdLd`}-1ugKg784owCPdE3+Dk5%e(e8s!gaI+`sS5DWn&X?F{9j?G6uc{5oxDN@oAibFgJ!K4m{8*EadW74E zdSX4oMVEHSGf1%UcI_F`4Q9fv~+sC$ja}{+s#E;T-g%5Gv zy;0F*r`QU&gTucb5TMk-%vHpX!Q4|%ygP(Xd8c3}d!KLWQRBl$oQxx$&cvb8{26s@ zg;iRdE&=qZqL48Tr%LnJKq|{^M=2UkG=ugSW6Zm|Qk^GbFPXR=2381juMStcs~qz3A5 zY($ldHIlW%l~WzCBa9kykwrYMyr3>&*lV(Oa&_Dl=kLXQKhXD{7jdSejj?+cGv;{G zd!>JOae3x3uct_TW6%fPjfox{U%fY_xo$0Rw@NBI7-*9~4HPQ;rS%xA@XpEN(xmZ) zxzy#}6h(}4$H5f{1Wav9G;v*;oV?u)#=d(d8h>J`P$*&_D(12kR-VrZODVyr1M6(% zy|S|PIQE}z4lt!09Q+_DA)U<)U}tyN249G1k!|ESVJ>^ZfU=s_248vuJ9GWDu~kv{ zWb7j$@l#69p#JbeN#!8R_cr%$<4+$u0=8+khJw@H=93wR68Ve zTPK+51qm|?{`!4Fa3RC#97kq>q(?z)zR0vh*3gGlIDZf`fWL-y^@YKIEww6>Qv)aH zaL9_C8OJaD|93iD2NO`MxxpgeyQwa!b98su zLt8FyXDxmhD>~JG&hqmF-yN~{wT|_ZlSieJmr_`uQ%+?`$v;eU=}Ia-kc3^2(V3ZU z4>A3lX#)FJhawzkxMXurvVZ|&L1n4w>kAEVX5x|SK0&H;3p=ht6e73Ip%j6tL7=VVSvSs_ib@AmTx+&p7eN+{KNdPs0@ zS{^zp@%!hmqYFR2)kifu{irg5b%65Yz8oH(aTvUU(-t9^$6vlhK-b>A*VKC_X&*zE zw}a!i30J9azhU+FqX+-RuHT;p?E0tldH(I2ugzCxd%+T${AQ5H~K84?T0d!hzD-rr%YZ)8^MW7k>iTwh^hvp?rfx+-FHz z-GgzqLg3K-Nc!f*Vz0p{mRCGhxOO9zVx)ooj8v&ggwGGhg)#ak-GQPuqV5lE`qMn2kR|6>FE?7aLa%zfxKVm8wt6sRM&Y<5tV_1K zJaR~DZnGx(wROqD%I33uj7I+2oxjaDKzsX*e>sr%>K|qc9Ki55{;LFJw^8i+we45E zeO6ZDvU$0Xjn~GnPt5A6la~1z&CZ7%94}k3ZvsBkhJs?Eav>dM)b)mJ#&YB>YCTui zOgw?uy*aaA+X?F^LEssjF_Z+_>7IZJXtAi!b2gwLWNG18vZ_BdS#8KmP*9D(9b}5+ zU2%LMt$z!)gW%aLxpZ_Y2);a@H_-p%Gac%eL;zi@7>)Zul0W=2jTV;GhKWpz1_lZ^ zdd;$|Bcfx5X?;RT@Vq|vaA9a!8qT830%rzo8E@-s;0QiJ5D%!t_^xECxL(KbNh#3K zL;kFJB$+eDI4qHnV;QF_8>;>RR`QfPutNjg6@KnvlN=xX%NZRx#hZF#Az6ubw#V9{~a9n(DUG=|czG6Pz zKcGeF@9$qk`vq=8`orIljy*|s_U@2(LVJeL9~HHglfkAEH!Yv%6Qh$}B#xYcSD>t&gQhTJL1pHcC z>@V8vIJ|hQY{K~z6~$0$`5l< ztkTN$l_9thsLZA@dJveWFw`mtDM1*F#f2wT(t??jJ$Ylyy%@eVvIn~|RAnkUI%aUQ zJe0h2ihyFD@W!hbUbL*%C({_}6GI(q7A}L{Q*GI0lCYD-9$uN|f=3qlrtey@6FC`1 zq4i%e2|N9o{qm8Th6Av}Nkz)}WwUGxEw+`l))ISfV4;F?(CK*?x=R*2| z?dxwJqT6}wOi;K+5T1OK3w}4u|KB$$>$tNc-|CSD0j#v-F3>x)5gbAlteio+0F+@a zDKFaZ9We~L2T5=7UrvB{0mCLeA%j?86}swn;Kd#C(=BJV2FvY@X{wQHcPX|*J^boW+is|^EV`1S5jZGkeHK*cjR2xyCa;F z$Vu7j^|W$;TuR+6g0q=i)Rw*@`F(|SrPZ~CA_gUYue0|@dHyxV)h4eU?4h(Y7~lB7 zlNvwvle2SuUw11mWma2{QPo`VzATnmal_4 zDwlmzlv3Qb6Kjd~yU_R}qc^?fQvp=@uFj2c`Cjgaa;+Wb?&?aW{Up6<;*N$TJk2r# z#+_LY`ZcTw@a0?t;l2;kGS*Kc_^20L$Q8L{gHCgFw(yMmaW9@D??&+W*o%c@a8)M?OQl)@q{8L%%?f!)X6X|*V3 zlOu_;T4kQb&k!C!F%_KsW)Ty@EdM%Y3yduVBY4de18P50rz$q3eaQ1 zBIHj+^D`RHRX3+i*OxqaGw3EzNR1;_bj@J6$b59j?O*XL2bxtEIMRGbklO{7}&8X9&qI^;l9SMecCM=?K$Nh=|h!L za_CQ}4S~729r)YbNT=4xqT)Hml%J}JhS4X$=B*8-_Ak{LNv1hPMb|7yU5$)*Jb4CJ z!)--fkG3=tC`RdxL#&b~4);YLUHWTr{ix95*UHPli5w}vl_8B!TOVA!(SZE*ZLbwF znMZCrfd6{!wC^dMkbR5nvmYreshvX zRv4}?Z7yWXJaLxr1dK^r{e*|ntCazKl{9Fsv^YD_%druYZIiH{o@rp@ZpDtrczZ|k zGt>&F6J!ni3f*)x9nPOXU#Zu4Y!Pj@n09Z|E)px;c<|2AjE3|Y)uxOF7~uoYJDj(D z)M4PoOaJf1f7^QTA^=I@=qSk(d}5pIFcjxi<4L_4#B4ppc2-Geud=IQx;L3{>SQRH z+RR?lr89a?;%T%JU~xbhjFm(hCBoU?nbh8e7i=~&2GPNUc)5WEw*TDU4F1)t9W|`l z{D+VKNR?ry0{poc64x3~%+Ce=`x$}u>Kz$c2c0A)cqWG;8waRFrk(hY>4Ef(r?idA zO?rsNsMJM&x48S>mZKYORr(O2lGK}1`iW+)Q=mi--R6`0(AX*jZsSP$XFU#E*e=JV zsw(L+Vp}2x$<7O{nDFwbs;p!Fx)s^=B+TlYD9PhEZNloEo&|-7h`M2aN7jrY}~`<&NL74z-zn)ue37_6 z-F&X>-epJ_c4Da&Z;k2v@uH}NZ!%IvgmQ}jUN;Zi``?#ud2eUOk{;lKNN+#sPqX<+ z3u!~C%`l%=7&OU?4XnxA?ak=5qhlt%GAqCFGr~(lVsc85BLnOw-s`^xh}5VaIZd>J;P9 zK>HI@J=rtHtlxfKIfxl&ta`*7UNkc(2j%=0$>z!L9ZW+!*u641@V2+JBcq*J7bzD0 zGF#{3rMTSKLEQ)XR;niHnT7kva%p-Oytuve?!dq>)=|AQq0R2E44Ai(px)!paPtJc zmUiXBj+;dozKOjO84`}p;P<^Ci2u{bTclq^++Ka5<)a6<2WYFUnt~3GMLuCS`KysX zJ~h1EZ-fY5EPOFz|G?eewTD0F;OksrE9A=1HJ;z6{s;*A5&$X_dwk$Oc**)H%p9X{ zD$&s1Y&vOEcrb?5!6y4wSjaq2)EBcx z=%i*l-s1)5qj&4MJMhcIO#~&&<8Q(zYDY&SIQ!=+;dw{$v}5&-xxV$OXi+`={)7JU z9)Hlqh(%Kq6Z*v592E2&>EM_usX57n>Ti%{XTPrtEnR1t^N%!FPSvl)&4WcVT*om_ zR~yPTm`ebV&P=rvpXPNfEr>4TZT~X=rMKGDnZmpctX;u<(YUt@+&dW}pbzFl+z2Rc ztE?}byo__Ypet{YpexmHwvTa$UR(;B|4mHZ);#U2uf63n4{hSv1hfm^D%p2&Esrt7 z9!;Z|ux_U3CmXSoXslBMiHN3E-EOu5YXc%(n0n}sh-F7W;4L8fuQuhs^v|^TuYDXl zFALCh4bIGbR~Hk-7usC!H?iOne~2&af~n|;6eax}z}%*$MOLVY+hcPPgZdPR!a}w_ zg@#8HK=CtoZbGvi0_Jq;n)&vVuP`f5{veR&;-2-@ZCDUM$RzdT*NmyDxi1WAa#nbf zjx#&bR6M(wcmG(U;Tf~_((kwO3LBIw%wT&7eR;0l%MCloOW94FGmBS}@=c8ka)KXA zCEd>MYG0+)HFo6H#Ex7Bd)fP+tU-kOuk;tbyT0tOXqT|2i@~GSd}ie#P6v0hC;Dz> z-@QvXF(AOLwsg+;)3i-+D$}_6a@UHaUD7yvKI9cOedt!bq~Kk(^+z3EUrtS^bQ*O%&&BT1 zziG4vi;(wn+0L+Kbpc;+XDb~^E>6D5rl1*CaH85=C>sq~-%EwDv#@u`Yf$7G#1*@0 zio_QCY>ekIaEQ@Y%*$?B{7HZF;@gix`vA_Br|!}_jz2)+V^md3FmvHsB0;!I>lfcH zZ)KqBaOW%~CY|$npq5g{H;xV+d%Y(W7MX&_o14*5u#|P)Glh49>IQVY?jfWOw52p; z>3rF^N6_HPdJ$?j%F=Mmv_F%g&Tm!F#O&hc_*EyPL>ueJ=3@KSnhr!9myT833*fj#LNQN(tqc|Id*A4MK(t^;S_O#4My<;=uYGF~Rc)#*51`9Pa zRAo*J){iKAGl{CbEx&9mp-a&aDMf=6!u~Hl7m~9rFB47@Y(sYQN3Ke(`hY!hTm3w9 z?00GX2X^N(Vhjbwl^MfwLCJ09g^HKmao z%Mr}7`u^qB*Y_SU7&I)+fMR6s|3>0HdvWo{K%Oeh&#M+Da>oKuQ3q+Lm4pb&8y&g# z^1;x9x%#^qls9utN%4g;UXh^|{s{w8IX8jPhxw<{oDc3}kf+;!*TrJR1Ezh>NsCZ~ zao$bIF^J(?h)yuO8Sof`xRP+hQgdM#UVT$@RRTMPsc5Z|w__7{{LyNHIImqu=yi|l z|KNN8ZlOIEa48MnWP|>}GyJu$+-)m6(gmNn2<=PbNH0^&BLT%((RRHcrlXfN`zF6u zOdQ&Z1t^fEQo+r7KbuKQ@&l=0CU*p6XC@ELJ zpdndfB!|6ch1I*70^{@ouMNiwIFc~lI4-Q5d#jqV03@9r+f2RfBipYxn|y%(Jfd+v1Vg3e|(PKiIBCwLWcx08GKQ3H8xq00q7 zu9H1{I5#~Vw6H!^%6s5NhiY#{rBhAef^{ytuF97P(9r-*ouq?Yn$)9xmNPoIRMdCv z{NvSh;RYlZ^aKuO*&d5nx?%e{LSBA)QIJQ<;!?3_W&fyT^Dp8-tLuvyMmg(#R1$V7 zS>1oOerYH;oAla+sKI_3c?TjfA$b=yO9Iwtfl9FK;Q$QGvE1?nf^z|6UPgIn6z+4E z4Jma(1nx>W)&m#23{)XQRNoS^2nZhTe{o zDt$v-RL}2~sN$IDNW=PxF4~-LbvXywn%_FzfczzPs6N{i*t5triK)nsOb$E#{)*sw z`pp`qA}bq3XLu=B1WjM-#yYNpq@_2^yu5r7wE>F}$IM@_fJlWY1ho9U9Evliy|UycnC$P{nw7E2i=H3J3`JFNL-02?nIZ zt<$q7#13Kg_ZC*E3m0l{o*HQAFi2K*u-?>lURrloiDQRNB)y*cfbRz;%`EnsCQsoj z>2g@jr}&1q%`u?TDM1`_U~e75sMM5no_`ur@GPEWRJr&Bt9@1I3L7Bp){3v#3o%t4 zvpx`%2IgHBM#ZpU5Y{5>OI{*L)n#+d6`oNmP~1ph8j02YZKS#J#?f;EHF7uoKE3@XP@p9XzZGSR9$#<0i zDWm5Jm2_JcbO6ze#Da5Lm$!h7P;n#)ulH^6Iw8kNgj@GsdYjlq>19U4x!0U>HAf0x ze%-)ze`=wf+s^<%Wfv$D3ttW6WI#ln-a<~7xH;9=5e1ktv{mYmClB`7^zP+rAAxnx z4rzwO2l!N+fcSId;&@(?FMF_f-T0{CbymLkLA>T)N%U;pw1H*|*nwvbJ2!b7_d8Dz zE@Fz?7zW7Biu!hkO};9y@A6MBug5u|d-&4Pimro0dEEOKRi0d5^Wn$Qmc4Etz|JVh zoHO7Y7we9}WkYY50OQBt&erR))QyeZAj_CztdY;JENS7J)y%QC8q{Ef1JeHA;Fo-z0&4)`685Fe~-z3t`o3q)~Lcb9AqZ zL*3drH#0IasMH}iUGpUaaii`#l&@Wz-9P@R^q0IJu&n2oc~K-wu1KDDtyS=-yM>@Q zrS-3;0-q_NyLaL4!MF*s4R~+`l~I2h`GHw5A+7mzhAH2v{`D^__OYvCLqJ*RWBc#2 zP%LM_bliWO7|(_vvKi)y+%!O>DReK*@E}O5Z@n*t2(P2SFdUYPNS|U4pgkeXU$85S zwfp`FH9(0DuM0%VCPO!nV+h;u1UL8iWYd_?WN~eVOzrr5nuMF z24lwbDL9_wo(2a`e*flipO=S3(r?>;-^^?kJ9s$N#xBaJK@h)C2K*9WMNZsZ-M4E{ z%gX01B!1{l`vYzRG#LGkQB&_(Y+K`!6alI(rS3&diXDjg$)IPMT4aKxl#jCpOP4HM zuoV@T4=;fFXPC{+l9MVfQRAz&+p_?Qor!LyAhB4Q@jwL9v?^sCI*`7~$0U!h9m)S- zZ(gePHoJ=1zi+D^BL z3#SBe(ncyxm9XnbsI?D!7SQ#UjE_AfD*HoH;7RXtggiot+6#J9dYi}ML*$Lj%Aa+} zYdMuAH2C2cdroMT>`D3cZ@y-=2lzA1*#-=AywR& zunj7IL!S9~0C|wDTvhXbn#_sc5l^WD5b;!$dEG8iX_kC_&O2gPsp)|u9QphuzA;VA zuQC*)U+EiH+&z)xv zoYlRO@72%rf(`g@G^JS#%3NDhQUPA=@>ZB5t>OtuaX^)d4TF6aza;gu>(Eg-#>(f} zo9kSx;u`kC^ul4 z>rCJ9i7H|Bb=g(=&HR9>%Z^k8t?+d?23D1$nsEc?H%`EDlMBGYCh$v*3BCkKxkm>~ zu>?MqjjX*YMTxODUsv^8`-v_BeJUgF{FvvtQAw1|bx3O;2rB<(VPl^kK(zm;cd*Rk z4Z94AX#ct=RQi;=cpZ{9T@n2E58U734! z58VH#aKT=El}1`BUv@ul#m3Oe$#@Nz7yv+d-^}HKHg&pVs)D#5lMD%OxNund)0ksp zg%-pHftd1A79juZk*hLav*az73of#zL%t}@ zt@}9CzR+iEE_abF?wq6wCiUkSQau;38XJ78x&=9r3xyrS4WWYKoyFV-<#}*zZtAea zHq-LPaN#(nKlqi4H4wWP49(%dtL}z~kqg+`8%KeHv-`oNqcot_pe~%(IT#ajn*dwt z666HZPz}L$2WX5W-J8EB9e97^ge+#{Fy~HCYF%LeG zRZLo3x{v5zd++q_*|huntX`tv^yj$`9B~9eD|X#aAt2U?8~J^-_P0*Mv-iXIAEJj# zlvW~|m~rfRoX-ulSL|uzqHv$)VA7*o&>zeI;q|6Zt;iKLJ4j8JbiDWczrc-)%T}OM z;&{XM54Zs$=+xD#rBWr`SFUW~O8N8Bd`IhPz(OLQx}8Po#=Bm`-wly1)HdiqUn!Oi zQ)e3Yq}P2lQA+y73TEy%8IR!R*ZI*dB=#%XQsEFCmT;Aoom2*sXl3xm2k8eXSYc6J zID!L{Z&8=RYLXC6h&4~Eg8)NGVNUj!8=d#j43hEU$513OFE%BgY*CvPNe$0B{ zjU~n;F5<%^5)MQ)8zGl6)GPV!u~qo!05m~jb0LtjD+aAbFP06!%(`Z!AF|Ut!~De$;~W;r>D%O5JL zJWp)sF|-Q2O|7_+jL+fO+k0$D{voONfdm^;lIsjJP^2ag2=2cUMzB9H@qMLp1J}2? z+p&pA$aR8UxP$1o|5PmV4VbpxNHpRCp($^gO~{0MG7ZM$PuGl_t!^~e+*9a#eUTiw ztdxhH*g5i>p;e3m@FitS+`4)FX(V}-IUJsf>uO^zL)OkSh9<>-%4izr-9PhRjFOtf7+Q2U}d1jd;O0FrhDohM2tQ)IGIA6S)SwY z-dlS}FYyF7QaK4dxj) z;1R^MTAo$y{;c#=uRNFCFNd_oa4ev5Nv6l-7-&difGM_w3Z$q{b}q(HFY`aw{g`98 zB$gZVQ`Jgp7DX^QB)S}}r8)Yn2M@AX7Fjb;XVpPXgg^%j>PLFj%)~?CqvM?3MEx~9 zil)3<{ZNI3h#UCLdU_6?{9r%BUrX>=YYHuAE6eUL25me8v!a1fML=W0a=wLXBIEAd-@LsI=%thBWzt;EUk`6oqE$TE}p zCE!8(d=m~Ei@sz52$Je6-eD_}t_nry(#u4uv~T3oq>*<*kY!f{ox1m1vCr{8+Rm#9 zpn&Pp|FS#x6JS{OE99X3m+WU_kTn%#GqV=UUVVBJyRyo>wu(azV5gx4+Vn=`8e?uX z%qib3>+-)bh2;-{C>SD%*z>0rsGBdg4AA?aPAl~M{FH5gy6-s`E9)H{Q`cMOwE?|_ zvTK)p=^Zx+yHCjJ8i02R&?O7+4|YD*^y!NCx%u*LUK4Ms{3}BOvPWY?#ln&r%(Sw7 zskd`3IC!_paaIJllnKn)rB(+rynZp?V4lsS2+)zv)^i9Xo~yz$r95bE<9x(09Ouki z--~M#<4+OJk6eQdmW&wGE?@Er0h=Wid_0O;0GTP$Y|d52tvgyK+!U3^H!Z!%>Y_pV zai29BI~ zs_p0D;9Pe1gMpiv_lL#a^p!X1e)e|;z(%(IaM><*e1y3ZmA{W6-i#oUm}=I2Ll zU}sLhJt1%S4cR)G7J3XZ*4V2HE`AKnFP1(B7xXzs3b!%D3kok!KF^>}K3`wojijkQ zn?HS0yrpEq;8YDO*X%O;09&tf^5Fl-7hCPqzB2zQ$}h0Oz)Usj&}z2tSU8sTU=`2$ zgqXTus_gNxh7Xb~~76&jNp5vR-T(ulfmv-uf4;;t3?HTYBnwy#QK6wn^s_v4%d zRB7Ki+i7JIUVN3=#spA8c;!aV=K8xtE$oQ8=Z2p1De-}BJ)W(^h+KO>F>a7t z2KRb{Y&|(Ux1uNUTBjUI9aL(jy@lbmHxm+YOjB;ZKs{skhi!nA-|IWO3<7S|gK@pi z`S9TgKMS(pWxWY3Nw+F?6JRe*;rdKZ6fw1#AieI2gi5t)uGQ8@UcQdCoERQa7Q#so zynHk`xAbZPsDSgv(uXQ`$XA5s=(POEg#DkglMK-?I4Z)r8hf0`8vUNJ{}&N{%Nf>p|LcwO6eQbUWrdZ>IUuZzDi-VQjp3M)1Uh9sXTJy_ z!SZ>V0y7R|zD=}}yS!Q-VqgdZC+Sa;=xHnDWiL*a5x|?iU){y;t{aqNI4KqzbILT~ zug9QCbN&o;Ugg;2Qm6h)EY#YQb3-f_&$-F>f?VJO;lrNhcHFnd<_Cx<^@k|5PDjrhJ|vOYmDV*tlr>( z{1!ora-@*7wvuVv%{GX!H@nxH$zZJ;ox-wG**NARh?&Am7vB$#Nfa-LO(8e>JVLhS^_m!o4FIEKYPg6-0($lVCk23ie1 zX(QP-I~(sxygUFJd|60VcD^VoOY7I3e@^4gRa;0=;L&=Q-MRyCMSMAA={+Y*eG-*Zxp$jmy}f*$mxAkm zT&&SNz|-2`v$^(uph!V>I@>5)*^^zeFuMY$zkDvC4q31;HC=%nYA-Kz71`{bhVD?# zf-LoH{g1`j=~sUbCb&=VTFuK{6CxI%sD!N2-r2PUIgH(;n$1Ptu3UNTHUL<7=@M%e z)!sqOoE?{L{EjSDe+MEkFUM)`C>T42CAVt8Oa@q9NMBKCGi2iyb{4_JBYF_8@>-jF zb6Sho#9Hq3f^xiz1@8PR14AuE zEeI#PGg}SZ6x|c^npJ>WnTUC7lU6y<+D=|6f5uJ^n(F;D7_pYYief+Ef2~`Woncez z45O7u7@$ki#AS>weFj_$@gb>yAHyL27$jw7O1us~`C>Obypn$^ecYi=DcQ^W4P?;;2tdh*R`FS5rUGan-=t1D4h zdFjC)3X)C)@jZGEmsDLxgH(J*zd%gyzE66#GB>xoziwf=<3@3Qe&kDSH@yp-wFRHo zZw(2H$la}p?}@!K`)F2Nh~Y(RTYOZ&eX-0|O@BzJ1{qo45V$RF4lv>SP1;SCgZfRs zuyRohl0Q2hsgAepVie^q2NUO?;Fctds@G~Z#MpkBQ-e5lCV`0)pT#=DibnrbLR=l5 z=LNLv&wAh7KJ$N(%YS0&;nuT2V<7V6b<``*GZfr8ZQhOqD;99~<(%X7GxJ(EQ_7Y+a>-^ z%Is~2b8z{j3)L;%n7@}yzI1o3s`udwIOm%O^wycQ;!CES{hk*p^s!MN!33?A3TCH% zR&m$NE3WU(TxS_nYdlP3Iv$8@id4L6%Ih{z$IS0~cvX%{(D_EDEesQ!Jgh5-vL8JT zKlG7`d+vYjy01!7z8!O9)=R(-On=to1^6VO6=|Kkk)B{4rE%xJKrj`Wq(HTqyg z(uMDX9_v174R5A=Qaw>QjQ-nJbJ|^rIPKCIDCej|bww=pS>A+#MNqj%=S&1=lN{-L zb0N6m@SFltkQlW{*XzvwXFB2#9tx2E96t*vF8tdzp)L zvwij(SNaca8-eJG6revQjaLHsj60RG&Q+AR5`=W_xm=q3VCC(1N1L%YxIOF$1B_UY z8Ek|wz9aQv>ieVrBvJO2J8z{ptNUfuw_~FJ{nE#HptyZc9+g;Jkn#P$r6d;-3gq&k z`kN{b{DmdxX|-v}6QW&O1NT0Z^^;qlPCghj?s{@Ix^Y>3C2XQA*Cpp3ffjiVU1N`! z@tfu7a2NN*$+&B=&~l+sw>@Ou7yHlDtp}i5E5_lmUAe<*Vs)HGDN{vGo#j7H<;Uut zc;#Q(#`|f!YbwD>=-7brRQoO;S1EDiUxSzivp7CGSE%{)F5liFR0*#eLAB ze~^DXxBl&O;c2RY@8n$Qfk(Gm&m=T{GxE`0|8{0d^s970z%O|p`;AAA;h$8UV(;IC zJ#jZ4*9lxa*or(MAVD_>6uG#aQ2qpna>Fg(uKLMUuEK$wv`X|Qt?6M~D^}<#^p`&# zcV(Z_f)_aylLlOiDcnX7W-F57Y{u?})twZGMEtK>_kY*x;L)wRucO+}J%2zpFVI;c z+;uEEu-l6uTe*eLT{EOweg@dAxC^VGH%KZrY!@T61)b-kHyEXh5-WpFF?vD)R`VkFFhU9V{7rS_4ygl9|J*sz6 zxVm8UGC%zlS_!P_`f)$a&pleNH+xMx_cX;o{(xvv|NO{J)8|mKN1nfFa^pwy~^pI?PI0rS!pbL>)acEdc zmOuivFF%dC@cC6@H(2S>zjPPueF50#uDk=He^Scl#Qv+{jL4dG2NZe|dHEG{V7nFQ zrvbf&nc|b5f}i5IN~2b6Gdp}1M9~?DzpaqCAZF6}eGF;z%h4gNorXKJY%S!%}SCLD~ibK|}Y5kBr$poP6t-bl1Ni*27y$z8of{vTkXUHWMTK_zodZHV%f$E}uX^+c~3f zy&8+EP9P^py@2J01qM}?WL+yAL37t@?PG*!G~jEIfX6Os5VYC;x>f4?G;lY84m>10 z(O0~OlVz?_2nqkfs$(HY$>g(bbG2jt#)CO-_5I2P*cty}pjUTo$>SQ80II!F(a%R5 z2qC1t9PE`#DLv+JPGKo)#568eaZZva#w%>2e$rLx?KoIc#qHtx8}1L_JocxaNbXY> z0!hVTPZumduWP=n9ev%SRoi~$yv7ZU`WGEvdU((K#be(*DAlN8U5FG7JePc8Hk4n$ zA5`+>o1+q3=k)n&7-ZU}{) zuMYizayxdyc!669Yq!4q;Gb_q(F15-iIFjhdsfsf>$ofvxe=%FaP)~v9{WWSfo-)= zhv0-6Uejscc=?yET&aAy0={_o-Ns(5RaItnjAn})Q*PzJE!$*-`)2M@Jh zofn{+PMMikmB6l$oZe+#v6kz6*SB#`HAwF8_uXS(dw9kC!WL9c*Rb9_iS~TB-+v5j zDC}?VBf&?PEK}0ILQx!Z+4VMGx8Y##_aixGL1wA;$MJ%K4f+iqlY{}NY7mzLN_p2g z1%D?fR{$GP*y_@}Qo^_E57gNa@L2;W0pES3H@Wkl3COKb;Cgi)$%-UKD?bZx-N>r> zm}$ailBAQo50D7VrwATM#$3ZrO{$y(ZSd?I|JcQIS4XZix(J^$ZR+y6KpI8U3WUkP zxIg#IfAef%)PDsG=F(>7oY12u!5*>I7LC#}*=2BVg`pKP54Wa~N9ax9rGU^d`Ky)P zEf;9~_|ZdS^rl~Dbk>B%)NHJfGfYMC)Grt-R;h7%xOzeP`&_I{ygmg#5j^Ahl6Zk7 z-=;WtXp9oU8ksX5Jt}RuQ7bfc_rWOz=U_M`t$@(P*Q{fj%M~oxgDuh_abQXX`H8 zAFIXOo|U*je^SHBx5E!A_>GC#6i;k0p-lxZpU>&$`(D;)|a^o3Wr|-U}o&dtIyWYp8N#ouo&j z$cBCV*|UWm)8Q=bOMFEIXWG)cKU$65D;|?(R9M^y2j=qV>gGI7ETaHnC;&RME!&+% zS1m~#DX-GED0$Ky&j0gl+dlJo)uAmS=T#qY{IAd4>&wSL@tZE}VkYTdIQ4LJ3qFOxnhA253VRHQ$9 z_U+zZ#s~Jmoj+kHz7=5@e{vptZ8#WcM^8Wrh#0-hpuFDuU0MMpo9GVx^1UsZm^JuF z>4BK~*NO?_jtVm&OPL|=$Z(;jBVFYw*6Ny1ZV{azh4B|tvX%exUr5flb}#OH4NK>W zA?+#w?D>V`x3up*?@zVcK7v8aBj4=**;NSKoZ(P0;A@AP`-=b3sQc>q);+p;;g_v$ z=wc`_H5A?Cy>}NNInE&Y(_W|`5%qIa=h$3Qf2yu_;dztCA4IBkHW5K3O6a5*UmBF)3h+o}huO2z&5H3s@% zuQ~VPP|Q}vZ7xFb1W~BZJ?!dxZ04FSDJiuP)TX&5pQyXjW>;IL!OC^ zCHcvHRM!!apx)iIDi3^k?rhKL#)r;Xi6=x2Z9CmEN0_EZFGD5Gd+p1=#fIPOd#@m9 zv}8pW;Id*X{%qX zai<|iDAZ0}>6$+h0Na#{LifDfEUkvetjd&Z``#|w)m6z zYeQv=+&2x}dbPN3xQL#X$ti(Nd|O*$QZFgLYlB8eIC!-Dmb^Rv`oIS?8ukNrx24^q zN*y|I{fTCe+T^_flOsPq7(U3oI5*c2&$W72d)cb4^T|niZ!XG7b2KC8%KYmmHI*_C zC;3e4JMtL{`P``leW;w)i{_tpL;iBsLUP>`N8&=IW%^8YJXYWpc}0wiR|!~Q-?iUL z*@J=s(@hruy)D?uQLA!0{QFz^tz|32FyR;fm)t`wAdZVM)(u1=S0a9B)3Z)T&#$)>a7f)&6WDRU!iMu)g$y9>- z2N**upN&|Q6WnkLUblyw5>Bfg=3Jj^ZZxWT{Be+Q=2ZdA*dH3aNQu%v{`H-0VT{Rr z4{;dc9L?!0uYue7@R;QXtsmPYT5`wp-#va!{k+~PB&J^f_5G(?C*GWj?C~$Ly%>qc ziuxt8e&YP1uEo0BUpUR#T8PfEAfTrLa?GVZaL;> zu5thC{M$AyA>S?4T1@V_1ZlZn3cfK%5f(+#Jt+S^HosNb>@F2oVjXM$`9tt)rII1q z*%~e85fJUJZ&Bsl=Z+)HMC7tRuiG`4Xg^$!f28?xD8H4bvO`|8Wk%Fx{o6H&C*NcT zVRHUNwv%S0ZIsW^PMMi+{432Emjv$fM@3@p>+X@vi`Ox{*u>i%=os7hx=-uI>wfD0 z$JtxPMZIu2xpbFbUS00K3zPr9c2AAky{%sCAA^d7xBi}Pd3-aQh}%(XtQS#nkuXx} zWj^LJ0|Y%UKJd6h?Tvma?D;{8^_!fwI3pRp?-PNaj6Pt;3Cq#0#?Ywyw9`?aSmI~EqJre7 z!^gY7U_aq{wBacExv$?w#W!sO3jZD)pgEfS%2f7s@e*dmPoy4La`!bX z8H8?pDLYAz*ZXi3Q;v)W&HqC1OHTvzy#jnV7zpC@kq>m2-?%g+mcw_uHDJUy-U0!1 z7FGN;^1BX)0@}^PT-L7DoxZjW+L)7d26A1eloohYr8H%cXr1>d8q|1KAFqp6gl~0a z#%vK}OMT#(<4yE-pg^?#MO;Qw_#WTZCnHotoJ-gXsgKPlqwz@>aqb%mYj^>RJY=)T z_s5cA!p-Y!fE73i1*WVPeGYuSCm?UWl7T~IAmigSPT& zCwkVYjoW4ChZeZ)hN0u`uu<}evfI3bm|ZoLsYCJ6d&JjE0+IiDV+<-_Y#16L5dhi; z%m#FDr;T-jqdLVplCd`&7Uk7>N(!gfWie8xc-<*2+XwCyif|lGbX?98zqRJ54OxrD zLKqCpmG`L4Gj^)$2Iw#5a14-v-E-jch<63Pk81*`-D1&Ctv#fbb{KQ6r*FI{zgMaQ zW}uh2sSSA=`SqbTgq6VQH%1T%dA)x#@<~W=(Z#1%V+pmkd(7;!tAzFGy24lG3ZTn6 z%zLe59QaJs3GWXcfy z!VaM33anXDqbTm-%!o{d6ek@oI0aAnAwvzR;!7f}OM4F#ly{4bNf)G$mMs}SImn5C zJsZcC2GAT!&LuU2%k(%9f?fk09qr?6J{nc2{;n}gh6xEEji+&s?ptl0ck!7j!gCOa z?@vNm{1o2U=dI5Oaueq)*9<2f>h_$Fxq2dXqp@%Nj>jI8VDLJBZAk;1A{dddZnHG~ z3g8Dx0@CpPyj==^0;$5N#sXy8pgK?~e_yozjQ4DApxxtIbBfA zgSY9HMixeCsLPI@msgCzt=yy7nUGc?W=dMAUAzLyLw~r33Dhi}#)Qg|y)J1mP92S9 z7lP48y?rmlv6ffmo$+13OS?;-xPsbF(YdR*8zn++z)YE5nkhnFpmM6D#zWn7jzuX` z3p~&Xyj`hTIXP(s_B{=m+2{(qy0&ZAnJJ14F21nLYTB%?<4*VX20J76cLGHc%p5$C zrHc|aSB;$mFDm-BCZ_h1aF#&%JLuqhy&x}GwQ+&m5@ETN4ng(90HF&VSHqaq{1MM0 z{u|74{x?MhSOZ+ zq6=8DqCGIhVPeamrwr)d-n_1dc8iAPjLO8YTFa6|A{og)3_4e{UW@FjYUe_5rU?n7Fq9O6Cp$-7Q z8nY;joLzB=uG!=unN@r45(-^@ zt8x9g+6!0#CW8m;wI5(G2Rx>&&|#8}?tXJF zucc-ha66?&{3y0?ZV>Ta)LnxqRs#z*SgvY6L-|f9%OFQ?KXGbsS3v=Pb57~Y_4q0J zC6&bLxhKw)#JRNd!e$Rgxzv+&lC(XSj@j_(Jf-+S`9&a)rDdR3y6CyWWlbdJ`Y&(% z3`ZO42GP*u-i(S?o*K%OncfS^Ov0Tze>uhG`41=c`>%vn*D(*))wtaT6L}m5>s_iB z*^(`eZrpsdH~bhuyfi{;e^uABfTSE$G~-LL8QmG(?VN)3LTLW2_|bf`|CI>`~l}8B!XYMI7fRH8eSnAzw!|tTi5&l~i-?bQ12O zDF=TIei^7lz`sOve=s-Ua>pYQ8<0*WN>EOn?mavCEH=3bAD0~c$0u#eLxxoXctCpL zIddKfJo$x&z;9Kv1|r$aGKUCHEvxp}lz})Uvu9LQ- zNSw;Dvboz7D-i8WgoTAg^|#G}i#x~l?ow0FI@glAGQ<*8{_AuIub&sb-B-Rrbb6?C zTDj7DR(HYescWYOJ(qq1@!1}nq058HbKC>wq0)-{yZ^eX9sYoo55eeQXNitoMy?s3 zNJQ#WB5)V+RC%8)lECTvdl`;_qnN4ck5@#3y!1v|(@lX6OTB(IOS3ec!?%@qxwMNE zX8GVi5B9#w9?PBN7du(=okH$zrpePARwia@zg1h_v24*Nuz+{z5w)K zu%sC&;l{uEzR2W)0lHD9Z9R7L{0)phU{>$2R^aHWtpYF=1HttZd%TOW7YMVNn@BDj zQHXv2YWE~mg8Rb$&Lm<9nntpQ3zRoXtD}AYAPgx)kr0qvd}6YFqH`CSF3zkC5iR%} z5hoG%$@U;KVS=M#C%ZSbAv4Y)r{|@8p%_qF<%zO*5rSdK9I+dJ@BPpc`5FHV)j4Wd&x(Mwq<9w{86X^%gDby~KO7S&`s_=@Ve{tLf;P>v)8 zTse%?4~N;}opPW+!fmY$7yMgvj5!pW7fdniFh{>?>w^ zE@`z&_j|gmA^oGuH`s{EvNiYe;#H%tLddv+G8mBXfXCpctZ{19M>V1AzOo}?$ZwW$ zx;@gvg{B17-LZ?*+MN&iCQpLyYd)?_b<`-!gF1fPJqSLNn1M4?D%WLxZx00-`t!}t zIbT#Vm$! z;6J#n)eXVEh1Ax2jJSj8@`p5KQ4Xsr?pC^Sb$8v$aEAE}oYtH`Ib-Dsm8T@DpJn8s z8Fsqf301WTNAFUH81lXKu|6mVa&%{r2(QqekS{F?!2REm_oM;z2GK#~vq#4-zH7{l zo;g_ceON4kkw3Q9uNL>SQj}MRM(rSYH59Lv8<^z7cOfqcPUIjUqM#8CSTZqvFt%_G z33eqZAZX%Q^oZZ0D+LOSfN}%OX8Z(Ef>-G$e}xTqQ2Z|*^?V=xpiJICp)_k6D#b3n zC810BZ)HI)hIU6bxoD+Kf76_|!odC%Vvn z3Lj1^-Doa0*XZ@)O?Q5V~%ZQn}6;Aio1a;xj-9yjo1ZKW}Y%8lTPQpMYmn?wZZ z&IJL}%I2yc`=6AuceofL-n>m_J<%xubHG<#oQHyn?gRnUp3xZ029Rkfl`Ia%KRbf}`^YjFxuUk)J z-85$#mN2ik#R455Nf|{@o`GHYsZ#FeAJQJYttOFk+-p!@7wPfpi(R7TEIkpIfWlsB z^)e2(+Kw&f%sBkuT7P=)RKh#x*2yA&KDo59za6n*GO)gT(kz!oxCkBKf{;h;2tA?d zs!F1wUH2Q3K=$k}Eke1=5v9wSefLqo&EO6!de&mT!NvDSHO_DV{AIZEi^t9Eo<@d=c=EFS z!cFG{{SOsil(0XvVun_S5(v9~E5IPlnJ|>icOjMj@EIp<2Vt6(zFD`me&`h2^FSO3 zx~@fj{u`gT-;nstCxZ^x3B|kg{Qm?mFkB#wcG~2_eD#Nf?@&3!Clq(nC2HljIC?cmVnj4YT5|0xa@AH>cNcb353)wv zZk0;uhV)sTJwE{BZ4s+u>*B0qEyRO+6zBeGiI#lZMGHJFS?^5~zNxxCyz-l2NBsG|JH zt~#;z0;pYmWX1855fYttDGHN(D=+`kEKxJ1@ZCewp7T=FhDPu2e}~0BzY8!TEAh<7 z2)-P>v2|N_K?59lyZ75yRCyU~^yL>iWcQv340O*=_!1Z(gq}Oihyp3?!&}$}mmmH! z{1t_$g8S!L*+1{C`rpp9}Z z16iCN5@y3?pCZU7+s^mV5xZxP5z)_6(SGAecUPcA?ib&=D@n_rEs-b~kCH68^h>)gTloSVEt2=KWLuegh$Z2^>|NF3QI{zUn+)W1;kr>i_AXmCn}gUlgjP zPVV)seK+6uD8rI_Qa-6Tf>{pldH65Y?BtxZ=G%IKgur1cW(Go=wmr@TYi>`YT{VZ- z8fY(atVCRylLs1VqAJ{m{D5+OFsbXM)c;2Vu^~G5hvP;4(jzWF>UUhd+R?8{eFBx= z6EMRJb?`g=AQf~c-aD|0L|6#S7Fv8ecC|qQIMcx5&!B0vb1*oRA?wFj#)L+eCJ}G{ z%f7t2axS$MG+9N9C!`3`y3R8J^&%zSh(*OJ@1>N_2W=9J69n)a=TAaNgK9{fIqUeC zkNH&mB1VY%R?_kCB#!gs3C?^LpCc_0dl4F4`i}Py;K;*J?EnzLo&TtdU%P%M61ZC) zHB1YCZ1wa7pckH6;Ls!N4-LRxnp6~1*NRix@FU)tP6Aroig({g5$!bG;s4$VOj2h4 zk_+I^U16LYPEBboDZ?KsNrC&|^Kw$dSu|ZFh(vu(g1lp7*s)}km^!pXmLkNf2pULg zb}1k@kfW9iLy`7}P|aL^cxi-Dy7c1<;HM$)l)dY&YT0{!RL-*Bgbp+LQ+MUgdwINE zaRtr0L><~ZiPh9lOuJJHYO*1Q_qu@(=X;v+s^8T*?Z3{f67~~uG_ft~$4bqap%sRQ zIy@983hPU?^%KJ+TlEcDmf7n7s-cAQFe~R4yvUxB1}ho5@=lf0)plVMH|Phx@Sv&D zLemJHymujElv_SU{Cyt(D~=64$4GiZtAygMd05bV=_)R9(cd^Q1SO+NiVuI}IZr7q zo4t^sMY^7f^MqB92|fIh!e`6 zV_o$`G0%W&MNS(Z(7f)IOP(SUkB`pgRh;8lq5C$36)#bFJqj@PtuU@aBzLbcjMy() zEfbHqFc?=IM`-_mWCzAfhueBjQNC{sZDmh)q&ePK1kYvoY~a} zM$}US9O{s0T0v&1DnI`%gW*Zjc?ph#o>`CA#Bs!$k{j0?+`&`yL8MHY<>A7{+Me%x z+oDV0PxsTir@Y5YhZ63(W#)_`Jw3Nqrh#+TxlF8plGP{#vHu$QV^M<2*>Cg}H2Uiz|(t68n6qT`qiNGI)rXt97 z5p~!s@dr=Drz3WgPVwUgJCYrjKw3nMTj?uU1;f%m zSeMxXev%Fh(l+_TxWzQ7=&d1+wC*(o@!c;LaS?#jHKdp|S5;_RO!fLR2)=MJEO@B3 zA}N4<9mljYXGdjzu;*-VzL}9JzGQIai62w$K*gCu8nQHy(qt$kj0L) z|EPHVau(<)h+vT4j(ycx!~qatOLZ~5Xrl~qj29IBW%_;4_vKz*`V72);sDp`$Hv^? zsKP>PJnICCMA0&qo}v~N)INZA(+J@;wBqZPk8=mSkLZM9{GFLnKngL;9>CgWQ<-z6 z{TnA7K(HzACxUT#)Hy(-AqdrsibL~1egCJiY5a)_dMpcx$1j!b(ks8_1a^=lL7U0? z(xpL7+Wc#Ir2OPJVc|k^-(7$InP)(yrsBpdmS2>9Y%cLHr7v#A(z#`>TW>vS2`~@b zZp4py4!5|5_WQ;+h61n(f@&}p(YK1d`(J9@4m9v2e}8l9>X8NC1(xFWV$c7OT@D7a ze_MG&4%h0o>oIG>w`+H3Kai=#+3Ay}40*qpdwgSgPKpF;Q6AGI4?;jJQCuy@7yZq0 zqI&d1JWSg$Not-|#=eg=D7KF)8PpI}**zAg-s;wZd>#<6*Wf%#xk?HTQFdqgdvU7o4*09w5ht~(Q#P4nFpa%HT{JEHcuSjU@`1+}HAVb*Z*#e4Oj@mVnq3>FAxa z$hl;aHmWKC?&@wkC!?-HJ-qVn(yhPex|w<>80G7^KKT97F8WIs@qy#JV` zyaAS(8H4LpIaIu?%c7NF=fV0Y1h{w#%r0$5ZclMGlsO2e8!V3=q zJg~cl64@ycA-iTGRf)p#Z_^3&V7>amaK z%d`tE@!d?vShS|)ns;mf+SV8$sGYqMH@zpa*UZdpG5X{G+%AfZIum7&y!bG{lPltF+jQRE?J~K8-@_!4)-Y^ZXEgpA!sDstU zSXbc!Rh~SRYfnUj#h2d77=8Rv(A$oo4SAXGM}Qk0RVM=-i-*~(J-R<#fZpPV93l}X z{QGcU16@PkP|aqAIzrt4z9hde4hF{*%5`lXkUC$L#;@)O&#rv{=rn%im}!3>T2g5^ zne(hAz@JY6!#KL-p^o{ivP~e-+KEoBYBV~qYRAz$*MWW35nXFPvU-wbOX$kX-Nl*& z@ZskNIPA})q;^zN=*=ZG?@5hv?Ti2&`8nSLj`a^xMOI!)aj^wI02|&54vjr%{_CE% zQTbGAT{(}y)I_(%hvRt+rKRTc>litgIw9%)Tf=4kqPYylE`Rn*UmE}VzXs788_?>$ z0q)%nY%XX5(u*_clQ08ozHuOsB&qLMdH;=yIK}mqKQ4}I9ha4zbfmgXU}^Sxz=pmi zAC)8a@>6=d;;r|?y4FEJcskTO{ni>Yz=4Ie#YF%#MFCya0Q7~y`dC!)_-0{$^2l2W zUtA{v-m_4KJZ0=%tC9)Px_cKjO9O}ZhE>~KRi9az6!Vmv-2z@Ixb^SiDknK0vgGSZ z0+-5vc|ZS7=b;|*_)7y@?rNu{yDJvQ9Pq*oU+7BOd$uw0aS&y>RNKkLxHCEjXW<^- z;d^eo;s8zf^#B2kYutA+$y5aWZ()ncPAjKkR<3Zhy!0=8MHv;5On%xLmY~uSs!rG@ zoxmae0W@h9KpTenGAtF=_z2_qUu>TRXEm=)I)8V)FgWaX+uP`d!%e?MEN`>#mCMiU zC4jw|VHc-KpUEfo^C|=~Vq`f%!fOEuCuM&`|JZRi^@Og)3J#|BPO*EhqaJ8`+^hyr~B z=0bKCxWs{0h@3ZK?B4Dg4t!vuP0xuYEC>+IQzcie$i!I@wbTp z7Crcw>Wwx;5dMPNUlKw`5?(%pgP3iS&mtX7D&*jinC{HO?0iDDtyk5hEy-IRx-h+j1ia$NY z(2F*Enrrz?b%;G#io6r6T((?Kp3XIQHMzThojNW=J+vW7Be~n0A9#wBEki%NU?%oi zPeM-_hrIC;tt~P|GDoecbcIn3wD0D>r=sMEe2HiEzZutCn7%GQWB7z%(AQtF|72VN z41}XN5Mv}gdZ7P@GyeoAI`D+R;muC9d4evy+JxE{i|yI(>=bcL3w&R{)Fn=Zm%P%& z=_NHeSt`vIbWCN-sW9zKw_rtvj~@sN?OD+bj)kv>k8c>r%m0?fP+Dwh>=Og=o`m!Q z{s=Ke35O@V!s`JuGFH#JfVV?#k(ytwqUiPYPOE1xa8G@L2nkNt0h^19C-mpX&CP4fHLV9LcViM~<`@(>=P;Ad#)>2k$TdW&C|aE= zNyhW%PSIkKA`=d1zX#<7=p|Y);&;6hDdvrH{(zg`#>pOO@=c>Fecj6Ygo#I7S$*>m zY(lH74LM_eQ9sRWCk4UG=!n};OUjnPNvDaND$J&MjL3Y`XLh-?C$FFHPJcMT*1ouI zDfdTIfl{IcM!?`W@^HjlN%dX3&WS}OrVTYrl>d7EIZ6;lOg+Y!IK>)gu*9P?J}iY3 zG8Gu$0A!E(hkTxXpFdoxNg~dzHl_()4*dpNd$c&EP;d+UD*BP&KUc1LEjcGx;cy=< ze4{4zC6uh`Ja)|>C4gT5#()1Y`z4}MVQ_C}4_=k`MBeunzxAIophwA|OZywu)~im*Sfcc#mVUKSpvNWBmK$$?oE!DAL3f`V# zyry$9|NB*<{2{pSjMh@0#&;eu*t(vZ7c4R<#3E$9D*)9|*X%{NHp#2*$;@O|v-GK;#h7SK+mh-z-S5fek?Vf?>725jJay6ZwO;q>%{mNcD8F+~uj!HX}_=-0ioP3X7zag(I< z#)xZhlk~?z4Jl&Y2X*(d4q1~;c1uAjn$GcvYa>VWq`jC3VvDCWCc4rkg-P$hwNGS0 zQNdqL`P`V@UUkU@spq&zj0E&66_L7`ZRnG0-CInx^X5uBT;h^Z?9kSP5mxlV^g}fM~9;{ymw?I z-+HnV^wURUw&T$=o)wswp`-F^N5|^Pauem=AfUszdcG}WS%VL|&V0IQWtM{>s4DR9uivv5DGHgblrwcJj_VLfzWt!|=gAqU!wI z&BsId(<91%sw&k}RC--MYnAHXitHXn@-6}(5lX4a%OeC{lFTNQpXhZ;S`rR!kqf9F zDhsVj1nc_Y-#a8D5#$0TiW&)=>7S{!X5d#U97pBorsTgDIh&YBl!p;_Hk&=LZQU}c zkycjDV6wtu9tmAlJz-1b?Eq*;78X3?6I9gxdf0TnzvupYW$tsN7{|dZuKq={)e`je z!m1W@iRAlbjLN3F{q|pOj-cT)IZ{OS|Rzy$yeO+sq-iT(_M0c2D!}?e4cO z-Dj_5n)G{H%TZQYnXF7h&yeY_Ii|I4=CIm=JM9-vSz2Lmur^{25H0gv6zjH4HMpLJ zbE)rfu9sZ21yVhD$VCJGg^nE>K4_To10&`s($JH|FDcds>xyQ z8OZ5MlfxGUH0<;u5Txo=C4T~?2s{LRC!*PwlLSFYa&QNW#3|fTqAhDhY0RiZRk%gJ zi+oXux~;Xl@t3yK(eCC;;+YZ6KWJheCxleABYoK-v$&=nv^9IMP=0GwahndF7MK4< zSjnu2X~C_LyCJy=z3urt&qx$`#D;4eEPBtCjkNtWyX#t&nnPVqPM6m{N{P5nw zN#TKMWr+lRmtwDP>ke@vOgwHtP?y zK*BoPnMqE@T8n#}d!za4(*VJyL9B|Z>S|nkJQ5ii8d^56knFe=`$-Mme%7_pUge$5 z8LpHhgm1`8y`qYs06G)DeFpBU*4=}trehJNWp92~uZ)RNATLbb)#*4C-)3i-{TvDs~si?9AyMHdB#E|o})>xzf{^7WVK zNOSlTLZm+6PiFIHiF_p2#Yy+0hg41oq zEl)mB@%`Aw)=JM&jz->=B45!tiFQrdT_sV>R*;@)9Iq$ZC5f8Lz&hA6QXMI~9<2eR zm%s6vnSFc?T#%E>BNp@6sRAbAi42g6IQi{vj{(OPqBS2k1O)}XJhkaz9U~*8PjW=4va@h-&?F14dc551>x}s+ z%y|D4;JjTmHa6BjaEnB1u&CP+hFk=4N)d8czE^rS{Vw7V4hcxl(^0i>+YL|N-^i8; z;XgkrsUWg2t@cC$bed&DTzAE|H5C*UYbGYRDq9lnmo<=W0<7d&&c}<tacru>KO`;G{NwqA-($nz-?K z-PVG1Ttr_PYZnF9S@h%`vyAgz>hSr8o=DD5X}|j+zC1@0Y=B56N7WQvtmPKkMQb@_ z6ZZg&$W>DDY{z>Zh0kmX>(A9j(==pNe;VhQm>SespVHMd1<6QOSz!$X2M6~)UDbg0 zkk=^f+xS@>5WTyu!HJi3rXi+BHdRn`cUo^zZ-&!GM`!9GddS4_kw%NAt!=rz;k#4u z@bK^kG;u`2y(tmE5%&(kTQ&U%W?Y%?n)c2Iu6$cLwHj@r#=cTxSR}Lltl3cF6vnhqyNN;cNspbXG+=95ZOw&kBBocYAD(|6p4h1k$<**!)Oj0jR5Oa(P^0oSvlm#q7^PlUr1NqYmy8FWg;ck!coFz`grYC|qgRw=>qZ)GjykQ* zz*b`D(<=Isc;n^zX==yvROi?7w@Tiat=HBxPuJJiZ<;Qv&f4Yh^&QT*cp?wkG)-zN6&Wq-h!Id9OcP->hskr zPegoX`QRsk5-dIT!G4D=xFC3L)knXJiA6z8Kx(?0U_P$YhPdFLRvn22@f^mF~$ zN$GJyFXtO@YD&X5Ru(pnjdNK|O+AyWrdDTIU%(I%QNh4c_ro#J)}+%+!h>KUe!ebm z8+Ml2&AL753l*fp`SEgi$!3FYrHPUG&Y>LI>05oY1B;qfimm5q<=gF~AxF0ONx8&x znFy9%Cq)>3G&t;};5aMVA?#lU(Y*=PA6nFU-{dOxe$IWpZ2JBmofnIHmowekFdn$}e0r1W1e z#GcbyLE&yAosS+-9C9wi_gV1)Z8bypbO~b*W-8u*Z5%er*-cIR$YNhi4xybMNTwQ~ zO)mC-5nalZJi9nad20?6JQeRGWo%gT@Eq`m6&`KWp)K-v&&hvjh?8>0b!o2TgGIgXEomdh=jZ09rUG;|+nAiiwJMyw4zu`A6-PX{87 z(+28Kkd-szXdcAs#t7S>l%KTMhNku{;pw><8HL=~3 zcdpjn?=ZJ~h}~exK9vgVV;4(hJA(xT*1ZGLw?)hzc5sp=u>j8@*oE4|2TsP$h9(s8 zi*3JfvhlFM3##VsLAG4bPDdPU>@hhRQS&#GU)edyO~-3mLb8|CR(zI{PDrhwt!Jw$z7}%M z$eYAEyv#ZjWp!TOW>RKyns%}aG&*&rB;cUcEe$~>&z9x;2A6tT#TPr=)$e`ZusHBz zQPf@VhG0T_E2b6LTGz!{5|JG|ISi}q2?zR<@v;5_i92CG&n0`SdsE@e%Tfj0GuBHb zoxJjVMBz5;Mt0}1HB9C4a^cAzj%;}S)|$S9%{fUAeE0y~XEKi8{Y~QTujlTI&Y8$% z-#aC5YWV3*FtyYZU%#Rzpp51~&Nk{wF7z1UINN1J=}j^PvKvoV(htDZqLD)?l$~i~ zaVyu<)F>iyO0$rzo4!JJkoh2XOj|LA$%%=zg1TMtfGX(3eFGnFT5+h~M{?Rnp-1Gx zQKIMR(OTknBNY9bE7dDZtx&K6H#GMl+8TLdeohV|^gE89#u&g1yGwFvSZ0RShx1L{ zY`uY`k!Gv;$WwjQ{x6jcp+(FuG@aE+USvKWa|>!ZMUEbE-xs}>&zG$wq!W#&f^^;M zVK+d7z2zN$R*Hkjbsev8J++&q=cLF2VSX^FW7X10bulyB*z8a7kmhFg{K~WHiF`9$ z$S7}Ixoc5(>`hESf3wngt+Ew7U1QtOXRNME^2EC7v#-W{MlqM=kB{Liyk89`OVsr~ zfxY3;4qA&X%41t~d%@fe+wZB8_JI54cA%-7Le}OHsUL7c<>O%mR$D1?%<)AIG<=;n zevao{EHnaLnlM2w4ml&L*wi5}7Ma>uq8AlXY`)#XJxW`uFnxzlKw#^9xVg9N6i@&{ z8~-kSFD;E!n#8rfSsi=|K%m`jR=O9f$E;%-CiC^9g^?@x!^}ak!PNAV5xtp37jcQ) z(=E{&a~q#;c=K&Vlsz-A`zc&GdcxR}(#B0@)H4Q?CVcqtAj#u`aN;yGHOY9D&zz7v3^ZgW6sJD!Ppr+sjO|ry$cpc-C6RQ#3fJbC8SC znwxYDMSLSJ&IMVHnn(@jQLSJSLrt14 zhKM$_-sNt2(kPEQ47f>jsa+85j3|Q`Q_kX390OvY9UCyKblkD7lphE zf1P>@)48sDHPeRE7?!mjvY(*HIx59C$T{bTV(l?b@uj&6=b&SbSjpa zd0=Dl==mLA@G`}8F7R|qqGn_9UwrlEYL2pN7)&F(zWzJ+D;s-z@&;%? zEJ>=wyMi4onTtI6a zLaP1Qi}ORI#a#=9U<)AIsF#*H0Nv}Y)v79(Wm*I9Ya64v4uv*^4lJp`vK3iY5xG#6 zlE@L!EIa2+KAy!`zYrE6^%11IcUlIBCcA+u+3vyiz){cf>tr1KkmV%jUSiiQbr zk>DSBDZYpt5TQatL&HpE%C51@DqvVy`7Ih&^-m>@clKn#BD(2h2GM}mbZsC`OiZkZ zZ!tM%eoHva-cuV8=+Uat%e6*%*`WJ(T7rrYRe3SUEBYg`TtfMdspLCe;CLHgeyY1HS{LqvcmNpFK*lv(qVb7C(l}J@cIC1nJJ5aR}DA}ey`V}-o8 zto!0Icz95t*Y&HV-ww$2Krx^bGI)RQ`=K~m0C{)x-bcZoJMF7)IPy=L%x|USnTEj* z2PNoiZ+P5jxWHud+5d?SfdwRzpGCg)6kJMyM@+9v@j$;F#I+y$`laj53&;T}$K1l1 zRj-MXi=&RbCz2ezMu8DZFg)tr>Q+qwBTfPy!jI0hP6JAkT$q@@|nlW46L9zIM)^=FCay+afli>o(dRE9GKDiEi5? z2prFAOAD+iP8Mi(E$3!e|OJ)J_I7E zWh937^Q)26!s{;!KuFAx`gfBMHWg6TxW#1|^E>6#?su)pO*{PPEK1#c=emgyK4iCp z66?ANZ?x~}QoIEs^)#HKz-_b{Df_r`SEFiC0Lyyzi#+kFx(;loIJGvla zE`!S>lRkX=FF={Q*=By{ifq39dX=6-ITE$En#akhJ9o)|_}O!h_^9ztpizG1adu|X zuIZeVA)LHI=>vp(L#fDqOAAuKC*p-HtlRa+WiffMpO;@hU2pWbYd+NtCzwl|=M-LA zkd~&a1XXN9A&FA2P9W3LSbw}UO!r`*qGjjX9b!q&3`{>7@wza=8&9Z9dKF=Xc8eIP z2Us!#4GYvLZHbqF6%tXh=!@guKtsqM2$^j3a&MLFR3_q^9{OY^xpYPw8LF7oUY}a! zm#FEk)($DgtC)T|Czg6NUAy?2p**}%?%pZuGg4A!X%-;KV4luNnO9Q5u36MkXpk?m zQDV9MBNt7czQ|z9u}|u}rapg~$Z6vokpXKqnb}l)vyr!(n}&NU74oPMh2I z4R$_8($2!1JZt-D*JuczzQCx+GuL5}p^)J3<+TO2xMsEOvreNo%PA%ClBvZ+wTuMp z$^G`oBLIM8M~qw%sZ*)zOP%09+x}iE_#=hRZ?8*Ik;f=?;(1nNzeeyKaevVQqC11+ zevKYfhqbdva{-sSanGJw+Bm4-k%xx|-)>F9&6A!aS*)m#xGZ~^mNk!Wre>{OH4s)f zoz~XY*7s|MPU4`sxVUszGBO!|a+{1bW|U)VI;WE7#OE>AeInRlMX+GA{SDo%e{yzc zXx^UaT~gNb`Yt=smGzB1>1X&iMzX0+vIUXUG?~|}l$>^2q5~(pU3S?sXN{FdYjO)3 zIzdF7*3G*OD}8BZxvzTs6pV&4q&73+GX!A(=wS}EJ1Le?Ws$-ZQ*o`!)mgI+~$`e?^t!y)gq-GG(DdVVGC+=Uy2 ze`K&tfmfQLUtenhGW7gZX^JAd{Yjn0U%+9G_8gt?=!F7RTMzyXJ zjRBsBDv-{(Hh5EPu__`5I`wa{@1h1m&hXLm{;ecHBVG&8v<|W2ko$X_c;N-A5XwOn z^Sg0ch3Wd^l!N_M1QEBZ2`|M5x=8FGCq5321+B`vBVrvlispv19aljuQ;)ArBn%3q< ziZj-MBEfGtZ}plaQh#`5P_6&Ut-%WJ0J;C+1X}ER9?h^H$0BYEB0RX`K(_nvI8XMC zlV$2>2DMe-MJuJ{QmqxZMe_{b`A*0w5w?xGt4#F5%8NG4^xo3M&0=D{B|y;0e6AC` zJIz?JQ!bRtEdS8zbVJQPV^3%B0Ndu|0?${H>1G$f*e7$|41uWs%v-=B6T zonTx37v60g1TwnN{XnBX2GgTZ(}#-&(gDAIzep1BBJ@~>alcgpm}l@rVph*uwGnCM z<-T}IoXqg^#5ASq<_=~R^-HINa2dW>vbcKJ!wqvY0I8n2-+3k~*mTIg;XaBIwm72v{QQFI>XwmVh12$# zNJT}hFLbhnYryM-?3v!*`J5nBRCGN(J<=q5t*sQ3?v1IRXqc+%$v!^nz1@~?Arkyd z%Ae%fT1+1!b(1tDJcNnYX(7w`XA3S9+Y4orVvX2%j^qM={LprG0$s7DAJ~WZq*Aem;Z8*odv!ixTJc z{O>ctN9q->e*W{xY|Bw>U~4p^6tF3sHpB*LY~bzJG0rW2Q$1CLvrUwWSkprds@AqT zxEKxEw1dNb64R#_U1a66=1+cRv2Qbr#+Y7TUq4I+TkD8Mvb3>QjuvPxudOLf7`#c( zEjp0ZOTMEgw^h@qMc8OrpcY_SfH)odbDm zD~stIt^g|NL`QK-P0fVJI%K1KY^rvvA$}NmN4&h;R;i*j8l>l%Q_AF@0J3H z|9A&Tnf$o*P0VZAF*K-%zmrA2*_l;SOKX!9;nTh_i`=xY7m|HbW0X2gU{SXzbcXpw z;zwTlBFc|r?KuqZhPc8->O4HC!}__OaZa;iI1`jQjttCfZV6A)0pUVMaeo0GW;;!b z7qX`EGs*(<*SMh*@hmu{F6lu zfn6{HltX6K;MuNA0gr5CzdNXC5Gk~fROF=RQSf%y6%9GE)tH?&U$&vLEtq<8FJLL3 z3hCcXU+bbdDif&;qOUp9sq8gXa60(nmjsfacam0!`w5^iNHrsJg=HuuMfa3GvA!}8Cf`}0^z%AUEtgP*cXLmNh*qE{W(de$)d(XaMOM0v< zqhsuN1>Nnv^tEiSIctinf*iXv-86F-Q=XsKFwAQEy^x=;%yHp+_~$QZYHzN}VG zn%DLKP@oqCi2Ht`?i(1rK@@R@WkU6?xH?o>GJp2Q9Yk&AtRtnd+F+;VgzOCCqWN>De6A)@Pm2Zv=4?9e@NVpEv z9L;#lN?6{twY(y16b;515drPL{Vw2Or%(VZk%;_P-uQVR>R)?*HSzq0TdA17zR*mW z$}QNc`pW92+HllvF_RyBtKrm~SX)c>DA{37EP#48dURMAYkp>T=FsU)Zff~O_^Ip?^!h4~=y zDgFGmGh`Q(9M(SQO;^RS1Eu<|6tyh9j%5xxV>JoK-u%y}o5>%Qhvl8euD=pCaL+R+ z`icgILLQEk5|CZ_6+kwU_=eNr?1TDguWVS0h>N>`CknoE$vw3U0~^SI)2sCzAX*kZ z?LNvymkoujj~kF)F>K&`O8QDITR0tGDQ!5`tfxUDLS`%q=+$0|Ka+3m{6-Rx~R=>1Mw*$gwZFoK~jZKwq*|B1r6Uo`%ui59@H_zk9 zdL&JY{WH0aUVO#kOk?aXqm$h871-nAK{36g3T$E-{_=pDHE;rOav)TLhGt&ieMSPd z%prQNSlg_Q>$do~9#8+V_tsm$GJw+@}20 zf+Pr7M~t4mQ#?1|5!Y1x4SR>oJPhr~26U}9`5-4HH9X|EYAh}g)8x_Gu*3>V_9e}8 zy#@85Z%;YFHWwS&M&NWUAd_wooXFJgu&a7PmRYHURaS#N+j^08L}LvJLMg}OS>!~l z?ag@Dd${}3n3}jI@A2aVd(o(7jd=L8Xvz8A;{5Qb)R<2v{q5j+Qewia74dXq=lJ#q zYKKnqCeMr3tuaUr{u+>Z$np)*SJa4@A-nY$WB0cC`H^tZdW>trL(_K_F9Fy+WT1WJF=RE2EJ;T3~YP;?8C-$Zx0l4eo;qwX)|%^k*1DS z@f?W=b$2`x;HoAz)|tFQ7%oFcrl`K?3To?dhG0v$pLSbZ*EXY=w-$gJLrS-1iARH1 zo%{Xom9OgqyMu1)?`dm0^Tw(b)d6r##Kq1vo3@Ac&8Mxh+N{t~ds+=0Z!UIwqLbuJ zoc!~&W{a}|rh22KV1}`Zw-+o!S9M4rh3? zjSJ;OC`^I0`|av){8obg-KIxS5_{FrV7 zE-}%B7hTn_^m*py)11j!^*PQyas?Klb-?_Tm>$~j<|VPk?Bp^JcehG;(L8M%eYEL# zj}LYi-4_mj`J+6@_huy?hhF|NdNTeq9aWx)bLfG5pWj>IETWIB=}K;s^wwVD&O;6l zc`h@EgH^@rX>ksPSZ=YrzV0Dhd!pRT-YHh3M*P|IUBO+ag5*tUR#F6QbYES3{B)eP zTw~B@q=8QSrQXpwkQ(qrP$7=ClEI0*~t z1^7CW^Z?z}_M@zXES~f1dXGAMU)rN3bW!p|JAQTFw9=H`v@}LHiXLq=usD9(DL(S#=Y{Y2bp0}) zq5{8`{)oSO)E-pkd#164xVeEUR7nYH_Ev{^mEvqA;T{AbFwx`b;o(MHFD-m9?z-+~ z0veK%UPsiyq?n9t5XvFIYI6CtTMyZ2PP-`iUUDqa4Da>slbkbUzv8^Z+EIa6o5y*x z|84C6ZW$HEow}7=NZJMdCI0woozfp`$0BTO2G0pDpxQURhad%&0vn4|jc=HA0kJPjiEV2U3_Rn0DG7#pKSc#lB&9|Zfhh>Be!Hs2G^oS&X{cC1-U zlkuByz3sxP>pSmrP%E&f4mgWw(|Ru6 ziOsS{d>f*s3lew}0lw>dXSPN0Tm?Ttw7>f6RhIcLXIk0X!U_ReE6ea2fCCm3+zmNM zCkl{*J=p|k9BGL99i@@EWNvY)~+aM z)Ab|c@LhWuIiuY7bI<`$pIQBPY zOiPMMZlQKhFb`d_*MxKr_Ir3%u5;T&Yl@VtY__p#TKBWBn<8?d@j=qJLdZM_t?j z9ig^BbG7T6o!*)7yic7;MaXXYJ^5*`3iy{l!{LeTEIOxBlIt_lO-?@;_Ogszbo#v#*=d5!{;C#I?2zR|Jm)+!&W zG4a^!eI)+;<|!w=y9@LZ#=lOEX&e&ME_y}VzeMy4dkbqxA)t`imuEi6WLb5F8V8@fFgSj}X2 z(;IPd)%5{yr&D?Mja}(*&<2zE6$T~7`>H_&FN_16$WY4m6iU%GF?9Gi`%$XdT6KTU=-fnYiopK3pPYS=0T8Skm$g_qI!X$~ z^_Xagc(;}Gl&i$et4|xcYM!!eb$U;>vHNmW#w{q=^YoO9lDP5`1ZGs_;ws*&EfjEC z_V50yH`J8|ryi?E@ASr;hJe2gnOA(gd+SR6U24vR!(e(F!aR1;|Hz}#hII7-j~l^g zpUO~~gGIFEtlvb`HZ!ef`qHRCp;Tp*-mBWnN}G)1r}%Xn9F$M%x!Rs8dG9MNV&if5 zFmLmeuyzjZ7g2lF-F?Dli&8{KPwQTK8y$%ulj2XbZ_jE0R*kDyY$Pj0+j)eGSp|AbRfXEd!HbmFzrNBaP^QV>?r(?fF+< zZ_Ww3xx2TY7SsH4cU8q+mR;MJg<@%y+4{QQxyA-47 zg$!@i%)x8B@O4z`ATO=fy~X#HbgPxB`B`5|7f8K3%9aq?mmTIh_xy4Siof7CqLWFA z{b9Ih2<6u=g??0lE8dy+uWo@W6mUcc%K2KF-!|u;E+J-pU#e$~IDPqdt|SpuixEP5 z{Ez%TbAQVdw<p3GVDLR5(waw)G-K9kFG7Ye8xVrSu2R$qIbF)Jy#<9Dh-3 z>#F|`>T-+XM#RvLPIh7Hy68~1`%}NiEM9p^y0J}Fh11kblX}Wc=uS8k$bAUggRg1$ zY);Ajt*-sesWTt+Ro}pVJCt>>iS5%#`apFQGKSNNb_yVX2fn@p9{rTurt9&)A6=n? z`ntu68jV}8`#6Zyx{Vb7|MGM!#CLnPS>qKI`}N^@T>G|N+4_Ck^^{vb0KdhoEd2D^ z!Eee`@418V49{;LiJx$B|MvG%!HOdI=`abu|6!6}QZZ0C;&Y4Xt2-zWLT#8g=P}s$ z?X)Y+S}|^)zj_F`^6IFA^#3qUK|u{L0rW?`7Iw!uv7Z4%RhB7sJ+wvCpkCCm|3^+a zZ$>#dW2JPcpsD(-sQBvT@bDL6&TV(Mq55w@TR+84aB!QC*~R^v9Q&qz&dIoM;0UfB z9FApENB-uP?eh9nDla*GpW2=*@J|(sm5-T?AZ{PQLJ&U#wb|;f^QSgJMtM1Hhc&{~ zO@N_3zEeE^(~aL!>mJYdZg(4QGY(+KTe4JN1Ev4t_wa=vz~{Vs>Q4Q>Mbby==}Zr& zy6iZet&`;g-G*@5ed#-|-MU1*W!tSEEL$uR1dfDPsP6LiE#FdaInj~oxbth&=0-kh zgW&6Ze`olqPbo%gUPtEW&I>wh9_eGCYl5>q#&g7AEH;Djw~(Bpdgy&O%C{Tag-vK8 zF@-m_0^icgllXhux)aLez0!~W6sxz{5iq&3dTr>skPy0|;VC>UA|kE{PU8=c z3}1D21IuolBhz?xNFKAkCOG++C<*&5JyTl<^aL`y{NZm_=W|M=dmWySY^B}gh>p(9 zENl+f5q$nO-2G!v;K4x%-aWA~U}A@~fU-JWFRC-cnxs-Ue?>?Le?d}SVp?VHvb@9u z{O224psb_VfEBRq;jexlwtwBpTSx0)%2Ro{xsSRocX9T8 zU%ws*P*Wy{-Zuqa?RE5~`}eW@`o#KuzMF5hN7H3Utvb`&rbmj1mcAf6qN4KLZ-u;U zBOJyhKs_NTyTjXs|NlIW3-en}!i+eX_3G2nW2w%*Mh_^aDVL-#ys}_m-wx*f_NkeL zeQCak&+6T+kByBMoQ6)FJj%$(7<<6Hw}CV&;VT%O-$YUuy@mH-{Is1W_(wa|t_wM7 zPQx@rXC-sUoFKPvhP1UcvbWEP7=m1o9eX~Pik`gA{FXZJW%<3b$<9+0W~Wh_6@MLB zr@3|Itt9nxDk^_;{BAa32Qy^D1}i@A(r|r4!-tusR(Wu(>IdMxbxyOps$$6Xm1vPia`p1lk!tE?qR=KagE zeJ}DUvi|7?I}btsHqFmESnzIvCkGl+9~NbQ8q|}OzEF6H;g;xcO8u?${F8-leX1je zgdFV2ulyFu-9MmJ0kntGwD`vQjr}{MiXF0B83zS&f6q|T6N?{8JS!kw&@%bp#ew(NgKye)uMN*m;oL!n z+e@PO?Hw`NOX7+Gn#$rGp|9oqg(1op> zgZiEe8l8~KzeFldl6k)PuTxy2{W>=<5f)}^M?E^fCOtI$cN{z2Gf9JuKM5 zu;D$XRA&^&`vbhHos64}$q0GLIh4H!rkJc9T(@su2qqHbMfz7ODy8vO_wOdB|277iBh8~Dk`!U z=!joV2Tk62bZC_sOm#l?=c$0J|3!2b`g3rkxw#n~JgRE^Zf;Wfe~JvM$I4&V z=vyxhOQRA`r{#9UoT6qy>4tA_Tj)P7$L<61l2l=!+d~xwQ>{(uLDZZ+FunBQnxR)+ zvMkL~NBGg-g6VpCda$4!?nSMXo+Zl(_BLd{$q8V$sz9@X+6e3^$)B+?RS>*i%#)A4 z1zsxa84fw?U@2jCTwlIfwV@e*=F1SjLr3j|qIB>sGV=IUe5G|KxmM`d&#r)c2=mB+ zZ4FpE!Um29?$RR7n@U+LIGOt?+itN#`{YgyrtnLa_3hhuS1!Au5elad;YOoZ@zXSV zfCVF8J9@@$rxWULNB8<}1672nO|_o|jW5A07wSl9g3E4iL!S3Kj!=e%hLjARlIYmu z#m@VGJXhVTJg(t?p;^3>H%x*Tmnz--&FZF$%a0Uu-T>=jn3P#qxTf-W#I?gmj@(q5 zi5OzSPAQSR!LYMiJ71-xKLb-BbjF-=ke?t`oEOMg-@Hoi|AYx1;_;*+8!G#Q!hT)*xDMWG?3H@OzP>H3F=C7hzJn9x{Dmh zQwzQFo@bY!n2l$tnx&|ysNX=pfr8upxUtrxm{jE9;tlaWIgJwPN`Hu35xO zods!W?z2CSr|_@7e3*OwfUR+(sZSa{F_&_0`Kb7#?#c+Eg3e{Tf#4V|kLpK1(;8BY zl-3?;Bl(G{9=n=S+n-*QiodI)N4!0H`tZapV@+idJ27hOm$Qi0i9gD+@D%fU!o{u0 z8PM|dD$xP;r3+9H6iYu66Q8U9*R+7gwb$tEdW-w?Kzqu20gZH7u-);9t@jS7LDK63 zuV3UtNBS7JB?R~v5V*5v4uqx{m7U#xAV)X+1VRY9}6Fisvw61KI$G*bN6-CzA6)Ki4xp3pMEpNWmpXjMHsSt^t$i9rvydPVhZhY&PH%A0Soi)JY2=ZlfON&wcv{1bclV<8AnQu*LzB_WEZf_h^pgAc@B8#!$|%sHv(!l(Hajz?JjfgPD!oVB z%v)O9OYkSx1>R))bX&!CeybZVc@d3Z#=IE|*8ap=(^7}@lYDs*yPo*moUG6X8q#`W z#Bc&Z=`Q6%;KQ@YeuvMca|TaDZ?sjU_H@*EO@0_h2@*lN z$)`nTd#vj35slQw@3S;p%SyLCI{owP?h}rg7PQsEl;UzuNhZ3 zL8WC=O5ohTXxUGtC9nlQd;l$Pr5xI+@5W^OUj_H_a-hNwF;x{=q0U;{C7Vx`f7gqw z>B%vS2`bJD8V?Zc)p2#9d#od&w5WBeE=>BwWJU68(LyA@o5n0}a$MFPR;dV$D{=|! zmyHyP0!FYOU$H=c~siemxFHu!2HHdU`QZ z1I250i|6$xy%Ak-TV;gy$%$R39@UtbSw%b;z$?t?tF4Y7cyF~~lu=T`LrdAX@jX`{ zV`GBe%CklJDMGC?FU>jQVnFb+_tSj1NqN&BkJgDMa^CHCr06#dBE`v?l5BfCReNM7 z5&i$=*6i}9?vzeHSx?&j>Gwws{ZZOrHWA1TjHpaT1V|xRh}_)VY>~CtkWQX5nJzZ~ z)d7uC^yate5;@vr&*q0=gF})}$ueqJq2B6C2YCnZgj}hqeE*p~Hzjg4#r*#G+~wV_ z@Ef~$+>V}08O*qo{-BSufA}pg^%%-O%0@k-PhesVk(9W+E;z==|H$W32H7nq=T79> zoz~Qk`Oq1K_DfNMX%Xq=`PIv_M_l->4|Ua}yh4-mKJY+_(+Y2D!$kD%7|-c;^$%=w}7%#vc4QakJ$`UrgOR@`E75|C% zRbF!m-ssXby@V-fxo=g9si#%hJ@-qU9;SyKCGW8ymt{Zi%%_feEnd z#wCia=u2yJk4>_*GOeCXS<`SxZH~YrhoDJ>dhh(jRL?Al&(6%eR{haQ85tcp**VLX zg)__e^P`qx6z+cKNw9S>_;hUf#Pm6r3D-cnUse;K0?CUp;J5L)+nZ~=TiRYI*z=XO zU;WoGa;ef>NHM}bWGQMAR+rpYW+OzS!8&Uj_T`Q%LupBZb2LYEa0v%bz!&}bz7;6p zA=gVjX00-Zk}TDkjSLimWnl5w?7Q{(8y9%Z;1bE?THR%BH5nE$t82Z;_~M7#)0CWQ zsEK&YNd@9geXz^l2wXx%8%@0dOR+00v`~M%z-@}LUj(`p9@L4zm0vlaezli3EC{0K zIz2J*K+pKj=&(ux!%?xL@F3x{*vBTJhvhF_di&!lpY#O=&JN#b!Ptn9(tv!*;Mmi-Ly;yyyd0%gv1Kzi zU*w^fbAs;(X+4m;t_@=)*cz+!m<&!OfdD4wGE4Psr%OT7YD$f!=evE1Dd>q zW-aZ;=M@`>U-zp{TC0Yyr-81VWfnZD=lPdbFk$li!`s_iZ}>3O7hh$mliw+Fj}@c= zfBlRchHd}+*FswM3sfbEtSsnI`<2y+>A`+kqCZmZ%0jfAv7s8=JntkV2EVfM0T`WM zdh+9XB9e#LD!W&j#sp`8LyP;sJgN|Hy7vh z?K~5m(z7XT?RBHHv)#TQGc#8hg)etqHqnPZSZ+kUZ<2j=26VBFmY!4!1T;IV{A@14 z3RONl+{uFO>0{&qiJ|t_B-|LyGm`dum~VpM{57Y3ReZ!mMEGa(>{V;Z=%GCq{RE#H z?{gJL_jeafZge~B$#6fUUE_Kh0MXtDZFGS-4O1$y+Z^L>4hD*me!E4OjznDU6P!~^ zzpf)CgRSvkCGX*X4G&|!t_o5&(iaA`wtwy%;pKl#5ab{OgGd@bQd{_qwP18Zx+zG=wR+USW;Hz!}fy?ly<9CA#p$OkjhYn*WZk==~^D;1sw$y zg{S0DU=(!QPfU+(_-#Mx(2IuL%1RN7L~HUFdDUKIuTsYLxYm~_px3d>lcs++pKK)t z+5E3@5NtiLX2gNzYd_7qif+jq%m9Al{}N9CebvX=as~r5)(o#=_a#Z6`col}wze%f zY(G=M)25h{JOvg!1JqammLFYPs~{T+9B`LH=qZ*`s-H`rc1HPM_8H1jNLi4xE@(Ja;iKSM2AVYw^PD=j#MEWc>j5O|LK3~O^<7j(H_+9MZ)~D z_P*$!3@Dg#L{%Kv#C!bu`n8Kb*NX9z^7>&jxHh9`!j8!F))H;nGt!CM@XFBE>Kk-7j@OT^lE4Mp$qPV)UZlni43^*X409kM#luJQu>W88I`1H=4X5EY5b zmn%Usk0(kc>Od)(hduuc;_JBhw;|a% zlY{CuqB_NM>TLKt2z<92 zV~O5@p$y!1j4?Ocdakh%Z1cy-k0%IIhv0NJuzTSwFPO z>5~~~D+_xGmm0Vo*Uymcpi`ao@#6}n1J4ZyJvQ+R#7#!C&$;Wz=DjI_gU{*Dt|%Y( zT7dPqi{Q^1wn#l+Ex?In<4NA`H>V&-O$He53%h zY7r(Piw!SZWEBD6$!AFsl~6lIu`&uWHm)+^`2V`knb|mvZ70ii_6trj@=3g zSxC8NM(RMGd}g6=_kOl8C4`Xo!JEV1_Zi*E*Bfm^CPgx_uT>ct%>at*-TwVS3tX13 z9kHNOl}nme;w@O6@oM6Iyy}RiAVaBQL*^6@e?vAiFj+$HCd+Nn%F2r!mwPOpPm)c-uSh5L7Kz@+s+It=KQnv$VH1WqYicsR_`* zD0;ov)-yBrjAttGxI)ofS3Cm)p{k@GdyJds(T4HnSKIx@KB{ptKRXiBp3gdFk-NJY za6d%d*AnJ!S|b&ZS65`bot(Z`yR6;x7-=})T1LA7HQJ0s(l2&B8(0quUj1x~$O|>Osr_d&H|NQ|jQruT7dE(xl-p*NgI%&v} zQaPt`#pl=?mqSG*3BEfHe1iX$bsZVt^eu1`t3&afId)%2+S>3LZ{mQPfZwYB{=qw1 zay%9F5C3mI3K-tt9};5Wb_O6y;Ye;C9z6VT%y&KhA?7~FnD!XyW4@Ge18h9z3bdmn z;ABAZG}Aj_v(^T>OsHjxXj<}d5mqzR#wh`R2N#W^zFR4oo21=Ejtxre>Rp1F*5?)j zGS*0L*uEk)L$DaTx|uJ1xAL=>*A475DJSm1eYt3$Cmg+0`9x-Ui@c<5mWA*9DBl+t z4kEotMlLhPh+f~!e6J5uVg>4#IFj?B1l5znGxuJU#Hn7gWChB#+DddbMowFZCaj3R z*7nBhOxsLjd;0`Pk0DUP$~1FYMpiyg@*#$|`>=}tY2w&L%L!mil)5!3p{r|cWrMi0 zpPb?%lIKqnwC2BGeuy;YC_sXpAG~rK;XV^nLYx9PsAc3Vm~5otF&>@(Dl{|jfIxKm z%77sf!BIddmSUduS_;H9RR!LW9=H059ko*4vh9#>KZQdHO!wdx;Y&FXwSFDxdy?31fVG8|fBkFL zV@QBPEa>|U(_oLpy*0!Jd^a{Gl9kBD4piHXCkwCIXNXkF*oTqXF)v|84Ae!=QY+?M^5QZ*&h@*_jj zw94YFjnrrsuW6pKO;27;D4fJ=M1u&kY86eo>Vd!9Qvs$@m^{s$|H}GO!y5S`{<`74 zZf{k0w9LYi2ChK$_=?PzwjMz#dW`4K9NfeJE}v&SmV|RTdQu7<5fQdwOw-*z|1fwA zAEy&ZWI!bBEaF@ZyikUAj|)|uj`>K*5JEVEo=9Wb*i`MkAe(sD%6rFZ#-z>zuZ+81$EN#)=Hxy({ul0MrI(M%FpLNrkSIgPqr7$ER z--PCISC*a(X^)oCFLBjfbbHu?A;!0*K$;^p*jMoD@nZCzPH|;3p>c@67d`PNpYwEQ z#)t56XMb^XRjjfOkCfVxWre$xf|q)m8(P@8R;?#iipfO;rL1 z$Zy-M6mR>pbAe9{8k|%nyeK<*bQ+zxk+I$Zylxq_4`kUk{ckk9&rxfO%aaZ4@__)u z;B;;qbj|#hy7gU(#j=U7qnvi?PBPgA*W2L%nji>qZ^^HvQX*mlro27yB|Q~617{2K z-dmb1h-+^YaaO=lW06yAe*Hgcqd8SXL0-B(WfEOc(Kg$?CQZdX<_(~z^`5-mE|Igd`ZvuB@DotBzXT>Ijg(EwBW?+k zUo9mGvctz=le;}e)>!5n&hGDxp3tv^jS8;5kMJF|A1v;}%D63+6GtJND3dXSeSoFq zIBp0@VRPtVkX+~Y6SRhJcFYq$;z^`x@@jcaz1j+r=r`}7_pTPI7CDc^V<@#eGVTpf ztL4&o`)`SHLq1i+$wtUSOh?OH8S$;paD^PMLQYFlX2P%mMl{CQ$*>#w&EavSGPorf z)*JV3`4f>O$s(nVMY7JjB0LtkHa=xdVZ(XUtm}9XT3_tJ1C2f?k-H;o*D-L!SR+r(sTpufIbH#vc!l+fxT6eL<98Z63h zD2Ly*UYD4 z(NNNQ*{h|q|FeDJztvO+JJBS71BD`YfR#}Dz>F6fZknR`Z#2=LtSFeJt_cu;Uh)cW zeYwABcr|z**i!DO&EQ(`x3%|TZV2H(!&qI$?wt!%P14#7j*H%5q@>(O5#~W zdU{oh-?A;#9ow$FW+hBwn^1DRoEtl@PInQnX<+Wy(|>mUi_dNj5kJH#Odhh$fKZ!u9RwV`4|Zb z%6DSf;pYTBX&FL^q70k#AtfU{DjLsqoDePwwX| zWVqsb$q0c40voQUW@WFWdDUghD0yNia-CAkLaylOX=@KJ zlfLm%^j7;n>s@$5#}reP<702-KZ98|!K_S$ORy2(_L^3KC|^Qot{bVdeZRPTStDr< zN-{VnH>GcAh?S>kIMaM|AGNT+#Z3%;$MnQC6%AUvwSK$3D(Ro>OX&5a!%s`C52m21yXjElZbqlra6FJGqVWDtJzDqs`IxiyO7p zd+|7Y97EYJeoHTnNJc>`trB7U7BIQZFL2_#v7cW6Y86c+cgx||m?p$h4uK^yT9i-} z7*$=-Ie`B<6F5lOm`6g=!yx1g_(*QegBa8*!O*c1vXO_3D{LJf@F+)Y2q6fle*2gJ z%E|!dy7N(e-1!?11tfPW@s|pZ=!kh2%_yorSSu(s`)~A8SnJ5ePYZnjL_|Zf< z9X~UuqaBJl%&#=9<#EUh>j8M^AFkPsQnopY@0LC_U3kGHuFTF2LGD8dhQQWi?$T`=$8{){-I9zX}2Wj2Nk%HqE(VHluGR1pk4CI_13s;yOWzB-A zD)9JPl~jvxy>ltv1-Y=d3|6n=sFyZL)UJoD6lj$XxMRj0OVsiyhR_Ik&3O1`6a?q+ zXKu)zoF7_+v!YxJ0c&(#;o2!p!3yUO5IJ(-M8X`7nsnglPjkm;JWB_2Rpi#k zqQH&RkPBN=`R2{rNg8wzqTWETsO-lqKA?>(Ipia?lrts}X%g=un& z5KlU+7eE>kr&qI(SCly+3MJmuGcg%nhRwh?xmGvc>tV%&R3F1v!!T-NL=uLSCi7_4 zdPExiEgg<4a#((5NE+oz92f;0Lo%q$4kiNk>?moFt7a^=`x21=Uz=3K5iwQbW*U`I zGV|o5Dq;XHKB7t*Rf$>K(0gEc2INm6lnU|6HzjwTyrhu#Q#z`b35IIxAXbk$I`L;2 z%O5BSKdZ2-8C*~s?%`2pYiD;O`B^!HPF0iZ0MVsRVb@6-7MEFw zG0#OyenaYQK+)lj%kbIXo?Frts^C}}QG1)^@e$;A;+fY;A-#y3p!JBd0w+s)Om>l6 zIHRr`N0JpcB9MzZJsm@w02=`zxgY?Wa#A)^xf0#r%Sg&4`=JF>YAOmr8Hq8r_<0nw zS9Ol157+3F8J{dXkqbplgzpZk@Y#_1POwtn$L< zG#u{Vzj7J_e4N|$M%#z^=biMGXuz%n5T$~=vN=43=|>I}DIa`zge-7uxd!+- zj`!LBr7URpfU=-DEO2A1L(YHjzx&^I(L7V5DvMF~jxRA42=WSQJ-JT>G%At-JDf@X zxTX$Yfs&(qhznpg`_H%~4KVhd%|lOpXKK!Rm+zADZUJvS$Z?wEjKC1tJ2^K+}e<9O`n6HC` zDm*?yWg!BJeE?x0x{Ruv-ja`|Fkom0%eA-T`de?eq`@I4hkMXUepMN|GFah))1zSE zqhG(OT+}Ubw#*@p=lRM-Vm;uawz<`$yCc#+zs11jB#kUBQ&CIl@XbKZk_CmdS#lp2 ze7wg9o#_oH2PxN6u5xxPM0-gMY;Zw{^f(aud11- z#Q0>S#~_?kjfssW@#-gvrZ3BSQp(V55a0W{iQ~uX4fZ+h`CG_q`I&{4w#t!;fsB2O zcJ*h+ln0RqqAV*9g4y4VuVVkO%^!Z?gCAfnfWW`fXlz|Ejijbv?J-FD*8t#Jee5A|)C^IKeh?KLV1tSMqM1K}={Thkr) zQu70E*}N5u41A2eTpI&<$9u8lSwr~i*Qv?Lb$&Q{s5{6bYF3@z#9}}fcDMV5(-CLi z_#Co2Qp@m1(QUtEs6rCRXjZw;Ia5P?TVqH`i&5?O?(PZp3`o#My#zhUGU2x1vk zZT^Mx+vI;~*+Bks9^`aF>m%=N-4cw<1u(x+rR}`G!Xs(~&~oKXbaWMTV@dCf^DlMi zrvLnAn9oLV;|1LkV!O}ae)-Ll@~DM{m&EB9__wE6wj(W111Ymm@}~jsj#K2NHc7?` z$~p!HkyZElR2zRl9w?FJ@cqvGYbfOM46gHAYxw^6$>Vmms|oXxf|M9XZ&TA+zvV1w zbNTYsw&rMD5pqp5x3si9#%r<)jy+EKT>se>ZiIxT5Gj3CTvya^l|w|zRK;xjZ0oGO zyH!yIORfP;q!WWc@?ly!?J;eXSEo?&fgn$*AWtQ^gOe$bLp)`h{P*9b?HJWo5~z)& zO@66xi;wl}FsCzW$ivG0ffZIBMbR_HBu*#dVl!)W^xD!*W;dsy#*~37n>V<&JTfUn zkF2LB58*T!zP3e zwJsVX$2nA<_T*E*vT@VD?8Wpx*Zc3UfG;nJ)`pPQtKDB5qu$7rZ8s}Xa`%Yk?>iqn zrC<&(idjz0^GvN;Gh<@P#Nc!Cs#Z7q2GGswBqb6I8M3JXB|``Iav2|shtJDl+~<7< zc!h8q1{k6rE_S|J;tJf|{cCj>T(Nex_1$wk!UIi@)y}XEu>LaCDA`d%=&J+e9-GGH^5`oTGB!of7zz1uqu1sVu(8B=-8r=)C7l9GbL>Hgs$E zfc0F)RiNNkon}R$HT9%6pCKK*ck%Z&+rx7)et%QPm`WYwbf#4~*4U8jD;l68il1@& zQa(l=kY7IHQP05JozZX@yuO8#C*40p-6Ahv8I61aTD;CR6kzYwt67~i$2(IvWo zs#+zl4Yo7~38GcHIg zX$7^J%)P*Lp!eXWr0)U=hjFa3toPEjLJiTaMu~eVGv{pPIQq6#6OA2<(3v@Len6MY zt+_u*O-;=_e~7`}1-X)ioC3hqfKlk$pcOihGDY&g+7(=5nzcfyrKd#s40;%`e7ZEs zYvsq5W3A|&W|XRa4Iq)Jbdp>->L8cbeklsGvNv> z`;`+ENXnRh04^45GILgLrTmwy;Ufxah%AI#D@cjXwO6LlpZ(Me=FVV*F2}p8GD7Z_ z@FS}s#BT`Lv#Lq67+SaRjULEK1bqIu?=KUsn{O~BJ`q0sKl2D#cz8rnO-xJ-dOsPL zhvssm7zz3rr0*9m|BkY~a2UI2p_(~ip9ftHfXwFle!XbllOP9nq7o?8#EG7HSM0>Z z6AME9@oVL?i&{=7uc6ibbY%D0QZ4uo^e=|wI5~v{QRJd`nIF;V+$w}j!qCa4V3k$} zyckmE3L|#W9N>HW=MPs6KF45cw#-@2*e{wgSc--dhtFXGr3xOi1})-mE_&es16u<;c@-mzJo z*!q394gq1=>;Q|dj~1h~J?kQ?N%tbnN~fzmjK@Ic^$XFA&Yy~y-1 z;p_MED@$1^Sb5?@NxuipaJVUgdjYd=AxKreUv51^%fn(+CLnXwmuQH~!z^1lIN1PFRQx32vqG0eixsk}ZaeSv<9*QLRSdae#L|32+!9DD`HXbqoQp;Ra~ ziYQ()#&Y#S#i{SSGTsesZSB&A&oH{NW%pe*u7I%EWp&6ers}g0o;O47dKm`+IlnG` zpg(_6pJr2LXhT&;k^4v=i|qA<-bP~_zzRR%n6e)yU%YsS{OJ|8K(`* zHycTk2YkmhDB4|`l0<0~@zX5UWSrOL@S(3xgxPFjiX^ENzF<~!K~N(XKH&iwki#Fr zOnoKop__1R&6|bzZM=q#!~62SLuOSr%lL0RS0h=q-yjAamminMi%Z&H?=K5HX$LDM zRly&R1W*>rqG3npif4{W*dRv#i_7^QD+ujfdebXTPmCYDaSb^wTAIaEQpUj_Ofno6 zxv2VEBWxdo=?vXk1G(TjAz-)uqauz?Td3B)#t_oC_$%~OMV=%F2wT<|sr&omO@Rty zDfZ<)lZ7n-@3piN+8f!AzHm0j++S!O-aqf?q%sqD<}@iXqOwzN*#PD4vpVMiy7jM` zZ!9epimvO7o~gi;z60iXY|#P-b*$+?YbXKK%j>2(y3_gJ7= zHSUpZx9ex4V_ez%a;F(%dl>W1zNqLT?hKM5qZ3SWKYYmB>d!0yUu>>1?jg!E&8IarrlOjS_@p8`Tg)fD z#1y0ZOY%-!PY;s7;SooX2)KBMpisZ@0K2&<3hy#Nlvb~b4-MDAuzKBE*7-fTw!KMS zj3@t5EmRG_!_j1G4p-H-memD%L;tvm(%(GWlmU1ayHa=FZi{EzfDXqD23`D3TH$b@ zp>s?$G(IAMHeLI$(pUi$ZWF^H#%R5dtHBc*p`i|54?Ev%?Xt5qPFIvkQy?Fo)9bpQoEcJdB(GZp#fy3PJRgAvszL+|5%`MsZz8!o7LO z;VYZN+$J*AxEkKX=zfGqdUPj9U7XWINE=ALM{ksEV4+TtAQ$XLAF2UTD}hfc!@f$$ z*R;&_7d0{vqZe|t1~@r6eG@Lqzw>L)vxB#ux$G(4(^g|=6t$mmpG7eTUMoR*SaZ$s zESO-=d;Ad_>o{4#pw}xmAq&cO(-zNEd z?|P{X(*9ln-2RO7O^bU|51?-@IZBAa@Fan_1jl6&e9RNabNVZyguL9ZahnV9njyJi zH7&YWN=zKN54}>rBs67HF9n{Rfx-E2mY+-lr_0lD#`-5X-IclvXZ}9jPG{y_1ssobmnTeS(WEPz2hK8Wjxwq z1(3Yv%tvJpbK;Iy&My6`UFm#S{i=oPH6C6CN(nW-cEnZMKc;3RW^gE&uB^0jVrVtd zqhddVs_n1lXi@+P^@UL8taV&qkSknC8(HumQx*P0a72jv)uDrp< z=UX>WNT;>a>Gb#i{Of8V2eQ&mccAu{>34jE3%2km4T*nCP2?-n0)gk}s$BT#OK?HV zm)c`+x^MIb8yz>VFWA#PLtJ9}Z-wE1MqI(1@&>v0_MVr$h}ahg|5EW_xhC@gHe$&S z*pJ@9){VNn?6SNBs7bQ}er!TTYm3bOvUK{_{Jv2r;UswbbhG*cMWF)7MQ>>p>Jjxi z1I6xGp<(i!ZoW^3{5NC4J;qzNUnn%B~PC*_yb`&hO&cf&AD6^6(Wj$GmRfjY^w%*22 zpKpn>I*fbYa+XOpEnO4aZwZXaIWovkA!fYJdH%&M;IWU=0l~ihd^8MD(ovxP(cjno zWw+P~*s_~nLe%tdJzo4D&&;fOA7Ul?)t$;B|5#4JOI?WSu)leSH5q@J`TjjpnDn zW%eJ2D}4b($8h3ynSC-a!D0W0v^S53vTgr>Zz8FrNQx|#r7Wq05TjMLl&o2!?2KL3 zA(aq{kgZY5&e+!&vMXCmhQX+8*@+ou%*=aUbT4_H=l6Nv`~9a+_boHmb)3iYJ-)|s zMm^s0bMI^X>N9<+WEBfL$w|?bwRNgi*N#?7u7MUe^jv1f{0Y72DZQyOcyO!tu>#n% zs1j{c=*r+gb6s=ePi&&4KlMtf8%R}RfCKE)zcw@f{Rt z#{T(@zijUcB-kfRB>%JU0L>Y`u)DBc?uXS$Zi0wpJyddd^BYkj zF8jjK@u^TlLt|GvyTsjg7OsacY$*3d`q)o!8ca)MMURc-K&md(LZ4&|p+xa-T4I+? zV2f3Y6S3=F98>aj&Ez?^2_6Ro(7Y}x@EG&fu(MkpAwWqNn2VJl67R1v(>Y&aF}mdy z!WqvP7NE}vAYU33#*k-Oxi>|tu`{P%ghJIsDIC0Nj)>-bVY~TzZx4V}LFy34mLuIe zxetiQXY}Hz^+5r`#H9IYurlW_g#dpGY@okmj@BK}^g zd>uyLxmPs*IR5AOD3Xu(Yty(#4gM;7H=WpIG0>;v18KkK_CQ>65L1zUHwP4EbBv&oUoXm^u$O{iQ z>=EU8%9USvLsmn3Nc^zM4E_TrGIJvmyBX9DzkO&}Zdlwv4dyMESWT1Hh<@_Bk_IU4 zW0>LgVl{EPc`AmzIr6|A)laW?0j2Szi$D3>8PYLSo&>y6;xkc%PI~5HPWL=EH=PcF zCKl~&IpJK^PDU(~DNrC}+h?t#M2sJ}DSL8iP!a9qN8%v$*~M|z=v9c`?9s9kNe{_V zn>hq2%(&L6y^x{=e%OUgOmo`h85WI2<27?S0a~oiLu-E)3)!NtJN92RyXTHEcKX`r zf6{KQVbS8zOZMo=_mGOnq%m#Ly18Aw1_dyU?U`pjRKXVB5RUt`YmS}0=`I<#XkkW)H0lJXQtdV+PEQTrDQad6{u1t8z?ECgCx-U&x%*CGrxQ-s}$_bc*Ve}xGu3TO( zFS39mq%gS|fmyJap34|P4-McO^KSO+gY369mNQ@G3IG-d1Pc(p6OQ2ay3q(;g>SmC z2aNezDV3iuZ;?~duAH^ERBGK38CkDdzyMWB_N2Qi9(#-zhxA`i1GeQ9hW2L^nbRzX zgj@M_xK%@R;;~r)%b18Zn>SOIY*IJe^IX2YT)m9nMnt|0nPsz{rQUJ~zq%=So9$Vq z=z*85wMDZp8mRV^A3TuU%tV>7i7}7@L}6iP3hTpX4!TQ9N;;C3PxRqUKdb+T8jRjH zyLS&WJ6PQedITyeii#k9AaA06q)He#1!B&REp%Rr4}A_69pWzOm1C>5mLuXRXj?m_ z4n0!P%QSN#$viIcM{k%XsXgyE#9zX(hEdf^O?!7;=Q_Ji999yX8u8ORGyV-hJObj? z_$6L5v##*@!7+P|`c&mTp}#y{~8c)ym++ALZUu20V;nyF(~P4e8Q^H=NyunZ3o4 zXu}^J|JmjU~=5~#L$x>iYT-6+b)cl4& zEjL~Y=kw_4>2dV1lshF*fxcA6*1j2D{{C{K+9;9(HxKTI$K2qL@rh0#V9B~mvpn-j zdv+cH0zPu`SoA;rJ9x*8eL#b`o)upq3#Sh>47RsTU7E-ojLD$OmV`8v#XKQ2{!_Va z@%~Vut^rEl?b+R8QfBVC&^tBcLGVb*R&IkU!7kAg(vEK$87^l#Q?PGg{ryvQHs}Xm zD=K8s=q6At+X36+nwA7^T%VeEtv_~5F%zM8YPmmN($U7|v}TW4&LM#Rkc*5dK3kMN zVh3;z=u*CWPp8TuzZKOY9^!E&Gg|?A+;)MqLm7_9EUfyr_)jmc?>YfJv-)fn4rbS5 zDU@>B?x+a-^)++afl9182c*IL7IZ#EY>rn*~pS;hTR*u5u}{h#J7;)y}-gHMGd~yFXV${8ks~(ms5UEvqbK6M*I9 zl0wMDz_+W@SAT(#zqIA9_+H=3Ws%wM6s=g_#gWKCoh8ToOZ>@6c1XL4&b7``s_RK^ zdK&=JG*cTZwzv|neZZBVDL+HcT#UY|p*NAOZm*-HcWE{wNhr%v=ybbM5Kft6-8#EX z?v;S$nOkz=ZO24XcsdLiPsz^-8}Gq>?m!sUl)w z-w^}i-;dC zLL_Njbo`t#=T_5Z9Kw|^cMFQu{ArmlTc2iMReNnspF4!e#dOqaZPV?8qWeb_Qb3MZ zWoG`|X`anT*}D^)m@+kVREU7v4c-EH9To@fCFd65RTN2J2MqCXnHay1pd0xgQOIQP z4#nJHq@G$`7Dce^{rkxSoCo}jj%K1cPikFn2Bv&n;&A;&X7#r{Kj8ppf|yyOULj9# z-g_t%ZhPzhI2RKMTgyR26u-1+3R!Ih@|R_QAQIE!2?wYv#|jXXS5}+(MqmechiK?L z62N)P{A6AiL=W6S&;m5)hy`ayNDmm8eZDttrlo&l6s7qcIcp76DVh?gZK_an+;kCt zu53n^Qr6M$EX|Mr5vB&RQ(K(pav>nB(%;MFjuu!(^<~l7y@J$(yWuQ{WV|!R`ow+> z{vnE$=>nIAovL0{(tTv6ndr9hK8YSR&e@~}YQ}c*FW;$EJAD2T08pb1{u&sz^&kNR zIuw?@qV{MDit19MuWNQgHh?xgE`guXU3fJ;VYJ1O0vNh4;`tV}IC}s{7Z(3EyrPm8 zn)ldS7mDexTBgIfGq&q<=v*j*keu;RdK*SJWacXNmth`mpx4w|22bVJ)LK*wlEDI2x)EHKfV9Vm?OJZqaUbs37| zWj6#05W9@+(?X&5epV1reS*2nDXzgk@K+x3_d@`1W)3Bo=%b zS($%&pcq*r4otvRl#5Ysh3z#UXpH*J0 zYPEr@?V6;rKY#+3<9c{l_PZiGi|=2SRhhu)ozw=#=eY~`_p*gXtEmkYF+Pwla{^$M zD6GWZ|Dqo^!~ntzb61FG`CWIE3^w#b_&8ptJ?l?F*hxMMa*<@QPP4tSDFqtP&(@=& zq>tg)>)>;6nJR{xdfC8?^{D}-t}?^9V;`h18^PwUKaR%&yxv&(>eKe$f0iQl47kkp zj3~iRa-0hAB5AK`gTRc!&!aM7Q)&~LNh<0JfxR4O;twPr04WA?JRLd`ZVMxEivO3Z zC2zj}1J>;VnUKUna*J zY?1C#>9m=`>U0@Nx^VuN*FLgjNFAlu*fB}Hr4tj~XsJ7@r%6)Km5qLBpRj^VoeE*T z`zF>a9VFlW%m+8zS#9jTd>OTWa}@k_p_JUaQ6B~!L3Vgm$g7$wpC1@1J95&eN@4je5Wg6LlC)e+b?*A2fH$(>hc)`e)gEduq*I>Y-2l++wD#p)7 zj0$Ecr+Z`F->2T(rYkHW91)_qtZ?_trS_-#*PsW$90>nME&>E#INA5S!Qa^JmjxsP zqd4+!P68N(;d}OPOL{S7x4ALzBC`KGz)c}*{?w}Q?+smV?eNGm5zR_e=?&P;_ZBUo6n_3YLz)6}s~3skpM zO@Fi>q+fPv9++8ViH#(C*Gs8=G5_f*4gQrbd<~_vm1{ptH>R)n7=#I6Oo71s1@&9c z$*9nXi`)#KhY&fF`0XwUSbo3=Z)e-{OBIgL`OI_vOI1K0iea;IfAv2B`^&dtE=Xv7PXPa_!%Wx&tAcd*3`Clo_|92Dpz(J02&fK9{#c;bd$f56`R!J&d zc2rwP>UH}{Ivs(dUEAq~BB4N07MLWoH9f5z27RyPYUXIAC!4|JpB_M|0OEGPtlX8} z^0Rw^459@1)prjKk~gA2gU7CG##mh?s`Ju z(zv z&Bbu`p!pGoZ*%fP@ag9qlwHob_G|wfRJ77(#=gG^tH$1l6x!}s^k+Ax$uAb3Uno8YxK4~u$n^UD1J!4zM;zj>|PYQG1CTwRlp zYQ#NJ%BHXE?2UjtJ)y#qZL!aeSWCa=+|xU6=P;AWY<+4i0@NDFq|@FTLOBl@MC8AD zm>bpRXtwi)pKS!Ai~kQTQMb&9-v@Z0HcH=M5JP1chvYrXveXWUbP)%s2U>|UI&;Hw zEtdnIzT@Ad9w44N6|3=UP_x*a?JTOAK5NSZaK*#OZu1LVfrH7)f&krg$cnR-49O4U zToS9IF1hgPpp%fQ@jPHu^P+o>Kv2FmmLp&0(!aqtDc+6L%OY)uF|8Y%ihY?K9%^JsZLA;uLPS0L8*)&dAqW z36TBAQCR%Kn771n3vCpXW}ht3q07wX*(6?VQ>Kg{mlz~`9D0@9jmGFf#=FbcIi3rWhEgPO1ixq|(xOJL6wOyt~d8C*;4%X*2#4AUz!4RS@Gln3Uch-yAer;*h_Ec z*Fj2y#M?EuY^mOG?E*khw7&4B{oo&{x9s`rQCHi-BeI#Q^IU`q#y|x}Nk}rS=OR>O zDtLob2!DQvl2;?hAw(UuPEhZCOu2DMCG~dinh3igM;GRXJY@VJZBfEhw6Ua` zEO0!)sQ{WKc^^0m{&v5z#d#R!%W(*PdRo|dzYF_y91CtnV~4?UxcV+01RFlUada@u zv_m2D3TT?tVJU<25mYGkb)ky{$3`LHlif*eBDW=4bFH@~|pOncV1a0M+UX6=P! z%9jaP&j8~6^gQ1J(ypxP`Sa&yE7V78u8zaB0(h#$CH`hdzwvFbVNqLs6R7vjC4KJv=VOTj3s~WTT_6D7#7wDuCS6Dg2Boi&+$)BHK&k2;TKiL=iAB8 zZ*E~Edv_jh#apeBN2&Y3y6bUvirQQf!f7aqEQ;#Wefw022N>aWiql3?_!mv0#80Fj z0~u$+<1;FlCr}_{!-?-r&wD@AZeG>=BCEQW{RSgm?bK;t6jue9V?uTmi|qBp|M1Ta zpY|)>g+tbHZJRB!P*4SIyqk8~gqFGRGiwJ5hjea%u^W2w!6+RAgqJkU?|^uaK41 z)N(pd+1IzQdMzQfw)vrGM1bG@hS`CVkCEP>BlT1HyLXLAp91a>9su!IJ8>M`w#6e= zF>>W#QTuORaW^#l;%u%(H``wv5JxG5|>6d(eM#z6sd&36F?#3|J9)=PQBrA14an_)<1ff4)<~{O z!eH|q9k1?SsOL>SJ#7O0QCAn-!v3Teer2RL1D8N9+oz`;S8|U>lOtO2(}3#kuTj&P zwv)jR~PT~_c>-tI*i`=-yw zNQS7Sp#nv0Q^2QnUJxjNF>!`$k{9XlV5YiudFqPt;6`qCwnkiifGKfGHrBxVD=>qqkHB! zka@wm1z9#VIX@(z`q0kJLjX;QgAqKbj+T~98XCzi+Z2BU{)aO?xGVFeN2wN-H2uEr^pwZQlDTg zO(l-?y+Oa(KFFF2c#Wg-5}=Ay-U%d-g%wtSur3^D$!i<9f66e215^34Bga z1M2{4p!2a38!*!7f2~9JjsgZG6xCHr-fN)<38iH6873T-6)g&%SG* zMxwr=eI0P>rj89~0qdCF{mlq^NIHhw`|^oykXeGK1k)XQA}du)eC3@nq?v68{=@G# z?$cjsr9cg!hQ`LupeOctN5e}MWvG^XTq1l+z`ZMQ!=wN$vM6_kjVJQ3Dmqc@PN{e9 z)N-|3*5lkz>+DPW@7aypPD^*L~qS9Xlh^)>%fTW(t%~i4&dmKDG z3jCM*Tob;${I*;b*c+ySaytb|=@%gi-W71Jor{eYlN)|U7D)ZjulJb;6X`MFT2yr3 zN}Otf;D2C|&>_BS5`=Pu%bA0*f&`@E z&|sgU2tw!QMrF;qcyy@7>D^Vba^5Mpptq_I;nwcn$C9VN>P0PwP((j|oEvS8u7lOa zNKQ#539w8Vy*m!dj={CV)jnVkVL%Z=K*4$azI?)`o7_L<(3ZNBoL7ZBQEBNHpp5Wj zfde?Uzx&#-z@nFbS#*fsSZ5mR8V7kr_Qoy2tt{s=PdYL@nF;jWmx9riv-3T7){P<7 zQ?1KwOKWVG4&;xf3dQ3yY|dQ6eSUov|E1ibIRkgPGWGL#L2C6%3wZj48P42~s*6R7a`9CC9$Jp_n;Mq}~%kmqk_eQ_VW}5d#-x=&`s;lR; zQ!JoiPwOh!%wrs8sXajqT(?AXGsE+mEVt*F$~WfiDVI+M&2T(c-kX)2lyz~Z*Fn`1 zi-z57WLDUHgqQjHmPnzLVnz>!Kkl4524I=T9r<%SAo@H}>-ihCZ2T>r`K*3{>7m$g zbIb3ux0}H=cMBnu)EKH<3>I}>-~H{9rSts;VM1iCFricG+KgTmPuTOoSXDnqJe4w* zx8BCpyl%T-mrZ@RAYI5L=<)O^0}A;n!9^{0dA>6{DTQ4ooF}n8*7{`wb@JX9O1i~H ziD?3T!os1as)PXVUK!BIw2~VfIw;dV5STqUwC}(h8Suc)hvFF^16Mi;fQ!ce$n}-r z&}1F1FP&3a*&HEZ!qN0_OGL?nz?GoAbm-I-RQ90uCuJdO6bIxf;k+u z-Zo5zr~Go9s-v}a3)FVQfj;W%2394zA3HV%zwlDdZ$Nz2RSV9QFOrpXPDrtvcmw`; z>Kyuc162%VEK0B2#6ErgXHjosjP z!t@@U-hx_+MY=#eMmMn?LGj21r=lAIS-+zZ@AS2^1+-6x`U*J68*NHgHTa*{)~>-1 zf+M6R?zP{=M&=YNFhwa_IPHYV3FMcsk=;$1Z$YrWkNwB@4o5fgbouRRRRAyJH#{Q_ zBEfLSZ8iZ=pa#Q?hUWh-*;925GqaFFL1&|T`?9*FMMm8l{eKWwybNjR5{%2$FiJ6I znTd%BWGz{=qM0vWzDU2tFs-atc+^x6TNjDy$;#L_cZeIHzm{@+=_}~&zA1D54BLA- z1u2f4DL7;JvHNwE#X=vfE#~IuJq7vnbafxVE>uZP{P4x=yKkG8VEB%CDeAD=mrDr@ z3>^6sGd7kIX(q<(uRk=o8cR9YXIqoWpBGQ1(wU;Qnll@@ZzOJiF<>h4vBMq9l@NCGf8-7K1?n&? zb?5Syf04TjSSnh&r?7O;ySaM!VwLU;-u_iv5XKAGl)Q{%qd#|*U^mVK+_k{J==&*- z?Cav|X8026X|--kQ>`r%AcgpmAKVfPAvd%}clTryJZA@gfG%?0!$ks=wY5k5a4$3p zPRSuL5WfpwXQ+@O6Ew=BH21=bp@BMpGFRjJ=8Nj;=wzf7$N4TF9Jt{?9hCKKLL!9% zhq;)InwlOEz*GcBgENd(?Ng-VNB=piwDh6RpS6~qFf|JN`{ZjR{e4d}lW^5TFZt9I z;vPL(s9a?_Wm`7nLnwd!y0EqTnDPTA!6t|6&zVGWu6H#Rqf6b{)}sXoIEsZy$?Sl8 ziI3%-I@9@!_9Ts-yBjTHOY15+2~?7?5zQU*#S5xD-rj5|3kd;nOH;k^SI=58AnR=Z z7g^_R2*A*AjbimVInWNdm~~2M6AS!VFb&j&P?2bT@lE@ZxGWNA2h+K*O{>D^G)k0^ z*mX^yfHpX2bT4Mz+dDSH?}PBjbk@vJRUc|yac`3MXTCCyNq3Gn&fw1XvA1xv?RtSl zv&b$7__Z0LIA|(h zX=Ybu>v#Ep&o+CBMSMw|-N84Kk;%J%mhMqB!RhL~d$c8kL_tDiWMuQOXz6Ei48;LDFI<;_CsqH-Ey`+%-z>!re0qU*rS}&{8nlO?30jXcI~Q*TTVaDWuYV ze%{V*K&8Lw+)>}E(mMr=3eXtGB|UspO{z*ya|Ex$M}dS^JDuh>*Akb{9OR%%#R8uW z;Z?(aqdcrEJ68KT85^yuV$Uf~vyWs;!vY;}!GmDkOi+EPH?`Qb&X{?b zn~h9aD<%0OO>YjX2m9hn+exM3vUq8=R}#Wq#0srUiEC4RssykC-;p}_zDU5`Fw_6; z-M35a+a~PC{LzK}pW8`%EP69~$peJo;9$}0Nj+ZgCjw1z>t*|}mzZJ}*JMAD;ffjZ zig537^_5loJ*87M(uM}0X95@4j<puUgbYOhEYBHD#?R(le1zZ{xw>_tZZCcX{w)WCt zEOC!-%t&2GiwuXpC}BjYm^R>Q%TBfe7DVW}>c)Neu$#{eH{*v~4|mGd5Xv@c;ts+9 zwq9J$gNK`&FWaboq^5w06>HA$Wgb20cc9{qpYgkO(L9-S$X1|62+#^{{1ob-u}giN z{#|4Ol>Cw3!Vp99dXcDzLPvN72Bqi0KdM=~E#!nab=xgGL?E-qm?m^UqMMWdnzF zA0iX7Or(aJ%qH6Ebkkt|-yZVpDYbU-o6VZJprE!+RGBJS$yoxVSj)qvrfC5}Ftd!V z%r#%67)(3Av~ntf55}8w(KK<@o|a$I1N*}am!ny!Nm9Dv)=0%*IKbw;kbFu?W?Q7S z`TN{SI4dhwm)CS{IFr}(oo)Ut1<3u6HTaOz9vV~Y{=hxJtWKXldk1xe%=)xCsMOjV z;p8w|7c6J!mPeS~K?n#a1>(1$;&#ux-ivzxciz#Q>m8Z}2g#sAkBmXa?2N_e*JNRtkM=YNNAsJBW{RV)bTquiIFEQZGEQK@U{7R}<>! zMCb8n)O%aRv-ghDb|({FqH6{ar=Di<0XDXK@zKvGLLG2|(u3R?{KSL}&KcpLO9|Rj zdWD^w?pGDA`$tH`YmXe&Pi4XEZbP}V)&4OEL4M>itG5^#Zl6&$yNt)?``tfx|Hnhb zq*){E;D=akC1PR+)G{)(;!blHP!W|YQ$QqUl?Yix(b=VhPGyzmd{;QQ;^W>ytFHgE z>o6HmW1Jvo1>I85X1*=7JfY>>q^?WL%YR4TjDSu}GNQSnR~SS~g9HS+%bcgf&xctPv*;kCorkQ*HcV*Bmm z0+dcO92F%fONvQV9KLtmwuSjkuB9XHnWg}|7$Zc5gMs;P-^|~{d{1rrJS1lORIan_ z*s*%WoBrqTtB4Y&-%o~8ZuviY!U!w%#y!*=o#Q*WBMKM!7|asCTCoTjD;1%IYR)O{ zGcfRv)0`R}r#){ib;|ytBNT05hrSX|vGOtMc`Fk3rkD4r0F>X_9^zW(kgn$`!WtO%t?u9zl2{>kX8Ic%8xW9*>tz|q zazAEpz1Tk?*DwA!R1{imk)7xL*yjt;H?nBd7Z<@RJN4oP-uh17B<7YD4Wnl|%W3p8 z%=XdjAR)f9oZE5LX<3`V4bAZW@%UFcJ9&@g3=f~9LdFGnw#nJo+Z?*HZzW>+FnoO6uBC-<9E8OJ2T^T~DABJ7FPqln z^Ciyj8d*Xp7j}*DCFWw$^+cH|vPMaND2Z_6;yv?$#asq!p*6?UZjjB04F@#0tEZdA0QPz}-O<-{+?^TLV&*^Dat@(6Um z7;p4V{?D?xK-KCo7>RwZuo-sbV68Is2j3ui$m8SVI`tW(TQr%qT-lVQ4{-h*`VQRC zspIpv2Sve!=*1Egsnbt+FvOyIrNX!V^0_UY+Fiv;!)#E0seWEYOO^Z zr9UrcN(O6$H0a8BuhG<`Op#%E!55q18?7Wjw7h@c=N=fg4jCpn6t6)01u}=I zVhuUIe7SrYpOEp3mR1(JGm$wj5$mg`(ORQfVR@Lw`(}Uc0>I)wt-fg`jWO-wLSfN; zIMGAr?&lvhiiag&(f##wV7i;32Sw2hf=rBq>>x-Lz(pZy>v>7XJ7Sk*@_l(lNt_dH zo-RTpW5o&DE6ZODa^Urymlcg3f@W3E&ptm(nbs%T^e9tsQm0oH#i~q)SPEOazj(D~gp`4jM(0J2D3k+NkMq0Fe=o@{e)kM^w_6OSabj31T(9WA};x+zz)oQ^Q6!%=N4-IqZrtxQfNH^*cqe`-7E!xkc$zHU5pB6~5u2=n7F@ z%^c>u^cG;jbeyH>Hk%0mCmOCzsoy}yaFA13_lS}1QhHRV-6C>kL%b|+{I=CwujV(s z*UV2QuwKR*P369=LC_TY^h7Eqvj|{3BKtgc@6%2M_r(N912CgIKQqc!$kWmVaMJ~?S$%Fn!u(1fjty>)n|U2LBH(}aND5g)XQN@B zL@cRuF!dTyMrC_A7&OasNolxmq-ajo-dYoEMchce4heU{?$R>`UF85P9`l`L4I17VwG}-X13bUP?J)_v$4vB zI`*A**!Ptd_ZAX7(0s?JI4FRVz`_}wZ=?R03er@z@vJH(wihuiURH^NqpJ^c7Vjzo z=CrHDEpQ9_l;nEYzOqqJ0U2sd3pk@$#Q&yw65(F$qd;9a&mO@4arVgbR zjsA9`0}+DWxS&5eP%prCnJHvKLS7u}JizM8LI;cs&`B@m^wuNKtD3d)k_q#yX?H?q zO0}v5UF~ODV)(A*4=66y>-K0CUeTLDIif2G&uEqpKw{6p6nB7g=mb*VJW-H@%OaE- zP`>;7s+P0vx$3WPUTx4nJtlijW|VI?mdF2lT_HmM+h|Di7p=FtUNQsd+{cIyyl-}t z0c_~-p{Aq2n)TEqx3DeWQR^322T|UW* zEhKk;s+GEZIzwGu4A5HUBEM>BDOUnpe5L^sq#jT)%%MJ=_l>P0kWCL3yG-bzM~8`X zp1LKgXF*|$=sW-O!&|D9C(Vyoj)In5EQ38ZV0eQtD?h?ZdnjBPY`o+|JM?zHz&hev zQ)Fc)DTchY3>GQ~BA9=V-W&g@QU7G_xLyQ6B$Zy|Cb!bdfcFzN|0b}7Y)E2;0A;kb z+EFV|h2gqJw797^6KN720uED|lC@Ad7)ntLG|aA%5Erkkt9w0iF^M3Gksv)JdgCDI zu9E6s;w_kngQ)_Oo-Ot1%j2gTjxa=~YbNJi_am}n3oIJ?+agLCSr6&UcZb-}U+CRc zV{*6AKfCHxG1}yHFMdLZaGgPA-J_$w-vC`WnlrmSQE=SwL5+iS%`E`ob!b7C>LMq% zF^mQCr?p9t?%rR+27*HJ+*3b0rMtUy2Z*8*xJz`U7@;v`cJg$!WAhul+Q19Uzp&#Ps5jYA_$T(fmo|K zr0);WK`$nW9T7ZUlNUUDniao63#X8^2xPzy2uo9F>RdCfXGvf6H zHh%|mH0f!Rg5q<(E|eLnT{i`Gz~F*OGe=B$&6Hk38OLlYGZ7bDR+TL8Ii+2ee`=on zC+ARu;-}rv3iI!f}RdHGc^-2SDsw65-gRqLAS zV40Wr>Y9OzuLCV?7q#wj&lr5y4az`+zr3Rgneazocn_}}){&L>A?x;DpZh5{&Cw-N z-}n-`WG-O0?UI%zTj1r)EMzW~@DRi4zUV5-P||FcMTEn0CM9IdwE?vJ#|)4e#jons z9-#tQMVX&ypES+jsN+2)pS}Im%Y26&dxQL>*J4Z&)!e+ii%8GdAwF8&JSjM0*6?E+ z?mPN>$egnOGHJy1mEZ8{2$>dF^&O@-&zEBI`NW0dPO~`JSCzR(u%*v5*CJv_+4^jp z|0Ey(QX5$|06)=7soYmIZb0=2_1IH}F-L~AVLwDT+#9JGABKUAH?M=z6vianL9tsQ z;VEoF?|L!EOzK3YMiq~k%^=%%(GZGvx3by*azXTisI!TLL89byoy8!XX$tm*Qr=J7 z)ZA6{ksktbr-qPso`Q`MqKnFWgBcDuUbFnS)Fs_=v1`1hX@w+la= zq}5&?v}E0ul;xFC+Yt%I+ia<%@dw@x;^c=16EDpk09%zNA|fLzzV1WT@)b#OnW}S` zWQnG5>q=xnBj|H#F)~zYQ;C*gRq6X-TPEUJCHIYbw*sg|&VLQ7@7l10oq+r}`pZTa zof}Y3VP3;)j_I`RQsgESRAq%J87G^eeL78OUhvNjxEk@*9P^0=2Ts$a9mFWG4}hlM zH_-{>6(AVWqf2S)-(f$*Du9~uQ#5Jh#0PMxp6Tv#KXSfLe`odQS>$<%bM`6}1i8jj zS@RCxmX4GOu(W(eh6D`v1P#C2bFFi*JNzv*& zhrbbe-KTTXai%wvVzZ?4&X`-nuK~3iCauV86c7*YZh^{xVFmTV_l|!h7i&JVE>3tO zNMPN)d)0nK%JZ!H4C*Y~oIajRoJR@tBa1mEDN{>2@s#IuwvGO3PhhV($e0WmycRWQ zT}p^FR2^gmJx5XA%Zi5&P7+0%BN;`zvMb-@?uSXrvm0cZq8gefLn-6tt>o{+H&n{9 z9I_{o@v`i=nu?M$ifVIwJUl~PWyWEy{wscJ1Cc`2*7n^E)Kq^CR@Y+LUPZCf^Yg*+ z+a1(bgC%CZJ{-Yuav2dvsKma^QsZn%ACE8X$;my>Tn?;oXWYq75-U849(-cMuQYq3zRs^vx=2lL%9&KQH zJ&0k9=@pGqYBw}oR7MS1o*kJ@f}Z1L86C*1={pc%rwx0TH@Te1-+ z7m&uqeVEIos$K`v+40KV%I}QpzEZF$Vu^_RYUZ#K(?&}vtmLvB>a_u??DiRUV=0?L zhSM#mj1g*;oIJjTyeQFu3COJRr*|c&T z7sMIAu8PURejJ$f!Sofu<@CccO%t&w{~R74Y>N5*p2t%HA@BU*w?uH*Z9K8q&e*Ha z4vpWM0T=z!Sy7lWBT+NJbDs8L zWPwawGR|A#>!#WFlkU^2ewbW=#>Z^ExJ^RGI4GWI3-wEz95cohk9- z=^IsN5N|YR(4}7)*A`g#7DFhe0RO+fQ3wT{@dkt6lD$9Z*EWIU{!LK(?biaD-@a10>iErP>^v<^`th8kZ z#Vm8K%Ono@epeneevVmnV5Hi;a?LH$`8ms7ZE0mS$b_e%2i=11u3w5%7^bX-nQ*z0 zz#7Ra+L|yzf2I8{r^)&$q9lx%)s|vHoJP5P{P;1(rJ9Gk9*$m&41#my_u&`Q5uxxZ6~h&&fH z7%5lQDOGe4ZEM9Qr2vKjL2pz;1BCw5zWvJhZUf3w>KEm?dhYz0Z+i}(n`~EbvUmn1var)`Kcs{Ugq<9of$*I!?`)NfHW9SM6AK?cc!)q{FRn`0}xL&eD-&nKh za@5Gn++MgSLAd`-2xXr9(X&Dx?V=oIo3y1R=-IZw^TLE?!4*CT?X6)@m6sy@au69* zB}@!|1v>PYdtd{#_pbKeO0)5|mcR|il+yOT_X5;)DOf7P?_QD$m5bs>>uk-q9zrFH z?WZ*w)h&&rZtuLp4vh=G^APeZ+Me?U$dC~A7n96c>`#CYE z-~+b%`P25+g54ZMCiwkaL!%563Js9m#XexAs_&_sw_wZKwrwaxyf#Dk2H_2rabGNzeB1& z0`r)2P*~K-9s#FP!JpbZX@>$j96tWhd$4=gSyw4Hj{TC4dKnTT+OYF z^J`@PFG#+2pvA%*5%rcTKmWd`y|Yt3Sq zW5e-E!^)r4d9%lJvfsMsLD6=jvH6LOh~=5@S>0O46TpmDyV@AZx!vkXzi~z`)nJ;n zrPs$8T7C2ktUiJ!Y0W`9Bl|5dcC_(b4tw)ur2Tho3!&VLaHOsy{HN~CeZCaAt8%>s z=2z=SicOSpo2T)7s2(r#FDoQbku_r)a|>UYWRf@)oT!gDE0B~&dQ8DHcLHRn1bBIo zl~rnb{+69s&n%#Fm#K3j$J|sl$|IUdD0?*WuZQ;D$~|cXv$nia6W}v;_=x`DOOb`%~P}6MCYD_n44df~j?Wq+7JY zukR-VtrVwyhFo6}DRr;c)?DX^AT-oO#!Q}=+0ueJst;{&hPLVVnIinYz4bRvXpbVp zD}SVo1pbk%X%F#47ThLVwk5QnHmrC3AJ+TqYPIxyN$KE}J{zVlz`by*`CjvcMhv?1 z5I*CV{vpZ0yYvKVJNym^*Pps`kxZTFE`Xw_g{C3s(X@2Us#K6?ft*m`|0VK_)T-T+}jRLRzAIJ6S&YZDieNey!AJ0!J-(tUA1<0k9=~ zgN?78IyC3iXJYth$od^ME86$S$qHI&r*G4cQ+=>q_Km!aC7=8EY=L2;CT4z({u+YD zymo?jE@FC=-7^xP);+bOWdZ{n@A3$nE&MMnQ!4$k%%irSmDJIWhla&e=3qmfq0@fS zw+wTS|25s|V@}Vd?hfX&{wlR4gTbi%zm8o1ruI%N{{a>BCO=LGiBe@?puY?ZW=c$& zuNkkH>+kgQUl@q1S!E=a&HH!`{hTpd*}496t{T8gD`xUasT%L%aU#2fe?<|TA%7NH z<4zuJm-!+eW3k14WjR_5&1vp^#uItIq?o``zw56O5?soLUF`A){8KyIyVY(TIa(svn$ugMkff4%WL!+BJFfCgn!e$e#fYmc`pJLJA%D8t zq?7vY#@RqOqUjy5uR_wn*u|eBP+$Y-^;<`;Z-$GMaC$;h)24P5^mjhzNu7KDb5A9R zSc726`A`t+;CyWCf$Xe)JF+lqd$F?ea@&g#X!;ML@Wu z7D^=fR;$n+v3F4p_raEPQlH7juGLtufj$wx>Mi4Hd0PVhB)0gk#q6>;Q~j5op6kt= zNx94DQ;3e0H46Y}JoV21umKe|(>c9qK9|@98oX?1N^wbZo|PbTwry+d9NY<*etgst z>)~@F9`nPqd-(iYguiRbtUsZ*wUq@T>b>qH9qw1L>CP-uOazpS&}pV|;+I>+nx!y>2$v}g{BBiA32Cs+~rTDjU&o+#={U&Z2La$Nxj z65vtv{b2GJ8MKM)1hmJydQuQJJ#!?$qB)|Rwm2?x&Q8=(-f6+tGg)&Ey&9#=urfa0 zQE8zZSzgg^&^OP=e~|akBA(63B;WRRi8~5`9odfTMU1{?`kpYhF-7pV*a8nj5;JXx zeF=lXQ06@a#Q6)KT3 zCJ$~+^0yjGnl@RepKHs0b?610yevG#LR%%q^l{B%RVf6eT0n}}mwDp-Wu&Ef&+j&y zja#2Mtu|NYU^)I&-fR6Oxi1m!=D8Nk3_91Ox6~8NnMb9-QV+c&rbS>Cl4)O9_m-A; z0d}w*F_QFxN$uK~Sb;!ou!Bu3#4@#5#}rEIer;(4GnAEOnnsNSJ4^0Ksb5Yp2oxY9 z=c*Ku5~Z>8XoVh)vM7Ge$+bv;*JQh_I_2Q2MFFJ$$t zVpdog#yru}4s(Y1)!Xm<2Ri~ZhoP0{<;_NjvOOP)w*sa|An_xD4$uolH+x%_ zE88?0bKYI_c+&gMRtjO05G20{EspMmxlBxrvzuphrb zKU5MrB^#Y#vpMwEeiJCFGH2N9jl?tTl_V>q+95x)nmliA<&&8SkG^Cc$LEJxeglIA`-r25$i4?`w z(}U&$_wV23hw}OABY5O}O%Nw0CzAL&<0X6MmNTPsdijD|?0%DmQU_?9?ObF0WVQ;{ z<^)`i`|YP-O+DvvkO6r_3w5{xiZ0`PhjPx|*iLkFo6ZD;61WGi|Jp4ON507h z_IiSW`Vu0yC`t5no-xVGA-IA1-bA)(qp18$lgf*QZJ)T29A*5GTn&y<;5 zvLZ%@r}pM0AlBGljZ%9etB;?f)cDMM(D2Bbccr#(3Y$(rJIN<rIi8I|4(Ue9tidR z{f|d>iKv7uw=7-TB%$mT%D!Y5BeG;^lzkm4Nkv80vLs|*vo9k{k}cWSA!HlIJ{U9e zdk%HqUEZJj`QFd({$;tE*X#K_&vPE^^iEW=z%(o#q~LVc2?XNaX(h0m&+UGu0P^q2QE|~f)2U7n7neJSKCVEh z$~U(WzMt4HZfm`-NZvEyH{d>TNLL>1K;R6Z)R5mQ-;>);mjiSRWl2%CGzp5~CD%Xb zFn7RK@YL5Y-Jd6BZEIp5d`TK3G9_VGLv+^w5)!cKBdg@+97;$9C;wdbK@2|89vRc0KWRdgps0RQ^9baNIGh z1lyGxpHj{V*^gU0E_>+&Sg(4|+MO3A86*2k=l^SnQsn_XkZ0E@-lCz}Cd?0eI*+SF zCX8_xMX0EzCmS!U4&8AdJRHP6Mm0##Xz?LHMyaGunt8{R6-BL^u3qGVb5p(KVmv_Y z@8z5{clOf6`hkp_rtI7xga;g^-k1^-cn8Mvym%nDC#EylRsidDL|mSK%?WBA6}&Bb zWT}be@-P^|{MGW=SvAkhS(CNswBnQ`3LVRC%cKFux#N$^XuJ~Toj>=u`lM?!^>Ae{ zhX!hXIKpc5R$u9cYJeRk!T6~X@sC0j)O8U=%NFAAh&zv_%^IZYJ!MFDz%bpBEmpMA$5^nY>`5aGS{+7b@%`;j`2t9*$ zEu=0>;eomf@>NHUocTj*9zQn}x^0}3touCJPW6odSc@C1BfB)1M}MRt?o|{Rom_z-qwqZdQT#uJz^Q7CHCt zgqKe-bSLm;DP>H7$uOIjNL>{a60_t-LNXHa9Ns)j>5)wGQqvt&vS?9gNDQ`~lN_l9 zHc1PixxVuuhL$7*|C|56R)&zIk$KBPc=k1hnfg_S0Y3A4l1Sv1UkthJ&jX~U4Ab-ToXO`n9logab)odYewgsv zaf#{6@MZ|*-wBA$e4(z;)-xAB*n&TQvnqXS$QHKhkUEZOgk(`>n`?KOE0AT-=vENA zj0?5E-#DHYu}<2`?@}mqWruNr+VBC%D?7oi(wu~FK!kritlsbDzNvt_7kX67I=*2C z)?dlLtM~p(S1X^GQS*!)8=;(@LwrEhEPjS}@vWAvJ(+DOTHfl0e3@Wz#DhiX*o>CC z9MZF1%Man+vu~y_^m=Vb2M>rdHme!RxjhL{s~mm+9%*5&4z=U9d(>;>zCL?W#hnj5 zv4?~MEKLYlT1BoVn+>ouwp<$Ly_UugEDiHeE#g#goMcI)f(BihhF&|EA00`ZCYnTj z&GbY@qe77*_b0XU-dOInQ|z`@{fAxNJeD^KI0ZnIR6~=Ym2oC>gEEY+lE3hPdf_qJ zueVZ92je<9x^|mVhB^N5#1qH7l`Rlw_swVeK$NezK@-H=LhJG3X2*W)QNd~HnSTn! zJuTP$kj-Hglf8cSnRbx(YxKxPNxh@oJ?J2>40JL-Nt z{;=8kUH$jhn50oY@0nsIs2dn4hIWVAtrI?pOP5evqZL|5nS+>=@PLIdKm5}!~6W7-~1IKlng z+qSE;r*7(MSMf_j>)Pvbh>(`@HKNIFsn(P2xcVNIU6Z?!P>-iCPBYt>1K0WWO=F5K z?;Aj3|HtCS>QO%&4pC5asJ0i9&}*SCXt4=E0|Xg;WKZ8xA42qdyw<`Q_VJRMYdYF7 z$#z*@W?f~#_bqq1mN7S!PaW-su99}uC@CLL1;2U5{dQ-0Juz_$CBXd|r4)I^t@hMp zwn5B`LBYMy^ulgAw&osK+y=0?Z~`aZa@y$BcK=NKXa&Kw=ww1AEe@}=kvZRo_!x>a zt$Nn7bC1M-4z77<%{$y{oWWo|VP;0ehp_J2W^_`?{M0DY)??$x8Nl)fSLK3>Ru?gq z<0ZHfv!i?cefghfEgSKQv__pR&5F%;ny}w`U5G(r@LHFGSm|uwI}O3%09M8$X_w?N zmieDU@nSFB^MC|W%A+It+)gSIM856ZPkeeDj9}W=?|DqPt-W@9{N2dR4QZbhaR(SI zNHf8Y_BqD=BivJcPZdz!oSkg@(soGp{NmC$WNcxfjiZf_f4JF#PW5&?@2+kG!jcn;4i-TM2k4(`{)s@>pMcH(q--XNhOE#C2t(P?mTLh zO=^{+v~Jfe`L?eui8+x%T&sWq91z}=2rvmEF++aDH>wI*ur`B8U0X;>W0{lgW(!t~ z%njzZOX@EV%>`Z-L3-=a&*%y43n&H`D-Z#4K_r>&ppq}wRmH6Y3a{OPw$h54VL?FZc0dyvp#I3WY*FG^og} zn`!49OCYRA=~^HNmmlxB=+0l>oty^Mm#d~Cq_b9;<{Yd?o}A^kyJgQ}Y{i$v(=!jY znh}3h$Ub}FNI(JUjs+?U7G6PEr<&=)xIYQGZ%p{}4m=^ZJ=dxPZp2%&aUt48K-8I0 zPKzwV3(}G_Z~_KSMNdz!e9s?E+SgD}RwlOX<@uWM9*O5UM4|b%JqKr6`KpEGKcxfW zS6n=cw+L2b;?g4$)3|AWVXUXIdf&#KrwH9g2l+63Fvw+y1Q?HLuwp3s1y z_L~{ZPpvq(znW&Iy<`hEPNg7v4acXaf^kCSCw51hjRsO}1W^hc7Z>~k{~W$0ansv- zkP!>1!{LS(t3q)zh`eIhAZ@PM{39?r-s!GiY?l87KGgJD>Yh;=XOAx?`$4dju-exW zu-evE*V4)hB|-gH2|1hzO|)dG&g4PY9-lJ)iXi zQ^N#%TilYgyDiKFaPt|R01QBH3!b~FuB*+|0-z}!2y^xx+D1DH4EbjA?JG|rv@ghd zCZM*bD%PP;XyE(C#xX2AwiAB43hor$veo5wwz9fh8kxhq7TF$A9^?rB!vnas#s z()``j0Ny^nIJ^-~NJgUhkSgxx^m#Cc)%meCd#uF5v5K{l z&F@9#cjCJUv)!4auQ_j+nmt6|*C2JnTfTS334-VRI_|TGlJ9k?--+jwGhC$qNmsi^ z;PH|d)v0O3NReI2>dDkiR(RKrWLBP%xVZ-Gzd0b@;8jIq8JJ9)Vy5KG_jxhxA|l=s zx(nJTgy{RsyRkOwT8&(#AqzRY%pTf~Z*D};<~m%J0A;_5s-lUF#x|Zqt1?SB-6eo4 zdBmqWjVLh1!eF`Kl*hs*9`l)e@XcFokK7jn2Dn~quM82&2GHd2GsEG9IAl?-V~HQZ zJ%>=S{$l{|XisQM;X12YgMLj{0V{TQ1C2d4tkNf>EKaqwy7J8%S^V=q#+k!09)W-7 zO8d(P5jP!8aBUz|u`v~y7hSK?ea2E6Nut_%&y-CWI=370wVAp{e=q zwY#i*e{_4ow*4S}vEG4zp2Va3{or+B+gFy+{U%s($*`^74c;?l=QV$5a**W{4j1H? zv53#Ju}BD+nVLR=LFEP|SmHIo_H@BXV=`WyjI-X0l+N>MnS-z!zCt)TPLK}`e!4Y* zOCr_j-6W}jV@ky??v5YnrNXJ3PHX{D{L3fJA80ldT# z(e-2R1AhmZwkX`Wn<(Ho^#{fxsFr#@e;nKHr(Lgpz?h}I8U7%U3_hgdjx4yw@3TiI3_d~l zL)0zz9+=pp9@W4T_SbVeZ6V@1%Z~JKCFNUJL#;?fr6$bD1KLdK)D7+RtDFRVl0vka z>2hNjkDLwQ#~>#zk!tJDsQYG}kBrIlJ9NxIa%{{TFb)0NUhFP-GU1Qegg>&LU0!Y; z#XYFYL%1^(7njsV&TsrsCYMn?oA_79`nL@_4>{}Mr6PW=v;=me5>Y|V95preeOs_U z`J>GgVqN*mMqqC$e;sC%>F=@cKtL$DwN^37ij|Sk?JiVlr4PKAh9;5vy~v;~5eslu2 zDUp+S3oX>EtSmhg6~&w(&gh*U$4yymAD~k02dgBR3@>V$wV9hOye557R>Q5*=R>aI z_STyHOWwlvCa64B;fR4|6DdWL#_RZN6^;b&g3Tf1puu@r=|h7*+!8~dTtysy{rdH~ z{AZ`2c1pI!MsFV9OY`StrD@l>z zNO;M{!QUVMXJP^F+QknR-(>-3;uCC%bkF}0kV6AD2i~Fbsw88Dc*0HiKOIU|Fs6Hz zP5&ILfx8Mr&L&^ZpP9g8(8wS&1SdsgDSom!>aw%n$`AEE&o%yw7;FjbI@HK8?ZKOH zF#U&li;Zo3v;IcPn>+821A~LKSS+@Epse#br`#iI{EWMpHv4toJ1492^E>FTUcGvW zy237JdOR*6fe%X86pGjRqX%*pqg3>E6=N!{Vf}VrEvNcn8iH>-)8dzD=Gl=DYR>Yf zNBMDI?>5?({S)D4B=ttFYwDM-fb=h2w{`au&#yDBB>QTv zlorPI>a7di^l9cea4o7mK{h2*z*7k4V1Wp2e-hiL4XEt>4Q4R?XXxv}xP(r6R@=+7 zP@;V+zdd{Dwc$QG!OVEB&n9pN1>BF-yS}dM zZEfu+w`I@k8C0cZaMAnVv*ZkBGA<8pVvyezw(O*q4WeB(Q;l=Hv}7Q&L&tdA>^~O+ zFg@sH70pb988yvE7U?1H!n|g#p3{p{+`}W-$tG-rYYIQ$(hpvbh-`_z{ntVMdAPOA zMmIxop46{Zx^5h8Zf`WUBL(F)aOT8Bx|tiRs&IKF2nksc7$06{kb1=Zp+Q+?<)J8M z=8T;4)=b!^hs>-S{n9hx-Gw5sM!zCc>s0|cKl!?_XD?<1e)D!Nx{39nxc&(K6`jVNYS3m^ z$1Uc?4vlS$ySwt`Qfmo;(D26j*2>KgX&3-2hY>7m-P=g6$(7Zsyja zhxf!|uCHPNQ&Q^?<4bC_*5YuzHATybYA6^TySPba!GyJJ@BQrB=oyUj9Ir?9A<>w+ zNAsa0=rxd-TP`Cm6}-l+QkAoMO09cynpJMr;M?u1{2&f@9E=KlA<`a%n4m*p6i48d zUTgdtTa|AT5(2>_iu4||hDO-h2Dhv)UfNTW_RI;*EY5jWLTB}{(e?G7t#7_!?BUKO z#bNo?aP08~G$*Qv?iR;6PZcen#i|cp7c97 zXgRh>&yXILo;nhlN=ATv*%GJ zV?VYe`>ExW$=WNWz#&DW`@+VmHZ-;j3=GDAvvNSA)Ye9u`m3AqYiq5Q(wiN3v$a}- z)m=LNj{?K z2-f5fKTRL8aSW&It%|q|?Aq$wfLaGAe$IY8-dbcRP?$%Ny)h^%b41-%yUW5geim{j ztdDSCSX^}{<(&2hCE2D|EJ5dN6bz!iTCJY6-6Mx4ew(FJ13#wg9n(M4@}P)bJ?J<8 zuycma|B>g>i2uZNF;gw^#LW8o*<=|elpKB~iy%puFN!l)Ke#aEn*Y|1p6H}kNdwB4T!7DU2Ha2w(JQn-l^l>i8V|poB0uR z#VS_j9p#B1Ya(+bk5(lYP_cY+LFwMPwiXDvXsrnw_mQD;*Bcm1v#uxcNVsRVi<@{G zS{6pRr3g7qcJk?t{t6+{_Vca4opUJDaVnYTA@h#=B%}PqjHlg4Vgoydw#@LyaQhVji zpyI-+C%IrVPJJHiFq`7n0Amx40VQp--ft}?dcbvw%pD$GJGD9FvOG^Z1AZt{{lg9F z5mtqHi~WejO!&#%NEB~uY`kf|YW@t}hQ_pH$9Pm2tTQxf*fA3(-qLt$^2GJ!TH;$N zM(|@}vSkvufQQNO3P>o5gszouGcuq<;siHlX}W0Zw(u;Uil|nVq0dXHEgN`_Vu_Nr z+|!lnILna8FFLyzhv@v31Po7U2=!TJzc2FfD$0py+Y5i>6QlhJG^yP@cK5aUO1%2j z4)1YJ0nz~tQtMMi>zF5#nHmZ2Wh1_(d!-v%kv32a4I<&i@5K@ov`s`WjS zm}m}Ucm=|UVD-gbRY@+-bgi=?{F|nxW?kG`W`QI9(N!#tTN~HozGz_NBxN-vd1rm~ zXeFm+7AQy*4$lvZSJf&v0wi|K9fesMUd@czI*geK8(ESQDYDNAQ%7O!7w9vRpJF#$ zyB{zb6c-ZoHa`U(I3WC8S>clI=H}+cD;LfIQ^KF3L8}+>Uq4N?Cp6Mi-eSV$=425H zl?mekN)QbPVf@$oQJM&xxa8Ki2MYoh(?GQ>XF;?3Jt4NI;%SocPC?hRxd)V9$eF+d zQu5D-c17LtRwM+j{KTUdtS-@KdwPdNeq+7PySLt2Q$W6LaMJ!djZo@WW&10&m-p_J zQvjpXx#`z}5g07VT)`2B|h71krPb^~NXS08pRs z44IIhrAG$fLSzn%PS!G3Lc)j9L3~Gt^9ir#w-%73FMPR@Vb0h1Uc&LKw=Yl%d7NCc zxR4_`i}4;C9p&=)=2N_Jg(}`jPWc0UlObCq_rl!Tt(7zjXJ1Poyq2JA5s1Hru5gA9 z9$tU&(WMrrYXPT|0@{do_A&9#p}niVVH%G#`G)xDDSSMu*$|kbvZC9_`-{ReJ!mXC zol_Vr6l^ zw~JGccc==1x4+H{M(U~TUU?~R-b9MO`Cj4A{;c|Is;~kjRipA_2mcOrz+G;F0Yxe{ zkgDi!bWyHG(|aae9|(w`5**1#sGPD9QnkH9>Nu1RO`dt^$o@2Vh8-(2vo$?Gn7o-a zywwdWc!0%Xl-GK~3VoSTtz+9Zp@R8vvx|~mOm1$EnwG~Y5B!LGBe|fA<7?y_ zhn-$5k=DK;)r!?vQvP1Xhj`Ar-NAV)uO72ha?tjV_N2px@0BeIW*>|qE%NN?88-;4 z>Qw2sc_6;6NYo!sRyEdl&0AA#{?aqg1_bp@o7DrCw@Cb5fOqzHvhKZSwiG1GsOr3Z zi~a_814`C!`+`rLtn9n+-dyN&gyKhp>Gzf%6!0(TCVc#Ag2BMcz66OntIGFSb>AKS zz`eSRu=+}UNh!AOfY8k9urzA>vqVHG{(C~rkR~|FDXkJoqplj-mthU@*~~6KuD0h6 zGV@JRy!R_+Q+^U%yX~ZYBk8}FLu!y%jJfF!6DrPzC~<@kta3E^AzUG8W_u~ZiTNtMfIWS>9#*B zk7$IoUPXqE2LI@-F7yrw$06mY;P}#4h@EGVzHF#j=w(KmiMa$&^~R3)uDtQ4px?U=dt}!_Gs(>vNqt?rnf4Ph3qx zJZx*Dd(!Gc2`u2V!01`$B%wF1Jk36?f1kYV=FT6TD$D6 zasos$LE9Do0O}pIxiV$CH&_}A6VZqw?U~42$+*O-wDvSilqiYjtiicL&8hc1n#kc{ z#a4$HzTSvFwDT%^H-`T3_f-4fz2W zy3}x+p`n5re*DJct5<=}X#5(z)Tp;RWUz(OC~)rxw_W`*f{C;gEd1Cmy;8Yql6wuhrU+5nXE z(2c6gt(5D|d1XZ`8X6-!jo+HKngUulaUp&lgpuk$K7PUBOgHfJ-pgJxOxW<0>_z%v zIO|S#s!%SV6Rtitta#TC=4BJC-Q2}MtRIV|sWl&Je;nm@|$PL_)W0NUpWpZkwh4N-L) zx2mGrD_F0RyP@D8hI=EnW$Yite~`_aa3vrH2b&%oPH{(Rs(T>adXa4NeQ-Oeb!5w6 zK9s3&@XxAd`0}Vf&zGQ8_ZnR-1oK&3Jw8bX*_Y?~c?u)XcM2v^n4RbZt+M zZKI!e^mr3T;x)cGtjsvQZi@ik{~3AMT19vLpvOmpl(4kTm% z1wvJXsXbRUiY=R6USjkerLrgA`a2I>#+H!om;uxwss4Q=;BL zqADq+;M$&+Qp@%dn@e>EVwC*Ys%45{<|laGKSvf*9Df2UE_%(S*4f8L zhvs-nf_~7JWa)6_@>pHa*FxCEMVP`hxN2P^)Q?46q)~Hy^ke0Bq?wa>Z05 zg#}JnGzsjzf*CBitx63XTCiFWb}6!&hGGxFPaa$+I2MXi@zBk3<+VB|Vjovy?52Mn zAm`At0{KWJdQf;9E#x`)ln;honA42Rl9_Ys8|pg|Z-bT_DC1XjLt&h80r#=m_sRym zP#DL<=n)g)f{@wZ@5Q1%Iv@NmcDTRmJ$Rxnd1>XQ6hYLeChunZmR!E+c*GerOw%p6 zSLGOPc&cI0tDq`Mk$TOq4a}bKkny^3%j`0?h^HG{LUBtK$vA^!<>OfYQCaT?i;5n> zUZLo;%6P7}>?@g%%q^318WS=3Rxyv2FaSj~U!N~cP0Cue1#;Wp>7`ouuTSAVtlW7t zrKgM{oZI^0Z!}&s7k%eOs|wMIS2(~mUh{J~db)ECrj1doMS^rY)G)CpTNjrS+<&#{ zvMT)Hi$>Z;V_E{nN9y)s2LGA@vTf$80s;c;4px~KTzmbl{vQkokfazja61X}tbF)P z_Th1gntU8Y?6^8gQ`17<0x^OaUM{&>F)3#l<{=qiGPTh*hmFiym|Xv1Z5M?BRU^B? z+f9p&kq2_VH;p5~R0K|%7uAicpU$#?Fts<1z9C8+(;DM zGJvl^bFyxFy~8}?d6L}8L~c{~*-{6*Rh}e9GZ`GW0 zpoLQr?%s3^r5>MSMC3`!k&}E0i7g8S`+%|4hTfgQ`5sXuaKm~|F0Ei-e{!g^d7eXt z76{}OygG@jo2a6kC#&gN|6OyryWxba{=$KY*CIbAV{D$=Co3gIrhFt4^RV}m{Nh26 z=n`{W%5FXIg}^9hys?(?xsc=6&hG0(4?xatl3%ZLc5GE(bu;(adq5&j17HFMx!d^= z;bafv(?eMSuNX7EmP$)XIM>%PVH8o3XBH|VO432b^|VE(%Cd?P+c__tJ`|2EYWCTx zTAeHG?Bo_fKA*9><&NrIS`Ed;Kd!Pw(j?wma!K&Qb-E20|*eJg#Ppk}h zGvdm4IuIA7Pv&+ad`G9+J2&YWr^Qvib17HKEv}P4;VZyCIM`qB?A}zkzT%7V<{@iW zMPU@i3~1HDVIp}G7#E`XS5?{2%eDx}M&%-_dFh3vr5aJ4NQ*@jt|MSf;`oqS75nSH z1X;P^4tj6%QQ_ryUReG`qPvHI|OPvGotOt-J?BEh)wzbJ|)@TwVBhw(;F zf1$tsSp7W1BGUdt&WC$C+1D*D|L5nsU+Er+23bmE{Z%V7JL8=`8SmDeNzkj&pj!y; zcH{>WKRaieLZ{xbV|@*LkbyF|YA7BQ^PKYF48=l5(k4FcSXxz5M2TDfcQ9<;+@CK1 zj$gLgUXSF-ih8dB8Ty#qvqSKB$6HOML?ueLP;S=B7;LdEMR(b9m88KfI#aa zIp-hdR)^b4Rbua~%6=NXZB9?(5I8G7_f#(0$;~a&r{YTL)4N4BO*lVw+~A=C`oIktH@~~G&WB%{;GOC!k~yJu zfu^q&8_=o=-dlsG2jcqVrXKmOheyf6l3vJWAmRaEbB@C7b}g$hv1wy}bj?}Og1~C3 z8@am|@{WMKoF15x(rNeh=q_#ex4@bx8?cJLHaA!FDBf5qpS4HnCu`zAk>i7^`4V7l z{>Xf&9`~NubJfv4n4VAUs`D%AuiZplwjiuNo6GeqDCV2>_FQ=HJb_U@rRKr!iIYB z`Pdj;MC+W9ir0X2!H&h5ke+d+svm|Q^gjO)eL14E zM-c(NTm|{Vu6EX#h!83^$KUr~1y?e@E4{EwG7DhlALUGx)R(+48A>g>C(8WDUyU*Z z+5qxLdpmqc=1UqpEs+t>DtS?JE!xnrp@?t&y&Ec5T+}$%jO#~rXNXLURYXs__v_V) z4+gP$6hx}dJPlx73DjGk+4ZxMkWo$tNwXevYIX#v+FosnG6{iPWvba&Floggfc!rO zy7N_~8W9_Q`Kp`MeVHX{R+qRSQRn_}#hVnc|A6~_i_J%6)!4{cKXACJ!Q9B4X9`E#ztuQVqhj1;eWNJZ(ut3yyPODKIU*zVeaXi;(N=T9*>< z13r9-xYTl^ph@|bh^}u4k$&fM*J$U`z5}EJpb>2HDuqVAQrAp!=Z^Bfe3lCB2Ac7V z>hS}fO*Jli1akiJuYTrX{q?O5GIkk~WlPkyrxcjJb~8L8x~!giQfY++M555BuI@p) z9g^AXHP=(5`9z+e2GK0S6OiY!*~(svX$xHvDEv!#;6oApr_a?;g8 zjZ(7YRNExxcdNhIO7hT}DE{{A52?58qXG#Ki zr~&>RJRfni*&uF&-`KY&?5e31X)IN~Fo`MM+Iu3!u4w4+Y?edI>ondA$KJ6eTc?KV z1bGC@zXB5@#B_*9bQRiJF2$@^)Z>|v%WW6KszzKCG0?WRuTK{EX$#k=H-b+7NTz3gZbJrOEf&8#A=-hO59<YL2P*w-tBKrCZnb2bQPUpAOi*=yd3qy0kb!u=r;Zv%+=8?DtV%@X-7=$XB zd^-xV-&aqE5zR$qsEdC`Wup3w#Un)Ys(pUeh%(?=e(vsgSme@8+gQstKoyduC2%?? z1uTn@2GO}BAfNx$HWC!Et7W}RTo+YfERZ8nIX|5#*XdEthx<7HT#KMSUUKojJWf&# z@K6!fcAswDu(L2tcAR>XlG{&Y`x6&Mdsy~*z8a-*x};9rWBDxbB!C-ec%vAvJ z`LpL59Ckm}kduV)OnIM;21NZaifBy!ZF_btNWPc+yE_W{!D90LtTYkUMm}M^7P6~q zG2!~bf2(u4aIJhwKMgTWt{`#dJe|hn#Ax{{3^Zbdb#t@(VPFc;!O#G%DUHYZpDfsb zSU}Kc*l&zZJ9!H`wioncgT!PZEF%^c)^Qbp8ZM{9U&-iYol&G74Inxb>SckL*z&hKD(?q8fY`)$DGfTsPT zuNXo|2wIB!pT>d||CI8-_>mWovqSmNsjjfkY0s2hGl0FBSm*_uSVK*=|L=mUa&oo- z``S2De_k^fnEYX;`Rk6v0AZk3yRz@&AnG;n-fR0Fj)d$Btu8Vjv82#;j)~z!@K9Kq zKx7$fIn5K-))ZYiWBD1w)SKxs->3puNV^vh=d#zFGcQ=`WJ>7*ZO||yv%Cf3#b2zI z8fnl*+qWGcSm2uv?t386>yg~4eA&KX7UQhS^-51`QT-{0BPyuYmu=?srgYM(c(cNZ z$M$u7^rMh054&RB9(Aq-yyaEG9Wyv1w!(8bTI}zTWe@jw-?y1ZK@$PcO!;AYQ#)=* zw@ZFk!^3?~H7VzeD~KWB>=WgQu2{7OqM*z!?H?3Uf#fgxAPT>Z$G*e3@AG%DQwtLS z7`g5O+`<`88D3pXKTWhPo=-H_jOKsS-GGA#fOB3Xr+<0}5Kje^VquPM6VFZ7CkT!n z6=H%QijOH;Dep}{|M?-h1hss@k#w@NAYvF3RgNMGo%cImHj{O+bdW7~rBs~}r!fLs z>{O6B9^u91p!9(EzGwV+_6P_MRDv3NL=yk-5X2`Q z4WwxS)dBrORyr9w`n>EH%IU&p9A`*0ojoF0)#*-I|+?{v~Fti1&T>iOZ8i z;oY&@+0NZhXG7{wG4&`M6YBuwQz-y^(W8o%U;dpnWEm#n*|BVz6Itg1j?E$b$1-k& zC@p)5-85zUi4yvcS+&#f~+IEn^A4n;x7!({1~)K+;|8{LTJ!qH6k{)QkeVE{H=n7OpBY%rSnh zKo?+4%Ghz;Pc2MEA>EoUC+(7+u$}?Iej+&O!QR;TN*w zLZKK-@?UEpq`Ov|zZfij*)6cYocEGKV%jc7c+ytdvvU6Cj@KT14AjeH$KUTwr+~vH50z*o`l{N>*3b#QvSWZ}Am&zEfKITH_k3sA|J|{0WgxyifAAZX#Vl?UE7Ayx)TKiK z{08qL2XB6QbC3RZt)%k4H30XN(=*zB;IB%59`WfMQ_u6b?~J@^76eAEnSXgI#h9Y2 zED?++ry7ipe7R-OBN@Ov9J3mj_?HKkvrkesWuHzYCOSZV$Peyk#Sw`eciPuiI2WdK zPkUxtkKpb4bcwR38~N#F`X|8f`Tu~n|Hst;+ORIrB{)?IR-%a8?KfqTcJsWJTdf^) zmH#vaYcSCd0@D6HP^_HN&3~l$3Z2xlEOxhn@m+Wylr)6*pG|G=Z!6CR^h>SNzP)_v zUAYHG^DTW@bl~YpvMvG}%kXvtAdUbG15mqt- zUCsi8{PF3hS9_}*|LlPb^W}jCMqpf*RvV;3j_GLuU4}%MzoXv2EPmvoNv`)DQEcbK zwba=_%P}U$hf4Zs5l4D;h#%jRwDU(q^?5%h!l9~`^cpJH|LXO<`SX4U{QE|jJtm&{ zh_4qQG*{7?W~y0X!A8wwW-fdH9Imz=BxpMx$IF$dv-3Txe&v*1gb*m>fmMIPPMD93o zvolC_4CMZfXT!0Q=z3I0Zn-4aDJ{L7-Hr_;p1b1jciKQM9UY=-2&QIS-goQo|M1bj zti48>XyrCc?1gKdRo(Y0ukof*e5=>x(?5153F4|45|cf*p<+2nt~+C%B4CwQbTrM4 zpm%%tb30H3+NTpe!Ex~JCO&tge-=`H{lov;DhM6f_3TfT`*c%piwm=!#^BB|X$8eT zo(1n;&N_RQxD>k+I%Fkg>Fi$&X@Di6QzEK?TYNFwXt|;uK_Xbdcmmo&;7=`<7bv@F z5N|vWD%rQS{|rUAj+`mBgl8LmN!ES;U-8}^o%IE(2NRwQbT_i}^7P+LUF*tAkB)!L zIBscq-8uKHFrd>d+U{z{|F@O+wPH22M-1_yI4j1Bfw>PgyHyp{w@T`w-bFLL&8NeKj`NYTPEFK!O4e>8jJpG@aGZV2jyAH zk8CiAkr&XpYOigZ!8BvP(|ZzU6w{{5`LFX5REemMC-EE4zdQQ&yo=KL@NQbc$XwRT zThguhk~>>JFmI zhXagQ0}ncuy%So0cX0ddA|RAzbsa-bS>3#%`+d8zrP=s+S#nF0@sDDB+%>3x9?=!= zcvb9$UEwycOrnsge#l)0YwvZ|2VeIn&eNOuf|={5h=E2R-6lkxPduLG6$B)I?B#}P z$Nu^A_xv{C5t-Lj*mFt@2Gh(|4bne;CPR*9)%mh7-L{HmFyj1zoQSS=kxxjZ$aE$#V-cQ9j+#9 za8MM(;5rtJ91$Ol1oR`Q1+6X@<>buADMMFue=SeBX=;+>SJbX*HeEx3OJ5!nGmyT^ z)*3hlq-DKp=HkE1{r~M)e9%tBB;Z%zEZdvy@Wbxz?yW7khSjsH`W>;ig*?0TcoTyG z@H_*i?6RHd5sT8nDL}Zo6Kw>papZNV{Akb-eRqUZ6cqGkb|!Ch6MOdUKT-aF0*>B84Wdnm6gDhfVioQ48 z(h?8bGMcj+?1@bLSFU1g@5zf=&hO+ z2sVzS*pc1-9}S3tOk6_Z3YwEJlR&}D95psr0vlUhJrBgz!tVTlG}K=?<51P52B`O4 z{^!3OnI7u?`ml)iXG&2tv>5y65fUaagGZf%o53n#q^nWIGKPAtQ7gaxp)v{*pv3gA zA;qUpN*5$0X{zM#U|Km8PQZ>f;SfNXR9aq1^IS7>2+BiJpkIHEDczM6QZ70}yHg1# zMssT>_i(R>!>mRk4{{=i#n2sc3SaPsr_Efk!J7}(SK&swA>8W*$C73Ko%@;lb5t4U z?d?4l1@)t@ii?Z;n1Ek>zqo+II^Ax`w`XOt7ciIYMze&z!I#o(usJhG8Z$0OX1cKuw$RZpAt3Y_bWs%&E6Y^Tu94sQH% zpSBR$*LB(NHh(`Kk%C|6)&N~je`90p3YbD5sXR;AnpB-OiX@CKEC_qtBcS~-6^nCd zIA?r(eC_0<-p0~+qX!26u|^c4dX&c@BYh`L4Hh{l5w>OA%s)5~yecO5>*Qn%+VDrt zB)*I|Hx252WdvS&#>c5DuvyEL{FaCB{rs9+BkS?^?tJ)n3vC`pCjAy(s!F)&fnC2q pRMYq&IPvSfh=&N=JZy|`&>!cVwPi9(b^!dRtf--obJ_g<{|9go9H#&P literal 0 HcmV?d00001 diff --git a/docs/mint.json b/docs/mint.json index 4a106a79c..65cc6a4a9 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -154,6 +154,7 @@ "documentation/platform/token", "documentation/platform/identities/universal-auth", "documentation/platform/identities/gcp-auth", + "documentation/platform/identities/azure-auth", "documentation/platform/identities/aws-auth", "documentation/platform/mfa", { diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx index 1dbdfdfac..8a99c633b 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx @@ -187,7 +187,7 @@ export const IdentityAzureAuthForm = ({ errorText={error?.message} isRequired > - + )} /> @@ -200,7 +200,7 @@ export const IdentityAzureAuthForm = ({ isError={Boolean(error)} errorText={error?.message} > - + )} /> @@ -213,7 +213,7 @@ export const IdentityAzureAuthForm = ({ isError={Boolean(error)} errorText={error?.message} > - + )} /> From b350eef2b94e809d5ec589ec404a15977d37329d Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Fri, 17 May 2024 15:43:12 -0700 Subject: [PATCH 06/19] Add access token trusted ip support for azure auth --- .../identity-access-token-dal.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/src/services/identity-access-token/identity-access-token-dal.ts b/backend/src/services/identity-access-token/identity-access-token-dal.ts index de8eb7ebc..05e268ffa 100644 --- a/backend/src/services/identity-access-token/identity-access-token-dal.ts +++ b/backend/src/services/identity-access-token/identity-access-token-dal.ts @@ -39,11 +39,18 @@ export const identityAccessTokenDALFactory = (db: TDbClient) => { `${TableName.IdentityAwsAuth}.identityId` ); }) + .leftJoin(TableName.IdentityAzureAuth, (qb) => { + qb.on(`${TableName.Identity}.authMethod`, db.raw("?", [IdentityAuthMethod.AZURE_AUTH])).andOn( + `${TableName.Identity}.id`, + `${TableName.IdentityAzureAuth}.identityId` + ); + }) .select(selectAllTableCols(TableName.IdentityAccessToken)) .select( db.ref("accessTokenTrustedIps").withSchema(TableName.IdentityUniversalAuth).as("accessTokenTrustedIpsUa"), db.ref("accessTokenTrustedIps").withSchema(TableName.IdentityGcpAuth).as("accessTokenTrustedIpsGcp"), db.ref("accessTokenTrustedIps").withSchema(TableName.IdentityAwsAuth).as("accessTokenTrustedIpsAws"), + db.ref("accessTokenTrustedIps").withSchema(TableName.IdentityAwsAuth).as("accessTokenTrustedIpsAzure"), db.ref("name").withSchema(TableName.Identity) ) .first(); @@ -53,7 +60,10 @@ export const identityAccessTokenDALFactory = (db: TDbClient) => { return { ...doc, accessTokenTrustedIps: - doc.accessTokenTrustedIpsUa || doc.accessTokenTrustedIpsGcp || doc.accessTokenTrustedIpsAws + doc.accessTokenTrustedIpsUa || + doc.accessTokenTrustedIpsGcp || + doc.accessTokenTrustedIpsAws || + doc.accessTokenTrustedIpsAzure }; } catch (error) { throw new DatabaseError({ error, name: "IdAccessTokenFindOne" }); From 91eda2419a65b49489cc36dc7948ff2e9875032a Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Mon, 20 May 2024 00:32:10 +0200 Subject: [PATCH 07/19] Update machine-identities.mdx --- docs/documentation/platform/identities/machine-identities.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/identities/machine-identities.mdx b/docs/documentation/platform/identities/machine-identities.mdx index 41f464c4c..4cb8dfd8c 100644 --- a/docs/documentation/platform/identities/machine-identities.mdx +++ b/docs/documentation/platform/identities/machine-identities.mdx @@ -9,7 +9,7 @@ An Infisical machine identity is an entity that represents a workload or applica Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [AWS Auth](/documentation/platform/identities/aws-auth), [Azure Auth](/documentation/platform/identities/azure-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. -![organization identities](/images/platform/organization/organization-machine-identities.png) +![Organization Identities](/images/platform/organization/organization-machine-identities.png) Key Features: From dea67e3cb0128499c3f85389c14efad51a70e20c Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Sun, 19 May 2024 22:24:26 -0700 Subject: [PATCH 08/19] Update azure auth based on review --- .../services/identity-azure-auth/identity-azure-auth-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts index 044ca28bc..fa439bdc0 100644 --- a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts @@ -24,7 +24,7 @@ import { } from "./identity-azure-auth-types"; type TIdentityAzureAuthServiceFactoryDep = { - identityAzureAuthDAL: TIdentityAzureAuthDALFactory; // TODO: Pick + identityAzureAuthDAL: Pick; identityOrgMembershipDAL: Pick; identityAccessTokenDAL: Pick; identityDAL: Pick; From a724ab101c91126be3c578b8554f010f085a678a Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Sun, 19 May 2024 22:24:26 -0700 Subject: [PATCH 09/19] Fix identities docs markings --- .../identity-azure-auth/identity-azure-auth-service.ts | 2 +- .../platform/identities/machine-identities.mdx | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts index 044ca28bc..fa439bdc0 100644 --- a/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts +++ b/backend/src/services/identity-azure-auth/identity-azure-auth-service.ts @@ -24,7 +24,7 @@ import { } from "./identity-azure-auth-types"; type TIdentityAzureAuthServiceFactoryDep = { - identityAzureAuthDAL: TIdentityAzureAuthDALFactory; // TODO: Pick + identityAzureAuthDAL: Pick; identityOrgMembershipDAL: Pick; identityAccessTokenDAL: Pick; identityDAL: Pick; diff --git a/docs/documentation/platform/identities/machine-identities.mdx b/docs/documentation/platform/identities/machine-identities.mdx index f9b5eb259..9cc6c4c3d 100644 --- a/docs/documentation/platform/identities/machine-identities.mdx +++ b/docs/documentation/platform/identities/machine-identities.mdx @@ -7,12 +7,7 @@ description: "Learn how to use Machine Identities to programmatically interact w An Infisical machine identity is an entity that represents a workload or application that require access to various resources in Infisical. This is conceptually similar to an IAM user in AWS or service account in Google Cloud Platform (GCP). -<<<<<<< HEAD -Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [AWS Auth](/documentation/platform/identities/aws-auth), [Azure Auth](/documentation/platform/identities/azure-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. -======= -Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [Kubernetes Auth](/documentation/platform/identities/kubernetes-auth), [AWS Auth](/documentation/platform/identities/aws-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. - -> > > > > > > origin +Each identity must authenticate with the Infisical API using a supported authentication method like [Universal Auth](/documentation/platform/identities/universal-auth), [Kubernetes Auth](/documentation/platform/identities/kubernetes-auth), [AWS Auth](/documentation/platform/identities/aws-auth), [Azure Auth](/documentation/platform/identities/azure-auth), or [GCP Auth](/documentation/platform/identities/gcp-auth) to get back a short-lived access token to be used in subsequent requests. ![Organization Identities](/images/platform/organization/organization-machine-identities.png) From 4e06fa3a0cab72471a4b1329a28e879c1f9b15f2 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Mon, 20 May 2024 21:15:42 -0700 Subject: [PATCH 10/19] Move azure auth migration file to front --- ...entity-azure-auth.ts => 20240521041514_identity-azure-auth.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename backend/src/db/migrations/{20240515211432_identity-azure-auth.ts => 20240521041514_identity-azure-auth.ts} (100%) diff --git a/backend/src/db/migrations/20240515211432_identity-azure-auth.ts b/backend/src/db/migrations/20240521041514_identity-azure-auth.ts similarity index 100% rename from backend/src/db/migrations/20240515211432_identity-azure-auth.ts rename to backend/src/db/migrations/20240521041514_identity-azure-auth.ts From 3d65d121c082ce37eb08d82ed973c7d9540d2d05 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Thu, 23 May 2024 04:45:33 +0200 Subject: [PATCH 11/19] docs: updated docs to reflect new SDK structure --- docs/documentation/guides/node.mdx | 2 +- docs/documentation/guides/python.mdx | 16 +- docs/sdks/languages/csharp.mdx | 166 +++++++++++-- docs/sdks/languages/java.mdx | 146 ++++++++++- docs/sdks/languages/node.mdx | 143 +++++++++-- docs/sdks/languages/python.mdx | 356 ++++++++++++++++++--------- 6 files changed, 657 insertions(+), 172 deletions(-) diff --git a/docs/documentation/guides/node.mdx b/docs/documentation/guides/node.mdx index 8b78cde5e..8bd9e743b 100644 --- a/docs/documentation/guides/node.mdx +++ b/docs/documentation/guides/node.mdx @@ -36,7 +36,7 @@ Initialize a new Node.js project with a default `package.json` file. npm init -y ``` -Install `express` and [infisical-node](https://github.com/Infisical/infisical-node), the client Node SDK for Infisical. +Install `express` and [@infisical/sdk](https://www.npmjs.com/package/@infisical/sdk), the client Node SDK for Infisical. ```console npm install express @infisical/sdk diff --git a/docs/documentation/guides/python.mdx b/docs/documentation/guides/python.mdx index 696f0a7ee..00b3d6089 100644 --- a/docs/documentation/guides/python.mdx +++ b/docs/documentation/guides/python.mdx @@ -5,7 +5,7 @@ title: "Python" This guide demonstrates how to use Infisical to manage secrets for your Python stack from local development to production. It uses: - Infisical (you can use [Infisical Cloud](https://app.infisical.com) or a [self-hosted instance of Infisical](https://infisical.com/docs/self-hosting/overview)) to store your secrets. -- The [infisical-python](https://github.com/Infisical/sdk/tree/main/crates/infisical-py) Python client SDK to fetch secrets back to your Python application on demand. +- The [infisical-python](https://pypi.org/project/infisical-python/) Python client SDK to fetch secrets back to your Python application on demand. ## Project Setup @@ -36,23 +36,27 @@ python3 -m venv env source env/bin/activate ``` -Install Flask and [infisical-python](https://github.com/Infisical/sdk/tree/main/crates/infisical-py), the client Python SDK for Infisical. +Install Flask and [infisical-python](https://pypi.org/project/infisical-python/), the client Python SDK for Infisical. ```console -pip install Flask infisical-python +pip install flask infisical-python ``` Finally, create an `app.py` file containing the application code. ```py from flask import Flask -from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions +from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions, AuthenticationOptions, UniversalAuthMethod app = Flask(__name__) client = InfisicalClient(ClientSettings( - client_id="MACHINE_IDENTITY_CLIENT_ID", - client_secret="MACHINE_IDENTITY_CLIENT_SECRET", + auth=AuthenticationOptions( + universal_auth=UniversalAuthMethod( + client_id="CLIENT_ID", + client_secret="CLIENT_SECRET", + ) + ) )) @app.route("/") diff --git a/docs/sdks/languages/csharp.mdx b/docs/sdks/languages/csharp.mdx index b3a1d2086..fc87a1efe 100644 --- a/docs/sdks/languages/csharp.mdx +++ b/docs/sdks/languages/csharp.mdx @@ -21,21 +21,28 @@ namespace Example static void Main(string[] args) { - var settings = new ClientSettings + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions { - ClientId = "CLIENT_ID", - ClientSecret = "CLIENT_SECRET", - // SiteUrl = "http://localhost:8080", <-- This line can be omitted if you're using Infisical Cloud. - }; - var infisical = new InfisicalClient(settings); + UniversalAuth = new UniversalAuthMethod + { + ClientId = "your-client-id", + ClientSecret = "your-client-secret" + } + } + }; - var options = new GetSecretOptions + + var infisicalClient = new InfisicalClient(settings); + + var getSecretOptions = new GetSecretOptions { SecretName = "TEST", ProjectId = "PROJECT_ID", Environment = "dev", }; - var secret = infisical.GetSecret(options); + var secret = infisical.GetSecret(getSecretOptions); Console.WriteLine($"The value of secret '{secret.SecretKey}', is: {secret.SecretValue}"); @@ -52,8 +59,6 @@ This example demonstrates how to use the Infisical C# SDK in a C# application. T # Installation -Run `npm` to add `@infisical/sdk` to your project. - ```console $ dotnet add package Infisical.Sdk ``` @@ -70,14 +75,20 @@ namespace Example { static void Main(string[] args) { - - var settings = new ClientSettings + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions { - ClientId = "CLIENT_ID", - ClientSecret = "CLIENT_SECRET", - }; + UniversalAuth = new UniversalAuthMethod + { + ClientId = "your-client-id", + ClientSecret = "your-client-secret" + } + } + }; - var infisical = new InfisicalClient(settings); // <-- Your SDK instance! + + var infisicalClient = new InfisicalClient(settings); // <-- Your SDK client is now ready to use } } } @@ -87,14 +98,14 @@ namespace Example - + Your machine identity client ID. - + Your machine identity client secret. - + An access token obtained from the machine identity login endpoint. @@ -103,13 +114,120 @@ namespace Example If manually set to 0, caching will be disabled, this is not recommended. - + Your self-hosted absolute site URL including the protocol (e.g. `https://app.infisical.com`) + + + The authentication object to use for the client. This is required unless you're using environment variables. + +### Authentication + +The SDK supports a variety of authentication methods. The most common authentication method is Universal Auth, which uses a client ID and client secret to authenticate. + +#### Universal Auth + +**Using environment variables** +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_ID` - Your machine identity client ID. +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET` - Your machine identity client secret. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + UniversalAuth = new UniversalAuthMethod + { + ClientId = "your-client-id", + ClientSecret = "your-client-secret" + } + } + }; + + var infisicalClient = new InfisicalClient(settings); +``` + +#### GCP ID Token Auth + + Please note that this authentication method will only work if you're running your application on Google Cloud Platform. + Please [read more](/documentation/platform/identities/gcp-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_GCP_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + GcpIdToken = new GcpIdTokenAuthMethod + { + IdentityId = "your-machine-identity-id", + } + } + }; + + + var infisicalClient = new InfisicalClient(settings); +``` + +#### GCP IAM Auth + +**Using environment variables** +- `INFISICAL_GCP_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_GCP_IAM_SERVICE_ACCOUNT_KEY_FILE_PATH` - The path to your GCP service account key file. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + GcpIam = new GcpIamAuthMethod + { + IdentityId = "your-machine-identity-id", + ServiceAccountKeyFilePath = "./path/to/your/service-account-key.json" + } + } + }; + + + var infisicalClient = new InfisicalClient(settings); +``` + +#### AWS IAM Auth + + Please note that this authentication method will only work if you're running your application on AWS. + Please [read more](/documentation/platform/identities/aws-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AWS_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + AwsIam = new AwsIamAuthMethod + { + IdentityId = "your-machine-identity-id", + } + } + }; + + + var infisicalClient = new InfisicalClient(settings); +``` + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cacheTTL" option when creating the client. @@ -155,6 +273,14 @@ Retrieve all secrets within the Infisical project and environment that client is Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) + + + Whether or not to fetch secrets recursively from the specified path. Please note that there's a 20-depth limit for recursive fetching. + + + + Whether or not to expand secret references in the fetched secrets. Read about [secret reference](/documentation/platform/secret-reference) + diff --git a/docs/sdks/languages/java.mdx b/docs/sdks/languages/java.mdx index 5b8797b5d..102b28355 100644 --- a/docs/sdks/languages/java.mdx +++ b/docs/sdks/languages/java.mdx @@ -19,12 +19,19 @@ import com.infisical.sdk.schema.*; public class Example { public static void main(String[] args) { - // Create a new Infisical Client + + // Create the authentication settings for the client ClientSettings settings = new ClientSettings(); - settings.setClientID("MACHINE_IDENTITY_CLIENT_ID"); - settings.setClientSecret("MACHINE_IDENTITY_CLIENT_SECRET"); - settings.setCacheTTL(Long.valueOf(300)); // 300 seconds, 5 minutes + AuthenticationOptions authOptions = new AuthenticationOptions(); + UniversalAuthMethod authMethod = new UniversalAuthMethod(); + authMethod.setClientID("YOUR_IDENTITY_ID"); + authMethod.setClientSecret("YOUR_CLIENT_SECRET"); + + authOptions.setUniversalAuth(authMethod); + settings.setAuth(authOptions); + + // Create a new Infisical Client InfisicalClient client = new InfisicalClient(settings); // Create the options for fetching the secret @@ -68,11 +75,18 @@ import com.infisical.sdk.schema.*; public class App { public static void main(String[] args) { - + // Create the authentication settings for the client ClientSettings settings = new ClientSettings(); - settings.setClientID("MACHINE_IDENTITY_CLIENT_ID"); - settings.setClientSecret("MACHINE_IDENTITY_CLIENT_SECRET"); + AuthenticationOptions authOptions = new AuthenticationOptions(); + UniversalAuthMethod authMethod = new UniversalAuthMethod(); + authMethod.setClientID("YOUR_IDENTITY_ID"); + authMethod.setClientSecret("YOUR_CLIENT_SECRET"); + + authOptions.setUniversalAuth(authMethod); + settings.setAuth(authOptions); + + // Create a new Infisical Client InfisicalClient client = new InfisicalClient(settings); // Your client! } } @@ -82,15 +96,21 @@ public class App { - + Your machine identity client ID. + + **This field is deprecated and will be removed in future versions.** Please use the `setAuth()` method on the client settings instead. - + Your machine identity client secret. + + **This field is deprecated and will be removed in future versions.** Please use the `setAuth()` method on the client settings instead. - + An access token obtained from the machine identity login endpoint. + + **This field is deprecated and will be removed in future versions.** Please use the `setAuth()` method on the client settings instead. @@ -101,10 +121,106 @@ public class App { Your self-hosted absolute site URL including the protocol (e.g. `https://app.infisical.com`) + + + The authentication object to use for the client. This is required unless you're using environment variables. + +### Authentication + +The SDK supports a variety of authentication methods. The most common authentication method is Universal Auth, which uses a client ID and client secret to authenticate. + +#### Universal Auth + +**Using environment variables** +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_ID` - Your machine identity client ID. +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET` - Your machine identity client secret. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + UniversalAuthMethod authMethod = new UniversalAuthMethod(); + + authMethod.setClientID("YOUR_IDENTITY_ID"); + authMethod.setClientSecret("YOUR_CLIENT_SECRET"); + + authOptions.setUniversalAuth(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + +#### GCP ID Token Auth + + Please note that this authentication method will only work if you're running your application on Google Cloud Platform. + Please [read more](/documentation/platform/identities/gcp-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_GCP_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + GCPIDTokenAuthMethod authMethod = new GCPIDTokenAuthMethod(); + + authMethod.setIdentityID("YOUR_MACHINE_IDENTITY_ID"); + + authOptions.setGcpIDToken(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + +#### GCP IAM Auth + +**Using environment variables** +- `INFISICAL_GCP_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_GCP_IAM_SERVICE_ACCOUNT_KEY_FILE_PATH` - The path to your GCP service account key file. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + GCPIamAuthMethod authMethod = new GCPIamAuthMethod(); + + authMethod.setIdentityID("YOUR_MACHINE_IDENTITY_ID"); + authMethod.setServiceAccountKeyFilePath("./path/to/your/service-account-key.json"); + + authOptions.setGcpIam(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + +#### AWS IAM Auth + + Please note that this authentication method will only work if you're running your application on AWS. + Please [read more](/documentation/platform/identities/aws-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AWS_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + AWSIamAuthMethod authMethod = new AWSIamAuthMethod(); + + authMethod.setIdentityID("YOUR_MACHINE_IDENTITY_ID"); + + authOptions.setAwsIam(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cacheTTL" option when creating the client. @@ -119,6 +235,8 @@ options.setEnvironment("dev"); options.setProjectID("PROJECT_ID"); options.setPath("/foo/bar"); options.setIncludeImports(false); +options.setRecursive(false); +options.setExpandSecretReferences(true); SecretElement[] secrets = client.listSecrets(options); ``` @@ -148,6 +266,14 @@ Retrieve all secrets within the Infisical project and environment that client is Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) + + + Whether or not to fetch secrets recursively from the specified path. Please note that there's a 20-depth limit for recursive fetching. + + + + Whether or not to expand secret references in the fetched secrets. Read about [secret reference](/documentation/platform/secret-reference) + diff --git a/docs/sdks/languages/node.mdx b/docs/sdks/languages/node.mdx index 4816392ed..c626d2dcd 100644 --- a/docs/sdks/languages/node.mdx +++ b/docs/sdks/languages/node.mdx @@ -4,7 +4,7 @@ sidebarTitle: "Node.js" icon: "node" --- -If you're working with Node.js, the official [infisical-node](https://github.com/Infisical/sdk/tree/main/languages/node) package is the easiest way to fetch and work with secrets for your application. +If you're working with Node.js, the official [Infisical Node SDK](https://github.com/Infisical/sdk/tree/main/languages/node) package is the easiest way to fetch and work with secrets for your application. - [NPM Package](https://www.npmjs.com/package/@infisical/sdk) - [Github Repository](https://github.com/Infisical/sdk/tree/main/languages/node) @@ -21,14 +21,19 @@ const app = express(); const PORT = 3000; const client = new InfisicalClient({ - clientId: "YOUR_CLIENT_ID", - clientSecret: "YOUR_CLIENT_SECRET", + siteUrl: "https://app.infisical.com", // Optional, defaults to https://app.infisical.com + auth: { + universalAuth: { + clientId: "YOUR_CLIENT_ID", + clientSecret: "YOUR_CLIENT_SECRET" + } + }, logLevel: LogLevel.Error }); app.get("/", async (req, res) => { - // access value - + // Access the secret + const name = await client.getSecret({ environment: "dev", projectId: "PROJECT_ID", @@ -72,8 +77,12 @@ Import the SDK and create a client instance with your [Machine Identity](/docume import { InfisicalClient, LogLevel } from "@infisical/sdk"; const client = new InfisicalClient({ - clientId: "YOUR_CLIENT_ID", - clientSecret: "YOUR_CLIENT_SECRET", + auth: { + universalAuth: { + clientId: "YOUR_CLIENT_ID", + clientSecret: "YOUR_CLIENT_SECRET" + } + }, logLevel: LogLevel.Error }); ``` @@ -81,31 +90,40 @@ Import the SDK and create a client instance with your [Machine Identity](/docume ```js - const { InfisicalClient, LogLevel } = require("@infisical/sdk"); + const { InfisicalClient } = require("@infisical/sdk"); const client = new InfisicalClient({ - clientId: "YOUR_CLIENT_ID", - clientSecret: "YOUR_CLIENT_SECRET", - logLevel: LogLevel.Error + auth: { + universalAuth: { + clientId: "YOUR_CLIENT_ID", + clientSecret: "YOUR_CLIENT_SECRET" + } + }, }); ``` -#### Parameters +### Parameters - + Your machine identity client ID. + + **This field is deprecated and will be removed in future versions.** Please use the `auth.universalAuth.clientId` field instead. - + Your machine identity client secret. + + **This field is deprecated and will be removed in future versions.** Please use the `auth.universalAuth.clientSecret` field instead. - + An access token obtained from the machine identity login endpoint. + + **This field is deprecated and will be removed in future versions.** Please use the `auth.accessToken` field instead. @@ -119,10 +137,97 @@ Import the SDK and create a client instance with your [Machine Identity](/docume The level of logs you wish to log The logs are derived from Rust, as we have written our base SDK in Rust. + + + The authentication object to use for the client. This is required unless you're using environment variables. + + +### Authentication + +The SDK supports a variety of authentication methods. The most common authentication method is Universal Auth, which uses a client ID and client secret to authenticate. + +#### Universal Auth + +**Using environment variables** +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_ID` - Your machine identity client ID. +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET` - Your machine identity client secret. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + universalAuth: { + clientId: "YOUR_CLIENT_ID", + clientSecret: "YOUR_CLIENT_SECRET" + } + } +}); +``` + +#### GCP ID Token Auth + + Please note that this authentication method will only work if you're running your application on Google Cloud Platform. + Please [read more](/documentation/platform/identities/gcp-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_GCP_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + gcpIdToken: { + identityId: "YOUR_IDENTITY_ID" + } + } +}); +``` + +#### GCP IAM Auth + +**Using environment variables** +- `INFISICAL_GCP_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_GCP_IAM_SERVICE_ACCOUNT_KEY_FILE_PATH` - The path to your GCP service account key file. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + gcpIam: { + identityId: "YOUR_IDENTITY_ID", + serviceAccountKeyFilePath: "./path/to/your/service-account-key.json" + } + } +}); +``` + +#### AWS IAM Auth + + Please note that this authentication method will only work if you're running your application on AWS. + Please [read more](/documentation/platform/identities/aws-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AWS_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + awsIam: { + identityId: "YOUR_IDENTITY_ID" + } + } +}); +``` + + + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cacheTtl" option when creating the client. @@ -161,6 +266,14 @@ Retrieve all secrets within the Infisical project and environment that client is Whether or not to set the fetched secrets to the process environment. If true, you can access the secrets like so `process.env["SECRET_NAME"]`. + + Whether or not to fetch secrets recursively from the specified path. Please note that there's a 20-depth limit for recursive fetching. + + + + Whether or not to expand secret references in the fetched secrets. Read about [secret reference](/documentation/platform/secret-reference) + + Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) diff --git a/docs/sdks/languages/python.mdx b/docs/sdks/languages/python.mdx index 0ce221757..d0a504b1f 100644 --- a/docs/sdks/languages/python.mdx +++ b/docs/sdks/languages/python.mdx @@ -6,20 +6,24 @@ icon: "python" If you're working with Python, the official [infisical-python](https://github.com/Infisical/sdk/edit/main/crates/infisical-py) package is the easiest way to fetch and work with secrets for your application. -- [PyPi Package](https://pypi.org/project/infisical-python/) -- [Github Repository](https://github.com/Infisical/sdk/edit/main/crates/infisical-py) +- [PyPi Package](https://pypi.org/project/infisical-python/) +- [Github Repository](https://github.com/Infisical/sdk/edit/main/crates/infisical-py) ## Basic Usage ```py from flask import Flask -from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions +from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions, AuthenticationOptions, UniversalAuthMethod app = Flask(__name__) client = InfisicalClient(ClientSettings( - client_id="MACHINE_IDENTITY_CLIENT_ID", - client_secret="MACHINE_IDENTITY_CLIENT_SECRET", + auth=AuthenticationOptions( + universal_auth=UniversalAuthMethod( + client_id="CLIENT_ID", + client_secret="CLIENT_SECRET", + ) + ) )) @app.route("/") @@ -38,7 +42,7 @@ def hello_world(): This example demonstrates how to use the Infisical Python SDK with a Flask application. The application retrieves a secret named "NAME" and responds to requests with a greeting that includes the secret value. - We do not recommend hardcoding your [Machine Identity Tokens](/platform/identities/overview). Setting it as an environment variable would be best. + We do not recommend hardcoding your [Machine Identity Tokens](/platform/identities/overview). Setting it as an environment variable would be best. ## Installation @@ -56,11 +60,15 @@ Note: You need Python 3.7+. Import the SDK and create a client instance with your [Machine Identity](/api-reference/overview/authentication). ```py -from infisical_client import ClientSettings, InfisicalClient +from infisical_client import ClientSettings, InfisicalClient, AuthenticationOptions, UniversalAuthMethod client = InfisicalClient(ClientSettings( - client_id="MACHINE_IDENTITY_CLIENT_ID", - client_secret="MACHINE_IDENTITY_CLIENT_SECRET", + auth=AuthenticationOptions( + universal_auth=UniversalAuthMethod( + client_id="CLIENT_ID", + client_secret="CLIENT_SECRET", + ) + ) )) ``` @@ -68,14 +76,20 @@ client = InfisicalClient(ClientSettings( - + Your Infisical Client ID. + + **This field is deprecated and will be removed in future versions.** Please use the `auth` field instead. - + Your Infisical Client Secret. + + **This field is deprecated and will be removed in future versions.** Please use the `auth` field instead. - + If you want to directly pass an access token obtained from the authentication endpoints, you can do so. + + **This field is deprecated and will be removed in future versions.** Please use the `auth` field instead. @@ -85,18 +99,108 @@ client = InfisicalClient(ClientSettings( - Your self-hosted absolute site URL including the protocol (e.g. - `https://app.infisical.com`) + Your self-hosted absolute site URL including the protocol (e.g. `https://app.infisical.com`) + + + The authentication object to use for the client. This is required unless you're using environment variables. + +### Authentication + +The SDK supports a variety of authentication methods. The most common authentication method is Universal Auth, which uses a client ID and client secret to authenticate. + +#### Universal Auth + +**Using environment variables** +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_ID` - Your machine identity client ID. +- `INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET` - Your machine identity client secret. + +**Using the SDK directly** +```python3 +from infisical_client import ClientSettings, InfisicalClient, AuthenticationOptions, UniversalAuthMethod + +client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + universal_auth=UniversalAuthMethod( + client_id="CLIENT_ID", + client_secret="CLIENT_SECRET", + ) + ) +)) +``` + +#### GCP ID Token Auth + + Please note that this authentication method will only work if you're running your application on Google Cloud Platform. + Please [read more](/documentation/platform/identities/gcp-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_GCP_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```py +from infisical_client import ClientSettings, InfisicalClient, AuthenticationOptions, GCPIDTokenAuthMethod + +client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + gcp_id_token=GCPIDTokenAuthMethod( + identity_id="MACHINE_IDENTITY_ID", + ) + ) +)) +``` + +#### GCP IAM Auth + +**Using environment variables** +- `INFISICAL_GCP_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_GCP_IAM_SERVICE_ACCOUNT_KEY_FILE_PATH` - The path to your GCP service account key file. + +**Using the SDK directly** +```py +from infisical_client import ClientSettings, InfisicalClient, AuthenticationOptions, GCPIamAuthMethod + + +client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + gcp_iam=GCPIamAuthMethod( + identity_id="MACHINE_IDENTITY_ID", + service_account_key_file_path="./path/to/service_account_key.json" + ) + ) +)) +``` + +#### AWS IAM Auth + + Please note that this authentication method will only work if you're running your application on AWS. + Please [read more](/documentation/platform/identities/aws-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AWS_IAM_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```py +from infisical_client import ClientSettings, InfisicalClient, AuthenticationOptions, AWSIamAuthMethod + +client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + aws_iam=AWSIamAuthMethod(identity_id="MACHINE_IDENTITY_ID") + ) +)) +``` + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cache_ttl" option when creating the client. @@ -133,6 +237,14 @@ Retrieve all secrets within the Infisical project and environment that client is Whether or not to set the fetched secrets to the process environment. If true, you can access the secrets like so `process.env["SECRET_NAME"]`. + + Whether or not to fetch secrets recursively from the specified path. Please note that there's a 20-depth limit for recursive fetching. + + + + Whether or not to expand secret references in the fetched secrets. Read about [secret reference](/documentation/platform/secret-reference) + + Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) @@ -156,26 +268,26 @@ By default, `getSecret()` fetches and returns a shared secret. If not found, it #### Parameters - - - The key of the secret to retrieve - - - The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. - - - The project ID where the secret lives in. - - - The path from where secret should be fetched from. - - - The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "personal". - - - Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) - - + + + The key of the secret to retrieve + + + The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. + + + The project ID where the secret lives in. + + + The path from where secret should be fetched from. + + + The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "personal". + + + Whether or not to include imported secrets from the current path. Read about [secret import](/documentation/platform/secret-reference) + + ### client.createSecret(options) @@ -194,26 +306,26 @@ Create a new secret in Infisical. #### Parameters - - - The key of the secret to create. - - - The value of the secret. - - - The project ID where the secret lives in. - - - The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. - - - The path from where secret should be created. - - - The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". - - + + + The key of the secret to create. + + + The value of the secret. + + + The project ID where the secret lives in. + + + The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. + + + The path from where secret should be created. + + + The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". + + ### client.updateSecret(options) @@ -232,26 +344,26 @@ Update an existing secret in Infisical. #### Parameters - - - The key of the secret to update. - - - The new value of the secret. - - - The project ID where the secret lives in. - - - The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. - - - The path from where secret should be updated. - - - The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". - - + + + The key of the secret to update. + + + The new value of the secret. + + + The project ID where the secret lives in. + + + The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. + + + The path from where secret should be updated. + + + The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". + + ### client.deleteSecret(options) @@ -269,23 +381,23 @@ Delete a secret in Infisical. #### Parameters - - - The key of the secret to update. - - - The project ID where the secret lives in. - - - The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. - - - The path from where secret should be deleted. - - - The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". - - + + + The key of the secret to update. + + + The project ID where the secret lives in. + + + The slug name (dev, prod, etc) of the environment from where secrets should be fetched from. + + + The path from where secret should be deleted. + + + The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared". + + ## Cryptography @@ -299,9 +411,11 @@ key = client.createSymmetricKey() ``` #### Returns (string) + `key` (string): A base64-encoded, 256-bit symmetric key, that can be used for encryption/decryption purposes. ### Encrypt symmetric + ```py encryptOptions = EncryptSymmetricOptions( key=key, @@ -314,22 +428,22 @@ encryptedData = client.encryptSymmetric(encryptOptions) #### Parameters - - - The plaintext you want to encrypt. - - - The symmetric key to use for encryption. - - + + + The plaintext you want to encrypt. + + + The symmetric key to use for encryption. + + #### Returns (object) -`tag` (string): A base64-encoded, 128-bit authentication tag. -`iv` (string): A base64-encoded, 96-bit initialization vector. -`ciphertext` (string): A base64-encoded, encrypted ciphertext. + +`tag` (string): A base64-encoded, 128-bit authentication tag. `iv` (string): A base64-encoded, 96-bit initialization vector. `ciphertext` (string): A base64-encoded, encrypted ciphertext. ### Decrypt symmetric + ```py decryptOptions = DecryptSymmetricOptions( ciphertext=encryptedData.ciphertext, @@ -344,22 +458,24 @@ decryptedString = client.decryptSymmetric(decryptOptions) ``` #### Parameters + - - - The ciphertext you want to decrypt. - - - The symmetric key to use for encryption. - - - The initialization vector to use for decryption. - - - The authentication tag to use for decryption. - - + + + The ciphertext you want to decrypt. + + + The symmetric key to use for encryption. + + + The initialization vector to use for decryption. + + + The authentication tag to use for decryption. + + #### Returns (string) + `plaintext` (string): The decrypted plaintext. From efe10e361f047ace0febc7c489a80686fce117bd Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Fri, 24 May 2024 22:14:32 +0800 Subject: [PATCH 12/19] feat: added personal overrides and support for secret ref to download envs --- frontend/src/helpers/secret.ts | 175 ++++++++++++++++++ frontend/src/hooks/api/secrets/queries.tsx | 2 +- .../components/ActionBar/ActionBar.tsx | 48 ++++- 3 files changed, 216 insertions(+), 9 deletions(-) create mode 100644 frontend/src/helpers/secret.ts diff --git a/frontend/src/helpers/secret.ts b/frontend/src/helpers/secret.ts new file mode 100644 index 000000000..607fa4268 --- /dev/null +++ b/frontend/src/helpers/secret.ts @@ -0,0 +1,175 @@ +import path from "path"; + +import { decryptSymmetric } from "@app/components/utilities/cryptography/crypto"; +import { fetchProjectEncryptedSecrets } from "@app/hooks/api/secrets/queries"; + +const INTERPOLATION_SYNTAX_REG = /\${([^}]+)}/g; +export const interpolateSecrets = ({ + projectId, + secretEncKey +}: { + projectId: string; + secretEncKey: string; +}) => { + const fetchSecretsCrossEnv = () => { + const fetchCache: Record> = {}; + + return async (secRefEnv: string, secRefPath: string[], secRefKey: string) => { + const secRefPathUrl = path.join("/", ...secRefPath); + const uniqKey = `${secRefEnv}-${secRefPathUrl}`; + + if (fetchCache?.[uniqKey]) { + return fetchCache[uniqKey][secRefKey]; + } + + // get secrets by projectId, env, path + const encryptedSecrets = await fetchProjectEncryptedSecrets({ + workspaceId: projectId, + environment: secRefEnv, + secretPath: secRefPathUrl + }); + + const decryptedSec = encryptedSecrets.reduce>((prev, secret) => { + const secretKey = decryptSymmetric({ + ciphertext: secret.secretKeyCiphertext, + iv: secret.secretKeyIV, + tag: secret.secretKeyTag, + key: secretEncKey + }); + const secretValue = decryptSymmetric({ + ciphertext: secret.secretValueCiphertext, + iv: secret.secretValueIV, + tag: secret.secretValueTag, + key: secretEncKey + }); + + // eslint-disable-next-line + prev[secretKey] = secretValue; + return prev; + }, {}); + + fetchCache[uniqKey] = decryptedSec; + + return fetchCache[uniqKey][secRefKey]; + }; + }; + + const recursivelyExpandSecret = async ( + expandedSec: Record, + interpolatedSec: Record, + fetchCrossEnv: (env: string, secPath: string[], secKey: string) => Promise, + recursionChainBreaker: Record, + key: string + ) => { + if (expandedSec?.[key] !== undefined) { + return expandedSec[key]; + } + if (recursionChainBreaker?.[key]) { + return ""; + } + // eslint-disable-next-line + recursionChainBreaker[key] = true; + + let interpolatedValue = interpolatedSec[key]; + if (!interpolatedValue) { + // eslint-disable-next-line no-console + console.error(`Couldn't find referenced value - ${key}`); + return ""; + } + + const refs = interpolatedValue.match(INTERPOLATION_SYNTAX_REG); + if (refs) { + await Promise.all( + refs.map(async (interpolationSyntax) => { + const interpolationKey = interpolationSyntax.slice(2, interpolationSyntax.length - 1); + const entities = interpolationKey.trim().split("."); + + if (entities.length === 1) { + const val = await recursivelyExpandSecret( + expandedSec, + interpolatedSec, + fetchCrossEnv, + recursionChainBreaker, + interpolationKey + ); + if (val) { + interpolatedValue = interpolatedValue.replaceAll(interpolationSyntax, val); + } + return; + } + + if (entities.length > 1) { + const secRefEnv = entities[0]; + const secRefPath = entities.slice(1, entities.length - 1); + const secRefKey = entities[entities.length - 1]; + + const val = await fetchCrossEnv(secRefEnv, secRefPath, secRefKey); + if (val) { + interpolatedValue = interpolatedValue.replaceAll(interpolationSyntax, val); + } + } + }) + ); + } + + // eslint-disable-next-line + expandedSec[key] = interpolatedValue; + return interpolatedValue; + }; + + // used to convert multi line ones to quotes ones with \n + const formatMultiValueEnv = (val?: string) => { + if (!val) return ""; + if (!val.match("\n")) return val; + return `"${val.replace(/\n/g, "\\n")}"`; + }; + + const expandSecrets = async ( + secrets: Record + ) => { + const expandedSec: Record = {}; + const interpolatedSec: Record = {}; + + const crossSecEnvFetch = fetchSecretsCrossEnv(); + + Object.keys(secrets).forEach((key) => { + if (secrets[key].value.match(INTERPOLATION_SYNTAX_REG)) { + interpolatedSec[key] = secrets[key].value; + } else { + expandedSec[key] = secrets[key].value; + } + }); + + await Promise.all( + Object.keys(secrets).map(async (key) => { + if (expandedSec?.[key]) { + // should not do multi line encoding if user has set it to skip + // eslint-disable-next-line + secrets[key].value = secrets[key].skipMultilineEncoding + ? expandedSec[key] + : formatMultiValueEnv(expandedSec[key]); + return; + } + + // this is to avoid recursion loop. So the graph should be direct graph rather than cyclic + // so for any recursion building if there is an entity two times same key meaning it will be looped + const recursionChainBreaker: Record = {}; + const expandedVal = await recursivelyExpandSecret( + expandedSec, + interpolatedSec, + crossSecEnvFetch, + recursionChainBreaker, + key + ); + + // eslint-disable-next-line + secrets[key].value = secrets[key].skipMultilineEncoding + ? expandedVal + : formatMultiValueEnv(expandedVal); + }) + ); + + return secrets; + }; + return expandSecrets; +}; diff --git a/frontend/src/hooks/api/secrets/queries.tsx b/frontend/src/hooks/api/secrets/queries.tsx index 1ba9a5251..28999389e 100644 --- a/frontend/src/hooks/api/secrets/queries.tsx +++ b/frontend/src/hooks/api/secrets/queries.tsx @@ -98,7 +98,7 @@ export const decryptSecrets = ( return secrets; }; -const fetchProjectEncryptedSecrets = async ({ +export const fetchProjectEncryptedSecrets = async ({ workspaceId, environment, secretPath diff --git a/frontend/src/views/SecretMainPage/components/ActionBar/ActionBar.tsx b/frontend/src/views/SecretMainPage/components/ActionBar/ActionBar.tsx index 61c7cf8c0..9b235867b 100644 --- a/frontend/src/views/SecretMainPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/views/SecretMainPage/components/ActionBar/ActionBar.tsx @@ -23,6 +23,7 @@ import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; +import { decryptAssymmetric } from "@app/components/utilities/cryptography/crypto"; import { Button, DeleteActionModal, @@ -43,8 +44,9 @@ import { UpgradePlanModal } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionSub, useSubscription } from "@app/context"; +import { interpolateSecrets } from "@app/helpers/secret"; import { usePopUp } from "@app/hooks"; -import { useCreateFolder, useDeleteSecretBatch } from "@app/hooks/api"; +import { useCreateFolder, useDeleteSecretBatch, useGetUserWsKey } from "@app/hooks/api"; import { DecryptedSecret, TImportedSecrets, WsTag } from "@app/hooks/api/types"; import { debounce } from "@app/lib/fn/debounce"; @@ -112,6 +114,7 @@ export const ActionBar = ({ const { mutateAsync: createFolder } = useCreateFolder(); const { mutateAsync: deleteBatchSecretV3 } = useDeleteSecretBatch(); + const { data: decryptFileKey } = useGetUserWsKey(workspaceId); const selectedSecrets = useSelectedSecrets(); const { reset: resetSelectedSecret } = useSelectedSecretActions(); @@ -144,30 +147,59 @@ export const ActionBar = ({ const handleSecretDownload = async () => { const secPriority: Record = {}; const downloadedSecrets: Array<{ key: string; value: string; comment?: string }> = []; + + const PRIVATE_KEY = localStorage.getItem("PRIVATE_KEY") as string; + const workspaceKey = decryptAssymmetric({ + ciphertext: decryptFileKey!.encryptedKey, + nonce: decryptFileKey!.nonce, + publicKey: decryptFileKey!.sender.publicKey, + privateKey: PRIVATE_KEY + }); + + const expandSecrets = interpolateSecrets({ + projectId: workspaceId, + secretEncKey: workspaceKey + }); + + const secretRecord: Record< + string, + { value: string; comment?: string; skipMultilineEncoding?: boolean } + > = {}; + // load up secrets in dashboard - secrets?.forEach(({ key, value, comment }) => { + secrets?.forEach(({ key, value, valueOverride, comment }) => { secPriority[key] = true; - downloadedSecrets.push({ key, value, comment }); + downloadedSecrets.push({ key, value: valueOverride || value, comment }); }); // now load imported secrets with secPriority for (let i = importedSecrets.length - 1; i >= 0; i -= 1) { - importedSecrets[i].secrets.forEach(({ key, value, comment }) => { + importedSecrets[i].secrets.forEach(({ key, value, valueOverride, comment }) => { if (secPriority?.[key]) return; - downloadedSecrets.unshift({ key, value, comment }); + downloadedSecrets.unshift({ key, value: valueOverride || value, comment }); secPriority[key] = true; }); } + downloadedSecrets.forEach((secret) => { + secretRecord[secret.key] = { + value: secret.value, + comment: secret.comment + }; + }); + + await expandSecrets(secretRecord); + const file = downloadedSecrets .sort((a, b) => a.key.toLowerCase().localeCompare(b.key.toLowerCase())) .reduce( - (prev, { key, value, comment }, index) => + (prev, { key, comment }, index) => prev + (comment - ? `${index === 0 ? "#" : "\n#"} ${comment}\n${key}=${value}\n` - : `${key}=${value}\n`), + ? `${index === 0 ? "#" : "\n#"} ${comment}\n${key}=${secretRecord[key].value}\n` + : `${key}=${secretRecord[key].value}\n`), "" ); + const blob = new Blob([file], { type: "text/plain;charset=utf-8" }); FileSaver.saveAs(blob, `${environment}.env`); }; From fe40e4f475cb411479c55e9980f197674d835f6a Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 27 May 2024 07:37:39 +0000 Subject: [PATCH 13/19] chore: renamed new migration files to latest timestamp (gh-action) --- ...entity-azure-auth.ts => 20240527073740_identity-azure-auth.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename backend/src/db/migrations/{20240521041514_identity-azure-auth.ts => 20240527073740_identity-azure-auth.ts} (100%) diff --git a/backend/src/db/migrations/20240521041514_identity-azure-auth.ts b/backend/src/db/migrations/20240527073740_identity-azure-auth.ts similarity index 100% rename from backend/src/db/migrations/20240521041514_identity-azure-auth.ts rename to backend/src/db/migrations/20240527073740_identity-azure-auth.ts From b8c35fbf15e9f2a05f24d22c11b92ff8b63b9104 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 28 May 2024 00:13:47 +0800 Subject: [PATCH 14/19] fix: resolved identity deletion issue across projects --- .../src/services/identity-project/identity-project-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/identity-project/identity-project-service.ts b/backend/src/services/identity-project/identity-project-service.ts index fb5dc6fb0..10f2b3460 100644 --- a/backend/src/services/identity-project/identity-project-service.ts +++ b/backend/src/services/identity-project/identity-project-service.ts @@ -259,7 +259,7 @@ export const identityProjectServiceFactory = ({ if (!hasRequiredPriviledges) throw new ForbiddenRequestError({ message: "Failed to delete more privileged identity" }); - const [deletedIdentity] = await identityProjectDAL.delete({ identityId }); + const [deletedIdentity] = await identityProjectDAL.delete({ identityId, projectId }); return deletedIdentity; }; From ae075df0ec81397cd92ad1f44c43137530f2b0b8 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 28 May 2024 00:11:33 +0200 Subject: [PATCH 15/19] Fix: Old docs --- docs/documentation/guides/node.mdx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/documentation/guides/node.mdx b/docs/documentation/guides/node.mdx index 8bd9e743b..d1b8fe5e8 100644 --- a/docs/documentation/guides/node.mdx +++ b/docs/documentation/guides/node.mdx @@ -46,16 +46,19 @@ Finally, create an index.js file containing the application code. ```js const express = require('express'); -const { InfisicalClient, LogLevel } = require("@infisical/sdk"); +const { InfisicalClient } = require("@infisical/sdk"); const app = express(); const PORT = 3000; const client = new InfisicalClient({ - clientId: "YOUR_CLIENT_ID", - clientSecret: "YOUR_CLIENT_SECRET", - logLevel: LogLevel.Error + auth: { + universalAuth: { + clientId: "YOUR_CLIENT_ID", + clientSecret: "YOUR_CLIENT_SECRET", + } + } }); app.get("/", async (req, res) => { From aca71a7b6f40c35cd6d273c429b798c985db7334 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 28 May 2024 00:11:49 +0200 Subject: [PATCH 16/19] Docs: Azure documentation --- docs/sdks/languages/csharp.mdx | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/sdks/languages/csharp.mdx b/docs/sdks/languages/csharp.mdx index fc87a1efe..90351a986 100644 --- a/docs/sdks/languages/csharp.mdx +++ b/docs/sdks/languages/csharp.mdx @@ -228,6 +228,61 @@ The SDK supports a variety of authentication methods. The most common authentica var infisicalClient = new InfisicalClient(settings); ``` + +#### Azure Auth + + Please note that this authentication method will only work if you're running your application on Azure. + Please [read more](/documentation/platform/identities/azure-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AZURE_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + Azure = new AzureAuthMethod + { + IdentityId = "YOUR_IDENTITY_ID", + } + } + }; + + var infisicalClient = new InfisicalClient(settings); +``` + +#### Kubernetes Auth + + Please note that this authentication method will only work if you're running your application on Kubernetes. + Please [read more](/documentation/platform/identities/kubernetes-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_KUBERNETES_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH_ENV_NAME` - The environment variable name that contains the path to the service account token. This is optional and will default to `/var/run/secrets/kubernetes.io/serviceaccount/token`. + +**Using the SDK directly** +```csharp + ClientSettings settings = new ClientSettings + { + Auth = new AuthenticationOptions + { + Kubernetes = new KubernetesAuthMethod + { + ServiceAccountTokenPath = "/var/run/secrets/kubernetes.io/serviceaccount/token", // Optional + IdentityId = "YOUR_IDENTITY_ID", + } + } + }; + + var infisicalClient = new InfisicalClient(settings); +``` + + + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cacheTTL" option when creating the client. From c7a8e1102e936013485e858e69b6e421506d2604 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 28 May 2024 00:11:52 +0200 Subject: [PATCH 17/19] Docs: Azure documentation --- docs/sdks/languages/java.mdx | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/docs/sdks/languages/java.mdx b/docs/sdks/languages/java.mdx index 102b28355..879bfa624 100644 --- a/docs/sdks/languages/java.mdx +++ b/docs/sdks/languages/java.mdx @@ -221,6 +221,55 @@ The SDK supports a variety of authentication methods. The most common authentica InfisicalClient client = new InfisicalClient(settings); ``` +#### Azure Auth + + Please note that this authentication method will only work if you're running your application on Azure. + Please [read more](/documentation/platform/identities/azure-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AZURE_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + AzureAuthMethod authMethod = new AzureAuthMethod(); + + authMethod.setIdentityID("YOUR_IDENTITY_ID"); + + authOptions.setAzure(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + +#### Kubernetes Auth + + Please note that this authentication method will only work if you're running your application on Kubernetes. + Please [read more](/documentation/platform/identities/kubernetes-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_KUBERNETES_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH_ENV_NAME` - The environment variable name that contains the path to the service account token. This is optional and will default to `/var/run/secrets/kubernetes.io/serviceaccount/token`. + +**Using the SDK directly** +```java + ClientSettings settings = new ClientSettings(); + AuthenticationOptions authOptions = new AuthenticationOptions(); + KubernetesAuthMethod authMethod = new KubernetesAuthMethod(); + + authMethod.setIdentityID("YOUR_IDENTITY_ID"); + authMethod.setServiceAccountTokenPath("/var/run/secrets/kubernetes.io/serviceaccount/token"); // Optional + + authOptions.setKubernetes(authMethod); + settings.setAuth(authOptions); + + InfisicalClient client = new InfisicalClient(settings); +``` + + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cacheTTL" option when creating the client. From eb8acba0371c3601d78e6ead5d0b6af628015d85 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 28 May 2024 00:11:55 +0200 Subject: [PATCH 18/19] Docs: Azure documentation --- docs/sdks/languages/node.mdx | 46 +++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/docs/sdks/languages/node.mdx b/docs/sdks/languages/node.mdx index c626d2dcd..1546451b8 100644 --- a/docs/sdks/languages/node.mdx +++ b/docs/sdks/languages/node.mdx @@ -14,7 +14,7 @@ If you're working with Node.js, the official [Infisical Node SDK](https://github ```js import express from "express"; -import { InfisicalClient, LogLevel } from "@infisical/sdk"; +import { InfisicalClient } from "@infisical/sdk"; const app = express(); @@ -27,8 +27,7 @@ const client = new InfisicalClient({ clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET" } - }, - logLevel: LogLevel.Error + } }); app.get("/", async (req, res) => { @@ -226,7 +225,48 @@ const client = new InfisicalClient({ }); ``` +#### Azure Auth + + Please note that this authentication method will only work if you're running your application on Azure. + Please [read more](/documentation/platform/identities/azure-auth) about this authentication method. + +**Using environment variables** +- `INFISICAL_AZURE_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + azure: { + identityId: "YOUR_IDENTITY_ID" + } + } +}); +``` + + +#### Kubernetes Auth + + Please note that this authentication method will only work if you're running your application on Kubernetes. + Please [read more](/documentation/platform/identities/kubernetes-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_KUBERNETES_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH_ENV_NAME` - The environment variable name that contains the path to the service account token. This is optional and will default to `/var/run/secrets/kubernetes.io/serviceaccount/token`. + +**Using the SDK directly** +```js +const client = new InfisicalClient({ + auth: { + kubernetes: { + identityId: "YOUR_IDENTITY_ID", + serviceAccountTokenPathEnvName: "/var/run/secrets/kubernetes.io/serviceaccount/token" // Optional + } + } +}); +``` ### Caching From a6dd36f6842313d3da10a58374da568c066013f4 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 28 May 2024 00:11:57 +0200 Subject: [PATCH 19/19] Docs: Azure documentation --- docs/sdks/languages/python.mdx | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/docs/sdks/languages/python.mdx b/docs/sdks/languages/python.mdx index d0a504b1f..d9ab49688 100644 --- a/docs/sdks/languages/python.mdx +++ b/docs/sdks/languages/python.mdx @@ -201,6 +201,53 @@ client = InfisicalClient(ClientSettings( )) ``` +#### Azure Auth + + Please note that this authentication method will only work if you're running your application on Azure. + Please [read more](/documentation/platform/identities/azure-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_AZURE_AUTH_IDENTITY_ID` - Your Infisical Machine Identity ID. + +**Using the SDK directly** +```python +from infisical_client import InfisicalClient, ClientSettings, AuthenticationOptions, AzureAuthMethod + +kubernetes_client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + azure=AzureAuthMethod( + identity_id="YOUR_IDENTITY_ID", + ) + ) +)) +``` + + +#### Kubernetes Auth + + Please note that this authentication method will only work if you're running your application on Kubernetes. + Please [read more](/documentation/platform/identities/kubernetes-auth) about this authentication method. + + +**Using environment variables** +- `INFISICAL_KUBERNETES_IDENTITY_ID` - Your Infisical Machine Identity ID. +- `INFISICAL_KUBERNETES_SERVICE_ACCOUNT_TOKEN_PATH_ENV_NAME` - The environment variable name that contains the path to the service account token. This is optional and will default to `/var/run/secrets/kubernetes.io/serviceaccount/token`. + +**Using the SDK directly** +```python +from infisical_client import InfisicalClient, ClientSettings, AuthenticationOptions, KubernetesAuthMethod + +kubernetes_client = InfisicalClient(ClientSettings( + auth=AuthenticationOptions( + kubernetes=KubernetesAuthMethod( + identity_id="YOUR_IDENTITY_ID", + service_account_token_path="/var/run/secrets/kubernetes.io/serviceaccount/token" # Optional + ) + ) +)) +``` + ### Caching To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it's first fetched. Each time it's fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the "cache_ttl" option when creating the client.

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�nTlqvJ;d2D31*ViP3u-KQ+(E@e018 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