import type * as Exit from "effect/Exit"; import { type GetContextConfig, type RpcContextMap } from "../rpc/RpcContextMap.js"; import * as S from "../Schema.js"; import type { ClientForOptions } from "./clientFor.js"; /** * Minimal structural shape for an rpc-client middleware tag. * Captures only what `makeRpcClient` and routing/client factory consume from it * (no `Default` layer required — that is provided to `makeRouter`). */ export interface ClientMiddleware> { readonly requestContextMap: RequestContextMap; readonly requestContext: unknown; readonly provides?: unknown; readonly requires?: unknown; } /** * Whatever the input, we will only decode or encode to void */ export declare const ForceVoid: S.decodeTo, never, never>; type SchemaOrFields = T extends S.Top ? T : T extends S.Struct.Fields ? S.Struct : S.Void; type TaggedRequestSchema = S.Struct<{ readonly _tag: S.tag; } & Payload>; type QueryOnlyRequests = { [K in keyof Resource as Resource[K] extends { readonly type: "query"; } ? K : never]: Resource[K]; }; type QueryOnlyResources = { [K in keyof Resources]: QueryOnlyRequests; }; type InputFromPayload = keyof Payload extends never ? void : S.Schema.Type>; type OutputFromSuccess = Success extends typeof ForceVoid ? void : S.Schema.Type; type InvalidationResources = Record>; /** * An invalidation instruction returned from `invalidatesQueries`. One of: * - a raw query key (`ReadonlyArray`) * - an RPC handler object (`{ id, options? }`) — query key derived from `id` * - the raw `{ filters, options }` tanstack-query shape * * `Filters` / `Options` are widened to `Record` by default so * the effect-app core has no dependency on `@tanstack/vue-query`. The vue * adapter narrows them via the `InvalidationEntry` alias. */ export type InvalidateQueryInstruction, Options = Record> = ReadonlyArray | { readonly id: string; readonly options?: ClientForOptions; } | { readonly filters?: Filters; readonly options?: Options; }; export type InvalidationCallback = (queryKey: readonly string[], resources: QueryOnlyResources, ...args: [Input] extends [void] ? [exit: Exit.Exit] : [input: Input, exit: Exit.Exit]) => ReadonlyArray; export type InvalidationConfig = { readonly invalidatesQueries: InvalidationCallback; readonly invalidationResources?: Resources; }; type InvalidationConfigForCommand = InvalidationConfig, OutputFromSuccess, S.Schema.Type>; export declare const configureInvalidation: () => (invalidatesQueries: InvalidationCallback, NoInfer, NoInfer>) => InvalidationConfig; export declare const configureInvalidationCallback: () => (invalidatesQueries: InvalidationCallback, NoInfer, NoInfer>) => InvalidationCallback; export declare const configureInvalidationResources: () => Pick, "invalidationResources">; type TaggedRequestForResult = S.Opaque, {}> & { readonly fields: TaggedRequestSchema["fields"]; readonly _tag: Tag; readonly success: Success; readonly error: Error; readonly config: Config; readonly id: `${ModuleName}.${Tag}`; readonly moduleName: ModuleName; readonly type: Type; readonly stream: Stream; readonly middleware?: Middleware; readonly "~invalidationResources"?: Resources; } & ([Final] extends [never] ? {} : { readonly final: Final; }); export declare const makeRpcClient: >, GeneralErrors extends S.Top = never>(middleware: Middleware, generalErrors?: GeneralErrors) => { TaggedRequestFor: (moduleName: ModuleName) => { readonly moduleName: ModuleName; /** * Create query request classes for this module. * Queries read state and should not mutate server state. * Pass `stream: true` in the config to produce a Stream of `success` values (QueryStream behaviour). */ readonly Query: (() => { & Record = GetContextConfig & Record>(tag: Tag, fields: Payload, config: Omit & { stream: true; success: Success; error: Error; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; error: Error; } extends infer T_1 ? T_1 extends C & { success: Success; error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; error: Error; } & Partial, C & { success: Success; error: Error; } extends infer T_2 ? T_2 extends C & { success: Success; error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", true, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { error?: never; } = GetContextConfig & Record & { error?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; success: Success; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; } extends infer T_1 ? T_1 extends C & { success: Success; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; } & Partial, C & { success: Success; } extends infer T_2 ? T_2 extends C & { success: Success; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", true, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { success?: never; } = GetContextConfig & Record & { success?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; error: Error; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, never, never>, C & { error: Error; } extends infer T_1 ? T_1 extends C & { error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { error: Error; } & Partial, never, never>, C & { error: Error; } extends infer T_2 ? T_2 extends C & { error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", true, Resources, never, Middleware>; & Record & { success?: never; error?: never; } = GetContextConfig & Record & { success?: never; error?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>> | undefined): TaggedRequestForResult, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Omit & Partial, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>>, "error" | "stream" | "success">, ModuleName, "query", true, Resources, never, Middleware>; & Record = GetContextConfig & Record>(tag: Tag, fields: Payload, config: Omit & { success: Success; error: Error; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; error: Error; } extends infer T_1 ? T_1 extends C & { success: Success; error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; error: Error; } & Partial, C & { success: Success; error: Error; } extends infer T_2 ? T_2 extends C & { success: Success; error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", false, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { error?: never; } = GetContextConfig & Record & { error?: never; }>(tag: Tag, fields: Payload, config: Omit & { success: Success; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; } extends infer T_1 ? T_1 extends C & { success: Success; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; } & Partial, C & { success: Success; } extends infer T_2 ? T_2 extends C & { success: Success; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", false, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { success?: never; }>(tag: Tag, fields: Payload, config: Omit & { error: Error; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, never, never>, C & { error: Error; } extends infer T_1 ? T_1 extends C & { error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { error: Error; } & Partial, never, never>, C & { error: Error; } extends infer T_2 ? T_2 extends C & { error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "query", false, Resources, never, Middleware>; & Record & { success?: never; error?: never; }>(tag: Tag, fields: Payload, config: Omit, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>> | undefined): TaggedRequestForResult, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Omit & Partial, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>>, "error" | "stream" | "success">, ModuleName, "query", false, Resources, never, Middleware>; (tag: Tag, fields: Payload): TaggedRequestForResult, never, never>, [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Record, ModuleName, "query", false, never, never, Middleware>; }) & { readonly moduleName: ModuleName; readonly type: "query"; }; /** * Create command request classes for this module. * Commands mutate state and should avoid returning complex read models. * Pass `stream: true` in the config to produce a Stream of `success` values (CommandStream behaviour). */ readonly Command: (() => { & Record = GetContextConfig & Record>(tag: Tag, fields: Payload, config: Omit & { stream: true; success: Success; error: Error; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; error: Error; } extends infer T_1 ? T_1 extends C & { success: Success; error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; error: Error; } & Partial, C & { success: Success; error: Error; } extends infer T_2 ? T_2 extends C & { success: Success; error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", true, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { error?: never; } = GetContextConfig & Record & { error?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; success: Success; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; } extends infer T_1 ? T_1 extends C & { success: Success; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; } & Partial, C & { success: Success; } extends infer T_2 ? T_2 extends C & { success: Success; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", true, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { success?: never; } = GetContextConfig & Record & { success?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; error: Error; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, never, never>, C & { error: Error; } extends infer T_1 ? T_1 extends C & { error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { error: Error; } & Partial, never, never>, C & { error: Error; } extends infer T_2 ? T_2 extends C & { error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", true, Resources, never, Middleware>; & Record & { success?: never; error?: never; } = GetContextConfig & Record & { success?: never; error?: never; }>(tag: Tag, fields: Payload, config: Omit & { stream: true; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>> | undefined): TaggedRequestForResult, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Omit & Partial, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>>, "error" | "stream" | "success">, ModuleName, "command", true, Resources, never, Middleware>; & Record = GetContextConfig & Record>(tag: Tag, fields: Payload, config: Omit & { success: Success; error: Error; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; error: Error; } extends infer T_1 ? T_1 extends C & { success: Success; error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; error: Error; } & Partial, C & { success: Success; error: Error; } extends infer T_2 ? T_2 extends C & { success: Success; error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", false, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { error?: never; } = GetContextConfig & Record & { error?: never; }>(tag: Tag, fields: Payload, config: Omit & { success: Success; final?: Final; }, invalidatesQueries?: InvalidationCallback, OutputFromSuccess>, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, C & { success: Success; } extends infer T_1 ? T_1 extends C & { success: Success; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { success: Success; } & Partial, C & { success: Success; } extends infer T_2 ? T_2 extends C & { success: Success; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", false, Resources, [Final] extends [never] ? never : SchemaOrFields, Middleware>; & Record & { success?: never; }>(tag: Tag, fields: Payload, config: Omit & { error: Error; }, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>> | undefined): TaggedRequestForResult, never, never>, C & { error: Error; } extends infer T_1 ? T_1 extends C & { error: Error; } ? T_1 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never, Omit & { error: Error; } & Partial, never, never>, C & { error: Error; } extends infer T_2 ? T_2 extends C & { error: Error; } ? T_2 extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors : never : never>>, "error" | "stream" | "success">, ModuleName, "command", false, Resources, never, Middleware>; & Record & { success?: never; error?: never; }>(tag: Tag, fields: Payload, config: Omit, invalidatesQueries?: InvalidationCallback, void, S.Schema.Type : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>> | undefined): TaggedRequestForResult, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Omit & Partial, never, never>, C extends { error: infer E; } ? [GeneralErrors] extends [never] ? SchemaOrFields : S.Union<[SchemaOrFields, GeneralErrors]> : [GeneralErrors] extends [never] ? S.Never : GeneralErrors>>, "error" | "stream" | "success">, ModuleName, "command", false, Resources, never, Middleware>; (tag: Tag, fields: Payload): TaggedRequestForResult, never, never>, [GeneralErrors] extends [never] ? S.Never : GeneralErrors, Record, ModuleName, "command", false, never, never, Middleware>; }) & { readonly moduleName: ModuleName; readonly type: "command"; }; }; }; export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9tYWtlQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFFeEMsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRixPQUFPLEtBQUssQ0FBQyxNQUFNLGNBQWMsQ0FBQTtBQUVqQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXREOzs7O0dBSUc7QUFDSCxNQUFNLFdBQVcsZ0JBQWdCLENBQUMsaUJBQWlCLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQzNGLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQTtJQUM3QyxRQUFRLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQTtJQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFBO0lBQzNCLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUE7Q0FDNUI7QUFLRDs7R0FFRztBQUNILGVBQU8sTUFBTSxTQUFTLDhEQUluQixDQUFBO0FBRUgsS0FBSyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBRS9GLEtBQUssbUJBQW1CLENBQUMsR0FBRyxTQUFTLE1BQU0sRUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDdEY7SUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7Q0FBRSxHQUFHLE9BQU8sQ0FDeEMsQ0FBQTtBQUVELEtBQUssaUJBQWlCLENBQUMsUUFBUSxJQUFJO0tBQ2hDLENBQUMsSUFBSSxNQUFNLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBQ2pHLENBQUE7QUFFRCxLQUFLLGtCQUFrQixDQUFDLFNBQVMsSUFBSTtLQUNsQyxDQUFDLElBQUksTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3hELENBQUE7QUFFRCxLQUFLLGdCQUFnQixDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLE9BQU8sU0FBUyxLQUFLLEdBQUcsSUFBSSxHQUN2RixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFFcEMsS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxPQUFPLFNBQVMsT0FBTyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBRWhILEtBQUsscUJBQXFCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFFcEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxNQUFNLDBCQUEwQixDQUNwQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFDakMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBRS9CLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FDckI7SUFDQSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQTtJQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUE7Q0FDcEMsR0FDQztJQUNBLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUE7SUFDMUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUMzQixDQUFBO0FBRUgsTUFBTSxNQUFNLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsT0FBTyxFQUFFLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxHQUFHLE9BQU8sSUFBSSxDQUNuRyxRQUFRLEVBQUUsU0FBUyxNQUFNLEVBQUUsRUFDM0IsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUN4QyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FDakUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUNsRCxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUU5QyxNQUFNLE1BQU0sa0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxPQUFPLEVBQUUsT0FBTyxHQUFHLE9BQU8sRUFBRSxPQUFPLEdBQUcsT0FBTyxJQUFJO0lBQ2pHLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNyRixRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxTQUFTLENBQUE7Q0FDM0MsQ0FBQTtBQUVELEtBQUssNEJBQTRCLENBQy9CLFNBQVMsRUFDVCxPQUFPLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQy9CLE9BQU8sU0FBUyxDQUFDLENBQUMsR0FBRyxFQUNyQixLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFDakIsa0JBQWtCLENBQ3BCLFNBQVMsRUFDVCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFDekIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUNyQixDQUFBO0FBRUQsZUFBTyxNQUFNLHFCQUFxQixHQUFJLFNBQVMsUUFDOUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLHNCQUNGLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUN0RyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQTZCLENBQUE7QUFFckYsZUFBTyxNQUFNLDZCQUE2QixHQUFJLFNBQVMsUUFDdEQsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLHNCQUNGLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUN0RyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQXVCLENBQUE7QUFFakYsZUFBTyxNQUFNLDhCQUE4QixHQUFJLFNBQVMsT0FDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUE7QUFFdEUsS0FBSyxzQkFBc0IsQ0FDekIsSUFBSSxFQUNKLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQ3JCLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxFQUNuQixNQUFNLEVBQ04sVUFBVSxTQUFTLE1BQU0sRUFDekIsSUFBSSxTQUFTLFNBQVMsR0FBRyxPQUFPLEVBQ2hDLE1BQU0sU0FBUyxPQUFPLEVBQ3RCLFNBQVMsR0FBRyxLQUFLLEVBQ2pCLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssRUFDM0IsVUFBVSxHQUFHLE9BQU8sSUFFbEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FDaEY7SUFDQSxRQUFRLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1RCxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQTtJQUNsQixRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQTtJQUN6QixRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUNyQixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtJQUN2QixRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ25DLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFBO0lBQy9CLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFBO0lBQ25CLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFBO0lBQ3ZCLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUE7SUFDaEMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsU0FBUyxDQUFBO0NBQzlDLEdBQ0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHO0lBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUE7Q0FBRSxDQUFDLENBQUE7QUFFOUQsZUFBTyxNQUFNLGFBQWEsR0FDeEIsVUFBVSxTQUFTLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3RFLGFBQWEsU0FBUyxDQUFDLENBQUMsR0FBRyxzQkFDZixVQUFVLGtCQUFrQixhQUFhO3VCQTRjM0IsVUFBVSxTQUFTLE1BQU0sY0FBYyxVQUFVOztRQU12RTs7OztXQUlHOzBCQXhaMEIsSUFBSSxFQUFFLFNBQVMsU0FBUyxxQkFBcUI7YUFHeEUsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdkMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3JDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxVQUNyQyxDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO3dCQU0vQixJQUFJOzs7Ozs7Ozs7Ozt1QkExRGlCLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBK0YxQyxHQUFHLFNBQVMsTUFBTSxFQUNsQixPQUFPLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQy9CLE9BQU8sU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUN2QyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sVUFDckMsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQTthQUFFO3dCQUduRCxLQUFLOzt3QkFNTCxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFtQ2xCLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3JDLENBQUMsU0FBUyxvREFBZ0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRztnQkFBRSxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUE7YUFBRTswQkFHbkQsS0FBSzs7d0JBTVAsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFrQ2xCLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQztnQkFBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUE7YUFBRTswQkFHbEUsS0FBSzt3QkFBVSxLQUFLOzt3QkFNdEIsSUFBSTs7Ozs7Ozs7YUEyQmxCLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3ZDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUNyQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sVUFDckMsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUEyQzdDLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3ZDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxVQUNyQyxDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFBO2FBQUU7d0JBSXJELEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUEyQ2pCLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3JDLENBQUMsU0FBUyxvREFBZ0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRztnQkFBRSxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUE7YUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUEwQ25FLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQztnQkFBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUE7YUFBRTs7Ozs7OzthQTZCbkYsR0FBRyxTQUFTLE1BQU0sRUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNOzs7OztRQW9EcEQ7Ozs7V0FJRzs0QkE5WjBCLElBQUksRUFBRSxTQUFTLFNBQVMscUJBQXFCO2FBR3hFLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3ZDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUNyQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sVUFDckMsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzt3QkFNL0IsSUFBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFxQ2xCLEdBQUcsU0FBUyxNQUFNLEVBQ2xCLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDL0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3ZDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxVQUNyQyxDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFBO2FBQUU7d0JBR25ELEtBQUs7O3dCQU1MLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQW1DbEIsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDckMsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQTthQUFFOzBCQUduRCxLQUFLOzt3QkFNUCxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQWtDbEIsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQTthQUFFOzBCQUdsRSxLQUFLO3dCQUFVLEtBQUs7O3dCQU10QixJQUFJOzs7Ozs7OzthQTJCbEIsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdkMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3JDLEtBQUssU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxVQUNyQyxDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQTJDN0MsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixPQUFPLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdkMsS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLFVBQ3JDLENBQUMsU0FBUyxvREFBZ0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRztnQkFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUE7YUFBRTt3QkFJckQsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQTJDakIsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDckMsQ0FBQyxTQUFTLG9EQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQTthQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQTBDbkUsR0FBRyxTQUFTLE1BQU0sRUFDbEIsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMvQixDQUFDLFNBQVMsb0RBQWdCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO2dCQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQTthQUFFOzs7Ozs7O2FBNkJuRixHQUFHLFNBQVMsTUFBTSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU07Ozs7OztDQWdFekQsQ0FBQSJ9