@effect-app/infra 4.0.0-beta.260 → 4.0.0-beta.262

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 4.0.0-beta.262
4
+
5
+ ### Patch Changes
6
+
7
+ - 55c6572: update packages
8
+ - Updated dependencies [55c6572]
9
+ - effect-app@4.0.0-beta.262
10
+
11
+ ## 4.0.0-beta.261
12
+
13
+ ### Patch Changes
14
+
15
+ - c31c673: Tighten Cosmos cluster OCC handling for concurrent node polling.
16
+ - effect-app@4.0.0-beta.261
17
+
3
18
  ## 4.0.0-beta.260
4
19
 
5
20
  ### Patch Changes
@@ -18,25 +18,25 @@ export interface ClusterCosmosConfig {
18
18
  export declare const makeMessageStorage: (options?: {
19
19
  readonly prefix?: string | undefined;
20
20
  } | undefined) => Effect.Effect<{
21
- readonly saveRequest: <R extends import("effect/unstable/rpc/Rpc").Any>(envelope: import("effect/unstable/cluster/Message").OutgoingRequest<R>) => Effect.Effect<MessageStorage.SaveResult<R>, PersistenceError | import("effect/unstable/cluster/ClusterError").MalformedMessage>;
22
- readonly saveEnvelope: (envelope: import("effect/unstable/cluster/Message").OutgoingEnvelope) => Effect.Effect<void, PersistenceError | import("effect/unstable/cluster/ClusterError").MalformedMessage>;
23
- readonly saveReply: <R extends import("effect/unstable/rpc/Rpc").Any>(reply: Reply.ReplyWithContext<R>) => Effect.Effect<void, PersistenceError | import("effect/unstable/cluster/ClusterError").MalformedMessage>;
24
- readonly clearReplies: (requestId: Snowflake.Snowflake) => Effect.Effect<void, PersistenceError>;
25
- readonly repliesFor: <R extends import("effect/unstable/rpc/Rpc").Any>(requests: Iterable<import("effect/unstable/cluster/Message").OutgoingRequest<R>>) => Effect.Effect<Array<Reply.Reply<R>>, PersistenceError | import("effect/unstable/cluster/ClusterError").MalformedMessage>;
26
- readonly repliesForUnfiltered: (requestIds: Iterable<Snowflake.Snowflake>) => Effect.Effect<Array<Reply.Encoded>, PersistenceError | import("effect/unstable/cluster/ClusterError").MalformedMessage>;
21
+ readonly saveRequest: <R extends import("effect/unstable/rpc/Rpc").Any>(envelope: import("effect/unstable/cluster/Message").OutgoingRequest<R>) => Effect.Effect<MessageStorage.SaveResult<R>, import("effect/unstable/cluster/ClusterError").MalformedMessage | PersistenceError, never>;
22
+ readonly saveEnvelope: (envelope: import("effect/unstable/cluster/Message").OutgoingEnvelope) => Effect.Effect<void, import("effect/unstable/cluster/ClusterError").MalformedMessage | PersistenceError, never>;
23
+ readonly saveReply: <R extends import("effect/unstable/rpc/Rpc").Any>(reply: Reply.ReplyWithContext<R>) => Effect.Effect<void, import("effect/unstable/cluster/ClusterError").MalformedMessage | PersistenceError, never>;
24
+ readonly clearReplies: (requestId: Snowflake.Snowflake) => Effect.Effect<void, PersistenceError, never>;
25
+ readonly repliesFor: <R extends import("effect/unstable/rpc/Rpc").Any>(requests: Iterable<import("effect/unstable/cluster/Message").OutgoingRequest<R>>) => Effect.Effect<Reply.Reply<R>[], import("effect/unstable/cluster/ClusterError").MalformedMessage | PersistenceError, never>;
26
+ readonly repliesForUnfiltered: (requestIds: Iterable<Snowflake.Snowflake>) => Effect.Effect<Reply.Encoded[], import("effect/unstable/cluster/ClusterError").MalformedMessage | PersistenceError, never>;
27
27
  readonly requestIdForPrimaryKey: (options: {
28
28
  readonly address: import("effect/unstable/cluster/EntityAddress").EntityAddress;
29
29
  readonly tag: string;
30
30
  readonly id: string;
31
- }) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError>;
32
- readonly registerReplyHandler: <R extends import("effect/unstable/rpc/Rpc").Any>(message: import("effect/unstable/cluster/Message").OutgoingRequest<R> | import("effect/unstable/cluster/Message").IncomingRequest<R>) => Effect.Effect<void, import("effect/unstable/cluster/ClusterError").EntityNotAssignedToRunner>;
33
- readonly unregisterReplyHandler: (requestId: Snowflake.Snowflake) => Effect.Effect<void>;
34
- readonly unregisterShardReplyHandlers: (shardId: ShardId.ShardId) => Effect.Effect<void>;
35
- readonly unprocessedMessages: (shardIds: Iterable<ShardId.ShardId>) => Effect.Effect<Array<import("effect/unstable/cluster/Message").Incoming<any>>, PersistenceError>;
36
- readonly unprocessedMessagesById: <R extends import("effect/unstable/rpc/Rpc").Any>(messageIds: Iterable<Snowflake.Snowflake>) => Effect.Effect<Array<import("effect/unstable/cluster/Message").Incoming<R>>, PersistenceError>;
37
- readonly resetShards: (shardIds: Iterable<ShardId.ShardId>) => Effect.Effect<void, PersistenceError>;
38
- readonly resetAddress: (address: import("effect/unstable/cluster/EntityAddress").EntityAddress) => Effect.Effect<void, PersistenceError>;
39
- readonly clearAddress: (address: import("effect/unstable/cluster/EntityAddress").EntityAddress) => Effect.Effect<void, PersistenceError>;
31
+ }) => Effect.Effect<Option.Option<Snowflake.Snowflake>, PersistenceError, never>;
32
+ readonly registerReplyHandler: <R extends import("effect/unstable/rpc/Rpc").Any>(message: import("effect/unstable/cluster/Message").OutgoingRequest<R> | import("effect/unstable/cluster/Message").IncomingRequest<R>) => Effect.Effect<void, import("effect/unstable/cluster/ClusterError").EntityNotAssignedToRunner, never>;
33
+ readonly unregisterReplyHandler: (requestId: Snowflake.Snowflake) => Effect.Effect<void, never, never>;
34
+ readonly unregisterShardReplyHandlers: (shardId: ShardId.ShardId) => Effect.Effect<void, never, never>;
35
+ readonly unprocessedMessages: (shardIds: Iterable<ShardId.ShardId>) => Effect.Effect<import("effect/unstable/cluster/Message").Incoming<any>[], PersistenceError, never>;
36
+ readonly unprocessedMessagesById: <R extends import("effect/unstable/rpc/Rpc").Any>(messageIds: Iterable<Snowflake.Snowflake>) => Effect.Effect<import("effect/unstable/cluster/Message").Incoming<R>[], PersistenceError, never>;
37
+ readonly resetShards: (shardIds: Iterable<ShardId.ShardId>) => Effect.Effect<void, PersistenceError, never>;
38
+ readonly resetAddress: (address: import("effect/unstable/cluster/EntityAddress").EntityAddress) => Effect.Effect<void, PersistenceError, never>;
39
+ readonly clearAddress: (address: import("effect/unstable/cluster/EntityAddress").EntityAddress) => Effect.Effect<void, PersistenceError, never>;
40
40
  readonly withTransaction: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
41
41
  }, never, CosmosClient | Snowflake.Generator>;
