@jupiterone/integration-sdk-cli 8.23.0 → 8.24.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/src/commands/generate-integration-graph-schema.js +36 -1
- package/dist/src/commands/generate-integration-graph-schema.js.map +1 -1
- package/dist/src/commands/options.d.ts +25 -0
- package/dist/src/commands/options.js +61 -0
- package/dist/src/commands/options.js.map +1 -0
- package/dist/src/commands/run.js +21 -21
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/sync.js +8 -16
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/__tests__/__snapshots__/cli.test.ts.snap +3 -1
- package/src/__tests__/cli-run.test.ts +69 -4
- package/src/__tests__/cli-sync.test.ts +30 -0
- package/src/__tests__/cli.test.ts +7 -1
- package/src/__tests__/util/synchronization.ts +17 -3
- package/src/commands/generate-integration-graph-schema.ts +44 -2
- package/src/commands/options.ts +73 -0
- package/src/commands/run.ts +34 -24
- package/src/commands/sync.ts +19 -18
|
@@ -36,7 +36,7 @@ function generateIntegrationGraphSchemaCommand() {
|
|
|
36
36
|
.action(async (options) => {
|
|
37
37
|
const { projectPath, outputFile } = options;
|
|
38
38
|
log.info(`Generating integration graph schema (projectPath=${projectPath}, outputFile=${outputFile})`);
|
|
39
|
-
const config = await (
|
|
39
|
+
const config = await loadConfigFromTarget(projectPath);
|
|
40
40
|
const integrationGraphSchema = generateIntegrationGraphSchema(config.integrationSteps);
|
|
41
41
|
if (outputFile) {
|
|
42
42
|
await fs_1.promises.writeFile(outputFile, JSON.stringify(integrationGraphSchema), {
|
|
@@ -50,6 +50,41 @@ function generateIntegrationGraphSchemaCommand() {
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
exports.generateIntegrationGraphSchemaCommand = generateIntegrationGraphSchemaCommand;
|
|
53
|
+
function loadConfigFromSrc(projectPath) {
|
|
54
|
+
return (0, config_1.loadConfig)(path_1.default.join(projectPath, 'src'));
|
|
55
|
+
}
|
|
56
|
+
function loadConfigFromDist(projectPath) {
|
|
57
|
+
return (0, config_1.loadConfig)(path_1.default.join(projectPath, 'dist'));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The way that integration npm packages are distributed has changed over time.
|
|
61
|
+
* This function handles different cases where the invocation config has
|
|
62
|
+
* traditionally lived to support backwards compatibility and make adoption
|
|
63
|
+
* easier.
|
|
64
|
+
*/
|
|
65
|
+
async function loadConfigFromTarget(projectPath) {
|
|
66
|
+
let configFromSrcErr;
|
|
67
|
+
let configFromDistErr;
|
|
68
|
+
try {
|
|
69
|
+
const configFromSrc = await loadConfigFromSrc(projectPath);
|
|
70
|
+
return configFromSrc;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
configFromSrcErr = err;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const configFromDist = await loadConfigFromDist(projectPath);
|
|
77
|
+
return configFromDist;
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
configFromDistErr = err;
|
|
81
|
+
}
|
|
82
|
+
const combinedError = configFromDistErr
|
|
83
|
+
? configFromSrcErr + ', ' + configFromDistErr
|
|
84
|
+
: configFromSrcErr;
|
|
85
|
+
throw new config_1.IntegrationInvocationConfigLoadError('Error loading integration invocation configuration. Ensure "invocationConfig" is exported from src/index or dist/index. Additional details: ' +
|
|
86
|
+
combinedError);
|
|
87
|
+
}
|
|
53
88
|
function generateIntegrationGraphSchema(integrationSteps) {
|
|
54
89
|
const integrationGraphSchema = {
|
|
55
90
|
entities: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-integration-graph-schema.js","sourceRoot":"","sources":["../../../src/commands/generate-integration-graph-schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQA,yCAA0C;AAC1C,gDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"generate-integration-graph-schema.js","sourceRoot":"","sources":["../../../src/commands/generate-integration-graph-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines the JupiterOne `apiBaseUrl` based on these mutually-exclusive `options`:
|
|
3
|
+
* - --api-base-url - a specific URL to use
|
|
4
|
+
* - --development - use the development API
|
|
5
|
+
*
|
|
6
|
+
* @throws Error if both --api-base-url and --development are specified
|
|
7
|
+
*/
|
|
8
|
+
export declare function getApiBaseUrlOption(options: any): string;
|
|
9
|
+
interface SynchronizationJobSourceOptions {
|
|
10
|
+
source: 'integration-managed' | 'integration-external' | 'api';
|
|
11
|
+
scope?: string;
|
|
12
|
+
integrationInstanceId?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Determines the `source` configuration for the synchronization job based on these `options`:
|
|
16
|
+
* - --source - a specific source to use
|
|
17
|
+
* - --scope - a specific scope to use, required when --source is "api"
|
|
18
|
+
* - --integrationInstanceId - a specific integrationInstanceId to use, required when --source is not "api"
|
|
19
|
+
*
|
|
20
|
+
* @throws Error if --source is "api" and --scope is not specified
|
|
21
|
+
* @throws Error if --source is "api" and --integrationInstanceId is specified
|
|
22
|
+
* @throws Error if one of --integrationInstanceId or --source is not specified
|
|
23
|
+
*/
|
|
24
|
+
export declare function getSynchronizationJobSourceOptions(options: any): SynchronizationJobSourceOptions;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSynchronizationJobSourceOptions = exports.getApiBaseUrlOption = void 0;
|
|
4
|
+
const integration_sdk_runtime_1 = require("@jupiterone/integration-sdk-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* Determines the JupiterOne `apiBaseUrl` based on these mutually-exclusive `options`:
|
|
7
|
+
* - --api-base-url - a specific URL to use
|
|
8
|
+
* - --development - use the development API
|
|
9
|
+
*
|
|
10
|
+
* @throws Error if both --api-base-url and --development are specified
|
|
11
|
+
*/
|
|
12
|
+
function getApiBaseUrlOption(options) {
|
|
13
|
+
let apiBaseUrl;
|
|
14
|
+
if (options.apiBaseUrl) {
|
|
15
|
+
if (options.development) {
|
|
16
|
+
throw new Error('Invalid configuration supplied. Cannot specify both --api-base-url and --development(-d) flags.');
|
|
17
|
+
}
|
|
18
|
+
apiBaseUrl = options.apiBaseUrl;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
apiBaseUrl = (0, integration_sdk_runtime_1.getApiBaseUrl)({
|
|
22
|
+
dev: options.development,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return apiBaseUrl;
|
|
26
|
+
}
|
|
27
|
+
exports.getApiBaseUrlOption = getApiBaseUrlOption;
|
|
28
|
+
/**
|
|
29
|
+
* Determines the `source` configuration for the synchronization job based on these `options`:
|
|
30
|
+
* - --source - a specific source to use
|
|
31
|
+
* - --scope - a specific scope to use, required when --source is "api"
|
|
32
|
+
* - --integrationInstanceId - a specific integrationInstanceId to use, required when --source is not "api"
|
|
33
|
+
*
|
|
34
|
+
* @throws Error if --source is "api" and --scope is not specified
|
|
35
|
+
* @throws Error if --source is "api" and --integrationInstanceId is specified
|
|
36
|
+
* @throws Error if one of --integrationInstanceId or --source is not specified
|
|
37
|
+
*/
|
|
38
|
+
function getSynchronizationJobSourceOptions(options) {
|
|
39
|
+
const synchronizeOptions = {
|
|
40
|
+
source: options.source,
|
|
41
|
+
};
|
|
42
|
+
if (options.source === 'api') {
|
|
43
|
+
if (options.integrationInstanceId)
|
|
44
|
+
throw new Error('Invalid configuration supplied. Cannot specify both --source api and --integrationInstanceId flags.');
|
|
45
|
+
if (!options.scope)
|
|
46
|
+
throw new Error('Invalid configuration supplied. --source api requires --scope flag.');
|
|
47
|
+
synchronizeOptions.scope = options.scope;
|
|
48
|
+
}
|
|
49
|
+
else if (!['integration-managed', 'integration-external'].includes(options.source)) {
|
|
50
|
+
throw new Error(`Invalid configuration supplied. --source must be one of: integration-managed, integration-external, api. Received: ${options.source}.`);
|
|
51
|
+
}
|
|
52
|
+
else if (options.integrationInstanceId) {
|
|
53
|
+
synchronizeOptions.integrationInstanceId = options.integrationInstanceId;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
throw new Error('Invalid configuration supplied. --integrationInstanceId or --source api and --scope required.');
|
|
57
|
+
}
|
|
58
|
+
return synchronizeOptions;
|
|
59
|
+
}
|
|
60
|
+
exports.getSynchronizationJobSourceOptions = getSynchronizationJobSourceOptions;
|
|
61
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/options.ts"],"names":[],"mappings":";;;AAAA,iFAAoE;AAEpE;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,OAAY;IAC9C,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,CAAC,UAAU,EAAE;QACtB,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;SACH;QACD,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;KACjC;SAAM;QACL,UAAU,GAAG,IAAA,uCAAa,EAAC;YACzB,GAAG,EAAE,OAAO,CAAC,WAAW;SACzB,CAAC,CAAC;KACJ;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAfD,kDAeC;AAQD;;;;;;;;;GASG;AACH,SAAgB,kCAAkC,CAChD,OAAY;IAEZ,MAAM,kBAAkB,GAAoC;QAC1D,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;QAC5B,IAAI,OAAO,CAAC,qBAAqB;YAC/B,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK;YAChB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,kBAAkB,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KAC1C;SAAM,IACL,CAAC,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EACzE;QACA,MAAM,IAAI,KAAK,CACb,sHAAsH,OAAO,CAAC,MAAM,GAAG,CACxI,CAAC;KACH;SAAM,IAAI,OAAO,CAAC,qBAAqB,EAAE;QACxC,kBAAkB,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;KAC1E;SAAM;QACL,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;KACH;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AA9BD,gFA8BC"}
|
package/dist/src/commands/run.js
CHANGED
|
@@ -29,14 +29,18 @@ const integration_sdk_runtime_1 = require("@jupiterone/integration-sdk-runtime")
|
|
|
29
29
|
const uploader_1 = require("@jupiterone/integration-sdk-runtime/dist/src/execution/uploader");
|
|
30
30
|
const config_1 = require("../config");
|
|
31
31
|
const log = __importStar(require("../log"));
|
|
32
|
+
const options_1 = require("./options");
|
|
32
33
|
const DEFAULT_UPLOAD_CONCURRENCY = 5;
|
|
33
34
|
function run() {
|
|
34
35
|
return (0, commander_1.createCommand)('run')
|
|
35
36
|
.description('collect and sync to upload entities and relationships')
|
|
36
|
-
.
|
|
37
|
+
.option('-i, --integrationInstanceId <id>', '_integrationInstanceId assigned to uploaded entities and relationships')
|
|
37
38
|
.option('-p, --project-path <directory>', 'path to integration project directory', process.cwd())
|
|
38
39
|
.option('-d, --development', '"true" to target apps.dev.jupiterone.io', !!process.env.JUPITERONE_DEV)
|
|
39
|
-
.option('--api-base-url <url>', 'API base URL used during run operation
|
|
40
|
+
.option('--api-base-url <url>', 'API base URL used during run operation')
|
|
41
|
+
.option('--skip-finalize', 'skip synchronization finalization')
|
|
42
|
+
.option('--source <integration-managed|integration-external|api>', 'configure the synchronization job source value', 'integration-managed')
|
|
43
|
+
.option('--scope <anystring>', 'configure the synchronization job scope value')
|
|
40
44
|
.option('-V, --disable-schema-validation', 'disable schema validation')
|
|
41
45
|
.option('-u, --upload-batch-size <number>', 'specify number of items per batch for upload (default 250)')
|
|
42
46
|
.option('-ur, --upload-relationship-batch-size <number>', 'specify number of relationships per batch for upload (default 250)')
|
|
@@ -49,18 +53,7 @@ function run() {
|
|
|
49
53
|
const accessToken = (0, integration_sdk_runtime_1.getApiKeyFromEnvironment)();
|
|
50
54
|
log.debug('Loading account from JUPITERONE_ACCOUNT environment variable');
|
|
51
55
|
const account = (0, integration_sdk_runtime_1.getAccountFromEnvironment)();
|
|
52
|
-
|
|
53
|
-
if (options.apiBaseUrl) {
|
|
54
|
-
if (options.development) {
|
|
55
|
-
throw new Error('Invalid configuration supplied. Cannot specify both --api-base-url and --development(-d) flags.');
|
|
56
|
-
}
|
|
57
|
-
apiBaseUrl = options.apiBaseUrl;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
apiBaseUrl = (0, integration_sdk_runtime_1.getApiBaseUrl)({
|
|
61
|
-
dev: options.development,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
56
|
+
const apiBaseUrl = (0, options_1.getApiBaseUrlOption)(options);
|
|
64
57
|
log.debug(`Configuring client to access "${apiBaseUrl}"`);
|
|
65
58
|
const startTime = Date.now();
|
|
66
59
|
const apiClient = (0, integration_sdk_runtime_1.createApiClient)({
|
|
@@ -68,7 +61,7 @@ function run() {
|
|
|
68
61
|
accessToken,
|
|
69
62
|
account,
|
|
70
63
|
});
|
|
71
|
-
const
|
|
64
|
+
const synchronizationJobSourceOptions = (0, options_1.getSynchronizationJobSourceOptions)(options);
|
|
72
65
|
let logger = (0, integration_sdk_runtime_1.createIntegrationLogger)({
|
|
73
66
|
name: 'local',
|
|
74
67
|
pretty: true,
|
|
@@ -76,7 +69,7 @@ function run() {
|
|
|
76
69
|
const synchronizationContext = await (0, integration_sdk_runtime_1.initiateSynchronization)({
|
|
77
70
|
logger,
|
|
78
71
|
apiClient,
|
|
79
|
-
|
|
72
|
+
...synchronizationJobSourceOptions,
|
|
80
73
|
});
|
|
81
74
|
logger = synchronizationContext.logger;
|
|
82
75
|
const eventPublishingQueue = (0, integration_sdk_runtime_1.createEventPublishingQueue)(synchronizationContext);
|
|
@@ -110,11 +103,18 @@ function run() {
|
|
|
110
103
|
});
|
|
111
104
|
await eventPublishingQueue.onIdle();
|
|
112
105
|
log.displayExecutionResults(executionResults);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
106
|
+
if (!options.skipFinalize) {
|
|
107
|
+
const synchronizationResult = await (0, integration_sdk_runtime_1.finalizeSynchronization)({
|
|
108
|
+
...synchronizationContext,
|
|
109
|
+
partialDatasets: executionResults.metadata.partialDatasets,
|
|
110
|
+
});
|
|
111
|
+
log.displaySynchronizationResults(synchronizationResult);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
log.info('Skipping synchronization finalization. Job will remain in "AWAITING_UPLOADS" state.');
|
|
115
|
+
const jobStatus = await (0, integration_sdk_runtime_1.synchronizationStatus)(synchronizationContext);
|
|
116
|
+
log.displaySynchronizationResults(jobStatus);
|
|
117
|
+
}
|
|
118
118
|
}
|
|
119
119
|
catch (err) {
|
|
120
120
|
await eventPublishingQueue.onIdle();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAC1C,gDAAwB;AAGxB,iFAa6C;AAC7C,8FAAgI;AAEhI,sCAAuC;AACvC,4CAA8B;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,13 +27,16 @@ const commander_1 = require("commander");
|
|
|
27
27
|
const path_1 = __importDefault(require("path"));
|
|
28
28
|
const integration_sdk_runtime_1 = require("@jupiterone/integration-sdk-runtime");
|
|
29
29
|
const log = __importStar(require("../log"));
|
|
30
|
+
const options_1 = require("./options");
|
|
30
31
|
function sync() {
|
|
31
32
|
return (0, commander_1.createCommand)('sync')
|
|
32
33
|
.description('sync collected data with JupiterOne, requires JUPITERONE_API_KEY, JUPITERONE_ACCOUNT')
|
|
33
|
-
.
|
|
34
|
+
.option('-i, --integrationInstanceId <id>', '_integrationInstanceId assigned to uploaded entities and relationships')
|
|
34
35
|
.option('-p, --project-path <directory>', 'path to integration project directory', process.cwd())
|
|
35
36
|
.option('-d, --development', '"true" to target apps.dev.jupiterone.io', !!process.env.JUPITERONE_DEV)
|
|
36
37
|
.option('--api-base-url <url>', 'API base URL used during sync operation.')
|
|
38
|
+
.option('--source <integration-managed|integration-external|api>', 'configure the synchronization job source value', 'integration-managed')
|
|
39
|
+
.option('--scope <anystring>', 'configure the synchronization job scope value')
|
|
37
40
|
.option('-u, --upload-batch-size <number>', 'specify number of items per batch for upload (default 250)')
|
|
38
41
|
.option('-ur, --upload-relationship-batch-size <number>', 'specify number of relationships per batch for upload (default 250)')
|
|
39
42
|
.action(async (options) => {
|
|
@@ -44,35 +47,24 @@ function sync() {
|
|
|
44
47
|
const accessToken = (0, integration_sdk_runtime_1.getApiKeyFromEnvironment)();
|
|
45
48
|
log.debug('Loading account from JUPITERONE_ACCOUNT environment variable');
|
|
46
49
|
const account = (0, integration_sdk_runtime_1.getAccountFromEnvironment)();
|
|
47
|
-
|
|
48
|
-
if (options.apiBaseUrl) {
|
|
49
|
-
if (options.development) {
|
|
50
|
-
throw new Error('Invalid configuration supplied. Cannot specify both --api-base-url and --development(-d) flags.');
|
|
51
|
-
}
|
|
52
|
-
apiBaseUrl = options.apiBaseUrl;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
apiBaseUrl = (0, integration_sdk_runtime_1.getApiBaseUrl)({
|
|
56
|
-
dev: options.development,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
50
|
+
const apiBaseUrl = (0, options_1.getApiBaseUrlOption)(options);
|
|
59
51
|
log.debug(`Configuring client to access "${apiBaseUrl}"`);
|
|
60
52
|
const apiClient = (0, integration_sdk_runtime_1.createApiClient)({
|
|
61
53
|
apiBaseUrl,
|
|
62
54
|
account,
|
|
63
55
|
accessToken,
|
|
64
56
|
});
|
|
65
|
-
const
|
|
57
|
+
const synchronizationJobSourceOptions = (0, options_1.getSynchronizationJobSourceOptions)(options);
|
|
66
58
|
const logger = (0, integration_sdk_runtime_1.createIntegrationLogger)({
|
|
67
59
|
name: 'local',
|
|
68
60
|
pretty: true,
|
|
69
61
|
});
|
|
70
62
|
const job = await (0, integration_sdk_runtime_1.synchronizeCollectedData)({
|
|
71
|
-
logger: logger.child(
|
|
63
|
+
logger: logger.child(synchronizationJobSourceOptions),
|
|
72
64
|
apiClient,
|
|
73
|
-
integrationInstanceId,
|
|
74
65
|
uploadBatchSize: options.uploadBatchSize,
|
|
75
66
|
uploadRelationshipBatchSize: options.uploadRelationshipBatchSize,
|
|
67
|
+
...synchronizationJobSourceOptions,
|
|
76
68
|
});
|
|
77
69
|
log.displaySynchronizationResults(job);
|
|
78
70
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAC1C,gDAAwB;AAExB,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAC1C,gDAAwB;AAExB,iFAM6C;AAE7C,4CAA8B;AAC9B,uCAGmB;AAEnB,SAAgB,IAAI;IAClB,OAAO,IAAA,yBAAa,EAAC,MAAM,CAAC;SACzB,WAAW,CACV,sFAAsF,CACvF;SACA,MAAM,CACL,kCAAkC,EAClC,wEAAwE,CACzE;SACA,MAAM,CACL,gCAAgC,EAChC,uCAAuC,EACvC,OAAO,CAAC,GAAG,EAAE,CACd;SACA,MAAM,CACL,mBAAmB,EACnB,yCAAyC,EACzC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAC7B;SACA,MAAM,CAAC,sBAAsB,EAAE,0CAA0C,CAAC;SAC1E,MAAM,CACL,yDAAyD,EACzD,gDAAgD,EAChD,qBAAqB,CACtB;SACA,MAAM,CACL,qBAAqB,EACrB,+CAA+C,CAChD;SACA,MAAM,CACL,kCAAkC,EAClC,4DAA4D,CAC7D;SACA,MAAM,CACL,gDAAgD,EAChD,oEAAoE,CACrE;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,mEAAmE;QACnE,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,cAAI,CAAC,OAAO,CACjE,OAAO,CAAC,WAAW,EACnB,iBAAiB,CAClB,CAAC;QAEF,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAA,kDAAwB,GAAE,CAAC;QAE/C,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,IAAA,mDAAyB,GAAE,CAAC;QAE5C,MAAM,UAAU,GAAG,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAA,yCAAe,EAAC;YAChC,UAAU;YACV,OAAO;YACP,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,+BAA+B,GACnC,IAAA,4CAAkC,EAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAA,iDAAuB,EAAC;YACrC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,kDAAwB,EAAC;YACzC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC;YACrD,SAAS;YACT,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;YAChE,GAAG,+BAA+B;SACnC,CAAC,CAAC;QAEH,GAAG,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC;AA7ED,oBA6EC"}
|