@stigg/node-server-sdk 3.35.0 → 3.37.0
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/dist/client.d.ts +1 -1
- package/dist/client.js +4 -5
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +2 -2
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +5 -7
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.d.ts +2 -3
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.js +1 -1
- package/dist/services/cache/cacheService.d.ts +2 -1
- package/dist/services/cache/inMemoryCacheService.d.ts +2 -1
- package/dist/services/cache/inMemoryCacheService.js +6 -1
- package/dist/services/cache/redisCacheService.d.ts +10 -7
- package/dist/services/cache/redisCacheService.js +151 -114
- package/dist/services/entitlementsService.d.ts +8 -15
- package/dist/services/entitlementsService.js +29 -19
- package/dist/services/entitlementsService.utils.d.ts +9 -6
- package/dist/services/entitlementsService.utils.js +1 -1
- package/dist/services/inMemoryEntitlementsService.d.ts +1 -2
- package/dist/services/inMemoryEntitlementsService.js +2 -27
- package/dist/services/redisEntitlementsService.d.ts +1 -9
- package/dist/services/redisEntitlementsService.js +6 -65
- package/package.json +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { OptionalPromise } from '../types';
|
|
2
1
|
import CachedEntitlement from './cache/cachedEntitlement';
|
|
3
|
-
export declare type GetEntitlementsOperations = 'getBooleanEntitlement' | 'getNumericEntitlement' | 'getMeteredEntitlement' | '
|
|
2
|
+
export declare type GetEntitlementsOperations = 'getBooleanEntitlement' | 'getNumericEntitlement' | 'getMeteredEntitlement' | 'getCustomerEntitlements';
|
|
4
3
|
export declare type RefetchEntitlementsTriggeredBy = GetEntitlementsOperations | 'updateSubscription' | 'cancelSubscription' | 'createSubscription' | 'reloadEntitlements';
|
|
5
4
|
export declare const DATE_IN_FAR_PAST: Date;
|
|
6
5
|
export declare type EntitlementsMap = Map<string, CachedEntitlement>;
|
|
@@ -17,19 +16,23 @@ export declare type EntitlementsResponseCacheMiss = {
|
|
|
17
16
|
globalCustomerMissing: boolean;
|
|
18
17
|
};
|
|
19
18
|
export declare type EntitlementsResponse = EntitlementsResponseCacheHit | EntitlementsResponseCacheMiss;
|
|
19
|
+
export declare type EntitlementResponse = {
|
|
20
|
+
cacheMiss: boolean;
|
|
21
|
+
customerExists: boolean;
|
|
22
|
+
entitlement: CachedEntitlement | null;
|
|
23
|
+
globalCustomerMissing: boolean;
|
|
24
|
+
};
|
|
20
25
|
export declare const doesCustomerExist: (entitlements: EntitlementsMap) => boolean;
|
|
21
26
|
export declare const entitlementsResponseMapper: {
|
|
22
27
|
cacheHit: (entitlements: EntitlementsMap) => EntitlementsResponseCacheHit;
|
|
23
28
|
cacheMiss: (globalCustomerMissing?: boolean) => EntitlementsResponseCacheMiss;
|
|
24
29
|
};
|
|
25
|
-
export declare type RefetchEntityEntitlementsAfterCacheMissParams
|
|
30
|
+
export declare type RefetchEntityEntitlementsAfterCacheMissParams = {
|
|
26
31
|
customerId: string;
|
|
27
32
|
resourceId: string | undefined;
|
|
28
33
|
triggeredBy: GetEntitlementsOperations;
|
|
29
|
-
loadFromCache: () => OptionalPromise<T>;
|
|
30
|
-
transformApiResult: (result: EntitlementsMap) => T;
|
|
31
34
|
};
|
|
32
|
-
export declare type RefetchEntitlementsAfterCacheMissParams
|
|
35
|
+
export declare type RefetchEntitlementsAfterCacheMissParams = RefetchEntityEntitlementsAfterCacheMissParams & {
|
|
33
36
|
refetchGlobalCustomer: boolean;
|
|
34
37
|
};
|
|
35
38
|
export declare type RefetchEntitlementsParams = {
|
|
@@ -24,4 +24,4 @@ exports.entitlementsResponseMapper = {
|
|
|
24
24
|
globalCustomerMissing,
|
|
25
25
|
}),
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFpQztBQWlCcEIsUUFBQSxnQkFBZ0IsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQTJCNUMsdURBQXVEO0FBQ3ZELHlCQUF5QjtBQUN6QiwwREFBMEQ7QUFDMUQsNkRBQTZEO0FBQzdELG1FQUFtRTtBQUM1RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBNkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFBLGdCQUFPLEVBQUMsWUFBWSxDQUFDLENBQUM7QUFBOUUsUUFBQSxpQkFBaUIscUJBQTZEO0FBRTlFLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMsUUFBUSxFQUFFLENBQUMsWUFBNkIsRUFBZ0MsRUFBRSxDQUFDLENBQUM7UUFDMUUsU0FBUyxFQUFFLEtBQUs7UUFDaEIsWUFBWTtRQUNaLGNBQWMsRUFBRSxJQUFBLHlCQUFpQixFQUFDLFlBQVksQ0FBQztRQUMvQyxxQkFBcUIsRUFBRSxLQUFLO0tBQzdCLENBQUM7SUFDRixTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLEVBQWlDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLFNBQVMsRUFBRSxJQUFJO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsY0FBYyxFQUFFLEtBQUs7UUFDckIscUJBQXFCO0tBQ3RCLENBQUM7Q0FDSCxDQUFDIn0=
|
|
@@ -20,6 +20,5 @@ export declare class InMemoryEntitlementsService extends EntitlementsService {
|
|
|
20
20
|
private isErrorRecoverable;
|
|
21
21
|
clearCache(): void;
|
|
22
22
|
private onPackagePublished;
|
|
23
|
-
|
|
24
|
-
protected refetchEntityEntitlementsAfterCacheMiss<T>(params: RefetchEntityEntitlementsAfterCacheMissParams<T>): Promise<T>;
|
|
23
|
+
protected refetchEntityEntitlementsAfterCacheMiss(params: RefetchEntityEntitlementsAfterCacheMissParams): Promise<import("./entitlementsService.utils").EntitlementsResponseCacheHit>;
|
|
25
24
|
}
|
|
@@ -9,10 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.InMemoryEntitlementsService = void 0;
|
|
10
10
|
const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
|
|
11
11
|
const entitlementsService_1 = require("./entitlementsService");
|
|
12
|
-
const entitlementDecisionService_1 = require("./entitlementDecisionService");
|
|
13
12
|
const ReuseOngoingExecution_1 = require("../utils/decorators/ReuseOngoingExecution");
|
|
14
13
|
const lodash_1 = require("lodash");
|
|
15
|
-
const entitlementsService_utils_1 = require("./entitlementsService.utils");
|
|
16
14
|
const WS_ERROR_RECONNECT_INTERVAL_MS = 5 * 1000;
|
|
17
15
|
class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsService {
|
|
18
16
|
constructor(cacheService, client, batchedGraphqlClient, eventEmitter, loggerService, edgeApiClient) {
|
|
@@ -126,35 +124,12 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
|
|
|
126
124
|
}
|
|
127
125
|
this.eventEmitter.emit('packagePublished', result.data.packagePublished);
|
|
128
126
|
}
|
|
129
|
-
async getCustomerEntitlementsWithUsage(customerRefId, resourceId) {
|
|
130
|
-
const loadFromCache = () => this.cacheService.getCustomerEntitlements(customerRefId, resourceId);
|
|
131
|
-
const result = loadFromCache();
|
|
132
|
-
let { entitlements, customerExists } = result;
|
|
133
|
-
if (result.cacheMiss || !this.isInitialized) {
|
|
134
|
-
({ entitlements, customerExists } = await this.refetchEntitlementsAfterCacheMiss({
|
|
135
|
-
customerId: customerRefId,
|
|
136
|
-
resourceId,
|
|
137
|
-
refetchGlobalCustomer: result.globalCustomerMissing,
|
|
138
|
-
triggeredBy: 'getCustomerEntitlementsWithUsage',
|
|
139
|
-
loadFromCache,
|
|
140
|
-
transformApiResult: (entitlements) => entitlementsService_utils_1.entitlementsResponseMapper.cacheHit(entitlements),
|
|
141
|
-
}));
|
|
142
|
-
}
|
|
143
|
-
if (!entitlements) {
|
|
144
|
-
return [];
|
|
145
|
-
}
|
|
146
|
-
return Array.from(entitlements.values()).map((value) => {
|
|
147
|
-
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, value);
|
|
148
|
-
return this.modelMapper.mapEntitlement(value, decision);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
127
|
async refetchEntityEntitlementsAfterCacheMiss(params) {
|
|
152
|
-
|
|
153
|
-
return params.transformApiResult(response);
|
|
128
|
+
return this.refetchEntitlements(params);
|
|
154
129
|
}
|
|
155
130
|
}
|
|
156
131
|
__decorate([
|
|
157
132
|
(0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
|
|
158
133
|
], InMemoryEntitlementsService.prototype, "refetchEntityEntitlementsAfterCacheMiss", null);
|
|
159
134
|
exports.InMemoryEntitlementsService = InMemoryEntitlementsService;
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxnRUFLZ0Q7QUFHaEQsK0RBQTREO0FBSzVELHFGQUFrRjtBQUNsRixtQ0FBaUM7QUFHakMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBRWhELE1BQWEsMkJBQTRCLFNBQVEseUNBQW1CO0lBS2xFLFlBQ3FCLFlBQWtDLEVBQ3JELE1BQTJDLEVBQzNDLG9CQUF5RCxFQUN4QyxZQUErQixFQUNoRCxhQUE0QixFQUM1QixhQUFtQztRQUVuQyxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFQN0QsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBR3BDLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQVIxQyw2QkFBd0IsR0FBa0MsSUFBSSxDQUFDO1FBQy9ELHNCQUFpQixHQUFrQyxJQUFJLENBQUM7UUFDeEQscUJBQWdCLEdBQWtDLElBQUksQ0FBQztJQVcvRCxDQUFDO0lBRVEsSUFBSTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxTQUFTLENBQzNGLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQzVDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQzFDLENBQUM7UUFFRixJ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
|
|
@@ -4,21 +4,13 @@ import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
|
|
|
4
4
|
import { LoggerService } from './loggerService';
|
|
5
5
|
import { RedisCacheService } from './cache/redisCacheService';
|
|
6
6
|
import { EdgeApiClient } from './EdgeApiClient';
|
|
7
|
-
import CachedEntitlement from './cache/cachedEntitlement';
|
|
8
7
|
export declare class RedisEntitlementsService extends EntitlementsService {
|
|
9
8
|
protected readonly cacheService: RedisCacheService;
|
|
10
9
|
protected readonly graphqlClient: ApolloClient<NormalizedCacheObject>;
|
|
11
10
|
protected readonly loggerService: LoggerService;
|
|
12
11
|
protected readonly batchedGraphClient: ApolloClient<NormalizedCacheObject>;
|
|
13
12
|
constructor(cacheService: RedisCacheService, graphqlClient: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService, batchedGraphClient: ApolloClient<NormalizedCacheObject>, edgeApiClient: EdgeApiClient | null);
|
|
14
|
-
protected
|
|
15
|
-
cacheMiss: boolean;
|
|
16
|
-
customerExists: boolean;
|
|
17
|
-
entitlement: CachedEntitlement | null;
|
|
18
|
-
globalCustomerMissing: boolean;
|
|
19
|
-
}>;
|
|
20
|
-
getCustomerEntitlementsWithUsage(customerRefId: string, resourceId: string | undefined): Promise<import("..").Entitlement[]>;
|
|
21
|
-
protected refetchEntityEntitlementsAfterCacheMiss<T>({ loadFromCache, transformApiResult, ...restParams }: RefetchEntityEntitlementsAfterCacheMissParams<T>): Promise<T>;
|
|
13
|
+
protected refetchEntityEntitlementsAfterCacheMiss(params: RefetchEntityEntitlementsAfterCacheMissParams): Promise<import("./entitlementsService.utils").EntitlementsResponse>;
|
|
22
14
|
clearCache(): Promise<void>;
|
|
23
15
|
init(): void | Promise<void>;
|
|
24
16
|
cleanup(): void | Promise<void>;
|
|
@@ -5,25 +5,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
9
|
-
var t = {};
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
13
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
14
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
15
|
-
t[p[i]] = s[p[i]];
|
|
16
|
-
}
|
|
17
|
-
return t;
|
|
18
|
-
};
|
|
19
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
9
|
exports.RedisEntitlementsService = void 0;
|
|
21
10
|
const entitlementsService_1 = require("./entitlementsService");
|
|
22
|
-
const entitlementsService_utils_1 = require("./entitlementsService.utils");
|
|
23
|
-
const entitlementDecisionService_1 = require("./entitlementDecisionService");
|
|
24
11
|
const ReuseOngoingExecution_1 = require("../utils/decorators/ReuseOngoingExecution");
|
|
25
12
|
const lodash_1 = require("lodash");
|
|
26
|
-
const isMetered_1 = require("../utils/isMetered");
|
|
27
13
|
class RedisEntitlementsService extends entitlementsService_1.EntitlementsService {
|
|
28
14
|
constructor(cacheService, graphqlClient, loggerService, batchedGraphClient, edgeApiClient) {
|
|
29
15
|
super(graphqlClient, loggerService, batchedGraphClient, edgeApiClient, cacheService);
|
|
@@ -33,63 +19,18 @@ class RedisEntitlementsService extends entitlementsService_1.EntitlementsService
|
|
|
33
19
|
this.batchedGraphClient = batchedGraphClient;
|
|
34
20
|
this.isInitialized = true; // redis is always considered as initialized
|
|
35
21
|
}
|
|
36
|
-
async
|
|
37
|
-
const result = await super.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId);
|
|
38
|
-
const { entitlement } = result;
|
|
39
|
-
if (!(0, isMetered_1.isMetered)(entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature)) {
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
const featureUsageData = await this.cacheService.getFeatureUsage(customerRefId, featureRefId, resourceId);
|
|
43
|
-
if (featureUsageData === null) {
|
|
44
|
-
this.loggerService.error('Failed to find metered feature usage - considering it as cache miss', {
|
|
45
|
-
customerRefId,
|
|
46
|
-
featureRefId,
|
|
47
|
-
});
|
|
48
|
-
return { cacheMiss: true, customerExists: false, entitlement: null, globalCustomerMissing: false };
|
|
49
|
-
}
|
|
50
|
-
const cachedFeatureUsage = JSON.parse(featureUsageData);
|
|
51
|
-
const { calculatedEntitlement, featureUsage } = entitlement;
|
|
52
|
-
return Object.assign(Object.assign({}, result), { entitlement: {
|
|
53
|
-
calculatedEntitlement,
|
|
54
|
-
featureUsage: Object.assign(Object.assign({}, featureUsage), cachedFeatureUsage),
|
|
55
|
-
} });
|
|
56
|
-
}
|
|
57
|
-
async getCustomerEntitlementsWithUsage(customerRefId, resourceId) {
|
|
58
|
-
const loadFromCache = () => this.cacheService.getCustomerEntitlementsWithUsage(customerRefId, resourceId);
|
|
59
|
-
const result = await loadFromCache();
|
|
60
|
-
let { entitlements, customerExists } = result;
|
|
61
|
-
if (result.cacheMiss) {
|
|
62
|
-
({ entitlements, customerExists } = await this.refetchEntitlementsAfterCacheMiss({
|
|
63
|
-
customerId: customerRefId,
|
|
64
|
-
resourceId,
|
|
65
|
-
refetchGlobalCustomer: result.globalCustomerMissing,
|
|
66
|
-
triggeredBy: 'getCustomerEntitlementsWithUsage',
|
|
67
|
-
loadFromCache,
|
|
68
|
-
transformApiResult: (entitlements) => entitlementsService_utils_1.entitlementsResponseMapper.cacheHit(entitlements),
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
if (!entitlements) {
|
|
72
|
-
return [];
|
|
73
|
-
}
|
|
74
|
-
return Array.from(entitlements.values()).map((entitlement) => {
|
|
75
|
-
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
|
|
76
|
-
return this.modelMapper.mapEntitlement(entitlement, decision);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
async refetchEntityEntitlementsAfterCacheMiss(_a) {
|
|
80
|
-
var { loadFromCache, transformApiResult } = _a, restParams = __rest(_a, ["loadFromCache", "transformApiResult"]);
|
|
81
|
-
const { customerId, resourceId } = restParams;
|
|
22
|
+
async refetchEntityEntitlementsAfterCacheMiss(params) {
|
|
82
23
|
const { distributedRefetchEntitlementsService } = this.cacheService;
|
|
83
|
-
const reloadFromApi = () => this.refetchEntitlements(restParams);
|
|
84
24
|
if (!distributedRefetchEntitlementsService) {
|
|
85
|
-
|
|
86
|
-
return transformApiResult(response);
|
|
25
|
+
return this.refetchEntitlements(params);
|
|
87
26
|
}
|
|
27
|
+
const { customerId, resourceId } = params;
|
|
28
|
+
const reloadFromApi = () => this.refetchEntitlements(params);
|
|
29
|
+
const loadFromCache = () => this.cacheService.getCustomerEntitlements(customerId, resourceId);
|
|
88
30
|
return distributedRefetchEntitlementsService.executeOnceAcrossMultipleProcesses({
|
|
89
31
|
customerId,
|
|
90
32
|
resourceId,
|
|
91
33
|
reloadFromApi,
|
|
92
|
-
transformApiResult,
|
|
93
34
|
loadFromCache,
|
|
94
35
|
});
|
|
95
36
|
}
|
|
@@ -109,4 +50,4 @@ __decorate([
|
|
|
109
50
|
(0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
|
|
110
51
|
], RedisEntitlementsService.prototype, "refetchEntityEntitlementsAfterCacheMiss", null);
|
|
111
52
|
exports.RedisEntitlementsService = RedisEntitlementsService;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwrREFBNEQ7QUFNNUQscUZBQWtGO0FBQ2xGLG1DQUFpQztBQUVqQyxNQUFhLHdCQUF5QixTQUFRLHlDQUFtQjtJQUMvRCxZQUNxQixZQUErQixFQUMvQixhQUFrRCxFQUNsRCxhQUE0QixFQUM1QixrQkFBdUQsRUFDMUUsYUFBbUM7UUFFbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBTmxFLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQztRQUkxRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLDRDQUE0QztJQUN6RSxDQUFDO0lBS2tCLEtBQUssQ0FBQyx1Q0FBdUMsQ0FDOUQsTUFBcUQ7UUFFckQsTUFBTSxFQUFFLHFDQUFxQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRSxJQUFJLENBQUMscUNBQXFDLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFOUYsT0FBTyxxQ0FBcUMsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RSxVQUFVO1lBQ1YsVUFBVTtZQUNWLGFBQWE7WUFDYixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLFVBQVU7UUFDakIsNENBQTRDO1FBQzVDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxJQUFJO1FBQ1gsa0VBQWtFO1FBQ2xFLE9BQU87SUFDVCxDQUFDO0lBRVEsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFqQ0M7SUFIQyxJQUFBLDZDQUFxQixFQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFpRCxFQUFFLEVBQUUsQ0FDbkcsSUFBQSxnQkFBTyxFQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUM1Qzt1RkFtQkE7QUFqQ0gsNERBZ0RDIn0=
|