42
42
  export declare const makeRunnerStorage: (options?: {
@@ -61,4 +61,4 @@ export declare const layerStorage: (options?: {
61
61
  readonly prefix?: string | undefined;
62
62
  }) => Layer.Layer<MessageStorage.MessageStorage | RunnerStorage.RunnerStorage, never, CosmosClient | ShardingConfig.ShardingConfig>;
63
63
  export declare const layerCosmos: (config: ClusterCosmosConfig) => Layer.Layer<MessageStorage.MessageStorage | RunnerStorage.RunnerStorage, never, ShardingConfig.ShardingConfig>;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NsdXN0ZXJDb3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFFM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUV2RSxPQUFPLEtBQUssY0FBYyxNQUFNLHdDQUF3QyxDQUFBO0FBRXhFLE9BQU8sS0FBSyxLQUFLLEtBQUssTUFBTSwrQkFBK0IsQ0FBQTtBQUMzRCxPQUFPLEtBQUssYUFBYSxNQUFNLHVDQUF1QyxDQUFBO0FBQ3RFLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUE7QUFDMUQsT0FBTyxLQUFLLGNBQWMsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN4RSxPQUFPLEtBQUssU0FBUyxNQUFNLG1DQUFtQyxDQUFBO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sb0JBQW9CLENBQUE7QUFHcEUsTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdkMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7SUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUN6QjtBQXNVRCxlQUFPLE1BQU0sa0JBQWtCO3NCQUNYLE1BQU0sR0FBRyxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZDQTRUcEMsQ0FBQTtBQStCRixlQUFPLE1BQU0saUJBQWlCO3NCQUNWLE1BQU0sR0FBRyxTQUFTOzs7Ozs7Ozs7O3VEQTROcEMsQ0FBQTtBQUVGLGVBQU8sTUFBTSxtQkFBbUIsYUFBYztJQUM1QyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtDQUNyQyxLQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBRy9GLENBQUE7QUFFSCxlQUFPLE1BQU0sa0JBQWtCLGFBQWM7SUFDM0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDckMsS0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUN6QixDQUFBO0FBRXZFLGVBQU8sTUFBTSxZQUFZLGFBQWM7SUFDckMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDckMsS0FBRyxLQUFLLENBQUMsS0FBSyxDQUNiLGNBQWMsQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLGFBQWEsRUFDM0QsS0FBSyxFQUNMLFlBQVksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUM2QixDQUFBO0FBRTNFLGVBQU8sTUFBTSxXQUFXLFdBQVksbUJBQW1CLEtBQUcsS0FBSyxDQUFDLEtBQUssQ0FDbkUsY0FBYyxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUMzRCxLQUFLLEVBQ0wsY0FBYyxDQUFDLGNBQWMsQ0FJNUIsQ0FBQSJ9
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NsdXN0ZXJDb3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUV2RSxPQUFPLEtBQUssY0FBYyxNQUFNLHdDQUF3QyxDQUFBO0FBRXhFLE9BQU8sS0FBSyxLQUFLLEtBQUssTUFBTSwrQkFBK0IsQ0FBQTtBQUMzRCxPQUFPLEtBQUssYUFBYSxNQUFNLHVDQUF1QyxDQUFBO0FBQ3RFLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUE7QUFDMUQsT0FBTyxLQUFLLGNBQWMsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN4RSxPQUFPLEtBQUssU0FBUyxNQUFNLG1DQUFtQyxDQUFBO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sb0JBQW9CLENBQUE7QUFHcEUsTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdkMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7SUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUN6QjtBQXlVRCxlQUFPLE1BQU0sa0JBQWtCO3NCQUNYLE1BQU0sR0FBRyxTQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZDQXlWcEMsQ0FBQTtBQWlDRixlQUFPLE1BQU0saUJBQWlCO3NCQUNWLE1BQU0sR0FBRyxTQUFTOzs7Ozs7Ozs7O3VEQThOcEMsQ0FBQTtBQUVGLGVBQU8sTUFBTSxtQkFBbUIsYUFBYztJQUM1QyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtDQUNyQyxLQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBRy9GLENBQUE7QUFFSCxlQUFPLE1BQU0sa0JBQWtCLGFBQWM7SUFDM0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDckMsS0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUN6QixDQUFBO0FBRXZFLGVBQU8sTUFBTSxZQUFZLGFBQWM7SUFDckMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDckMsS0FBRyxLQUFLLENBQUMsS0FBSyxDQUNiLGNBQWMsQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLGFBQWEsRUFDM0QsS0FBSyxFQUNMLFlBQVksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUM2QixDQUFBO0FBRTNFLGVBQU8sTUFBTSxXQUFXLFdBQVksbUJBQW1CLEtBQUcsS0FBSyxDQUFDLEtBQUssQ0FDbkUsY0FBYyxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUMzRCxLQUFLLEVBQ0wsY0FBYyxDQUFDLGNBQWMsQ0FJNUIsQ0FBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterCosmos.d.ts","sourceRoot":"","sources":["../src/ClusterCosmos.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAyUD,eAAO,MAAM,kBAAkB;sBACX,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;6CA6TpC,CAAA;AA+BF,eAAO,MAAM,iBAAiB;sBACV,MAAM,GAAG,SAAS;;;;;;;;;;uDA8NpC,CAAA;AAEF,eAAO,MAAM,mBAAmB,aAAc;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CAG/F,CAAA;AAEH,eAAO,MAAM,kBAAkB,aAAc;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CACzB,CAAA;AAEvE,eAAO,MAAM,YAAY,aAAc;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CACb,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,YAAY,GAAG,cAAc,CAAC,cAAc,CAC6B,CAAA;AAE3E,eAAO,MAAM,WAAW,WAAY,mBAAmB,KAAG,KAAK,CAAC,KAAK,CACnE,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,cAAc,CAAC,cAAc,CAI5B,CAAA"}
1
+ {"version":3,"file":"ClusterCosmos.d.ts","sourceRoot":"","sources":["../src/ClusterCosmos.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAyUD,eAAO,MAAM,kBAAkB;sBACX,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;6CAyVpC,CAAA;AAiCF,eAAO,MAAM,iBAAiB;sBACV,MAAM,GAAG,SAAS;;;;;;;;;;uDA8NpC,CAAA;AAEF,eAAO,MAAM,mBAAmB,aAAc;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CAG/F,CAAA;AAEH,eAAO,MAAM,kBAAkB,aAAc;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC,cAAc,CACzB,CAAA;AAEvE,eAAO,MAAM,YAAY,aAAc;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CACb,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,YAAY,GAAG,cAAc,CAAC,cAAc,CAC6B,CAAA;AAE3E,eAAO,MAAM,WAAW,WAAY,mBAAmB,KAAG,KAAK,CAAC,KAAK,CACnE,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAC3D,KAAK,EACL,cAAc,CAAC,cAAc,CAI5B,CAAA"}
@@ -252,7 +252,17 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
252
252
  .tryPromise(() => container.item(doc.id, doc._partitionKey).replace(doc, {
253
253
  accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
254
254
  }))
255
- .pipe(Effect.tap(annotateItem), Effect.asVoid);
255
+ .pipe(Effect.tap(annotateItem), Effect.as(true), Effect.catchIf(isPreconditionFailed, () => Effect.succeed(false)));
256
+ const updateMessage = (doc, update) => Effect.suspend(function loop(current = doc) {
257
+ if (!update(current))
258
+ return Effect.void;
259
+ return replaceMessage(current).pipe(Effect.flatMap((replaced) => replaced
260
+ ? Effect.void
261
+ : readMessage(current.id, current._partitionKey).pipe(Effect.flatMap((found) => Option.match(found, {
262
+ onNone: () => Effect.void,
263
+ onSome: loop
264
+ })))));
265
+ });
256
266
  return yield* MessageStorage.makeEncoded({
257
267
  saveEnvelope: ({ deliverAt, envelope, primaryKey }) => Effect
258
268
  .gen(function* () {
@@ -280,14 +290,16 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
280
290
  yield* Effect.tryPromise(() => container.items.create(doc)).pipe(Effect.tap(annotateItem), Effect.catchIf(isConflict, () => Effect.void));
281
291
  const messages = yield* queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.requestId = @requestId", [{ name: "@requestId", value: reply.requestId }]);
282
292
  yield* Effect.forEach(messages, (message) => {
283
- if (reply._tag === "WithExit") {
284
- message.processed = true;
285
- }
286
- else if (message.id !== reply.requestId && message.kind !== "Request") {
287
- return Effect.void;
288
- }
289
- message.lastReplyId = reply.id;
290
- return replaceMessage(message).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void));
293
+ return updateMessage(message, (doc) => {
294
+ if (reply._tag === "WithExit") {
295
+ doc.processed = true;
296
+ }
297
+ else if (doc.id !== reply.requestId && doc.kind !== "Request") {
298
+ return false;
299
+ }
300
+ doc.lastReplyId = reply.id;
301
+ return true;
302
+ });
291
303
  }, { discard: true });
292
304
  })
293
305
  .pipe(annotate("saveReply"), refailPersistence, withTracerDisabled),
@@ -308,7 +320,7 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
308
320
  message.processed = false;
309
321
  message.lastReplyId = null;
310
322
  message.lastRead = null;
311
- return replaceMessage(message).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void));
323
+ return replaceMessage(message).pipe(Effect.asVoid);
312
324
  }, { discard: true });
