footprintjs 6.1.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +31 -26
- package/README.md +20 -1
- package/dist/advanced.js +2 -6
- package/dist/esm/advanced.js +1 -3
- package/dist/esm/lib/builder/structure/StructureRecorder.js +2 -2
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
- package/dist/esm/lib/recorder/InOutRecorder.js +31 -15
- package/dist/esm/lib/recorder/QualityRecorder.js +40 -13
- package/dist/esm/lib/recorder/RecorderOperation.js +3 -3
- package/dist/esm/lib/recorder/index.js +1 -8
- package/dist/esm/lib/recorder/qualityTrace.js +1 -1
- package/dist/esm/lib/runner/ExecutionRuntime.js +1 -1
- package/dist/esm/lib/scope/recorders/MetricRecorder.js +37 -9
- package/dist/esm/package.json +1 -0
- package/dist/esm/trace.js +1 -12
- package/dist/lib/builder/structure/StructureRecorder.js +2 -2
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
- package/dist/lib/recorder/InOutRecorder.js +31 -15
- package/dist/lib/recorder/QualityRecorder.js +40 -13
- package/dist/lib/recorder/RecorderOperation.js +3 -3
- package/dist/lib/recorder/index.js +2 -12
- package/dist/lib/recorder/qualityTrace.js +1 -1
- package/dist/lib/runner/ExecutionRuntime.js +1 -1
- package/dist/lib/scope/recorders/MetricRecorder.js +37 -9
- package/dist/trace.js +2 -16
- package/dist/types/advanced.d.ts +0 -2
- package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +26 -5
- package/dist/types/lib/recorder/InOutRecorder.d.ts +17 -6
- package/dist/types/lib/recorder/QualityRecorder.d.ts +17 -3
- package/dist/types/lib/recorder/RecorderOperation.d.ts +2 -2
- package/dist/types/lib/recorder/index.d.ts +0 -3
- package/dist/types/lib/recorder/qualityTrace.d.ts +5 -2
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +1 -1
- package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +18 -3
- package/dist/types/trace.d.ts +0 -3
- package/package.json +3 -2
- package/dist/esm/lib/recorder/BoundaryStateTracker.js +0 -260
- package/dist/esm/lib/recorder/KeyedRecorder.js +0 -94
- package/dist/esm/lib/recorder/SequenceRecorder.js +0 -193
- package/dist/lib/recorder/BoundaryStateTracker.js +0 -264
- package/dist/lib/recorder/KeyedRecorder.js +0 -98
- package/dist/lib/recorder/SequenceRecorder.js +0 -197
- package/dist/types/lib/recorder/BoundaryStateTracker.d.ts +0 -212
- package/dist/types/lib/recorder/KeyedRecorder.d.ts +0 -56
- package/dist/types/lib/recorder/SequenceRecorder.d.ts +0 -112
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* MetricRecorder — per-step timing and execution counts, keyed by runtimeStageId.
|
|
3
3
|
*
|
|
4
4
|
* Stores per-invocation data during traversal. Aggregated views computed on read.
|
|
5
|
-
*
|
|
5
|
+
* Composes a `KeyedStore<StepMetrics>` for O(1) lookup and standard operations
|
|
6
|
+
* (Convention 1 — one purpose per recorder: this is the ScopeRecorder; the store
|
|
7
|
+
* is the storage).
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* ```typescript
|
|
@@ -20,16 +22,17 @@
|
|
|
20
22
|
* metric.accumulate((sum, m) => sum + m.duration, 0, visibleKeys);
|
|
21
23
|
* ```
|
|
22
24
|
*/
|
|
23
|
-
import {
|
|
24
|
-
export class MetricRecorder
|
|
25
|
+
import { KeyedStore } from '../../recorder/KeyedStore.js';
|
|
26
|
+
export class MetricRecorder {
|
|
25
27
|
static _counter = 0;
|
|
26
28
|
id;
|
|
27
29
|
preferredOperation;
|
|
30
|
+
/** 1:1 per-step storage (Convention 1 — composed, not inherited). */
|
|
31
|
+
store = new KeyedStore();
|
|
28
32
|
stageStartTimes = new Map();
|
|
29
33
|
currentRuntimeStageId = '';
|
|
30
34
|
stageFilter;
|
|
31
35
|
constructor(idOrOptions) {
|
|
32
|
-
super();
|
|
33
36
|
if (typeof idOrOptions === 'string') {
|
|
34
37
|
this.id = idOrOptions;
|
|
35
38
|
this.preferredOperation = 'aggregate';
|
|
@@ -46,13 +49,38 @@ export class MetricRecorder extends KeyedRecorder {
|
|
|
46
49
|
/** Get or create the StepMetrics for the current stage. */
|
|
47
50
|
current() {
|
|
48
51
|
const key = this.currentRuntimeStageId;
|
|
49
|
-
let m = this.
|
|
52
|
+
let m = this.store.get(key);
|
|
50
53
|
if (!m) {
|
|
51
54
|
m = { stageName: '', readCount: 0, writeCount: 0, commitCount: 0, pauseCount: 0, duration: 0 };
|
|
52
|
-
this.store(key, m);
|
|
55
|
+
this.store.set(key, m);
|
|
53
56
|
}
|
|
54
57
|
return m;
|
|
55
58
|
}
|
|
59
|
+
// ── Per-step query API (delegates to the composed store) ───────────────
|
|
60
|
+
/** Translate: per-step metrics by runtimeStageId. */
|
|
61
|
+
getByKey(runtimeStageId) {
|
|
62
|
+
return this.store.get(runtimeStageId);
|
|
63
|
+
}
|
|
64
|
+
/** All per-step metrics as a read-only Map (insertion-ordered). */
|
|
65
|
+
getMap() {
|
|
66
|
+
return this.store.getMap();
|
|
67
|
+
}
|
|
68
|
+
/** All per-step metrics (insertion-ordered). */
|
|
69
|
+
values() {
|
|
70
|
+
return this.store.values();
|
|
71
|
+
}
|
|
72
|
+
/** Number of recorded steps. */
|
|
73
|
+
get size() {
|
|
74
|
+
return this.store.size;
|
|
75
|
+
}
|
|
76
|
+
/** Aggregate: reduce ALL steps to a single value (dashboards, totals). */
|
|
77
|
+
aggregate(fn, initial) {
|
|
78
|
+
return this.store.aggregate(fn, initial);
|
|
79
|
+
}
|
|
80
|
+
/** Accumulate: reduce steps up to a slider position (progressive view). */
|
|
81
|
+
accumulate(fn, initial, keys) {
|
|
82
|
+
return this.store.accumulate(fn, initial, keys);
|
|
83
|
+
}
|
|
56
84
|
onStageStart(event) {
|
|
57
85
|
if (!this.shouldRecord(event.stageName))
|
|
58
86
|
return;
|
|
@@ -142,7 +170,7 @@ export class MetricRecorder extends KeyedRecorder {
|
|
|
142
170
|
}
|
|
143
171
|
return {
|
|
144
172
|
name: 'Metrics',
|
|
145
|
-
description: 'Aggregator (
|
|
173
|
+
description: 'Aggregator (KeyedStore) — per-step timing and I/O counts',
|
|
146
174
|
preferredOperation: this.preferredOperation,
|
|
147
175
|
data: {
|
|
148
176
|
numericField: 'readCount',
|
|
@@ -158,7 +186,7 @@ export class MetricRecorder extends KeyedRecorder {
|
|
|
158
186
|
}
|
|
159
187
|
/** Clear all state — called by executor before each run(). */
|
|
160
188
|
clear() {
|
|
161
|
-
|
|
189
|
+
this.store.clear();
|
|
162
190
|
this.stageStartTimes.clear();
|
|
163
191
|
this.currentRuntimeStageId = '';
|
|
164
192
|
}
|
|
@@ -167,4 +195,4 @@ export class MetricRecorder extends KeyedRecorder {
|
|
|
167
195
|
this.clear();
|
|
168
196
|
}
|
|
169
197
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBb0RoRSxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQTBCO0lBQ3BELE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLEVBQUUsQ0FBUztJQUNYLGtCQUFrQixDQUFvQjtJQUN2QyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDNUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQzNCLFdBQVcsQ0FBa0M7SUFFckQsWUFBWSxXQUE0QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFdBQVcsQ0FBQztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxFQUFFLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCwyREFB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LElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsV0FBVztnQkFDekIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsS0FBSzthQUNOO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDckQsS0FBSztRQUNaLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRyaWNSZWNvcmRlciDigJQgcGVyLXN0ZXAgdGltaW5nIGFuZCBleGVjdXRpb24gY291bnRzLCBrZXllZCBieSBydW50aW1lU3RhZ2VJZC5cbiAqXG4gKiBTdG9yZXMgcGVyLWludm9jYXRpb24gZGF0YSBkdXJpbmcgdHJhdmVyc2FsLiBBZ2dyZWdhdGVkIHZpZXdzIGNvbXB1dGVkIG9uIHJlYWQuXG4gKiBFeHRlbmRzIEtleWVkUmVjb3JkZXI8U3RlcE1ldHJpY3M+IGZvciBPKDEpIGxvb2t1cCBhbmQgc3RhbmRhcmQgb3BlcmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljID0gbmV3IE1ldHJpY1JlY29yZGVyKCk7XG4gKiBleGVjdXRvci5hdHRhY2hTY29wZVJlY29yZGVyKG1ldHJpYyk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oKTtcbiAqXG4gKiAvLyBQZXItc3RlcCAodGltZS10cmF2ZWwpOlxuICogbWV0cmljLmdldEJ5S2V5KCdjYWxsLWxsbSM1Jyk7ICAvLyB7IHN0YWdlTmFtZSwgcmVhZENvdW50LCB3cml0ZUNvdW50LCBkdXJhdGlvbiB9XG4gKlxuICogLy8gQWdncmVnYXRlZCAoYmFja3dhcmQgY29tcGF0KTpcbiAqIG1ldHJpYy5nZXRNZXRyaWNzKCk7ICAvLyB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHN0YWdlTWV0cmljczogTWFwPHN0YWdlTmFtZSwgYWdncmVnYXRlZD4gfVxuICpcbiAqIC8vIFByb2dyZXNzaXZlIChzbGlkZXIpOlxuICogbWV0cmljLmFjY3VtdWxhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5kdXJhdGlvbiwgMCwgdmlzaWJsZUtleXMpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgS2V5ZWRSZWNvcmRlciB9IGZyb20gJy4uLy4uL3JlY29yZGVyL0tleWVkUmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tbWl0RXZlbnQsIFBhdXNlRXZlbnQsIFJlYWRFdmVudCwgU2NvcGVSZWNvcmRlciwgU3RhZ2VFdmVudCwgV3JpdGVFdmVudCB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIFBlci1pbnZvY2F0aW9uIG1ldHJpY3MgZm9yIGEgc2luZ2xlIGV4ZWN1dGlvbiBzdGVwLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwTWV0cmljcyB7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdGFnZSBuYW1lLiAqL1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiBzY29wZSByZWFkcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICByZWFkQ291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBzY29wZSB3cml0ZXMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgd3JpdGVDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIGNvbW1pdHMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgY29tbWl0Q291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBwYXVzZXMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgcGF1c2VDb3VudDogbnVtYmVyO1xuICAvKiogRHVyYXRpb24gaW4gbXMgZm9yIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuLyoqIEFnZ3JlZ2F0ZWQgbWV0cmljcyBhY3Jvc3MgYWxsIGludm9jYXRpb25zIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRlZE1ldHJpY3Mge1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIHRvdGFsUmVhZHM6IG51bWJlcjtcbiAgdG90YWxXcml0ZXM6IG51bWJlcjtcbiAgdG90YWxDb21taXRzOiBudW1iZXI7XG4gIHRvdGFsUGF1c2VzOiBudW1iZXI7XG4gIC8qKiBBZ2dyZWdhdGVkIGJ5IHN0YWdlTmFtZSDigJQgc3VtcyBhY3Jvc3MgbG9vcCBpbnZvY2F0aW9ucy4gKi9cbiAgc3RhZ2VNZXRyaWNzOiBNYXA8c3RyaW5nLCBTdGFnZU1ldHJpY3M+O1xufVxuXG4vKiogQWdncmVnYXRlZCBwZXItc3RhZ2VOYW1lIChiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcHJlLXJ1bnRpbWVTdGFnZUlkIEFQSSkuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlTWV0cmljcyB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICByZWFkQ291bnQ6IG51bWJlcjtcbiAgd3JpdGVDb3VudDogbnVtYmVyO1xuICBjb21taXRDb3VudDogbnVtYmVyO1xuICBwYXVzZUNvdW50OiBudW1iZXI7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgaW52b2NhdGlvbkNvdW50OiBudW1iZXI7XG59XG5cbi8qKiBPcHRpb25zIGZvciBNZXRyaWNSZWNvcmRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljUmVjb3JkZXJPcHRpb25zIHtcbiAgLyoqIFNjb3BlUmVjb3JkZXIgSUQuIERlZmF1bHRzIHRvIGF1dG8taW5jcmVtZW50IChgbWV0cmljcy0xYCwgYG1ldHJpY3MtMmAsIC4uLikuICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogRmlsdGVyIHdoaWNoIHN0YWdlcyBhcmUgcmVjb3JkZWQuIFJldHVybiBgdHJ1ZWAgdG8gcmVjb3JkLCBgZmFsc2VgIHRvIHNraXAuICovXG4gIHN0YWdlRmlsdGVyPzogKHN0YWdlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuO1xuICAvKiogUHJlZmVycmVkIFVJIG9wZXJhdGlvbi4gRGVmYXVsdHMgdG8gJ2FnZ3JlZ2F0ZScgKGRhc2hib2FyZCB0b3RhbHMpLiAqL1xuICBwcmVmZXJyZWRPcGVyYXRpb24/OiBSZWNvcmRlck9wZXJhdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1ldHJpY1JlY29yZGVyIGV4dGVuZHMgS2V5ZWRSZWNvcmRlcjxTdGVwTWV0cmljcz4gaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIHByaXZhdGUgc3RhZ2VTdGFydFRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgcHJpdmF0ZSBjdXJyZW50UnVudGltZVN0YWdlSWQgPSAnJztcbiAgcHJpdmF0ZSBzdGFnZUZpbHRlcj86IChzdGFnZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihpZE9yT3B0aW9ucz86IHN0cmluZyB8IE1ldHJpY1JlY29yZGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKHR5cGVvZiBpZE9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucztcbiAgICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gJ2FnZ3JlZ2F0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucz8uaWQgPz8gYG1ldHJpY3MtJHsrK01ldHJpY1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgICB0aGlzLnN0YWdlRmlsdGVyID0gaWRPck9wdGlvbnM/LnN0YWdlRmlsdGVyO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBpZE9yT3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICdhZ2dyZWdhdGUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUmVjb3JkKHN0YWdlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YWdlRmlsdGVyIHx8IHRoaXMuc3RhZ2VGaWx0ZXIoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIC8qKiBHZXQgb3IgY3JlYXRlIHRoZSBTdGVwTWV0cmljcyBmb3IgdGhlIGN1cnJlbnQgc3RhZ2UuICovXG4gIHByaXZhdGUgY3VycmVudCgpOiBTdGVwTWV0cmljcyB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQ7XG4gICAgbGV0IG0gPSB0aGlzLmdldEJ5S2V5KGtleSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICBtID0geyBzdGFnZU5hbWU6ICcnLCByZWFkQ291bnQ6IDAsIHdyaXRlQ291bnQ6IDAsIGNvbW1pdENvdW50OiAwLCBwYXVzZUNvdW50OiAwLCBkdXJhdGlvbjogMCB9O1xuICAgICAgdGhpcy5zdG9yZShrZXksIG0pO1xuICAgIH1cbiAgICByZXR1cm4gbTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gZXZlbnQucnVudGltZVN0YWdlSWQ7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuc2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkLCBldmVudC50aW1lc3RhbXApO1xuICAgIGNvbnN0IG0gPSB0aGlzLmN1cnJlbnQoKTtcbiAgICBtLnN0YWdlTmFtZSA9IGV2ZW50LnN0YWdlTmFtZTtcbiAgfVxuXG4gIG9uUmVhZChldmVudDogUmVhZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkucmVhZENvdW50Kys7XG4gIH1cblxuICBvbldyaXRlKGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkud3JpdGVDb3VudCsrO1xuICB9XG5cbiAgb25Db21taXQoZXZlbnQ6IENvbW1pdEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkuY29tbWl0Q291bnQrKztcbiAgfVxuXG4gIG9uUGF1c2UoZXZlbnQ6IFBhdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnQoKS5wYXVzZUNvdW50Kys7XG4gIH1cblxuICBvblN0YWdlRW5kKGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgY29uc3QgbSA9IHRoaXMuY3VycmVudCgpO1xuICAgIGlmIChldmVudC5kdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtLmR1cmF0aW9uID0gZXZlbnQuZHVyYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuc3RhZ2VTdGFydFRpbWVzLmdldChldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gICAgICBtLmR1cmF0aW9uID0gc3RhcnRUaW1lICE9PSB1bmRlZmluZWQgPyBldmVudC50aW1lc3RhbXAgLSBzdGFydFRpbWUgOiAwO1xuICAgIH1cbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5kZWxldGUoZXZlbnQucnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFnZ3JlZ2F0ZWQgbWV0cmljcyDigJQgY29tcHV0ZXMgdG90YWxzIG9uIHRoZSBmbHkgZnJvbSBwZXItc3RlcCBkYXRhIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbiAgZ2V0TWV0cmljcygpOiBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gICAgY29uc3QgYnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz4oKTtcblxuICAgIGNvbnN0IHRvdGFsRHVyYXRpb24gPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmR1cmF0aW9uLCAwKTtcbiAgICBjb25zdCB0b3RhbFJlYWRzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5yZWFkQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsV3JpdGVzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS53cml0ZUNvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbENvbW1pdHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmNvbW1pdENvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbFBhdXNlcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ucGF1c2VDb3VudCwgMCk7XG5cbiAgICAvLyBHcm91cCBieSBzdGFnZU5hbWUgZm9yIGJhY2t3YXJkIGNvbXBhdFxuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGJ5TmFtZS5nZXQobS5zdGFnZU5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLnJlYWRDb3VudCArPSBtLnJlYWRDb3VudDtcbiAgICAgICAgZXhpc3Rpbmcud3JpdGVDb3VudCArPSBtLndyaXRlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLmNvbW1pdENvdW50ICs9IG0uY29tbWl0Q291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnBhdXNlQ291bnQgKz0gbS5wYXVzZUNvdW50O1xuICAgICAgICBleGlzdGluZy50b3RhbER1cmF0aW9uICs9IG0uZHVyYXRpb247XG4gICAgICAgIGV4aXN0aW5nLmludm9jYXRpb25Db3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnlOYW1lLnNldChtLnN0YWdlTmFtZSwge1xuICAgICAgICAgIHN0YWdlTmFtZTogbS5zdGFnZU5hbWUsXG4gICAgICAgICAgcmVhZENvdW50OiBtLnJlYWRDb3VudCxcbiAgICAgICAgICB3cml0ZUNvdW50OiBtLndyaXRlQ291bnQsXG4gICAgICAgICAgY29tbWl0Q291bnQ6IG0uY29tbWl0Q291bnQsXG4gICAgICAgICAgcGF1c2VDb3VudDogbS5wYXVzZUNvdW50LFxuICAgICAgICAgIHRvdGFsRHVyYXRpb246IG0uZHVyYXRpb24sXG4gICAgICAgICAgaW52b2NhdGlvbkNvdW50OiAxLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCB0b3RhbFdyaXRlcywgdG90YWxDb21taXRzLCB0b3RhbFBhdXNlcywgc3RhZ2VNZXRyaWNzOiBieU5hbWUgfTtcbiAgfVxuXG4gIC8qKiBHZXQgYWdncmVnYXRlZCBtZXRyaWNzIGZvciBhIHNwZWNpZmljIHN0YWdlIG5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRTdGFnZU1ldHJpY3Moc3RhZ2VOYW1lOiBzdHJpbmcpOiBTdGFnZU1ldHJpY3MgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICByZXR1cm4gbWV0cmljcy5zdGFnZU1ldHJpY3MuZ2V0KHN0YWdlTmFtZSk7XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICAvLyBFeHBvc2UgcGVyLXN0ZXAgZGF0YSBrZXllZCBieSBydW50aW1lU3RhZ2VJZCAoZm9yIHRpbWUtdHJhdmVsIFVJKVxuICAgIC8vIGFsb25nc2lkZSB0aGUgYWdncmVnYXRlZCB0b3RhbHNcbiAgICBjb25zdCBzdGVwczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmdldE1hcCgpKSB7XG4gICAgICBzdGVwc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTWV0cmljcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0b3IgKEtleWVkUmVjb3JkZXIpIOKAlCBwZXItc3RlcCB0aW1pbmcgYW5kIEkvTyBjb3VudHMnLFxuICAgICAgcHJlZmVycmVkT3BlcmF0aW9uOiB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbnVtZXJpY0ZpZWxkOiAncmVhZENvdW50JyxcbiAgICAgICAgZ3JhbmRUb3RhbDogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBtZXRyaWNzLnRvdGFsRHVyYXRpb24sXG4gICAgICAgIHRvdGFsUmVhZHM6IG1ldHJpY3MudG90YWxSZWFkcyxcbiAgICAgICAgdG90YWxXcml0ZXM6IG1ldHJpY3MudG90YWxXcml0ZXMsXG4gICAgICAgIHRvdGFsQ29tbWl0czogbWV0cmljcy50b3RhbENvbW1pdHMsXG4gICAgICAgIHRvdGFsUGF1c2VzOiBtZXRyaWNzLnRvdGFsUGF1c2VzLFxuICAgICAgICBzdGVwcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgc3RhdGUg4oCUIGNhbGxlZCBieSBleGVjdXRvciBiZWZvcmUgZWFjaCBydW4oKS4gKi9cbiAgb3ZlcnJpZGUgY2xlYXIoKTogdm9pZCB7XG4gICAgc3VwZXIuY2xlYXIoKTtcbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5jbGVhcigpO1xuICAgIHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gJyc7XG4gIH1cblxuICAvKiogQWxpYXMgZm9yIGNsZWFyKCkgKGJhY2t3YXJkIGNvbXBhdCkuICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFvRDFELE1BQU0sT0FBTyxjQUFjO0lBQ2pCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLEVBQUUsQ0FBUztJQUNYLGtCQUFrQixDQUFvQjtJQUMvQyxxRUFBcUU7SUFDcEQsS0FBSyxHQUFHLElBQUksVUFBVSxFQUFlLENBQUM7SUFDL0MsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzVDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUMzQixXQUFXLENBQWtDO0lBRXJELFlBQVksV0FBNEM7UUFDdEQsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxJQUFJLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLEVBQUUsa0JBQWtCLElBQUksV0FBVyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7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QUM5QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztnQkFDaEMsS0FBSzthQUNOO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ldHJpY1JlY29yZGVyIOKAlCBwZXItc3RlcCB0aW1pbmcgYW5kIGV4ZWN1dGlvbiBjb3VudHMsIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkLlxuICpcbiAqIFN0b3JlcyBwZXItaW52b2NhdGlvbiBkYXRhIGR1cmluZyB0cmF2ZXJzYWwuIEFnZ3JlZ2F0ZWQgdmlld3MgY29tcHV0ZWQgb24gcmVhZC5cbiAqIENvbXBvc2VzIGEgYEtleWVkU3RvcmU8U3RlcE1ldHJpY3M+YCBmb3IgTygxKSBsb29rdXAgYW5kIHN0YW5kYXJkIG9wZXJhdGlvbnNcbiAqIChDb252ZW50aW9uIDEg4oCUIG9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogdGhpcyBpcyB0aGUgU2NvcGVSZWNvcmRlcjsgdGhlIHN0b3JlXG4gKiBpcyB0aGUgc3RvcmFnZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpYyA9IG5ldyBNZXRyaWNSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihtZXRyaWMpO1xuICogYXdhaXQgZXhlY3V0b3IucnVuKCk7XG4gKlxuICogLy8gUGVyLXN0ZXAgKHRpbWUtdHJhdmVsKTpcbiAqIG1ldHJpYy5nZXRCeUtleSgnY2FsbC1sbG0jNScpOyAgLy8geyBzdGFnZU5hbWUsIHJlYWRDb3VudCwgd3JpdGVDb3VudCwgZHVyYXRpb24gfVxuICpcbiAqIC8vIEFnZ3JlZ2F0ZWQgKGJhY2t3YXJkIGNvbXBhdCk6XG4gKiBtZXRyaWMuZ2V0TWV0cmljcygpOyAgLy8geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCBzdGFnZU1ldHJpY3M6IE1hcDxzdGFnZU5hbWUsIGFnZ3JlZ2F0ZWQ+IH1cbiAqXG4gKiAvLyBQcm9ncmVzc2l2ZSAoc2xpZGVyKTpcbiAqIG1ldHJpYy5hY2N1bXVsYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDAsIHZpc2libGVLZXlzKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IEtleWVkU3RvcmUgfSBmcm9tICcuLi8uLi9yZWNvcmRlci9LZXllZFN0b3JlLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEV2ZW50LCBQYXVzZUV2ZW50LCBSZWFkRXZlbnQsIFNjb3BlUmVjb3JkZXIsIFN0YWdlRXZlbnQsIFdyaXRlRXZlbnQgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBQZXItaW52b2NhdGlvbiBtZXRyaWNzIGZvciBhIHNpbmdsZSBleGVjdXRpb24gc3RlcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE1ldHJpY3Mge1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgcmVhZHMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgd3JpdGVzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBjb21taXRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgcGF1c2VzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIER1cmF0aW9uIGluIG1zIGZvciB0aGlzIGludm9jYXRpb24uICovXG4gIGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKiBBZ2dyZWdhdGVkIG1ldHJpY3MgYWNyb3NzIGFsbCBpbnZvY2F0aW9ucyAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICB0b3RhbFJlYWRzOiBudW1iZXI7XG4gIHRvdGFsV3JpdGVzOiBudW1iZXI7XG4gIHRvdGFsQ29tbWl0czogbnVtYmVyO1xuICB0b3RhbFBhdXNlczogbnVtYmVyO1xuICAvKiogQWdncmVnYXRlZCBieSBzdGFnZU5hbWUg4oCUIHN1bXMgYWNyb3NzIGxvb3AgaW52b2NhdGlvbnMuICovXG4gIHN0YWdlTWV0cmljczogTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPjtcbn1cblxuLyoqIEFnZ3JlZ2F0ZWQgcGVyLXN0YWdlTmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHByZS1ydW50aW1lU3RhZ2VJZCBBUEkpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU1ldHJpY3Mge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgY29tbWl0Q291bnQ6IG51bWJlcjtcbiAgcGF1c2VDb3VudDogbnVtYmVyO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIGludm9jYXRpb25Db3VudDogbnVtYmVyO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgTWV0cmljUmVjb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1JlY29yZGVyT3B0aW9ucyB7XG4gIC8qKiBTY29wZVJlY29yZGVyIElELiBEZWZhdWx0cyB0byBhdXRvLWluY3JlbWVudCAoYG1ldHJpY3MtMWAsIGBtZXRyaWNzLTJgLCAuLi4pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEZpbHRlciB3aGljaCBzdGFnZXMgYXJlIHJlY29yZGVkLiBSZXR1cm4gYHRydWVgIHRvIHJlY29yZCwgYGZhbHNlYCB0byBza2lwLiAqL1xuICBzdGFnZUZpbHRlcj86IChzdGFnZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyoqIFByZWZlcnJlZCBVSSBvcGVyYXRpb24uIERlZmF1bHRzIHRvICdhZ2dyZWdhdGUnIChkYXNoYm9hcmQgdG90YWxzKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNSZWNvcmRlciBpbXBsZW1lbnRzIFNjb3BlUmVjb3JkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfY291bnRlciA9IDA7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbjtcbiAgLyoqIDE6MSBwZXItc3RlcCBzdG9yYWdlIChDb252ZW50aW9uIDEg4oCUIGNvbXBvc2VkLCBub3QgaW5oZXJpdGVkKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPFN0ZXBNZXRyaWNzPigpO1xuICBwcml2YXRlIHN0YWdlU3RhcnRUaW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gJyc7XG4gIHByaXZhdGUgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoaWRPck9wdGlvbnM/OiBzdHJpbmcgfCBNZXRyaWNSZWNvcmRlck9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGlkT3JPcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSAnYWdncmVnYXRlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pZCA9IGlkT3JPcHRpb25zPy5pZCA/PyBgbWV0cmljcy0keysrTWV0cmljUmVjb3JkZXIuX2NvdW50ZXJ9YDtcbiAgICAgIHRoaXMuc3RhZ2VGaWx0ZXIgPSBpZE9yT3B0aW9ucz8uc3RhZ2VGaWx0ZXI7XG4gICAgICB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbiA9IGlkT3JPcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ2FnZ3JlZ2F0ZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRSZWNvcmQoc3RhZ2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc3RhZ2VGaWx0ZXIgfHwgdGhpcy5zdGFnZUZpbHRlcihzdGFnZU5hbWUpO1xuICB9XG5cbiAgLyoqIEdldCBvciBjcmVhdGUgdGhlIFN0ZXBNZXRyaWNzIGZvciB0aGUgY3VycmVudCBzdGFnZS4gKi9cbiAgcHJpdmF0ZSBjdXJyZW50KCk6IFN0ZXBNZXRyaWNzIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmN1cnJlbnRSdW50aW1lU3RhZ2VJZDtcbiAgICBsZXQgbSA9IHRoaXMuc3RvcmUuZ2V0KGtleSk7XG4gICAgaWYgKCFtKSB7XG4gICAgICBtID0geyBzdGFnZU5hbWU6ICcnLCByZWFkQ291bnQ6IDAsIHdyaXRlQ291bnQ6IDAsIGNvbW1pdENvdW50OiAwLCBwYXVzZUNvdW50OiAwLCBkdXJhdGlvbjogMCB9O1xuICAgICAgdGhpcy5zdG9yZS5zZXQoa2V5LCBtKTtcbiAgICB9XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICAvLyDilIDilIAgUGVyLXN0ZXAgcXVlcnkgQVBJIChkZWxlZ2F0ZXMgdG8gdGhlIGNvbXBvc2VkIHN0b3JlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogVHJhbnNsYXRlOiBwZXItc3RlcCBtZXRyaWNzIGJ5IHJ1bnRpbWVTdGFnZUlkLiAqL1xuICBnZXRCeUtleShydW50aW1lU3RhZ2VJZDogc3RyaW5nKTogU3RlcE1ldHJpY3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldChydW50aW1lU3RhZ2VJZCk7XG4gIH1cblxuICAvKiogQWxsIHBlci1zdGVwIG1ldHJpY3MgYXMgYSByZWFkLW9ubHkgTWFwIChpbnNlcnRpb24tb3JkZXJlZCkuICovXG4gIGdldE1hcCgpOiBSZWFkb25seU1hcDxzdHJpbmcsIFN0ZXBNZXRyaWNzPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TWFwKCk7XG4gIH1cblxuICAvKiogQWxsIHBlci1zdGVwIG1ldHJpY3MgKGluc2VydGlvbi1vcmRlcmVkKS4gKi9cbiAgdmFsdWVzKCk6IFN0ZXBNZXRyaWNzW10ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnZhbHVlcygpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBzdGVwcy4gKi9cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zaXplO1xuICB9XG5cbiAgLyoqIEFnZ3JlZ2F0ZTogcmVkdWNlIEFMTCBzdGVwcyB0byBhIHNpbmdsZSB2YWx1ZSAoZGFzaGJvYXJkcywgdG90YWxzKS4gKi9cbiAgYWdncmVnYXRlPFI+KGZuOiAoYWNjOiBSLCBlbnRyeTogU3RlcE1ldHJpY3MsIGtleTogc3RyaW5nKSA9PiBSLCBpbml0aWFsOiBSKTogUiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuYWdncmVnYXRlKGZuLCBpbml0aWFsKTtcbiAgfVxuXG4gIC8qKiBBY2N1bXVsYXRlOiByZWR1Y2Ugc3RlcHMgdXAgdG8gYSBzbGlkZXIgcG9zaXRpb24gKHByb2dyZXNzaXZlIHZpZXcpLiAqL1xuICBhY2N1bXVsYXRlPFI+KGZuOiAoYWNjOiBSLCBlbnRyeTogU3RlcE1ldHJpY3MsIGtleTogc3RyaW5nKSA9PiBSLCBpbml0aWFsOiBSLCBrZXlzPzogUmVhZG9ubHlTZXQ8c3RyaW5nPik6IFIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmFjY3VtdWxhdGUoZm4sIGluaXRpYWwsIGtleXMpO1xuICB9XG5cbiAgb25TdGFnZVN0YXJ0KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQgPSBldmVudC5ydW50aW1lU3RhZ2VJZDtcbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5zZXQoZXZlbnQucnVudGltZVN0YWdlSWQsIGV2ZW50LnRpbWVzdGFtcCk7XG4gICAgY29uc3QgbSA9IHRoaXMuY3VycmVudCgpO1xuICAgIG0uc3RhZ2VOYW1lID0gZXZlbnQuc3RhZ2VOYW1lO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnQoKS5yZWFkQ291bnQrKztcbiAgfVxuXG4gIG9uV3JpdGUoZXZlbnQ6IFdyaXRlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnQoKS53cml0ZUNvdW50Kys7XG4gIH1cblxuICBvbkNvbW1pdChldmVudDogQ29tbWl0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnQoKS5jb21taXRDb3VudCsrO1xuICB9XG5cbiAgb25QYXVzZShldmVudDogUGF1c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudCgpLnBhdXNlQ291bnQrKztcbiAgfVxuXG4gIG9uU3RhZ2VFbmQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBtID0gdGhpcy5jdXJyZW50KCk7XG4gICAgaWYgKGV2ZW50LmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG0uZHVyYXRpb24gPSBldmVudC5kdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5zdGFnZVN0YXJ0VGltZXMuZ2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkKTtcbiAgICAgIG0uZHVyYXRpb24gPSBzdGFydFRpbWUgIT09IHVuZGVmaW5lZCA/IGV2ZW50LnRpbWVzdGFtcCAtIHN0YXJ0VGltZSA6IDA7XG4gICAgfVxuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLmRlbGV0ZShldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gIH1cblxuICAvKiogQWdncmVnYXRlZCBtZXRyaWNzIOKAlCBjb21wdXRlcyB0b3RhbHMgb24gdGhlIGZseSBmcm9tIHBlci1zdGVwIGRhdGEgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRNZXRyaWNzKCk6IEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPigpO1xuXG4gICAgY29uc3QgdG90YWxEdXJhdGlvbiA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDApO1xuICAgIGNvbnN0IHRvdGFsUmVhZHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLnJlYWRDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxXcml0ZXMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLndyaXRlQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsQ29tbWl0cyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0uY29tbWl0Q291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsUGF1c2VzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5wYXVzZUNvdW50LCAwKTtcblxuICAgIC8vIEdyb3VwIGJ5IHN0YWdlTmFtZSBmb3IgYmFja3dhcmQgY29tcGF0XG4gICAgZm9yIChjb25zdCBtIG9mIHRoaXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYnlOYW1lLmdldChtLnN0YWdlTmFtZSk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgZXhpc3RpbmcucmVhZENvdW50ICs9IG0ucmVhZENvdW50O1xuICAgICAgICBleGlzdGluZy53cml0ZUNvdW50ICs9IG0ud3JpdGVDb3VudDtcbiAgICAgICAgZXhpc3RpbmcuY29tbWl0Q291bnQgKz0gbS5jb21taXRDb3VudDtcbiAgICAgICAgZXhpc3RpbmcucGF1c2VDb3VudCArPSBtLnBhdXNlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnRvdGFsRHVyYXRpb24gKz0gbS5kdXJhdGlvbjtcbiAgICAgICAgZXhpc3RpbmcuaW52b2NhdGlvbkNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieU5hbWUuc2V0KG0uc3RhZ2VOYW1lLCB7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBtLnN0YWdlTmFtZSxcbiAgICAgICAgICByZWFkQ291bnQ6IG0ucmVhZENvdW50LFxuICAgICAgICAgIHdyaXRlQ291bnQ6IG0ud3JpdGVDb3VudCxcbiAgICAgICAgICBjb21taXRDb3VudDogbS5jb21taXRDb3VudCxcbiAgICAgICAgICBwYXVzZUNvdW50OiBtLnBhdXNlQ291bnQsXG4gICAgICAgICAgdG90YWxEdXJhdGlvbjogbS5kdXJhdGlvbixcbiAgICAgICAgICBpbnZvY2F0aW9uQ291bnQ6IDEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHRvdGFsRHVyYXRpb24sIHRvdGFsUmVhZHMsIHRvdGFsV3JpdGVzLCB0b3RhbENvbW1pdHMsIHRvdGFsUGF1c2VzLCBzdGFnZU1ldHJpY3M6IGJ5TmFtZSB9O1xuICB9XG5cbiAgLyoqIEdldCBhZ2dyZWdhdGVkIG1ldHJpY3MgZm9yIGEgc3BlY2lmaWMgc3RhZ2UgbmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG4gIGdldFN0YWdlTWV0cmljcyhzdGFnZU5hbWU6IHN0cmluZyk6IFN0YWdlTWV0cmljcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIHJldHVybiBtZXRyaWNzLnN0YWdlTWV0cmljcy5nZXQoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMuZ2V0TWV0cmljcygpO1xuICAgIC8vIEV4cG9zZSBwZXItc3RlcCBkYXRhIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkIChmb3IgdGltZS10cmF2ZWwgVUkpXG4gICAgLy8gYWxvbmdzaWRlIHRoZSBhZ2dyZWdhdGVkIHRvdGFsc1xuICAgIGNvbnN0IHN0ZXBzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRoaXMuZ2V0TWFwKCkpIHtcbiAgICAgIHN0ZXBzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdNZXRyaWNzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWdncmVnYXRvciAoS2V5ZWRTdG9yZSkg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgSS9PIGNvdW50cycsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246IHRoaXMucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgICAgZGF0YToge1xuICAgICAgICBudW1lcmljRmllbGQ6ICdyZWFkQ291bnQnLFxuICAgICAgICBncmFuZFRvdGFsOiBtZXRyaWNzLnRvdGFsUmVhZHMsXG4gICAgICAgIHRvdGFsRHVyYXRpb246IG1ldHJpY3MudG90YWxEdXJhdGlvbixcbiAgICAgICAgdG90YWxSZWFkczogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbFdyaXRlczogbWV0cmljcy50b3RhbFdyaXRlcyxcbiAgICAgICAgdG90YWxDb21taXRzOiBtZXRyaWNzLnRvdGFsQ29tbWl0cyxcbiAgICAgICAgdG90YWxQYXVzZXM6IG1ldHJpY3MudG90YWxQYXVzZXMsXG4gICAgICAgIHN0ZXBzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBzdGF0ZSDigJQgY2FsbGVkIGJ5IGV4ZWN1dG9yIGJlZm9yZSBlYWNoIHJ1bigpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmNsZWFyKCk7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuY2xlYXIoKTtcbiAgICB0aGlzLmN1cnJlbnRSdW50aW1lU3RhZ2VJZCA9ICcnO1xuICB9XG5cbiAgLyoqIEFsaWFzIGZvciBjbGVhcigpIChiYWNrd2FyZCBjb21wYXQpLiAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
package/dist/esm/trace.js
CHANGED
|
@@ -42,19 +42,8 @@ export { BoundaryStateStore } from './lib/recorder/BoundaryStateStore.js';
|
|
|
42
42
|
export { KeyedStore } from './lib/recorder/KeyedStore.js';
|
|
43
43
|
export { SequenceStore } from './lib/recorder/SequenceStore.js';
|
|
44
44
|
export { CommitRangeIndex } from './lib/recorder/CommitRangeIndex.js';
|
|
45
|
-
// ── Abstract bases (DEPRECATED in v5 — slated for removal) ───────
|
|
46
|
-
// Kept during the v5 migration window for downstream consumers
|
|
47
|
-
// (agentfootprint, agentfootprint-lens, etc.) that still extend
|
|
48
|
-
// them. Migrate to the corresponding Store class above.
|
|
49
|
-
// KeyedRecorder — base class for 1:1 Map-based recorders
|
|
50
|
-
export { KeyedRecorder } from './lib/recorder/KeyedRecorder.js';
|
|
51
|
-
// SequenceRecorder — base class for 1:N ordered sequence recorders with keyed index
|
|
52
|
-
export { SequenceRecorder } from './lib/recorder/SequenceRecorder.js';
|
|
53
|
-
// BoundaryStateTracker — base class for transient bracket-scoped state
|
|
54
|
-
// (live state DURING a matched [start, stop] event interval; clears on stop)
|
|
55
|
-
export { BoundaryStateTracker } from './lib/recorder/BoundaryStateTracker.js';
|
|
56
45
|
export { TopologyRecorder, topologyRecorder } from './lib/recorder/TopologyRecorder.js';
|
|
57
46
|
export { InOutRecorder, inOutRecorder, ROOT_RUNTIME_STAGE_ID, ROOT_SUBFLOW_ID } from './lib/recorder/InOutRecorder.js';
|
|
58
47
|
export { QualityRecorder } from './lib/recorder/QualityRecorder.js';
|
|
59
48
|
export { formatQualityTrace, qualityTrace } from './lib/recorder/qualityTrace.js';
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUlILE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixZQUFZLEdBQ2IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUt4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RixtRUFBbUU7QUFDbkUsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUNqRSw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQVV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUt4RixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUl2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBmb290cHJpbnRqcy90cmFjZSDigJQgRXhlY3V0aW9uIHRyYWNpbmcsIGRlYnVnZ2luZywgYW5kIGJhY2t0cmFja2luZyB1dGlsaXRpZXMuXG4gKlxuICogUnVudGltZSBzdGFnZSBJRHMsIGNvbW1pdCBsb2cgcXVlcmllcywgYW5kIHJlY29yZGVyIGJhc2UgY2xhc3Nlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgcGFyc2VSdW50aW1lU3RhZ2VJZCwgZmluZExhc3RXcml0ZXIsIEtleWVkU3RvcmUsIFNlcXVlbmNlU3RvcmUgfSBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7XG4gKlxuICogLy8gUGFyc2UgYSBydW50aW1lU3RhZ2VJZFxuICogY29uc3QgeyBzdGFnZUlkLCBleGVjdXRpb25JbmRleCB9ID0gcGFyc2VSdW50aW1lU3RhZ2VJZCgnY2FsbC1sbG0jNScpO1xuICpcbiAqIC8vIEJhY2t0cmFjazogd2hvIHdyb3RlICdzeXN0ZW1Qcm9tcHQnIGJlZm9yZSBjb21taXQgYXQgaWR4IDg/XG4gKiBjb25zdCB3cml0ZXIgPSBmaW5kTGFzdFdyaXRlcihjb21taXRMb2csICdzeXN0ZW1Qcm9tcHQnLCA4KTtcbiAqXG4gKiAvLyB2NSBwcmltYXJ5IEFQSTogY29tcG9zZSBhIFN0b3JlIGFzIGEgZmllbGQgKG9uZSBwdXJwb3NlIHBlciByZWNvcmRlcikuXG4gKiAvLyBLZXllZFN0b3JlPFQ+IOKAlCAxOjEgKG9uZSBlbnRyeSBwZXIgc3RlcClcbiAqIGNsYXNzIE15UmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICdteS1yZWNvcmRlcic7XG4gKiAgIHByaXZhdGUgc3RvcmUgPSBuZXcgS2V5ZWRTdG9yZTxNeUVudHJ5PigpO1xuICogICBvbldyaXRlKGUpIHsgdGhpcy5zdG9yZS5zZXQoZS5ydW50aW1lU3RhZ2VJZCwgeyAuLi4gfSk7IH1cbiAqIH1cbiAqXG4gKiAvLyBTZXF1ZW5jZVN0b3JlPFQ+IOKAlCAxOk4gKG11bHRpcGxlIGVudHJpZXMgcGVyIHN0ZXAsIG9yZGVyaW5nIG1hdHRlcnMpXG4gKiBjbGFzcyBBdWRpdFJlY29yZGVyIHtcbiAqICAgcmVhZG9ubHkgaWQgPSAnYXVkaXQnO1xuICogICBwcml2YXRlIHN0b3JlID0gbmV3IFNlcXVlbmNlU3RvcmU8QXVkaXRFbnRyeT4oKTtcbiAqICAgb25SZWFkKGUpIHsgdGhpcy5zdG9yZS5wdXNoKHsgcnVudGltZVN0YWdlSWQ6IGUucnVudGltZVN0YWdlSWQsIC4uLiB9KTsgfVxuICogfVxuICogYGBgXG4gKi9cblxuLy8gUnVudGltZSBzdGFnZSBJRCDigJQgdW5pcXVlIGV4ZWN1dGlvbiBzdGVwIGlkZW50aWZpZXJzXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkNvdW50ZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRSdW50aW1lU3RhZ2VJZCxcbiAgY3JlYXRlRXhlY3V0aW9uQ291bnRlcixcbiAgcGFyc2VSdW50aW1lU3RhZ2VJZCxcbiAgc3BsaXRTdGFnZUlkLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuXG4vLyB3YWxrU3ViZmxvd1NwZWMg4oCUIGZsYXQgb3JkZXJlZCB0cmF2ZXJzYWwgb2YgYSBzdWJmbG93J3Mgc3RydWN0dXJlXG4vLyAoY29uc3VtZSB2aWEgU3RydWN0dXJlUmVjb3JkZXIub25TdWJmbG93TW91bnRlZCdzIHN1YmZsb3dTcGVjIHBheWxvYWQpXG5leHBvcnQgdHlwZSB7IFdhbGtlckl0ZW0sIFdhbGtlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLmpzJztcbmV4cG9ydCB7IHdhbGtTdWJmbG93U3BlYyB9IGZyb20gJy4vbGliL2VuZ2luZS93YWxrU3ViZmxvd1NwZWMuanMnO1xuXG4vLyBDb21taXQgbG9nIHF1ZXJpZXMg4oCUIHR5cGVkIHV0aWxpdGllcyBmb3IgYmFja3RyYWNraW5nXG5leHBvcnQgeyBmaW5kQ29tbWl0LCBmaW5kQ29tbWl0cywgZmluZExhc3RXcml0ZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuXG4vLyBDYXVzYWwgY2hhaW4g4oCUIGJhY2t3YXJkIHByb2dyYW0gc2xpY2luZyBvbiBjb21taXQgbG9nIChEQUcpXG5leHBvcnQgdHlwZSB7IENhdXNhbENoYWluT3B0aW9ucywgQ2F1c2FsTm9kZSwgS2V5c1JlYWRMb29rdXAgfSBmcm9tICcuL2xpYi9tZW1vcnkvYmFja3RyYWNrLmpzJztcbmV4cG9ydCB7IGNhdXNhbENoYWluLCBmbGF0dGVuQ2F1c2FsREFHLCBmb3JtYXRDYXVzYWxDaGFpbiB9IGZyb20gJy4vbGliL21lbW9yeS9iYWNrdHJhY2suanMnO1xuXG4vLyDilIDilIAgdjUgU3RvcmVzIChjb25jcmV0ZSwgY29tcG9zYWJsZSDigJQgcHJpbWFyeSByZWNvcmRlciBBUEkpIOKUgOKUgOKUgOKUgOKUgFxuLy8gQ29tcG9zZSB0aGVzZSB2aWEgYG5ldyBTdG9yZTxUPigpYCBhcyBhIGZpZWxkIG9uIHlvdXIgcmVjb3JkZXJcbi8vIGNsYXNzLiBPbmUgcHVycG9zZSBwZXIgcmVjb3JkZXI6IHN0b3JlcyBhcmUgc3RvcmFnZTsgcmVjb3JkZXJzXG4vLyBhcmUgZXZlbnQtaG9vayBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25zLlxuZXhwb3J0IHsgQm91bmRhcnlTdGF0ZVN0b3JlIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQm91bmRhcnlTdGF0ZVN0b3JlLmpzJztcbmV4cG9ydCB7IEtleWVkU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9LZXllZFN0b3JlLmpzJztcbmV4cG9ydCB7IFNlcXVlbmNlU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9TZXF1ZW5jZVN0b3JlLmpzJztcblxuLy8g4pSA4pSAIHY1LjEgQ29tbWl0IGdyb3VwaW5nIHByaW1pdGl2ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEludGVydmFsIGluZGV4IG92ZXIgY29tbWl0IGluZGljZXMuIEJ1aWx0IGluY3JlbWVudGFsbHkgZHVyaW5nXG4vLyB0cmF2ZXJzYWw6IG9wZW4oKSBvbiBib3VuZGFyeSBlbnRyeSwgY2xvc2UoKSBvbiBleGl0LiBRdWVyeSBhdCBhbnlcbi8vIGNvbW1pdCBwb3NpdGlvbiB3aXRoIGVuY2xvc2luZygpL292ZXJsYXBwaW5nKCkuIEdlbmVyaWMgb3ZlciBUTGFiZWxcbi8vIOKAlCBmb290cHJpbnRqcyBvd25zIFpFUk8ga25vd2xlZGdlIG9mIHdoYXQgY29uc3VtZXJzIHVzZSBhcyBsYWJlbHMuXG4vLyBTZWUgZG9jcy9kZXNpZ24vY29tbWl0LXJhbmdlLWluZGV4Lm1kIGZvciB0aGUgZnVsbCBjb250cmFjdC5cbmV4cG9ydCB0eXBlIHsgUmFuZ2VFbnRyeSwgUmFuZ2VUb2tlbiB9IGZyb20gJy4vbGliL3JlY29yZGVyL0NvbW1pdFJhbmdlSW5kZXguanMnO1xuZXhwb3J0IHsgQ29tbWl0UmFuZ2VJbmRleCB9IGZyb20gJy4vbGliL3JlY29yZGVyL0NvbW1pdFJhbmdlSW5kZXguanMnO1xuXG4vLyBUb3BvbG9neVJlY29yZGVyIOKAlCBjb21wb3NpdGlvbiBncmFwaCBhY2N1bXVsYXRvciAoc3ViZmxvd3MgKyBjb250cm9sLWZsb3cgZWRnZXMpXG5leHBvcnQgdHlwZSB7XG4gIFRvcG9sb2d5LFxuICBUb3BvbG9neUVkZ2UsXG4gIFRvcG9sb2d5SW5jb21pbmdLaW5kLFxuICBUb3BvbG9neU5vZGUsXG4gIFRvcG9sb2d5UmVjb3JkZXJPcHRpb25zLFxufSBmcm9tICcuL2xpYi9yZWNvcmRlci9Ub3BvbG9neVJlY29yZGVyLmpzJztcbmV4cG9ydCB7IFRvcG9sb2d5UmVjb3JkZXIsIHRvcG9sb2d5UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Ub3BvbG9neVJlY29yZGVyLmpzJztcblxuLy8gSW5PdXRSZWNvcmRlciDigJQgY2hhcnQgaW4vb3V0IHN0cmVhbSAoZW50cnkvZXhpdCBwYWlycyBhdCBldmVyeSBjaGFydCBib3VuZGFyeSxcbi8vIGluY2x1ZGluZyB0aGUgdG9wLWxldmVsIHJ1biBhbmQgZXZlcnkgc3ViZmxvdylcbmV4cG9ydCB0eXBlIHsgSW5PdXRFbnRyeSwgSW5PdXRQaGFzZSwgSW5PdXRSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Jbk91dFJlY29yZGVyLmpzJztcbmV4cG9ydCB7IEluT3V0UmVjb3JkZXIsIGluT3V0UmVjb3JkZXIsIFJPT1RfUlVOVElNRV9TVEFHRV9JRCwgUk9PVF9TVUJGTE9XX0lEIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvSW5PdXRSZWNvcmRlci5qcyc7XG5cbi8vIFF1YWxpdHlSZWNvcmRlciDigJQgcGVyLXN0ZXAgcXVhbGl0eSBzY29yaW5nIHdpdGggYmFja3RyYWNraW5nXG5leHBvcnQgdHlwZSB7IFF1YWxpdHlFbnRyeSwgUXVhbGl0eVJlY29yZGVyT3B0aW9ucywgUXVhbGl0eVNjb3JpbmdGbiB9IGZyb20gJy4vbGliL3JlY29yZGVyL1F1YWxpdHlSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBRdWFsaXR5UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIuanMnO1xuXG4vLyBxdWFsaXR5VHJhY2Ug4oCUIFF1YWxpdHkgU3RhY2sgVHJhY2UgKGJhY2t0cmFjayBmcm9tIGxvdy1zY29yaW5nIHN0ZXBzKVxuZXhwb3J0IHR5cGUgeyBRdWFsaXR5RnJhbWUsIFF1YWxpdHlTdGFja1RyYWNlIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvcXVhbGl0eVRyYWNlLmpzJztcbmV4cG9ydCB7IGZvcm1hdFF1YWxpdHlUcmFjZSwgcXVhbGl0eVRyYWNlIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvcXVhbGl0eVRyYWNlLmpzJztcbiJdfQ==
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* - Runtime events carry `runtimeStageId` (`[subflowPath/]stageId#N`),
|
|
17
17
|
* `iteration`, `traversalContext` — load-bearing for time-travel
|
|
18
|
-
* UIs, commit-log indices, and `
|
|
18
|
+
* UIs, commit-log indices, and `SequenceStore<T>` consumers.
|
|
19
19
|
* NONE of these exist at build time.
|
|
20
20
|
*
|
|
21
21
|
* - Build events carry only `stageId` + structural fields. No
|
|
@@ -156,4 +156,4 @@
|
|
|
156
156
|
* ```
|
|
157
157
|
*/
|
|
158
158
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvc3RydWN0dXJlL1N0cnVjdHVyZVJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EySkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0cnVjdHVyZVJlY29yZGVyIOKAlCBwYXNzaXZlIG9ic2VydmVyIG9mIEJVSUxELVRJTUUgY2hhcnQgY29uc3RydWN0aW9uIGV2ZW50cy5cbiAqXG4gKiBUaGUgYnVpbGQtdGltZSB0d2luIG9mIGBGbG93UmVjb3JkZXJgLiBXaGVyZSBgRmxvd1JlY29yZGVyYCBvYnNlcnZlc1xuICogUlVOVElNRSBjb250cm9sLWZsb3cgdHJhbnNpdGlvbnMgKHBlci1leGVjdXRpb24gYHJ1bnRpbWVTdGFnZUlkYCxcbiAqIGl0ZXJhdGlvbiBjb3VudHMsIGVycm9ycywgcGF1c2VzKSwgYFN0cnVjdHVyZVJlY29yZGVyYCBvYnNlcnZlc1xuICogU1RBVElDIGNoYXJ0IHNoYXBlIGFzIGl0J3MgYXNzZW1ibGVkIGJ5IHRoZSBidWlsZGVyIOKAlCBldmVyeSBzcGVjXG4gKiBub2RlIGFkZGVkLCBldmVyeSBvdXRnb2luZyBlZGdlIHdpcmVkLCBldmVyeSBkZWNpZGVyIGNsb3NlZC5cbiAqXG4gKiBXaHkgdHdvIGludGVyZmFjZXMsIG5vdCBvbmVcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICBCdWlsZCBhbmQgcnVudGltZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgSU5WQVJJQU5UUywgbm90IGp1c3RcbiAqICAgZGlmZmVyZW50IHRpbWluZzpcbiAqXG4gKiAgICAgLSBSdW50aW1lIGV2ZW50cyBjYXJyeSBgcnVudGltZVN0YWdlSWRgIChgW3N1YmZsb3dQYXRoL11zdGFnZUlkI05gKSxcbiAqICAgICAgIGBpdGVyYXRpb25gLCBgdHJhdmVyc2FsQ29udGV4dGAg4oCUIGxvYWQtYmVhcmluZyBmb3IgdGltZS10cmF2ZWxcbiAqICAgICAgIFVJcywgY29tbWl0LWxvZyBpbmRpY2VzLCBhbmQgYFNlcXVlbmNlUmVjb3JkZXI8VD5gIGNvbnN1bWVycy5cbiAqICAgICAgIE5PTkUgb2YgdGhlc2UgZXhpc3QgYXQgYnVpbGQgdGltZS5cbiAqXG4gKiAgICAgLSBCdWlsZCBldmVudHMgY2Fycnkgb25seSBgc3RhZ2VJZGAgKyBzdHJ1Y3R1cmFsIGZpZWxkcy4gTm9cbiAqICAgICAgIGV4ZWN1dGlvbiBpbmRleCwgbm8gaXRlcmF0aW9uLCBubyBzbmFwc2hvdC5cbiAqXG4gKiAgICAgLSBTb21lIGV2ZW50cyBoYXZlIG5vIGFuYWxvZyBhY3Jvc3MgcGhhc2VzOiBgb25QYXVzZWAgL1xuICogICAgICAgYG9uUmVzdW1lYCAvIGBvbkVycm9yYCAvIGBvblJ1blN0YXJ0YCBhcmUgcnVudGltZS1vbmx5O1xuICogICAgICAgYG9uRGVjaWRlckNvbXBsZXRlYCAvIGBvblN0YWdlQWRkZWRgIGFyZSBidWlsZC1vbmx5LlxuICpcbiAqICAgQSBzaW5nbGUgYEZsb3dSZWNvcmRlcmAgd2l0aCBgcGhhc2U6ICdzdGF0aWMnIHwgJ2R5bmFtaWMnYFxuICogICBkaXNjcmltaW5hdG9yIHdvdWxkIGZvcmNlIGV2ZXJ5IGNvbnN1bWVyIHRvIHdyaXRlXG4gKiAgIGBpZiAoZS5waGFzZSA9PT0gJ3N0YXRpYycpIC4uLmAgYnJhbmNoZXMgYW5kIHdvdWxkIGVyYXNlIHRoZVxuICogICBsZWFzdC1wcml2aWxlZ2UgYm91bmRhcnkgKGEgc3RhdGljLW9ubHkgY29uc3VtZXIgc2hvdWxkIE5PVFxuICogICBhY2NpZGVudGFsbHkgb2JzZXJ2ZSBydW50aW1lIGRhdGEg4oCUIGUuZy4sIGEgcHVibGljIGRvY3Mgc2l0ZVxuICogICByZW5kZXJpbmcgY2hhcnQgdG9wb2xvZ3kgbXVzdCBub3Qgc2VlIHNjb3BlIHZhbHVlcykuXG4gKlxuICogICBUd28gaW50ZXJmYWNlcywgc2FtZSBtZW50YWwgbW9kZWwsIGNsZWFuIHNlcGFyYXRpb24uIFR3b1xuICogICByZWdpc3RyYXRpb24gc2l0ZXMgc2hpcCB0b2RheSAocGljayB3aGljaGV2ZXIgZml0cyB5b3VyIGNhbGxcbiAqICAgc2l0ZSk6XG4gKlxuICogICAgIDEuICoqT3B0aW9ucy1iYWcqKiAocHJlZmVycmVkIHdoZW4gdGhlIHJlY29yZGVyIHNldCBpcyBrbm93blxuICogICAgICAgIGF0IGNvbnN0cnVjdGlvbiB0aW1lIOKAlCByZWdpc3RlcnMgQkVGT1JFIGBzdGFydCgpYCBzbyBldmVuXG4gKiAgICAgICAgdGhlIHNlZWQgZXZlbnQgZmlyZXMgdGhyb3VnaCB0aGUgbm9ybWFsIGRpc3BhdGNoZXIgZmFuLW91dCk6XG4gKiAgICAgICAgYGBgdHNcbiAqICAgICAgICBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnLCB7IHN0cnVjdHVyZVJlY29yZGVyczogW3JlY10gfSlcbiAqICAgICAgICAgIC5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKS5idWlsZCgpO1xuICogICAgICAgIGBgYFxuICpcbiAqICAgICAyLiAqKkZsdWVudCoqIChwcmVmZXJyZWQgd2hlbiBhdHRhY2ggaXMgY29uZGl0aW9uYWwsIGxhdGUsIG9yXG4gKiAgICAgICAgaW4gYSBjaGFpbiBidWlsZGVyIOKAlCB0aGUganVzdC1hdHRhY2hlZCByZWNvcmRlciBnZXRzIGFcbiAqICAgICAgICBvbmUtdGltZSBzZWVkIHJlcGxheSBzbyBpdCBvYnNlcnZlcyB0aGUgcm9vdCBzdGFnZSk6XG4gKiAgICAgICAgYGBgdHNcbiAqICAgICAgICBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnKVxuICogICAgICAgICAgLmF0dGFjaFN0cnVjdHVyZVJlY29yZGVyKHJlYylcbiAqICAgICAgICAgIC5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKS5idWlsZCgpO1xuICogICAgICAgIGBgYFxuICpcbiAqICAgQm90aCBkZWxpdmVyIHRoZSBzYW1lIGV2ZW50IHN0cmVhbSB0byB0aGUgc2FtZSByZWNvcmRlci4gU2VlIHRoZVxuICogICBgQGV4YW1wbGVgIGJsb2NrIGJlbG93IGZvciBhIGZ1bGx5LWZsZXNoZWQtb3V0IGltcGxlbWVudGF0aW9uLlxuICpcbiAqIExpZmVjeWNsZSArIG9yZGVyaW5nIGludmFyaWFudHNcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEZpcmVzIFNZTkNIUk9OT1VTTFkgZHVyaW5nIGJ1aWxkZXIgY2hhaW4gY2FsbHMgKGFuZCBkdXJpbmdcbiAqICAgICBgLmJ1aWxkKClgIGZvciB0aGUgdGVybWluYWwgbm9kZSkgYXQgdGhlIG5hdHVyYWwgbW9tZW50IGVhY2hcbiAqICAgICBzcGVjIG11dGF0aW9uIGNvbXBsZXRlcy5cbiAqICAgLSBgb25TdGFnZUFkZGVkKEEpYCBhbmQgYG9uU3RhZ2VBZGRlZChCKWAgZmlyZSBCRUZPUkUgYW55XG4gKiAgICAgYG9uRWRnZUFkZGVkKHtmcm9tOiBBLCB0bzogQn0pYCDigJQgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXG4gKiAgICAgaGFwcGVucyBiZWZvcmUgZWRnZSB3aXJpbmcuXG4gKiAgIC0gYG9uRGVjaWRlckNvbXBsZXRlKEQpYCBmaXJlcyBhdCBzdWItYnVpbGRlciBgLmVuZCgpYCB0aW1lLCBBRlRFUlxuICogICAgIGV2ZXJ5IGNoaWxkJ3MgYG9uU3RhZ2VBZGRlZGAgYW5kIGV2ZXJ5IGBvbkVkZ2VBZGRlZCh7ZnJvbTogRCxcbiAqICAgICB0bzogY2hpbGR9KWAuIE1hcmtzIHRoZSBkZWNpZGVyIGFzIG5vLWZ1cnRoZXItbXV0YXRpb24uXG4gKiAgIC0gYG9uU3ViZmxvd01vdW50ZWQoe3N1YmZsb3dJZH0pYCBmaXJlcyBvbmNlIHBlciBtb3VudC5cbiAqICAgICAqKk1PVU5ULU9OTFkqKjogcGFyZW50IHJlY29yZGVycyBkbyBOT1QgcmVjZWl2ZSBhIHJlcGxheSBvZlxuICogICAgIHRoZSBzdWJmbG93J3Mgb3duIGludGVybmFsIHN0cnVjdHVyZSBldmVudHMgKHRob3NlIGZpcmVkXG4gKiAgICAgZHVyaW5nIHRoZSBzdWJmbG93J3Mgb3duIGAuYnVpbGQoKWApLiBNYXRjaGVzIHRoZSBydW50aW1lXG4gKiAgICAgYG9uU3ViZmxvd0VudHJ5YCBzZW1hbnRpY3Mg4oCUIGNvbXBvc2l0aW9uIG92ZXIgcmVwbGF5LlxuICpcbiAqIEVycm9yIGlzb2xhdGlvbiAobWF0Y2hlcyBGbG93UmVjb3JkZXIgY29udHJhY3QpXG4gKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAqICAgLSBBIHRocm93aW5nIGhhbmRsZXIgaXMgY2F1Z2h0LCBsb2dnZWQgdmlhIGBpc0Rldk1vZGUoKWAgd2FybmluZyxcbiAqICAgICBhbmQgYWNjdW11bGF0ZWQgb24gYGJ1aWxkZXIuZ2V0U3RydWN0dXJlQnVpbGRFcnJvcnMoKWAgZm9yXG4gKiAgICAgcG9zdC1ob2MgaW5zcGVjdGlvbi5cbiAqICAgLSBTdWJzZXF1ZW50IHJlY29yZGVycyArIHN1YnNlcXVlbnQgZXZlbnRzIGZpcmUgbm9ybWFsbHk7IG9uZVxuICogICAgIG1pc2JlaGF2aW5nIHJlY29yZGVyIGNhbm5vdCBUSFJPVyBpdHMgd2F5IGludG8gYmxvY2tpbmdcbiAqICAgICBjb25zdHJ1Y3Rpb24uXG4gKiAgIC0gVGhlIGVycm9yc1tdIGFjY3VtdWxhdG9yIGlzIHNvZnQtY2FwcGVkICh+MTAwIGVudHJpZXMpIHdpdGggYVxuICogICAgIGBfX3RydW5jYXRlZF9fYCBzZW50aW5lbCByZWNvcmQgb25jZSB0aGUgY2FwIGlzIGhpdCwgdG8gcHJldmVudFxuICogICAgIHVuYm91bmRlZCBncm93dGggb24gY2hhdHR5IGJyb2tlbiByZWNvcmRlcnMuXG4gKiAgIC0gTm90ZTogdGhyb3cgaXNvbGF0aW9uIGRvZXMgTk9UIGRlZmVuZCBhZ2FpbnN0IGEgaGFuZGxlciB0aGF0XG4gKiAgICAgc3VjY2VlZHMgYXQgcnVudGltZSBidXQgbXV0YXRlcyBgZXZlbnQuc3BlY2AgdG8gY29ycnVwdCB0aGVcbiAqICAgICBjaGFydC4gU2VlIFwiU3BlYyBtdXRhdGlvblwiIGJlbG93LlxuICpcbiAqIFNwZWMgbXV0YXRpb24g4oCUIHJlYWRvbmx5LWJ5LWNvbnRyYWN0IChOT1QgcnVudGltZS1lbmZvcmNlZClcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEV2ZW50IHBheWxvYWRzIHBhc3Mgc3BlYyByZWZlcmVuY2VzIHdoZXJlIHVzZWZ1bCAoZS5nLiwgYHNwZWNgXG4gKiAgICAgb24gYG9uU3RhZ2VBZGRlZGApLiBFdmVyeSBmaWVsZCBvbiBldmVyeSBldmVudCBwYXlsb2FkIGlzXG4gKiAgICAgbWFya2VkIGByZWFkb25seWAgaW4gVHlwZVNjcmlwdCDigJQgdGhlIHR5cGUgc3lzdGVtIHNpZ25hbHNcbiAqICAgICBjb25zdW1lciBpbnRlbnQgYXQgYXV0aG9yIHRpbWUuXG4gKiAgIC0gVGhlcmUgaXMgTk8gcnVudGltZSBmcmVlemUuIFRoZSBidWlsZGVyIGZpcmVzIGBvblN0YWdlQWRkZWRgXG4gKiAgICAgSU1NRURJQVRFTFkgd2hlbiBhIHNwZWMgbm9kZSBpcyBhZGRlZCwgQkVGT1JFIHRoZSBidWlsZGVyXG4gKiAgICAgd2lyZXMgdGhhdCBub2RlJ3MgYC5uZXh0YC9gLmNoaWxkcmVuYC9gLmxvb3BUYXJnZXRgIGluIHRoZVxuICogICAgIHN1YnNlcXVlbnQgYGFkZFhgIGNhbGwuIEZyZWV6aW5nIGhlcmUgd291bGQgYnJlYWsgdGhlXG4gKiAgICAgYnVpbGRlcidzIG93biBzdWJzZXF1ZW50IG11dGF0aW9uLlxuICogICAtIEhhbmRsZXIgbXV0YXRpb24gb2YgYGV2ZW50LnNwZWNgIGlzIERPQ1VNRU5URUQgVU5ERUZJTkVEXG4gKiAgICAgQkVIQVZJT1Ig4oCUIGl0IHdpbGwgc3VjY2VlZCBhdCBydW50aW1lLCBidXQgaXMgbm90IHN1cHBvcnRlZFxuICogICAgIGFuZCBkb3duc3RyZWFtIGNvbnN1bWVycyBtYXkgYnJlYWsuIFNwZWNpZmljYWxseSwgbXV0YXRpbmdcbiAqICAgICBgZXZlbnQuc3BlYy5mbmAsIGBldmVudC5zcGVjLmlkYCwgb3IgYGV2ZW50LnNwZWMuY2hpbGRyZW5gXG4gKiAgICAgY2FuIGNvcnJ1cHQgc3Vic2VxdWVudCBydW50aW1lIGJlaGF2aW9yIG9mIHRoZSBjaGFydC5cbiAqICAgLSAqKlRydXN0IG1vZGVsKio6IGF0dGFjaCBPTkxZIHJlY29yZGVycyBmcm9tIHRydXN0ZWQgY29kZSBwYXRocy5cbiAqICAgICBBIGhvc3RpbGUgb3IgYnVnZ3kgcmVjb3JkZXIgY2FuIGVmZmVjdGl2ZWx5IHN1YnN0aXR1dGUgc3RhZ2VcbiAqICAgICBmdW5jdGlvbnMgb3IgcmV3aXJlIHRoZSBjaGFydCBzdHJ1Y3R1cmUuIFRoZSBgcmVhZG9ubHlgXG4gKiAgICAgbWFya2VycyBjYW5ub3QgZGVmZW5kIGFnYWluc3QgaW50ZW50aW9uYWwgbXV0YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjbGFzcyBUcmFjZVN0cnVjdHVyZVJlY29yZGVyIGltcGxlbWVudHMgU3RydWN0dXJlUmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICd0cmFjZS1zdGF0aWMnO1xuICogICBub2RlczogWHlmbG93Tm9kZVtdID0gW107XG4gKiAgIGVkZ2VzOiBYeWZsb3dFZGdlW10gPSBbXTtcbiAqXG4gKiAgIG9uU3RhZ2VBZGRlZChlKSB7XG4gKiAgICAgLy8gTm9kZSByb2xlOiAnc3RhZ2UnIGlzIHRoZSBpbml0aWFsIHR5cGUuIElmIG91dGdvaW5nIGVkZ2VzXG4gKiAgICAgLy8gYXJyaXZlIHdpdGgga2luZCAnZm9yay1icmFuY2gnIC8gJ2RlY2lzaW9uLWJyYW5jaCcgdGhlIG5vZGVcbiAqICAgICAvLyBpcyBmdW5jdGlvbmluZyBhcyBhIGZvcmsvZGVjaWRlciDigJQgZGVyaXZlIHRoZSB2aXN1YWwgc3R5bGVcbiAqICAgICAvLyBmcm9tIHRob3NlIGVkZ2VzLCBub3QgZnJvbSBgZS50eXBlYCBhbG9uZS5cbiAqICAgICB0aGlzLm5vZGVzLnB1c2goeyBpZDogZS5zdGFnZUlkLCB0eXBlOiAnbGVuc1N0YWdlJywgZGF0YTogeyBsYWJlbDogZS5uYW1lIH0gfSk7XG4gKiAgIH1cbiAqICAgb25FZGdlQWRkZWQoZSkge1xuICogICAgIHRoaXMuZWRnZXMucHVzaCh7IGlkOiBgJHtlLmZyb219LT4ke2UudG99YCwgc291cmNlOiBlLmZyb20sIHRhcmdldDogZS50byB9KTtcbiAqICAgfVxuICogICBvblN1YmZsb3dNb3VudGVkKGUpIHtcbiAqICAgICB0aGlzLm5vZGVzLnB1c2goeyBpZDogZS5zdWJmbG93SWQsIHR5cGU6ICdzdWJmbG93JywgZGF0YTogeyBsYWJlbDogZS5zdWJmbG93TmFtZSB9IH0pO1xuICogICB9XG4gKiAgIG9uRGVjaWRlckNvbXBsZXRlKGUpIHtcbiAqICAgICAvLyBPcHRpb25hbDogZmluYWxpemUgbm9kZSBzdHlsaW5nIG5vdyB0aGF0IGJyYW5jaCBsaXN0IGlzIHNlYWxlZC5cbiAqICAgfVxuICogfVxuICpcbiAqIC8vIFJlZ2lzdHJhdGlvbiBvcHRpb24gQSDigJQgb3B0aW9ucy1iYWcgKHByZWZlcnJlZCB3aGVuIHJlY29yZGVyc1xuICogLy8gYXJlIGtub3duIHVwIGZyb250OyBhdHRhY2hlcyBCRUZPUkUgdGhlIHNlZWQgZXZlbnQgZmlyZXMpOlxuICogY29uc3QgcmVjID0gbmV3IFRyYWNlU3RydWN0dXJlUmVjb3JkZXIoKTtcbiAqIGNvbnN0IGJ1aWxkZXIgPSBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnLCB7XG4gKiAgIHN0cnVjdHVyZVJlY29yZGVyczogW3JlY10sXG4gKiB9KS5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKTtcbiAqIGNvbnN0IGNoYXJ0ID0gYnVpbGRlci5idWlsZCgpO1xuICpcbiAqIC8vIFJlZ2lzdHJhdGlvbiBvcHRpb24gQiDigJQgZmx1ZW50IGNoYWluIChwcmVmZXJyZWQgZm9yIGNvbmRpdGlvbmFsXG4gKiAvLyBvciBsYXRlIGF0dGFjaDsgdGhlIGp1c3QtYXR0YWNoZWQgcmVjb3JkZXIgZ2V0cyBhIHNlZWQgcmVwbGF5KTpcbiAqIGNvbnN0IHJlYzIgPSBuZXcgVHJhY2VTdHJ1Y3R1cmVSZWNvcmRlcigpO1xuICogY29uc3QgYnVpbGRlcjIgPSBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnKVxuICogICAuYXR0YWNoU3RydWN0dXJlUmVjb3JkZXIocmVjMilcbiAqICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpO1xuICpcbiAqIC8vIEluc3BlY3QgYW55IHJlY29yZGVyIGVycm9ycyAoY2FsbCBvbiB0aGUgQlVJTERFUiwgbm90IHRoZSBjaGFydCk6XG4gKiBjb25zdCBlcnJvcnMgPSBidWlsZGVyLmdldFN0cnVjdHVyZUJ1aWxkRXJyb3JzKCk7XG4gKlxuICogPFJlYWN0RmxvdyBub2Rlcz17cmVjLm5vZGVzfSBlZGdlcz17cmVjLmVkZ2VzfSAvPlxuICogYGBgXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnRTcGVjLCBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRXZlbnQgcGF5bG9hZCB0eXBlc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogRXZlbnQgcGF5bG9hZCBmb3IgYFN0cnVjdHVyZVJlY29yZGVyLm9uU3RhZ2VBZGRlZGAuIEZpcmVzIGZvciBldmVyeVxuICogc3BlYyBub2RlIGFkZGVkIHRvIHRoZSBjaGFydCwgaW5jbHVkaW5nIHRoZSBzZWVkIChhZGRlZCB2aWFcbiAqIGBmbG93Q2hhcnQoKWAgZmFjdG9yeSkgYW5kIHN1YmZsb3cgbW91bnQgbm9kZXMuIEV4Y2x1ZGVzIHN5bnRoZXRpY1xuICogbG9vcC1yZWZlcmVuY2Ugbm9kZXMgKHRob3NlIGNhcnJ5IGBpc0xvb3BSZWZlcmVuY2U6IHRydWVgIG9uIHRoZVxuICogc3BlYzsgY29uc3VtZXJzIHNlZSB0aGVtIHZpYSB0aGUgc2VwYXJhdGUgYG9uTG9vcEVkZ2VBZGRlZGAgZXZlbnRcbiAqIGluc3RlYWQgb2YgYXMgZnJlc2ggc3RhZ2VzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQge1xuICAvKipcbiAgICogU3RhYmxlIGlkZW50aWZpZXIgZm9yIHRoaXMgbm9kZS4gQVQgRVZFTlQgRklSRSBUSU1FIHRoaXMgaXMgdGhlXG4gICAqIGJ1aWxkZXIncyBMT0NBTCBmb3JtIChubyBzdWJmbG93IHByZWZpeCDigJQgdGhlIHByZWZpeCBpcyBhcHBsaWVkXG4gICAqIGxhdGVyIGJ5IGBfcHJlZml4Tm9kZVRyZWVgIHdoZW4gdGhpcyBidWlsZGVyIGlzIG1vdW50ZWQgYXMgYVxuICAgKiBzdWJmbG93IGludG8gYSBwYXJlbnQpLlxuICAgKlxuICAgKiBOb3RlOiBgc3BlYy5pZGAgaXMgYSBMSVZFIHJlZmVyZW5jZS4gSWYgeW91IHJlYWQgaXQgQUZURVIgdGhpc1xuICAgKiBjaGFydCBoYXMgYmVlbiBtb3VudGVkIGFzIGEgc3ViZmxvdywgaXQgbWF5IGhhdmUgYmVlbiByZXdyaXR0ZW5cbiAgICogdG8gdGhlIEZVTEwgcHJlZml4ZWQgZm9ybS4gVXNlIGBzcGxpdFN0YWdlSWQoc3BlYy5pZClgIGZyb21cbiAgICogYGZvb3RwcmludGpzL3RyYWNlYCB0byBkZWNvbXBvc2UgaXQgYmFjayBpbnRvIGxvY2FsICsgc3ViZmxvd1BhdGguXG4gICAqXG4gICAqIENvcnJlbGF0aW5nIHdpdGggcnVudGltZSBldmVudHM6XG4gICAqICAgLSBTYW1lIGJ1aWxkZXIgKG5vIG1vdW50KSDihpJcbiAgICogICAgIGBldmVudC5zdGFnZUlkID09PSBwYXJzZVJ1bnRpbWVTdGFnZUlkKHJ1bnRpbWUpLnN0YWdlSWRgXG4gICAqICAgLSBUaGlzIGJ1aWxkZXIgbW91bnRlZCBhcyBzdWJmbG93IOKGkiB1c2UgYHNwbGl0U3RhZ2VJZGAgb24gdGhlXG4gICAqICAgICBwcmVmaXhlZCBmb3JtIChvciBgcGFyc2VSdW50aW1lU3RhZ2VJZGAgb24gdGhlIGZ1bGxcbiAgICogICAgIHJ1bnRpbWVTdGFnZUlkKSBiZWZvcmUgY29tcGFyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBub2RlLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTcGVjIG5vZGUgYHR5cGVgLiBMZXRzIHJlY29yZGVycyBicmFuY2ggb24gc3RhZ2UgdnMgZGVjaWRlciB2c1xuICAgKiAgZm9yayB2cyBzdWJmbG93IHdpdGhvdXQgcmUtZGVyaXZpbmcgZnJvbSBvdGhlciBmaWVsZHMuICovXG4gIHJlYWRvbmx5IHR5cGU6IE5vbk51bGxhYmxlPEZsb3dDaGFydFNwZWNbJ3R5cGUnXT47XG4gIC8qKiBUcnVlIGZvciBub2RlcyBhZGRlZCB2aWEgYGFkZFBhdXNhYmxlRnVuY3Rpb24oKWAg4oCUIHVzZWZ1bCBmb3JcbiAgICogIHZpc3VhbGlzZXJzIHRoYXQgd2FudCB0byBtYXJrIHN0YWdlcyB0aGF0IGNhbiBwYXVzZSBleGVjdXRpb24uICovXG4gIHJlYWRvbmx5IGlzUGF1c2FibGU/OiBib29sZWFuO1xuICAvKiogTGl2ZSByZWZlcmVuY2UgdG8gdGhlIGZ1bGwgc3BlYyBub2RlLCBmb3IgaGFuZGxlcnMgdGhhdCB3YW50XG4gICAqICBkZXRhaWxzIGJleW9uZCB0aGUgZGlzY3JpbWluYXRvciBmaWVsZHMgYWJvdmUuIE1VU1QgTk9UIGJlXG4gICAqICBtdXRhdGVkIGJ5IHRoZSBoYW5kbGVyIOKAlCByZWFkb25seSBpcyB0eXBlLWxldmVsIGludGVudDsgbm9cbiAgICogIHJ1bnRpbWUgZnJlZXplLiBTZWUgXCJTcGVjIG11dGF0aW9uXCIgaW4gdGhlIGZpbGUgaGVhZGVyIGZvciB0aGVcbiAgICogIHRydXN0LW1vZGVsIGNhdmVhdHMuICovXG4gIHJlYWRvbmx5IHNwZWM6IEZsb3dDaGFydFNwZWM7XG59XG5cbi8qKiBFZGdlIGtpbmRzIHRoZSBidWlsZGVyIHByb2R1Y2VzIGF0IHN0cnVjdHVyYWwgdGltZS4gTWF0Y2hlcyB0aGVcbiAqICBmb290cHJpbnRqcyBjb250cm9sLWZsb3cgdm9jYWJ1bGFyeSB1c2VkIGF0IHJ1bnRpbWUuXG4gKlxuICogIFdoeSBubyBgc3ViZmxvdy1lbnRyeWAgaGVyZTogc3ViZmxvdyBtb3VudHMgdXNlIHRoZSBsaWZlY3ljbGVcbiAqICBldmVudCBgb25TdWJmbG93TW91bnRlZGAgKG5vdCBhbiBlZGdlIGV2ZW50KS4gSWYgYSBmdXR1cmUgdXNlIGNhc2VcbiAqICBuZWVkcyB0aGUgcGFyZW504oaSc3ViZmxvdy1yb290IGVkZ2UgYXMgYSBkaXN0aW5jdCBraW5kLCBpdCdsbCBiZVxuICogIGFkZGVkIHRoZW4g4oCUIFlBR05JIG5vdyAoUGFuZWwgMywgTDcuMiByZXZpZXcpLiAqL1xuZXhwb3J0IHR5cGUgU3RydWN0dXJlRWRnZUtpbmQgPVxuICB8ICduZXh0JyAvLyBsaW5lYXIgY2hhaW46IHByZXYubmV4dCA9IGN1cnJcbiAgfCAnZm9yay1icmFuY2gnIC8vIGZvcmsgcGFyZW50IOKGkiBwYXJhbGxlbCBjaGlsZFxuICB8ICdkZWNpc2lvbi1icmFuY2gnOyAvLyBkZWNpZGVyIOKGkiBicmFuY2ggY2hpbGRcblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25FZGdlQWRkZWRgLiBGaXJlcyB3aGVuZXZlclxuICogdGhlIGJ1aWxkZXIgd2lyZXMgYW4gb3V0Z29pbmcgZWRnZSBmcm9tIG9uZSBub2RlIHRvIGFub3RoZXIuIEJvdGhcbiAqIGVuZHBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdW5jZWQgdmlhIGBvblN0YWdlQWRkZWRgIGJ5IHRoZVxuICogdGltZSB0aGlzIGZpcmVzLlxuICpcbiAqIExvb3AgYmFjay1lZGdlcyBoYXZlIHRoZWlyIE9XTiBldmVudCAoYG9uTG9vcEVkZ2VBZGRlZGApIHNvXG4gKiBjb25zdW1lcnMgY2FuIHRoZW1lIHRoZW0gZGlzdGluY3RseSBhbmQgc28gYnVpbGQtdGltZSBldmVudHMgc3RheVxuICogZnJlZSBvZiB0aGUgcnVudGltZS1vbmx5IGBpdGVyYXRpb25gIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50IHtcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xuICByZWFkb25seSB0bzogc3RyaW5nO1xuICByZWFkb25seSBraW5kOiBTdHJ1Y3R1cmVFZGdlS2luZDtcbiAgLyoqIE9wdGlvbmFsIGh1bWFuLXJlYWRhYmxlIGxhYmVsIOKAlCB1c2VkIHRvZGF5IGZvciBkZWNpZGVyIGJyYW5jaFxuICAgKiAga2V5cyAoZS5nLiwgYCdsb3cnYCwgYCdoaWdoJ2AsIGAnaGlnaCAoZGVmYXVsdCknYCkgYW5kIHBhcmFsbGVsXG4gICAqICBicmFuY2ggaWRzLiAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25Mb29wRWRnZUFkZGVkYC4gRmlyZXMgd2hlblxuICogYC5sb29wVG8odGFyZ2V0KWAgaW5zdGFsbHMgYSBiYWNrLWVkZ2UuIERpc3RpbmN0IGZyb21cbiAqIGBvbkVkZ2VBZGRlZGAgc28gY29uc3VtZXJzIGNhbiB0aGVtZSBiYWNrLWVkZ2VzIGRpZmZlcmVudGx5IGFuZFxuICogYmVjYXVzZSBydW50aW1lIGBvbkxvb3BgIGNhcnJpZXMgYGl0ZXJhdGlvbjogbnVtYmVyYCB3aGljaCBoYXMgbm9cbiAqIGJ1aWxkLXRpbWUgbWVhbmluZyDigJQga2VlcGluZyB0aGUgZXZlbnRzIHNlcGFyYXRlZCBhdm9pZHMgZm9yY2luZ1xuICogYW4gYGl0ZXJhdGlvbj86IG51bWJlcmAgbGllIGludG8gdGhlIHN0cnVjdHVyYWwgc2hhcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50IHtcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xuICByZWFkb25seSB0bzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkRlY2lkZXJDb21wbGV0ZWAuIEZpcmVzXG4gKiB3aGVuIGEgZGVjaWRlciAvIHNlbGVjdG9yIHN1Yi1idWlsZGVyIGNsb3NlcyB2aWEgYC5lbmQoKWAuIEJ5IHRoZVxuICogdGltZSB0aGlzIGZpcmVzIGV2ZXJ5IGJyYW5jaCBoYXMgYmVlbiBhbm5vdW5jZWQgYW5kIHRoZVxuICogYGRlZmF1bHRCcmFuY2hgIChpZiBzZXQgdmlhIGAuc2V0RGVmYXVsdCgpYCkgaXMgZmluYWwuIExldHNcbiAqIHJlY29yZGVycyB0cmVhdCB0aGUgZGVjaWRlciBhcyBuby1mdXJ0aGVyLW11dGF0aW9uIGFuZCBzbmFwc2hvdFxuICogaXRzIGJyYW5jaCBsaXN0IGFzIGZpbmFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50IHtcbiAgLyoqIERlY2lkZXIgLyBzZWxlY3RvciBzdGFnZSBpZC4gKi9cbiAgcmVhZG9ubHkgZGVjaWRlcjogc3RyaW5nO1xuICAvKiogU3BlYyB0eXBlIChgJ2RlY2lkZXInYCB2cyBgJ3NlbGVjdG9yJ2ApIOKAlCBleHBvc2VkIHNvIGNvbnN1bWVyc1xuICAgKiAgZG9uJ3QgbmVlZCB0byBsb29rIHVwIHRoZSBvcmlnaW5hbCBgb25TdGFnZUFkZGVkYCBldmVudC4gKi9cbiAgcmVhZG9ubHkgdHlwZTogJ2RlY2lkZXInIHwgJ3NlbGVjdG9yJztcbiAgLyoqIEJyYW5jaCBtZW1iZXIgaWRzIGluIGRlY2xhcmF0aW9uIG9yZGVyLiAqL1xuICByZWFkb25seSBicmFuY2hJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogRGVmYXVsdCBicmFuY2ggaWQgd2hlbiBzZXQgdmlhIGAuc2V0RGVmYXVsdCgpYDsgdW5kZWZpbmVkIHdoZW5cbiAgICogIG5vIGRlZmF1bHQgaXMgY29uZmlndXJlZCAoZS5nLiwgc2VsZWN0b3JzKS4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJyYW5jaD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25TdWJmbG93TW91bnRlZGAuIEZpcmVzIG9uY2VcbiAqIHBlciBzdWJmbG93IG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0YCAvIGBhZGRTdWJGbG93Q2hhcnROZXh0YCBhbmRcbiAqIHRoZWlyIGxhenkgdmFyaWFudHMpLlxuICpcbiAqICoqTU9VTlQtT05MWSBzZW1hbnRpY3MqKiDigJQgdGhlIHN1YmZsb3cncyBPV04gc3RydWN0dXJlIGV2ZW50c1xuICogKGV2ZXJ5IGBvblN0YWdlQWRkZWRgIC8gYG9uRWRnZUFkZGVkYCBpbnNpZGUgdGhlIHN1YmZsb3cpIGZpcmVkXG4gKiBkdXJpbmcgdGhlIHN1YmZsb3cncyBvd24gYC5idWlsZCgpYCwgYmVmb3JlIHRoZSBtb3VudC4gUGFyZW50XG4gKiByZWNvcmRlcnMgZG8gTk9UIHJlY2VpdmUgYSByZXBsYXkuIEluc3RlYWQsIHRoaXMgZXZlbnQgZGVsaXZlcnNcbiAqIHRoZSBzdWJmbG93J3MgZnVsbCBzdHJ1Y3R1cmUgdmlhIGBzdWJmbG93U3BlY2AsIGFuZCBjb25zdW1lcnMgY2FuXG4gKiB3YWxrIGl0IHZpYSBgd2Fsa1N1YmZsb3dTcGVjYCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAuXG4gKlxuICogVGhpcyBtYXRjaGVzIGBGbG93UmVjb3JkZXIub25TdWJmbG93RW50cnlgIHNlbWFudGljcyBhdCBydW50aW1lXG4gKiAocGFyZW50cyBzZWUgdGhlIGJvdW5kYXJ5LCBub3QgYSByZXBsYXkgb2YgaW50ZXJuYWxzKSBhbmRcbiAqIHByZXNlcnZlcyB0aGUgXCJvbmUgcHVycG9zZSBwZXIgcmVjb3JkZXJcIiBjb252ZW50aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIHRoZSBwYXJlbnQgYXNzaWduZWQgYXQgbW91bnQuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3ViZmxvdyBuYW1lLiAqL1xuICByZWFkb25seSBzdWJmbG93TmFtZTogc3RyaW5nO1xuICAvKiogTW91bnQgbm9kZSBpZCBpbiB0aGUgcGFyZW50J3MgY2hhcnQuICovXG4gIHJlYWRvbmx5IHJvb3RTdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIG1vdW50IHVzZXMgbGF6eSByZXNvbHV0aW9uIChkZWZlcnJlZCBzdWJmbG93XG4gICAqICByZXNvbHV0aW9uIHVudGlsIGV4ZWN1dGlvbikuICovXG4gIHJlYWRvbmx5IGlzTGF6eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtb3VudGVkIHN1YmZsb3cncyBjb21wbGV0ZSBzcGVjIOKAlCB0aGUgU0FNRSBPQkpFQ1RcbiAgICogKD09PSByZWZlcmVuY2UgZXF1YWxpdHkpIHJlYWNoYWJsZSB2aWEgYHN1YmZsb3cuYnVpbGRUaW1lU3RydWN0dXJlYFxuICAgKiBmb3IgdGhlIEZsb3dDaGFydCB0aGUgY29uc3VtZXIgcGFzc2VkIHRvIGBhZGRTdWJGbG93Q2hhcnRCcmFuY2hgIC9cbiAgICogYGFkZFN1YkZsb3dDaGFydGAgLyBgYWRkU3ViRmxvd0NoYXJ0TmV4dGAuXG4gICAqXG4gICAqIFVOREVGSU5FRCBmb3IgbGF6eSBtb3VudHMgYXQgYnVpbGQgdGltZSAoYGlzTGF6eTogdHJ1ZWApIOKAlCB0aGVcbiAgICogc3ViZmxvdydzIHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiByZXNvbHZlZCB5ZXQuIENvbnN1bWVycyB3YWl0aW5nIG9uXG4gICAqIGxhenkgc3ViZmxvd3MgaGFuZGxlIHRoZSBydW50aW1lIGBvblN1YmZsb3dFbnRyeWAgZXZlbnQgaW5zdGVhZC5cbiAgICpcbiAgICogSW1tdXRhYmxlIHBvc3QtYnVpbGQ7IGNvbnN1bWVycyBNVVNUIE5PVCBtdXRhdGUuXG4gICAqXG4gICAqIEBpbnRlcm5hbCBgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlYCBpcyBsaWJyYXJ5LWludGVybmFsLlxuICAgKiAgICAgICAgICAgVXNlIGB3YWxrU3ViZmxvd1NwZWNgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCBmb3IgdGhlXG4gICAqICAgICAgICAgICBzdGFibGUgcHVibGljIGNvbnRyYWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3ViZmxvd1NwZWM/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG5cbiAgLyoqXG4gICAqIExvY2FsIG1vdW50IGlkIG9mIHRoaXMgc3ViZmxvdyB3aXRoaW4gaXRzIHBhcmVudCDigJQgZXF1YWwgdG9cbiAgICogYHN1YmZsb3dJZGAgZm9yIHRvcC1sZXZlbCBtb3VudHMgKGUuZy4gYCdhdXRoJ2ApLCBjb21wb3NlZFxuICAgKiAoYCdhdXRoL3ZlcmlmeSdgKSBmb3IgbmVzdGVkIG1vdW50cyB3aG9zZSByZWNvcmRlciBpcyBhdHRhY2hlZFxuICAgKiB0byB0aGUgZ3JhbmRwYXJlbnQuIE1hdGNoZXMgcnVudGltZSBgdHJhdmVyc2FsQ29udGV4dC5zdWJmbG93UGF0aGBcbiAgICogc2VtYW50aWNzIOKAlCBORVZFUiBwcmVmaXhlZCB3aXRoIGBfX3Jvb3RfXy9gLlxuICAgKi9cbiAgcmVhZG9ubHkgc3ViZmxvd1BhdGg6IHN0cmluZztcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdHJ1Y3R1cmVSZWNvcmRlciBpbnRlcmZhY2Vcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgQlVJTEQtVElNRSBjaGFydCBjb25zdHJ1Y3Rpb24gZXZlbnRzLlxuICpcbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogSGFuZGxlcnMgZmlyZSBTWU5DSFJPTk9VU0xZIGR1cmluZyBidWlsZGVyIG9wZXJhdGlvbnMgYW5kIGAuYnVpbGQoKWAuXG4gKiBBIHRocm93aW5nIGhhbmRsZXIgaXMgY2F1Z2h0IChzZWUgXCJFcnJvciBpc29sYXRpb25cIiBpbiB0aGUgZmlsZVxuICogaGVhZGVyKTsgc3Vic2VxdWVudCBkaXNwYXRjaCBjb250aW51ZXMuXG4gKlxuICogTGlmZWN5Y2xlOiBlYWNoIGBTdHJ1Y3R1cmVSZWNvcmRlcmAgaW5zdGFuY2UgaXMgcmVnaXN0ZXJlZCB2aWFcbiAqIEVJVEhFUiB0aGUgYGZsb3dDaGFydCgpYCBvcHRpb25zIGJhZyAoYHsgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSB9YClcbiAqIE9SIHRoZSBmbHVlbnQgYC5hdHRhY2hTdHJ1Y3R1cmVSZWNvcmRlcihyZWMpYCBjaGFpbiDigJQgc2VlIHRoZSBmaWxlXG4gKiBoZWFkZXIgZm9yIHRoZSB0cmFkZS1vZmZzLiBSZWdpc3RyYXRpb24gYWZ0ZXIgYC5idWlsZCgpYCBpc1xuICogcmVqZWN0ZWQgKGNoYXJ0IGlzIHNlYWxlZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlUmVjb3JkZXIge1xuICAvKipcbiAgICogU3RhYmxlIGlkZW50aWZpZXIg4oCUIHVzZWQgYnkgdGhlIGRpc3BhdGNoZXIgdG8gc2NvcGUgZXJyb3JcbiAgICogbWVzc2FnZXMgYW5kIHRvIHN1cHBvcnQgYGRldGFjaChpZClgIGxvb2t1cC5cbiAgICpcbiAgICogQ29udmVudGlvbiAobWF0Y2hlcyBgRmxvd1JlY29yZGVyLmlkYCBmcm9tIENMQVVERS5tZCk6XG4gICAqICAgLSBkb21haW4tcHJlZml4ZWQga2ViYWItY2FzZSAoYCdsZW5zLXN0cnVjdHVyZSdgLFxuICAgKiAgICAgYCdhZ2VudGZvb3RwcmludC1jb21wb3NpdGlvbidgLCBgJ3RyYWNlLWV4cGxhaW5hYmxlJ2ApXG4gICAqICAgLSBzYW1lIGlkIOKGkiBtdWx0aXBsZSByZWNvcmRlcnMgY29leGlzdCAoTk9UIGRlZHVwbGljYXRlZCBieVxuICAgKiAgICAgaWQ7IHRoZSBkaXNwYXRjaGVyIGZpcmVzIGV2ZXJ5IGF0dGFjaGVkIHJlY29yZGVyIHJlZ2FyZGxlc3MpXG4gICAqICAgLSBgZGV0YWNoKGlkKWAgcmVtb3ZlcyBFVkVSWSByZWNvcmRlciB3aXRoIHRoYXQgaWQg4oCUIGJlXG4gICAqICAgICBpbnRlbnRpb25hbCBhYm91dCByZXVzZSBpZiB5b3UgcmVseSBvbiBzZWxlY3RpdmUgZGV0YWNoXG4gICAqXG4gICAqIENob29zZSBhIHN0YWJsZSBpZCBhdCBtb2R1bGUgbG9hZCBhbmQgZG9uJ3QgcmFuZG9taXNlIGl0IGFjcm9zc1xuICAgKiBydW5zIOKAlCBpdCBsYW5kcyBpbiBgU3RydWN0dXJlQnVpbGRFcnJvci5yZWNvcmRlcklkYCBzbyBkZWJ1Z1xuICAgKiBvdXRwdXQgaXMgZ3JlcHBhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICBvblN0YWdlQWRkZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkVkZ2VBZGRlZD8oZXZlbnQ6IFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50KTogdm9pZDtcbiAgb25Mb29wRWRnZUFkZGVkPyhldmVudDogU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50KTogdm9pZDtcbiAgb25EZWNpZGVyQ29tcGxldGU/KGV2ZW50OiBTdHJ1Y3R1cmVEZWNpZGVyQ29tcGxldGVFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd01vdW50ZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50KTogdm9pZDtcbn1cbiJdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvc3RydWN0dXJlL1N0cnVjdHVyZVJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EySkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0cnVjdHVyZVJlY29yZGVyIOKAlCBwYXNzaXZlIG9ic2VydmVyIG9mIEJVSUxELVRJTUUgY2hhcnQgY29uc3RydWN0aW9uIGV2ZW50cy5cbiAqXG4gKiBUaGUgYnVpbGQtdGltZSB0d2luIG9mIGBGbG93UmVjb3JkZXJgLiBXaGVyZSBgRmxvd1JlY29yZGVyYCBvYnNlcnZlc1xuICogUlVOVElNRSBjb250cm9sLWZsb3cgdHJhbnNpdGlvbnMgKHBlci1leGVjdXRpb24gYHJ1bnRpbWVTdGFnZUlkYCxcbiAqIGl0ZXJhdGlvbiBjb3VudHMsIGVycm9ycywgcGF1c2VzKSwgYFN0cnVjdHVyZVJlY29yZGVyYCBvYnNlcnZlc1xuICogU1RBVElDIGNoYXJ0IHNoYXBlIGFzIGl0J3MgYXNzZW1ibGVkIGJ5IHRoZSBidWlsZGVyIOKAlCBldmVyeSBzcGVjXG4gKiBub2RlIGFkZGVkLCBldmVyeSBvdXRnb2luZyBlZGdlIHdpcmVkLCBldmVyeSBkZWNpZGVyIGNsb3NlZC5cbiAqXG4gKiBXaHkgdHdvIGludGVyZmFjZXMsIG5vdCBvbmVcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICBCdWlsZCBhbmQgcnVudGltZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgSU5WQVJJQU5UUywgbm90IGp1c3RcbiAqICAgZGlmZmVyZW50IHRpbWluZzpcbiAqXG4gKiAgICAgLSBSdW50aW1lIGV2ZW50cyBjYXJyeSBgcnVudGltZVN0YWdlSWRgIChgW3N1YmZsb3dQYXRoL11zdGFnZUlkI05gKSxcbiAqICAgICAgIGBpdGVyYXRpb25gLCBgdHJhdmVyc2FsQ29udGV4dGAg4oCUIGxvYWQtYmVhcmluZyBmb3IgdGltZS10cmF2ZWxcbiAqICAgICAgIFVJcywgY29tbWl0LWxvZyBpbmRpY2VzLCBhbmQgYFNlcXVlbmNlU3RvcmU8VD5gIGNvbnN1bWVycy5cbiAqICAgICAgIE5PTkUgb2YgdGhlc2UgZXhpc3QgYXQgYnVpbGQgdGltZS5cbiAqXG4gKiAgICAgLSBCdWlsZCBldmVudHMgY2Fycnkgb25seSBgc3RhZ2VJZGAgKyBzdHJ1Y3R1cmFsIGZpZWxkcy4gTm9cbiAqICAgICAgIGV4ZWN1dGlvbiBpbmRleCwgbm8gaXRlcmF0aW9uLCBubyBzbmFwc2hvdC5cbiAqXG4gKiAgICAgLSBTb21lIGV2ZW50cyBoYXZlIG5vIGFuYWxvZyBhY3Jvc3MgcGhhc2VzOiBgb25QYXVzZWAgL1xuICogICAgICAgYG9uUmVzdW1lYCAvIGBvbkVycm9yYCAvIGBvblJ1blN0YXJ0YCBhcmUgcnVudGltZS1vbmx5O1xuICogICAgICAgYG9uRGVjaWRlckNvbXBsZXRlYCAvIGBvblN0YWdlQWRkZWRgIGFyZSBidWlsZC1vbmx5LlxuICpcbiAqICAgQSBzaW5nbGUgYEZsb3dSZWNvcmRlcmAgd2l0aCBgcGhhc2U6ICdzdGF0aWMnIHwgJ2R5bmFtaWMnYFxuICogICBkaXNjcmltaW5hdG9yIHdvdWxkIGZvcmNlIGV2ZXJ5IGNvbnN1bWVyIHRvIHdyaXRlXG4gKiAgIGBpZiAoZS5waGFzZSA9PT0gJ3N0YXRpYycpIC4uLmAgYnJhbmNoZXMgYW5kIHdvdWxkIGVyYXNlIHRoZVxuICogICBsZWFzdC1wcml2aWxlZ2UgYm91bmRhcnkgKGEgc3RhdGljLW9ubHkgY29uc3VtZXIgc2hvdWxkIE5PVFxuICogICBhY2NpZGVudGFsbHkgb2JzZXJ2ZSBydW50aW1lIGRhdGEg4oCUIGUuZy4sIGEgcHVibGljIGRvY3Mgc2l0ZVxuICogICByZW5kZXJpbmcgY2hhcnQgdG9wb2xvZ3kgbXVzdCBub3Qgc2VlIHNjb3BlIHZhbHVlcykuXG4gKlxuICogICBUd28gaW50ZXJmYWNlcywgc2FtZSBtZW50YWwgbW9kZWwsIGNsZWFuIHNlcGFyYXRpb24uIFR3b1xuICogICByZWdpc3RyYXRpb24gc2l0ZXMgc2hpcCB0b2RheSAocGljayB3aGljaGV2ZXIgZml0cyB5b3VyIGNhbGxcbiAqICAgc2l0ZSk6XG4gKlxuICogICAgIDEuICoqT3B0aW9ucy1iYWcqKiAocHJlZmVycmVkIHdoZW4gdGhlIHJlY29yZGVyIHNldCBpcyBrbm93blxuICogICAgICAgIGF0IGNvbnN0cnVjdGlvbiB0aW1lIOKAlCByZWdpc3RlcnMgQkVGT1JFIGBzdGFydCgpYCBzbyBldmVuXG4gKiAgICAgICAgdGhlIHNlZWQgZXZlbnQgZmlyZXMgdGhyb3VnaCB0aGUgbm9ybWFsIGRpc3BhdGNoZXIgZmFuLW91dCk6XG4gKiAgICAgICAgYGBgdHNcbiAqICAgICAgICBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnLCB7IHN0cnVjdHVyZVJlY29yZGVyczogW3JlY10gfSlcbiAqICAgICAgICAgIC5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKS5idWlsZCgpO1xuICogICAgICAgIGBgYFxuICpcbiAqICAgICAyLiAqKkZsdWVudCoqIChwcmVmZXJyZWQgd2hlbiBhdHRhY2ggaXMgY29uZGl0aW9uYWwsIGxhdGUsIG9yXG4gKiAgICAgICAgaW4gYSBjaGFpbiBidWlsZGVyIOKAlCB0aGUganVzdC1hdHRhY2hlZCByZWNvcmRlciBnZXRzIGFcbiAqICAgICAgICBvbmUtdGltZSBzZWVkIHJlcGxheSBzbyBpdCBvYnNlcnZlcyB0aGUgcm9vdCBzdGFnZSk6XG4gKiAgICAgICAgYGBgdHNcbiAqICAgICAgICBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnKVxuICogICAgICAgICAgLmF0dGFjaFN0cnVjdHVyZVJlY29yZGVyKHJlYylcbiAqICAgICAgICAgIC5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKS5idWlsZCgpO1xuICogICAgICAgIGBgYFxuICpcbiAqICAgQm90aCBkZWxpdmVyIHRoZSBzYW1lIGV2ZW50IHN0cmVhbSB0byB0aGUgc2FtZSByZWNvcmRlci4gU2VlIHRoZVxuICogICBgQGV4YW1wbGVgIGJsb2NrIGJlbG93IGZvciBhIGZ1bGx5LWZsZXNoZWQtb3V0IGltcGxlbWVudGF0aW9uLlxuICpcbiAqIExpZmVjeWNsZSArIG9yZGVyaW5nIGludmFyaWFudHNcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEZpcmVzIFNZTkNIUk9OT1VTTFkgZHVyaW5nIGJ1aWxkZXIgY2hhaW4gY2FsbHMgKGFuZCBkdXJpbmdcbiAqICAgICBgLmJ1aWxkKClgIGZvciB0aGUgdGVybWluYWwgbm9kZSkgYXQgdGhlIG5hdHVyYWwgbW9tZW50IGVhY2hcbiAqICAgICBzcGVjIG11dGF0aW9uIGNvbXBsZXRlcy5cbiAqICAgLSBgb25TdGFnZUFkZGVkKEEpYCBhbmQgYG9uU3RhZ2VBZGRlZChCKWAgZmlyZSBCRUZPUkUgYW55XG4gKiAgICAgYG9uRWRnZUFkZGVkKHtmcm9tOiBBLCB0bzogQn0pYCDigJQgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXG4gKiAgICAgaGFwcGVucyBiZWZvcmUgZWRnZSB3aXJpbmcuXG4gKiAgIC0gYG9uRGVjaWRlckNvbXBsZXRlKEQpYCBmaXJlcyBhdCBzdWItYnVpbGRlciBgLmVuZCgpYCB0aW1lLCBBRlRFUlxuICogICAgIGV2ZXJ5IGNoaWxkJ3MgYG9uU3RhZ2VBZGRlZGAgYW5kIGV2ZXJ5IGBvbkVkZ2VBZGRlZCh7ZnJvbTogRCxcbiAqICAgICB0bzogY2hpbGR9KWAuIE1hcmtzIHRoZSBkZWNpZGVyIGFzIG5vLWZ1cnRoZXItbXV0YXRpb24uXG4gKiAgIC0gYG9uU3ViZmxvd01vdW50ZWQoe3N1YmZsb3dJZH0pYCBmaXJlcyBvbmNlIHBlciBtb3VudC5cbiAqICAgICAqKk1PVU5ULU9OTFkqKjogcGFyZW50IHJlY29yZGVycyBkbyBOT1QgcmVjZWl2ZSBhIHJlcGxheSBvZlxuICogICAgIHRoZSBzdWJmbG93J3Mgb3duIGludGVybmFsIHN0cnVjdHVyZSBldmVudHMgKHRob3NlIGZpcmVkXG4gKiAgICAgZHVyaW5nIHRoZSBzdWJmbG93J3Mgb3duIGAuYnVpbGQoKWApLiBNYXRjaGVzIHRoZSBydW50aW1lXG4gKiAgICAgYG9uU3ViZmxvd0VudHJ5YCBzZW1hbnRpY3Mg4oCUIGNvbXBvc2l0aW9uIG92ZXIgcmVwbGF5LlxuICpcbiAqIEVycm9yIGlzb2xhdGlvbiAobWF0Y2hlcyBGbG93UmVjb3JkZXIgY29udHJhY3QpXG4gKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAqICAgLSBBIHRocm93aW5nIGhhbmRsZXIgaXMgY2F1Z2h0LCBsb2dnZWQgdmlhIGBpc0Rldk1vZGUoKWAgd2FybmluZyxcbiAqICAgICBhbmQgYWNjdW11bGF0ZWQgb24gYGJ1aWxkZXIuZ2V0U3RydWN0dXJlQnVpbGRFcnJvcnMoKWAgZm9yXG4gKiAgICAgcG9zdC1ob2MgaW5zcGVjdGlvbi5cbiAqICAgLSBTdWJzZXF1ZW50IHJlY29yZGVycyArIHN1YnNlcXVlbnQgZXZlbnRzIGZpcmUgbm9ybWFsbHk7IG9uZVxuICogICAgIG1pc2JlaGF2aW5nIHJlY29yZGVyIGNhbm5vdCBUSFJPVyBpdHMgd2F5IGludG8gYmxvY2tpbmdcbiAqICAgICBjb25zdHJ1Y3Rpb24uXG4gKiAgIC0gVGhlIGVycm9yc1tdIGFjY3VtdWxhdG9yIGlzIHNvZnQtY2FwcGVkICh+MTAwIGVudHJpZXMpIHdpdGggYVxuICogICAgIGBfX3RydW5jYXRlZF9fYCBzZW50aW5lbCByZWNvcmQgb25jZSB0aGUgY2FwIGlzIGhpdCwgdG8gcHJldmVudFxuICogICAgIHVuYm91bmRlZCBncm93dGggb24gY2hhdHR5IGJyb2tlbiByZWNvcmRlcnMuXG4gKiAgIC0gTm90ZTogdGhyb3cgaXNvbGF0aW9uIGRvZXMgTk9UIGRlZmVuZCBhZ2FpbnN0IGEgaGFuZGxlciB0aGF0XG4gKiAgICAgc3VjY2VlZHMgYXQgcnVudGltZSBidXQgbXV0YXRlcyBgZXZlbnQuc3BlY2AgdG8gY29ycnVwdCB0aGVcbiAqICAgICBjaGFydC4gU2VlIFwiU3BlYyBtdXRhdGlvblwiIGJlbG93LlxuICpcbiAqIFNwZWMgbXV0YXRpb24g4oCUIHJlYWRvbmx5LWJ5LWNvbnRyYWN0IChOT1QgcnVudGltZS1lbmZvcmNlZClcbiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogICAtIEV2ZW50IHBheWxvYWRzIHBhc3Mgc3BlYyByZWZlcmVuY2VzIHdoZXJlIHVzZWZ1bCAoZS5nLiwgYHNwZWNgXG4gKiAgICAgb24gYG9uU3RhZ2VBZGRlZGApLiBFdmVyeSBmaWVsZCBvbiBldmVyeSBldmVudCBwYXlsb2FkIGlzXG4gKiAgICAgbWFya2VkIGByZWFkb25seWAgaW4gVHlwZVNjcmlwdCDigJQgdGhlIHR5cGUgc3lzdGVtIHNpZ25hbHNcbiAqICAgICBjb25zdW1lciBpbnRlbnQgYXQgYXV0aG9yIHRpbWUuXG4gKiAgIC0gVGhlcmUgaXMgTk8gcnVudGltZSBmcmVlemUuIFRoZSBidWlsZGVyIGZpcmVzIGBvblN0YWdlQWRkZWRgXG4gKiAgICAgSU1NRURJQVRFTFkgd2hlbiBhIHNwZWMgbm9kZSBpcyBhZGRlZCwgQkVGT1JFIHRoZSBidWlsZGVyXG4gKiAgICAgd2lyZXMgdGhhdCBub2RlJ3MgYC5uZXh0YC9gLmNoaWxkcmVuYC9gLmxvb3BUYXJnZXRgIGluIHRoZVxuICogICAgIHN1YnNlcXVlbnQgYGFkZFhgIGNhbGwuIEZyZWV6aW5nIGhlcmUgd291bGQgYnJlYWsgdGhlXG4gKiAgICAgYnVpbGRlcidzIG93biBzdWJzZXF1ZW50IG11dGF0aW9uLlxuICogICAtIEhhbmRsZXIgbXV0YXRpb24gb2YgYGV2ZW50LnNwZWNgIGlzIERPQ1VNRU5URUQgVU5ERUZJTkVEXG4gKiAgICAgQkVIQVZJT1Ig4oCUIGl0IHdpbGwgc3VjY2VlZCBhdCBydW50aW1lLCBidXQgaXMgbm90IHN1cHBvcnRlZFxuICogICAgIGFuZCBkb3duc3RyZWFtIGNvbnN1bWVycyBtYXkgYnJlYWsuIFNwZWNpZmljYWxseSwgbXV0YXRpbmdcbiAqICAgICBgZXZlbnQuc3BlYy5mbmAsIGBldmVudC5zcGVjLmlkYCwgb3IgYGV2ZW50LnNwZWMuY2hpbGRyZW5gXG4gKiAgICAgY2FuIGNvcnJ1cHQgc3Vic2VxdWVudCBydW50aW1lIGJlaGF2aW9yIG9mIHRoZSBjaGFydC5cbiAqICAgLSAqKlRydXN0IG1vZGVsKio6IGF0dGFjaCBPTkxZIHJlY29yZGVycyBmcm9tIHRydXN0ZWQgY29kZSBwYXRocy5cbiAqICAgICBBIGhvc3RpbGUgb3IgYnVnZ3kgcmVjb3JkZXIgY2FuIGVmZmVjdGl2ZWx5IHN1YnN0aXR1dGUgc3RhZ2VcbiAqICAgICBmdW5jdGlvbnMgb3IgcmV3aXJlIHRoZSBjaGFydCBzdHJ1Y3R1cmUuIFRoZSBgcmVhZG9ubHlgXG4gKiAgICAgbWFya2VycyBjYW5ub3QgZGVmZW5kIGFnYWluc3QgaW50ZW50aW9uYWwgbXV0YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjbGFzcyBUcmFjZVN0cnVjdHVyZVJlY29yZGVyIGltcGxlbWVudHMgU3RydWN0dXJlUmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICd0cmFjZS1zdGF0aWMnO1xuICogICBub2RlczogWHlmbG93Tm9kZVtdID0gW107XG4gKiAgIGVkZ2VzOiBYeWZsb3dFZGdlW10gPSBbXTtcbiAqXG4gKiAgIG9uU3RhZ2VBZGRlZChlKSB7XG4gKiAgICAgLy8gTm9kZSByb2xlOiAnc3RhZ2UnIGlzIHRoZSBpbml0aWFsIHR5cGUuIElmIG91dGdvaW5nIGVkZ2VzXG4gKiAgICAgLy8gYXJyaXZlIHdpdGgga2luZCAnZm9yay1icmFuY2gnIC8gJ2RlY2lzaW9uLWJyYW5jaCcgdGhlIG5vZGVcbiAqICAgICAvLyBpcyBmdW5jdGlvbmluZyBhcyBhIGZvcmsvZGVjaWRlciDigJQgZGVyaXZlIHRoZSB2aXN1YWwgc3R5bGVcbiAqICAgICAvLyBmcm9tIHRob3NlIGVkZ2VzLCBub3QgZnJvbSBgZS50eXBlYCBhbG9uZS5cbiAqICAgICB0aGlzLm5vZGVzLnB1c2goeyBpZDogZS5zdGFnZUlkLCB0eXBlOiAnbGVuc1N0YWdlJywgZGF0YTogeyBsYWJlbDogZS5uYW1lIH0gfSk7XG4gKiAgIH1cbiAqICAgb25FZGdlQWRkZWQoZSkge1xuICogICAgIHRoaXMuZWRnZXMucHVzaCh7IGlkOiBgJHtlLmZyb219LT4ke2UudG99YCwgc291cmNlOiBlLmZyb20sIHRhcmdldDogZS50byB9KTtcbiAqICAgfVxuICogICBvblN1YmZsb3dNb3VudGVkKGUpIHtcbiAqICAgICB0aGlzLm5vZGVzLnB1c2goeyBpZDogZS5zdWJmbG93SWQsIHR5cGU6ICdzdWJmbG93JywgZGF0YTogeyBsYWJlbDogZS5zdWJmbG93TmFtZSB9IH0pO1xuICogICB9XG4gKiAgIG9uRGVjaWRlckNvbXBsZXRlKGUpIHtcbiAqICAgICAvLyBPcHRpb25hbDogZmluYWxpemUgbm9kZSBzdHlsaW5nIG5vdyB0aGF0IGJyYW5jaCBsaXN0IGlzIHNlYWxlZC5cbiAqICAgfVxuICogfVxuICpcbiAqIC8vIFJlZ2lzdHJhdGlvbiBvcHRpb24gQSDigJQgb3B0aW9ucy1iYWcgKHByZWZlcnJlZCB3aGVuIHJlY29yZGVyc1xuICogLy8gYXJlIGtub3duIHVwIGZyb250OyBhdHRhY2hlcyBCRUZPUkUgdGhlIHNlZWQgZXZlbnQgZmlyZXMpOlxuICogY29uc3QgcmVjID0gbmV3IFRyYWNlU3RydWN0dXJlUmVjb3JkZXIoKTtcbiAqIGNvbnN0IGJ1aWxkZXIgPSBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnLCB7XG4gKiAgIHN0cnVjdHVyZVJlY29yZGVyczogW3JlY10sXG4gKiB9KS5hZGRGdW5jdGlvbignYScsIGZuQSwgJ2EnKTtcbiAqIGNvbnN0IGNoYXJ0ID0gYnVpbGRlci5idWlsZCgpO1xuICpcbiAqIC8vIFJlZ2lzdHJhdGlvbiBvcHRpb24gQiDigJQgZmx1ZW50IGNoYWluIChwcmVmZXJyZWQgZm9yIGNvbmRpdGlvbmFsXG4gKiAvLyBvciBsYXRlIGF0dGFjaDsgdGhlIGp1c3QtYXR0YWNoZWQgcmVjb3JkZXIgZ2V0cyBhIHNlZWQgcmVwbGF5KTpcbiAqIGNvbnN0IHJlYzIgPSBuZXcgVHJhY2VTdHJ1Y3R1cmVSZWNvcmRlcigpO1xuICogY29uc3QgYnVpbGRlcjIgPSBmbG93Q2hhcnQoJ3NlZWQnLCBmbiwgJ3NlZWQnKVxuICogICAuYXR0YWNoU3RydWN0dXJlUmVjb3JkZXIocmVjMilcbiAqICAgLmFkZEZ1bmN0aW9uKCdhJywgZm5BLCAnYScpO1xuICpcbiAqIC8vIEluc3BlY3QgYW55IHJlY29yZGVyIGVycm9ycyAoY2FsbCBvbiB0aGUgQlVJTERFUiwgbm90IHRoZSBjaGFydCk6XG4gKiBjb25zdCBlcnJvcnMgPSBidWlsZGVyLmdldFN0cnVjdHVyZUJ1aWxkRXJyb3JzKCk7XG4gKlxuICogPFJlYWN0RmxvdyBub2Rlcz17cmVjLm5vZGVzfSBlZGdlcz17cmVjLmVkZ2VzfSAvPlxuICogYGBgXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnRTcGVjLCBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRXZlbnQgcGF5bG9hZCB0eXBlc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogRXZlbnQgcGF5bG9hZCBmb3IgYFN0cnVjdHVyZVJlY29yZGVyLm9uU3RhZ2VBZGRlZGAuIEZpcmVzIGZvciBldmVyeVxuICogc3BlYyBub2RlIGFkZGVkIHRvIHRoZSBjaGFydCwgaW5jbHVkaW5nIHRoZSBzZWVkIChhZGRlZCB2aWFcbiAqIGBmbG93Q2hhcnQoKWAgZmFjdG9yeSkgYW5kIHN1YmZsb3cgbW91bnQgbm9kZXMuIEV4Y2x1ZGVzIHN5bnRoZXRpY1xuICogbG9vcC1yZWZlcmVuY2Ugbm9kZXMgKHRob3NlIGNhcnJ5IGBpc0xvb3BSZWZlcmVuY2U6IHRydWVgIG9uIHRoZVxuICogc3BlYzsgY29uc3VtZXJzIHNlZSB0aGVtIHZpYSB0aGUgc2VwYXJhdGUgYG9uTG9vcEVkZ2VBZGRlZGAgZXZlbnRcbiAqIGluc3RlYWQgb2YgYXMgZnJlc2ggc3RhZ2VzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQge1xuICAvKipcbiAgICogU3RhYmxlIGlkZW50aWZpZXIgZm9yIHRoaXMgbm9kZS4gQVQgRVZFTlQgRklSRSBUSU1FIHRoaXMgaXMgdGhlXG4gICAqIGJ1aWxkZXIncyBMT0NBTCBmb3JtIChubyBzdWJmbG93IHByZWZpeCDigJQgdGhlIHByZWZpeCBpcyBhcHBsaWVkXG4gICAqIGxhdGVyIGJ5IGBfcHJlZml4Tm9kZVRyZWVgIHdoZW4gdGhpcyBidWlsZGVyIGlzIG1vdW50ZWQgYXMgYVxuICAgKiBzdWJmbG93IGludG8gYSBwYXJlbnQpLlxuICAgKlxuICAgKiBOb3RlOiBgc3BlYy5pZGAgaXMgYSBMSVZFIHJlZmVyZW5jZS4gSWYgeW91IHJlYWQgaXQgQUZURVIgdGhpc1xuICAgKiBjaGFydCBoYXMgYmVlbiBtb3VudGVkIGFzIGEgc3ViZmxvdywgaXQgbWF5IGhhdmUgYmVlbiByZXdyaXR0ZW5cbiAgICogdG8gdGhlIEZVTEwgcHJlZml4ZWQgZm9ybS4gVXNlIGBzcGxpdFN0YWdlSWQoc3BlYy5pZClgIGZyb21cbiAgICogYGZvb3RwcmludGpzL3RyYWNlYCB0byBkZWNvbXBvc2UgaXQgYmFjayBpbnRvIGxvY2FsICsgc3ViZmxvd1BhdGguXG4gICAqXG4gICAqIENvcnJlbGF0aW5nIHdpdGggcnVudGltZSBldmVudHM6XG4gICAqICAgLSBTYW1lIGJ1aWxkZXIgKG5vIG1vdW50KSDihpJcbiAgICogICAgIGBldmVudC5zdGFnZUlkID09PSBwYXJzZVJ1bnRpbWVTdGFnZUlkKHJ1bnRpbWUpLnN0YWdlSWRgXG4gICAqICAgLSBUaGlzIGJ1aWxkZXIgbW91bnRlZCBhcyBzdWJmbG93IOKGkiB1c2UgYHNwbGl0U3RhZ2VJZGAgb24gdGhlXG4gICAqICAgICBwcmVmaXhlZCBmb3JtIChvciBgcGFyc2VSdW50aW1lU3RhZ2VJZGAgb24gdGhlIGZ1bGxcbiAgICogICAgIHJ1bnRpbWVTdGFnZUlkKSBiZWZvcmUgY29tcGFyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoZSBub2RlLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTcGVjIG5vZGUgYHR5cGVgLiBMZXRzIHJlY29yZGVycyBicmFuY2ggb24gc3RhZ2UgdnMgZGVjaWRlciB2c1xuICAgKiAgZm9yayB2cyBzdWJmbG93IHdpdGhvdXQgcmUtZGVyaXZpbmcgZnJvbSBvdGhlciBmaWVsZHMuICovXG4gIHJlYWRvbmx5IHR5cGU6IE5vbk51bGxhYmxlPEZsb3dDaGFydFNwZWNbJ3R5cGUnXT47XG4gIC8qKiBUcnVlIGZvciBub2RlcyBhZGRlZCB2aWEgYGFkZFBhdXNhYmxlRnVuY3Rpb24oKWAg4oCUIHVzZWZ1bCBmb3JcbiAgICogIHZpc3VhbGlzZXJzIHRoYXQgd2FudCB0byBtYXJrIHN0YWdlcyB0aGF0IGNhbiBwYXVzZSBleGVjdXRpb24uICovXG4gIHJlYWRvbmx5IGlzUGF1c2FibGU/OiBib29sZWFuO1xuICAvKiogTGl2ZSByZWZlcmVuY2UgdG8gdGhlIGZ1bGwgc3BlYyBub2RlLCBmb3IgaGFuZGxlcnMgdGhhdCB3YW50XG4gICAqICBkZXRhaWxzIGJleW9uZCB0aGUgZGlzY3JpbWluYXRvciBmaWVsZHMgYWJvdmUuIE1VU1QgTk9UIGJlXG4gICAqICBtdXRhdGVkIGJ5IHRoZSBoYW5kbGVyIOKAlCByZWFkb25seSBpcyB0eXBlLWxldmVsIGludGVudDsgbm9cbiAgICogIHJ1bnRpbWUgZnJlZXplLiBTZWUgXCJTcGVjIG11dGF0aW9uXCIgaW4gdGhlIGZpbGUgaGVhZGVyIGZvciB0aGVcbiAgICogIHRydXN0LW1vZGVsIGNhdmVhdHMuICovXG4gIHJlYWRvbmx5IHNwZWM6IEZsb3dDaGFydFNwZWM7XG59XG5cbi8qKiBFZGdlIGtpbmRzIHRoZSBidWlsZGVyIHByb2R1Y2VzIGF0IHN0cnVjdHVyYWwgdGltZS4gTWF0Y2hlcyB0aGVcbiAqICBmb290cHJpbnRqcyBjb250cm9sLWZsb3cgdm9jYWJ1bGFyeSB1c2VkIGF0IHJ1bnRpbWUuXG4gKlxuICogIFdoeSBubyBgc3ViZmxvdy1lbnRyeWAgaGVyZTogc3ViZmxvdyBtb3VudHMgdXNlIHRoZSBsaWZlY3ljbGVcbiAqICBldmVudCBgb25TdWJmbG93TW91bnRlZGAgKG5vdCBhbiBlZGdlIGV2ZW50KS4gSWYgYSBmdXR1cmUgdXNlIGNhc2VcbiAqICBuZWVkcyB0aGUgcGFyZW504oaSc3ViZmxvdy1yb290IGVkZ2UgYXMgYSBkaXN0aW5jdCBraW5kLCBpdCdsbCBiZVxuICogIGFkZGVkIHRoZW4g4oCUIFlBR05JIG5vdyAoUGFuZWwgMywgTDcuMiByZXZpZXcpLiAqL1xuZXhwb3J0IHR5cGUgU3RydWN0dXJlRWRnZUtpbmQgPVxuICB8ICduZXh0JyAvLyBsaW5lYXIgY2hhaW46IHByZXYubmV4dCA9IGN1cnJcbiAgfCAnZm9yay1icmFuY2gnIC8vIGZvcmsgcGFyZW50IOKGkiBwYXJhbGxlbCBjaGlsZFxuICB8ICdkZWNpc2lvbi1icmFuY2gnOyAvLyBkZWNpZGVyIOKGkiBicmFuY2ggY2hpbGRcblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25FZGdlQWRkZWRgLiBGaXJlcyB3aGVuZXZlclxuICogdGhlIGJ1aWxkZXIgd2lyZXMgYW4gb3V0Z29pbmcgZWRnZSBmcm9tIG9uZSBub2RlIHRvIGFub3RoZXIuIEJvdGhcbiAqIGVuZHBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdW5jZWQgdmlhIGBvblN0YWdlQWRkZWRgIGJ5IHRoZVxuICogdGltZSB0aGlzIGZpcmVzLlxuICpcbiAqIExvb3AgYmFjay1lZGdlcyBoYXZlIHRoZWlyIE9XTiBldmVudCAoYG9uTG9vcEVkZ2VBZGRlZGApIHNvXG4gKiBjb25zdW1lcnMgY2FuIHRoZW1lIHRoZW0gZGlzdGluY3RseSBhbmQgc28gYnVpbGQtdGltZSBldmVudHMgc3RheVxuICogZnJlZSBvZiB0aGUgcnVudGltZS1vbmx5IGBpdGVyYXRpb25gIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50IHtcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xuICByZWFkb25seSB0bzogc3RyaW5nO1xuICByZWFkb25seSBraW5kOiBTdHJ1Y3R1cmVFZGdlS2luZDtcbiAgLyoqIE9wdGlvbmFsIGh1bWFuLXJlYWRhYmxlIGxhYmVsIOKAlCB1c2VkIHRvZGF5IGZvciBkZWNpZGVyIGJyYW5jaFxuICAgKiAga2V5cyAoZS5nLiwgYCdsb3cnYCwgYCdoaWdoJ2AsIGAnaGlnaCAoZGVmYXVsdCknYCkgYW5kIHBhcmFsbGVsXG4gICAqICBicmFuY2ggaWRzLiAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25Mb29wRWRnZUFkZGVkYC4gRmlyZXMgd2hlblxuICogYC5sb29wVG8odGFyZ2V0KWAgaW5zdGFsbHMgYSBiYWNrLWVkZ2UuIERpc3RpbmN0IGZyb21cbiAqIGBvbkVkZ2VBZGRlZGAgc28gY29uc3VtZXJzIGNhbiB0aGVtZSBiYWNrLWVkZ2VzIGRpZmZlcmVudGx5IGFuZFxuICogYmVjYXVzZSBydW50aW1lIGBvbkxvb3BgIGNhcnJpZXMgYGl0ZXJhdGlvbjogbnVtYmVyYCB3aGljaCBoYXMgbm9cbiAqIGJ1aWxkLXRpbWUgbWVhbmluZyDigJQga2VlcGluZyB0aGUgZXZlbnRzIHNlcGFyYXRlZCBhdm9pZHMgZm9yY2luZ1xuICogYW4gYGl0ZXJhdGlvbj86IG51bWJlcmAgbGllIGludG8gdGhlIHN0cnVjdHVyYWwgc2hhcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50IHtcbiAgcmVhZG9ubHkgZnJvbTogc3RyaW5nO1xuICByZWFkb25seSB0bzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZm9yIGBTdHJ1Y3R1cmVSZWNvcmRlci5vbkRlY2lkZXJDb21wbGV0ZWAuIEZpcmVzXG4gKiB3aGVuIGEgZGVjaWRlciAvIHNlbGVjdG9yIHN1Yi1idWlsZGVyIGNsb3NlcyB2aWEgYC5lbmQoKWAuIEJ5IHRoZVxuICogdGltZSB0aGlzIGZpcmVzIGV2ZXJ5IGJyYW5jaCBoYXMgYmVlbiBhbm5vdW5jZWQgYW5kIHRoZVxuICogYGRlZmF1bHRCcmFuY2hgIChpZiBzZXQgdmlhIGAuc2V0RGVmYXVsdCgpYCkgaXMgZmluYWwuIExldHNcbiAqIHJlY29yZGVycyB0cmVhdCB0aGUgZGVjaWRlciBhcyBuby1mdXJ0aGVyLW11dGF0aW9uIGFuZCBzbmFwc2hvdFxuICogaXRzIGJyYW5jaCBsaXN0IGFzIGZpbmFsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50IHtcbiAgLyoqIERlY2lkZXIgLyBzZWxlY3RvciBzdGFnZSBpZC4gKi9cbiAgcmVhZG9ubHkgZGVjaWRlcjogc3RyaW5nO1xuICAvKiogU3BlYyB0eXBlIChgJ2RlY2lkZXInYCB2cyBgJ3NlbGVjdG9yJ2ApIOKAlCBleHBvc2VkIHNvIGNvbnN1bWVyc1xuICAgKiAgZG9uJ3QgbmVlZCB0byBsb29rIHVwIHRoZSBvcmlnaW5hbCBgb25TdGFnZUFkZGVkYCBldmVudC4gKi9cbiAgcmVhZG9ubHkgdHlwZTogJ2RlY2lkZXInIHwgJ3NlbGVjdG9yJztcbiAgLyoqIEJyYW5jaCBtZW1iZXIgaWRzIGluIGRlY2xhcmF0aW9uIG9yZGVyLiAqL1xuICByZWFkb25seSBicmFuY2hJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogRGVmYXVsdCBicmFuY2ggaWQgd2hlbiBzZXQgdmlhIGAuc2V0RGVmYXVsdCgpYDsgdW5kZWZpbmVkIHdoZW5cbiAgICogIG5vIGRlZmF1bHQgaXMgY29uZmlndXJlZCAoZS5nLiwgc2VsZWN0b3JzKS4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJyYW5jaD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZvciBgU3RydWN0dXJlUmVjb3JkZXIub25TdWJmbG93TW91bnRlZGAuIEZpcmVzIG9uY2VcbiAqIHBlciBzdWJmbG93IG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0YCAvIGBhZGRTdWJGbG93Q2hhcnROZXh0YCBhbmRcbiAqIHRoZWlyIGxhenkgdmFyaWFudHMpLlxuICpcbiAqICoqTU9VTlQtT05MWSBzZW1hbnRpY3MqKiDigJQgdGhlIHN1YmZsb3cncyBPV04gc3RydWN0dXJlIGV2ZW50c1xuICogKGV2ZXJ5IGBvblN0YWdlQWRkZWRgIC8gYG9uRWRnZUFkZGVkYCBpbnNpZGUgdGhlIHN1YmZsb3cpIGZpcmVkXG4gKiBkdXJpbmcgdGhlIHN1YmZsb3cncyBvd24gYC5idWlsZCgpYCwgYmVmb3JlIHRoZSBtb3VudC4gUGFyZW50XG4gKiByZWNvcmRlcnMgZG8gTk9UIHJlY2VpdmUgYSByZXBsYXkuIEluc3RlYWQsIHRoaXMgZXZlbnQgZGVsaXZlcnNcbiAqIHRoZSBzdWJmbG93J3MgZnVsbCBzdHJ1Y3R1cmUgdmlhIGBzdWJmbG93U3BlY2AsIGFuZCBjb25zdW1lcnMgY2FuXG4gKiB3YWxrIGl0IHZpYSBgd2Fsa1N1YmZsb3dTcGVjYCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAuXG4gKlxuICogVGhpcyBtYXRjaGVzIGBGbG93UmVjb3JkZXIub25TdWJmbG93RW50cnlgIHNlbWFudGljcyBhdCBydW50aW1lXG4gKiAocGFyZW50cyBzZWUgdGhlIGJvdW5kYXJ5LCBub3QgYSByZXBsYXkgb2YgaW50ZXJuYWxzKSBhbmRcbiAqIHByZXNlcnZlcyB0aGUgXCJvbmUgcHVycG9zZSBwZXIgcmVjb3JkZXJcIiBjb252ZW50aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIHRoZSBwYXJlbnQgYXNzaWduZWQgYXQgbW91bnQuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3ViZmxvdyBuYW1lLiAqL1xuICByZWFkb25seSBzdWJmbG93TmFtZTogc3RyaW5nO1xuICAvKiogTW91bnQgbm9kZSBpZCBpbiB0aGUgcGFyZW50J3MgY2hhcnQuICovXG4gIHJlYWRvbmx5IHJvb3RTdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIG1vdW50IHVzZXMgbGF6eSByZXNvbHV0aW9uIChkZWZlcnJlZCBzdWJmbG93XG4gICAqICByZXNvbHV0aW9uIHVudGlsIGV4ZWN1dGlvbikuICovXG4gIHJlYWRvbmx5IGlzTGF6eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtb3VudGVkIHN1YmZsb3cncyBjb21wbGV0ZSBzcGVjIOKAlCB0aGUgU0FNRSBPQkpFQ1RcbiAgICogKD09PSByZWZlcmVuY2UgZXF1YWxpdHkpIHJlYWNoYWJsZSB2aWEgYHN1YmZsb3cuYnVpbGRUaW1lU3RydWN0dXJlYFxuICAgKiBmb3IgdGhlIEZsb3dDaGFydCB0aGUgY29uc3VtZXIgcGFzc2VkIHRvIGBhZGRTdWJGbG93Q2hhcnRCcmFuY2hgIC9cbiAgICogYGFkZFN1YkZsb3dDaGFydGAgLyBgYWRkU3ViRmxvd0NoYXJ0TmV4dGAuXG4gICAqXG4gICAqIFVOREVGSU5FRCBmb3IgbGF6eSBtb3VudHMgYXQgYnVpbGQgdGltZSAoYGlzTGF6eTogdHJ1ZWApIOKAlCB0aGVcbiAgICogc3ViZmxvdydzIHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiByZXNvbHZlZCB5ZXQuIENvbnN1bWVycyB3YWl0aW5nIG9uXG4gICAqIGxhenkgc3ViZmxvd3MgaGFuZGxlIHRoZSBydW50aW1lIGBvblN1YmZsb3dFbnRyeWAgZXZlbnQgaW5zdGVhZC5cbiAgICpcbiAgICogSW1tdXRhYmxlIHBvc3QtYnVpbGQ7IGNvbnN1bWVycyBNVVNUIE5PVCBtdXRhdGUuXG4gICAqXG4gICAqIEBpbnRlcm5hbCBgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlYCBpcyBsaWJyYXJ5LWludGVybmFsLlxuICAgKiAgICAgICAgICAgVXNlIGB3YWxrU3ViZmxvd1NwZWNgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCBmb3IgdGhlXG4gICAqICAgICAgICAgICBzdGFibGUgcHVibGljIGNvbnRyYWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3ViZmxvd1NwZWM/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG5cbiAgLyoqXG4gICAqIExvY2FsIG1vdW50IGlkIG9mIHRoaXMgc3ViZmxvdyB3aXRoaW4gaXRzIHBhcmVudCDigJQgZXF1YWwgdG9cbiAgICogYHN1YmZsb3dJZGAgZm9yIHRvcC1sZXZlbCBtb3VudHMgKGUuZy4gYCdhdXRoJ2ApLCBjb21wb3NlZFxuICAgKiAoYCdhdXRoL3ZlcmlmeSdgKSBmb3IgbmVzdGVkIG1vdW50cyB3aG9zZSByZWNvcmRlciBpcyBhdHRhY2hlZFxuICAgKiB0byB0aGUgZ3JhbmRwYXJlbnQuIE1hdGNoZXMgcnVudGltZSBgdHJhdmVyc2FsQ29udGV4dC5zdWJmbG93UGF0aGBcbiAgICogc2VtYW50aWNzIOKAlCBORVZFUiBwcmVmaXhlZCB3aXRoIGBfX3Jvb3RfXy9gLlxuICAgKi9cbiAgcmVhZG9ubHkgc3ViZmxvd1BhdGg6IHN0cmluZztcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdHJ1Y3R1cmVSZWNvcmRlciBpbnRlcmZhY2Vcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgQlVJTEQtVElNRSBjaGFydCBjb25zdHJ1Y3Rpb24gZXZlbnRzLlxuICpcbiAqIEFsbCBtZXRob2RzIGFyZSBvcHRpb25hbCDigJQgaW1wbGVtZW50IG9ubHkgdGhlIGhvb2tzIHlvdSBuZWVkLlxuICogSGFuZGxlcnMgZmlyZSBTWU5DSFJPTk9VU0xZIGR1cmluZyBidWlsZGVyIG9wZXJhdGlvbnMgYW5kIGAuYnVpbGQoKWAuXG4gKiBBIHRocm93aW5nIGhhbmRsZXIgaXMgY2F1Z2h0IChzZWUgXCJFcnJvciBpc29sYXRpb25cIiBpbiB0aGUgZmlsZVxuICogaGVhZGVyKTsgc3Vic2VxdWVudCBkaXNwYXRjaCBjb250aW51ZXMuXG4gKlxuICogTGlmZWN5Y2xlOiBlYWNoIGBTdHJ1Y3R1cmVSZWNvcmRlcmAgaW5zdGFuY2UgaXMgcmVnaXN0ZXJlZCB2aWFcbiAqIEVJVEhFUiB0aGUgYGZsb3dDaGFydCgpYCBvcHRpb25zIGJhZyAoYHsgc3RydWN0dXJlUmVjb3JkZXJzOiBbcmVjXSB9YClcbiAqIE9SIHRoZSBmbHVlbnQgYC5hdHRhY2hTdHJ1Y3R1cmVSZWNvcmRlcihyZWMpYCBjaGFpbiDigJQgc2VlIHRoZSBmaWxlXG4gKiBoZWFkZXIgZm9yIHRoZSB0cmFkZS1vZmZzLiBSZWdpc3RyYXRpb24gYWZ0ZXIgYC5idWlsZCgpYCBpc1xuICogcmVqZWN0ZWQgKGNoYXJ0IGlzIHNlYWxlZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlUmVjb3JkZXIge1xuICAvKipcbiAgICogU3RhYmxlIGlkZW50aWZpZXIg4oCUIHVzZWQgYnkgdGhlIGRpc3BhdGNoZXIgdG8gc2NvcGUgZXJyb3JcbiAgICogbWVzc2FnZXMgYW5kIHRvIHN1cHBvcnQgYGRldGFjaChpZClgIGxvb2t1cC5cbiAgICpcbiAgICogQ29udmVudGlvbiAobWF0Y2hlcyBgRmxvd1JlY29yZGVyLmlkYCBmcm9tIENMQVVERS5tZCk6XG4gICAqICAgLSBkb21haW4tcHJlZml4ZWQga2ViYWItY2FzZSAoYCdsZW5zLXN0cnVjdHVyZSdgLFxuICAgKiAgICAgYCdhZ2VudGZvb3RwcmludC1jb21wb3NpdGlvbidgLCBgJ3RyYWNlLWV4cGxhaW5hYmxlJ2ApXG4gICAqICAgLSBzYW1lIGlkIOKGkiBtdWx0aXBsZSByZWNvcmRlcnMgY29leGlzdCAoTk9UIGRlZHVwbGljYXRlZCBieVxuICAgKiAgICAgaWQ7IHRoZSBkaXNwYXRjaGVyIGZpcmVzIGV2ZXJ5IGF0dGFjaGVkIHJlY29yZGVyIHJlZ2FyZGxlc3MpXG4gICAqICAgLSBgZGV0YWNoKGlkKWAgcmVtb3ZlcyBFVkVSWSByZWNvcmRlciB3aXRoIHRoYXQgaWQg4oCUIGJlXG4gICAqICAgICBpbnRlbnRpb25hbCBhYm91dCByZXVzZSBpZiB5b3UgcmVseSBvbiBzZWxlY3RpdmUgZGV0YWNoXG4gICAqXG4gICAqIENob29zZSBhIHN0YWJsZSBpZCBhdCBtb2R1bGUgbG9hZCBhbmQgZG9uJ3QgcmFuZG9taXNlIGl0IGFjcm9zc1xuICAgKiBydW5zIOKAlCBpdCBsYW5kcyBpbiBgU3RydWN0dXJlQnVpbGRFcnJvci5yZWNvcmRlcklkYCBzbyBkZWJ1Z1xuICAgKiBvdXRwdXQgaXMgZ3JlcHBhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICBvblN0YWdlQWRkZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQpOiB2b2lkO1xuICBvbkVkZ2VBZGRlZD8oZXZlbnQ6IFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50KTogdm9pZDtcbiAgb25Mb29wRWRnZUFkZGVkPyhldmVudDogU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50KTogdm9pZDtcbiAgb25EZWNpZGVyQ29tcGxldGU/KGV2ZW50OiBTdHJ1Y3R1cmVEZWNpZGVyQ29tcGxldGVFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd01vdW50ZWQ/KGV2ZW50OiBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50KTogdm9pZDtcbn1cbiJdfQ==
|