@workflow/world-local 4.1.4 → 4.1.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/config.js +1 -1
- package/dist/fs.d.ts +7 -3
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +25 -10
- package/dist/index.js +1 -1
- package/dist/init.js +1 -1
- package/dist/instrumentObject.js +1 -1
- package/dist/queue.js +1 -1
- package/dist/storage/events-storage.d.ts.map +1 -1
- package/dist/storage/events-storage.js +29 -11
- package/dist/storage/filters.js +1 -1
- package/dist/storage/helpers.js +1 -1
- package/dist/storage/hooks-storage.js +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/legacy.js +1 -1
- package/dist/storage/runs-storage.js +1 -1
- package/dist/storage/steps-storage.js +1 -1
- package/dist/storage.js +1 -1
- package/dist/streamer.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/test-helpers.js +1 -1
- package/dist/util.js +1 -1
- package/package.json +6 -6
- package/dist/config.js.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/instrumentObject.js.map +0 -1
- package/dist/queue.js.map +0 -1
- package/dist/storage/events-storage.js.map +0 -1
- package/dist/storage/filters.js.map +0 -1
- package/dist/storage/helpers.js.map +0 -1
- package/dist/storage/hooks-storage.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/legacy.js.map +0 -1
- package/dist/storage/runs-storage.js.map +0 -1
- package/dist/storage/steps-storage.js.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/streamer.js.map +0 -1
- package/dist/telemetry.js.map +0 -1
- package/dist/test-helpers.js.map +0 -1
- package/dist/util.js.map +0 -1
|
@@ -2,12 +2,27 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { EntityConflictError, HookNotFoundError, RunExpiredError, RunNotSupportedError, TooEarlyError, WorkflowWorldError, } from '@workflow/errors';
|
|
4
4
|
import { EventSchema, HookSchema, isLegacySpecVersion, requiresNewerWorld, SPEC_VERSION_CURRENT, StepSchema, validateUlidTimestamp, WaitSchema, WorkflowRunSchema, } from '@workflow/world';
|
|
5
|
+
import { z } from 'zod';
|
|
5
6
|
import { DEFAULT_RESOLVE_DATA_OPTION } from '../config.js';
|
|
6
|
-
import { assertSafeEntityId, deleteJSON, jsonReplacer, listJSONFiles, paginatedFileSystemQuery, readJSONWithFallback, resolveWithinBase, taggedPath, writeExclusive, writeJSON, } from '../fs.js';
|
|
7
|
+
import { assertSafeEntityId, deleteJSON, jsonReplacer, listJSONFiles, paginatedFileSystemQuery, readJSON, readJSONWithFallback, resolveWithinBase, taggedPath, writeExclusive, writeJSON, } from '../fs.js';
|
|
7
8
|
import { stripEventDataRefs } from './filters.js';
|
|
8
9
|
import { getObjectCreatedAt, hashToken, monotonicUlid } from './helpers.js';
|
|
9
10
|
import { deleteAllHooksForRun } from './hooks-storage.js';
|
|
10
11
|
import { handleLegacyEvent } from './legacy.js';
|
|
12
|
+
const HookTokenClaimSchema = z.object({
|
|
13
|
+
runId: z.string(),
|
|
14
|
+
});
|
|
15
|
+
async function readHookTokenClaim(constraintPath) {
|
|
16
|
+
try {
|
|
17
|
+
return await readJSON(constraintPath, HookTokenClaimSchema);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error instanceof SyntaxError || error instanceof z.ZodError) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
11
26
|
/**
|
|
12
27
|
* Helper function to delete all waits associated with a workflow run.
|
|
13
28
|
* Called when a run reaches a terminal state.
|
|
@@ -93,11 +108,10 @@ export function createEventsStorage(basedir, tag) {
|
|
|
93
108
|
if (runInputData.deploymentId &&
|
|
94
109
|
runInputData.workflowName &&
|
|
95
110
|
runInputData.input !== undefined) {
|
|
96
|
-
// Atomically try to
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
// transitioned to 'running'.
|
|
111
|
+
// Atomically try to publish the run entity so only the first
|
|
112
|
+
// writer wins, preventing a TOCTOU race where a concurrent
|
|
113
|
+
// run_created from start() could overwrite a run that was
|
|
114
|
+
// already transitioned to 'running'.
|
|
101
115
|
const createdRun = {
|
|
102
116
|
runId: effectiveRunId,
|
|
103
117
|
deploymentId: runInputData.deploymentId,
|
|
@@ -276,10 +290,10 @@ export function createEventsStorage(basedir, tag) {
|
|
|
276
290
|
createdAt: now,
|
|
277
291
|
updatedAt: now,
|
|
278
292
|
};
|
|
279
|
-
//
|
|
280
|
-
//
|
|
281
|
-
// start path (run_started on non-existent run) that could result
|
|
282
|
-
//
|
|
293
|
+
// Atomically publish the run entity file without overwriting an
|
|
294
|
+
// existing winner. This prevents a TOCTOU race with the resilient
|
|
295
|
+
// start path (run_started on non-existent run) that could result in
|
|
296
|
+
// duplicate run_created events in the event log.
|
|
283
297
|
const runPath = taggedPath(basedir, 'runs', effectiveRunId, tag);
|
|
284
298
|
const created = await writeExclusive(runPath, JSON.stringify(run, jsonReplacer, 2));
|
|
285
299
|
if (!created) {
|
|
@@ -554,6 +568,7 @@ export function createEventsStorage(basedir, tag) {
|
|
|
554
568
|
runId: effectiveRunId,
|
|
555
569
|
}));
|
|
556
570
|
if (!tokenClaimed) {
|
|
571
|
+
const existingClaim = await readHookTokenClaim(constraintPath);
|
|
557
572
|
// Create hook_conflict event instead of hook_created
|
|
558
573
|
// This allows the workflow to continue and fail gracefully when the hook is awaited
|
|
559
574
|
const conflictEvent = {
|
|
@@ -561,6 +576,9 @@ export function createEventsStorage(basedir, tag) {
|
|
|
561
576
|
correlationId: data.correlationId,
|
|
562
577
|
eventData: {
|
|
563
578
|
token: hookData.token,
|
|
579
|
+
...(existingClaim
|
|
580
|
+
? { conflictingRunId: existingClaim.runId }
|
|
581
|
+
: {}),
|
|
564
582
|
},
|
|
565
583
|
runId: effectiveRunId,
|
|
566
584
|
eventId,
|
|
@@ -768,4 +786,4 @@ export function createEventsStorage(basedir, tag) {
|
|
|
768
786
|
},
|
|
769
787
|
};
|
|
770
788
|
}
|
|
771
|
-
//# sourceMappingURL=events-storage.js.map
|
|
789
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9ldmVudHMtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFXMUIsT0FBTyxFQUNMLFdBQVcsRUFDWCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixVQUFVLEVBQ1YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEdBQ1YsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxN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RSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssYUFBYTtnQkFDeEQsMkRBQTJEO2dCQUMzRCxtREFBbUQ7Z0JBQ25ELFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxLQUFLO2dCQUNoRCxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLO2dCQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNO2dCQUNqQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPO2FBQ2hDLENBQUMsQ0FBQztZQUVILHlEQUF5RDtZQUN6RCxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsT0FBTztvQkFDTCxHQUFHLE1BQU07b0JBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDOUIsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUN2QztpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQge1xuICBFbnRpdHlDb25mbGljdEVycm9yLFxuICBIb29rTm90Rm91bmRFcnJvcixcbiAgUnVuRXhwaXJlZEVycm9yLFxuICBSdW5Ob3RTdXBwb3J0ZWRFcnJvcixcbiAgVG9vRWFybHlFcnJvcixcbiAgV29ya2Zsb3dXb3JsZEVycm9yLFxufSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHtcbiAgRXZlbnQsXG4gIEV2ZW50UmVzdWx0LFxuICBIb29rLFxuICBTZXJpYWxpemVkRGF0YSxcbiAgU3RlcCxcbiAgU3RvcmFnZSxcbiAgV2FpdCxcbiAgV29ya2Zsb3dSdW4sXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQge1xuICBFdmVudFNjaGVtYSxcbiAgSG9va1NjaGVtYSxcbiAgaXNMZWdhY3lTcGVjVmVyc2lvbixcbiAgcmVxdWlyZXNOZXdlcldvcmxkLFxuICBTUEVDX1ZFUlNJT05fQ1VSUkVOVCxcbiAgU3RlcFNjaGVtYSxcbiAgdmFsaWRhdGVVbGlkVGltZXN0YW1wLFxuICBXYWl0U2NoZW1hLFxuICBXb3JrZmxvd1J1blNjaGVtYSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGFzc2VydFNhZmVFbnRpdHlJZCxcbiAgZGVsZXRlSlNPTixcbiAganNvblJlcGxhY2VyLFxuICBsaXN0SlNPTkZpbGVzLFxuICBwYWdpbmF0ZWRGaWxlU3lzdGVtUXVlcnksXG4gIHJlYWRKU09OLFxuICByZWFkSlNPTldpdGhGYWxsYmFjayxcbiAgcmVzb2x2ZVdpdGhpbkJhc2UsXG4gIHRhZ2dlZFBhdGgsXG4gIHdyaXRlRXhjbHVzaXZlLFxuICB3cml0ZUpTT04sXG59IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IHN0cmlwRXZlbnREYXRhUmVmcyB9IGZyb20gJy4vZmlsdGVycy5qcyc7XG5pbXBvcnQgeyBnZXRPYmplY3RDcmVhdGVkQXQsIGhhc2hUb2tlbiwgbW9ub3RvbmljVWxpZCB9IGZyb20gJy4vaGVscGVycy5qcyc7XG5pbXBvcnQgeyBkZWxldGVBbGxIb29rc0ZvclJ1biB9IGZyb20gJy4vaG9va3Mtc3RvcmFnZS5qcyc7XG5pbXBvcnQgeyBoYW5kbGVMZWdhY3lFdmVudCB9IGZyb20gJy4vbGVnYWN5LmpzJztcblxuY29uc3QgSG9va1Rva2VuQ2xhaW1TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHJ1bklkOiB6LnN0cmluZygpLFxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRIb29rVG9rZW5DbGFpbShcbiAgY29uc3RyYWludFBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx6LmluZmVyPHR5cGVvZiBIb29rVG9rZW5DbGFpbVNjaGVtYT4gfCBudWxsPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRKU09OKGNvbnN0cmFpbnRQYXRoLCBIb29rVG9rZW5DbGFpbVNjaGVtYSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGF4RXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGVsZXRlIGFsbCB3YWl0cyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrZmxvdyBydW4uXG4gKiBDYWxsZWQgd2hlbiBhIHJ1biByZWFjaGVzIGEgdGVybWluYWwgc3RhdGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUFsbFdhaXRzRm9yUnVuKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHJ1bklkOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB3YWl0c0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnd2FpdHMnKTtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKHdhaXRzRGlyKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAvLyBmaWxlSWRzIG1heSBjb250YWluIHRhZyBzdWZmaXhlcyAoZS5nLiwgXCJ3cnVuX0FCQy1jb3JySWQudml0ZXN0LTBcIilcbiAgICAvLyBidXQgc3RhcnRzV2l0aCBzdGlsbCBtYXRjaGVzIGNvcnJlY3RseSBzaW5jZSB0aGUgdGFnIGlzIGEgc3VmZml4LlxuICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoYCR7cnVuSWR9LWApKSB7XG4gICAgICBjb25zdCB3YWl0UGF0aCA9IHBhdGguam9pbih3YWl0c0RpciwgYCR7ZmlsZX0uanNvbmApO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTih3YWl0UGF0aCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgZXZlbnRzIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBJbXBsZW1lbnRzIHRoZSBTdG9yYWdlWydldmVudHMnXSBpbnRlcmZhY2Ugd2l0aCBjcmVhdGUsIGxpc3QsIGFuZCBsaXN0QnlDb3JyZWxhdGlvbklkIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudHNTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogU3RvcmFnZVsnZXZlbnRzJ10ge1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGNyZWF0ZShydW5JZCwgZGF0YSwgcGFyYW1zKTogUHJvbWlzZTxFdmVudFJlc3VsdD4ge1xuICAgICAgY29uc3QgZXZlbnRJZCA9IGBldm50XyR7bW9ub3RvbmljVWxpZCgpfWA7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSByZXF1ZXN0LXN1cHBsaWVkIElEcyBiZWZvcmUgdGhleSdyZSBjb25jYXRlbmF0ZWQgaW50b1xuICAgICAgLy8gZmlsZXN5c3RlbSBwYXRocy4gVGhpcyBpcyB0aGUgcHJpbWFyeSBkZWZlbnNlIGFnYWluc3QgcGF0aCB0cmF2ZXJzYWxcbiAgICAgIC8vIGF0dGFja3Mgd2hlcmUgYSBjbGllbnQgc3VwcGxpZXMgcnVuSWQgLyBjb3JyZWxhdGlvbklkIHZhbHVlcyBsaWtlXG4gICAgICAvLyBcIi4uLy4uLy4uL3BhY2thZ2VcIiB0byByZWFkIG9yIHdyaXRlIGZpbGVzIG91dHNpZGUgdGhlIHN0b3JhZ2Ugcm9vdC5cbiAgICAgIC8vXG4gICAgICAvLyBFbXB0eSBgY29ycmVsYXRpb25JZGAgdmFsdWVzIGFyZSBhbHNvIHJlamVjdGVkIGhlcmU6IHRoZSBldmVudFxuICAgICAgLy8gc2NoZW1hcyBvbmx5IHJlcXVpcmUgYHouc3RyaW5nKClgLCBzbyB3aXRob3V0IHRoaXMgY2hlY2sgYVxuICAgICAgLy8gc3RlcF9jcmVhdGVkIC8gaG9va19jcmVhdGVkIC8gd2FpdF9jcmVhdGVkIHJlcXVlc3Qgd2l0aFxuICAgICAgLy8gYGNvcnJlbGF0aW9uSWQ6ICcnYCB3b3VsZCBzaWxlbnRseSBiZSB3cml0dGVuIHVuZGVyIGEgbWFsZm9ybWVkXG4gICAgICAvLyBjb21wb3NpdGUga2V5IGxpa2UgYCR7cnVuSWR9LWAuXG4gICAgICBpZiAocnVuSWQgIT0gbnVsbCAmJiBydW5JZCAhPT0gJycpIHtcbiAgICAgICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdydW5JZCcsIHJ1bklkKTtcbiAgICAgIH1cbiAgICAgIGlmICgnY29ycmVsYXRpb25JZCcgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5jb3JyZWxhdGlvbklkID09PSAnc3RyaW5nJykge1xuICAgICAgICBhc3NlcnRTYWZlRW50aXR5SWQoJ2NvcnJlbGF0aW9uSWQnLCBkYXRhLmNvcnJlbGF0aW9uSWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3IgcnVuX2NyZWF0ZWQgZXZlbnRzLCB1c2UgY2xpZW50LXByb3ZpZGVkIHJ1bklkIG9yIGdlbmVyYXRlIG9uZSBzZXJ2ZXItc2lkZVxuICAgICAgbGV0IGVmZmVjdGl2ZVJ1bklkOiBzdHJpbmc7XG4gICAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdydW5fY3JlYXRlZCcgJiYgKCFydW5JZCB8fCBydW5JZCA9PT0gJycpKSB7XG4gICAgICAgIGVmZmVjdGl2ZVJ1bklkID0gYHdydW5fJHttb25vdG9uaWNVbGlkKCl9YDtcbiAgICAgIH0gZWxzZSBpZiAoIXJ1bklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncnVuSWQgaXMgcmVxdWlyZWQgZm9yIG5vbi1ydW5fY3JlYXRlZCBldmVudHMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVmZmVjdGl2ZVJ1bklkID0gcnVuSWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGNsaWVudC1wcm92aWRlZCBydW5JZCB0aW1lc3RhbXAgaXMgd2l0aGluIGFjY2VwdGFibGUgdGhyZXNob2xkXG4gICAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdydW5fY3JlYXRlZCcgJiYgcnVuSWQgJiYgcnVuSWQgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHZhbGlkYXRlVWxpZFRpbWVzdGFtcChlZmZlY3RpdmVSdW5JZCwgJ3dydW5fJyk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dXb3JsZEVycm9yKHZhbGlkYXRpb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gc3BlY1ZlcnNpb24gaXMgYWx3YXlzIHNlbnQgYnkgdGhlIHJ1bnRpbWUsIGJ1dCB3ZSBwcm92aWRlIGEgZmFsbGJhY2sgZm9yIHNhZmV0eVxuICAgICAgY29uc3QgZWZmZWN0aXZlU3BlY1ZlcnNpb24gPSBkYXRhLnNwZWNWZXJzaW9uID8/IFNQRUNfVkVSU0lPTl9DVVJSRU5UO1xuXG4gICAgICAvLyBIZWxwZXIgdG8gY2hlY2sgaWYgcnVuIGlzIGluIHRlcm1pbmFsIHN0YXRlXG4gICAgICBjb25zdCBpc1J1blRlcm1pbmFsID0gKHN0YXR1czogc3RyaW5nKSA9PlxuICAgICAgICBbJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY2FuY2VsbGVkJ10uaW5jbHVkZXMoc3RhdHVzKTtcblxuICAgICAgLy8gSGVscGVyIHRvIGNoZWNrIGlmIHN0ZXAgaXMgaW4gdGVybWluYWwgc3RhdGVcbiAgICAgIGNvbnN0IGlzU3RlcFRlcm1pbmFsID0gKHN0YXR1czogc3RyaW5nKSA9PlxuICAgICAgICBbJ2NvbXBsZXRlZCcsICdmYWlsZWQnLCAnY2FuY2VsbGVkJ10uaW5jbHVkZXMoc3RhdHVzKTtcblxuICAgICAgLy8gR2V0IGN1cnJlbnQgcnVuIHN0YXRlIGZvciB2YWxpZGF0aW9uIChpZiBub3QgY3JlYXRpbmcgYSBuZXcgcnVuKVxuICAgICAgLy8gU2tpcCBydW4gdmFsaWRhdGlvbiBmb3Igc3RlcF9jb21wbGV0ZWQgYW5kIHN0ZXBfcmV0cnlpbmcgLSB0aGV5IG9ubHkgb3BlcmF0ZVxuICAgICAgLy8gb24gcnVubmluZyBzdGVwcywgYW5kIHJ1bm5pbmcgc3RlcHMgYXJlIGFsd2F5cyBhbGxvd2VkIHRvIG1vZGlmeSByZWdhcmRsZXNzXG4gICAgICAvLyBvZiBydW4gc3RhdGUuIFRoaXMgb3B0aW1pemF0aW9uIHNhdmVzIGZpbGVzeXN0ZW0gcmVhZHMgcGVyIHN0ZXAgZXZlbnQuXG4gICAgICBsZXQgY3VycmVudFJ1bjogV29ya2Zsb3dSdW4gfCBudWxsID0gbnVsbDtcbiAgICAgIGNvbnN0IHNraXBSdW5WYWxpZGF0aW9uRXZlbnRzID0gWydzdGVwX2NvbXBsZXRlZCcsICdzdGVwX3JldHJ5aW5nJ107XG4gICAgICBpZiAoXG4gICAgICAgIGRhdGEuZXZlbnRUeXBlICE9PSAncnVuX2NyZWF0ZWQnICYmXG4gICAgICAgICFza2lwUnVuVmFsaWRhdGlvbkV2ZW50cy5pbmNsdWRlcyhkYXRhLmV2ZW50VHlwZSlcbiAgICAgICkge1xuICAgICAgICBjdXJyZW50UnVuID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAncnVucycsXG4gICAgICAgICAgZWZmZWN0aXZlUnVuSWQsXG4gICAgICAgICAgV29ya2Zsb3dSdW5TY2hlbWEsXG4gICAgICAgICAgdGFnXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVzaWxpZW50IHN0YXJ0OiBydW5fc3RhcnRlZCBvbiBub24tZXhpc3RlbnQgcnVuIHdpdGggZXZlbnREYXRhXG4gICAgICAgIC8vIGNyZWF0ZXMgdGhlIHJ1biBmaXJzdCwgc28gdGhlIHF1ZXVlIGNhbiBib290c3RyYXAgYSBydW4gdGhhdFxuICAgICAgICAvLyBmYWlsZWQgdG8gY3JlYXRlIGR1cmluZyBzdGFydCgpLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YS5ldmVudFR5cGUgPT09ICdydW5fc3RhcnRlZCcgJiZcbiAgICAgICAgICAhY3VycmVudFJ1biAmJlxuICAgICAgICAgICdldmVudERhdGEnIGluIGRhdGEgJiZcbiAgICAgICAgICBkYXRhLmV2ZW50RGF0YVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBydW5JbnB1dERhdGEgPSBkYXRhLmV2ZW50RGF0YSBhcyB7XG4gICAgICAgICAgICBkZXBsb3ltZW50SWQ/OiBzdHJpbmc7XG4gICAgICAgICAgICB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICBpbnB1dD86IGFueTtcbiAgICAgICAgICAgIGV4ZWN1dGlvbkNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcnVuSW5wdXREYXRhLmRlcGxveW1lbnRJZCAmJlxuICAgICAgICAgICAgcnVuSW5wdXREYXRhLndvcmtmbG93TmFtZSAmJlxuICAgICAgICAgICAgcnVuSW5wdXREYXRhLmlucHV0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIEF0b21pY2FsbHkgdHJ5IHRvIHB1Ymxpc2ggdGhlIHJ1biBlbnRpdHkgc28gb25seSB0aGUgZmlyc3RcbiAgICAgICAgICAgIC8vIHdyaXRlciB3aW5zLCBwcmV2ZW50aW5nIGEgVE9DVE9VIHJhY2Ugd2hlcmUgYSBjb25jdXJyZW50XG4gICAgICAgICAgICAvLyBydW5fY3JlYXRlZCBmcm9tIHN0YXJ0KCkgY291bGQgb3ZlcndyaXRlIGEgcnVuIHRoYXQgd2FzXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHRyYW5zaXRpb25lZCB0byAncnVubmluZycuXG4gICAgICAgICAgICBjb25zdCBjcmVhdGVkUnVuOiBXb3JrZmxvd1J1biA9IHtcbiAgICAgICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgICAgICBkZXBsb3ltZW50SWQ6IHJ1bklucHV0RGF0YS5kZXBsb3ltZW50SWQsXG4gICAgICAgICAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgICAgICAgICB3b3JrZmxvd05hbWU6IHJ1bklucHV0RGF0YS53b3JrZmxvd05hbWUsXG4gICAgICAgICAgICAgIHNwZWNWZXJzaW9uOiBlZmZlY3RpdmVTcGVjVmVyc2lvbixcbiAgICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dDogcnVuSW5wdXREYXRhLmV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgICAgICAgIGlucHV0OiBydW5JbnB1dERhdGEuaW5wdXQsXG4gICAgICAgICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBzdGFydGVkQXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgY29tcGxldGVkQXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJ1blBhdGggPSB0YWdnZWRQYXRoKGJhc2VkaXIsICdydW5zJywgZWZmZWN0aXZlUnVuSWQsIHRhZyk7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgd3JpdGVFeGNsdXNpdmUoXG4gICAgICAgICAgICAgIHJ1blBhdGgsXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNyZWF0ZWRSdW4sIGpzb25SZXBsYWNlcilcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChjcmVhdGVkKSB7XG4gICAgICAgICAgICAgIC8vIFdlIGNyZWF0ZWQgdGhlIHJ1biDigJQgYWxzbyB3cml0ZSB0aGUgcnVuX2NyZWF0ZWQgZXZlbnQuXG4gICAgICAgICAgICAgIGNvbnN0IHJ1bkNyZWF0ZWRFdmVudElkID0gYGV2bnRfJHttb25vdG9uaWNVbGlkKCl9YDtcbiAgICAgICAgICAgICAgY29uc3QgcnVuQ3JlYXRlZEV2ZW50OiBFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6ICdydW5fY3JlYXRlZCcsXG4gICAgICAgICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgICAgICAgIGV2ZW50SWQ6IHJ1bkNyZWF0ZWRFdmVudElkLFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICAgICAgICAgIHNwZWNWZXJzaW9uOiBlZmZlY3RpdmVTcGVjVmVyc2lvbixcbiAgICAgICAgICAgICAgICBldmVudERhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGRlcGxveW1lbnRJZDogcnVuSW5wdXREYXRhLmRlcGxveW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHdvcmtmbG93TmFtZTogcnVuSW5wdXREYXRhLndvcmtmbG93TmFtZSxcbiAgICAgICAgICAgICAgICAgIGlucHV0OiBydW5JbnB1dERhdGEuaW5wdXQsXG4gICAgICAgICAgICAgICAgICBleGVjdXRpb25Db250ZXh0OiBydW5JbnB1dERhdGEuZXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjb25zdCBjcmVhdGVkQ29tcG9zaXRlS2V5ID0gYCR7ZWZmZWN0aXZlUnVuSWR9LSR7cnVuQ3JlYXRlZEV2ZW50SWR9YDtcbiAgICAgICAgICAgICAgYXdhaXQgd3JpdGVKU09OKFxuICAgICAgICAgICAgICAgIHRhZ2dlZFBhdGgoYmFzZWRpciwgJ2V2ZW50cycsIGNyZWF0ZWRDb21wb3NpdGVLZXksIHRhZyksXG4gICAgICAgICAgICAgICAgcnVuQ3JlYXRlZEV2ZW50XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGN1cnJlbnRSdW4gPSBjcmVhdGVkUnVuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gUnVuIGFscmVhZHkgZXhpc3RzIChjb25jdXJyZW50IHJ1bl9jcmVhdGVkIHdvbiB0aGVcbiAgICAgICAgICAgICAgLy8gcmFjZSkuIFJlLXJlYWQgaXQgc28gZG93bnN0cmVhbSBsb2dpYyBzZWVzIHRoZSByZWFsIHN0YXRlLlxuICAgICAgICAgICAgICBjdXJyZW50UnVuID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICAgICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAgICAgICAncnVucycsXG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUnVuSWQsXG4gICAgICAgICAgICAgICAgV29ya2Zsb3dSdW5TY2hlbWEsXG4gICAgICAgICAgICAgICAgdGFnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gVkVSU0lPTiBDT01QQVRJQklMSVRZOiBDaGVjayBydW4gc3BlYyB2ZXJzaW9uXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vIEZvciBldmVudHMgdGhhdCBoYXZlIGZldGNoZWQgdGhlIHJ1biwgY2hlY2sgdmVyc2lvbiBjb21wYXRpYmlsaXR5LlxuICAgICAgLy8gU2tpcCBmb3IgcnVuX2NyZWF0ZWQgKG5vIGV4aXN0aW5nIHJ1bikgYW5kIHJ1bnRpbWUgZXZlbnRzIChzdGVwX2NvbXBsZXRlZCwgc3RlcF9yZXRyeWluZykuXG4gICAgICBpZiAoY3VycmVudFJ1bikge1xuICAgICAgICAvLyBDaGVjayBpZiBydW4gcmVxdWlyZXMgYSBuZXdlciB3b3JsZCB2ZXJzaW9uXG4gICAgICAgIGlmIChyZXF1aXJlc05ld2VyV29ybGQoY3VycmVudFJ1bi5zcGVjVmVyc2lvbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUnVuTm90U3VwcG9ydGVkRXJyb3IoXG4gICAgICAgICAgICBjdXJyZW50UnVuLnNwZWNWZXJzaW9uISxcbiAgICAgICAgICAgIFNQRUNfVkVSU0lPTl9DVVJSRU5UXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJvdXRlIHRvIGxlZ2FjeSBoYW5kbGVyIGZvciBwcmUtZXZlbnQtc291cmNpbmcgcnVuc1xuICAgICAgICBpZiAoaXNMZWdhY3lTcGVjVmVyc2lvbihjdXJyZW50UnVuLnNwZWNWZXJzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVMZWdhY3lFdmVudChcbiAgICAgICAgICAgIGJhc2VkaXIsXG4gICAgICAgICAgICBlZmZlY3RpdmVSdW5JZCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBjdXJyZW50UnVuLFxuICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vIFZBTElEQVRJT046IFRlcm1pbmFsIHN0YXRlIGFuZCBldmVudCBvcmRlcmluZyBjaGVja3NcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgICAvLyBSdW4gdGVybWluYWwgc3RhdGUgdmFsaWRhdGlvblxuICAgICAgaWYgKGN1cnJlbnRSdW4gJiYgaXNSdW5UZXJtaW5hbChjdXJyZW50UnVuLnN0YXR1cykpIHtcbiAgICAgICAgY29uc3QgcnVuVGVybWluYWxFdmVudHMgPSBbXG4gICAgICAgICAgJ3J1bl9zdGFydGVkJyxcbiAgICAgICAgICAncnVuX2NvbXBsZXRlZCcsXG4gICAgICAgICAgJ3J1bl9mYWlsZWQnLFxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIElkZW1wb3RlbnQgb3BlcmF0aW9uOiBydW5fY2FuY2VsbGVkIG9uIGFscmVhZHkgY2FuY2VsbGVkIHJ1biBpcyBhbGxvd2VkXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkYXRhLmV2ZW50VHlwZSA9PT0gJ3J1bl9jYW5jZWxsZWQnICYmXG4gICAgICAgICAgY3VycmVudFJ1bi5zdGF0dXMgPT09ICdjYW5jZWxsZWQnXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIFJldHVybiBleGlzdGluZyBzdGF0ZSAoaWRlbXBvdGVudClcbiAgICAgICAgICBjb25zdCBldmVudDogRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgICAgZXZlbnRJZCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICAgICAgc3BlY1ZlcnNpb246IGVmZmVjdGl2ZVNwZWNWZXJzaW9uLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgY29tcG9zaXRlS2V5ID0gYCR7ZWZmZWN0aXZlUnVuSWR9LSR7ZXZlbnRJZH1gO1xuICAgICAgICAgIGF3YWl0IHdyaXRlSlNPTihcbiAgICAgICAgICAgIHRhZ2dlZFBhdGgoYmFzZWRpciwgJ2V2ZW50cycsIGNvbXBvc2l0ZUtleSwgdGFnKSxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCByZXNvbHZlRGF0YSA9XG4gICAgICAgICAgICBwYXJhbXM/LnJlc29sdmVEYXRhID8/IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXZlbnQ6IHN0cmlwRXZlbnREYXRhUmVmcyhldmVudCwgcmVzb2x2ZURhdGEpLFxuICAgICAgICAgICAgcnVuOiBjdXJyZW50UnVuLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgcnVuX3N0YXJ0ZWQgb24gdGVybWluYWwgcnVucywgdXNlIFJ1bkV4cGlyZWRFcnJvciBzbyB0aGVcbiAgICAgICAgLy8gcnVudGltZSBrbm93cyB0byBleGl0IHdpdGhvdXQgcmV0cnlpbmcuXG4gICAgICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ3J1bl9zdGFydGVkJykge1xuICAgICAgICAgIHRocm93IG5ldyBSdW5FeHBpcmVkRXJyb3IoXG4gICAgICAgICAgICBgV29ya2Zsb3cgcnVuIFwiJHtlZmZlY3RpdmVSdW5JZH1cIiBpcyBhbHJlYWR5IGluIHRlcm1pbmFsIHN0YXRlIFwiJHtjdXJyZW50UnVuLnN0YXR1c31cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXIgcnVuIHN0YXRlIHRyYW5zaXRpb25zIGFyZSBub3QgYWxsb3dlZCBvbiB0ZXJtaW5hbCBydW5zXG4gICAgICAgIGlmIChcbiAgICAgICAgICBydW5UZXJtaW5hbEV2ZW50cy5pbmNsdWRlcyhkYXRhLmV2ZW50VHlwZSkgfHxcbiAgICAgICAgICBkYXRhLmV2ZW50VHlwZSA9PT0gJ3J1bl9jYW5jZWxsZWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFbnRpdHlDb25mbGljdEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCB0cmFuc2l0aW9uIHJ1biBmcm9tIHRlcm1pbmFsIHN0YXRlIFwiJHtjdXJyZW50UnVuLnN0YXR1c31cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRpbmcgbmV3IGVudGl0aWVzIG9uIHRlcm1pbmFsIHJ1bnMgaXMgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuZXZlbnRUeXBlID09PSAnc3RlcF9jcmVhdGVkJyB8fFxuICAgICAgICAgIGRhdGEuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJyB8fFxuICAgICAgICAgIGRhdGEuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRW50aXR5Q29uZmxpY3RFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgY3JlYXRlIG5ldyBlbnRpdGllcyBvbiBydW4gaW4gdGVybWluYWwgc3RhdGUgXCIke2N1cnJlbnRSdW4uc3RhdHVzfVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU3RlcC1yZWxhdGVkIGV2ZW50IHZhbGlkYXRpb24gKG9yZGVyaW5nIGFuZCB0ZXJtaW5hbCBzdGF0ZSlcbiAgICAgIC8vIFN0b3JlIGV4aXN0aW5nU3RlcCBzbyB3ZSBjYW4gcmV1c2UgaXQgbGF0ZXIgKGF2b2lkIGRvdWJsZSByZWFkKVxuICAgICAgbGV0IHZhbGlkYXRlZFN0ZXA6IFN0ZXAgfCBudWxsID0gbnVsbDtcbiAgICAgIGNvbnN0IHN0ZXBFdmVudHMgPSBbXG4gICAgICAgICdzdGVwX3N0YXJ0ZWQnLFxuICAgICAgICAnc3RlcF9jb21wbGV0ZWQnLFxuICAgICAgICAnc3RlcF9mYWlsZWQnLFxuICAgICAgICAnc3RlcF9yZXRyeWluZycsXG4gICAgICBdO1xuICAgICAgaWYgKHN0ZXBFdmVudHMuaW5jbHVkZXMoZGF0YS5ldmVudFR5cGUpICYmIGRhdGEuY29ycmVsYXRpb25JZCkge1xuICAgICAgICBjb25zdCBzdGVwQ29tcG9zaXRlS2V5ID0gYCR7ZWZmZWN0aXZlUnVuSWR9LSR7ZGF0YS5jb3JyZWxhdGlvbklkfWA7XG4gICAgICAgIHZhbGlkYXRlZFN0ZXAgPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICAgICAgICBiYXNlZGlyLFxuICAgICAgICAgICdzdGVwcycsXG4gICAgICAgICAgc3RlcENvbXBvc2l0ZUtleSxcbiAgICAgICAgICBTdGVwU2NoZW1hLFxuICAgICAgICAgIHRhZ1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIEV2ZW50IG9yZGVyaW5nOiBzdGVwIG11c3QgZXhpc3QgYmVmb3JlIHRoZXNlIGV2ZW50c1xuICAgICAgICBpZiAoIXZhbGlkYXRlZFN0ZXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dXb3JsZEVycm9yKFxuICAgICAgICAgICAgYFN0ZXAgXCIke2RhdGEuY29ycmVsYXRpb25JZH1cIiBub3QgZm91bmRgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0ZXAgdGVybWluYWwgc3RhdGUgdmFsaWRhdGlvblxuICAgICAgICBpZiAoaXNTdGVwVGVybWluYWwodmFsaWRhdGVkU3RlcC5zdGF0dXMpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IG1vZGlmeSBzdGVwIGluIHRlcm1pbmFsIHN0YXRlIFwiJHt2YWxpZGF0ZWRTdGVwLnN0YXR1c31cImBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT24gdGVybWluYWwgcnVuczogb25seSBhbGxvdyBjb21wbGV0aW5nL2ZhaWxpbmcgaW4tcHJvZ3Jlc3Mgc3RlcHNcbiAgICAgICAgaWYgKGN1cnJlbnRSdW4gJiYgaXNSdW5UZXJtaW5hbChjdXJyZW50UnVuLnN0YXR1cykpIHtcbiAgICAgICAgICBpZiAodmFsaWRhdGVkU3RlcC5zdGF0dXMgIT09ICdydW5uaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bkV4cGlyZWRFcnJvcihcbiAgICAgICAgICAgICAgYENhbm5vdCBtb2RpZnkgbm9uLXJ1bm5pbmcgc3RlcCBvbiBydW4gaW4gdGVybWluYWwgc3RhdGUgXCIke2N1cnJlbnRSdW4uc3RhdHVzfVwiYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSG9vay1yZWxhdGVkIGV2ZW50IHZhbGlkYXRpb24gKG9yZGVyaW5nKVxuICAgICAgY29uc3QgaG9va0V2ZW50c1JlcXVpcmluZ0V4aXN0ZW5jZSA9IFsnaG9va19kaXNwb3NlZCcsICdob29rX3JlY2VpdmVkJ107XG4gICAgICBpZiAoXG4gICAgICAgIGhvb2tFdmVudHNSZXF1aXJpbmdFeGlzdGVuY2UuaW5jbHVkZXMoZGF0YS5ldmVudFR5cGUpICYmXG4gICAgICAgIGRhdGEuY29ycmVsYXRpb25JZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSG9vayA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgICAgICAgIGJhc2VkaXIsXG4gICAgICAgICAgJ2hvb2tzJyxcbiAgICAgICAgICBkYXRhLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgSG9va1NjaGVtYSxcbiAgICAgICAgICB0YWdcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWV4aXN0aW5nSG9vaykge1xuICAgICAgICAgIHRocm93IG5ldyBIb29rTm90Rm91bmRFcnJvcihkYXRhLmNvcnJlbGF0aW9uSWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBldmVudDogRXZlbnQgPSB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHJ1bklkOiBlZmZlY3RpdmVSdW5JZCxcbiAgICAgICAgZXZlbnRJZCxcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHNwZWNWZXJzaW9uOiBlZmZlY3RpdmVTcGVjVmVyc2lvbixcbiAgICAgIH07XG4gICAgICAvLyBTdHJpcCBldmVudERhdGEgZnJvbSBydW5fc3RhcnRlZCDigJQgaXQgYmVsb25ncyBvbiBydW5fY3JlYXRlZCBvbmx5LlxuICAgICAgaWYgKGRhdGEuZXZlbnRUeXBlID09PSAncnVuX3N0YXJ0ZWQnICYmICdldmVudERhdGEnIGluIGV2ZW50KSB7XG4gICAgICAgIGRlbGV0ZSAoZXZlbnQgYXMgYW55KS5ldmVudERhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIFRyYWNrIGVudGl0eSBjcmVhdGVkL3VwZGF0ZWQgZm9yIEV2ZW50UmVzdWx0XG4gICAgICBsZXQgcnVuOiBXb3JrZmxvd1J1biB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBzdGVwOiBTdGVwIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGhvb2s6IEhvb2sgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgd2FpdDogV2FpdCB8IHVuZGVmaW5lZDtcblxuICAgICAgLy8gQ3JlYXRlL3VwZGF0ZSBlbnRpdHkgYmFzZWQgb24gZXZlbnQgdHlwZSAoZXZlbnQtc291cmNlZCBhcmNoaXRlY3R1cmUpXG4gICAgICAvLyBSdW4gbGlmZWN5Y2xlIGV2ZW50c1xuICAgICAgaWYgKGRhdGEuZXZlbnRUeXBlID09PSAncnVuX2NyZWF0ZWQnICYmICdldmVudERhdGEnIGluIGRhdGEpIHtcbiAgICAgICAgY29uc3QgcnVuRGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHtcbiAgICAgICAgICBkZXBsb3ltZW50SWQ6IHN0cmluZztcbiAgICAgICAgICB3b3JrZmxvd05hbWU6IHN0cmluZztcbiAgICAgICAgICBpbnB1dDogU2VyaWFsaXplZERhdGE7XG4gICAgICAgICAgZXhlY3V0aW9uQ29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgIH07XG4gICAgICAgIHJ1biA9IHtcbiAgICAgICAgICBydW5JZDogZWZmZWN0aXZlUnVuSWQsXG4gICAgICAgICAgZGVwbG95bWVudElkOiBydW5EYXRhLmRlcGxveW1lbnRJZCxcbiAgICAgICAgICBzdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgICAgICB3b3JrZmxvd05hbWU6IHJ1bkRhdGEud29ya2Zsb3dOYW1lLFxuICAgICAgICAgIC8vIFByb3BhZ2F0ZSBzcGVjVmVyc2lvbiBmcm9tIHRoZSBldmVudCB0byB0aGUgcnVuIGVudGl0eVxuICAgICAgICAgIHNwZWNWZXJzaW9uOiBlZmZlY3RpdmVTcGVjVmVyc2lvbixcbiAgICAgICAgICBleGVjdXRpb25Db250ZXh0OiBydW5EYXRhLmV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgICAgaW5wdXQ6IHJ1bkRhdGEuaW5wdXQsXG4gICAgICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzdGFydGVkQXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBjb21wbGV0ZWRBdDogdW5kZWZpbmVkLFxuICAgICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICB9O1xuICAgICAgICAvLyBBdG9taWNhbGx5IHB1Ymxpc2ggdGhlIHJ1biBlbnRpdHkgZmlsZSB3aXRob3V0IG92ZXJ3cml0aW5nIGFuXG4gICAgICAgIC8vIGV4aXN0aW5nIHdpbm5lci4gVGhpcyBwcmV2ZW50cyBhIFRPQ1RPVSByYWNlIHdpdGggdGhlIHJlc2lsaWVudFxuICAgICAgICAvLyBzdGFydCBwYXRoIChydW5fc3RhcnRlZCBvbiBub24tZXhpc3RlbnQgcnVuKSB0aGF0IGNvdWxkIHJlc3VsdCBpblxuICAgICAgICAvLyBkdXBsaWNhdGUgcnVuX2NyZWF0ZWQgZXZlbnRzIGluIHRoZSBldmVudCBsb2cuXG4gICAgICAgIGNvbnN0IHJ1blBhdGggPSB0YWdnZWRQYXRoKGJhc2VkaXIsICdydW5zJywgZWZmZWN0aXZlUnVuSWQsIHRhZyk7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB3cml0ZUV4Y2x1c2l2ZShcbiAgICAgICAgICBydW5QYXRoLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHJ1biwganNvblJlcGxhY2VyLCAyKVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWNyZWF0ZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRW50aXR5Q29uZmxpY3RFcnJvcihcbiAgICAgICAgICAgIGBXb3JrZmxvdyBydW4gXCIke2VmZmVjdGl2ZVJ1bklkfVwiIGFscmVhZHkgZXhpc3RzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdydW5fc3RhcnRlZCcpIHtcbiAgICAgICAgLy8gUmV1c2UgY3VycmVudFJ1biBmcm9tIHZhbGlkYXRpb24gKGFscmVhZHkgcmVhZCBhYm92ZSlcbiAgICAgICAgaWYgKGN1cnJlbnRSdW4pIHtcbiAgICAgICAgICAvLyBJZiBhbHJlYWR5IHJ1bm5pbmcsIHJldHVybiB0aGUgcnVuIHdpdGhvdXQgaW5zZXJ0aW5nIGFcbiAgICAgICAgICAvLyBkdXBsaWNhdGUgZXZlbnQuICBUaGlzIG1ha2VzIHJ1bl9zdGFydGVkIGlkZW1wb3RlbnQgZm9yXG4gICAgICAgICAgLy8gY29uY3VycmVudCBpbnZvY2F0aW9ucy4gIFdlIG9taXQgcHJlbG9hZGVkIGV2ZW50cyBoZXJlXG4gICAgICAgICAgLy8gYmVjYXVzZSB0aGlzIGlzIGEgcmFyZSByYWNlLWNvbmRpdGlvbiBwYXRoIOKAlCB0aGUgcnVudGltZVxuICAgICAgICAgIC8vIGZhbGxzIGJhY2sgdG8gbG9hZGluZyBldmVudHMgc2VwYXJhdGVseS5cbiAgICAgICAgICBpZiAoY3VycmVudFJ1bi5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgcnVuOiBjdXJyZW50UnVuIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcnVuID0ge1xuICAgICAgICAgICAgcnVuSWQ6IGN1cnJlbnRSdW4ucnVuSWQsXG4gICAgICAgICAgICBkZXBsb3ltZW50SWQ6IGN1cnJlbnRSdW4uZGVwbG95bWVudElkLFxuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiBjdXJyZW50UnVuLndvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHNwZWNWZXJzaW9uOiBjdXJyZW50UnVuLnNwZWNWZXJzaW9uLFxuICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dDogY3VycmVudFJ1bi5leGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgaW5wdXQ6IGN1cnJlbnRSdW4uaW5wdXQsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IGN1cnJlbnRSdW4uY3JlYXRlZEF0LFxuICAgICAgICAgICAgZXhwaXJlZEF0OiBjdXJyZW50UnVuLmV4cGlyZWRBdCxcbiAgICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29tcGxldGVkQXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHN0YXJ0ZWRBdDogY3VycmVudFJ1bi5zdGFydGVkQXQgPz8gbm93LFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdydW5zJywgZWZmZWN0aXZlUnVuSWQsIHRhZyksXG4gICAgICAgICAgICBydW4sXG4gICAgICAgICAgICB7IG92ZXJ3cml0ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ3J1bl9jb21wbGV0ZWQnICYmICdldmVudERhdGEnIGluIGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29tcGxldGVkRGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHsgb3V0cHV0PzogYW55IH07XG4gICAgICAgIC8vIFJldXNlIGN1cnJlbnRSdW4gZnJvbSB2YWxpZGF0aW9uIChhbHJlYWR5IHJlYWQgYWJvdmUpXG4gICAgICAgIGlmIChjdXJyZW50UnVuKSB7XG4gICAgICAgICAgcnVuID0ge1xuICAgICAgICAgICAgcnVuSWQ6IGN1cnJlbnRSdW4ucnVuSWQsXG4gICAgICAgICAgICBkZXBsb3ltZW50SWQ6IGN1cnJlbnRSdW4uZGVwbG95bWVudElkLFxuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiBjdXJyZW50UnVuLndvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHNwZWNWZXJzaW9uOiBjdXJyZW50UnVuLnNwZWNWZXJzaW9uLFxuICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dDogY3VycmVudFJ1bi5leGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgaW5wdXQ6IGN1cnJlbnRSdW4uaW5wdXQsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IGN1cnJlbnRSdW4uY3JlYXRlZEF0LFxuICAgICAgICAgICAgZXhwaXJlZEF0OiBjdXJyZW50UnVuLmV4cGlyZWRBdCxcbiAgICAgICAgICAgIHN0YXJ0ZWRBdDogY3VycmVudFJ1bi5zdGFydGVkQXQsXG4gICAgICAgICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgICAgICAgICAgb3V0cHV0OiBjb21wbGV0ZWREYXRhLm91dHB1dCxcbiAgICAgICAgICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb21wbGV0ZWRBdDogbm93LFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdydW5zJywgZWZmZWN0aXZlUnVuSWQsIHRhZyksXG4gICAgICAgICAgICBydW4sXG4gICAgICAgICAgICB7IG92ZXJ3cml0ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBkZWxldGVBbGxIb29rc0ZvclJ1bihiYXNlZGlyLCBlZmZlY3RpdmVSdW5JZCksXG4gICAgICAgICAgICBkZWxldGVBbGxXYWl0c0ZvclJ1bihiYXNlZGlyLCBlZmZlY3RpdmVSdW5JZCksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdydW5fZmFpbGVkJyAmJiAnZXZlbnREYXRhJyBpbiBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGZhaWxlZERhdGEgPSBkYXRhLmV2ZW50RGF0YSBhcyB7XG4gICAgICAgICAgZXJyb3I6IGFueTtcbiAgICAgICAgICBlcnJvckNvZGU/OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFJldXNlIGN1cnJlbnRSdW4gZnJvbSB2YWxpZGF0aW9uIChhbHJlYWR5IHJlYWQgYWJvdmUpXG4gICAgICAgIGlmIChjdXJyZW50UnVuKSB7XG4gICAgICAgICAgcnVuID0ge1xuICAgICAgICAgICAgcnVuSWQ6IGN1cnJlbnRSdW4ucnVuSWQsXG4gICAgICAgICAgICBkZXBsb3ltZW50SWQ6IGN1cnJlbnRSdW4uZGVwbG95bWVudElkLFxuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiBjdXJyZW50UnVuLndvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHNwZWNWZXJzaW9uOiBjdXJyZW50UnVuLnNwZWNWZXJzaW9uLFxuICAgICAgICAgICAgZXhlY3V0aW9uQ29udGV4dDogY3VycmVudFJ1bi5leGVjdXRpb25Db250ZXh0LFxuICAgICAgICAgICAgaW5wdXQ6IGN1cnJlbnRSdW4uaW5wdXQsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IGN1cnJlbnRSdW4uY3JlYXRlZEF0LFxuICAgICAgICAgICAgZXhwaXJlZEF0OiBjdXJyZW50UnVuLmV4cGlyZWRBdCxcbiAgICAgICAgICAgIHN0YXJ0ZWRBdDogY3VycmVudFJ1bi5zdGFydGVkQXQsXG4gICAgICAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgICAgICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBmYWlsZWREYXRhLmVycm9yID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgPyBmYWlsZWREYXRhLmVycm9yXG4gICAgICAgICAgICAgICAgICA6IChmYWlsZWREYXRhLmVycm9yPy5tZXNzYWdlID8/ICdVbmtub3duIGVycm9yJyksXG4gICAgICAgICAgICAgIHN0YWNrOiBmYWlsZWREYXRhLmVycm9yPy5zdGFjayxcbiAgICAgICAgICAgICAgY29kZTogZmFpbGVkRGF0YS5lcnJvckNvZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGVkQXQ6IG5vdyxcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgd3JpdGVKU09OKFxuICAgICAgICAgICAgdGFnZ2VkUGF0aChiYXNlZGlyLCAncnVucycsIGVmZmVjdGl2ZVJ1bklkLCB0YWcpLFxuICAgICAgICAgICAgcnVuLFxuICAgICAgICAgICAgeyBvdmVyd3JpdGU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgZGVsZXRlQWxsSG9va3NGb3JSdW4oYmFzZWRpciwgZWZmZWN0aXZlUnVuSWQpLFxuICAgICAgICAgICAgZGVsZXRlQWxsV2FpdHNGb3JSdW4oYmFzZWRpciwgZWZmZWN0aXZlUnVuSWQpLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuZXZlbnRUeXBlID09PSAncnVuX2NhbmNlbGxlZCcpIHtcbiAgICAgICAgLy8gUmV1c2UgY3VycmVudFJ1biBmcm9tIHZhbGlkYXRpb24gKGFscmVhZHkgcmVhZCBhYm92ZSlcbiAgICAgICAgaWYgKGN1cnJlbnRSdW4pIHtcbiAgICAgICAgICBydW4gPSB7XG4gICAgICAgICAgICBydW5JZDogY3VycmVudFJ1bi5ydW5JZCxcbiAgICAgICAgICAgIGRlcGxveW1lbnRJZDogY3VycmVudFJ1bi5kZXBsb3ltZW50SWQsXG4gICAgICAgICAgICB3b3JrZmxvd05hbWU6IGN1cnJlbnRSdW4ud29ya2Zsb3dOYW1lLFxuICAgICAgICAgICAgc3BlY1ZlcnNpb246IGN1cnJlbnRSdW4uc3BlY1ZlcnNpb24sXG4gICAgICAgICAgICBleGVjdXRpb25Db250ZXh0OiBjdXJyZW50UnVuLmV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgICAgICBpbnB1dDogY3VycmVudFJ1bi5pbnB1dCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogY3VycmVudFJ1bi5jcmVhdGVkQXQsXG4gICAgICAgICAgICBleHBpcmVkQXQ6IGN1cnJlbnRSdW4uZXhwaXJlZEF0LFxuICAgICAgICAgICAgc3RhcnRlZEF0OiBjdXJyZW50UnVuLnN0YXJ0ZWRBdCxcbiAgICAgICAgICAgIHN0YXR1czogJ2NhbmNlbGxlZCcsXG4gICAgICAgICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb21wbGV0ZWRBdDogbm93LFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdydW5zJywgZWZmZWN0aXZlUnVuSWQsIHRhZyksXG4gICAgICAgICAgICBydW4sXG4gICAgICAgICAgICB7IG92ZXJ3cml0ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBkZWxldGVBbGxIb29rc0ZvclJ1bihiYXNlZGlyLCBlZmZlY3RpdmVSdW5JZCksXG4gICAgICAgICAgICBkZWxldGVBbGxXYWl0c0ZvclJ1bihiYXNlZGlyLCBlZmZlY3RpdmVSdW5JZCksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIC8vIFN0ZXAgbGlmZWN5Y2xlIGV2ZW50c1xuICAgICAgICBkYXRhLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcgJiZcbiAgICAgICAgJ2V2ZW50RGF0YScgaW4gZGF0YVxuICAgICAgKSB7XG4gICAgICAgIC8vIHN0ZXBfY3JlYXRlZDogQ3JlYXRlcyBzdGVwIGVudGl0eSB3aXRoIHN0YXR1cyAncGVuZGluZycsIGF0dGVtcHQ9MCwgY3JlYXRlZEF0IHNldFxuICAgICAgICBjb25zdCBzdGVwRGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHtcbiAgICAgICAgICBzdGVwTmFtZTogc3RyaW5nO1xuICAgICAgICAgIGlucHV0OiBhbnk7XG4gICAgICAgIH07XG4gICAgICAgIHN0ZXAgPSB7XG4gICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgIHN0ZXBJZDogZGF0YS5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgIHN0ZXBOYW1lOiBzdGVwRGF0YS5zdGVwTmFtZSxcbiAgICAgICAgICBzdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgICAgICBpbnB1dDogc3RlcERhdGEuaW5wdXQsXG4gICAgICAgICAgb3V0cHV0OiB1bmRlZmluZWQsXG4gICAgICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgICBhdHRlbXB0OiAwLFxuICAgICAgICAgIHN0YXJ0ZWRBdDogdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbXBsZXRlZEF0OiB1bmRlZmluZWQsXG4gICAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgLy8gUHJvcGFnYXRlIHNwZWNWZXJzaW9uIGZyb20gdGhlIGV2ZW50IHRvIHRoZSBzdGVwIGVudGl0eVxuICAgICAgICAgIHNwZWNWZXJzaW9uOiBlZmZlY3RpdmVTcGVjVmVyc2lvbixcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3RlcENvbXBvc2l0ZUtleSA9IGAke2VmZmVjdGl2ZVJ1bklkfS0ke2RhdGEuY29ycmVsYXRpb25JZH1gO1xuICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgdGFnZ2VkUGF0aChiYXNlZGlyLCAnc3RlcHMnLCBzdGVwQ29tcG9zaXRlS2V5LCB0YWcpLFxuICAgICAgICAgIHN0ZXBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnKSB7XG4gICAgICAgIC8vIHN0ZXBfc3RhcnRlZDogSW5jcmVtZW50cyBhdHRlbXB0LCBzZXRzIHN0YXR1cyB0byAncnVubmluZydcbiAgICAgICAgLy8gU2V0cyBzdGFydGVkQXQgb25seSBvbiB0aGUgZmlyc3Qgc3RhcnQgKG5vdCB1cGRhdGVkIG9uIHJldHJpZXMpXG4gICAgICAgIC8vIFJldXNlIHZhbGlkYXRlZFN0ZXAgZnJvbSB2YWxpZGF0aW9uIChhbHJlYWR5IHJlYWQgYWJvdmUpXG4gICAgICAgIGlmICh2YWxpZGF0ZWRTdGVwKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgcmV0cnlBZnRlciB0aW1lc3RhbXAgaGFzbid0IGJlZW4gcmVhY2hlZCB5ZXRcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB2YWxpZGF0ZWRTdGVwLnJldHJ5QWZ0ZXIgJiZcbiAgICAgICAgICAgIHZhbGlkYXRlZFN0ZXAucmV0cnlBZnRlci5nZXRUaW1lKCkgPiBEYXRlLm5vdygpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vRWFybHlFcnJvcihcbiAgICAgICAgICAgICAgYENhbm5vdCBzdGFydCBzdGVwIFwiJHtkYXRhLmNvcnJlbGF0aW9uSWR9XCI6IHJldHJ5QWZ0ZXIgdGltZXN0YW1wIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldGAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXRyeUFmdGVyOiBNYXRoLmNlaWwoXG4gICAgICAgICAgICAgICAgICAodmFsaWRhdGVkU3RlcC5yZXRyeUFmdGVyLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQmVzdC1lZmZvcnQgZ3VhcmQ6IHJlLXJlYWQgdGhlIHN0ZXAgZW50aXR5IHRvIGNoZWNrIGlmIGl0XG4gICAgICAgICAgLy8gcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSBiZXR3ZWVuIHRoZSB2YWxpZGF0aW9uIHJlYWQgYW5kIG5vdy5cbiAgICAgICAgICAvLyBUaGlzIG5hcnJvd3MgdGhlIFRPQ1RPVSB3aW5kb3cgYnV0IGRvZXMgbm90IGZ1bGx5IGVsaW1pbmF0ZSBpdFxuICAgICAgICAgIC8vICh0aGUgbG9jYWwgd29ybGQgaXMgc2luZ2xlLXByb2Nlc3MgLyBkZXYtb25seTsgdGhlIHBvc3RncmVzXG4gICAgICAgICAgLy8gd29ybGQgdXNlcyBTUUwtbGV2ZWwgYXRvbWljIGd1YXJkcyBmb3IgcHJvZHVjdGlvbikuXG4gICAgICAgICAgY29uc3Qgc3RlcENvbXBvc2l0ZUtleSA9IGAke2VmZmVjdGl2ZVJ1bklkfS0ke2RhdGEuY29ycmVsYXRpb25JZH1gO1xuICAgICAgICAgIGNvbnN0IGZyZXNoU3RlcCA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAgICdzdGVwcycsXG4gICAgICAgICAgICBzdGVwQ29tcG9zaXRlS2V5LFxuICAgICAgICAgICAgU3RlcFNjaGVtYSxcbiAgICAgICAgICAgIHRhZ1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGZyZXNoU3RlcCAmJiBpc1N0ZXBUZXJtaW5hbChmcmVzaFN0ZXAuc3RhdHVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgICAgICAgIGBDYW5ub3QgbW9kaWZ5IHN0ZXAgaW4gdGVybWluYWwgc3RhdGUgXCIke2ZyZXNoU3RlcC5zdGF0dXN9XCJgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN0ZXAgPSB7XG4gICAgICAgICAgICAuLi52YWxpZGF0ZWRTdGVwLFxuICAgICAgICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICAgICAgICAvLyBPbmx5IHNldCBzdGFydGVkQXQgb24gdGhlIGZpcnN0IHN0YXJ0XG4gICAgICAgICAgICBzdGFydGVkQXQ6IHZhbGlkYXRlZFN0ZXAuc3RhcnRlZEF0ID8/IG5vdyxcbiAgICAgICAgICAgIC8vIEluY3JlbWVudCBhdHRlbXB0IGNvdW50ZXIgb24gZXZlcnkgc3RhcnRcbiAgICAgICAgICAgIGF0dGVtcHQ6IHZhbGlkYXRlZFN0ZXAuYXR0ZW1wdCArIDEsXG4gICAgICAgICAgICAvLyBDbGVhciByZXRyeUFmdGVyIG5vdyB0aGF0IHRoZSBzdGVwIGhhcyBzdGFydGVkXG4gICAgICAgICAgICByZXRyeUFmdGVyOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IHdyaXRlSlNPTihcbiAgICAgICAgICAgIHRhZ2dlZFBhdGgoYmFzZWRpciwgJ3N0ZXBzJywgc3RlcENvbXBvc2l0ZUtleSwgdGFnKSxcbiAgICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgICB7IG92ZXJ3cml0ZTogdHJ1ZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJyAmJiAnZXZlbnREYXRhJyBpbiBkYXRhKSB7XG4gICAgICAgIC8vIHN0ZXBfY29tcGxldGVkOiBUZXJtaW5hbCBzdGF0ZSB3aXRoIG91dHB1dFxuICAgICAgICAvLyBVc2VzIHdyaXRlRXhjbHVzaXZlIG9uIGEgbG9jayBmaWxlIHRvIGF0b21pY2FsbHkgcHJldmVudCBjb25jdXJyZW50XG4gICAgICAgIC8vIGludm9jYXRpb25zIGZyb20gYm90aCBjb21wbGV0aW5nIHRoZSBzYW1lIHN0ZXAgKFRPQ1RPVSByYWNlKS5cbiAgICAgICAgY29uc3QgY29tcGxldGVkRGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHsgcmVzdWx0OiBhbnkgfTtcbiAgICAgICAgaWYgKHZhbGlkYXRlZFN0ZXApIHtcbiAgICAgICAgICBjb25zdCBzdGVwQ29tcG9zaXRlS2V5ID0gYCR7ZWZmZWN0aXZlUnVuSWR9LSR7ZGF0YS5jb3JyZWxhdGlvbklkfWA7XG4gICAgICAgICAgY29uc3QgbG9ja05hbWUgPSB0YWdcbiAgICAgICAgICAgID8gYCR7c3RlcENvbXBvc2l0ZUtleX0udGVybWluYWwuJHt0YWd9YFxuICAgICAgICAgICAgOiBgJHtzdGVwQ29tcG9zaXRlS2V5fS50ZXJtaW5hbGA7XG4gICAgICAgICAgY29uc3QgdGVybWluYWxMb2NrUGF0aCA9IHJlc29sdmVXaXRoaW5CYXNlKFxuICAgICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAgICcubG9ja3MnLFxuICAgICAgICAgICAgJ3N0ZXBzJyxcbiAgICAgICAgICAgIGxvY2tOYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjbGFpbWVkID0gYXdhaXQgd3JpdGVFeGNsdXNpdmUodGVybWluYWxMb2NrUGF0aCwgJycpO1xuICAgICAgICAgIGlmICghY2xhaW1lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgICAgICAgICdDYW5ub3QgbW9kaWZ5IHN0ZXAgaW4gdGVybWluYWwgc3RhdGUnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGVwID0ge1xuICAgICAgICAgICAgLi4udmFsaWRhdGVkU3RlcCxcbiAgICAgICAgICAgIHN0YXR1czogJ2NvbXBsZXRlZCcsXG4gICAgICAgICAgICBvdXRwdXQ6IGNvbXBsZXRlZERhdGEucmVzdWx0LFxuICAgICAgICAgICAgY29tcGxldGVkQXQ6IG5vdyxcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgd3JpdGVKU09OKFxuICAgICAgICAgICAgdGFnZ2VkUGF0aChiYXNlZGlyLCAnc3RlcHMnLCBzdGVwQ29tcG9zaXRlS2V5LCB0YWcpLFxuICAgICAgICAgICAgc3RlcCxcbiAgICAgICAgICAgIHsgb3ZlcndyaXRlOiB0cnVlIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuZXZlbnRUeXBlID09PSAnc3RlcF9mYWlsZWQnICYmICdldmVudERhdGEnIGluIGRhdGEpIHtcbiAgICAgICAgLy8gc3RlcF9mYWlsZWQ6IFRlcm1pbmFsIHN0YXRlIHdpdGggZXJyb3JcbiAgICAgICAgLy8gVXNlcyB3cml0ZUV4Y2x1c2l2ZSBvbiBhIGxvY2sgZmlsZSB0byBhdG9taWNhbGx5IHByZXZlbnQgY29uY3VycmVudFxuICAgICAgICAvLyBpbnZvY2F0aW9ucyBmcm9tIGJvdGggZmFpbGluZyB0aGUgc2FtZSBzdGVwIChUT0NUT1UgcmFjZSkuXG4gICAgICAgIGNvbnN0IGZhaWxlZERhdGEgPSBkYXRhLmV2ZW50RGF0YSBhcyB7XG4gICAgICAgICAgZXJyb3I6IGFueTtcbiAgICAgICAgICBzdGFjaz86IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHZhbGlkYXRlZFN0ZXApIHtcbiAgICAgICAgICBjb25zdCBzdGVwQ29tcG9zaXRlS2V5ID0gYCR7ZWZmZWN0aXZlUnVuSWR9LSR7ZGF0YS5jb3JyZWxhdGlvbklkfWA7XG4gICAgICAgICAgY29uc3QgbG9ja05hbWUgPSB0YWdcbiAgICAgICAgICAgID8gYCR7c3RlcENvbXBvc2l0ZUtleX0udGVybWluYWwuJHt0YWd9YFxuICAgICAgICAgICAgOiBgJHtzdGVwQ29tcG9zaXRlS2V5fS50ZXJtaW5hbGA7XG4gICAgICAgICAgY29uc3QgdGVybWluYWxMb2NrUGF0aCA9IHJlc29sdmVXaXRoaW5CYXNlKFxuICAgICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAgICcubG9ja3MnLFxuICAgICAgICAgICAgJ3N0ZXBzJyxcbiAgICAgICAgICAgIGxvY2tOYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjbGFpbWVkID0gYXdhaXQgd3JpdGVFeGNsdXNpdmUodGVybWluYWxMb2NrUGF0aCwgJycpO1xuICAgICAgICAgIGlmICghY2xhaW1lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVudGl0eUNvbmZsaWN0RXJyb3IoXG4gICAgICAgICAgICAgICdDYW5ub3QgbW9kaWZ5IHN0ZXAgaW4gdGVybWluYWwgc3RhdGUnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlcnJvciA9IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgIHR5cGVvZiBmYWlsZWREYXRhLmVycm9yID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gZmFpbGVkRGF0YS5lcnJvclxuICAgICAgICAgICAgICAgIDogKGZhaWxlZERhdGEuZXJyb3I/Lm1lc3NhZ2UgPz8gJ1Vua25vd24gZXJyb3InKSxcbiAgICAgICAgICAgIHN0YWNrOiBmYWlsZWREYXRhLnN0YWNrLFxuICAgICAgICAgIH07XG4gICAgICAgICAgc3RlcCA9IHtcbiAgICAgICAgICAgIC4uLnZhbGlkYXRlZFN0ZXAsXG4gICAgICAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBjb21wbGV0ZWRBdDogbm93LFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdzdGVwcycsIHN0ZXBDb21wb3NpdGVLZXksIHRhZyksXG4gICAgICAgICAgICBzdGVwLFxuICAgICAgICAgICAgeyBvdmVyd3JpdGU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICdzdGVwX3JldHJ5aW5nJyAmJiAnZXZlbnREYXRhJyBpbiBkYXRhKSB7XG4gICAgICAgIC8vIHN0ZXBfcmV0cnlpbmc6IFNldHMgc3RhdHVzIGJhY2sgdG8gJ3BlbmRpbmcnLCByZWNvcmRzIGVycm9yXG4gICAgICAgIC8vIFJldXNlIHZhbGlkYXRlZFN0ZXAgZnJvbSB2YWxpZGF0aW9uIChhbHJlYWR5IHJlYWQgYWJvdmUpXG4gICAgICAgIGNvbnN0IHJldHJ5RGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHtcbiAgICAgICAgICBlcnJvcjogYW55O1xuICAgICAgICAgIHN0YWNrPzogc3RyaW5nO1xuICAgICAgICAgIHJldHJ5QWZ0ZXI/OiBEYXRlO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodmFsaWRhdGVkU3RlcCkge1xuICAgICAgICAgIGNvbnN0IHN0ZXBDb21wb3NpdGVLZXkgPSBgJHtlZmZlY3RpdmVSdW5JZH0tJHtkYXRhLmNvcnJlbGF0aW9uSWR9YDtcbiAgICAgICAgICBzdGVwID0ge1xuICAgICAgICAgICAgLi4udmFsaWRhdGVkU3RlcCxcbiAgICAgICAgICAgIHN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcmV0cnlEYXRhLmVycm9yID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgPyByZXRyeURhdGEuZXJyb3JcbiAgICAgICAgICAgICAgICAgIDogKHJldHJ5RGF0YS5lcnJvcj8ubWVzc2FnZSA/PyAnVW5rbm93biBlcnJvcicpLFxuICAgICAgICAgICAgICBzdGFjazogcmV0cnlEYXRhLnN0YWNrLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJldHJ5QWZ0ZXI6IHJldHJ5RGF0YS5yZXRyeUFmdGVyLFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICdzdGVwcycsIHN0ZXBDb21wb3NpdGVLZXksIHRhZyksXG4gICAgICAgICAgICBzdGVwLFxuICAgICAgICAgICAgeyBvdmVyd3JpdGU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIC8vIEhvb2sgbGlmZWN5Y2xlIGV2ZW50c1xuICAgICAgICBkYXRhLmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcgJiZcbiAgICAgICAgJ2V2ZW50RGF0YScgaW4gZGF0YVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGhvb2tEYXRhID0gZGF0YS5ldmVudERhdGEgYXMge1xuICAgICAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgICAgICAgbWV0YWRhdGE/OiBhbnk7XG4gICAgICAgICAgaXNXZWJob29rPzogYm9vbGVhbjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBdG9taWNhbGx5IGNsYWltIHRoZSB0b2tlbiB1c2luZyBhbiBleGNsdXNpdmUtY3JlYXRlIGNvbnN0cmFpbnQgZmlsZS5cbiAgICAgICAgLy8gVGhpcyBhdm9pZHMgdGhlIFRPQ1RPVSByYWNlIG9mIHRoZSBwcmV2aW91cyByZWFkLWFsbC10aGVuLWNoZWNrIGFwcHJvYWNoLlxuICAgICAgICBjb25zdCBjb25zdHJhaW50UGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBiYXNlZGlyLFxuICAgICAgICAgICdob29rcycsXG4gICAgICAgICAgJ3Rva2VucycsXG4gICAgICAgICAgYCR7aGFzaFRva2VuKGhvb2tEYXRhLnRva2VuKX0uanNvbmBcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdG9rZW5DbGFpbWVkID0gYXdhaXQgd3JpdGVFeGNsdXNpdmUoXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdG9rZW46IGhvb2tEYXRhLnRva2VuLFxuICAgICAgICAgICAgaG9va0lkOiBkYXRhLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgICBydW5JZDogZWZmZWN0aXZlUnVuSWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRva2VuQ2xhaW1lZCkge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2xhaW0gPSBhd2FpdCByZWFkSG9va1Rva2VuQ2xhaW0oY29uc3RyYWludFBhdGgpO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIGhvb2tfY29uZmxpY3QgZXZlbnQgaW5zdGVhZCBvZiBob29rX2NyZWF0ZWRcbiAgICAgICAgICAvLyBUaGlzIGFsbG93cyB0aGUgd29ya2Zsb3cgdG8gY29udGludWUgYW5kIGZhaWwgZ3JhY2VmdWxseSB3aGVuIHRoZSBob29rIGlzIGF3YWl0ZWRcbiAgICAgICAgICBjb25zdCBjb25mbGljdEV2ZW50OiBFdmVudCA9IHtcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ2hvb2tfY29uZmxpY3QnLFxuICAgICAgICAgICAgY29ycmVsYXRpb25JZDogZGF0YS5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgICAgZXZlbnREYXRhOiB7XG4gICAgICAgICAgICAgIHRva2VuOiBob29rRGF0YS50b2tlbixcbiAgICAgICAgICAgICAgLi4uKGV4aXN0aW5nQ2xhaW1cbiAgICAgICAgICAgICAgICA/IHsgY29uZmxpY3RpbmdSdW5JZDogZXhpc3RpbmdDbGFpbS5ydW5JZCB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgICAgZXZlbnRJZCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICAgICAgc3BlY1ZlcnNpb246IGVmZmVjdGl2ZVNwZWNWZXJzaW9uLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBTdG9yZSB0aGUgY29uZmxpY3QgZXZlbnRcbiAgICAgICAgICBjb25zdCBjb21wb3NpdGVLZXkgPSBgJHtlZmZlY3RpdmVSdW5JZH0tJHtldmVudElkfWA7XG4gICAgICAgICAgYXdhaXQgd3JpdGVKU09OKFxuICAgICAgICAgICAgdGFnZ2VkUGF0aChiYXNlZGlyLCAnZXZlbnRzJywgY29tcG9zaXRlS2V5LCB0YWcpLFxuICAgICAgICAgICAgY29uZmxpY3RFdmVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCByZXNvbHZlRGF0YSA9XG4gICAgICAgICAgICBwYXJhbXM/LnJlc29sdmVEYXRhID8/IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZEV2ZW50ID0gc3RyaXBFdmVudERhdGFSZWZzKGNvbmZsaWN0RXZlbnQsIHJlc29sdmVEYXRhKTtcblxuICAgICAgICAgIC8vIFJldHVybiBFdmVudFJlc3VsdCB3aXRoIGNvbmZsaWN0IGV2ZW50IChubyBob29rIGVudGl0eSBjcmVhdGVkKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBldmVudDogZmlsdGVyZWRFdmVudCxcbiAgICAgICAgICAgIHJ1bixcbiAgICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgICBob29rOiB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhvb2sgPSB7XG4gICAgICAgICAgcnVuSWQ6IGVmZmVjdGl2ZVJ1bklkLFxuICAgICAgICAgIGhvb2tJZDogZGF0YS5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgIHRva2VuOiBob29rRGF0YS50b2tlbixcbiAgICAgICAgICBtZXRhZGF0YTogaG9va0RhdGEubWV0YWRhdGEsXG4gICAgICAgICAgb3duZXJJZDogJ2xvY2FsLW93bmVyJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6ICdsb2NhbC1wcm9qZWN0JyxcbiAgICAgICAgICBlbnZpcm9ubWVudDogJ2xvY2FsJyxcbiAgICAgICAgICBjcmVhdGVkQXQ6IG5vdyxcbiAgICAgICAgICAvLyBQcm9wYWdhdGUgc3BlY1ZlcnNpb24gZnJvbSB0aGUgZXZlbnQgdG8gdGhlIGhvb2sgZW50aXR5XG4gICAgICAgICAgc3BlY1ZlcnNpb246IGVmZmVjdGl2ZVNwZWNWZXJzaW9uLFxuICAgICAgICAgIGlzV2ViaG9vazogaG9va0RhdGEuaXNXZWJob29rID8/IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB3cml0ZUpTT04oXG4gICAgICAgICAgdGFnZ2VkUGF0aChiYXNlZGlyLCAnaG9va3MnLCBkYXRhLmNvcnJlbGF0aW9uSWQsIHRhZyksXG4gICAgICAgICAgaG9va1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnKSB7XG4gICAgICAgIC8vIGhvb2tfZGlzcG9zZWQ6IERlbGV0ZXMgaG9vayBlbnRpdHksIHJlamVjdHMgZHVwbGljYXRlcy5cbiAgICAgICAgLy8gVXNlcyB3cml0ZUV4Y2x1c2l2ZSBvbiBhIGxvY2sgZmlsZSB0byBhdG9taWNhbGx5IHByZXZlbnQgY29uY3VycmVudFxuICAgICAgICAvLyBpbnZvY2F0aW9ucyBmcm9tIGJvdGggZGlzcG9zaW5nIHRoZSBzYW1lIGhvb2sgKFRPQ1RPVSByYWNlKS5cbiAgICAgICAgY29uc3QgaG9va0xvY2tOYW1lID0gdGFnXG4gICAgICAgICAgPyBgJHtkYXRhLmNvcnJlbGF0aW9uSWR9LmRpc3Bvc2VkLiR7dGFnfWBcbiAgICAgICAgICA6IGAke2RhdGEuY29ycmVsYXRpb25JZH0uZGlzcG9zZWRgO1xuICAgICAgICBjb25zdCBsb2NrUGF0aCA9IHJlc29sdmVXaXRoaW5CYXNlKFxuICAgICAgICAgIGJhc2VkaXIsXG4gICAgICAgICAgJy5sb2NrcycsXG4gICAgICAgICAgJ2hvb2tzJyxcbiAgICAgICAgICBob29rTG9ja05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2xhaW1lZCA9IGF3YWl0IHdyaXRlRXhjbHVzaXZlKGxvY2tQYXRoLCAnJyk7XG4gICAgICAgIGlmICghY2xhaW1lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFbnRpdHlDb25mbGljdEVycm9yKFxuICAgICAgICAgICAgYEhvb2sgXCIke2RhdGEuY29ycmVsYXRpb25JZH1cIiBhbHJlYWR5IGRpc3Bvc2VkYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVhZCB0aGUgaG9vayB0byBnZXQgaXRzIHRva2VuIGJlZm9yZSBkZWxldGluZ1xuICAgICAgICBjb25zdCBob29rUGF0aCA9IHRhZ2dlZFBhdGgoYmFzZWRpciwgJ2hvb2tzJywgZGF0YS5jb3JyZWxhdGlvbklkLCB0YWcpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0hvb2sgPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICAgICAgICBiYXNlZGlyLFxuICAgICAgICAgICdob29rcycsXG4gICAgICAgICAgZGF0YS5jb3JyZWxhdGlvbklkLFxuICAgICAgICAgIEhvb2tTY2hlbWEsXG4gICAgICAgICAgdGFnXG4gICAgICAgICk7XG4gICAgICAgIGlmIChleGlzdGluZ0hvb2spIHtcbiAgICAgICAgICAvLyBEZWxldGUgdGhlIHRva2VuIGNvbnN0cmFpbnQgZmlsZSB0byBmcmVlIHVwIHRoZSB0b2tlbiBmb3IgcmV1c2VcbiAgICAgICAgICBjb25zdCBkaXNwb3NlZENvbnN0cmFpbnRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAgICdob29rcycsXG4gICAgICAgICAgICAndG9rZW5zJyxcbiAgICAgICAgICAgIGAke2hhc2hUb2tlbihleGlzdGluZ0hvb2sudG9rZW4pfS5qc29uYFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgZGVsZXRlSlNPTihkaXNwb3NlZENvbnN0cmFpbnRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBkZWxldGVKU09OKGhvb2tQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ldmVudFR5cGUgPT09ICd3YWl0X2NyZWF0ZWQnICYmICdldmVudERhdGEnIGluIGRhdGEpIHtcbiAgICAgICAgLy8gd2FpdF9jcmVhdGVkOiBDcmVhdGVzIHdhaXQgZW50aXR5IHdpdGggc3RhdHVzICd3YWl0aW5nJ1xuICAgICAgICBjb25zdCB3YWl0RGF0YSA9IGRhdGEuZXZlbnREYXRhIGFzIHtcbiAgICAgICAgICByZXN1bWVBdD86IERhdGU7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHdhaXRDb21wb3NpdGVLZXkgPSBgJHtlZmZlY3RpdmVSdW5JZH0tJHtkYXRhLmNvcnJlbGF0aW9uSWR9YDtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdXYWl0ID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAnd2FpdHMnLFxuICAgICAgICAgIHdhaXRDb21wb3NpdGVLZXksXG4gICAgICAgICAgV2FpdFNjaGVtYSxcbiAgICAgICAgICB0YWdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nV2FpdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFbnRpdHlDb25mbGljdEVycm9yKFxuICAgICAgICAgICAgYFdhaXQgXCIke2RhdGEuY29ycmVsYXRpb25JZH1cIiBhbHJlYWR5IGV4aXN0c2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHdhaXQgPSB7XG4gICAgICAgICAgd2FpdElkOiB3YWl0Q29tcG9zaXRlS2V5LFxuICAgICAgICAgIHJ1bklkOiBlZmZlY3RpdmVSdW5JZCxcbiAgICAgICAgICBzdGF0dXM6ICd3YWl0aW5nJyxcbiAgICAgICAgICByZXN1bWVBdDogd2FpdERhdGEucmVzdW1lQXQsXG4gICAgICAgICAgY29tcGxldGVkQXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IG5vdyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgICBzcGVjVmVyc2lvbjogZWZmZWN0aXZlU3BlY1ZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHdyaXRlSlNPTihcbiAgICAgICAgICB0YWdnZWRQYXRoKGJhc2VkaXIsICd3YWl0cycsIHdhaXRDb21wb3NpdGVLZXksIHRhZyksXG4gICAgICAgICAgd2FpdFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ3dhaXRfY29tcGxldGVkJykge1xuICAgICAgICAvLyB3YWl0X2NvbXBsZXRlZDogVHJhbnNpdGlvbnMgd2FpdCB0byAnY29tcGxldGVkJywgcmVqZWN0cyBkdXBsaWNhdGVzLlxuICAgICAgICAvLyBVc2VzIHdyaXRlRXhjbHVzaXZlIG9uIGEgbG9jayBmaWxlIHRvIGF0b21pY2FsbHkgcHJldmVudCBjb25jdXJyZW50XG4gICAgICAgIC8vIGludm9jYXRpb25zIGZyb20gYm90aCBjb21wbGV0aW5nIHRoZSBzYW1lIHdhaXQgKFRPQ1RPVSByYWNlKS5cbiAgICAgICAgY29uc3Qgd2FpdENvbXBvc2l0ZUtleSA9IGAke2VmZmVjdGl2ZVJ1bklkfS0ke2RhdGEuY29ycmVsYXRpb25JZH1gO1xuICAgICAgICBjb25zdCB3YWl0TG9ja05hbWUgPSB0YWdcbiAgICAgICAgICA/IGAke3dhaXRDb21wb3NpdGVLZXl9LmNvbXBsZXRlZC4ke3RhZ31gXG4gICAgICAgICAgOiBgJHt3YWl0Q29tcG9zaXRlS2V5fS5jb21wbGV0ZWRgO1xuICAgICAgICBjb25zdCBsb2NrUGF0aCA9IHJlc29sdmVXaXRoaW5CYXNlKFxuICAgICAgICAgIGJhc2VkaXIsXG4gICAgICAgICAgJy5sb2NrcycsXG4gICAgICAgICAgJ3dhaXRzJyxcbiAgICAgICAgICB3YWl0TG9ja05hbWVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2xhaW1lZCA9IGF3YWl0IHdyaXRlRXhjbHVzaXZlKGxvY2tQYXRoLCAnJyk7XG4gICAgICAgIGlmICghY2xhaW1lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFbnRpdHlDb25mbGljdEVycm9yKFxuICAgICAgICAgICAgYFdhaXQgXCIke2RhdGEuY29ycmVsYXRpb25JZH1cIiBhbHJlYWR5IGNvbXBsZXRlZGBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nV2FpdCA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgICAgICAgIGJhc2VkaXIsXG4gICAgICAgICAgJ3dhaXRzJyxcbiAgICAgICAgICB3YWl0Q29tcG9zaXRlS2V5LFxuICAgICAgICAgIFdhaXRTY2hlbWEsXG4gICAgICAgICAgdGFnXG4gICAgICAgICk7XG4gICAgICAgIGlmICghZXhpc3RpbmdXYWl0KSB7XG4gICAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGxvY2sgZmlsZSB3ZSBqdXN0IGNsYWltZWQg4oCUIHRoZSB3YWl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICBhd2FpdCBmcy51bmxpbmsobG9ja1BhdGgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dXb3JsZEVycm9yKFxuICAgICAgICAgICAgYFdhaXQgXCIke2RhdGEuY29ycmVsYXRpb25JZH1cIiBub3QgZm91bmRgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgbG9jayBmaWxlICh3cml0ZUV4Y2x1c2l2ZSBhYm92ZSkgYWxyZWFkeSBwcmV2ZW50cyBjb25jdXJyZW50XG4gICAgICAgIC8vIGNvbXBsZXRpb25zIOKAlCBubyBhZGRpdGlvbmFsIHN0YXR1cyBjaGVjayBuZWVkZWQuXG4gICAgICAgIHdhaXQgPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmdXYWl0LFxuICAgICAgICAgIHN0YXR1czogJ2NvbXBsZXRlZCcsXG4gICAgICAgICAgY29tcGxldGVkQXQ6IG5vdyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKU09OKFxuICAgICAgICAgIHRhZ2dlZFBhdGgoYmFzZWRpciwgJ3dhaXRzJywgd2FpdENvbXBvc2l0ZUtleSwgdGFnKSxcbiAgICAgICAgICB3YWl0LFxuICAgICAgICAgIHsgb3ZlcndyaXRlOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIE5vdGU6IGhvb2tfcmVjZWl2ZWQgZXZlbnRzIGFyZSBzdG9yZWQgaW4gdGhlIGV2ZW50IGxvZyBidXQgZG9uJ3RcbiAgICAgIC8vIG1vZGlmeSB0aGUgSG9vayBlbnRpdHkgKHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHBheWxvYWQgZmllbGQpXG5cbiAgICAgIC8vIFN0b3JlIGV2ZW50IHVzaW5nIGNvbXBvc2l0ZSBrZXkge3J1bklkfS17ZXZlbnRJZH1cbiAgICAgIGNvbnN0IGNvbXBvc2l0ZUtleSA9IGAke2VmZmVjdGl2ZVJ1bklkfS0ke2V2ZW50SWR9YDtcbiAgICAgIGF3YWl0IHdyaXRlSlNPTih0YWdnZWRQYXRoKGJhc2VkaXIsICdldmVudHMnLCBjb21wb3NpdGVLZXksIHRhZyksIGV2ZW50KTtcblxuICAgICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXM/LnJlc29sdmVEYXRhID8/IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICAgIGNvbnN0IGZpbHRlcmVkRXZlbnQgPSBzdHJpcEV2ZW50RGF0YVJlZnMoZXZlbnQsIHJlc29sdmVEYXRhKTtcblxuICAgICAgLy8gRm9yIHJ1bl9zdGFydGVkOiBpbmNsdWRlIGFsbCBldmVudHMgc28gdGhlIHJ1bnRpbWUgY2FuIHNraXBcbiAgICAgIC8vIHRoZSBpbml0aWFsIGV2ZW50cy5saXN0IGNhbGwgYW5kIHJlZHVjZSBUVEZCLlxuICAgICAgbGV0IGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBjdXJzb3I6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgaGFzTW9yZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PT0gJ3J1bl9zdGFydGVkJyAmJiBydW4pIHtcbiAgICAgICAgY29uc3QgYWxsRXZlbnRzID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgICAgICBkaXJlY3Rvcnk6IHBhdGguam9pbihiYXNlZGlyLCAnZXZlbnRzJyksXG4gICAgICAgICAgc2NoZW1hOiBFdmVudFNjaGVtYSxcbiAgICAgICAgICBmaWxlUHJlZml4OiBgJHtlZmZlY3RpdmVSdW5JZH0tYCxcbiAgICAgICAgICBzb3J0T3JkZXI6ICdhc2MnLFxuICAgICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICAgIGdldENyZWF0ZWRBdDogZ2V0T2JqZWN0Q3JlYXRlZEF0KCdldm50JyksXG4gICAgICAgICAgZ2V0SWQ6IChlKSA9PiBlLmV2ZW50SWQsXG4gICAgICAgIH0pO1xuICAgICAgICBldmVudHMgPSBhbGxFdmVudHMuZGF0YTtcbiAgICAgICAgY3Vyc29yID0gYWxsRXZlbnRzLmN1cnNvcjtcbiAgICAgICAgaGFzTW9yZSA9IGFsbEV2ZW50cy5oYXNNb3JlO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm4gRXZlbnRSZXN1bHQgd2l0aCBldmVudCBhbmQgYW55IGNyZWF0ZWQvdXBkYXRlZCBlbnRpdHlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV2ZW50OiBmaWx0ZXJlZEV2ZW50LFxuICAgICAgICBydW4sXG4gICAgICAgIHN0ZXAsXG4gICAgICAgIGhvb2ssXG4gICAgICAgIHdhaXQsXG4gICAgICAgIGV2ZW50cyxcbiAgICAgICAgY3Vyc29yLFxuICAgICAgICBoYXNNb3JlLFxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZ2V0KHJ1bklkLCBldmVudElkLCBwYXJhbXMpIHtcbiAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgncnVuSWQnLCBydW5JZCk7XG4gICAgICBhc3NlcnRTYWZlRW50aXR5SWQoJ2V2ZW50SWQnLCBldmVudElkKTtcbiAgICAgIGNvbnN0IGNvbXBvc2l0ZUtleSA9IGAke3J1bklkfS0ke2V2ZW50SWR9YDtcbiAgICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICAgIGJhc2VkaXIsXG4gICAgICAgICdldmVudHMnLFxuICAgICAgICBjb21wb3NpdGVLZXksXG4gICAgICAgIEV2ZW50U2NoZW1hLFxuICAgICAgICB0YWdcbiAgICAgICk7XG4gICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXZlbnQgJHtldmVudElkfSBpbiBydW4gJHtydW5JZH0gbm90IGZvdW5kYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgcmV0dXJuIHN0cmlwRXZlbnREYXRhUmVmcyhldmVudCwgcmVzb2x2ZURhdGEpO1xuICAgIH0sXG5cbiAgICBhc3luYyBsaXN0KHBhcmFtcykge1xuICAgICAgY29uc3QgeyBydW5JZCB9ID0gcGFyYW1zO1xuICAgICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdydW5JZCcsIHJ1bklkKTtcbiAgICAgIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zLnJlc29sdmVEYXRhID8/IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTjtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSh7XG4gICAgICAgIGRpcmVjdG9yeTogcGF0aC5qb2luKGJhc2VkaXIsICdldmVudHMnKSxcbiAgICAgICAgc2NoZW1hOiBFdmVudFNjaGVtYSxcbiAgICAgICAgZmlsZVByZWZpeDogYCR7cnVuSWR9LWAsXG4gICAgICAgIC8vIEV2ZW50cyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIChvbGRlc3QgZmlyc3QpIGJ5IGRlZmF1bHQsXG4gICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IGZvciBvdGhlciBsaXN0IGNhbGxzLlxuICAgICAgICBzb3J0T3JkZXI6IHBhcmFtcy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2FzYycsXG4gICAgICAgIGxpbWl0OiBwYXJhbXMucGFnaW5hdGlvbj8ubGltaXQsXG4gICAgICAgIGN1cnNvcjogcGFyYW1zLnBhZ2luYXRpb24/LmN1cnNvcixcbiAgICAgICAgZ2V0Q3JlYXRlZEF0OiBnZXRPYmplY3RDcmVhdGVkQXQoJ2V2bnQnKSxcbiAgICAgICAgZ2V0SWQ6IChldmVudCkgPT4gZXZlbnQuZXZlbnRJZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiByZXNvbHZlRGF0YSBpcyBcIm5vbmVcIiwgcmVtb3ZlIGV2ZW50RGF0YSBmcm9tIGV2ZW50c1xuICAgICAgaWYgKHJlc29sdmVEYXRhID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgZGF0YTogcmVzdWx0LmRhdGEubWFwKChldmVudCkgPT5cbiAgICAgICAgICAgIHN0cmlwRXZlbnREYXRhUmVmcyhldmVudCwgcmVzb2x2ZURhdGEpXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuXG4gICAgYXN5bmMgbGlzdEJ5Q29ycmVsYXRpb25JZChwYXJhbXMpIHtcbiAgICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBwYXJhbXMuY29ycmVsYXRpb25JZDtcbiAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnY29ycmVsYXRpb25JZCcsIGNvcnJlbGF0aW9uSWQpO1xuICAgICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXMucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgICAgZGlyZWN0b3J5OiBwYXRoLmpvaW4oYmFzZWRpciwgJ2V2ZW50cycpLFxuICAgICAgICBzY2hlbWE6IEV2ZW50U2NoZW1hLFxuICAgICAgICAvLyBObyBmaWxlUHJlZml4IC0gc2VhcmNoIGFsbCBldmVudHNcbiAgICAgICAgZmlsdGVyOiAoZXZlbnQpID0+IGV2ZW50LmNvcnJlbGF0aW9uSWQgPT09IGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIC8vIEV2ZW50cyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIChvbGRlc3QgZmlyc3QpIGJ5IGRlZmF1bHQsXG4gICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IGZvciBvdGhlciBsaXN0IGNhbGxzLlxuICAgICAgICBzb3J0T3JkZXI6IHBhcmFtcy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2FzYycsXG4gICAgICAgIGxpbWl0OiBwYXJhbXMucGFnaW5hdGlvbj8ubGltaXQsXG4gICAgICAgIGN1cnNvcjogcGFyYW1zLnBhZ2luYXRpb24/LmN1cnNvcixcbiAgICAgICAgZ2V0Q3JlYXRlZEF0OiBnZXRPYmplY3RDcmVhdGVkQXQoJ2V2bnQnKSxcbiAgICAgICAgZ2V0SWQ6IChldmVudCkgPT4gZXZlbnQuZXZlbnRJZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiByZXNvbHZlRGF0YSBpcyBcIm5vbmVcIiwgcmVtb3ZlIGV2ZW50RGF0YSBmcm9tIGV2ZW50c1xuICAgICAgaWYgKHJlc29sdmVEYXRhID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgZGF0YTogcmVzdWx0LmRhdGEubWFwKChldmVudCkgPT5cbiAgICAgICAgICAgIHN0cmlwRXZlbnREYXRhUmVmcyhldmVudCwgcmVzb2x2ZURhdGEpXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICB9O1xufVxuIl19
|
package/dist/storage/filters.js
CHANGED
|
@@ -30,4 +30,4 @@ export function filterHookData(hook, resolveData) {
|
|
|
30
30
|
}
|
|
31
31
|
return hook;
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2ZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFrQnJELE1BQU0sVUFBVSxhQUFhLENBQzNCLEdBQWdCLEVBQ2hCLFdBQTJCO0lBRTNCLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE9BQU87WUFDTCxHQUFHLEdBQUc7WUFDTixLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsU0FBUztTQUNRLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWVELE1BQU0sVUFBVSxjQUFjLENBQzVCLElBQVUsRUFDVixXQUEyQjtJQUUzQixJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMzQixPQUFPO1lBQ0wsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLFNBQVM7U0FDQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVUsRUFBRSxXQUEyQjtJQUNwRSxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLElBQVcsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEhvb2ssXG4gIFN0ZXAsXG4gIFN0ZXBXaXRob3V0RGF0YSxcbiAgV29ya2Zsb3dSdW4sXG4gIFdvcmtmbG93UnVuV2l0aG91dERhdGEsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbmV4cG9ydCB7IHN0cmlwRXZlbnREYXRhUmVmcyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogRmlsdGVyIHJ1biBkYXRhIGJhc2VkIG9uIHJlc29sdmVEYXRhIHNldHRpbmcuXG4gKiBXaGVuIHJlc29sdmVEYXRhIGlzICdub25lJywgc3RyaXBzIGlucHV0L291dHB1dCB0byByZWR1Y2UgcGF5bG9hZCBzaXplLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVuRGF0YShcbiAgcnVuOiBXb3JrZmxvd1J1bixcbiAgcmVzb2x2ZURhdGE6ICdub25lJ1xuKTogV29ya2Zsb3dSdW5XaXRob3V0RGF0YTtcbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdW5EYXRhKFxuICBydW46IFdvcmtmbG93UnVuLFxuICByZXNvbHZlRGF0YTogJ2FsbCdcbik6IFdvcmtmbG93UnVuO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bkRhdGEoXG4gIHJ1bjogV29ya2Zsb3dSdW4sXG4gIHJlc29sdmVEYXRhOiAnbm9uZScgfCAnYWxsJ1xuKTogV29ya2Zsb3dSdW4gfCBXb3JrZmxvd1J1bldpdGhvdXREYXRhO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bkRhdGEoXG4gIHJ1bjogV29ya2Zsb3dSdW4sXG4gIHJlc29sdmVEYXRhOiAnbm9uZScgfCAnYWxsJ1xuKTogV29ya2Zsb3dSdW4gfCBXb3JrZmxvd1J1bldpdGhvdXREYXRhIHtcbiAgaWYgKHJlc29sdmVEYXRhID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucnVuLFxuICAgICAgaW5wdXQ6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgIH0gYXMgV29ya2Zsb3dSdW5XaXRob3V0RGF0YTtcbiAgfVxuICByZXR1cm4gcnVuO1xufVxuXG4vKipcbiAqIEZpbHRlciBzdGVwIGRhdGEgYmFzZWQgb24gcmVzb2x2ZURhdGEgc2V0dGluZy5cbiAqIFdoZW4gcmVzb2x2ZURhdGEgaXMgJ25vbmUnLCBzdHJpcHMgaW5wdXQvb3V0cHV0IHRvIHJlZHVjZSBwYXlsb2FkIHNpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJTdGVwRGF0YShcbiAgc3RlcDogU3RlcCxcbiAgcmVzb2x2ZURhdGE6ICdub25lJ1xuKTogU3RlcFdpdGhvdXREYXRhO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclN0ZXBEYXRhKHN0ZXA6IFN0ZXAsIHJlc29sdmVEYXRhOiAnYWxsJyk6IFN0ZXA7XG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU3RlcERhdGEoXG4gIHN0ZXA6IFN0ZXAsXG4gIHJlc29sdmVEYXRhOiAnbm9uZScgfCAnYWxsJ1xuKTogU3RlcCB8IFN0ZXBXaXRob3V0RGF0YTtcbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJTdGVwRGF0YShcbiAgc3RlcDogU3RlcCxcbiAgcmVzb2x2ZURhdGE6ICdub25lJyB8ICdhbGwnXG4pOiBTdGVwIHwgU3RlcFdpdGhvdXREYXRhIHtcbiAgaWYgKHJlc29sdmVEYXRhID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RlcCxcbiAgICAgIGlucHV0OiB1bmRlZmluZWQsXG4gICAgICBvdXRwdXQ6IHVuZGVmaW5lZCxcbiAgICB9IGFzIFN0ZXBXaXRob3V0RGF0YTtcbiAgfVxuICByZXR1cm4gc3RlcDtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgaG9vayBkYXRhIGJhc2VkIG9uIHJlc29sdmVEYXRhIHNldHRpbmcuXG4gKiBXaGVuIHJlc29sdmVEYXRhIGlzICdub25lJywgc3RyaXBzIG1ldGFkYXRhIHRvIHJlZHVjZSBwYXlsb2FkIHNpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJIb29rRGF0YShob29rOiBIb29rLCByZXNvbHZlRGF0YTogJ25vbmUnIHwgJ2FsbCcpOiBIb29rIHtcbiAgaWYgKHJlc29sdmVEYXRhID09PSAnbm9uZScpIHtcbiAgICBjb25zdCB7IG1ldGFkYXRhOiBfbWV0YWRhdGEsIC4uLnJlc3QgfSA9IGhvb2sgYXMgYW55O1xuICAgIHJldHVybiByZXN0O1xuICB9XG4gIHJldHVybiBob29rO1xufVxuIl19
|
package/dist/storage/helpers.js
CHANGED
|
@@ -41,4 +41,4 @@ export const getObjectCreatedAt = (idPrefix) => (filename) => {
|
|
|
41
41
|
const ulid = id.replace(replaceRegex, '');
|
|
42
42
|
return ulidToDate(ulid);
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDckMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRW5FOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3QixDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUNyQixDQUFDLFFBQWdCLEVBQWUsRUFBRTtJQUNoQywwQ0FBMEM7SUFDMUMsbURBQW1EO0lBQ25ELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUV0RSxNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixrRkFBa0Y7UUFDbEYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLElBQUksUUFBUSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLDhFQUE4RTtRQUM5RSxxRkFBcUY7UUFDckYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IG1vbm90b25pY0ZhY3RvcnkgfSBmcm9tICd1bGlkJztcbmltcG9ydCB7IHN0cmlwVGFnLCB1bGlkVG9EYXRlIH0gZnJvbSAnLi4vZnMuanMnO1xuXG4vKipcbiAqIEhhc2ggYSBob29rIHRva2VuIHRvIHByb2R1Y2UgYSBmaWxlc3lzdGVtLXNhZmUgY29uc3RyYWludCBmaWxlbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2hUb2tlbih0b2tlbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZSh0b2tlbikuZGlnZXN0KCdoZXgnKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtb25vdG9uaWMgVUxJRCBmYWN0b3J5IHRoYXQgZW5zdXJlcyBVTElEcyBhcmUgYWx3YXlzIGluY3JlYXNpbmdcbiAqIGV2ZW4gd2hlbiBnZW5lcmF0ZWQgd2l0aGluIHRoZSBzYW1lIG1pbGxpc2Vjb25kLlxuICovXG5leHBvcnQgY29uc3QgbW9ub3RvbmljVWxpZCA9IG1vbm90b25pY0ZhY3RvcnkoKCkgPT4gTWF0aC5yYW5kb20oKSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgY3JlYXRlZEF0IGRhdGUgZnJvbSBhIGZpbGVuYW1lIGJhc2VkIG9uIFVMSUQuXG4gKiBVc2VkIGZvciBlZmZpY2llbnQgcGFnaW5hdGlvbiB3aXRob3V0IHJlYWRpbmcgZmlsZSBjb250ZW50cy5cbiAqXG4gKiBAcGFyYW0gaWRQcmVmaXggLSBUaGUgcHJlZml4IHRvIHN0cmlwIGZyb20gZmlsZW5hbWVzIChlLmcuLCAnd3J1bicsICdldm50JywgJ3N0ZXAnKVxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIERhdGUgZnJvbSBmaWxlbmFtZSwgb3IgbnVsbCBpZiBub3QgZXh0cmFjdGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9iamVjdENyZWF0ZWRBdCA9XG4gIChpZFByZWZpeDogc3RyaW5nKSA9PlxuICAoZmlsZW5hbWU6IHN0cmluZyk6IERhdGUgfCBudWxsID0+IHtcbiAgICAvLyBTdHJpcCB0YWcgc3VmZml4IGJlZm9yZSBVTElEIGV4dHJhY3Rpb25cbiAgICAvLyBlLmcuLCBcIndydW5fQUJDLnZpdGVzdC0wLmpzb25cIiDihpIgXCJ3cnVuX0FCQy5qc29uXCJcbiAgICBjb25zdCBjbGVhbk5hbWUgPSBzdHJpcFRhZyhmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKSkgKyAnLmpzb24nO1xuXG4gICAgY29uc3QgcmVwbGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7aWRQcmVmaXh9X2AsICdnJyk7XG4gICAgY29uc3QgZGFzaEluZGV4ID0gY2xlYW5OYW1lLmluZGV4T2YoJy0nKTtcblxuICAgIGlmIChkYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAvLyBObyBkYXNoIC0gZXh0cmFjdCBVTElEIGZyb20gdGhlIGZpbGVuYW1lIChlLmcuLCB3cnVuX1VMSUQuanNvbiwgZXZudF9VTElELmpzb24pXG4gICAgICBjb25zdCB1bGlkID0gY2xlYW5OYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgJycpLnJlcGxhY2UocmVwbGFjZVJlZ2V4LCAnJyk7XG4gICAgICByZXR1cm4gdWxpZFRvRGF0ZSh1bGlkKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgY29tcG9zaXRlIGtleXMgbGlrZSB7cnVuSWR9LXtzdGVwSWR9LCBleHRyYWN0IGZyb20gdGhlIGFwcHJvcHJpYXRlIHBhcnRcbiAgICBpZiAoaWRQcmVmaXggPT09ICdzdGVwJykge1xuICAgICAgLy8gU3RlcHMgdXNlIHNlcXVlbnRpYWwgSURzIChzdGVwXzAsIHN0ZXBfMSwgZXRjLikgLSBubyB0aW1lc3RhbXAgaW4gZmlsZW5hbWUuXG4gICAgICAvLyBSZXR1cm4gbnVsbCB0byBza2lwIGZpbGVuYW1lLWJhc2VkIG9wdGltaXphdGlvbiBhbmQgZGVmZXIgdG8gSlNPTi1iYXNlZCBmaWx0ZXJpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBGb3IgZXZlbnRzOiB3cnVuX1VMSUQtZXZudF9VTElELmpzb24gLSBleHRyYWN0IGZyb20gdGhlIGV2ZW50SWQgcGFydFxuICAgIGNvbnN0IGlkID0gY2xlYW5OYW1lLnN1YnN0cmluZyhkYXNoSW5kZXggKyAxKS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKTtcbiAgICBjb25zdCB1bGlkID0gaWQucmVwbGFjZShyZXBsYWNlUmVnZXgsICcnKTtcbiAgICByZXR1cm4gdWxpZFRvRGF0ZSh1bGlkKTtcbiAgfTtcbiJdfQ==
|
|
@@ -90,4 +90,4 @@ export async function deleteAllHooksForRun(basedir, runId) {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
//# sourceMappingURL=hooks-storage.js.map
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3Mtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2hvb2tzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixRQUFRLEVBQ1Isb0JBQW9CLEdBQ3JCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQWUsRUFDZixHQUFZO0lBRVosc0VBQXNFO0lBQ3RFLEtBQUssVUFBVSxlQUFlLENBQUMsS0FBYTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUss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LE9BQWUsRUFDZixLQUFhO0lBRWIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakMsd0RBQXdEO1lBQ3hELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hDLENBQUM7WUFDRixNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqQyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgSG9va05vdEZvdW5kRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHtcbiAgR2V0SG9va1BhcmFtcyxcbiAgSG9vayxcbiAgTGlzdEhvb2tzUGFyYW1zLFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbiAgU3RvcmFnZSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IEhvb2tTY2hlbWEgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7XG4gIGFzc2VydFNhZmVFbnRpdHlJZCxcbiAgZGVsZXRlSlNPTixcbiAgbGlzdEpTT05GaWxlcyxcbiAgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5LFxuICByZWFkSlNPTixcbiAgcmVhZEpTT05XaXRoRmFsbGJhY2ssXG59IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IGZpbHRlckhvb2tEYXRhIH0gZnJvbSAnLi9maWx0ZXJzLmpzJztcbmltcG9ydCB7IGhhc2hUb2tlbiB9IGZyb20gJy4vaGVscGVycy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhvb2tzIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBJbXBsZW1lbnRzIHRoZSBTdG9yYWdlWydob29rcyddIGludGVyZmFjZSB3aXRoIGhvb2sgQ1JVRCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSG9va3NTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogU3RvcmFnZVsnaG9va3MnXSB7XG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGEgaG9vayBieSB0b2tlbiAoc2hhcmVkIGJldHdlZW4gZ2V0QnlUb2tlbilcbiAgYXN5bmMgZnVuY3Rpb24gZmluZEhvb2tCeVRva2VuKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPEhvb2sgfCBudWxsPiB7XG4gICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKGhvb2tzRGlyKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgY29uc3QgaG9va1BhdGggPSBwYXRoLmpvaW4oaG9va3NEaXIsIGAke2ZpbGV9Lmpzb25gKTtcbiAgICAgIGNvbnN0IGhvb2sgPSBhd2FpdCByZWFkSlNPTihob29rUGF0aCwgSG9va1NjaGVtYSk7XG4gICAgICBpZiAoaG9vayAmJiBob29rLnRva2VuID09PSB0b2tlbikge1xuICAgICAgICByZXR1cm4geyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldChob29rSWQ6IHN0cmluZywgcGFyYW1zPzogR2V0SG9va1BhcmFtcyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnaG9va0lkJywgaG9va0lkKTtcbiAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICBiYXNlZGlyLFxuICAgICAgJ2hvb2tzJyxcbiAgICAgIGhvb2tJZCxcbiAgICAgIEhvb2tTY2hlbWEsXG4gICAgICB0YWdcbiAgICApO1xuICAgIGlmICghaG9vaykge1xuICAgICAgdGhyb3cgbmV3IEhvb2tOb3RGb3VuZEVycm9yKGhvb2tJZCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zPy5yZXNvbHZlRGF0YSB8fCBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG4gICAgcmV0dXJuIGZpbHRlckhvb2tEYXRhKFxuICAgICAgeyAuLi5ob29rLCBpc1dlYmhvb2s6IGhvb2suaXNXZWJob29rID8/IHRydWUgfSxcbiAgICAgIHJlc29sdmVEYXRhXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldEJ5VG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8SG9vaz4ge1xuICAgIGNvbnN0IGhvb2sgPSBhd2FpdCBmaW5kSG9va0J5VG9rZW4odG9rZW4pO1xuICAgIGlmICghaG9vaykge1xuICAgICAgdGhyb3cgbmV3IEhvb2tOb3RGb3VuZEVycm9yKHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvb2s7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBsaXN0KFxuICAgIHBhcmFtczogTGlzdEhvb2tzUGFyYW1zXG4gICk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9vaz4+IHtcbiAgICBjb25zdCBob29rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnaG9va3MnKTtcbiAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcy5yZXNvbHZlRGF0YSB8fCBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdpbmF0ZWRGaWxlU3lzdGVtUXVlcnkoe1xuICAgICAgZGlyZWN0b3J5OiBob29rc0RpcixcbiAgICAgIHNjaGVtYTogSG9va1NjaGVtYSxcbiAgICAgIHNvcnRPcmRlcjogcGFyYW1zLnBhZ2luYXRpb24/LnNvcnRPcmRlciA/PyAnYXNjJyxcbiAgICAgIGxpbWl0OiBwYXJhbXMucGFnaW5hdGlvbj8ubGltaXQsXG4gICAgICBjdXJzb3I6IHBhcmFtcy5wYWdpbmF0aW9uPy5jdXJzb3IsXG4gICAgICBmaWxlUHJlZml4OiB1bmRlZmluZWQsIC8vIEhvb2tzIGRvbid0IGhhdmUgVUxJRHMsIHNvIHdlIGNhbid0IG9wdGltaXplIGJ5IGZpbGVuYW1lXG4gICAgICBmaWx0ZXI6IChob29rKSA9PiB7XG4gICAgICAgIC8vIEZpbHRlciBieSBydW5JZCBpZiBwcm92aWRlZFxuICAgICAgICBpZiAocGFyYW1zLnJ1bklkICYmIGhvb2sucnVuSWQgIT09IHBhcmFtcy5ydW5JZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRDcmVhdGVkQXQ6ICgpID0+IHtcbiAgICAgICAgLy8gSG9vayBmaWxlcyBkb24ndCBoYXZlIFVMSUQgdGltZXN0YW1wcyBpbiBmaWxlbmFtZSwgc28gcmV0dXJuIG51bGxcbiAgICAgICAgLy8gdG8gc2tpcCB0aGUgZmlsZW5hbWUtYmFzZWQgb3B0aW1pemF0aW9uIGFuZCBkZWZlciB0byBKU09OLWJhc2VkXG4gICAgICAgIC8vIGN1cnNvciBmaWx0ZXJpbmcgd2hpY2ggdXNlcyB0aGUgYWN0dWFsIGNyZWF0ZWRBdCBmcm9tIHRoZSBmaWxlLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgICBnZXRJZDogKGhvb2spID0+IGhvb2suaG9va0lkLFxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBkYXRhIGFmdGVyIHBhZ2luYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzdWx0LFxuICAgICAgZGF0YTogcmVzdWx0LmRhdGEubWFwKChob29rKSA9PiBmaWx0ZXJIb29rRGF0YShob29rLCByZXNvbHZlRGF0YSkpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBnZXQsIGdldEJ5VG9rZW4sIGxpc3QgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGVsZXRlIGFsbCBob29rcyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrZmxvdyBydW4uXG4gKiBDYWxsZWQgd2hlbiBhIHJ1biByZWFjaGVzIGEgdGVybWluYWwgc3RhdGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVBbGxIb29rc0ZvclJ1bihcbiAgYmFzZWRpcjogc3RyaW5nLFxuICBydW5JZDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgbGlzdEpTT05GaWxlcyhob29rc0Rpcik7XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgaG9va1BhdGggPSBwYXRoLmpvaW4oaG9va3NEaXIsIGAke2ZpbGV9Lmpzb25gKTtcbiAgICBjb25zdCBob29rID0gYXdhaXQgcmVhZEpTT04oaG9va1BhdGgsIEhvb2tTY2hlbWEpO1xuICAgIGlmIChob29rICYmIGhvb2sucnVuSWQgPT09IHJ1bklkKSB7XG4gICAgICAvLyBEZWxldGUgdGhlIHRva2VuIGNvbnN0cmFpbnQgZmlsZSB0byBmcmVlIHVwIHRoZSB0b2tlblxuICAgICAgY29uc3QgY29uc3RyYWludFBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGhvb2tzRGlyLFxuICAgICAgICAndG9rZW5zJyxcbiAgICAgICAgYCR7aGFzaFRva2VuKGhvb2sudG9rZW4pfS5qc29uYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IGRlbGV0ZUpTT04oY29uc3RyYWludFBhdGgpO1xuICAgICAgYXdhaXQgZGVsZXRlSlNPTihob29rUGF0aCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/dist/storage/index.js
CHANGED
|
@@ -27,4 +27,4 @@ export function createStorage(basedir, tag) {
|
|
|
27
27
|
hooks: instrumentObject('world.hooks', hooks),
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTeEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWUsRUFBRSxHQUFZO0lBQ3pELHFDQUFxQztJQUNyQyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFL0MsOENBQThDO0lBQzlDLCtEQUErRDtJQUMvRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDMUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7UUFDaEQsS0FBSyxFQUFFLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7S0FDOUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JhZ2UgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgaW5zdHJ1bWVudE9iamVjdCB9IGZyb20gJy4uL2luc3RydW1lbnRPYmplY3QuanMnO1xuaW1wb3J0IHsgY3JlYXRlRXZlbnRzU3RvcmFnZSB9IGZyb20gJy4vZXZlbnRzLXN0b3JhZ2UuanMnO1xuaW1wb3J0IHsgY3JlYXRlSG9va3NTdG9yYWdlIH0gZnJvbSAnLi9ob29rcy1zdG9yYWdlLmpzJztcbmltcG9ydCB7IGNyZWF0ZVJ1bnNTdG9yYWdlLCB0eXBlIExvY2FsUnVuc1N0b3JhZ2UgfSBmcm9tICcuL3J1bnMtc3RvcmFnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdGVwc1N0b3JhZ2UgfSBmcm9tICcuL3N0ZXBzLXN0b3JhZ2UuanMnO1xuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcGUgdXNlZCBpbnNpZGUgd29ybGQtbG9jYWw6IGlkZW50aWNhbCB0byBgU3RvcmFnZWAsIGJ1dCBgcnVuc2BcbiAqIGV4cG9zZXMgdGhlIGludGVybmFsIGBmaWxlSWRGaWx0ZXJgIG9wdGlvbiBvbiBgbGlzdCgpYC4gU3RydWN0dXJhbGx5XG4gKiBhc3NpZ25hYmxlIHRvIGBTdG9yYWdlYCBhdCBwdWJsaWMgYm91bmRhcmllcyAoZS5nLiwgYHJlZW5xdWV1ZUFjdGl2ZVJ1bnNgKS5cbiAqL1xuZXhwb3J0IHR5cGUgTG9jYWxTdG9yYWdlID0gT21pdDxTdG9yYWdlLCAncnVucyc+ICYgeyBydW5zOiBMb2NhbFJ1bnNTdG9yYWdlIH07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IHRoYXQgY29tcG9zZXMgYWxsIHN0b3JhZ2UgaW1wbGVtZW50YXRpb25zLlxuICpcbiAqIEFsbCBzdG9yYWdlIG1ldGhvZHMgYXJlIGluc3RydW1lbnRlZCB3aXRoIHRyYWNpbmcgc3BhbnMgZm9yIG9ic2VydmFiaWxpdHkuXG4gKlxuICogQHBhcmFtIGJhc2VkaXIgLSBUaGUgYmFzZSBkaXJlY3RvcnkgZm9yIHN0b3Jpbmcgd29ya2Zsb3cgZGF0YVxuICogQHJldHVybnMgQSBjb21wbGV0ZSBTdG9yYWdlIGltcGxlbWVudGF0aW9uIHdpdGggdHJhY2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RvcmFnZShiYXNlZGlyOiBzdHJpbmcsIHRhZz86IHN0cmluZyk6IExvY2FsU3RvcmFnZSB7XG4gIC8vIENyZWF0ZSByYXcgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbnNcbiAgY29uc3QgcnVucyA9IGNyZWF0ZVJ1bnNTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG4gIGNvbnN0IHN0ZXBzID0gY3JlYXRlU3RlcHNTdG9yYWdlKGJhc2VkaXIsIHRhZyk7XG4gIGNvbnN0IGV2ZW50cyA9IGNyZWF0ZUV2ZW50c1N0b3JhZ2UoYmFzZWRpciwgdGFnKTtcbiAgY29uc3QgaG9va3MgPSBjcmVhdGVIb29rc1N0b3JhZ2UoYmFzZWRpciwgdGFnKTtcblxuICAvLyBJbnN0cnVtZW50IGFsbCBzdG9yYWdlIG1ldGhvZHMgd2l0aCB0cmFjaW5nXG4gIC8vIE5PVEU6IFNwYW4gbmFtZXMgYXJlIGxvd2VyY2FzZSBwZXIgT1RFTCBzZW1hbnRpYyBjb252ZW50aW9uc1xuICByZXR1cm4ge1xuICAgIHJ1bnM6IGluc3RydW1lbnRPYmplY3QoJ3dvcmxkLnJ1bnMnLCBydW5zKSxcbiAgICBzdGVwczogaW5zdHJ1bWVudE9iamVjdCgnd29ybGQuc3RlcHMnLCBzdGVwcyksXG4gICAgZXZlbnRzOiBpbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5ldmVudHMnLCBldmVudHMpLFxuICAgIGhvb2tzOiBpbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5ob29rcycsIGhvb2tzKSxcbiAgfTtcbn1cbiJdfQ==
|
package/dist/storage/legacy.js
CHANGED
|
@@ -74,4 +74,4 @@ export async function handleLegacyEvent(basedir, runId, data, currentRun, params
|
|
|
74
74
|
`Please upgrade 'workflow' package.`);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JhZ2UvbGVnYWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsT0FBZSxFQUNmLEtBQWEsRUFDYixJQUFTLEVBQ1QsVUFBdUIsRUFDdkIsTUFBeUM7SUFFekMseUVBQXlFO0lBQ3pFLG9FQUFvRTtJQUNwRSwwRUFBMEU7SUFDMUUsUUFBUTtJQUNSLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVuQyxNQUFNLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLDJCQUEyQixDQUFDO0lBRXZFLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQztZQUNyQiwrREFBK0Q7WUFDL0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLEdBQUcsR0FBZ0I7Z0JBQ3ZCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdkIsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZO2dCQUNyQyxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQVk7Z0JBQ3JDLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztnQkFDbkMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGdCQUFnQjtnQkFDN0MsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7Z0JBQy9CLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztnQkFDL0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO2dCQUMvQixNQUFNLEVBQUUsV0FBVztnQkFDbkIsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixXQUFXLEVBQUUsR0FBRztnQkFDaEIsU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDO1lBQ0YsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sb0JBQW9CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLDZEQUE2RDtZQUM3RCxtR0FBbUc7WUFDbkcsT0FBTztnQkFDTCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsR0FBRyxFQUFFLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFnQjthQUNwRCxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssZ0JBQWdCLENBQUM7UUFDdEIsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLGdEQUFnRDtZQUNoRCx3Q0FBd0M7WUFDeEMscUVBQXFFO1lBQ3JFLE1BQU0sT0FBTyxHQUFHLFFBQVEsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFVO2dCQUNuQixHQUFHLElBQUk7Z0JBQ1AsS0FBSztnQkFDTCxPQUFPO2dCQUNQLFNBQVMsRUFBRSxHQUFHO2dCQUNkLFdBQVcsRUFBRSxvQkFBb0I7YUFDbEMsQ0FBQztZQUNGLE1BQU0sWUFBWSxHQUFHLEdBQUcsS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUNqQyxPQUFPLEVBQ1AsUUFBUSxFQUNSLEdBQUcsWUFBWSxPQUFPLENBQ3ZCLENBQUM7WUFDRixNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxDQUFDO1FBRUQ7WUFDRSxNQUFNLElBQUksS0FBSyxDQUNiLGVBQWUsSUFBSSxDQUFDLFNBQVMsa0NBQWtDO2dCQUM3RCxpQkFBaUIsVUFBVSxDQUFDLFdBQVcsSUFBSSxXQUFXLEtBQUs7Z0JBQzNELG9DQUFvQyxDQUN2QyxDQUFDO0lBQ04sQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEV2ZW50LCBFdmVudFJlc3VsdCwgV29ya2Zsb3dSdW4gfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgU1BFQ19WRVJTSU9OX0NVUlJFTlQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7IGFzc2VydFNhZmVFbnRpdHlJZCwgcmVzb2x2ZVdpdGhpbkJhc2UsIHdyaXRlSlNPTiB9IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IGZpbHRlclJ1bkRhdGEsIHN0cmlwRXZlbnREYXRhUmVmcyB9IGZyb20gJy4vZmlsdGVycy5qcyc7XG5pbXBvcnQgeyBtb25vdG9uaWNVbGlkIH0gZnJvbSAnLi9oZWxwZXJzLmpzJztcbmltcG9ydCB7IGRlbGV0ZUFsbEhvb2tzRm9yUnVuIH0gZnJvbSAnLi9ob29rcy1zdG9yYWdlLmpzJztcblxuLyoqXG4gKiBIYW5kbGUgZXZlbnRzIGZvciBsZWdhY3kgcnVucyAocHJlLWV2ZW50LXNvdXJjaW5nLCBzcGVjVmVyc2lvbiA8IDIpLlxuICogTGVnYWN5IHJ1bnMgdXNlIGRpZmZlcmVudCBiZWhhdmlvcjpcbiAqIC0gcnVuX2NhbmNlbGxlZDogU2tpcCBldmVudCBzdG9yYWdlLCBkaXJlY3RseSB1cGRhdGUgcnVuXG4gKiAtIHdhaXRfY29tcGxldGVkOiBTdG9yZSBldmVudCBvbmx5IChubyBlbnRpdHkgbXV0YXRpb24pXG4gKiAtIGhvb2tfcmVjZWl2ZWQ6IFN0b3JlIGV2ZW50IG9ubHkgKGhvb2tzIGV4aXN0IHZpYSBvbGQgc3lzdGVtLCBubyBlbnRpdHkgbXV0YXRpb24pXG4gKiAtIE90aGVyIGV2ZW50czogVGhyb3cgZXJyb3IgKG5vdCBzdXBwb3J0ZWQgZm9yIGxlZ2FjeSBydW5zKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlTGVnYWN5RXZlbnQoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgcnVuSWQ6IHN0cmluZyxcbiAgZGF0YTogYW55LFxuICBjdXJyZW50UnVuOiBXb3JrZmxvd1J1bixcbiAgcGFyYW1zPzogeyByZXNvbHZlRGF0YT86ICdub25lJyB8ICdhbGwnIH1cbik6IFByb21pc2U8RXZlbnRSZXN1bHQ+IHtcbiAgLy8gRGVmZW5zZSBpbiBkZXB0aDogZXZlbnRzLmNyZWF0ZSBhbHJlYWR5IHZhbGlkYXRlcyBydW5JZCBiZWZvcmUgcm91dGluZ1xuICAvLyBoZXJlLCBidXQgaGFuZGxlTGVnYWN5RXZlbnQgaXMgZXhwb3J0ZWQgYW5kIGl0cyBzaWduYXR1cmUgZG9lc24ndFxuICAvLyBkb2N1bWVudCB0aGF0IGludmFyaWFudC4gVmFsaWRhdGluZyBsb2NhbGx5IGtlZXBzIHRoZSBndWFyYW50ZWUgaW4gdGhpc1xuICAvLyBmaWxlLlxuICBhc3NlcnRTYWZlRW50aXR5SWQoJ3J1bklkJywgcnVuSWQpO1xuXG4gIGNvbnN0IHJlc29sdmVEYXRhID0gcGFyYW1zPy5yZXNvbHZlRGF0YSA/PyBERUZBVUxUX1JFU09MVkVfREFUQV9PUFRJT047XG5cbiAgc3dpdGNoIChkYXRhLmV2ZW50VHlwZSkge1xuICAgIGNhc2UgJ3J1bl9jYW5jZWxsZWQnOiB7XG4gICAgICAvLyBMZWdhY3k6IFNraXAgZXZlbnQgc3RvcmFnZSwgZGlyZWN0bHkgdXBkYXRlIHJ1biB0byBjYW5jZWxsZWRcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBydW46IFdvcmtmbG93UnVuID0ge1xuICAgICAgICBydW5JZDogY3VycmVudFJ1bi5ydW5JZCxcbiAgICAgICAgZGVwbG95bWVudElkOiBjdXJyZW50UnVuLmRlcGxveW1lbnRJZCxcbiAgICAgICAgd29ya2Zsb3dOYW1lOiBjdXJyZW50UnVuLndvcmtmbG93TmFtZSxcbiAgICAgICAgc3BlY1ZlcnNpb246IGN1cnJlbnRSdW4uc3BlY1ZlcnNpb24sXG4gICAgICAgIGV4ZWN1dGlvbkNvbnRleHQ6IGN1cnJlbnRSdW4uZXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgaW5wdXQ6IGN1cnJlbnRSdW4uaW5wdXQsXG4gICAgICAgIGNyZWF0ZWRBdDogY3VycmVudFJ1bi5jcmVhdGVkQXQsXG4gICAgICAgIGV4cGlyZWRBdDogY3VycmVudFJ1bi5leHBpcmVkQXQsXG4gICAgICAgIHN0YXJ0ZWRBdDogY3VycmVudFJ1bi5zdGFydGVkQXQsXG4gICAgICAgIHN0YXR1czogJ2NhbmNlbGxlZCcsXG4gICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgICAgICBjb21wbGV0ZWRBdDogbm93LFxuICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIH07XG4gICAgICBjb25zdCBydW5QYXRoID0gcmVzb2x2ZVdpdGhpbkJhc2UoYmFzZWRpciwgJ3J1bnMnLCBgJHtydW5JZH0uanNvbmApO1xuICAgICAgYXdhaXQgd3JpdGVKU09OKHJ1blBhdGgsIHJ1biwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG4gICAgICBhd2FpdCBkZWxldGVBbGxIb29rc0ZvclJ1bihiYXNlZGlyLCBydW5JZCk7XG4gICAgICAvLyBSZXR1cm4gd2l0aG91dCBldmVudCAobGVnYWN5IGJlaGF2aW9yIHNraXBzIGV2ZW50IHN0b3JhZ2UpXG4gICAgICAvLyBUeXBlIGFzc2VydGlvbjogRXZlbnRSZXN1bHQgZXhwZWN0cyBXb3JrZmxvd1J1biwgZmlsdGVyUnVuRGF0YSBtYXkgcmV0dXJuIFdvcmtmbG93UnVuV2l0aG91dERhdGFcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV2ZW50OiB1bmRlZmluZWQsXG4gICAgICAgIHJ1bjogZmlsdGVyUnVuRGF0YShydW4sIHJlc29sdmVEYXRhKSBhcyBXb3JrZmxvd1J1bixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSAnd2FpdF9jb21wbGV0ZWQnOlxuICAgIGNhc2UgJ2hvb2tfcmVjZWl2ZWQnOiB7XG4gICAgICAvLyBMZWdhY3k6IFN0b3JlIGV2ZW50IG9ubHkgKG5vIGVudGl0eSBtdXRhdGlvbilcbiAgICAgIC8vIC0gd2FpdF9jb21wbGV0ZWQ6IGZvciByZXBsYXkgcHVycG9zZXNcbiAgICAgIC8vIC0gaG9va19yZWNlaXZlZDogaG9va3MgZXhpc3QgdmlhIG9sZCBzeXN0ZW0sIGp1c3QgcmVjb3JkIHRoZSBldmVudFxuICAgICAgY29uc3QgZXZlbnRJZCA9IGBldm50XyR7bW9ub3RvbmljVWxpZCgpfWA7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgY29uc3QgZXZlbnQ6IEV2ZW50ID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBydW5JZCxcbiAgICAgICAgZXZlbnRJZCxcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHNwZWNWZXJzaW9uOiBTUEVDX1ZFUlNJT05fQ1VSUkVOVCxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb21wb3NpdGVLZXkgPSBgJHtydW5JZH0tJHtldmVudElkfWA7XG4gICAgICBjb25zdCBldmVudFBhdGggPSByZXNvbHZlV2l0aGluQmFzZShcbiAgICAgICAgYmFzZWRpcixcbiAgICAgICAgJ2V2ZW50cycsXG4gICAgICAgIGAke2NvbXBvc2l0ZUtleX0uanNvbmBcbiAgICAgICk7XG4gICAgICBhd2FpdCB3cml0ZUpTT04oZXZlbnRQYXRoLCBldmVudCk7XG4gICAgICByZXR1cm4geyBldmVudDogc3RyaXBFdmVudERhdGFSZWZzKGV2ZW50LCByZXNvbHZlRGF0YSkgfTtcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXZlbnQgdHlwZSAnJHtkYXRhLmV2ZW50VHlwZX0nIG5vdCBzdXBwb3J0ZWQgZm9yIGxlZ2FjeSBydW5zIGAgK1xuICAgICAgICAgIGAoc3BlY1ZlcnNpb246ICR7Y3VycmVudFJ1bi5zcGVjVmVyc2lvbiB8fCAndW5kZWZpbmVkJ30pLiBgICtcbiAgICAgICAgICBgUGxlYXNlIHVwZ3JhZGUgJ3dvcmtmbG93JyBwYWNrYWdlLmBcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -58,4 +58,4 @@ export function createRunsStorage(basedir, tag) {
|
|
|
58
58
|
}),
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVucy1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JhZ2UvcnVucy1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVE1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsb0JBQW9CLEdBQ3JCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBMkJsRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUFlLEVBQ2YsR0FBWTtJQUVaLE9BQU87UUFDTCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBVSxFQUFFLE1BQVksRUFBRSxFQUFFO1lBQ3ZDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoQyxNQUFNLEdBQUcsR0FBRyxNQUFNLG9CQUFvQixDQUNwQyxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsR0FBRyxDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxJQUFJLDJCQUEyQixDQUFDO1lBQ3ZFLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQTJCO1FBRTVCLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFvQyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsSUFBSSwyQkFBMkIsQ0FBQztZQUN2RSxNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDO2dCQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2dCQUNyQyxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVk7Z0JBQ2xDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNkLElBQ0UsTUFBTSxFQUFFLFlBQVk7d0JBQ3BCLEdBQUcsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLFlBQVksRUFDeEMsQ0FBQzt3QkFDRCxPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO29CQUNELElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDbkQsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztvQkFDRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsSUFBSSxNQUFNO2dCQUNsRCxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLO2dCQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNO2dCQUNsQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLO2FBQzFCLENBQUMsQ0FBQztZQUVILGdFQUFnRTtZQUNoRSxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsT0FBTztvQkFDTCxHQUFHLE1BQU07b0JBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QixHQUFHLEdBQUc7d0JBQ04sS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLE1BQU0sRUFBRSxTQUFTO3FCQUNsQixDQUFDLENBQTZCO2lCQUNoQyxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBNkI7S0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgV29ya2Zsb3dSdW5Ob3RGb3VuZEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIExpc3RXb3JrZmxvd1J1bnNQYXJhbXMsXG4gIFBhZ2luYXRlZFJlc3BvbnNlLFxuICBTdG9yYWdlLFxuICBXb3JrZmxvd1J1bixcbiAgV29ya2Zsb3dSdW5XaXRob3V0RGF0YSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IFdvcmtmbG93UnVuU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiB9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRTYWZlRW50aXR5SWQsXG4gIHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSxcbiAgcmVhZEpTT05XaXRoRmFsbGJhY2ssXG59IGZyb20gJy4uL2ZzLmpzJztcbmltcG9ydCB7IGZpbHRlclJ1bkRhdGEgfSBmcm9tICcuL2ZpbHRlcnMuanMnO1xuaW1wb3J0IHsgZ2V0T2JqZWN0Q3JlYXRlZEF0IH0gZnJvbSAnLi9oZWxwZXJzLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBleHRlbnNpb24gb2YgYExpc3RXb3JrZmxvd1J1bnNQYXJhbXNgIHRoYXQgYWRkcyBhIGBmaWxlSWRGaWx0ZXJgXG4gKiBmb3Igc2NvcGluZyBxdWVyaWVzIGJ5IHJhdyBmaWxlbmFtZSAoZS5nLiwgYnkgdGFnIHN1ZmZpeCkuIEtlcHQgb3V0IG9mIHRoZVxuICogcHVibGljIGBTdG9yYWdlWydydW5zJ11bJ2xpc3QnXWAgc3VyZmFjZSDigJQgY29uc3VtZXJzIG9mIGBAd29ya2Zsb3cvd29ybGRgXG4gKiBtdXN0IG5vdCBzZWUgdGhpcyBvcHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxMaXN0V29ya2Zsb3dSdW5zUGFyYW1zIGV4dGVuZHMgTGlzdFdvcmtmbG93UnVuc1BhcmFtcyB7XG4gIGZpbGVJZEZpbHRlcj86IChmaWxlSWQ6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFJ1bnNTdG9yYWdlIHtcbiAgZ2V0OiBTdG9yYWdlWydydW5zJ11bJ2dldCddO1xuICBsaXN0OiB7XG4gICAgKFxuICAgICAgcGFyYW1zOiBMb2NhbExpc3RXb3JrZmxvd1J1bnNQYXJhbXMgJiB7IHJlc29sdmVEYXRhOiAnbm9uZScgfVxuICAgICk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8V29ya2Zsb3dSdW5XaXRob3V0RGF0YT4+O1xuICAgIChcbiAgICAgIHBhcmFtcz86IExvY2FsTGlzdFdvcmtmbG93UnVuc1BhcmFtcyAmIHsgcmVzb2x2ZURhdGE/OiAnYWxsJyB9XG4gICAgKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxXb3JrZmxvd1J1bj4+O1xuICAgIChcbiAgICAgIHBhcmFtcz86IExvY2FsTGlzdFdvcmtmbG93UnVuc1BhcmFtc1xuICAgICk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8V29ya2Zsb3dSdW4gfCBXb3JrZmxvd1J1bldpdGhvdXREYXRhPj47XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgcnVucyBzdG9yYWdlIGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBmaWxlc3lzdGVtLlxuICogSW1wbGVtZW50cyB0aGUgU3RvcmFnZVsncnVucyddIGludGVyZmFjZSB3aXRoIGdldCBhbmQgbGlzdCBvcGVyYXRpb25zLFxuICogcGx1cyBhbiBpbnRlcm5hbCBgZmlsZUlkRmlsdGVyYCBvbiBgbGlzdGAgZm9yIHRhZy1zY29wZWQgcmVjb3ZlcnkgcXVlcmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bnNTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogTG9jYWxSdW5zU3RvcmFnZSB7XG4gIHJldHVybiB7XG4gICAgZ2V0OiAoYXN5bmMgKGlkOiBzdHJpbmcsIHBhcmFtcz86IGFueSkgPT4ge1xuICAgICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdydW5JZCcsIGlkKTtcbiAgICAgIGNvbnN0IHJ1biA9IGF3YWl0IHJlYWRKU09OV2l0aEZhbGxiYWNrKFxuICAgICAgICBiYXNlZGlyLFxuICAgICAgICAncnVucycsXG4gICAgICAgIGlkLFxuICAgICAgICBXb3JrZmxvd1J1blNjaGVtYSxcbiAgICAgICAgdGFnXG4gICAgICApO1xuICAgICAgaWYgKCFydW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVuTm90Rm91bmRFcnJvcihpZCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgcmV0dXJuIGZpbHRlclJ1bkRhdGEocnVuLCByZXNvbHZlRGF0YSk7XG4gICAgfSkgYXMgU3RvcmFnZVsncnVucyddWydnZXQnXSxcblxuICAgIGxpc3Q6IChhc3luYyAocGFyYW1zPzogTG9jYWxMaXN0V29ya2Zsb3dSdW5zUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgICAgZGlyZWN0b3J5OiBwYXRoLmpvaW4oYmFzZWRpciwgJ3J1bnMnKSxcbiAgICAgICAgc2NoZW1hOiBXb3JrZmxvd1J1blNjaGVtYSxcbiAgICAgICAgZmlsZUlkRmlsdGVyOiBwYXJhbXM/LmZpbGVJZEZpbHRlcixcbiAgICAgICAgZmlsdGVyOiAocnVuKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyYW1zPy53b3JrZmxvd05hbWUgJiZcbiAgICAgICAgICAgIHJ1bi53b3JrZmxvd05hbWUgIT09IHBhcmFtcy53b3JrZmxvd05hbWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBhcmFtcz8uc3RhdHVzICYmIHJ1bi5zdGF0dXMgIT09IHBhcmFtcy5zdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNvcnRPcmRlcjogcGFyYW1zPy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2Rlc2MnLFxuICAgICAgICBsaW1pdDogcGFyYW1zPy5wYWdpbmF0aW9uPy5saW1pdCxcbiAgICAgICAgY3Vyc29yOiBwYXJhbXM/LnBhZ2luYXRpb24/LmN1cnNvcixcbiAgICAgICAgZ2V0Q3JlYXRlZEF0OiBnZXRPYmplY3RDcmVhdGVkQXQoJ3dydW4nKSxcbiAgICAgICAgZ2V0SWQ6IChydW4pID0+IHJ1bi5ydW5JZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiByZXNvbHZlRGF0YSBpcyBcIm5vbmVcIiwgcmVwbGFjZSBpbnB1dC9vdXRwdXQgd2l0aCB1bmRlZmluZWRcbiAgICAgIGlmIChyZXNvbHZlRGF0YSA9PT0gJ25vbmUnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLm1hcCgocnVuKSA9PiAoe1xuICAgICAgICAgICAgLi4ucnVuLFxuICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pKSBhcyBXb3JrZmxvd1J1bldpdGhvdXREYXRhW10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkgYXMgTG9jYWxSdW5zU3RvcmFnZVsnbGlzdCddLFxuICB9O1xufVxuIl19
|
|
@@ -59,4 +59,4 @@ export function createStepsStorage(basedir, tag) {
|
|
|
59
59
|
}),
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3N0ZXBzLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixRQUFRLEdBQ1QsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxPQUFlLEVBQ2YsR0FBWTtJQUVaLE9BQU87UUFDTCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBeUIsRUFBRSxNQUFjLEVBQUUsTUFBWSxFQUFFLEVBQUU7WUFDdEUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDbEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQ3JDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxNQUFNLFlBQVksQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLEdBQUcsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sb0JBQW9CLENBQ3JDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFVBQVUsRUFDVixHQUFHLENBQ0osQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsTUFBTSxXQUFXLEtBQUssWUFBWSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksMkJBQTJCLENBQUM7WUFDdkUsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBNEI7UUFFN0IsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO1lBQzNCLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSwyQkFBMkIsQ0FBQztZQUN0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDO2dCQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsVUFBVTtnQkFDbEIsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRztnQkFDOUIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLE1BQU07Z0JBQ2pELEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUs7Z0JBQy9CLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU07Z0JBQ2pDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDN0IsQ0FBQyxDQUFDO1lBRUgsZ0VBQWdFO1lBQ2hFLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsTUFBTTtvQkFDVCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQy9CLEdBQUcsSUFBSTt3QkFDUCxLQUFLLEVBQUUsU0FBUzt3QkFDaEIsTUFBTSxFQUFFLFNBQVM7cUJBQ2xCLENBQUMsQ0FBc0I7aUJBQ3pCLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUE2QjtLQUMvQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFN0ZXBXaXRob3V0RGF0YSwgU3RvcmFnZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBTdGVwU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiB9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRTYWZlRW50aXR5SWQsXG4gIGxpc3RKU09ORmlsZXMsXG4gIHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeSxcbiAgcmVhZEpTT05XaXRoRmFsbGJhY2ssXG4gIHN0cmlwVGFnLFxufSBmcm9tICcuLi9mcy5qcyc7XG5pbXBvcnQgeyBmaWx0ZXJTdGVwRGF0YSB9IGZyb20gJy4vZmlsdGVycy5qcyc7XG5pbXBvcnQgeyBnZXRPYmplY3RDcmVhdGVkQXQgfSBmcm9tICcuL2hlbHBlcnMuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHN0ZXBzIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGZpbGVzeXN0ZW0uXG4gKiBJbXBsZW1lbnRzIHRoZSBTdG9yYWdlWydzdGVwcyddIGludGVyZmFjZSB3aXRoIGdldCBhbmQgbGlzdCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RlcHNTdG9yYWdlKFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIHRhZz86IHN0cmluZ1xuKTogU3RvcmFnZVsnc3RlcHMnXSB7XG4gIHJldHVybiB7XG4gICAgZ2V0OiAoYXN5bmMgKHJ1bklkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0ZXBJZDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpID0+IHtcbiAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgnc3RlcElkJywgc3RlcElkKTtcbiAgICAgIGlmICghcnVuSWQpIHtcbiAgICAgICAgY29uc3QgZmlsZUlkcyA9IGF3YWl0IGxpc3RKU09ORmlsZXMocGF0aC5qb2luKGJhc2VkaXIsICdzdGVwcycpKTtcbiAgICAgICAgY29uc3QgZmlsZUlkID0gZmlsZUlkcy5maW5kKChmaWQpID0+XG4gICAgICAgICAgc3RyaXBUYWcoZmlkKS5lbmRzV2l0aChgLSR7c3RlcElkfWApXG4gICAgICAgICk7XG4gICAgICAgIGlmICghZmlsZUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGVwICR7c3RlcElkfSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgICAgICBydW5JZCA9IHN0cmlwVGFnKGZpbGVJZCkuc3BsaXQoJy0nKVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgncnVuSWQnLCBydW5JZCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21wb3NpdGVLZXkgPSBgJHtydW5JZH0tJHtzdGVwSWR9YDtcbiAgICAgIGNvbnN0IHN0ZXAgPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICAgICAgYmFzZWRpcixcbiAgICAgICAgJ3N0ZXBzJyxcbiAgICAgICAgY29tcG9zaXRlS2V5LFxuICAgICAgICBTdGVwU2NoZW1hLFxuICAgICAgICB0YWdcbiAgICAgICk7XG4gICAgICBpZiAoIXN0ZXApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGVwICR7c3RlcElkfSBpbiBydW4gJHtydW5JZH0gbm90IGZvdW5kYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlRGF0YSA9IHBhcmFtcz8ucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgcmV0dXJuIGZpbHRlclN0ZXBEYXRhKHN0ZXAsIHJlc29sdmVEYXRhKTtcbiAgICB9KSBhcyBTdG9yYWdlWydzdGVwcyddWydnZXQnXSxcblxuICAgIGxpc3Q6IChhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgncnVuSWQnLCBwYXJhbXMucnVuSWQpO1xuICAgICAgY29uc3QgcmVzb2x2ZURhdGEgPSBwYXJhbXMucmVzb2x2ZURhdGEgPz8gREVGQVVMVF9SRVNPTFZFX0RBVEFfT1BUSU9OO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5KHtcbiAgICAgICAgZGlyZWN0b3J5OiBwYXRoLmpvaW4oYmFzZWRpciwgJ3N0ZXBzJyksXG4gICAgICAgIHNjaGVtYTogU3RlcFNjaGVtYSxcbiAgICAgICAgZmlsZVByZWZpeDogYCR7cGFyYW1zLnJ1bklkfS1gLFxuICAgICAgICBzb3J0T3JkZXI6IHBhcmFtcy5wYWdpbmF0aW9uPy5zb3J0T3JkZXIgPz8gJ2Rlc2MnLFxuICAgICAgICBsaW1pdDogcGFyYW1zLnBhZ2luYXRpb24/LmxpbWl0LFxuICAgICAgICBjdXJzb3I6IHBhcmFtcy5wYWdpbmF0aW9uPy5jdXJzb3IsXG4gICAgICAgIGdldENyZWF0ZWRBdDogZ2V0T2JqZWN0Q3JlYXRlZEF0KCdzdGVwJyksXG4gICAgICAgIGdldElkOiAoc3RlcCkgPT4gc3RlcC5zdGVwSWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgcmVzb2x2ZURhdGEgaXMgXCJub25lXCIsIHJlcGxhY2UgaW5wdXQvb3V0cHV0IHdpdGggdW5kZWZpbmVkXG4gICAgICBpZiAocmVzb2x2ZURhdGEgPT09ICdub25lJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICBkYXRhOiByZXN1bHQuZGF0YS5tYXAoKHN0ZXApID0+ICh7XG4gICAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG91dHB1dDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pKSBhcyBTdGVwV2l0aG91dERhdGFbXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSBhcyBTdG9yYWdlWydzdGVwcyddWydsaXN0J10sXG4gIH07XG59XG4iXX0=
|
package/dist/storage.js
CHANGED
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
*/
|
|
9
9
|
// Re-export from the modular storage implementation
|
|
10
10
|
export { createStorage } from './storage/index.js';
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxvREFBb0Q7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaWxlc3lzdGVtLWJhc2VkIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24gZm9yIHdvcmtmbG93IGRhdGEuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjb21wbGV0ZSBTdG9yYWdlIGltcGxlbWVudGF0aW9uIHRoYXQgcGVyc2lzdHNcbiAqIHdvcmtmbG93IHJ1bnMsIHN0ZXBzLCBldmVudHMsIGFuZCBob29rcyB0byB0aGUgbG9jYWwgZmlsZXN5c3RlbS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gUmUtZXhwb3J0IGZyb20gdGhlIG1vZHVsYXIgc3RvcmFnZSBpbXBsZW1lbnRhdGlvblxuZXhwb3J0IHsgY3JlYXRlU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9pbmRleC5qcyc7XG4iXX0=
|
package/dist/streamer.js
CHANGED
|
@@ -486,4 +486,4 @@ export function createStreamer(basedir, tag) {
|
|
|
486
486
|
},
|
|
487
487
|
};
|
|
488
488
|
}
|
|
489
|
-
//# sourceMappingURL=streamer.js.map
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RyZWFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFPN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUVqQiwyRUFBMkU7QUFDM0Usa0RBQWtEO0FBQ2xELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTVELDZDQUE2QztBQUM3QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0NBQzdCLENBQUMsQ0FBQztBQWNILE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVyQixTQUFTLFNBQVMsQ0FBQyxJQUF3QjtJQUN6QyxPQUFPLElBQUksS0FBSyxVQUFVLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBWTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sTUFBTSxD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Z0JBRUQsTUFBTTtvQkFDSixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxZQUFZLEVBQUUsQ0FBQzt3QkFDakIsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUM1QixZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUN0QixDQUFDO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdub2RlOmV2ZW50cyc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUge1xuICBHZXRDaHVua3NPcHRpb25zLFxuICBTdHJlYW1DaHVua3NSZXNwb25zZSxcbiAgU3RyZWFtZXIsXG4gIFN0cmVhbUluZm9SZXNwb25zZSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IG1vbm90b25pY0ZhY3RvcnkgfSBmcm9tICd1bGlkJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0U2FmZUVudGl0eUlkLFxuICByZWFkQnVmZmVyLFxuICByZWFkRmlyc3RCeXRlLFxuICByZWFkSlNPTldpdGhGYWxsYmFjayxcbiAgdGFnZ2VkUGF0aCxcbiAgd3JpdGUsXG4gIHdyaXRlSlNPTixcbn0gZnJvbSAnLi9mcy5qcyc7XG5cbi8vIENyZWF0ZSBhIG1vbm90b25pYyBVTElEIGZhY3RvcnkgdGhhdCBlbnN1cmVzIFVMSURzIGFyZSBhbHdheXMgaW5jcmVhc2luZ1xuLy8gZXZlbiB3aGVuIGdlbmVyYXRlZCB3aXRoaW4gdGhlIHNhbWUgbWlsbGlzZWNvbmRcbmNvbnN0IG1vbm90b25pY1VsaWQgPSBtb25vdG9uaWNGYWN0b3J5KCgpID0+IE1hdGgucmFuZG9tKCkpO1xuXG4vLyBTY2hlbWEgZm9yIHRoZSBydW4tdG8tc3RyZWFtcyBtYXBwaW5nIGZpbGVcbmNvbnN0IFJ1blN0cmVhbXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0cmVhbXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcblxuLyoqXG4gKiBBIGNodW5rIGNvbnNpc3RzIG9mIGEgYm9vbGVhbiBgZW9mYCBpbmRpY2F0aW5nIGlmIGl0J3MgdGhlIGxhc3QgY2h1bmssXG4gKiBhbmQgYSBgY2h1bmtgIHdoaWNoIGlzIGEgQnVmZmVyIG9mIGRhdGEuXG4gKiBUaGUgc2VyaWFsaXplZCBmb3JtYXQgaXM6XG4gKiAtIDEgYnl0ZSBmb3IgYGVvZmAgKDAgb3IgMSlcbiAqIC0gYW5kIHRoZSByZXN0IGlzIHRoZSBjaHVuayBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENodW5rIHtcbiAgZW9mOiBib29sZWFuO1xuICBjaHVuazogQnVmZmVyO1xufVxuXG5jb25zdCBFT0ZfTUFSS0VSID0gMTtcblxuZnVuY3Rpb24gaXNFb2ZCeXRlKGJ5dGU6IG51bWJlciB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gYnl0ZSA9PT0gRU9GX01BUktFUjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUNodW5rKGNodW5rOiBDaHVuaykge1xuICBjb25zdCBlb2ZCeXRlID0gQnVmZmVyLmZyb20oW2NodW5rLmVvZiA/IEVPRl9NQVJLRVIgOiAwXSk7XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtlb2ZCeXRlLCBjaHVuay5jaHVua10pO1xufVxuXG4vKiogQ2hlY2sgb25seSB0aGUgRU9GIGZsYWcgYnl0ZSB3aXRob3V0IGNvcHlpbmcgY2h1bmsgcGF5bG9hZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VvZkNodW5rKHNlcmlhbGl6ZWQ6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNFb2ZCeXRlKHNlcmlhbGl6ZWRbMF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVDaHVuayhzZXJpYWxpemVkOiBCdWZmZXIpIHtcbiAgY29uc3QgZW9mID0gaXNFb2ZDaHVuayhzZXJpYWxpemVkKTtcbiAgLy8gQ3JlYXRlIGEgY29weSBpbnN0ZWFkIG9mIGEgdmlldyB0byBwcmV2ZW50IEFycmF5QnVmZmVyIGRldGFjaG1lbnRcbiAgY29uc3QgY2h1bmsgPSBCdWZmZXIuZnJvbShzZXJpYWxpemVkLnN1YmFycmF5KDEpKTtcbiAgcmV0dXJuIHsgZW9mLCBjaHVuayB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0Q2h1bmtFbnRyaWVzKGNodW5rc0Rpcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkZGlyKGNodW5rc0Rpcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgPT09ICdFTk9FTlQnKSByZXR1cm4gW107XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmtGaWxlc0J5RXh0ZW5zaW9uKFxuICBleHRNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIGVudHJpZXM6IHN0cmluZ1tdLFxuICBzb3VyY2VFeHRlbnNpb246IHN0cmluZyxcbiAgZmlsZUV4dGVuc2lvbiA9IHNvdXJjZUV4dGVuc2lvbixcbiAgaW5jbHVkZTogKGZpbGU6IHN0cmluZykgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBpZiAoIWVudHJ5LmVuZHNXaXRoKHNvdXJjZUV4dGVuc2lvbikpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGZpbGUgPSBlbnRyeS5zbGljZSgwLCAtc291cmNlRXh0ZW5zaW9uLmxlbmd0aCk7XG4gICAgaWYgKGluY2x1ZGUoZmlsZSkpIGV4dE1hcC5zZXQoZmlsZSwgZmlsZUV4dGVuc2lvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0IGNodW5rIGZpbGVzIGZvciBhIHN0cmVhbSwgc29ydGVkIGNocm9ub2xvZ2ljYWxseSAoVUxJRCBvcmRlcikuXG4gKiBSZXR1cm5zIGJvdGggdGhlIHNvcnRlZCBmaWxlIG5hbWVzIGFuZCBhIG1hcCBvZiBmaWxlIOKGkiBleHRlbnNpb24gZm9yXG4gKiByZXNvbHZpbmcgdGhlIGZ1bGwgcGF0aC4gSGFuZGxlcyB0YWdnZWQgYW5kIGxlZ2FjeSAoLmpzb24pIGZvcm1hdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RDaHVua0ZpbGVzRm9yU3RyZWFtKFxuICBjaHVua3NEaXI6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IFByb21pc2U8eyBmaWxlczogc3RyaW5nW107IGV4dE1hcDogTWFwPHN0cmluZywgc3RyaW5nPiB9PiB7XG4gIC8vIE5hbWUgaXMgdXNlZCBhcyBhIGZpbGVuYW1lIHByZWZpeCBiZWxvdzsgdmFsaWRhdGUgaXQgY2FuJ3QgZXNjYXBlIGNodW5rc0Rpci5cbiAgYXNzZXJ0U2FmZUVudGl0eUlkKCdzdHJlYW1OYW1lJywgbmFtZSk7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBsaXN0Q2h1bmtFbnRyaWVzKGNodW5rc0Rpcik7XG4gIGNvbnN0IGV4dE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGFkZENodW5rRmlsZXNCeUV4dGVuc2lvbihleHRNYXAsIGVudHJpZXMsICcuanNvbicpO1xuICBhZGRDaHVua0ZpbGVzQnlFeHRlbnNpb24oXG4gICAgZXh0TWFwLFxuICAgIGVudHJpZXMsXG4gICAgJy5iaW4nLFxuICAgICcuYmluJyxcbiAgICB0YWcgPyAoZmlsZSkgPT4gIWZpbGUuZW5kc1dpdGgoYC4ke3RhZ31gKSA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGlmICh0YWcpIHtcbiAgICBjb25zdCB0YWdnZWRFeHRlbnNpb24gPSBgLiR7dGFnfS5iaW5gO1xuICAgIGFkZENodW5rRmlsZXNCeUV4dGVuc2lvbihleHRNYXAsIGVudHJpZXMsIHRhZ2dlZEV4dGVuc2lvbik7XG4gIH1cblxuICBjb25zdCBmaWxlcyA9IFsuLi5leHRNYXAua2V5cygpXVxuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuc3RhcnRzV2l0aChgJHtuYW1lfS1gKSlcbiAgICAuc29ydCgpO1xuXG4gIHJldHVybiB7IGZpbGVzLCBleHRNYXAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbWVyKGJhc2VkaXI6IHN0cmluZywgdGFnPzogc3RyaW5nKTogU3RyZWFtZXIge1xuICBjb25zdCB0YWdTdWZmaXggPSB0YWcgPyBgLiR7dGFnfWAgOiAnJztcbiAgY29uc3Qgc3RyZWFtRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIFtrZXk6IGBjaHVuazoke3N0cmluZ31gXTogW1xuICAgICAge1xuICAgICAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgICAgIGNodW5rRGF0YTogVWludDhBcnJheTtcbiAgICAgICAgY2h1bmtJZDogc3RyaW5nO1xuICAgICAgfSxcbiAgICBdO1xuICAgIFtrZXk6IGBjbG9zZToke3N0cmluZ31gXTogW1xuICAgICAge1xuICAgICAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgICB9LFxuICAgIF07XG4gIH0+KCk7XG5cbiAgLy8gVHJhY2sgd2hpY2ggc3RyZWFtcyBoYXZlIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGZvciBhIHJ1biAoaW4tbWVtb3J5IGNhY2hlKVxuICBjb25zdCByZWdpc3RlcmVkU3RyZWFtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vIEhlbHBlciB0byByZWNvcmQgdGhlIHJ1bklkIDw+IHN0cmVhbUlkIGFzc29jaWF0aW9uXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU3RyZWFtRm9yUnVuKFxuICAgIHJ1bklkOiBzdHJpbmcsXG4gICAgc3RyZWFtTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFzc2VydFNhZmVFbnRpdHlJZCgncnVuSWQnLCBydW5JZCk7XG4gICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdzdHJlYW1OYW1lJywgc3RyZWFtTmFtZSk7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtydW5JZH06JHtzdHJlYW1OYW1lfWA7XG4gICAgaWYgKHJlZ2lzdGVyZWRTdHJlYW1zLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgIHJldHVybjsgLy8gQWxyZWFkeSByZWdpc3RlcmVkIGluIHRoaXMgc2Vzc2lvblxuICAgIH1cblxuICAgIGNvbnN0IHJ1blN0cmVhbXNQYXRoID0gdGFnZ2VkUGF0aChiYXNlZGlyLCAnc3RyZWFtcy9ydW5zJywgcnVuSWQsIHRhZyk7XG5cbiAgICAvLyBSZWFkIGV4aXN0aW5nIHN0cmVhbXMgZm9yIHRoaXMgcnVuICh0cnkgdGFnZ2VkIGZpcnN0LCBmYWxsIGJhY2sgdG8gdW50YWdnZWQpXG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSlNPTldpdGhGYWxsYmFjayhcbiAgICAgIGJhc2VkaXIsXG4gICAgICAnc3RyZWFtcy9ydW5zJyxcbiAgICAgIHJ1bklkLFxuICAgICAgUnVuU3RyZWFtc1NjaGVtYSxcbiAgICAgIHRhZ1xuICAgICk7XG4gICAgY29uc3Qgc3RyZWFtcyA9IGV4aXN0aW5nPy5zdHJlYW1zID8/IFtdO1xuXG4gICAgLy8gQWRkIHN0cmVhbSBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgaWYgKCFzdHJlYW1zLmluY2x1ZGVzKHN0cmVhbU5hbWUpKSB7XG4gICAgICBzdHJlYW1zLnB1c2goc3RyZWFtTmFtZSk7XG4gICAgICBhd2FpdCB3cml0ZUpTT04ocnVuU3RyZWFtc1BhdGgsIHsgc3RyZWFtcyB9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlcmVkU3RyZWFtcy5hZGQoY2FjaGVLZXkpO1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGNvbnZlcnQgYSBjaHVuayB0byBhIEJ1ZmZlclxuICBmdW5jdGlvbiB0b0J1ZmZlcihjaHVuazogc3RyaW5nIHwgVWludDhBcnJheSk6IEJ1ZmZlciB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoY2h1bmspKTtcbiAgICB9IGVsc2UgaWYgKGNodW5rIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICByZXR1cm4gY2h1bms7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyB3cml0ZVRvU3RyZWFtKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgX3J1bklkOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4sXG4gICAgICBjaHVuazogc3RyaW5nIHwgVWludDhBcnJheVxuICAgICkge1xuICAgICAgLy8gR2VuZXJhdGUgVUxJRCBzeW5jaHJvbm91c2x5IEJFRk9SRSBhbnkgYXdhaXQgdG8gcHJlc2VydmUgY2FsbCBvcmRlci5cbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGNodW5rcyB3cml0dGVuIGluIHNlcXVlbmNlIG1haW50YWluIHRoZWlyIG9yZGVyIGV2ZW5cbiAgICAgIC8vIHdoZW4gcnVuSWQgaXMgYSBwcm9taXNlIHRoYXQgbXVsdGlwbGUgd3JpdGVzIGFyZSB3YWl0aW5nIG9uLlxuICAgICAgY29uc3QgY2h1bmtJZCA9IGBjaG5rXyR7bW9ub3RvbmljVWxpZCgpfWA7XG5cbiAgICAgIC8vIEF3YWl0IHJ1bklkIGlmIGl0J3MgYSBwcm9taXNlIHRvIGVuc3VyZSBwcm9wZXIgZmx1c2hpbmdcbiAgICAgIGNvbnN0IHJ1bklkID0gYXdhaXQgX3J1bklkO1xuXG4gICAgICAvLyBSZWdpc3RlciB0aGlzIHN0cmVhbSBmb3IgdGhlIHJ1blxuICAgICAgYXdhaXQgcmVnaXN0ZXJTdHJlYW1Gb3JSdW4ocnVuSWQsIG5hbWUpO1xuXG4gICAgICAvLyBDb252ZXJ0IGNodW5rIHRvIGJ1ZmZlciBmb3Igc2VyaWFsaXphdGlvblxuICAgICAgY29uc3QgY2h1bmtCdWZmZXIgPSB0b0J1ZmZlcihjaHVuayk7XG5cbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVDaHVuayh7XG4gICAgICAgIGNodW5rOiBjaHVua0J1ZmZlcixcbiAgICAgICAgZW9mOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaHVua1BhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGJhc2VkaXIsXG4gICAgICAgICdzdHJlYW1zJyxcbiAgICAgICAgJ2NodW5rcycsXG4gICAgICAgIGAke25hbWV9LSR7Y2h1bmtJZH0ke3RhZ1N1ZmZpeH0uYmluYFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgd3JpdGUoY2h1bmtQYXRoLCBzZXJpYWxpemVkKTtcblxuICAgICAgLy8gRW1pdCByZWFsLXRpbWUgZXZlbnQgd2l0aCBVaW50OEFycmF5IChjcmVhdGUgY29weSB0byBwcmV2ZW50IEFycmF5QnVmZmVyIGRldGFjaG1lbnQpXG4gICAgICBjb25zdCBjaHVua0RhdGEgPSBVaW50OEFycmF5LmZyb20oY2h1bmtCdWZmZXIpO1xuXG4gICAgICBzdHJlYW1FbWl0dGVyLmVtaXQoYGNodW5rOiR7bmFtZX1gIGFzIGNvbnN0LCB7XG4gICAgICAgIHN0cmVhbU5hbWU6IG5hbWUsXG4gICAgICAgIGNodW5rRGF0YSxcbiAgICAgICAgY2h1bmtJZCxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBhc3luYyB3cml0ZVRvU3RyZWFtTXVsdGkoXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBfcnVuSWQ6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPixcbiAgICAgIGNodW5rczogKHN0cmluZyB8IFVpbnQ4QXJyYXkpW11cbiAgICApIHtcbiAgICAgIGlmIChjaHVua3MubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgIC8vIEdlbmVyYXRlIGFsbCBVTElEcyBzeW5jaHJvbm91c2x5IEJFRk9SRSBhbnkgYXdhaXQgdG8gcHJlc2VydmUgY2FsbCBvcmRlci5cbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGNodW5rcyBtYWludGFpbiB0aGVpciBvcmRlciBldmVuIHdoZW4gcnVuSWQgaXMgYSBwcm9taXNlLlxuICAgICAgY29uc3QgY2h1bmtJZHMgPSBjaHVua3MubWFwKCgpID0+IGBjaG5rXyR7bW9ub3RvbmljVWxpZCgpfWApO1xuXG4gICAgICAvLyBBd2FpdCBydW5JZCBpZiBpdCdzIGEgcHJvbWlzZVxuICAgICAgY29uc3QgcnVuSWQgPSBhd2FpdCBfcnVuSWQ7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIHRoaXMgc3RyZWFtIGZvciB0aGUgcnVuXG4gICAgICBhd2FpdCByZWdpc3RlclN0cmVhbUZvclJ1bihydW5JZCwgbmFtZSk7XG5cbiAgICAgIC8vIFByZXBhcmUgY2h1bmsgZGF0YSBmb3IgcGFyYWxsZWwgd3JpdGVzXG4gICAgICBjb25zdCBjaHVua0J1ZmZlcnMgPSBjaHVua3MubWFwKChjaHVuaykgPT4gdG9CdWZmZXIoY2h1bmspKTtcblxuICAgICAgLy8gV3JpdGUgYWxsIGNodW5rcyBpbiBwYXJhbGxlbCBmb3IgZWZmaWNpZW5jeSwgYnV0IHRyYWNrIGluZGl2aWR1YWwgY29tcGxldGlvblxuICAgICAgY29uc3Qgd3JpdGVQcm9taXNlcyA9IGNodW5rQnVmZmVycy5tYXAoYXN5bmMgKGNodW5rQnVmZmVyLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNodW5rSWQgPSBjaHVua0lkc1tpXTtcblxuICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gc2VyaWFsaXplQ2h1bmsoe1xuICAgICAgICAgIGNodW5rOiBjaHVua0J1ZmZlcixcbiAgICAgICAgICBlb2Y6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjaHVua1BhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgYmFzZWRpcixcbiAgICAgICAgICAnc3RyZWFtcycsXG4gICAgICAgICAgJ2NodW5rcycsXG4gICAgICAgICAgYCR7bmFtZX0tJHtjaHVua0lkfSR7dGFnU3VmZml4fS5iaW5gXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgd3JpdGUoY2h1bmtQYXRoLCBzZXJpYWxpemVkKTtcblxuICAgICAgICAvLyBSZXR1cm4gZGF0YSBuZWVkZWQgZm9yIGV2ZW50IGVtaXNzaW9uXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2h1bmtJZCxcbiAgICAgICAgICBjaHVua0RhdGE6IFVpbnQ4QXJyYXkuZnJvbShjaHVua0J1ZmZlciksXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgLy8gRW1pdCBldmVudHMgaW4gb3JkZXIsIHdhaXRpbmcgZm9yIGVhY2ggY2h1bmsncyB3cml0ZSB0byBjb21wbGV0ZVxuICAgICAgLy8gVGhpcyBlbnN1cmVzIGV2ZW50cyBhcmUgZW1pdHRlZCBpbiBvcmRlciB3aGlsZSB3cml0ZXMgaGFwcGVuIGluIHBhcmFsbGVsXG4gICAgICBmb3IgKGNvbnN0IHdyaXRlUHJvbWlzZSBvZiB3cml0ZVByb21pc2VzKSB7XG4gICAgICAgIGNvbnN0IHsgY2h1bmtJZCwgY2h1bmtEYXRhIH0gPSBhd2FpdCB3cml0ZVByb21pc2U7XG5cbiAgICAgICAgc3RyZWFtRW1pdHRlci5lbWl0KGBjaHVuazoke25hbWV9YCBhcyBjb25zdCwge1xuICAgICAgICAgIHN0cmVhbU5hbWU6IG5hbWUsXG4gICAgICAgICAgY2h1bmtEYXRhLFxuICAgICAgICAgIGNodW5rSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBjbG9zZVN0cmVhbShuYW1lOiBzdHJpbmcsIF9ydW5JZDogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+KSB7XG4gICAgICAvLyBHZW5lcmF0ZSBVTElEIHN5bmNocm9ub3VzbHkgQkVGT1JFIGFueSBhd2FpdCB0byBwcmVzZXJ2ZSBjYWxsIG9yZGVyLlxuICAgICAgY29uc3QgY2h1bmtJZCA9IGBjaG5rXyR7bW9ub3RvbmljVWxpZCgpfWA7XG5cbiAgICAgIC8vIEF3YWl0IHJ1bklkIGlmIGl0J3MgYSBwcm9taXNlIHRvIGVuc3VyZSBwcm9wZXIgZmx1c2hpbmdcbiAgICAgIGNvbnN0IHJ1bklkID0gYXdhaXQgX3J1bklkO1xuXG4gICAgICAvLyBSZWdpc3RlciB0aGlzIHN0cmVhbSBmb3IgdGhlIHJ1biAoaW4gY2FzZSB3cml0ZVRvU3RyZWFtIHdhc24ndCBjYWxsZWQpXG4gICAgICBhd2FpdCByZWdpc3RlclN0cmVhbUZvclJ1bihydW5JZCwgbmFtZSk7XG4gICAgICBjb25zdCBjaHVua1BhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgIGJhc2VkaXIsXG4gICAgICAgICdzdHJlYW1zJyxcbiAgICAgICAgJ2NodW5rcycsXG4gICAgICAgIGAke25hbWV9LSR7Y2h1bmtJZH0ke3RhZ1N1ZmZpeH0uYmluYFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgd3JpdGUoXG4gICAgICAgIGNodW5rUGF0aCxcbiAgICAgICAgc2VyaWFsaXplQ2h1bmsoeyBjaHVuazogQnVmZmVyLmZyb20oW10pLCBlb2Y6IHRydWUgfSlcbiAgICAgICk7XG5cbiAgICAgIHN0cmVhbUVtaXR0ZXIuZW1pdChgY2xvc2U6JHtuYW1lfWAgYXMgY29uc3QsIHsgc3RyZWFtTmFtZTogbmFtZSB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgbGlzdFN0cmVhbXNCeVJ1bklkKHJ1bklkOiBzdHJpbmcpIHtcbiAgICAgIGFzc2VydFNhZmVFbnRpdHlJZCgncnVuSWQnLCBydW5JZCk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEpTT05XaXRoRmFsbGJhY2soXG4gICAgICAgIGJhc2VkaXIsXG4gICAgICAgICdzdHJlYW1zL3J1bnMnLFxuICAgICAgICBydW5JZCxcbiAgICAgICAgUnVuU3RyZWFtc1NjaGVtYSxcbiAgICAgICAgdGFnXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRhdGE/LnN0cmVhbXMgPz8gW107XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFN0cmVhbUNodW5rcyhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIF9ydW5JZDogc3RyaW5nLFxuICAgICAgb3B0aW9ucz86IEdldENodW5rc09wdGlvbnNcbiAgICApOiBQcm9taXNlPFN0cmVhbUNodW5rc1Jlc3BvbnNlPiB7XG4gICAgICBjb25zdCBsaW1pdCA9IG9wdGlvbnM/LmxpbWl0ID8/IDEwMDtcbiAgICAgIGNvbnN0IGNodW5rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnc3RyZWFtcycsICdjaHVua3MnKTtcbiAgICAgIGNvbnN0IHsgZmlsZXM6IGNodW5rRmlsZXMsIGV4dE1hcDogZmlsZUV4dE1hcCB9ID1cbiAgICAgICAgYXdhaXQgbGlzdENodW5rRmlsZXNGb3JTdHJlYW0oY2h1bmtzRGlyLCBuYW1lLCB0YWcpO1xuXG4gICAgICAvLyBEZWNvZGUgY3Vyc29yXG4gICAgICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gICAgICBpZiAob3B0aW9ucz8uY3Vyc29yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShvcHRpb25zLmN1cnNvciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzdGFydEluZGV4ID0gZGVjb2RlZC5pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBXYWxrIGZyb20gc3RhcnRJbmRleCwgcmVhZGluZyBvbmx5IHRoZSBmaWxlcyB3ZSBuZWVkLlxuICAgICAgLy8gRmlsZXMgYmVmb3JlIHRoZSBjdXJzb3IgYXJlIHNraXBwZWQgZW50aXJlbHkuXG4gICAgICBsZXQgc3RyZWFtRG9uZSA9IGZhbHNlO1xuICAgICAgY29uc3QgcmVzdWx0Q2h1bmtzOiB7IGluZGV4OiBudW1iZXI7IGRhdGE6IFVpbnQ4QXJyYXkgfVtdID0gW107XG4gICAgICBsZXQgZGF0YUluZGV4ID0gMDsgLy8gcnVubmluZyBjb3VudCBvZiBkYXRhIChub24tRU9GKSBmaWxlcyBzZWVuXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBjaHVua0ZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGV4dCA9IGZpbGVFeHRNYXAuZ2V0KGZpbGUpID8/ICcuYmluJztcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oY2h1bmtzRGlyLCBgJHtmaWxlfSR7ZXh0fWApO1xuXG4gICAgICAgIC8vIEJlZm9yZSB0aGUgY3Vyc29yOiBvbmx5IG5lZWQgdG8gY2hlY2sgRU9GICgxIGJ5dGUpLCBza2lwIGNvbnRlbnRcbiAgICAgICAgaWYgKGRhdGFJbmRleCA8IHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpZiAoaXNFb2ZCeXRlKGF3YWl0IHJlYWRGaXJzdEJ5dGUoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgc3RyZWFtRG9uZSA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YUluZGV4Kys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb2xsZWN0ZWQgZW5vdWdoIGRhdGEgY2h1bmtzIOKAlCBwZWVrIGF0IHRoZSBuZXh0IGZpbGUgZm9yIEVPRi9oYXNNb3JlXG4gICAgICAgIGlmIChyZXN1bHRDaHVua3MubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICAgICAgaWYgKGlzRW9mQnl0ZShhd2FpdCByZWFkRmlyc3RCeXRlKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHN0cmVhbURvbmUgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNb3JlIGRhdGEgZmlsZXMgZXhpc3QgYmV5b25kIHRoaXMgcGFnZVxuICAgICAgICAgICAgZGF0YUluZGV4Kys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW4gdGhlIHBhZ2Ugd2luZG93OiBkZXNlcmlhbGl6ZSBmdWxseVxuICAgICAgICBjb25zdCBjaHVuayA9IGRlc2VyaWFsaXplQ2h1bmsoYXdhaXQgcmVhZEJ1ZmZlcihmaWxlUGF0aCkpO1xuICAgICAgICBpZiAoY2h1bmsuZW9mKSB7XG4gICAgICAgICAgc3RyZWFtRG9uZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0Q2h1bmtzLnB1c2goe1xuICAgICAgICAgIGluZGV4OiBkYXRhSW5kZXgsXG4gICAgICAgICAgZGF0YTogVWludDhBcnJheS5mcm9tKGNodW5rLmNodW5rKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGFJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICAvLyBoYXNNb3JlID0gd2Uga25vdyB0aGVyZSBhcmUgZGF0YSBmaWxlcyBiZXlvbmQgdGhpcyBwYWdlXG4gICAgICBjb25zdCBoYXNNb3JlID1cbiAgICAgICAgIXN0cmVhbURvbmUgJiYgZGF0YUluZGV4ID4gc3RhcnRJbmRleCArIHJlc3VsdENodW5rcy5sZW5ndGg7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPSBzdGFydEluZGV4ICsgcmVzdWx0Q2h1bmtzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG5leHRDdXJzb3IgPSBoYXNNb3JlXG4gICAgICAgID8gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoeyBpOiBuZXh0SW5kZXggfSkpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IHJlc3VsdENodW5rcyxcbiAgICAgICAgY3Vyc29yOiBuZXh0Q3Vyc29yLFxuICAgICAgICBoYXNNb3JlLFxuICAgICAgICBkb25lOiBzdHJlYW1Eb25lLFxuICAgICAgfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZ2V0U3RyZWFtSW5mbyhcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIF9ydW5JZDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdHJlYW1JbmZvUmVzcG9uc2U+IHtcbiAgICAgIGNvbnN0IGNodW5rc0RpciA9IHBhdGguam9pbihiYXNlZGlyLCAnc3RyZWFtcycsICdjaHVua3MnKTtcbiAgICAgIGNvbnN0IHsgZmlsZXM6IGNodW5rRmlsZXMsIGV4dE1hcDogZmlsZUV4dE1hcCB9ID1cbiAgICAgICAgYXdhaXQgbGlzdENodW5rRmlsZXNGb3JTdHJlYW0oY2h1bmtzRGlyLCBuYW1lLCB0YWcpO1xuXG4gICAgICAvLyBSZWFkIG9ubHkgdGhlIEVPRiBtYXJrZXIgYnl0ZSBiZWNhdXNlIG1ldGFkYXRhIG5ldmVyIG5lZWRzIHBheWxvYWRzLlxuICAgICAgbGV0IHN0cmVhbURvbmUgPSBmYWxzZTtcbiAgICAgIGxldCBkYXRhQ291bnQgPSAwO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGNodW5rRmlsZXMpIHtcbiAgICAgICAgY29uc3QgZXh0ID0gZmlsZUV4dE1hcC5nZXQoZmlsZSkgPz8gJy5iaW4nO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNFb2ZCeXRlKGF3YWl0IHJlYWRGaXJzdEJ5dGUocGF0aC5qb2luKGNodW5rc0RpciwgYCR7ZmlsZX0ke2V4dH1gKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHN0cmVhbURvbmUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRhdGFDb3VudCsrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyB0YWlsSW5kZXg6IGRhdGFDb3VudCAtIDEsIGRvbmU6IHN0cmVhbURvbmUgfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVhZEZyb21TdHJlYW0obmFtZTogc3RyaW5nLCBzdGFydEluZGV4ID0gMCkge1xuICAgICAgY29uc3QgY2h1bmtzRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsICdzdHJlYW1zJywgJ2NodW5rcycpO1xuICAgICAgbGV0IHJlbW92ZUxpc3RlbmVycyA9ICgpID0+IHt9O1xuICAgICAgbGV0IHBvbGxJbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4oe1xuICAgICAgICBhc3luYyBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICAgICAgLy8gVHJhY2sgY2h1bmtzIGRlbGl2ZXJlZCB2aWEgZXZlbnRzIHRvIHByZXZlbnQgZHVwbGljYXRlcyBhbmQgbWFpbnRhaW4gb3JkZXIuXG4gICAgICAgICAgY29uc3QgZGVsaXZlcmVkQ2h1bmtJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAvLyBCdWZmZXIgZm9yIGNodW5rcyB0aGF0IGFycml2ZSB2aWEgZXZlbnRzIGR1cmluZyBkaXNrIHJlYWRpbmdcbiAgICAgICAgICBjb25zdCBidWZmZXJlZEV2ZW50Q2h1bmtzOiBBcnJheTx7XG4gICAgICAgICAgICBjaHVua0lkOiBzdHJpbmc7XG4gICAgICAgICAgICBjaHVua0RhdGE6IFVpbnQ4QXJyYXk7XG4gICAgICAgICAgfT4gPSBbXTtcbiAgICAgICAgICBsZXQgaXNSZWFkaW5nRnJvbURpc2sgPSB0cnVlO1xuICAgICAgICAgIC8vIEJ1ZmZlciBjbG9zZSBldmVudCBpZiBpdCBhcnJpdmVzIGR1cmluZyBkaXNrIHJlYWRpbmdcbiAgICAgICAgICBsZXQgcGVuZGluZ0Nsb3NlID0gZmFsc2U7XG4gICAgICAgICAgLy8gU2V0IHdoZW4gdGhlIGNvbnRyb2xsZXIgaXMgY2xvc2VkOyBndWFyZHMgYWdhaW5zdCBlbnF1ZXVlLWFmdGVyLWNsb3NlXG4gICAgICAgICAgLy8gaW4gdGhlIHBvbGxpbmcgY2FsbGJhY2sgd2hlbiBjbG9zZUxpc3RlbmVyIGZpcmVzIG1pZC1pdGVyYXRpb24uXG4gICAgICAgICAgbGV0IHN0cmVhbUNsb3NlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgY2h1bmtMaXN0ZW5lciA9IChldmVudDoge1xuICAgICAgICAgICAgc3RyZWFtTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgY2h1bmtEYXRhOiBVaW50OEFycmF5O1xuICAgICAgICAgICAgY2h1bmtJZDogc3RyaW5nO1xuICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgIC8vIFNraXAgZW1wdHkgY2h1bmtzIHRvIG1haW50YWluIGNvbnNpc3RlbmN5IHdpdGggZGlzayByZWFkaW5nIGJlaGF2aW9yXG4gICAgICAgICAgICBpZiAoZXZlbnQuY2h1bmtEYXRhLmJ5dGVMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgZGVsaXZlcmVkQ2h1bmtJZHMuYWRkKGV2ZW50LmNodW5rSWQpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1JlYWRpbmdGcm9tRGlzaykge1xuICAgICAgICAgICAgICBkZWxpdmVyZWRDaHVua0lkcy5hZGQoZXZlbnQuY2h1bmtJZCk7XG4gICAgICAgICAgICAgIC8vIEJ1ZmZlciBjaHVua3MgdGhhdCBhcnJpdmUgZHVyaW5nIGRpc2sgcmVhZGluZyB0byBtYWludGFpbiBvcmRlclxuICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBjb3B5IHRvIHByZXZlbnQgQXJyYXlCdWZmZXIgZGV0YWNobWVudCB3aGVuIGVucXVldWVkIGxhdGVyXG4gICAgICAgICAgICAgIGJ1ZmZlcmVkRXZlbnRDaHVua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgY2h1bmtJZDogZXZlbnQuY2h1bmtJZCxcbiAgICAgICAgICAgICAgICBjaHVua0RhdGE6IFVpbnQ4QXJyYXkuZnJvbShldmVudC5jaHVua0RhdGEpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRlbGl2ZXJlZENodW5rSWRzLmhhcyhldmVudC5jaHVua0lkKSkge1xuICAgICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IGR1cGxpY2F0ZXM6IHBvbGxpbmcgbWF5IGhhdmUgYWxyZWFkeSBjbGFpbWVkIHRoaXNcbiAgICAgICAgICAgICAgLy8gY2h1bmsgYmV0d2VlbiBpdHMgaGFzKCkgY2hlY2sgYW5kIHJlYWRCdWZmZXIoKSB5aWVsZC5cbiAgICAgICAgICAgICAgZGVsaXZlcmVkQ2h1bmtJZHMuYWRkKGV2ZW50LmNodW5rSWQpO1xuICAgICAgICAgICAgICAvLyBBZnRlciBkaXNrIHJlYWRpbmcgaXMgY29tcGxldGUsIGRlbGl2ZXIgY2h1bmtzIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGNvcHkgdG8gcHJldmVudCBBcnJheUJ1ZmZlciBkZXRhY2htZW50XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShVaW50OEFycmF5LmZyb20oZXZlbnQuY2h1bmtEYXRhKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNsb3NlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyBCdWZmZXIgY2xvc2UgZXZlbnQgaWYgZGlzayByZWFkaW5nIGlzIHN0aWxsIGluIHByb2dyZXNzXG4gICAgICAgICAgICBpZiAoaXNSZWFkaW5nRnJvbURpc2spIHtcbiAgICAgICAgICAgICAgcGVuZGluZ0Nsb3NlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb3ZlIGxpc3RlbmVycyBiZWZvcmUgY2xvc2luZ1xuICAgICAgICAgICAgc3RyZWFtQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0cmVhbUVtaXR0ZXIub2ZmKGBjaHVuazoke25hbWV9YCBhcyBjb25zdCwgY2h1bmtMaXN0ZW5lcik7XG4gICAgICAgICAgICBzdHJlYW1FbWl0dGVyLm9mZihgY2xvc2U6JHtuYW1lfWAgYXMgY29uc3QsIGNsb3NlTGlzdGVuZXIpO1xuICAgICAgICAgICAgaWYgKHBvbGxJbnRlcnZhbCkge1xuICAgICAgICAgICAgICBjbGVhckludGVydmFsKHBvbGxJbnRlcnZhbCk7XG4gICAgICAgICAgICAgIHBvbGxJbnRlcnZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLy8gSWdub3JlIGlmIGNvbnRyb2xsZXIgaXMgYWxyZWFkeSBjbG9zZWQgKGUuZy4sIGZyb20gY2FuY2VsKCkgb3IgRU9GKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmVtb3ZlTGlzdGVuZXJzID0gY2xvc2VMaXN0ZW5lcjtcblxuICAgICAgICAgIC8vIFNldCB1cCBsaXN0ZW5lcnMgRklSU1QgdG8gYXZvaWQgbWlzc2luZyBldmVudHNcbiAgICAgICAgICBzdHJlYW1FbWl0dGVyLm9uKGBjaHVuazoke25hbWV9YCBhcyBjb25zdCwgY2h1bmtMaXN0ZW5lcik7XG4gICAgICAgICAgc3RyZWFtRW1pdHRlci5vbihgY2xvc2U6JHtuYW1lfWAgYXMgY29uc3QsIGNsb3NlTGlzdGVuZXIpO1xuXG4gICAgICAgICAgLy8gTm93IGxvYWQgZXhpc3RpbmcgY2h1bmtzIGZyb20gZGlzay5cbiAgICAgICAgICBjb25zdCB7IGZpbGVzOiBjaHVua0ZpbGVzLCBleHRNYXA6IGZpbGVFeHRNYXAgfSA9XG4gICAgICAgICAgICBhd2FpdCBsaXN0Q2h1bmtGaWxlc0ZvclN0cmVhbShjaHVua3NEaXIsIG5hbWUsIHRhZyk7XG5cbiAgICAgICAgICAvLyBSZXNvbHZlIG5lZ2F0aXZlIHN0YXJ0SW5kZXggcmVsYXRpdmUgdG8gdGhlIG51bWJlciBvZiBkYXRhIGNodW5rc1xuICAgICAgICAgIC8vIChleGNsdWRpbmcgdGhlIHRyYWlsaW5nIEVPRiBtYXJrZXIgY2h1bmssIGlmIHByZXNlbnQpLlxuICAgICAgICAgIGxldCBkYXRhQ2h1bmtDb3VudCA9IGNodW5rRmlsZXMubGVuZ3RoO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgc3RhcnRJbmRleCA8IDAgJiZcbiAgICAgICAgICAgIGNodW5rRmlsZXMubGVuZ3RoID4gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEZpbGUgPSBjaHVua0ZpbGVzW2NodW5rRmlsZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBsYXN0RXh0ID0gZmlsZUV4dE1hcC5nZXQobGFzdEZpbGUpID8/ICcuYmluJztcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaXNFb2ZCeXRlKFxuICAgICAgICAgICAgICAgIGF3YWl0IHJlYWRGaXJzdEJ5dGUoXG4gICAgICAgICAgICAgICAgICBwYXRoLmpvaW4oY2h1bmtzRGlyLCBgJHtsYXN0RmlsZX0ke2xhc3RFeHR9YClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBkYXRhQ2h1bmtDb3VudC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXNvbHZlZFN0YXJ0SW5kZXggPVxuICAgICAgICAgICAgdHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInICYmIHN0YXJ0SW5kZXggPCAwXG4gICAgICAgICAgICAgID8gTWF0aC5tYXgoMCwgZGF0YUNodW5rQ291bnQgKyBzdGFydEluZGV4KVxuICAgICAgICAgICAgICA6IHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgICAvLyBQcm9jZXNzIGV4aXN0aW5nIGNodW5rcywgc2tpcHBpbmcgYW55IGFscmVhZHkgZGVsaXZlcmVkIHZpYSBldmVudHNcbiAgICAgICAgICBsZXQgaXNDb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICAgIGZvciAobGV0IGkgPSByZXNvbHZlZFN0YXJ0SW5kZXg7IGkgPCBjaHVua0ZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gY2h1bmtGaWxlc1tpXTtcbiAgICAgICAgICAgIC8vIEV4dHJhY3QgY2h1bmsgSUQgZnJvbSBmaWxlbmFtZTogXCJzdHJlYW1OYW1lLWNodW5rSWRcIiBvciBcInN0cmVhbU5hbWUtY2h1bmtJZC50YWdcIlxuICAgICAgICAgICAgY29uc3QgcmF3Q2h1bmtJZCA9IGZpbGUuc3Vic3RyaW5nKG5hbWUubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICAvLyBTdHJpcCB0YWcgc3VmZml4IChlLmcuLCBcImNobmtfVUxJRC52aXRlc3QtMFwiIOKGkiBcImNobmtfVUxJRFwiKVxuICAgICAgICAgICAgY29uc3QgY2h1bmtJZCA9IHRhZ1xuICAgICAgICAgICAgICA/IHJhd0NodW5rSWQucmVwbGFjZShgLiR7dGFnfWAsICcnKVxuICAgICAgICAgICAgICA6IHJhd0NodW5rSWQ7XG5cbiAgICAgICAgICAgIC8vIFNraXAgaWYgYWxyZWFkeSBkZWxpdmVyZWQgdmlhIGV2ZW50XG4gICAgICAgICAgICBpZiAoZGVsaXZlcmVkQ2h1bmtJZHMuaGFzKGNodW5rSWQpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBleHQgPSBmaWxlRXh0TWFwLmdldChmaWxlKSA/PyAnLmJpbic7XG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IGRlc2VyaWFsaXplQ2h1bmsoXG4gICAgICAgICAgICAgIGF3YWl0IHJlYWRCdWZmZXIocGF0aC5qb2luKGNodW5rc0RpciwgYCR7ZmlsZX0ke2V4dH1gKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY2h1bms/LmVvZiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBpc0NvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUcmFjayBhcyBoYW5kbGVkIHNvIHBvbGxpbmcgZG9lc24ndCByZS1kZWxpdmVyXG4gICAgICAgICAgICBkZWxpdmVyZWRDaHVua0lkcy5hZGQoY2h1bmtJZCk7XG4gICAgICAgICAgICBpZiAoY2h1bmsuY2h1bmsuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBjb3B5IHRvIHByZXZlbnQgQXJyYXlCdWZmZXIgZGV0YWNobWVudFxuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoVWludDhBcnJheS5mcm9tKGNodW5rLmNodW5rKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmluaXNoZWQgcmVhZGluZyBmcm9tIGRpc2sgLSBub3cgZGVsaXZlciBidWZmZXJlZCBldmVudCBjaHVua3MgaW4gY2hyb25vbG9naWNhbCBvcmRlclxuICAgICAgICAgIGlzUmVhZGluZ0Zyb21EaXNrID0gZmFsc2U7XG5cbiAgICAgICAgICAvLyBTb3J0IGJ1ZmZlcmVkIGNodW5rcyBieSBVTElEIChjaHJvbm9sb2dpY2FsIG9yZGVyKVxuICAgICAgICAgIGJ1ZmZlcmVkRXZlbnRDaHVua3Muc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgIGEuY2h1bmtJZC5sb2NhbGVDb21wYXJlKGIuY2h1bmtJZClcbiAgICAgICAgICApO1xuICAgICAgICAgIGZvciAoY29uc3QgYnVmZmVyZWQgb2YgYnVmZmVyZWRFdmVudENodW5rcykge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgY29weSBmb3IgZGVmZW5zZSBpbiBkZXB0aCAoYWxyZWFkeSBjb3BpZWQgYXQgc3RvcmFnZSwgYnV0IGJlIGV4dHJhIHNhZmUpXG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoVWludDhBcnJheS5mcm9tKGJ1ZmZlcmVkLmNodW5rRGF0YSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc0NvbXBsZXRlKSB7XG4gICAgICAgICAgICByZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAvLyBJZ25vcmUgaWYgY29udHJvbGxlciBpcyBhbHJlYWR5IGNsb3NlZCAoZS5nLiwgZnJvbSBjbG9zZUxpc3RlbmVyIGV2ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFByb2Nlc3MgYW55IHBlbmRpbmcgY2xvc2UgZXZlbnQgdGhhdCBhcnJpdmVkIGR1cmluZyBkaXNrIHJlYWRpbmdcbiAgICAgICAgICBpZiAocGVuZGluZ0Nsb3NlKSB7XG4gICAgICAgICAgICBzdHJlYW1FbWl0dGVyLm9mZihgY2h1bms6JHtuYW1lfWAgYXMgY29uc3QsIGNodW5rTGlzdGVuZXIpO1xuICAgICAgICAgICAgc3RyZWFtRW1pdHRlci5vZmYoYGNsb3NlOiR7bmFtZX1gIGFzIGNvbnN0LCBjbG9zZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAvLyBJZ25vcmUgaWYgY29udHJvbGxlciBpcyBhbHJlYWR5IGNsb3NlZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFRyYWNrIHByZS1zdGFydEluZGV4IGNodW5rcyBzbyBwb2xsaW5nIGRvZXNuJ3QgcmUtZGVsaXZlciB0aGVtXG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIGkgPCByZXNvbHZlZFN0YXJ0SW5kZXggJiYgaSA8IGNodW5rRmlsZXMubGVuZ3RoO1xuICAgICAgICAgICAgaSsrXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gY2h1bmtGaWxlc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHJhd0NodW5rSWQgPSBmaWxlLnN1YnN0cmluZyhuYW1lLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgY29uc3QgY2h1bmtJZCA9IHRhZ1xuICAgICAgICAgICAgICA/IHJhd0NodW5rSWQucmVwbGFjZShgLiR7dGFnfWAsICcnKVxuICAgICAgICAgICAgICA6IHJhd0NodW5rSWQ7XG4gICAgICAgICAgICBkZWxpdmVyZWRDaHVua0lkcy5hZGQoY2h1bmtJZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU3RhcnQgZmlsZXN5c3RlbSBwb2xsaW5nIGZvciBjcm9zcy1wcm9jZXNzIHN0cmVhbWluZyBzdXBwb3J0LlxuICAgICAgICAgIC8vIFRoZSBFdmVudEVtaXR0ZXIgb25seSB3b3JrcyBpbi1wcm9jZXNzOyB3aGVuIHRoZSB3cml0ZXIgaXMgaW4gYVxuICAgICAgICAgIC8vIHNlcGFyYXRlIHByb2Nlc3MgKGUuZy4gZTJlIHRlc3QgcnVubmVyIOKGlCB3b3JrYmVuY2ggYXBwKSwgcG9sbGluZ1xuICAgICAgICAgIC8vIHRoZSBzaGFyZWQgZmlsZXN5c3RlbSBpcyB0aGUgZmFsbGJhY2sgZGVsaXZlcnkgbWVjaGFuaXNtLlxuICAgICAgICAgIGxldCBpc1BvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgICBwb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQb2xsaW5nKSByZXR1cm47XG4gICAgICAgICAgICBpc1BvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBmaWxlczogY3VycmVudEZpbGVzLCBleHRNYXA6IGN1cnJlbnRFeHRNYXAgfSA9XG4gICAgICAgICAgICAgICAgYXdhaXQgbGlzdENodW5rRmlsZXNGb3JTdHJlYW0oY2h1bmtzRGlyLCBuYW1lLCB0YWcpO1xuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBjdXJyZW50RmlsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXdDaHVua0lkID0gZmlsZS5zdWJzdHJpbmcobmFtZS5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua0lkID0gdGFnXG4gICAgICAgICAgICAgICAgICA/IHJhd0NodW5rSWQucmVwbGFjZShgLiR7dGFnfWAsICcnKVxuICAgICAgICAgICAgICAgICAgOiByYXdDaHVua0lkO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRlbGl2ZXJlZENodW5rSWRzLmhhcyhjaHVua0lkKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVsaXZlcmVkQ2h1bmtJZHMuYWRkKGNodW5rSWQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0ID0gY3VycmVudEV4dE1hcC5nZXQoZmlsZSkgPz8gJy5iaW4nO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gZGVzZXJpYWxpemVDaHVuayhcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHJlYWRCdWZmZXIocGF0aC5qb2luKGNodW5rc0RpciwgYCR7ZmlsZX0ke2V4dH1gKSlcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNodW5rPy5lb2YgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbUNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBpZiAocG9sbEludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocG9sbEludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgcG9sbEludGVydmFsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHN0cmVhbUVtaXR0ZXIub2ZmKGBjaHVuazoke25hbWV9YCBhcyBjb25zdCwgY2h1bmtMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICBzdHJlYW1FbWl0dGVyLm9mZihgY2xvc2U6JHtuYW1lfWAgYXMgY29uc3QsIGNsb3NlTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBpZiBjb250cm9sbGVyIGlzIGFscmVhZHkgY2xvc2VkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCBlbnF1ZXVlLWFmdGVyLWNsb3NlOiBjbG9zZUxpc3RlbmVyIG1heSBoYXZlXG4gICAgICAgICAgICAgICAgLy8gZmlyZWQgYmV0d2VlbiBvdXIgcmVhZEJ1ZmZlcigpIHlpZWxkIGFuZCB0aGlzIHBvaW50LlxuICAgICAgICAgICAgICAgIGlmIChzdHJlYW1DbG9zZWQpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGlmIChjaHVuay5jaHVuay5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoVWludDhBcnJheS5mcm9tKGNodW5rLmNodW5rKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIHRyYW5zaWVudCBmaWxlc3lzdGVtIGVycm9ycyAoRU5PRU5ULCBFQUNDRVMsIGV0Yy4pXG4gICAgICAgICAgICAgIC8vIFN1cmZhY2UgdW5leHBlY3RlZCBlcnJvcnMgc28gYnVncyBhcmVuJ3QgaGlkZGVuXG4gICAgICAgICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIEVycm9yICYmICdjb2RlJyBpbiBlcnIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3dvcmxkLWxvY2FsXSBVbmV4cGVjdGVkIHBvbGxpbmcgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgaXNQb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjYW5jZWwoKSB7XG4gICAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgICAgICAgaWYgKHBvbGxJbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChwb2xsSW50ZXJ2YWwpO1xuICAgICAgICAgICAgcG9sbEludGVydmFsID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuIl19
|
package/dist/telemetry.js
CHANGED
|
@@ -68,4 +68,4 @@ export const RpcSystem = SemanticConvention('rpc.system');
|
|
|
68
68
|
export const RpcService = SemanticConvention('rpc.service');
|
|
69
69
|
/** RPC method name (standard OTEL: rpc.method) */
|
|
70
70
|
export const RpcMethod = SemanticConvention('rpc.method');
|
|
71
|
-
//# sourceMappingURL=
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxrREFBa0Q7QUFDbEQsSUFBSSxjQUFjLEdBQXNDLElBQUksQ0FBQztBQUU3RCxLQUFLLFVBQVUsVUFBVTtJQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQUVELElBQUksYUFBYSxHQUFzQyxJQUFJLENBQUM7QUFFNUQsS0FBSyxVQUFVLFNBQVM7SUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLGFBQWEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN6QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsS0FBSyxDQUN6QixRQUFnQixFQUNoQixHQUFHLElBRXFEO0lBRXhELE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQ2hCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVU7UUFDM0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1FBQzNCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxFQUFFO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBRS9ELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztnQkFDL0IsT0FBTyxFQUFHLENBQVcsQ0FBQyxPQUFPO2FBQzlCLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixLQUE0QjtJQUU1QixNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxpREFBaUQ7QUFDakQscURBQXFEO0FBQ3JELFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsYUFBYSxDQUFDLENBQUM7QUFFcEUsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWluaW1hbCB0ZWxlbWV0cnkgdXRpbGl0aWVzIGZvciB3b3JsZC1sb2NhbCBwYWNrYWdlLlxuICpcbiAqIE5PVEU6IFRoaXMgbW9kdWxlIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIHdvcmxkLXZlcmNlbCdzIHRlbGVtZXRyeS5cbiAqIEl0IHByb3ZpZGVzIHRyYWNpbmcgY2FwYWJpbGl0aWVzIGZvciBsb2NhbCBkZXZlbG9wbWVudCB0byBtYXRjaFxuICogdGhlIG9ic2VydmFiaWxpdHkgZXhwZXJpZW5jZSBpbiBwcm9kdWN0aW9uLlxuICpcbiAqIElNUE9SVEFOVDogVGhpcyBtb2R1bGUgdXNlcyB0aGUgc2FtZSB0cmFjZXIgbmFtZSAnd29ya2Zsb3cnIGFzIEB3b3JrZmxvdy9jb3JlIHRvIGVuc3VyZVxuICogYWxsIHNwYW5zIGFyZSByZXBvcnRlZCB1bmRlciB0aGUgcGFyZW50IGFwcGxpY2F0aW9uJ3Mgc2VydmljZSwgbm90IGFzIGEgc2VwYXJhdGUgc2VydmljZS5cbiAqL1xuaW1wb3J0IHR5cGUgKiBhcyBhcGkgZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbktpbmQsIFNwYW5PcHRpb25zIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcblxuLy8gTGF6eSBsb2FkIE9wZW5UZWxlbWV0cnkgQVBJIHRvIG1ha2UgaXQgb3B0aW9uYWxcbmxldCBvdGVsQXBpUHJvbWlzZTogUHJvbWlzZTx0eXBlb2YgYXBpIHwgbnVsbD4gfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3RlbEFwaSgpOiBQcm9taXNlPHR5cGVvZiBhcGkgfCBudWxsPiB7XG4gIGlmICghb3RlbEFwaVByb21pc2UpIHtcbiAgICBvdGVsQXBpUHJvbWlzZSA9IGltcG9ydCgnQG9wZW50ZWxlbWV0cnkvYXBpJykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gIH1cbiAgcmV0dXJuIG90ZWxBcGlQcm9taXNlO1xufVxuXG5sZXQgdHJhY2VyUHJvbWlzZTogUHJvbWlzZTxhcGkuVHJhY2VyIHwgbnVsbD4gfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VHJhY2VyKCk6IFByb21pc2U8YXBpLlRyYWNlciB8IG51bGw+IHtcbiAgaWYgKCF0cmFjZXJQcm9taXNlKSB7XG4gICAgdHJhY2VyUHJvbWlzZSA9IGdldE90ZWxBcGkoKS50aGVuKChvdGVsKSA9PlxuICAgICAgb3RlbCA/IG90ZWwudHJhY2UuZ2V0VHJhY2VyKCd3b3JrZmxvdycpIDogbnVsbFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRyYWNlclByb21pc2U7XG59XG5cbi8qKlxuICogV3JhcCBhbiBhc3luYyBmdW5jdGlvbiB3aXRoIGEgdHJhY2Ugc3Bhbi5cbiAqIE5vLW9wIGlmIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWNlPFQ+KFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICAuLi5hcmdzOlxuICAgIHwgW2ZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4gICAgfCBbb3B0czogU3Bhbk9wdGlvbnMsIGZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgW3RyYWNlciwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbZ2V0VHJhY2VyKCksIGdldE90ZWxBcGkoKV0pO1xuICBjb25zdCB7IGZuLCBvcHRzIH0gPVxuICAgIHR5cGVvZiBhcmdzWzBdID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHsgZm46IGFyZ3NbMF0sIG9wdHM6IHt9IH1cbiAgICAgIDogeyBmbjogYXJnc1sxXSwgb3B0czogYXJnc1swXSB9O1xuICBpZiAoIWZuKSB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIHRvIHRyYWNlIG11c3QgYmUgcHJvdmlkZWQnKTtcblxuICBpZiAoIXRyYWNlciB8fCAhb3RlbCkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNlci5zdGFydEFjdGl2ZVNwYW4oc3Bhbk5hbWUsIG9wdHMsIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKHNwYW4pO1xuICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgIGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzcGFuLmVuZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IFNwYW5LaW5kIGVudW0gdmFsdWUgYnkgbmFtZS5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5LaW5kKFxuICBmaWVsZDoga2V5b2YgdHlwZW9mIFNwYW5LaW5kXG4pOiBQcm9taXNlPFNwYW5LaW5kIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IG90ZWwgPSBhd2FpdCBnZXRPdGVsQXBpKCk7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIG90ZWwuU3BhbktpbmRbZmllbGRdO1xufVxuXG4vLyBTZW1hbnRpYyBjb252ZW50aW9ucyBmb3IgV29ybGQvU3RvcmFnZSB0cmFjaW5nXG4vLyBTdGFuZGFyZCBPVEVMIGNvbnZlbnRpb25zIGZvciBwZWVyIHNlcnZpY2UgbWFwcGluZ1xuZnVuY3Rpb24gU2VtYW50aWNDb252ZW50aW9uPFQ+KC4uLm5hbWVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gKHZhbHVlOiBUKSA9PlxuICAgIE9iamVjdC5mcm9tRW50cmllcyhuYW1lcy5tYXAoKG5hbWUpID0+IFtuYW1lLCB2YWx1ZV0gYXMgY29uc3QpKTtcbn1cblxuLyoqIFRoZSByZW1vdGUgc2VydmljZSBuYW1lIGZvciBEYXRhZG9nIHNlcnZpY2UgbWFwcyAoRGF0YWRvZy1zcGVjaWZpYzogcGVlci5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFBlZXJTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3BlZXIuc2VydmljZScpO1xuXG4vKiogUlBDIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBycGMuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMuc3lzdGVtJyk7XG5cbi8qKiBSUEMgc2VydmljZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBycGMuc2VydmljZSkgKi9cbmV4cG9ydCBjb25zdCBScGNTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgbWV0aG9kIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5tZXRob2QpICovXG5leHBvcnQgY29uc3QgUnBjTWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5tZXRob2QnKTtcbiJdfQ==
|