313
325
  })
314
326
  .pipe(annotate("clearReplies"), refailPersistence, withTracerDisabled),
@@ -338,7 +350,7 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
338
350
  ])
339
351
  .pipe(Effect.flatMap((docs) => Effect.forEach(docs, (doc) => {
340
352
  doc.lastRead = null;
341
- return replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void));
353
+ return replaceMessage(doc).pipe(Effect.asVoid);
342
354
  }, { discard: true })), annotate("resetAddress"), refailPersistence, withTracerDisabled),
343
355
  clearAddress: (address) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.entityType = @entityType AND c.entityId = @entityId", [
344
356
  { name: "@entityType", value: address.entityType },
@@ -359,7 +371,7 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
359
371
  resetShards: (shardIds) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.processed = false AND ARRAY_CONTAINS(@shardIds, c.shardId)", [{ name: "@shardIds", value: Array.from(shardIds) }])
360
372
  .pipe(Effect.flatMap((docs) => Effect.forEach(docs, (doc) => {
361
373
  doc.lastRead = null;
362
- return replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void));
374
+ return replaceMessage(doc).pipe(Effect.asVoid);
363
375
  }, { discard: true })), annotate("resetShards"), refailPersistence, withTracerDisabled),
364
376
  withTransaction: (effect) => effect
365
377
  });
@@ -372,8 +384,10 @@ const collectUnprocessed = (docs, now, lastReply, replaceMessage, queryReplies)
372
384
  continue;
373
385
  const sentReply = yield* lastReply(doc.lastReplyId);
374
386
  doc.lastRead = now;
375
- yield* replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void));
376
- messages.push(envelopeFromDoc(doc, sentReply));
387
+ const replaced = yield* replaceMessage(doc);
388
+ if (replaced) {
389
+ messages.push(envelopeFromDoc(doc, sentReply));
390
+ }
377
391
  }
378
392
  return messages;
379
393
  });
