@forestadmin/forestadmin-client 1.0.0-alpha.4 → 1.0.0-alpha.5
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/charts/chart-handler.d.ts +9 -1
- package/dist/charts/chart-handler.js +19 -1
- package/dist/permissions/rendering-permission.js +2 -2
- package/dist/permissions/verify-sql-query.js +6 -4
- package/dist/types.d.ts +9 -1
- package/dist/utils/context-variables-injector.d.ts +1 -0
- package/dist/utils/context-variables-injector.js +10 -4
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ChartHandlerInterface } from '../types';
|
|
2
2
|
import type { RequestContextVariables } from '../utils/context-variables';
|
|
3
3
|
import type ContextVariablesInstantiator from '../utils/context-variables-instantiator';
|
|
4
|
-
import { Chart } from './types';
|
|
4
|
+
import type { Chart, QueryChart } from './types';
|
|
5
5
|
export declare type ChartRequest<C extends Chart = Chart> = C & {
|
|
6
6
|
contextVariables?: RequestContextVariables;
|
|
7
7
|
};
|
|
@@ -13,5 +13,13 @@ export default class ChartHandlerService implements ChartHandlerInterface {
|
|
|
13
13
|
renderingId: string | number;
|
|
14
14
|
chartRequest: ChartRequest;
|
|
15
15
|
}): Promise<Chart>;
|
|
16
|
+
getQueryForChart({ userId, renderingId, chartRequest, }: {
|
|
17
|
+
userId: string | number;
|
|
18
|
+
renderingId: string | number;
|
|
19
|
+
chartRequest: ChartRequest<QueryChart>;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
query: string;
|
|
22
|
+
contextVariables: Record<string, unknown>;
|
|
23
|
+
}>;
|
|
16
24
|
}
|
|
17
25
|
//# sourceMappingURL=chart-handler.d.ts.map
|
|
@@ -34,6 +34,24 @@ class ChartHandlerService {
|
|
|
34
34
|
}
|
|
35
35
|
return chart;
|
|
36
36
|
}
|
|
37
|
+
async getQueryForChart({ userId, renderingId, chartRequest, }) {
|
|
38
|
+
const contextVariables = await this.contextVariablesInstantiator.buildContextVariables({
|
|
39
|
+
userId,
|
|
40
|
+
renderingId,
|
|
41
|
+
requestContextVariables: chartRequest.contextVariables,
|
|
42
|
+
});
|
|
43
|
+
const contextVariablesUsed = {};
|
|
44
|
+
const replaceContextVariable = (contextVariableName) => {
|
|
45
|
+
const contextVariableRenamed = contextVariableName.replace(/\./g, '_');
|
|
46
|
+
contextVariablesUsed[contextVariableRenamed] = contextVariables.getValue(contextVariableName);
|
|
47
|
+
return `$${contextVariableRenamed}`;
|
|
48
|
+
};
|
|
49
|
+
const query = context_variables_injector_1.default.injectContextInValueCustom(chartRequest.query, replaceContextVariable);
|
|
50
|
+
return {
|
|
51
|
+
query,
|
|
52
|
+
contextVariables: contextVariablesUsed,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
37
55
|
}
|
|
38
56
|
exports.default = ChartHandlerService;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFydHMvY2hhcnQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLDZFQUFvRDtBQUNwRCxxR0FBMkU7QUFNM0UsTUFBcUIsbUJBQW1CO0lBQ3RDLFlBQTZCLDRCQUEwRDtRQUExRCxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO0lBQUcsQ0FBQztJQUVwRixLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFDdkMsTUFBTSxFQUNOLFdBQVcsRUFDWCxZQUFZLEdBS2I7UUFDQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDO1lBQ3JGLE1BQU07WUFDTixXQUFXO1lBQ1gsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQjtTQUN2RCxDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFOUIsSUFBSSx3QkFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsb0NBQXdCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsSUFBSSx3QkFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsb0NBQXdCLENBQUMsb0JBQW9CLENBQzlELEtBQUssQ0FBQyxVQUFVLEVBQ2hCLGdCQUFnQixDQUNqQixDQUFDO1NBQ0g7UUFFRCxJQUFJLHdCQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLEtBQUssQ0FBQyxTQUFTLEdBQUcsb0NBQXdCLENBQUMsb0JBQW9CLENBQzdELEtBQUssQ0FBQyxTQUFTLEVBQ2YsZ0JBQWdCLENBQ2pCLENBQUM7U0FDSDtRQUVELElBQUksd0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FDdEIsb0NBQXdCLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUNqRixDQUFDO1NBQ0g7UUFFRCxJQUFJLHdCQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQ2xCLG9DQUF3QixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FDN0UsQ0FBQztTQUNIO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQzVCLE1BQU0sRUFDTixXQUFXLEVBQ1gsWUFBWSxHQUtiO1FBQ0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxxQkFBcUIsQ0FBQztZQUNyRixNQUFNO1lBQ04sV0FBVztZQUNYLHVCQUF1QixFQUFFLFlBQVksQ0FBQyxnQkFBZ0I7U0FDdkQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FBNEIsRUFBRSxDQUFDO1FBRXpELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxtQkFBMkIsRUFBRSxFQUFFO1lBQzdELE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2RSxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRTlGLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLG9DQUF3QixDQUFDLDBCQUEwQixDQUMvRCxZQUFZLENBQUMsS0FBSyxFQUNsQixzQkFBc0IsQ0FDdkIsQ0FBQztRQUVGLE9BQU87WUFDTCxLQUFLO1lBQ0wsZ0JBQWdCLEVBQUUsb0JBQW9CO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2RkQsc0NBdUZDIn0=
|
|
@@ -18,7 +18,7 @@ class RenderingPermissionService {
|
|
|
18
18
|
this.permissionsByRendering = new lru_cache_1.default({
|
|
19
19
|
max: 256,
|
|
20
20
|
ttl: this.options.permissionsCacheDurationInSeconds * 1000,
|
|
21
|
-
fetchMethod: renderingId => this.loadPermissions(renderingId),
|
|
21
|
+
fetchMethod: renderingId => this.loadPermissions(Number(renderingId)),
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
async getScope({ renderingId, collectionName, userId, }) {
|
|
@@ -126,4 +126,4 @@ class RenderingPermissionService {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
exports.default = RenderingPermissionService;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLXBlcm1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvcmVuZGVyaW5nLXBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSwwREFBaUM7QUFJakMsbUZBQTBEO0FBQzFELHFHQUEyRTtBQUMzRSx3RUFBOEM7QUFDOUMsNkNBQWtFO0FBQ2xFLGdHQUFrRTtBQUNsRSxtQ0FBbUc7QUFFbkcsMEVBQWdEO0FBUWhELE1BQXFCLDBCQUEwQjtJQUc3QyxZQUNtQixPQUE2QyxFQUM3QyxlQUFzQztRQUR0QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztRQUM3QyxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFFdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksbUJBQVEsQ0FBQztZQUN6QyxHQUFHLEVBQUUsR0FBRztZQUNSLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxHQUFHLElBQUk7WUFDMUQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDcEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEdBS1A7UUFDQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUM1QixXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sRUFDTixVQUFVLEdBTVg7UUFDQyxNQUFNLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUE0QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDekYsSUFBSSxDQUFD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
|
|
@@ -8,16 +8,18 @@ const empty_sql_query_error_1 = __importDefault(require("./errors/empty-sql-quer
|
|
|
8
8
|
const non_select_sql_query_error_1 = __importDefault(require("./errors/non-select-sql-query-error"));
|
|
9
9
|
const QUERY_SELECT = /^SELECT\s[^]*FROM\s[^]*$/i;
|
|
10
10
|
function verifySQLQuery(inputQuery) {
|
|
11
|
-
|
|
11
|
+
const inputQueryTrimmed = inputQuery?.trim();
|
|
12
|
+
if (!inputQueryTrimmed) {
|
|
12
13
|
throw new empty_sql_query_error_1.default();
|
|
13
14
|
}
|
|
14
|
-
if (
|
|
15
|
+
if (inputQueryTrimmed.includes(';') &&
|
|
16
|
+
inputQueryTrimmed.indexOf(';') < inputQueryTrimmed.length - 1) {
|
|
15
17
|
throw new chained_sql_query_error_1.default();
|
|
16
18
|
}
|
|
17
|
-
if (!QUERY_SELECT.test(
|
|
19
|
+
if (!QUERY_SELECT.test(inputQueryTrimmed)) {
|
|
18
20
|
throw new non_select_sql_query_error_1.default();
|
|
19
21
|
}
|
|
20
22
|
return true;
|
|
21
23
|
}
|
|
22
24
|
exports.default = verifySQLQuery;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXNxbC1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJtaXNzaW9ucy92ZXJpZnktc3FsLXF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0ZBQW9FO0FBQ3BFLDJGQUFnRTtBQUNoRSxxR0FBeUU7QUFFekUsTUFBTSxZQUFZLEdBQUcsMkJBQTJCLENBQUM7QUFFakQsU0FBd0IsY0FBYyxDQUFDLFVBQXlCO0lBQzlELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtRQUN0QixNQUFNLElBQUksK0JBQWtCLEVBQUUsQ0FBQztLQUNoQztJQUVELElBQ0UsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUMvQixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDN0Q7UUFDQSxNQUFNLElBQUksaUNBQW9CLEVBQUUsQ0FBQztLQUNsQztJQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDekMsTUFBTSxJQUFJLG9DQUFzQixFQUFFLENBQUM7S0FDcEM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFuQkQsaUNBbUJDIn0=
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChartRequest } from './charts/chart-handler';
|
|
2
|
-
import type { Chart } from './charts/types';
|
|
2
|
+
import type { Chart, QueryChart } from './charts/types';
|
|
3
3
|
import type { CollectionActionEvent } from './permissions/types';
|
|
4
4
|
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
5
5
|
import ContextVariables, { RequestContextVariables } from './utils/context-variables';
|
|
@@ -64,6 +64,14 @@ export interface ChartHandlerInterface {
|
|
|
64
64
|
renderingId: string | number;
|
|
65
65
|
chartRequest: ChartRequest;
|
|
66
66
|
}): Promise<Chart>;
|
|
67
|
+
getQueryForChart(params: {
|
|
68
|
+
userId: string | number;
|
|
69
|
+
renderingId: string | number;
|
|
70
|
+
chartRequest: ChartRequest<QueryChart>;
|
|
71
|
+
}): Promise<{
|
|
72
|
+
query: string;
|
|
73
|
+
contextVariables: Record<string, unknown>;
|
|
74
|
+
}>;
|
|
67
75
|
}
|
|
68
76
|
export interface ContextVariablesInstantiatorInterface {
|
|
69
77
|
buildContextVariables(params: {
|
|
@@ -2,6 +2,7 @@ import type { PlainConditionTreeBranch, PlainConditionTreeLeaf } from '@forestad
|
|
|
2
2
|
import ContextVariables from './context-variables';
|
|
3
3
|
export default class ContextVariablesInjector {
|
|
4
4
|
private static isPlainConditionTreeBranch;
|
|
5
|
+
static injectContextInValueCustom<ValueType>(value: ValueType, replaceFunction: (contextVariableName: string) => string): ValueType;
|
|
5
6
|
static injectContextInValue<ValueType>(value: ValueType, contextVariables: ContextVariables): ValueType;
|
|
6
7
|
static injectContextInFilter<PlainConditionTree extends PlainConditionTreeBranch | PlainConditionTreeLeaf | null>(filter: PlainConditionTree, contextVariables: ContextVariables): PlainConditionTree;
|
|
7
8
|
}
|
|
@@ -4,21 +4,27 @@ class ContextVariablesInjector {
|
|
|
4
4
|
static isPlainConditionTreeBranch(filter) {
|
|
5
5
|
return 'aggregator' in filter;
|
|
6
6
|
}
|
|
7
|
-
static
|
|
7
|
+
static injectContextInValueCustom(value, replaceFunction) {
|
|
8
8
|
if (typeof value !== 'string') {
|
|
9
9
|
return value;
|
|
10
10
|
}
|
|
11
11
|
let valueWithContextVariablesInjected = value;
|
|
12
12
|
const regex = /{{([^}]+)}}/g;
|
|
13
13
|
let match = regex.exec(value);
|
|
14
|
+
const encounteredVariables = [];
|
|
14
15
|
while (match) {
|
|
15
16
|
const contextVariableKey = match[1];
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
if (!encounteredVariables.includes(contextVariableKey)) {
|
|
18
|
+
valueWithContextVariablesInjected = valueWithContextVariablesInjected.replace(new RegExp(`{{${contextVariableKey}}}`, 'g'), replaceFunction(contextVariableKey));
|
|
19
|
+
}
|
|
20
|
+
encounteredVariables.push(contextVariableKey);
|
|
18
21
|
match = regex.exec(value);
|
|
19
22
|
}
|
|
20
23
|
return valueWithContextVariablesInjected;
|
|
21
24
|
}
|
|
25
|
+
static injectContextInValue(value, contextVariables) {
|
|
26
|
+
return this.injectContextInValueCustom(value, contextVariableKey => String(contextVariables.getValue(contextVariableKey)));
|
|
27
|
+
}
|
|
22
28
|
static injectContextInFilter(filter, contextVariables) {
|
|
23
29
|
if (!filter) {
|
|
24
30
|
return null;
|
|
@@ -38,4 +44,4 @@ class ContextVariablesInjector {
|
|
|
38
44
|
}
|
|
39
45
|
}
|
|
40
46
|
exports.default = ContextVariablesInjector;
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12YXJpYWJsZXMtaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29udGV4dC12YXJpYWJsZXMtaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxNQUFxQix3QkFBd0I7SUFDbkMsTUFBTSxDQUFDLDBCQUEwQixDQUN2QyxNQUF5RDtRQUV6RCxPQUFPLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQywwQkFBMEIsQ0FDdEMsS0FBZ0IsRUFDaEIsZUFBd0Q7UUFFeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksaUNBQWlDLEdBQVcsS0FBSyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQztRQUM3QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBRWhDLE9BQU8sS0FBSyxFQUFFO1lBQ1osTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO2dCQUN0RCxpQ0FBaUMsR0FBRyxpQ0FBaUMsQ0FBQyxPQUFPLENBQzNFLElBQUksTUFBTSxDQUFDLEtBQUssa0JBQWtCLElBQUksRUFBRSxHQUFHLENBQUMsRUFDNUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQ3BDLENBQUM7YUFDSDtZQUVELG9CQUFvQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO1FBRUQsT0FBTyxpQ0FBeUQsQ0FBQztJQUNuRSxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUNoQyxLQUFnQixFQUNoQixnQkFBa0M7UUFFbEMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FDakUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQ3RELENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLHFCQUFxQixDQUVqQyxNQUEwQixFQUFFLGdCQUFrQztRQUM5RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksd0JBQXdCLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0QsT0FBTztnQkFDTCxHQUFHLE1BQU07Z0JBQ1QsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUM1QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztTQUNqRSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkVELDJDQW1FQyJ9
|