raain-app 1.0.3 → 1.0.4
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.
|
@@ -17,7 +17,8 @@ export class CompareManager {
|
|
|
17
17
|
return diff === 0;
|
|
18
18
|
}
|
|
19
19
|
static async BuildCompare(frameSet, targetsOrdered, rainComputationQualities, withCompareDuplicate) {
|
|
20
|
-
let compareSpeedMatrix, compareTrustedIndicator
|
|
20
|
+
let compareSpeedMatrix, compareTrustedIndicator;
|
|
21
|
+
let compares = [];
|
|
21
22
|
const currentTarget = targetsOrdered.filter(t => t.date === '' + frameSet.date.getTime())[0];
|
|
22
23
|
const currentPos = targetsOrdered.indexOf(currentTarget);
|
|
23
24
|
const previousTarget = currentPos >= 0 ? targetsOrdered[currentPos - 1] : null;
|
|
@@ -35,76 +36,17 @@ export class CompareManager {
|
|
|
35
36
|
const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;
|
|
36
37
|
compareSpeedMatrix = qualitySpeedMatrixContainer.renderMergedMatrix({ normalize: true });
|
|
37
38
|
compareTrustedIndicator = qualitySpeedMatrixContainer.getTrustedIndicators()[0];
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const maxValue = Math.max(qualitySpeedMatrixContainer.getMaxGauge(), qualitySpeedMatrixContainer.getMaxRain());
|
|
47
|
-
const remarks = qualitySpeedMatrixContainer.getMatrix(index)?.remarks;
|
|
48
|
-
const delta = parseInt(name, 10);
|
|
49
|
-
let renamed = new Date(currentQuality.date.getTime() - delta * 60 * 1000).toLocaleString();
|
|
50
|
-
renamed += delta > 0 ? ' since ' : ' in ';
|
|
51
|
-
renamed += Math.abs(delta) + ' minutes';
|
|
52
|
-
console.log('index:', index, 'delta:', delta, 'renamed:', renamed);
|
|
53
|
-
// remove previous or next better values from comparePoints
|
|
54
|
-
let qualityPoints = comparePointsHistory.filter((p) => p); // no real filter
|
|
55
|
-
const removeDuplicates = !withCompareDuplicate;
|
|
56
|
-
if (removeDuplicates) {
|
|
57
|
-
if (index === compareNames.length - 1) {
|
|
58
|
-
if (!previousQuality?.qualitySpeedMatrixContainer) {
|
|
59
|
-
qualityPoints = [];
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
qualityPoints = qualityPoints.filter((p) => {
|
|
63
|
-
const previousQPs = previousQuality.qualitySpeedMatrixContainer
|
|
64
|
-
.getQualityPointsByHistoricalPosition(0)
|
|
65
|
-
.filter(previousQP => p.gaugeId === previousQP.gaugeId);
|
|
66
|
-
// better before ?
|
|
67
|
-
const betterBefore = (previousQPs.length === 1 && p.getDelta() > previousQPs[0].getDelta());
|
|
68
|
-
if (betterBefore) {
|
|
69
|
-
console.log('removed from', renamed, p.gaugeLabel, previousQuality.date.toISOString(), p.getDelta(), previousQPs.length === 1 ? previousQPs[0].getDelta() + ' dated ' + previousQPs[0].gaugeDate.toISOString() : 0);
|
|
70
|
-
return false; // => remove it
|
|
71
|
-
}
|
|
72
|
-
return true;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else if (index === 0) {
|
|
77
|
-
if (!nextQuality?.qualitySpeedMatrixContainer) {
|
|
78
|
-
qualityPoints = [];
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
qualityPoints = qualityPoints.filter((p) => {
|
|
82
|
-
const nextQPs = nextQuality.qualitySpeedMatrixContainer
|
|
83
|
-
.getQualityPointsByHistoricalPosition(1)
|
|
84
|
-
.filter(nextQP => p.gaugeId === nextQP.gaugeId);
|
|
85
|
-
// better after ?
|
|
86
|
-
const betterAfter = (nextQPs.length === 1 && p.getDelta() > nextQPs[0].getDelta());
|
|
87
|
-
if (betterAfter) {
|
|
88
|
-
console.log('removed from', renamed, p.gaugeLabel, nextQuality.date.toISOString(), p.getDelta(), nextQPs.length === 1 ? nextQPs[0].getDelta() + ' dated ' + nextQPs[0].gaugeDate.toISOString() : 0);
|
|
89
|
-
return false; // => remove it
|
|
90
|
-
}
|
|
91
|
-
return true;
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const comparePoints = qualityPoints.map((qualityPoint) => new XYType(qualityPoint.getGaugeValue(), qualityPoint.getRainValue(), 2, qualityPoint.gaugeLabel, qualityPoint.gaugeId));
|
|
97
|
-
const compare = {
|
|
98
|
-
name: renamed,
|
|
99
|
-
comparePointsHistory,
|
|
100
|
-
comparePoints,
|
|
101
|
-
maxValue,
|
|
102
|
-
comparePointsMax: new XYType(maxValue + 20, maxValue + 20),
|
|
103
|
-
remarks,
|
|
39
|
+
const comparesToMap = SpeedMatrixContainer.BuildCompares(currentQuality, previousQuality, nextQuality, withCompareDuplicate);
|
|
40
|
+
compares = comparesToMap.map(c => {
|
|
41
|
+
return {
|
|
42
|
+
name: c.name,
|
|
43
|
+
comparePoints: c.qualityPoints.map(p => new XYType(p.getGaugeValue(), p.getRainValue(), 2, p.gaugeLabel, p.gaugeId)),
|
|
44
|
+
comparePointsMax: new XYType(c.maxValue + 20, c.maxValue + 20),
|
|
45
|
+
comparePointsHistory: c.qualityPointsLegacy,
|
|
46
|
+
remarks: c.remarks
|
|
104
47
|
};
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
return compares;
|
|
48
|
+
});
|
|
49
|
+
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
108
50
|
}
|
|
109
51
|
cleanAll() {
|
|
110
52
|
this.gaugesInCompare = [];
|
|
@@ -288,4 +230,4 @@ export class CompareManager {
|
|
|
288
230
|
this.selectGaugeInCompare();
|
|
289
231
|
}
|
|
290
232
|
}
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9Db21wYXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBZ0Usb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUlqQyxNQUFNLE9BQU8sY0FBYztJQStCekIsWUFDWSxRQUFrQixFQUNsQixjQUE4QixFQUNqQyxZQUF3QixHQUFHLEVBQUU7SUFDcEMsQ0FBQztRQUhTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQ2Y7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxPQUFlO1FBRXhFLE1BQU0sV0FBVyxHQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxLQUFLLENBQUMs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QzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwTGF0TG5nfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1Bvc2l0aW9uVmFsdWUsIFF1YWxpdHlQb2ludCwgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSwgUmFpbk5vZGUsIFNwZWVkTWF0cml4Q29udGFpbmVyfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0ZyYW1lU2V0fSBmcm9tICcuL0ZyYW1lU2V0JztcblxuZXhwb3J0IGNsYXNzIENvbXBhcmVNYW5hZ2VyIHtcblxuICAvLyBwdWJsaWMgY29tcHV0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBnYXVnZXNJbkNvbXBhcmU6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgc2VsZWN0ZWRHYXVnZXM6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgc2VsZWN0ZWRQaXhlbHM6IE1hcExhdExuZ1tdO1xuICBwdWJsaWMgcGl4ZWxzU29sdXRpb25zOiBNYXBMYXRMbmdbXVtdO1xuXG4gIHB1YmxpYyBjb21wYXJlTmFtZXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgY29tcGFyZXM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29tcGFyZVBvaW50czogWFlUeXBlW107XG4gICAgY29tcGFyZVBvaW50c01heDogWFlUeXBlO1xuICAgIGNvbXBhcmVQb2ludHNIaXN0b3J5OiBRdWFsaXR5UG9pbnRbXTtcbiAgICByZW1hcmtzOiBzdHJpbmc7XG4gIH1bXTtcbiAgcHVibGljIGNvbXBhcmVTcGVlZE1hdHJpeDogUG9zaXRpb25WYWx1ZVtdO1xuICBwdWJsaWMgY29tcGFyZVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yOiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50UXVhbGl0eURvbmVEYXRlOiBEYXRlO1xuICBwdWJsaWMgY3VycmVudFF1YWxpdHlMYXVuY2hlZEJ5OiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXM6IG51bWJlcjtcbiAgcHVibGljIGdsb2JhbENvbXBhcmVQb2ludHM6IFhZVHlwZVtdO1xuICBwdWJsaWMgZ2xvYmFsQ29tcGFyZVBvaW50c01heDogWFlUeXBlO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlOiBRdWFsaXR5UG9pbnQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEdhdWdlSW5Qb2ludHM6IFF1YWxpdHlQb2ludDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJhaW5Ob2RlOiBSYWluTm9kZSxcbiAgICBwcm90ZWN0ZWQgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBvbkNoYW5nZXM6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgfVxuICApIHtcbiAgICB0aGlzLmNsZWFuQWxsKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIENvbXBhcmVEYXRlKGRhdGUxOiBzdHJpbmcsIGRhdGUyOiBzdHJpbmcsIG1pbnV0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgZGF0ZTFBc0RhdGU6IERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChkYXRlMSwgMTApKTtcbiAgICBjb25zdCBkYXRlMkRpZmYgPSBuZXcgRGF0ZShwYXJzZUludChkYXRlMiwgMTApKTtcbiAgICBkYXRlMkRpZmYuc2V0TWludXRlcyhkYXRlMkRpZmYuZ2V0TWludXRlcygpICsgbWludXRlcyk7XG4gICAgY29uc3QgZGlmZiA9IE1hdGgucm91bmQoKGRhdGUxQXNEYXRlLmdldFRpbWUoKSAtIGRhdGUyRGlmZi5nZXRUaW1lKCkpIC8gKDYwICogMTAwMCkpO1xuICAgIHJldHVybiBkaWZmID09PSAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBhc3luYyBCdWlsZENvbXBhcmUoZnJhbWVTZXQ6IHsgZGF0ZTogRGF0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzT3JkZXJlZDogeyBkYXRlOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBsZXQgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvciwgY29tcGFyZXNcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0c09yZGVyZWQuZmlsdGVyKHQgPT4gdC5kYXRlID09PSAnJyArIGZyYW1lU2V0LmRhdGUuZ2V0VGltZSgpKVswXTtcbiAgICBjb25zdCBjdXJyZW50UG9zID0gdGFyZ2V0c09yZGVyZWQuaW5kZXhPZihjdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBwcmV2aW91c1RhcmdldCA9IGN1cnJlbnRQb3MgPj0gMCA/IHRhcmdldHNPcmRlcmVkW2N1cnJlbnRQb3MgLSAxXSA6IG51bGw7XG4gICAgY29uc3QgbmV4dFRhcmdldCA9IGN1cnJlbnRQb3MgPj0gMCAmJiBjdXJyZW50UG9zIDwgdGFyZ2V0c09yZGVyZWQubGVuZ3RoIC0gMSA/IHRhcmdldHNPcmRlcmVkW2N1cnJlbnRQb3MgKyAxXSA6IG51bGw7XG5cblxuICAgIGNvbnN0IGN1cnJlbnRRdWFsaXR5OiBSYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW2N1cnJlbnRUYXJnZXQ/LmRhdGVdO1xuICAgIGlmICghY3VycmVudFF1YWxpdHkpIHtcbiAgICAgIHJldHVybiB7Y3VycmVudFF1YWxpdHksIGNvbXBhcmVTcGVlZE1hdHJpeCwgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IsIGNvbXBhcmVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1F1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHkgPSBwcmV2aW91c1RhcmdldCAmJlxuICAgIENvbXBhcmVNYW5hZ2VyLkNvbXBhcmVEYXRlKHByZXZpb3VzVGFyZ2V0LmRhdGUsIGN1cnJlbnRUYXJnZXQuZGF0ZSwgLTUpID9cbiAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdGllc1twcmV2aW91c1RhcmdldC5kYXRlXSA6IG51bGw7XG4gICAgY29uc3QgbmV4dFF1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHkgPSBuZXh0VGFyZ2V0XG4gICAgJiYgQ29tcGFyZU1hbmFnZXIuQ29tcGFyZURhdGUobmV4dFRhcmdldC5kYXRlLCBjdXJyZW50VGFyZ2V0LmRhdGUsICs1KSA/XG4gICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbbmV4dFRhcmdldC5kYXRlXSA6IG51bGw7XG5cbiAgICBjb25zdCBxdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIgPSBjdXJyZW50UXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXI7XG4gICAgY29tcGFyZVNwZWVkTWF0cml4ID0gcXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyLnJlbmRlck1lcmdlZE1hdHJpeCh7bm9ybWFsaXplOiB0cnVlfSk7XG4gICAgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPSBxdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIuZ2V0VHJ1c3RlZEluZGljYXRvcnMoKVswXTtcblxuICAgIGNvbXBhcmVzID0gU3BlZWRNYXRyaXhDb250YWluZXIuQnVpbGRDb21wYXJlcyhjdXJyZW50UXVhbGl0eSwgcHJldmlvdXNRdWFsaXR5LCBuZXh0UXVhbGl0eSwgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgIHJldHVybiB7Y3VycmVudFF1YWxpdHksIGNvbXBhcmVTcGVlZE1hdHJpeCwgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IsIGNvbXBhcmVzfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgQnVpbGRDb21wYXJlcyhjb21wYXJlTmFtZXM6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFF1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1F1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0UXVhbGl0eTogUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29tcGFyZXMgPSBbXTtcbiAgICBjb25zdCBxdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIgPSBjdXJyZW50UXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXI7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIG5hbWVdIG9mIGNvbXBhcmVOYW1lcy5lbnRyaWVzKCkpIHtcblxuICAgICAgY29uc3QgY29tcGFyZVBvaW50c0hpc3RvcnkgPSBxdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIuZ2V0UXVhbGl0eVBvaW50cyhuYW1lKTtcbiAgICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgocXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyLmdldE1heEdhdWdlKCksIHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5nZXRNYXhSYWluKCkpO1xuICAgICAgY29uc3QgcmVtYXJrcyA9IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5nZXRNYXRyaXgoaW5kZXgpPy5yZW1hcmtzO1xuXG4gICAgICBjb25zdCBkZWx0YSA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgIGxldCByZW5hbWVkID0gbmV3IERhdGUoY3VycmVudFF1YWxpdHkuZGF0ZS5nZXRUaW1lKCkgLSBkZWx0YSAqIDYwICogMTAwMCkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgIHJlbmFtZWQgKz0gZGVsdGEgPiAwID8gJyBzaW5jZSAnIDogJyBpbiAnO1xuICAgICAgcmVuYW1lZCArPSBNYXRoLmFicyhkZWx0YSkgKyAnIG1pbnV0ZXMnO1xuXG4gICAgICBjb25zb2xlLmxvZygnaW5kZXg6JywgaW5kZXgsICdkZWx0YTonLCBkZWx0YSwgJ3JlbmFtZWQ6JywgcmVuYW1lZCk7XG5cbiAgICAgIC8vIHJlbW92ZSBwcmV2aW91cyBvciBuZXh0IGJldHRlciB2YWx1ZXMgZnJvbSBjb21wYXJlUG9pbnRzXG4gICAgICBsZXQgcXVhbGl0eVBvaW50cyA9IGNvbXBhcmVQb2ludHNIaXN0b3J5LmZpbHRlcigocDogYW55KSA9PiBwKTsgLy8gbm8gcmVhbCBmaWx0ZXJcblxuICAgICAgY29uc3QgcmVtb3ZlRHVwbGljYXRlcyA9ICF3aXRoQ29tcGFyZUR1cGxpY2F0ZTtcbiAgICAgIGlmIChyZW1vdmVEdXBsaWNhdGVzKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gY29tcGFyZU5hbWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBpZiAoIXByZXZpb3VzUXVhbGl0eT8ucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBxdWFsaXR5UG9pbnRzID0gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1YWxpdHlQb2ludHMgPSBxdWFsaXR5UG9pbnRzLmZpbHRlcigocDogUXVhbGl0eVBvaW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUVBzID0gcHJldmlvdXNRdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lclxuICAgICAgICAgICAgICAgIC5nZXRRdWFsaXR5UG9pbnRzQnlIaXN0b3JpY2FsUG9zaXRpb24oMClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHByZXZpb3VzUVAgPT4gcC5nYXVnZUlkID09PSBwcmV2aW91c1FQLmdhdWdlSWQpO1xuXG4gICAgICAgICAgICAgIC8vIGJldHRlciBiZWZvcmUgP1xuICAgICAgICAgICAgICBjb25zdCBiZXR0ZXJCZWZvcmUgPSAocHJldmlvdXNRUHMubGVuZ3RoID09PSAxICYmIHAuZ2V0RGVsdGEoKSA+IHByZXZpb3VzUVBzWzBdLmdldERlbHRhKCkpO1xuICAgICAgICAgICAgICBpZiAoYmV0dGVyQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlbW92ZWQgZnJvbScsIHJlbmFtZWQsIHAuZ2F1Z2VMYWJlbCwgcHJldmlvdXNRdWFsaXR5LmRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHAuZ2V0RGVsdGEoKSxcbiAgICAgICAgICAgICAgICAgIHByZXZpb3VzUVBzLmxlbmd0aCA9PT0gMSA/IHByZXZpb3VzUVBzWzBdLmdldERlbHRhKCkgKyAnIGRhdGVkICcgKyBwcmV2aW91c1FQc1swXS5nYXVnZURhdGUudG9JU09TdHJpbmcoKSA6IDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gPT4gcmVtb3ZlIGl0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICBpZiAoIW5leHRRdWFsaXR5Py5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIpIHtcbiAgICAgICAgICAgIHF1YWxpdHlQb2ludHMgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVhbGl0eVBvaW50cyA9IHF1YWxpdHlQb2ludHMuZmlsdGVyKChwOiBRdWFsaXR5UG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV4dFFQcyA9IG5leHRRdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lclxuICAgICAgICAgICAgICAgIC5nZXRRdWFsaXR5UG9pbnRzQnlIaXN0b3JpY2FsUG9zaXRpb24oMSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKG5leHRRUCA9PiBwLmdhdWdlSWQgPT09IG5leHRRUC5nYXVnZUlkKTtcblxuICAgICAgICAgICAgICAvLyBiZXR0ZXIgYWZ0ZXIgP1xuICAgICAgICAgICAgICBjb25zdCBiZXR0ZXJBZnRlciA9IChuZXh0UVBzLmxlbmd0aCA9PT0gMSAmJiBwLmdldERlbHRhKCkgPiBuZXh0UVBzWzBdLmdldERlbHRhKCkpO1xuICAgICAgICAgICAgICBpZiAoYmV0dGVyQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygncmVtb3ZlZCBmcm9tJywgcmVuYW1lZCwgcC5nYXVnZUxhYmVsLCBuZXh0UXVhbGl0eS5kYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBwLmdldERlbHRhKCksXG4gICAgICAgICAgICAgICAgICBuZXh0UVBzLmxlbmd0aCA9PT0gMSA/IG5leHRRUHNbMF0uZ2V0RGVsdGEoKSArICcgZGF0ZWQgJyArIG5leHRRUHNbMF0uZ2F1Z2VEYXRlLnRvSVNPU3RyaW5nKCkgOiAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vID0+IHJlbW92ZSBpdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBhcmVQb2ludHMgPSBxdWFsaXR5UG9pbnRzLm1hcCgocXVhbGl0eVBvaW50OiBRdWFsaXR5UG9pbnQpID0+XG4gICAgICAgIG5ldyBYWVR5cGUocXVhbGl0eVBvaW50LmdldEdhdWdlVmFsdWUoKSwgcXVhbGl0eVBvaW50LmdldFJhaW5WYWx1ZSgpLCAyLCBxdWFsaXR5UG9pbnQuZ2F1Z2VMYWJlbCwgcXVhbGl0eVBvaW50LmdhdWdlSWQpKTtcblxuICAgICAgY29uc3QgY29tcGFyZSA9IHtcbiAgICAgICAgbmFtZTogcmVuYW1lZCxcbiAgICAgICAgY29tcGFyZVBvaW50c0hpc3RvcnksXG4gICAgICAgIGNvbXBhcmVQb2ludHMsXG4gICAgICAgIG1heFZhbHVlLFxuICAgICAgICBjb21wYXJlUG9pbnRzTWF4OiBuZXcgWFlUeXBlKG1heFZhbHVlICsgMjAsIG1heFZhbHVlICsgMjApLFxuICAgICAgICByZW1hcmtzLFxuICAgICAgfTtcblxuICAgICAgY29tcGFyZXMucHVzaChjb21wYXJlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXM7XG4gIH1cblxuICBwdWJsaWMgY2xlYW5BbGwoKSB7XG4gICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG5cbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICB0aGlzLmNsZWFuQ29tcGFyZVF1YWxpdHkoJ25vIGNvbXBhcmUnKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGRhdGU6IERhdGU7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBjb25zdCB0YXJnZXRzT3JkZXJlZCA9IHRhcmdldHNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSlcbiAgICAgIC5tYXAodCA9PiB7XG4gICAgICAgIHJldHVybiB7ZGF0ZTogJycgKyB0LmRhdGUuZ2V0VGltZSgpLCByYWluQ29tcHV0YXRpb25JZDogdC5yYWluQ29tcHV0YXRpb25JZCwgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiB0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZH07XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQpO1xuXG4gICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgYXdhaXQgQ29tcGFyZU1hbmFnZXIuQnVpbGRDb21wYXJlKGZyYW1lU2V0LCB0YXJnZXRzT3JkZXJlZCwgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMsIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcblxuICAgIGlmICghY3VycmVudFF1YWxpdHkpIHtcbiAgICAgIHRoaXMuY2xlYW5Db21wYXJlUXVhbGl0eSgnbm8gY3VycmVudCBxdWFsaXR5ICcgKyBPYmplY3Qua2V5cyh0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5RG9uZURhdGUgPSBjdXJyZW50UXVhbGl0eS5pc0RvbmVEYXRlO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgPSBjdXJyZW50UXVhbGl0eS50aW1lU3BlbnRJbk1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgPSBjdXJyZW50UXVhbGl0eS5sYXVuY2hlZEJ5O1xuICAgICAgdGhpcy5jb21wYXJlVmVyc2lvbiA9IGN1cnJlbnRRdWFsaXR5LmdldFZlcnNpb24oKTtcbiAgICAgIHRoaXMuY29tcGFyZVNwZWVkTWF0cml4ID0gY29tcGFyZVNwZWVkTWF0cml4O1xuICAgICAgdGhpcy5jb21wYXJlVHJ1c3RlZEluZGljYXRvciA9IGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yO1xuICAgICAgdGhpcy5jb21wYXJlcyA9IGNvbXBhcmVzO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoR2xvYmFsQ29tcGFyZVF1YWxpdHkodGFyZ2V0czogeyBkYXRlOiBEYXRlOyByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nOyByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhbikge1xuXG4gICAgY29uc3QgdGFyZ2V0c09yZGVyZWQgPSB0YXJnZXRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpXG4gICAgICAubWFwKHQgPT4ge1xuICAgICAgICByZXR1cm4ge2RhdGU6ICcnICsgdC5kYXRlLmdldFRpbWUoKSwgcmFpbkNvbXB1dGF0aW9uSWQ6IHQucmFpbkNvbXB1dGF0aW9uSWQsIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogdC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWR9O1xuICAgICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmZldGNoUmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKHRhcmdldHNPcmRlcmVkKTtcblxuICAgIGxldCBnbG9iYWxDb21wYXJlUG9pbnRzOiBYWVR5cGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGFyZ2V0cykge1xuICAgICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgICBhd2FpdCBDb21wYXJlTWFuYWdlci5CdWlsZENvbXBhcmUoZnJhbWVTZXQsIHRhcmdldHNPcmRlcmVkLCB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcywgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgICAgZm9yIChjb25zdCBjb21wYXJlIG9mIGNvbXBhcmVzID8gY29tcGFyZXMgOiBbXSkge1xuICAgICAgICBnbG9iYWxDb21wYXJlUG9pbnRzID0gZ2xvYmFsQ29tcGFyZVBvaW50cy5jb25jYXQoY29tcGFyZS5jb21wYXJlUG9pbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWF4WCA9IDAsIG1heFkgPSAwO1xuICAgIGNvbnN0IGdsb2JhbENvbXBhcmVQb2ludHNHcm91cGVkID0gW107XG4gICAgY29uc3QgcG9pbnRzR3JvdXBlZEJ5SWQgPSBnbG9iYWxDb21wYXJlUG9pbnRzLnJlZHVjZSgocmVzLCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFyZXNbdmFsdWUuaWRdKSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0gPSB2YWx1ZTtcbiAgICAgICAgZ2xvYmFsQ29tcGFyZVBvaW50c0dyb3VwZWQucHVzaChyZXNbdmFsdWUuaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0ueCArPSB2YWx1ZS54O1xuICAgICAgICByZXNbdmFsdWUuaWRdLnkgKz0gdmFsdWUueTtcbiAgICAgIH1cbiAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCByZXNbdmFsdWUuaWRdLngpO1xuICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHJlc1t2YWx1ZS5pZF0ueSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMgPSBnbG9iYWxDb21wYXJlUG9pbnRzR3JvdXBlZDtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHNNYXggPSBuZXcgWFlUeXBlKG1heFgsIG1heFkpO1xuICB9XG5cbiAgYXN5bmMgc2V0R2F1Z2VzKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZXRHYXVnZXMnKTtcblxuICAgIGNvbnN0IHF1YWxpdHlQb2ludHM6IFF1YWxpdHlQb2ludFtdID0gW107XG4gICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMuY29tcGFyZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVhbGl0eVBvaW50IG9mIGNvbXBhcmUuY29tcGFyZVBvaW50c0hpc3RvcnkpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gcXVhbGl0eVBvaW50cy5maWx0ZXIocCA9PiBwPy5nYXVnZUlkID09PSBxdWFsaXR5UG9pbnQuZ2F1Z2VJZCk7XG4gICAgICAgIGlmIChhbHJlYWR5QWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcXVhbGl0eVBvaW50cy5wdXNoKHF1YWxpdHlQb2ludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdhdWdlc0luQ29tcGFyZSA9IHF1YWxpdHlQb2ludHMubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBNYXBMYXRMbmcocC5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCwgcC5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgMCxcbiAgICAgICAgcC5nYXVnZUlkLCBwLmdhdWdlTGFiZWwgKyAnPicgKyBwLmdldEdhdWdlVmFsdWUoKSxcbiAgICAgICAgcC5nZXRHYXVnZVZhbHVlKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gIH1cblxuICBhc3luYyBzZWxlY3RHYXVnZShnYXVnZUlkOiBzdHJpbmcsIGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NlbGVjdEdhdWdlJywgZ2F1Z2VJZCwgY29tcGFyZUluZGV4KTtcblxuICAgIGlmIChnYXVnZUlkKSB7XG4gICAgICBjb25zdCB4eXMgPSB0aGlzLmdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleCkuZmlsdGVyKHAgPT4gcC5nYXVnZUlkID09PSBnYXVnZUlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IHh5cy5sZW5ndGggPT09IDEgPyB4eXNbMF0gOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEdhdWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gdGhpcy5nZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXgpLmZpbHRlcihwID0+IHAuZ2F1Z2VJZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlLmdhdWdlSWQpO1xuICAgIGxldCBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW10gPSBbXTtcblxuICAgIGlmIChzZWxlY3RlZEdhdWdlSW5Qb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCByZW1hcmtzID0gSlNPTi5wYXJzZShzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0ucmVtYXJrKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtIC0gYi5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtKTtcbiAgICAgIGNvbnNvbGUubG9nKHJlbWFya3MpO1xuICAgICAgcGl4ZWxzU29sdXRpb25zID0gcmVtYXJrc1xuICAgICAgICAubWFwKHJlbWFyayA9PiByZW1hcmsuc29sdXRpb25Gb3JHYXVnZS5waXhlbHNcbiAgICAgICAgICAubWFwKHAgPT4gbmV3IE1hcExhdExuZyhwLnkgKyAwLjAwNSwgcC54ICsgMC4wMSwgMCwgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLCAnJyArICFyZW1hcmsubm90UG9zc2libGUsIDEpKSk7XG5cbiAgICAgIGNvbnN0IHRpbWVEZWx0YUluTWludXRlcyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXS5nZXRUaW1lRGVsdGFJbk1pbnV0ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsID0gJycgKyBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2F1Z2VMYWJlbCArICcgPiAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0R2F1Z2VWYWx1ZSgpICogMTAwKSAvIDEwMCArICcgLyAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0UmFpblZhbHVlKCkgKiAxMDApIC8gMTAwXG4gICAgICAgICsgJyBkVD0nICsgdGltZURlbHRhSW5NaW51dGVzO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXG4gICAgICBuZXcgTWFwTGF0TG5nKHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUubGF0LCB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUlkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUxhYmVsICsgJz4nICsgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSksXG4gICAgXTtcblxuICAgIHRoaXMuc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKTtcblxuICAgIGNvbnN0IHBpeGVsczogTWFwTGF0TG5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhaW5DYXJ0ZXNpYW5WYWx1ZSBvZiB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5yYWluQ2FydGVzaWFuVmFsdWVzKSB7XG4gICAgICBwaXhlbHMucHVzaChuZXcgTWFwTGF0TG5nKHJhaW5DYXJ0ZXNpYW5WYWx1ZS5sYXQgKyAwLjAwNSwgcmFpbkNhcnRlc2lhblZhbHVlLmxuZyArIDAuMDEpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IHBpeGVscztcblxuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gcGl4ZWxzU29sdXRpb25zO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGNvbXBhcmVJbmRleCA8IDAgfHwgdGhpcy5jb21wYXJlTmFtZXMubGVuZ3RoIDwgY29tcGFyZUluZGV4KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZXNbY29tcGFyZUluZGV4XS5jb21wYXJlUG9pbnRzSGlzdG9yeTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbkNvbXBhcmVRdWFsaXR5KGRldGFpbHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gZGV0YWlscztcbiAgICB0aGlzLmNvbXBhcmVOYW1lcyA9IFtdO1xuICAgIHRoaXMuY29tcGFyZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBhcmVTcGVlZE1hdHJpeCA9IFtdO1xuICAgIHRoaXMuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMgPSB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaFJhaW5Db21wdXRhdGlvblF1YWxpdGllcyh0YXJnZXRzT3JkZXJlZDoge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nXG4gIH1bXSkge1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMpKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRhcmdldHNPcmRlcmVkLmZpbHRlcih0ID0+IHQuZGF0ZSA9PT0ga2V5KTtcbiAgICAgIGlmIChmb3VuZC5sZW5ndGggPCAwKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHNPcmRlcmVkKSB7XG4gICAgICBpZiAoIXRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW3RhcmdldC5kYXRlXSAmJiB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbdGFyZ2V0LmRhdGVdID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZVxuICAgICAgICAgICAgLmdldFJhaW5Db21wYXJlQnlJZCh0aGlzLnJhaW5Ob2RlLmdldElkKCksIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCwgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RHYXVnZUluQ29tcGFyZSgpIHtcbiAgICBmb3IgKGNvbnN0IGNvbXBhcmUgb2YgdGhpcy5jb21wYXJlcykge1xuICAgICAgY29uc3QgY29tcGFyZVBvaW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGFyZS5jb21wYXJlUG9pbnRzKSk7XG4gICAgICBjb21wYXJlUG9pbnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIGlmIChwLmlkID09PSB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cz8uZ2F1Z2VJZCkge1xuICAgICAgICAgIHAuciA9IDEwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHAuciA9IDM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29tcGFyZS5jb21wYXJlUG9pbnRzID0gY29tcGFyZVBvaW50cztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3RlZEdhdWdlcygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVzZXRTZWxlY3RlZEdhdWdlcyByZXNldCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdEdhdWdlSW5Db21wYXJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGFyZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b29scy9Db21wYXJlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBZ0Usb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQVlqQyxNQUFNLE9BQU8sY0FBYztJQXlCekIsWUFDWSxRQUFrQixFQUNsQixjQUE4QixFQUNqQyxZQUF3QixHQUFHLEVBQUU7SUFDcEMsQ0FBQztRQUhTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQ2Y7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxPQUFlO1FBRXhFLE1BQU0sV0FBVyxHQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxLQUFLLENBQUMs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QzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwTGF0TG5nfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1Bvc2l0aW9uVmFsdWUsIFF1YWxpdHlQb2ludCwgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSwgUmFpbk5vZGUsIFNwZWVkTWF0cml4Q29udGFpbmVyfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0ZyYW1lU2V0fSBmcm9tICcuL0ZyYW1lU2V0JztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29tcGFyZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29tcGFyZVBvaW50czogWFlUeXBlW107XG4gIGNvbXBhcmVQb2ludHNNYXg6IFhZVHlwZTtcbiAgY29tcGFyZVBvaW50c0hpc3Rvcnk6IFF1YWxpdHlQb2ludFtdO1xuICByZW1hcmtzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wYXJlTWFuYWdlciB7XG5cbiAgLy8gcHVibGljIGNvbXB1dGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwdWJsaWMgZ2F1Z2VzSW5Db21wYXJlOiBNYXBMYXRMbmdbXTtcbiAgcHVibGljIHNlbGVjdGVkR2F1Z2VzOiBNYXBMYXRMbmdbXTtcbiAgcHVibGljIHNlbGVjdGVkUGl4ZWxzOiBNYXBMYXRMbmdbXTtcbiAgcHVibGljIHBpeGVsc1NvbHV0aW9uczogTWFwTGF0TG5nW11bXTtcblxuICBwdWJsaWMgY29tcGFyZU5hbWVzOiBzdHJpbmdbXTtcbiAgcHVibGljIGNvbXBhcmVzOiBJQ29tcGFyZVtdO1xuICBwdWJsaWMgY29tcGFyZVNwZWVkTWF0cml4OiBQb3NpdGlvblZhbHVlW107XG4gIHB1YmxpYyBjb21wYXJlVmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgY29tcGFyZVRydXN0ZWRJbmRpY2F0b3I6IG51bWJlcjtcbiAgcHVibGljIGN1cnJlbnRRdWFsaXR5RG9uZURhdGU6IERhdGU7XG4gIHB1YmxpYyBjdXJyZW50UXVhbGl0eUxhdW5jaGVkQnk6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NczogbnVtYmVyO1xuICBwdWJsaWMgZ2xvYmFsQ29tcGFyZVBvaW50czogWFlUeXBlW107XG4gIHB1YmxpYyBnbG9iYWxDb21wYXJlUG9pbnRzTWF4OiBYWVR5cGU7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkR2F1Z2U6IFF1YWxpdHlQb2ludDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkR2F1Z2VJblBvaW50czogUXVhbGl0eVBvaW50O1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByYWluQ29tcHV0YXRpb25RdWFsaXRpZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmFpbk5vZGU6IFJhaW5Ob2RlLFxuICAgIHByb3RlY3RlZCBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgcHVibGljIG9uQ2hhbmdlczogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICB9XG4gICkge1xuICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGF0aWMgQ29tcGFyZURhdGUoZGF0ZTE6IHN0cmluZywgZGF0ZTI6IHN0cmluZywgbWludXRlczogbnVtYmVyKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBkYXRlMUFzRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KGRhdGUxLCAxMCkpO1xuICAgIGNvbnN0IGRhdGUyRGlmZiA9IG5ldyBEYXRlKHBhcnNlSW50KGRhdGUyLCAxMCkpO1xuICAgIGRhdGUyRGlmZi5zZXRNaW51dGVzKGRhdGUyRGlmZi5nZXRNaW51dGVzKCkgKyBtaW51dGVzKTtcbiAgICBjb25zdCBkaWZmID0gTWF0aC5yb3VuZCgoZGF0ZTFBc0RhdGUuZ2V0VGltZSgpIC0gZGF0ZTJEaWZmLmdldFRpbWUoKSkgLyAoNjAgKiAxMDAwKSk7XG4gICAgcmV0dXJuIGRpZmYgPT09IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhdGljIGFzeW5jIEJ1aWxkQ29tcGFyZShmcmFtZVNldDogeyBkYXRlOiBEYXRlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHNPcmRlcmVkOiB7IGRhdGU6IHN0cmluZzsgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZzsgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmcgfVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXM6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW4pIHtcblxuICAgIGxldCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yO1xuICAgIGxldCBjb21wYXJlczogSUNvbXBhcmVbXSA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXRzT3JkZXJlZC5maWx0ZXIodCA9PiB0LmRhdGUgPT09ICcnICsgZnJhbWVTZXQuZGF0ZS5nZXRUaW1lKCkpWzBdO1xuICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0YXJnZXRzT3JkZXJlZC5pbmRleE9mKGN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IHByZXZpb3VzVGFyZ2V0ID0gY3VycmVudFBvcyA+PSAwID8gdGFyZ2V0c09yZGVyZWRbY3VycmVudFBvcyAtIDFdIDogbnVsbDtcbiAgICBjb25zdCBuZXh0VGFyZ2V0ID0gY3VycmVudFBvcyA+PSAwICYmIGN1cnJlbnRQb3MgPCB0YXJnZXRzT3JkZXJlZC5sZW5ndGggLSAxID8gdGFyZ2V0c09yZGVyZWRbY3VycmVudFBvcyArIDFdIDogbnVsbDtcblxuXG4gICAgY29uc3QgY3VycmVudFF1YWxpdHk6IFJhaW5Db21wdXRhdGlvblF1YWxpdHkgPSByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbY3VycmVudFRhcmdldD8uZGF0ZV07XG4gICAgaWYgKCFjdXJyZW50UXVhbGl0eSkge1xuICAgICAgcmV0dXJuIHtjdXJyZW50UXVhbGl0eSwgY29tcGFyZVNwZWVkTWF0cml4LCBjb21wYXJlVHJ1c3RlZEluZGljYXRvciwgY29tcGFyZXN9O1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzUXVhbGl0eTogUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSA9IHByZXZpb3VzVGFyZ2V0ICYmXG4gICAgQ29tcGFyZU1hbmFnZXIuQ29tcGFyZURhdGUocHJldmlvdXNUYXJnZXQuZGF0ZSwgY3VycmVudFRhcmdldC5kYXRlLCAtNSkgP1xuICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW3ByZXZpb3VzVGFyZ2V0LmRhdGVdIDogbnVsbDtcbiAgICBjb25zdCBuZXh0UXVhbGl0eTogUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSA9IG5leHRUYXJnZXRcbiAgICAmJiBDb21wYXJlTWFuYWdlci5Db21wYXJlRGF0ZShuZXh0VGFyZ2V0LmRhdGUsIGN1cnJlbnRUYXJnZXQuZGF0ZSwgKzUpID9cbiAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdGllc1tuZXh0VGFyZ2V0LmRhdGVdIDogbnVsbDtcblxuICAgIGNvbnN0IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lciA9IGN1cnJlbnRRdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lcjtcbiAgICBjb21wYXJlU3BlZWRNYXRyaXggPSBxdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIucmVuZGVyTWVyZ2VkTWF0cml4KHtub3JtYWxpemU6IHRydWV9KTtcbiAgICBjb21wYXJlVHJ1c3RlZEluZGljYXRvciA9IHF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lci5nZXRUcnVzdGVkSW5kaWNhdG9ycygpWzBdO1xuXG4gICAgY29uc3QgY29tcGFyZXNUb01hcCA9IFNwZWVkTWF0cml4Q29udGFpbmVyLkJ1aWxkQ29tcGFyZXMoY3VycmVudFF1YWxpdHksIHByZXZpb3VzUXVhbGl0eSwgbmV4dFF1YWxpdHksIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcbiAgICBjb21wYXJlcyA9IGNvbXBhcmVzVG9NYXAubWFwKGMgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgICBjb21wYXJlUG9pbnRzOiBjLnF1YWxpdHlQb2ludHMubWFwKHAgPT4gbmV3IFhZVHlwZShwLmdldEdhdWdlVmFsdWUoKSwgcC5nZXRSYWluVmFsdWUoKSwgMiwgcC5nYXVnZUxhYmVsLCBwLmdhdWdlSWQpKSxcbiAgICAgICAgY29tcGFyZVBvaW50c01heDogbmV3IFhZVHlwZShjLm1heFZhbHVlICsgMjAsIGMubWF4VmFsdWUgKyAyMCksXG4gICAgICAgIGNvbXBhcmVQb2ludHNIaXN0b3J5OiBjLnF1YWxpdHlQb2ludHNMZWdhY3ksXG4gICAgICAgIHJlbWFya3M6IGMucmVtYXJrc1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4ge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc307XG4gIH1cblxuICBwdWJsaWMgY2xlYW5BbGwoKSB7XG4gICAgdGhpcy5nYXVnZXNJbkNvbXBhcmUgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IFtdO1xuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gW107XG5cbiAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gbnVsbDtcbiAgICB0aGlzLmNsZWFuQ29tcGFyZVF1YWxpdHkoJ25vIGNvbXBhcmUnKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hDb21wYXJlUXVhbGl0eShmcmFtZVNldDogRnJhbWVTZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB7IGRhdGU6IERhdGU7IHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmc7IHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDb21wYXJlRHVwbGljYXRlOiBib29sZWFuKSB7XG5cbiAgICBjb25zdCB0YXJnZXRzT3JkZXJlZCA9IHRhcmdldHNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGUuZ2V0VGltZSgpIC0gYi5kYXRlLmdldFRpbWUoKSlcbiAgICAgIC5tYXAodCA9PiB7XG4gICAgICAgIHJldHVybiB7ZGF0ZTogJycgKyB0LmRhdGUuZ2V0VGltZSgpLCByYWluQ29tcHV0YXRpb25JZDogdC5yYWluQ29tcHV0YXRpb25JZCwgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiB0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZH07XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuZmV0Y2hSYWluQ29tcHV0YXRpb25RdWFsaXRpZXModGFyZ2V0c09yZGVyZWQpO1xuXG4gICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgYXdhaXQgQ29tcGFyZU1hbmFnZXIuQnVpbGRDb21wYXJlKGZyYW1lU2V0LCB0YXJnZXRzT3JkZXJlZCwgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMsIHdpdGhDb21wYXJlRHVwbGljYXRlKTtcblxuICAgIGlmICghY3VycmVudFF1YWxpdHkpIHtcbiAgICAgIHRoaXMuY2xlYW5Db21wYXJlUXVhbGl0eSgnbm8gY3VycmVudCBxdWFsaXR5ICcgKyBPYmplY3Qua2V5cyh0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRRdWFsaXR5RG9uZURhdGUgPSBjdXJyZW50UXVhbGl0eS5pc0RvbmVEYXRlO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgPSBjdXJyZW50UXVhbGl0eS50aW1lU3BlbnRJbk1zO1xuICAgICAgdGhpcy5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgPSBjdXJyZW50UXVhbGl0eS5sYXVuY2hlZEJ5O1xuICAgICAgdGhpcy5jb21wYXJlVmVyc2lvbiA9IGN1cnJlbnRRdWFsaXR5LmdldFZlcnNpb24oKTtcbiAgICAgIHRoaXMuY29tcGFyZVNwZWVkTWF0cml4ID0gY29tcGFyZVNwZWVkTWF0cml4O1xuICAgICAgdGhpcy5jb21wYXJlVHJ1c3RlZEluZGljYXRvciA9IGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yO1xuICAgICAgdGhpcy5jb21wYXJlcyA9IGNvbXBhcmVzO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2VzKCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoR2xvYmFsQ29tcGFyZVF1YWxpdHkodGFyZ2V0czogeyBkYXRlOiBEYXRlOyByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nOyByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoQ29tcGFyZUR1cGxpY2F0ZTogYm9vbGVhbikge1xuXG4gICAgY29uc3QgdGFyZ2V0c09yZGVyZWQgPSB0YXJnZXRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpXG4gICAgICAubWFwKHQgPT4ge1xuICAgICAgICByZXR1cm4ge2RhdGU6ICcnICsgdC5kYXRlLmdldFRpbWUoKSwgcmFpbkNvbXB1dGF0aW9uSWQ6IHQucmFpbkNvbXB1dGF0aW9uSWQsIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogdC5yYWluQ29tcHV0YXRpb25RdWFsaXR5SWR9O1xuICAgICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmZldGNoUmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzKHRhcmdldHNPcmRlcmVkKTtcblxuICAgIGxldCBnbG9iYWxDb21wYXJlUG9pbnRzOiBYWVR5cGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZnJhbWVTZXQgb2YgdGFyZ2V0cykge1xuICAgICAgY29uc3Qge2N1cnJlbnRRdWFsaXR5LCBjb21wYXJlU3BlZWRNYXRyaXgsIGNvbXBhcmVUcnVzdGVkSW5kaWNhdG9yLCBjb21wYXJlc30gPVxuICAgICAgICBhd2FpdCBDb21wYXJlTWFuYWdlci5CdWlsZENvbXBhcmUoZnJhbWVTZXQsIHRhcmdldHNPcmRlcmVkLCB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllcywgd2l0aENvbXBhcmVEdXBsaWNhdGUpO1xuICAgICAgZm9yIChjb25zdCBjb21wYXJlIG9mIGNvbXBhcmVzID8gY29tcGFyZXMgOiBbXSkge1xuICAgICAgICBnbG9iYWxDb21wYXJlUG9pbnRzID0gZ2xvYmFsQ29tcGFyZVBvaW50cy5jb25jYXQoY29tcGFyZS5jb21wYXJlUG9pbnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWF4WCA9IDAsIG1heFkgPSAwO1xuICAgIGNvbnN0IGdsb2JhbENvbXBhcmVQb2ludHNHcm91cGVkID0gW107XG4gICAgY29uc3QgcG9pbnRzR3JvdXBlZEJ5SWQgPSBnbG9iYWxDb21wYXJlUG9pbnRzLnJlZHVjZSgocmVzLCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFyZXNbdmFsdWUuaWRdKSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0gPSB2YWx1ZTtcbiAgICAgICAgZ2xvYmFsQ29tcGFyZVBvaW50c0dyb3VwZWQucHVzaChyZXNbdmFsdWUuaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc1t2YWx1ZS5pZF0ueCArPSB2YWx1ZS54O1xuICAgICAgICByZXNbdmFsdWUuaWRdLnkgKz0gdmFsdWUueTtcbiAgICAgIH1cbiAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCByZXNbdmFsdWUuaWRdLngpO1xuICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHJlc1t2YWx1ZS5pZF0ueSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHMgPSBnbG9iYWxDb21wYXJlUG9pbnRzR3JvdXBlZDtcbiAgICB0aGlzLmdsb2JhbENvbXBhcmVQb2ludHNNYXggPSBuZXcgWFlUeXBlKG1heFgsIG1heFkpO1xuICB9XG5cbiAgYXN5bmMgc2V0R2F1Z2VzKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdzZXRHYXVnZXMnKTtcblxuICAgIGNvbnN0IHF1YWxpdHlQb2ludHM6IFF1YWxpdHlQb2ludFtdID0gW107XG4gICAgZm9yIChjb25zdCBjb21wYXJlIG9mIHRoaXMuY29tcGFyZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVhbGl0eVBvaW50IG9mIGNvbXBhcmUuY29tcGFyZVBvaW50c0hpc3RvcnkpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gcXVhbGl0eVBvaW50cy5maWx0ZXIocCA9PiBwPy5nYXVnZUlkID09PSBxdWFsaXR5UG9pbnQuZ2F1Z2VJZCk7XG4gICAgICAgIGlmIChhbHJlYWR5QWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcXVhbGl0eVBvaW50cy5wdXNoKHF1YWxpdHlQb2ludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdhdWdlc0luQ29tcGFyZSA9IHF1YWxpdHlQb2ludHMubWFwKHAgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBNYXBMYXRMbmcocC5nYXVnZUNhcnRlc2lhblZhbHVlLmxhdCwgcC5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgMCxcbiAgICAgICAgcC5nYXVnZUlkLCBwLmdhdWdlTGFiZWwgKyAnPicgKyBwLmdldEdhdWdlVmFsdWUoKSxcbiAgICAgICAgcC5nZXRHYXVnZVZhbHVlKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gIH1cblxuICBhc3luYyBzZWxlY3RHYXVnZShnYXVnZUlkOiBzdHJpbmcsIGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ3NlbGVjdEdhdWdlJywgZ2F1Z2VJZCwgY29tcGFyZUluZGV4KTtcblxuICAgIGlmIChnYXVnZUlkKSB7XG4gICAgICBjb25zdCB4eXMgPSB0aGlzLmdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleCkuZmlsdGVyKHAgPT4gcC5nYXVnZUlkID09PSBnYXVnZUlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IHh5cy5sZW5ndGggPT09IDEgPyB4eXNbMF0gOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2UgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEdhdWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNldFNlbGVjdGVkR2F1Z2VzKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRHYXVnZUluUG9pbnRzID0gdGhpcy5nZXRDdXJyZW50UXVhbGl0eVBvaW50cyhjb21wYXJlSW5kZXgpLmZpbHRlcihwID0+IHAuZ2F1Z2VJZCA9PT0gdGhpcy5zZWxlY3RlZEdhdWdlLmdhdWdlSWQpO1xuICAgIGxldCBwaXhlbHNTb2x1dGlvbnM6IE1hcExhdExuZ1tdW10gPSBbXTtcblxuICAgIGlmIChzZWxlY3RlZEdhdWdlSW5Qb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCByZW1hcmtzID0gSlNPTi5wYXJzZShzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0ucmVtYXJrKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtIC0gYi5jcml0ZXJpYUF0dGVtcHRlZFRvQmVNaW5pbXVtKTtcbiAgICAgIGNvbnNvbGUubG9nKHJlbWFya3MpO1xuICAgICAgcGl4ZWxzU29sdXRpb25zID0gcmVtYXJrc1xuICAgICAgICAubWFwKHJlbWFyayA9PiByZW1hcmsuc29sdXRpb25Gb3JHYXVnZS5waXhlbHNcbiAgICAgICAgICAubWFwKHAgPT4gbmV3IE1hcExhdExuZyhwLnkgKyAwLjAwNSwgcC54ICsgMC4wMSwgMCwgJycgKyAhcmVtYXJrLm5vdFBvc3NpYmxlLCAnJyArICFyZW1hcmsubm90UG9zc2libGUsIDEpKSk7XG5cbiAgICAgIGNvbnN0IHRpbWVEZWx0YUluTWludXRlcyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXS5nZXRUaW1lRGVsdGFJbk1pbnV0ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsID0gJycgKyBzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2F1Z2VMYWJlbCArICcgPiAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0R2F1Z2VWYWx1ZSgpICogMTAwKSAvIDEwMCArICcgLyAnXG4gICAgICAgICsgTWF0aC5yb3VuZChzZWxlY3RlZEdhdWdlSW5Qb2ludHNbMF0uZ2V0UmFpblZhbHVlKCkgKiAxMDApIC8gMTAwXG4gICAgICAgICsgJyBkVD0nICsgdGltZURlbHRhSW5NaW51dGVzO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IHNlbGVjdGVkR2F1Z2VJblBvaW50c1swXTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cyA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgICB0aGlzLnBpeGVsc1NvbHV0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXG4gICAgICBuZXcgTWFwTGF0TG5nKHRoaXMuc2VsZWN0ZWRHYXVnZUluUG9pbnRzLmdhdWdlQ2FydGVzaWFuVmFsdWUubGF0LCB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUNhcnRlc2lhblZhbHVlLmxuZywgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUlkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5nYXVnZUxhYmVsICsgJz4nICsgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMuZ2F1Z2VDYXJ0ZXNpYW5WYWx1ZS52YWx1ZSksXG4gICAgXTtcblxuICAgIHRoaXMuc2VsZWN0R2F1Z2VJbkNvbXBhcmUoKTtcblxuICAgIGNvbnN0IHBpeGVsczogTWFwTGF0TG5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhaW5DYXJ0ZXNpYW5WYWx1ZSBvZiB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cy5yYWluQ2FydGVzaWFuVmFsdWVzKSB7XG4gICAgICBwaXhlbHMucHVzaChuZXcgTWFwTGF0TG5nKHJhaW5DYXJ0ZXNpYW5WYWx1ZS5sYXQgKyAwLjAwNSwgcmFpbkNhcnRlc2lhblZhbHVlLmxuZyArIDAuMDEpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFBpeGVscyA9IHBpeGVscztcblxuICAgIHRoaXMucGl4ZWxzU29sdXRpb25zID0gcGl4ZWxzU29sdXRpb25zO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEN1cnJlbnRRdWFsaXR5UG9pbnRzKGNvbXBhcmVJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGNvbXBhcmVJbmRleCA8IDAgfHwgdGhpcy5jb21wYXJlTmFtZXMubGVuZ3RoIDwgY29tcGFyZUluZGV4KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZXNbY29tcGFyZUluZGV4XS5jb21wYXJlUG9pbnRzSGlzdG9yeTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbkNvbXBhcmVRdWFsaXR5KGRldGFpbHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbXBhcmVWZXJzaW9uID0gZGV0YWlscztcbiAgICB0aGlzLmNvbXBhcmVOYW1lcyA9IFtdO1xuICAgIHRoaXMuY29tcGFyZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBhcmVTcGVlZE1hdHJpeCA9IFtdO1xuICAgIHRoaXMuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMgPSB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaFJhaW5Db21wdXRhdGlvblF1YWxpdGllcyh0YXJnZXRzT3JkZXJlZDoge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nO1xuICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nXG4gIH1bXSkge1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXMpKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRhcmdldHNPcmRlcmVkLmZpbHRlcih0ID0+IHQuZGF0ZSA9PT0ga2V5KTtcbiAgICAgIGlmIChmb3VuZC5sZW5ndGggPCAwKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhaW5Db21wdXRhdGlvblF1YWxpdGllc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHNPcmRlcmVkKSB7XG4gICAgICBpZiAoIXRoaXMucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzW3RhcmdldC5kYXRlXSAmJiB0YXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNbdGFyZ2V0LmRhdGVdID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZVxuICAgICAgICAgICAgLmdldFJhaW5Db21wYXJlQnlJZCh0aGlzLnJhaW5Ob2RlLmdldElkKCksIHRhcmdldC5yYWluQ29tcHV0YXRpb25JZCwgdGFyZ2V0LnJhaW5Db21wdXRhdGlvblF1YWxpdHlJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RHYXVnZUluQ29tcGFyZSgpIHtcbiAgICBmb3IgKGNvbnN0IGNvbXBhcmUgb2YgdGhpcy5jb21wYXJlcykge1xuICAgICAgY29uc3QgY29tcGFyZVBvaW50cyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29tcGFyZS5jb21wYXJlUG9pbnRzKSk7XG4gICAgICBjb21wYXJlUG9pbnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIGlmIChwLmlkID09PSB0aGlzLnNlbGVjdGVkR2F1Z2VJblBvaW50cz8uZ2F1Z2VJZCkge1xuICAgICAgICAgIHAuciA9IDEwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHAuciA9IDM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29tcGFyZS5jb21wYXJlUG9pbnRzID0gY29tcGFyZVBvaW50cztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3RlZEdhdWdlcygpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVzZXRTZWxlY3RlZEdhdWdlcyByZXNldCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEdhdWdlSW5Qb2ludHMgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRHYXVnZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUGl4ZWxzID0gW107XG4gICAgdGhpcy5waXhlbHNTb2x1dGlvbnMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdEdhdWdlSW5Db21wYXJlKCk7XG4gIH1cbn1cbiJdfQ==
|
package/fesm2015/raain-app.mjs
CHANGED
|
@@ -755,7 +755,8 @@ class CompareManager {
|
|
|
755
755
|
}
|
|
756
756
|
static BuildCompare(frameSet, targetsOrdered, rainComputationQualities, withCompareDuplicate) {
|
|
757
757
|
return __awaiter(this, void 0, void 0, function* () {
|
|
758
|
-
let compareSpeedMatrix, compareTrustedIndicator
|
|
758
|
+
let compareSpeedMatrix, compareTrustedIndicator;
|
|
759
|
+
let compares = [];
|
|
759
760
|
const currentTarget = targetsOrdered.filter(t => t.date === '' + frameSet.date.getTime())[0];
|
|
760
761
|
const currentPos = targetsOrdered.indexOf(currentTarget);
|
|
761
762
|
const previousTarget = currentPos >= 0 ? targetsOrdered[currentPos - 1] : null;
|
|
@@ -773,79 +774,19 @@ class CompareManager {
|
|
|
773
774
|
const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;
|
|
774
775
|
compareSpeedMatrix = qualitySpeedMatrixContainer.renderMergedMatrix({ normalize: true });
|
|
775
776
|
compareTrustedIndicator = qualitySpeedMatrixContainer.getTrustedIndicators()[0];
|
|
776
|
-
|
|
777
|
+
const comparesToMap = SpeedMatrixContainer.BuildCompares(currentQuality, previousQuality, nextQuality, withCompareDuplicate);
|
|
778
|
+
compares = comparesToMap.map(c => {
|
|
779
|
+
return {
|
|
780
|
+
name: c.name,
|
|
781
|
+
comparePoints: c.qualityPoints.map(p => new XYType(p.getGaugeValue(), p.getRainValue(), 2, p.gaugeLabel, p.gaugeId)),
|
|
782
|
+
comparePointsMax: new XYType(c.maxValue + 20, c.maxValue + 20),
|
|
783
|
+
comparePointsHistory: c.qualityPointsLegacy,
|
|
784
|
+
remarks: c.remarks
|
|
785
|
+
};
|
|
786
|
+
});
|
|
777
787
|
return { currentQuality, compareSpeedMatrix, compareTrustedIndicator, compares };
|
|
778
788
|
});
|
|
779
789
|
}
|
|
780
|
-
static BuildCompares(compareNames, currentQuality, previousQuality, nextQuality, withCompareDuplicate) {
|
|
781
|
-
var _a;
|
|
782
|
-
const compares = [];
|
|
783
|
-
const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;
|
|
784
|
-
for (const [index, name] of compareNames.entries()) {
|
|
785
|
-
const comparePointsHistory = qualitySpeedMatrixContainer.getQualityPoints(name);
|
|
786
|
-
const maxValue = Math.max(qualitySpeedMatrixContainer.getMaxGauge(), qualitySpeedMatrixContainer.getMaxRain());
|
|
787
|
-
const remarks = (_a = qualitySpeedMatrixContainer.getMatrix(index)) === null || _a === void 0 ? void 0 : _a.remarks;
|
|
788
|
-
const delta = parseInt(name, 10);
|
|
789
|
-
let renamed = new Date(currentQuality.date.getTime() - delta * 60 * 1000).toLocaleString();
|
|
790
|
-
renamed += delta > 0 ? ' since ' : ' in ';
|
|
791
|
-
renamed += Math.abs(delta) + ' minutes';
|
|
792
|
-
console.log('index:', index, 'delta:', delta, 'renamed:', renamed);
|
|
793
|
-
// remove previous or next better values from comparePoints
|
|
794
|
-
let qualityPoints = comparePointsHistory.filter((p) => p); // no real filter
|
|
795
|
-
const removeDuplicates = !withCompareDuplicate;
|
|
796
|
-
if (removeDuplicates) {
|
|
797
|
-
if (index === compareNames.length - 1) {
|
|
798
|
-
if (!(previousQuality === null || previousQuality === void 0 ? void 0 : previousQuality.qualitySpeedMatrixContainer)) {
|
|
799
|
-
qualityPoints = [];
|
|
800
|
-
}
|
|
801
|
-
else {
|
|
802
|
-
qualityPoints = qualityPoints.filter((p) => {
|
|
803
|
-
const previousQPs = previousQuality.qualitySpeedMatrixContainer
|
|
804
|
-
.getQualityPointsByHistoricalPosition(0)
|
|
805
|
-
.filter(previousQP => p.gaugeId === previousQP.gaugeId);
|
|
806
|
-
// better before ?
|
|
807
|
-
const betterBefore = (previousQPs.length === 1 && p.getDelta() > previousQPs[0].getDelta());
|
|
808
|
-
if (betterBefore) {
|
|
809
|
-
console.log('removed from', renamed, p.gaugeLabel, previousQuality.date.toISOString(), p.getDelta(), previousQPs.length === 1 ? previousQPs[0].getDelta() + ' dated ' + previousQPs[0].gaugeDate.toISOString() : 0);
|
|
810
|
-
return false; // => remove it
|
|
811
|
-
}
|
|
812
|
-
return true;
|
|
813
|
-
});
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
else if (index === 0) {
|
|
817
|
-
if (!(nextQuality === null || nextQuality === void 0 ? void 0 : nextQuality.qualitySpeedMatrixContainer)) {
|
|
818
|
-
qualityPoints = [];
|
|
819
|
-
}
|
|
820
|
-
else {
|
|
821
|
-
qualityPoints = qualityPoints.filter((p) => {
|
|
822
|
-
const nextQPs = nextQuality.qualitySpeedMatrixContainer
|
|
823
|
-
.getQualityPointsByHistoricalPosition(1)
|
|
824
|
-
.filter(nextQP => p.gaugeId === nextQP.gaugeId);
|
|
825
|
-
// better after ?
|
|
826
|
-
const betterAfter = (nextQPs.length === 1 && p.getDelta() > nextQPs[0].getDelta());
|
|
827
|
-
if (betterAfter) {
|
|
828
|
-
console.log('removed from', renamed, p.gaugeLabel, nextQuality.date.toISOString(), p.getDelta(), nextQPs.length === 1 ? nextQPs[0].getDelta() + ' dated ' + nextQPs[0].gaugeDate.toISOString() : 0);
|
|
829
|
-
return false; // => remove it
|
|
830
|
-
}
|
|
831
|
-
return true;
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
const comparePoints = qualityPoints.map((qualityPoint) => new XYType(qualityPoint.getGaugeValue(), qualityPoint.getRainValue(), 2, qualityPoint.gaugeLabel, qualityPoint.gaugeId));
|
|
837
|
-
const compare = {
|
|
838
|
-
name: renamed,
|
|
839
|
-
comparePointsHistory,
|
|
840
|
-
comparePoints,
|
|
841
|
-
maxValue,
|
|
842
|
-
comparePointsMax: new XYType(maxValue + 20, maxValue + 20),
|
|
843
|
-
remarks,
|
|
844
|
-
};
|
|
845
|
-
compares.push(compare);
|
|
846
|
-
}
|
|
847
|
-
return compares;
|
|
848
|
-
}
|
|
849
790
|
cleanAll() {
|
|
850
791
|
this.gaugesInCompare = [];
|
|
851
792
|
this.selectedGauges = [];
|