@@ -484,4 +498,4 @@ export const layerMessageStorage = (options) => Layer.effect(MessageStorage.Mess
484
498
  export const layerRunnerStorage = (options) => Layer.effect(RunnerStorage.RunnerStorage, makeRunnerStorage(options));
485
499
  export const layerStorage = (options) => Layer.merge(layerMessageStorage(options), layerRunnerStorage(options));
486
500
  export const layerCosmos = (config) => layerStorage({ prefix: config.prefix }).pipe(Layer.provide(CosmosClientLayer(Redacted.value(config.url), config.dbName)));
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyQ29zbW9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRXZFLE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFMUUsT0FBTyxLQUFLLGFBQWEsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN0RSxPQUFPLEtBQUssT0FBTyxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxLQUFLLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQWdGOUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFVLE1BQThCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxN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
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyQ29zbW9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRXZFLE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFMUUsT0FBTyxLQUFLLGFBQWEsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN0RSxPQUFPLEtBQUssT0FBTyxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxLQUFLLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQWdGOUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFVLE1BQThCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUN0RyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQTtBQUNuRSxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQTBCLEVBQUUsVUFBeUIsRUFBRSxFQUFFLENBQzdFLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksVUFBVSxFQUFFLENBQUMsQ0FBQTtBQUNqRixNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUFDLFVBQVUsU0FBUyxFQUFFLENBQUE7QUFDbkUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDdkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDbkUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFMUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFVLEVBQUUsSUFBWSxFQUFXLEVBQUUsQ0FDM0QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztJQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQTtBQUUzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN6RCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN6RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBRW5FLE1BQU0sU0FBUyxHQUFHLENBQ2hCLElBQXdHLEVBQ3hHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLDJCQUEyQixFQUFFLGlDQUFpQyxJQUFJLENBQUMsQ0FBQTtBQUUxRixNQUFNLFlBQVksR0FBRyxDQUFDLElBTXJCLEVBQUUsRUFBRSxDQUNILHNCQUFzQixDQUFDO0lBQ3JCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtJQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7SUFDM0IsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7Q0FDL0IsQ0FBQyxDQUFBO0FBRUosTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQU1yQixFQUFFLEVBQUUsQ0FDSCxzQkFBc0IsQ0FBQztJQUNyQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7SUFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtJQUNuQyxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztDQUMvQixDQUFDLENBQUE7QUFFSixNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQTBCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFBO0FBRWpILE1BQU0sYUFBYSxHQUFHLENBQ3BCLFFBQTBCLEVBQzFCLFVBQXlCLEVBQ3pCLFNBQXdCLEVBQ1osRUFBRTtJQUNkLFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLEtBQUssU0FBUztZQUNaLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO2dCQUN0QyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQ3pCLFNBQVMsRUFBRSxVQUFVO2dCQUNyQixPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDbkQsVUFBVSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVTtnQkFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDbkMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHO2dCQUNqQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFNBQVM7YUFDVixDQUFBO1FBQ0gsS0FBSyxVQUFVO1lBQ2IsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNFLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDbEIsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUNuRCxVQUFVLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVO2dCQUN2QyxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUNuQyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixXQUFXLEVBQUUsSUFBSTtnQkFDakIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsU0FBUzthQUNWLENBQUE7UUFDSCxLQUFLLFdBQVc7WUFDZCxPQUFPO2dCQUNMLEVBQUUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNsQixTQUFTLEVBQUUsVUFBVTtnQkFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ25ELFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVU7Z0JBQ3ZDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ25DLElBQUksRUFBRSxXQUFXO2dCQUNqQixHQUFHLEVBQUUsSUFBSTtnQkFDVCxPQUFPLEVBQUUsSUFBSTtnQkFDYixPQUFPLEVBQUUsSUFBSTtnQkFDYixTQUFTLEVBQUUsS0FBSztnQkFDaEIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM3QixPQUFPLEVBQUUsSUFBSTtnQkFDYixXQUFXLEVBQUUsSUFBSTtnQkFDakIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsU0FBUzthQUNWLENBQUE7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsR0FBZSxFQUNmLGFBQTJDLEVBSTNDLEVBQUU7SUFDRixRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLEdBQW1DO2dCQUMvQyxJQUFJLEVBQUUsU0FBUztnQkFDZixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7Z0JBQ3hCLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztvQkFDdkMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO29CQUMxQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7aUJBQ3ZCO2dCQUNELEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUU7Z0JBQ2xCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztnQkFDcEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDMUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDMUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUMzRCxDQUFBO1lBQ0QsT0FBTztnQkFDTCxRQUFRO2dCQUNSLGFBQWE7YUFDZCxDQUFBO1FBQ0gsQ0FBQztRQUNELEtBQUssVUFBVTtZQUNiLE9BQU87Z0JBQ0wsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxVQUFVO29CQUNoQixFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFO29CQUMxQixPQUFPLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7d0JBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTt3QkFDMUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO3FCQUN2QjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRTthQUM3QixDQUFBO1FBQ0gsS0FBSyxXQUFXO1lBQ2QsT0FBTztnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLEVBQUUsRUFBRSxHQUFHLENBQUMsS0FBSztvQkFDYixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7b0JBQ3hCLE9BQU8sRUFBRTt3QkFDUCxPQUFPLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFDdkMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO3dCQUMxQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7cUJBQ3ZCO2lCQUNGO2dCQUNELGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO2FBQzdCLENBQUE7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFvQixFQUFZLEVBQUUsQ0FDcEQsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVO0lBQ3ZCLENBQUMsQ0FBQztRQUNBLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixhQUFhLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDOUMsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLEVBQUUsVUFBVTtRQUNoQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ25CLFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFLEtBQUs7S0FDYjtJQUNELENBQUMsQ0FBQztRQUNBLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixhQUFhLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDOUMsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDckIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3hCLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQTtBQUVMLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBYSxFQUFpQixFQUFFLENBQ3BELEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVTtJQUNyQixDQUFDLENBQUM7UUFDQSxJQUFJLEVBQUUsVUFBVTtRQUNoQixFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDYixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDeEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxPQUFPO0tBQ2xCO0lBQ0QsQ0FBQyxDQUFDO1FBQ0EsSUFBSSxFQUFFLE9BQU87UUFDYixFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDYixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ25CLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUM7S0FDNUIsQ0FBQTtBQUVMLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFlLEVBQTBDLEVBQUUsQ0FDcEYsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBRXBDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFBO0lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUE7SUFDbEMsTUFBTSxXQUFXLEdBQUcsR0FBRyxNQUFNLFNBQVMsQ0FBQTtJQUN0QyxLQUFLLENBQUMsQ0FBQyxNQUFNO1NBQ1YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNmLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ25CLEVBQUUsRUFBRSxXQUFXO1FBQ2YsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO0tBQ3hELENBQUMsQ0FDSDtTQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN0RCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDbEMsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLE9BRTdEO0lBQ0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxVQUFVLENBQUE7SUFDNUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sU0FBUyxDQUFBO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQ3JDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQTtJQUUzRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQVUsRUFBRSxZQUFvQixFQUFFLEVBQUUsQ0FDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQWMsQ0FBQyxDQUFDLElBQUksQ0FDL0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFBO0lBRUgsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsVUFBMEMsRUFBRSxFQUFFLENBQ2xGLE1BQU07U0FDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzdHLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3JDLENBQUE7SUFFTCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxVQUEwQyxFQUFFLEVBQUUsQ0FDakYsTUFBTTtTQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDM0csSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDckMsQ0FBQTtJQUVMLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBc0IsRUFBRSxFQUFFLENBQzNDLE9BQU8sS0FBSyxJQUFJO1FBQ2QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBaUIsQ0FBQztRQUM5QyxDQUFDLENBQUMsWUFBWSxDQUFDLDBEQUEwRCxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzFHLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDOUUsQ0FBQTtJQUVQLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsRUFBRSxDQUM1RCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBWSxDQUFDLENBQUMsSUFBSSxDQUN6RyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUN6QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQTtRQUM1QixHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNoQixPQUFPLE1BQU07YUFDVixVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2YsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN4RSxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRTtTQUNqRSxDQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDeEQsQ0FBQTtJQUVILE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBZSxFQUFFLEVBQUUsQ0FDekMsTUFBTTtTQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDZixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDckQsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7S0FDakUsQ0FBQyxDQUNIO1NBQ0EsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2xFLENBQUE7SUFFTCxNQUFNLGFBQWEsR0FBRyxDQUNwQixHQUFlLEVBQ2YsTUFBb0MsRUFDTixFQUFFLENBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUc7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDeEMsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDMUIsUUFBUTtZQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNiLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNuRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDekIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQ0gsQ0FDRixDQUNKLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUosT0FBTyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLFlBQVksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQ3BELE1BQU07YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDMUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzNELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FDdEMsdUhBQXVILEVBQ3ZILENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDcEQsQ0FBQTtnQkFDRCxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN6QyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtvQkFDcEIsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JFLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxFQUFFLENBQW9DLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUM5QixXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFvQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUYsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDbkIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQy9CLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztvQkFDMUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFDbkQsaUJBQWlCO2lCQUNsQixDQUFDLENBQ0gsQ0FDRjthQUNKLENBQUMsQ0FDSCxDQUNGLENBQUMsQ0FDTCxDQUFBO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztRQUUxRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNuQixNQUFNO2FBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM3QixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzlDLENBQUE7WUFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQ25DLHVFQUF1RSxFQUN2RSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQ2pELENBQUE7WUFDRCxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMxQyxPQUFPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUM5QixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtvQkFDdEIsQ0FBQzt5QkFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNoRSxPQUFPLEtBQUssQ0FBQTtvQkFDZCxDQUFDO29CQUNELEdBQUcsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQTtvQkFDMUIsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDO1FBRXZFLFlBQVksRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzFCLE1BQU07YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FDakMsNkZBQTZGLEVBQzdGO2dCQUNFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ2xDLENBQ0YsQ0FBQTtZQUNELEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdkMsTUFBTTtpQkFDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDeEUsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDOUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FDbkMsdUVBQXVFLEVBQ3ZFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUNwQyxDQUFBO1lBQ0QsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNqQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDN0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFBO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUE7Z0JBQ3pCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO2dCQUMxQixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDdkIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNwRCxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDO1FBRTFFLHNCQUFzQixFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDckMsYUFBYSxDQUFDLHdFQUF3RSxFQUFFO1lBQ3RGLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1NBQzNDLENBQUM7YUFDQyxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDL0YsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQ2xDLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7UUFFTCxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUN6QixZQUFZLENBQ1YsMEtBQTBLLEVBQzFLLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDekQ7YUFDRSxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ2pDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFDdEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQjtRQUVMLG9CQUFvQixFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDbkMsWUFBWSxDQUNWLHNHQUFzRyxFQUN0RyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQ3pEO2FBQ0UsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUNqQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFDaEMsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQjtRQUVMLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQ3JDLGFBQWEsQ0FDWCxxU0FBcVMsRUFDclM7WUFDRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxVQUFVLEVBQUU7WUFDcEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7U0FDN0IsQ0FDRjthQUNFLElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFDaEcsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQy9CLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7UUFFTCx1QkFBdUIsRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUMzQyxhQUFhLENBQ1gsd1BBQXdQLEVBQ3hQO1lBQ0UsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUM5RCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtTQUM3QixDQUNGO2FBQ0UsSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUNoRyxRQUFRLENBQUMseUJBQXlCLENBQUMsRUFDbkMsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQjtRQUVMLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3hCLGFBQWEsQ0FDWCxxSkFBcUosRUFDcko7WUFDRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlELEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNsRCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUU7U0FDL0MsQ0FDRjthQUNFLElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUNuQixPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUN0QixFQUNELFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFDeEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQjtRQUVMLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3hCLGFBQWEsQ0FDWCxvR0FBb0csRUFDcEc7WUFDRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFO1NBQy9DLENBQ0Y7YUFDRSxJQUFJLENBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbkMsWUFBWSxDQUFDLHFFQUFxRSxFQUFFO1lBQ2xGO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixLQUFLLEVBQUUsT0FBTztxQkFDWCxTQUFTO2FBQ2I7U0FDRixDQUFDO2FBQ0MsSUFBSSxDQUNILE1BQU07YUFDSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNuQixNQUFNO2FBQ0gsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQzFCLE1BQU07YUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2YsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FDdkQ7YUFDQSxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUM5QyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQzVCLEVBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FDWixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RGLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDOUMsQ0FDRixDQUNGLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDMUIsRUFDRCxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQ3hCLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7UUFFTCxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUN4QixhQUFhLENBQ1gsMkdBQTJHLEVBQzNHLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDckQ7YUFDRSxJQUFJLENBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDbkIsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoRCxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDdEIsRUFDRCxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQ3ZCLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7UUFFTCxlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU07S0FDcEMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQ3pCLElBQStCLEVBQy9CLEdBQVcsRUFDWCxTQUFxRixFQUNyRixjQUE4RCxFQUM5RCxZQUdzQyxFQUN0QyxFQUFFLENBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsTUFBTSxRQUFRLEdBR1QsRUFBRSxDQUFBO0lBQ1AsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQ2pDLHlJQUF5SSxFQUN6SSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQy9DLENBQUE7UUFDRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQUUsU0FBUTtRQUMxQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ25ELEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFBO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUE7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDLENBQUMsQ0FBQTtBQUVKLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUMsT0FFNUQ7SUFDQyxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBQTtJQUM1QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUE7SUFDbkQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUE7SUFDdkYsTUFBTSxXQUFXLEdBQUcsR0FBRyxNQUFNLFNBQVMsQ0FBQTtJQUN0QyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUNyQyxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUE7SUFFMUcsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsVUFBMEMsRUFBRSxFQUFFLENBQ2pGLE1BQU07U0FDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2YsU0FBUztTQUNOLEtBQUs7U0FDTCxLQUFLLENBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMzRixRQUFRLEVBQUUsQ0FDZDtTQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBRXpFLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDekQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFBO0lBRUgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUNqQyxNQUFNO1NBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFO0tBQ2pFLENBQUMsQ0FDSDtTQUNBLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUN4QixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRSxDQUFBO0lBRUwsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQ25FLE1BQU07U0FDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2YsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQVU7UUFDOUIsRUFBRSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDdEIsYUFBYSxFQUFFLE1BQU07UUFDckIsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPO1FBQ1AsT0FBTztRQUNQLFVBQVUsRUFBRSxHQUFHO0tBQ2hCLENBQUMsQ0FDSDtTQUNBLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUN4QixNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtJQUVMLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBZSxFQUFFLE9BQWUsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUNuRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQztRQUMvQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNkLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQy9ELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM5QixDQUFDO1lBQ0QsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7WUFDckIsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUE7WUFDcEIsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkIsQ0FBQztLQUNGLENBQUMsQ0FDSCxFQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQzFFLENBQUE7SUFFSCxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDL0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDckIsWUFBWSxDQUFDLDBFQUEwRSxFQUFFO1lBQ3ZGLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLE9BQU8sRUFBRTtTQUM3QyxDQUFDLENBQ0gsRUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBVSxDQUFDLENBQUMsRUFDM0UsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUN0QixpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CO1FBRUQsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3JCLE1BQU07YUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2YsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQVk7WUFDaEMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDeEIsYUFBYSxFQUFFLFFBQVE7WUFDdkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPO1lBQ1AsTUFBTTtZQUNOLE9BQU87WUFDUCxhQUFhLEVBQUUsR0FBRztTQUNuQixDQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUNsQyxFQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2pDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFDcEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixDQUNuQjtRQUVILFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25GLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDN0MsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUN0QixpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CO1FBRUgsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3BDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFhLENBQUMsQ0FBQyxJQUFJLENBQzVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1lBQ3pCLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQTtZQUM1QixHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtZQUNyQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7UUFDOUcsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzdDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUMzQixpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CO1FBRUgsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNqRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDeEIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CO1FBRUgsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQzdCLE1BQU07YUFDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFhLENBQUMsQ0FBQyxJQUFJLENBQ25HLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtnQkFDekIsSUFBSSxDQUFDLEdBQUc7b0JBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFBO2dCQUM1QixHQUFHLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQTtnQkFDdkIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hGLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQ3pCLENBQUE7WUFDSCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzlDLENBQUE7WUFDRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzVELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBVSxDQUFDO2dCQUNuRCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDZCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTzt3QkFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBVSxDQUFDLENBQUE7b0JBQ3pFLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFBO29CQUNwQixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFVLENBQUMsQ0FBQyxDQUFBO2dCQUNuRyxDQUFDO2FBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQyxDQUFBO1lBQ0osT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7UUFFckUsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNqQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDekIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDZCxHQUFHLENBQUMsT0FBTyxLQUFLLE9BQU87Z0JBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDckUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUM3QyxNQUFNLENBQUMsTUFBTSxDQUNkO2dCQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQ0gsRUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7UUFFSCxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN0QixNQUFNO2FBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNmLFNBQVM7YUFDTixLQUFLO2FBQ0wsS0FBSyxDQUFVO1lBQ2QsS0FBSyxFQUFFLGdFQUFnRTtZQUN2RSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1NBQ25ELEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDM0IsUUFBUSxFQUFFLENBQ2Q7YUFDQSxJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3JDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzlDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDeEIsRUFDRCxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQ3RCLGlCQUFpQixFQUNqQixrQkFBa0IsQ0FDbkI7S0FDTixDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FFbkMsRUFBbUcsRUFBRSxDQUNwRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUN4QyxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUVsQyxFQUFpRyxFQUFFLENBQ2xHLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BRTVCLEVBSUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUUzRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUEyQixFQUlyRCxFQUFFLENBQ0YsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDNUUsQ0FBQSJ9
@@ -64,4 +64,4 @@ export declare const makeStoragePoller: (options: SubscriptionOptions) => Effect
64
64
  export declare const layerStoragePoller: (options: SubscriptionOptions) => Layer.Layer<never, never, ClusterServiceBus | Sharding.Sharding>;
65
65
  export declare const layer: (options: SubscriptionOptions) => Layer.Layer<Sharding.Sharding | Runners.Runners, never, ClusterServiceBus | MessageStorage.MessageStorage | RunnerHealth.RunnerHealth | RunnerStorage.RunnerStorage | ShardingConfig.ShardingConfig>;
66
66
  export {};
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlclNlcnZpY2VCdXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyU2VydmljZUJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSyx5QkFBeUIsRUFDOUIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUlyQyxPQUFPLEtBQUssS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxLQUFLLEtBQUssWUFBWSxNQUFNLHNDQUFzQyxDQUFBO0FBQ3pFLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUE7QUFDMUQsT0FBTyxLQUFLLEtBQUssYUFBYSxNQUFNLHVDQUF1QyxDQUFBO0FBQzNFLE9BQU8sS0FBSyxRQUFRLE1BQU0sa0NBQWtDLENBQUE7QUFDNUQsT0FBTyxLQUFLLEtBQUssY0FBYyxNQUFNLHdDQUF3QyxDQUFBO0FBQzdFLE9BQU8sS0FBSyxTQUFTLE1BQU0sbUNBQW1DLENBQUE7QUFHOUQsTUFBTSxXQUFXLHVCQUF1QjtJQUN0QyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLGlCQUFpQixLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyRSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQ3BDO0FBRUQsTUFBTSxXQUFXLDZCQUE2QjtJQUM1QyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0s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
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlclNlcnZpY2VCdXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyU2VydmljZUJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLEtBQUssdUJBQXVCLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLHlCQUF5QixFQUFFLEtBQUssdUJBQXVCLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hNLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBRXpDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBSXJDLE9BQU8sS0FBSyxLQUFLLGNBQWMsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RSxPQUFPLEtBQUssS0FBSyxZQUFZLE1BQU0sc0NBQXNDLENBQUE7QUFDekUsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQ0FBaUMsQ0FBQTtBQUMxRCxPQUFPLEtBQUssS0FBSyxhQUFhLE1BQU0sdUNBQXVDLENBQUE7QUFDM0UsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQ0FBa0MsQ0FBQTtBQUM1RCxPQUFPLEtBQUssS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxLQUFLLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQTtBQUc5RCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Q0FDcEM7QUFFRCxNQUFNLFdBQVcsNkJBQTZCO0lBQzVDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxPQUFP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
package/package.json CHANGED
@@ -1,49 +1,49 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "4.0.0-beta.260",
3
+ "version": "4.0.0-beta.262",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "@faker-js/faker": "^8.4.1",
8
8
  "change-case": "^5.4.4",
9
9
  "cross-fetch": "^4.1.0",
10
- "fast-check": "~4.7.0",
10
+ "fast-check": "~4.8.0",
11
11
  "jose": "^6.2.3",
12
12
  "path-parser": "^6.1.0",
13
13
  "proper-lockfile": "^4.1.2",
14
14
  "pure-rand": "8.4.0",
15
- "query-string": "^9.3.1",
16
- "effect-app": "4.0.0-beta.260"
15
+ "query-string": "^9.4.0",
16
+ "effect-app": "4.0.0-beta.262"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@azure/cosmos": "^4.9.3",
20
20
  "@azure/service-bus": "^7.9.5",
21
- "@effect/sql-sqlite-node": "4.0.0-beta.71",
22
- "@sentry/node": "10.51.0",
23
- "@sentry/opentelemetry": "10.51.0",
21
+ "@effect/sql-sqlite-node": "4.0.0-beta.74",
22
+ "@sentry/node": "10.55.0",
23
+ "@sentry/opentelemetry": "10.55.0",
24
24
  "@types/better-sqlite3": "^7.6.13",
25
- "@types/node": "25.6.0",
25
+ "@types/node": "25.9.1",
26
26
  "@types/proper-lockfile": "^4.1.4",
27
27
  "@types/redis": "^2.8.32",
28
28
  "@types/redlock": "^4.0.8",
29
- "better-sqlite3": "^12.9.0",
29
+ "better-sqlite3": "^12.10.0",
30
30
  "jwt-decode": "^4.0.0",
31
31
  "mongodb": "7.2.0",
32
32
  "redis": "^3.1.2",
33
33
  "redlock": "^4.2.0",
34
34
  "strip-ansi": "^7.2.0",
35
35
  "typescript": "~6.0.3",
36
- "vitest": "^4.1.5"
36
+ "vitest": "^4.1.7"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@azure/cosmos": "^4.9.3",
40
40
  "@azure/service-bus": "^7.9.5",
41
- "@effect/vitest": "^4.0.0-beta.71",
41
+ "@effect/vitest": "^4.0.0-beta.74",
42
42
  "@sendgrid/helpers": "^8.0.0",
43
43
  "@sendgrid/mail": "^8.1.6",
44
- "@sentry/node": "10.51.0",
45
- "@sentry/opentelemetry": "10.51.0",
46
- "effect": "^4.0.0-beta.71",
44
+ "@sentry/node": "10.55.0",
45
+ "@sentry/opentelemetry": "10.55.0",
46
+ "effect": "^4.0.0-beta.74",
47
47
  "jwt-decode": "^4.0.0",
48
48
  "redis": "^3.1.2",
49
49
  "redlock": "^4.2.0"
package/run.sh CHANGED
@@ -1 +1 @@
1
- OSMOS_TEST_URL="AccountEndpoint=https://macs-empasa-dev.documents.azure.com:443/;AccountKey=bu1BPiecISwsSG7cNGrF0RWAX8QhAOPZKIvK9WVNQXelsdt3FJ6jo6YPqnKChvMLvtwO1USsiTKBACDb6Zp1bA==;" pnpm test test/cluster-cosmos.test.ts
1
+ COSMOS_TEST_URL="AccountEndpoint=https://macs-empasa-dev.documents.azure.com:443/;AccountKey=bu1BPiecISwsSG7cNGrF0RWAX8QhAOPZKIvK9WVNQXelsdt3FJ6jo6YPqnKChvMLvtwO1USsiTKBACDb6Zp1bA==;" pnpm test test/cluster-cosmos.test.ts
@@ -415,7 +415,33 @@ export const makeMessageStorage = Effect.fnUntraced(function*(options?: {
415
415
  accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
416
416
  })
417
417
  )
418
- .pipe(Effect.tap(annotateItem), Effect.asVoid)
418
+ .pipe(
419
+ Effect.tap(annotateItem),
420
+ Effect.as(true),
421
+ Effect.catchIf(isPreconditionFailed, () => Effect.succeed(false))
422
+ )
423
+
424
+ const updateMessage = (
425
+ doc: MessageDoc,
426
+ update: (doc: MessageDoc) => boolean
427
+ ): Effect.Effect<void, unknown> =>
428
+ Effect.suspend(function loop(current = doc): Effect.Effect<void, unknown> {
429
+ if (!update(current)) return Effect.void
430
+ return replaceMessage(current).pipe(
431
+ Effect.flatMap((replaced) =>
432
+ replaced
433
+ ? Effect.void
434
+ : readMessage(current.id, current._partitionKey).pipe(
435
+ Effect.flatMap((found) =>
436
+ Option.match(found, {
437
+ onNone: () => Effect.void,
438
+ onSome: loop
439
+ })
440
+ )
441
+ )
442
+ )
443
+ )
444
+ })
419
445
 
420
446
  return yield* MessageStorage.makeEncoded({
421
447
  saveEnvelope: ({ deliverAt, envelope, primaryKey }) =>
@@ -470,13 +496,15 @@ export const makeMessageStorage = Effect.fnUntraced(function*(options?: {
470
496
  [{ name: "@requestId", value: reply.requestId }]
471
497
  )
472
498
  yield* Effect.forEach(messages, (message) => {
473
- if (reply._tag === "WithExit") {
474
- message.processed = true
475
- } else if (message.id !== reply.requestId && message.kind !== "Request") {
476
- return Effect.void
477
- }
478
- message.lastReplyId = reply.id
479
- return replaceMessage(message).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void))
499
+ return updateMessage(message, (doc) => {
500
+ if (reply._tag === "WithExit") {
501
+ doc.processed = true
502
+ } else if (doc.id !== reply.requestId && doc.kind !== "Request") {
503
+ return false
504
+ }
505
+ doc.lastReplyId = reply.id
506
+ return true
507
+ })
480
508
  }, { discard: true })
481
509
  })
482
510
  .pipe(annotate("saveReply"), refailPersistence, withTracerDisabled),
@@ -512,7 +540,7 @@ export const makeMessageStorage = Effect.fnUntraced(function*(options?: {
512
540
  message.processed = false
513
541
  message.lastReplyId = null
514
542
  message.lastRead = null
515
- return replaceMessage(message).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void))
543
+ return replaceMessage(message).pipe(Effect.asVoid)
516
544
  }, { discard: true })
517
545
  })
518
546
  .pipe(annotate("clearReplies"), refailPersistence, withTracerDisabled),
@@ -596,7 +624,7 @@ export const makeMessageStorage = Effect.fnUntraced(function*(options?: {
596
624
  Effect.flatMap((docs) =>
597
625
  Effect.forEach(docs, (doc) => {
598
626
  doc.lastRead = null
599
- return replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void))
627
+ return replaceMessage(doc).pipe(Effect.asVoid)
600
628
  }, { discard: true })
601
629
  ),
602
630
  annotate("resetAddress"),
@@ -658,7 +686,7 @@ export const makeMessageStorage = Effect.fnUntraced(function*(options?: {
658
686
  Effect.flatMap((docs) =>
659
687
  Effect.forEach(docs, (doc) => {
660
688
  doc.lastRead = null
661
- return replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void))
689
+ return replaceMessage(doc).pipe(Effect.asVoid)
662
690
  }, { discard: true })
663
691
  ),
664
692
  annotate("resetShards"),
@@ -674,7 +702,7 @@ const collectUnprocessed = <E>(
674
702
  docs: ReadonlyArray<MessageDoc>,
675
703
  now: number,
676
704
  lastReply: (replyId: string | null) => Effect.Effect<Option.Option<Reply.Encoded>, E>,
677
- replaceMessage: (doc: MessageDoc) => Effect.Effect<void, E>,
705
+ replaceMessage: (doc: MessageDoc) => Effect.Effect<boolean, E>,
678
706
  queryReplies: (
679
707
  query: string,
680
708
  parameters: ReadonlyArray<CosmosParameter>
@@ -693,8 +721,10 @@ const collectUnprocessed = <E>(
693
721
  if (Arr.isArrayNonEmpty(replies)) continue
694
722
  const sentReply = yield* lastReply(doc.lastReplyId)
695
723
  doc.lastRead = now
696
- yield* replaceMessage(doc).pipe(Effect.catchIf(isPreconditionFailed, () => Effect.void))
697
- messages.push(envelopeFromDoc(doc, sentReply))
724
+ const replaced = yield* replaceMessage(doc)
725
+ if (replaced) {
726
+ messages.push(envelopeFromDoc(doc, sentReply))
727
+ }
698
728
  }
699
729
  return messages
700
730
  })
@@ -85,6 +85,53 @@ describe.skipIf(!cosmosUrl)("ClusterCosmos MessageStorage", () => {
85
85
  })
86
86
  .pipe(Effect.provide(layerFor())))
87
87
 
88
+ it.effect("returns each unprocessed message to only one concurrent node poll", () =>
89
+ Effect
90
+ .gen(function*() {
91
+ const storage = yield* MessageStorage.MessageStorage
92
+ const shardId = testShardId("message-concurrent-poll")
93
+ const expectedIds = Array.from({ length: 20 }, (_, index) => index + 1)
94
+ const requests = yield* Effect.forEach(expectedIds, (id) => makeRequest({ payload: { id }, shardId }))
95
+ yield* Effect.forEach(requests, (request) => storage.saveRequest(request), { discard: true })
96
+
97
+ const polls = yield* Effect.forEach(
98
+ Array.from({ length: 8 }, () => void 0),
99
+ () => storage.unprocessedMessages([shardId]),
100
+ { concurrency: "unbounded" }
101
+ )
102
+ const receivedIds = polls
103
+ .flatMap((messages) => messages.map(requestPayloadId))
104
+ .sort((a, b) => a - b)
105
+
106
+ assert.deepStrictEqual(receivedIds, expectedIds)
107
+ assert.strictEqual((yield* storage.unprocessedMessages([shardId])).length, 0)
108
+ })
109
+ .pipe(Effect.provide(layerFor())), 20000)
110
+
111
+ it.effect("preserves terminal reply state after concurrent node polling", () =>
112
+ Effect
113
+ .gen(function*() {
114
+ const storage = yield* MessageStorage.MessageStorage
115
+ const shardId = testShardId("message-concurrent-reply")
116
+ const primaryKey = `concurrent-reply/${testRunId}`
117
+ const request = yield* makeStreamRequest(primaryKey, shardId)
118
+ assert.strictEqual((yield* storage.saveRequest(request))._tag, "Success")
119
+
120
+ const polls = yield* Effect.forEach(
121
+ Array.from({ length: 8 }, () => void 0),
122
+ () => storage.unprocessedMessages([shardId]),
123
+ { concurrency: "unbounded" }
124
+ )
125
+ assert.strictEqual(polls.flat().length, 1)
126
+
127
+ yield* storage.saveReply(yield* makeStreamReply(request))
128
+
129
+ const duplicate = yield* storage.saveRequest(yield* makeStreamRequest(primaryKey, shardId))
130
+ assert(duplicate._tag === "Duplicate" && Option.isSome(duplicate.lastReceivedReply))
131
+ assert.strictEqual(duplicate.lastReceivedReply.value._tag, "WithExit")
132
+ })
133
+ .pipe(Effect.provide(layerFor())), 20000)
134
+
88
135
  it.effect("notifies registered reply handlers", () =>
89
136
  Effect
90
137
  .gen(function*() {
@@ -135,6 +182,46 @@ describe.skipIf(!cosmosUrl)("ClusterCosmos RunnerStorage", () => {
135
182
  })
136
183
  .pipe(Effect.provide(layerFor())))
137
184
 
185
+ it.effect("preserves shard lock ownership when two runners acquire concurrently", () =>
186
+ Effect
187
+ .gen(function*() {
188
+ const storage = yield* RunnerStorage.RunnerStorage
189
+ const runnerAddress1 = testRunnerAddress(4)
190
+ const runnerAddress2 = testRunnerAddress(5)
191
+ const runner1 = Runner.make({
192
+ address: runnerAddress1,
193
+ groups: ["default"],
194
+ weight: 1
195
+ })
196
+ const runner2 = Runner.make({
197
+ address: runnerAddress2,
198
+ groups: ["default"],
199
+ weight: 1
200
+ })
201
+ const shards = Array.from({ length: 16 }, (_, index) => testShardId("runner-occ", index + 1))
202
+
203
+ yield* storage.register(runner1, true)
204
+ yield* storage.register(runner2, true)
205
+
206
+ const [acquired1, acquired2] = yield* Effect.all([
207
+ storage.acquire(runnerAddress1, shards),
208
+ storage.acquire(runnerAddress2, shards)
209
+ ], { concurrency: "unbounded" })
210
+ const acquiredIds = [...acquired1, ...acquired2].map((shard) => shard.id).sort((a, b) => a - b)
211
+
212
+ assert.deepStrictEqual(acquiredIds, shards.map((shard) => shard.id))
213
+ assert.strictEqual(new Set(acquiredIds).size, shards.length)
214
+ assert.deepStrictEqual(
215
+ (yield* storage.refresh(runnerAddress1, shards)).map((shard) => shard.id).sort((a, b) => a - b),
216
+ acquired1.map((shard) => shard.id).sort((a, b) => a - b)
217
+ )
218
+ assert.deepStrictEqual(
219
+ (yield* storage.refresh(runnerAddress2, shards)).map((shard) => shard.id).sort((a, b) => a - b),
220
+ acquired2.map((shard) => shard.id).sort((a, b) => a - b)
221
+ )
222
+ })
223
+ .pipe(Effect.provide(layerFor())), 20000)
224
+
138
225
  it.effect("acquires, refreshes, releases, and re-acquires shard locks", () =>
139
226
  Effect
140
227
  .gen(function*() {
@@ -0,0 +1,207 @@
1
+ import { SqliteClient } from "@effect/sql-sqlite-node"
2
+ import { assert, describe, it } from "@effect/vitest"
3
+ import { Context, Duration, Effect, Exit, Fiber, Layer, Option, Schema } from "effect"
4
+ import { ClusterSchema, ClusterWorkflowEngine, RunnerAddress, RunnerHealth, Runners, Sharding, ShardingConfig, SqlMessageStorage, SqlRunnerStorage } from "effect/unstable/cluster"
5
+ import { DurableDeferred, Workflow } from "effect/unstable/workflow"
6
+
7
+ const testRunId = `${Date.now()}-${process.pid}-${Math.random().toString(16).slice(2)}`
8
+ const runnerPortBase = 10000 + Date.now() % 40000
9
+
10
+ describe("ClusterSqlite Workflow", () => {
11
+ it.live("resumes a running workflow suspended on a durable deferred", () =>
12
+ Effect
13
+ .gen(function*() {
14
+ const sharding = yield* Sharding.Sharding
15
+ const payload = { id: `deferred-${testRunId}` }
16
+ const executionId = yield* SqliteDeferredWorkflow.executionId(payload)
17
+
18
+ const fiber = yield* SqliteDeferredWorkflow.execute(payload).pipe(Effect.forkScoped)
19
+ yield* waitForDeferredWorkflowSuspended(executionId)
20
+
21
+ const token = yield* DurableDeferred.tokenFromPayload(SqliteDeferred, {
22
+ workflow: SqliteDeferredWorkflow,
23
+ payload
24
+ })
25
+ yield* DurableDeferred.done(SqliteDeferred, { token, exit: Exit.succeed("resolved") })
26
+ yield* sharding.pollStorage
27
+
28
+ const value = yield* Fiber.join(fiber).pipe(Effect.timeout(Duration.seconds(15)))
29
+ assert.strictEqual(value, `${payload.id}:resolved`)
30
+ assert.strictEqual(yield* waitForDeferredWorkflowComplete(executionId), `${payload.id}:resolved`)
31
+ })
32
+ .pipe(Effect.provide(clusterWorkflowLayer())), 30000)
33
+
34
+ it.live("progresses through sequential durable deferred steps", () =>
35
+ Effect
36
+ .gen(function*() {
37
+ const log = yield* StepLog
38
+ const sharding = yield* Sharding.Sharding
39
+ const payload = { id: `steps-${testRunId}` }
40
+ const executionId = yield* SequentialDeferredWorkflow.executionId(payload)
41
+
42
+ const fiber = yield* SequentialDeferredWorkflow.execute(payload).pipe(Effect.forkScoped)
43
+ yield* waitForSequentialWorkflowSuspended(executionId)
44
+
45
+ yield* completeStep(SequentialStep1, payload, "one")
46
+ yield* sharding.pollStorage
47
+ yield* waitForStep(log, "step-1")
48
+
49
+ yield* completeStep(SequentialStep2, payload, "two")
50
+ yield* sharding.pollStorage
51
+ yield* waitForStep(log, "step-2")
52
+
53
+ yield* completeStep(SequentialStep3, payload, "three")
54
+ yield* sharding.pollStorage
55
+
56
+ const value = yield* Fiber.join(fiber).pipe(Effect.timeout(Duration.seconds(15)))
57
+ assert.strictEqual(value, "one:two:three")
58
+ assert(log.steps.includes("step-3"))
59
+ })
60
+ .pipe(Effect.provide(clusterWorkflowLayer())), 30000)
61
+ })
62
+
63
+ class StepLog extends Context.Service<StepLog, { readonly steps: Array<string> }>()("StepLog") {
64
+ static readonly layer = Layer.effect(StepLog, Effect.sync(() => ({ steps: [] })))
65
+ }
66
+
67
+ const SqliteDeferred = DurableDeferred.make("ClusterSqlite/Deferred", { success: Schema.String })
68
+
69
+ const SqliteDeferredWorkflow = Workflow
70
+ .make({
71
+ name: "ClusterSqlite/DeferredWorkflow",
72
+ payload: { id: Schema.String },
73
+ success: Schema.String,
74
+ idempotencyKey: ({ id }) => id
75
+ })
76
+ .annotate(ClusterSchema.ShardGroup, () => testShardGroup("workflow"))
77
+
78
+ const SqliteDeferredWorkflowLayer = SqliteDeferredWorkflow.toLayer(Effect.fnUntraced(function*({ id }) {
79
+ const value = yield* DurableDeferred.await(SqliteDeferred)
80
+ return `${id}:${value}`
81
+ }))
82
+
83
+ const SequentialStep1 = DurableDeferred.make("ClusterSqlite/SequentialStep1", { success: Schema.String })
84
+ const SequentialStep2 = DurableDeferred.make("ClusterSqlite/SequentialStep2", { success: Schema.String })
85
+ const SequentialStep3 = DurableDeferred.make("ClusterSqlite/SequentialStep3", { success: Schema.String })
86
+
87
+ const SequentialDeferredWorkflow = Workflow
88
+ .make({
89
+ name: "ClusterSqlite/SequentialDeferredWorkflow",
90
+ payload: { id: Schema.String },
91
+ success: Schema.String,
92
+ idempotencyKey: ({ id }) => id
93
+ })
94
+ .annotate(ClusterSchema.ShardGroup, () => testShardGroup("workflow"))
95
+
96
+ const SequentialDeferredWorkflowLayer = SequentialDeferredWorkflow.toLayer(Effect.fnUntraced(function*() {
97
+ const log = yield* StepLog
98
+ const step1 = yield* DurableDeferred.await(SequentialStep1)
99
+ log.steps.push("step-1")
100
+ const step2 = yield* DurableDeferred.await(SequentialStep2)
101
+ log.steps.push("step-2")
102
+ const step3 = yield* DurableDeferred.await(SequentialStep3)
103
+ log.steps.push("step-3")
104
+ return `${step1}:${step2}:${step3}`
105
+ }))
106
+
107
+ const clusterWorkflowLayer = () => {
108
+ const prefix = "test_cluster_sqlite"
109
+ const config = ShardingConfig.layer({
110
+ runnerAddress: Option.some(testRunnerAddress(20)),
111
+ shardsPerGroup: 1,
112
+ availableShardGroups: [testShardGroup("workflow")],
113
+ assignedShardGroups: [testShardGroup("workflow")],
114
+ entityTerminationTimeout: 0,
115
+ entityMessagePollInterval: 50,
116
+ entityReplyPollInterval: 50,
117
+ refreshAssignmentsInterval: 0,
118
+ sendRetryInterval: 50
119
+ })
120
+ const storage = Layer
121
+ .merge(
122
+ SqlMessageStorage.layerWith({ prefix }),
123
+ Layer.orDie(SqlRunnerStorage.layerWith({ prefix }))
124
+ )
125
+ .pipe(Layer.provide(SqliteClient.layer({ filename: ":memory:" })))
126
+
127
+ return Layer
128
+ .merge(SqliteDeferredWorkflowLayer, SequentialDeferredWorkflowLayer)
129
+ .pipe(
130
+ Layer.provideMerge(StepLog.layer),
131
+ Layer.provideMerge(
132
+ ClusterWorkflowEngine.layer.pipe(
133
+ Layer.provideMerge(Sharding.layer),
134
+ Layer.provide(Runners.layerNoop),
135
+ Layer.provide(RunnerHealth.layerNoop),
136
+ Layer.provide(storage),
137
+ Layer.provide(config)
138
+ )
139
+ )
140
+ )
141
+ }
142
+
143
+ const completeStep = <Success extends Schema.Top>(
144
+ deferred: DurableDeferred.DurableDeferred<Success, Schema.Never>,
145
+ payload: { readonly id: string },
146
+ value: Success["Type"]
147
+ ) =>
148
+ Effect.gen(function*() {
149
+ const token = yield* DurableDeferred.tokenFromPayload(deferred, {
150
+ workflow: SequentialDeferredWorkflow,
151
+ payload
152
+ })
153
+ yield* DurableDeferred.done(deferred, { token, exit: Exit.succeed(value) })
154
+ })
155
+
156
+ const waitForDeferredWorkflowSuspended = (executionId: string) => waitForSuspended(SqliteDeferredWorkflow, executionId)
157
+
158
+ const waitForSequentialWorkflowSuspended = (executionId: string) =>
159
+ waitForSuspended(SequentialDeferredWorkflow, executionId)
160
+
161
+ const waitForSuspended = <A, E, R>(
162
+ workflow: {
163
+ readonly poll: (
164
+ executionId: string
165
+ ) => Effect.Effect<Option.Option<Workflow.Result<A, E>>, never, R>
166
+ },
167
+ executionId: string
168
+ ) =>
169
+ Effect.gen(function*() {
170
+ const sharding = yield* Sharding.Sharding
171
+ for (let i = 0; i < 100; i++) {
172
+ yield* sharding.pollStorage
173
+ const polled = yield* workflow.poll(executionId)
174
+ if (Option.isSome(polled) && polled.value._tag === "Suspended") return
175
+ yield* Effect.sleep(Duration.millis(100))
176
+ }
177
+ return yield* Effect.fail(new Error(`Workflow ${executionId} did not suspend`))
178
+ })
179
+
180
+ const waitForDeferredWorkflowComplete = (executionId: string) =>
181
+ Effect.gen(function*() {
182
+ const sharding = yield* Sharding.Sharding
183
+ for (let i = 0; i < 100; i++) {
184
+ yield* sharding.pollStorage
185
+ const polled = yield* SqliteDeferredWorkflow.poll(executionId)
186
+ if (Option.isSome(polled) && polled.value._tag === "Complete") {
187
+ const exit = polled.value.exit
188
+ assert(Exit.isSuccess(exit))
189
+ return exit.value
190
+ }
191
+ yield* Effect.sleep(Duration.millis(100))
192
+ }
193
+ return yield* Effect.fail(new Error(`Workflow ${executionId} did not complete`))
194
+ })
195
+
196
+ const waitForStep = (log: StepLog["Service"], step: string) =>
197
+ Effect.gen(function*() {
198
+ for (let i = 0; i < 100; i++) {
199
+ if (log.steps.includes(step)) return
200
+ yield* Effect.sleep(Duration.millis(100))
201
+ }
202
+ return yield* Effect.fail(new Error(`Workflow did not reach ${step}`))
203
+ })
204
+
205
+ const testShardGroup = (label: string) => `cluster-sqlite-${testRunId}-${label}`
206
+
207
+ const testRunnerAddress = (offset: number) => RunnerAddress.make("localhost", runnerPortBase + offset)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-sqlite.test.d.ts","sourceRoot":"","sources":["../cluster-sqlite.test.ts"],"names":[],"mappings":""}