@cqa-lib/cqa-ui 1.1.56 → 1.1.58
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/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +57 -5
- package/fesm2015/cqa-lib-cqa-ui.mjs +56 -4
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +56 -4
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/execution-screen/loop-step/loop-step.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -24,6 +24,7 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
24
24
|
// Output event for when iteration selection changes
|
|
25
25
|
this.onIterationChange = new EventEmitter();
|
|
26
26
|
this.selectedIteration = null;
|
|
27
|
+
this.userSelectedIterationId = null; // Track user's manual selection
|
|
27
28
|
}
|
|
28
29
|
ngOnInit() {
|
|
29
30
|
// Build config from individual inputs
|
|
@@ -54,12 +55,50 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
54
55
|
const currentValue = changes['selectedIterationId'].currentValue;
|
|
55
56
|
const previousValue = changes['selectedIterationId'].previousValue;
|
|
56
57
|
if (currentValue !== previousValue) {
|
|
57
|
-
|
|
58
|
+
// If user has manually selected an iteration, don't override it unless the input matches
|
|
59
|
+
if (this.userSelectedIterationId && this.userSelectedIterationId === currentValue) {
|
|
60
|
+
// Input matches user's selection, keep it
|
|
61
|
+
const found = this.iterations.find(iter => iter.id === currentValue);
|
|
62
|
+
if (found) {
|
|
63
|
+
this.selectedIteration = found;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (!this.userSelectedIterationId) {
|
|
67
|
+
// No user selection, use the input value
|
|
68
|
+
if (currentValue) {
|
|
69
|
+
const found = this.iterations.find(iter => iter.id === currentValue);
|
|
70
|
+
if (found) {
|
|
71
|
+
this.selectedIteration = found;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.selectDefaultIteration();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.selectDefaultIteration();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// If input doesn't match user selection, don't override user's choice
|
|
58
82
|
}
|
|
59
83
|
}
|
|
60
84
|
// Update selection when iterations array changes
|
|
61
85
|
if (changes['iterations'] && this.iterations && this.iterations.length > 0) {
|
|
62
|
-
|
|
86
|
+
// Only reselect if we don't have a valid selection or if selectedIterationId changed
|
|
87
|
+
if (!this.selectedIteration || !this.iterations.some(iter => iter.id === this.selectedIteration?.id)) {
|
|
88
|
+
// If user has selected something, try to preserve it
|
|
89
|
+
if (this.userSelectedIterationId) {
|
|
90
|
+
const found = this.iterations.find(iter => iter.id === this.userSelectedIterationId);
|
|
91
|
+
if (found) {
|
|
92
|
+
this.selectedIteration = found;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.selectDefaultIteration();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.selectDefaultIteration();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
63
102
|
}
|
|
64
103
|
// Update config when inputs change
|
|
65
104
|
if (changes['iterations'] || changes['selectedIterationId'] || changes['nestedSteps']) {
|
|
@@ -79,10 +118,21 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
79
118
|
}
|
|
80
119
|
}
|
|
81
120
|
selectDefaultIteration() {
|
|
121
|
+
// Only select default if no iteration is currently selected
|
|
122
|
+
// This preserves user's selection when they manually change the iteration
|
|
123
|
+
if (this.selectedIteration && this.selectedIterationId && this.selectedIteration.id === this.selectedIterationId) {
|
|
124
|
+
// Already selected correctly, no need to change
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
82
127
|
if (this.selectedIterationId) {
|
|
83
|
-
|
|
128
|
+
const found = this.iterations.find(iter => iter.id === this.selectedIterationId);
|
|
129
|
+
if (found) {
|
|
130
|
+
this.selectedIteration = found;
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
84
133
|
}
|
|
85
|
-
|
|
134
|
+
// Only apply default if no specific selection was provided
|
|
135
|
+
if (this.defaultIteration === 'last' && this.iterations.length > 0) {
|
|
86
136
|
this.selectedIteration = this.iterations[this.iterations.length - 1];
|
|
87
137
|
}
|
|
88
138
|
else if (this.iterations.length > 0) {
|
|
@@ -90,6 +140,8 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
90
140
|
}
|
|
91
141
|
}
|
|
92
142
|
handleIterationChange(iterationId) {
|
|
143
|
+
// Store the user's manual selection
|
|
144
|
+
this.userSelectedIterationId = iterationId;
|
|
93
145
|
this.selectedIteration = this.iterations.find(iter => iter.id === iterationId) || null;
|
|
94
146
|
// Emit the event with the iteration ID
|
|
95
147
|
this.onIterationChange.emit(iterationId);
|
|
@@ -206,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
206
258
|
}], onIterationChange: [{
|
|
207
259
|
type: Output
|
|
208
260
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQVMzRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBTnhEOztRQXlCVyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFeEIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0QsQ0FBQztRQUVoRywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFFdkMsOENBQThDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlDLHlEQUF5RDtRQUMvQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpELG9EQUFvRDtRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS3pELHNCQUFpQixHQUF5QixJQUFJLENBQUM7S0E0SWhEO0lBMUlVLFFBQVE7UUFDZixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRztZ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O3NCQUF2QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9vcFN0ZXBDb25maWcsIExvb3BJdGVyYXRpb24sIEV4ZWN1dGlvblN0ZXBDb25maWcsIFN0ZXBTdGF0dXMsIFRpbWluZ0JyZWFrZG93biwgRmFpbHVyZURldGFpbHMsIFN1YlN0ZXAsIFNlbGZIZWFsQW5hbHlzaXNEYXRhLCBTZWxmSGVhbEFjdGlvbiB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWxvb3Atc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29wLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgTG9vcFN0ZXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gSW5kaXZpZHVhbCBpbnB1dHNcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3RTdGVwUmVzdWx0SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGF0dXMhOiBTdGVwU3RhdHVzO1xuICBASW5wdXQoKSBkdXJhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgdGltaW5nQnJlYWtkb3duPzogVGltaW5nQnJlYWtkb3duO1xuICBASW5wdXQoKSBleHBhbmRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxvb3BUeXBlPzogJ2ZvcicgfCAnd2hpbGUnO1xuICBASW5wdXQoKSBpdGVyYXRpb25zITogTG9vcEl0ZXJhdGlvbltdO1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZXJhdGlvbklkPzogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0SXRlcmF0aW9uPzogJ2ZpcnN0JyB8ICdsYXN0JztcbiAgQElucHV0KCkgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107XG4gIEBJbnB1dCgpIHNob3dWaWV3QWxsSXRlcmF0aW9ucz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG4gIEBJbnB1dCgpIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBjb25maWRlbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBpc1VwbG9hZGluZ0Jhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIHNlbGZIZWFsQW5hbHlzaXM/OiBTZWxmSGVhbEFuYWx5c2lzRGF0YTtcbiAgQE91dHB1dCgpIG1ha2VDdXJyZW50QmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjx1cGxvYWRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYW5hbHl6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdGdWxsTG9ncyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlbGZIZWFsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6IFNlbGZIZWFsQWN0aW9uOyBoZWFsZWRMb2NhdG9yOiBzdHJpbmc7IH0+KCk7XG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gT3V0cHV0IGV2ZW50IGZvciB3aGVuIHRoZSBsb29wIHN0ZXAgZXhwYW5kc1xuICBAT3V0cHV0KCkgb25FeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLy8gT3V0cHV0IGV2ZW50IGZvciB3aGVuIFwiVmlldyBhbGwgaXRlcmF0aW9uc1wiIGlzIGNsaWNrZWRcbiAgQE91dHB1dCgpIG9uVmlld0FsbEl0ZXJhdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLy8gT3V0cHV0IGV2ZW50IGZvciB3aGVuIGl0ZXJhdGlvbiBzZWxlY3Rpb24gY2hhbmdlc1xuICBAT3V0cHV0KCkgb25JdGVyYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvLyBDb25maWcgcHJvcGVydHkgZm9yIGJhc2UgY2xhc3MgLSBidWlsdCBmcm9tIGluZGl2aWR1YWwgaW5wdXRzIGluIG5nT25Jbml0XG4gIG92ZXJyaWRlIGNvbmZpZyE6IExvb3BTdGVwQ29uZmlnO1xuXG4gIHNlbGVjdGVkSXRlcmF0aW9uOiBMb29wSXRlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGQgY29uZmlnIGZyb20gaW5kaXZpZHVhbCBpbnB1dHNcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXG4gICAgICB0eXBlOiAnbG9vcCcsXG4gICAgICBsb29wVHlwZTogdGhpcy5sb29wVHlwZSxcbiAgICAgIGl0ZXJhdGlvbnM6IHRoaXMuaXRlcmF0aW9ucyxcbiAgICAgIHNlbGVjdGVkSXRlcmF0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCxcbiAgICAgIGRlZmF1bHRJdGVyYXRpb246IHRoaXMuZGVmYXVsdEl0ZXJhdGlvbixcbiAgICAgIG5lc3RlZFN0ZXBzOiB0aGlzLm5lc3RlZFN0ZXBzLFxuICAgICAgc2hvd1ZpZXdBbGxJdGVyYXRpb25zOiB0aGlzLnNob3dWaWV3QWxsSXRlcmF0aW9ucyxcbiAgICAgIHRpbWluZ0JyZWFrZG93bjogdGhpcy50aW1pbmdCcmVha2Rvd24sXG4gICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZCxcbiAgICB9IGFzIExvb3BTdGVwQ29uZmlnO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHdoZW4gc2VsZWN0ZWRJdGVyYXRpb25JZCBpbnB1dCBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSXRlcmF0aW9uSWQnXSAmJiB0aGlzLml0ZXJhdGlvbnMgJiYgdGhpcy5pdGVyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkSXRlcmF0aW9uSWQnXS5wcmV2aW91c1ZhbHVlO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiB3aGVuIGl0ZXJhdGlvbnMgYXJyYXkgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydpdGVyYXRpb25zJ10gJiYgdGhpcy5pdGVyYXRpb25zICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICB9XG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIGlucHV0cyBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlc1snaXRlcmF0aW9ucyddIHx8IGNoYW5nZXNbJ3NlbGVjdGVkSXRlcmF0aW9uSWQnXSB8fCBjaGFuZ2VzWyduZXN0ZWRTdGVwcyddKSB7XG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcuaXRlcmF0aW9ucyA9IHRoaXMuaXRlcmF0aW9ucztcbiAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWRJdGVyYXRpb25JZCA9IHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZDtcbiAgICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMgPSB0aGlzLm5lc3RlZFN0ZXBzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBjb25zdCB3YXNFeHBhbmRlZCA9IHRoaXMuaXNFeHBhbmRlZDtcbiAgICBzdXBlci50b2dnbGUoKTtcbiAgICAvLyBFbWl0IGV2ZW50IHdoZW4gZXhwYW5kaW5nICh0cmFuc2l0aW9uaW5nIGZyb20gY29sbGFwc2VkIHRvIGV4cGFuZGVkKVxuICAgIGlmICghd2FzRXhwYW5kZWQgJiYgdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLm9uRXhwYW5kLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSB0aGlzLml0ZXJhdGlvbnMuZmluZChcbiAgICAgICAgaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWRcbiAgICAgICkgfHwgbnVsbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zWzBdO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUl0ZXJhdGlvbkNoYW5nZShpdGVyYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gaXRlcmF0aW9uSWQpIHx8IG51bGw7XG4gICAgLy8gRW1pdCB0aGUgZXZlbnQgd2l0aCB0aGUgaXRlcmF0aW9uIElEXG4gICAgdGhpcy5vbkl0ZXJhdGlvbkNoYW5nZS5lbWl0KGl0ZXJhdGlvbklkKTtcbiAgfVxuXG4gIGdldExvb3BUeXBlQmFkZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBiYWRnZXM6IHN0cmluZ1tdID0gWydMT09QJ107XG4gICAgaWYgKHRoaXMubG9vcFR5cGUgPT09ICdmb3InKSB7XG4gICAgICBiYWRnZXMucHVzaCgnRk9SJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvb3BUeXBlID09PSAnd2hpbGUnKSB7XG4gICAgICBiYWRnZXMucHVzaCgnV0hJTEUnKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhZGdlcztcbiAgfVxuXG4gIGdldEl0ZXJhdGlvbkxhYmVsKGl0ZXJhdGlvbjogTG9vcEl0ZXJhdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZXJhdGlvbi5sYWJlbDtcbiAgfVxuXG4gIG9uVmlld0FsbEl0ZXJhdGlvbnNDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMub25WaWV3QWxsSXRlcmF0aW9ucy5lbWl0KCk7XG4gIH1cblxuICBvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBleHBhbmRlZDtcbiAgfVxuXG4gIGdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpOiBTdWJTdGVwW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uPy5zdWJTdGVwcyB8fCBbXTtcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZShldmVudDogbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZShldmVudDogdXBsb2FkQmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZkhlYWxBY3Rpb24oZXZlbnQ6IHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcigpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmKCF0aGlzLmlzRXhwYW5kZWQpe1xuICAgICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcC0yIGNxYS1jdXJzb3ItcG9pbnRlclwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUhlYWRlcigpXCI+XG4gICAgXG4gICAgPCEtLSBTdGF0dXMgSWNvbiAtLT5cbiAgICA8ZGl2PlxuICAgICAgPCEtLSBTdWNjZXNzIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cImNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPCEtLSBGYWlsZWQgLS0+XG4gICAgICA8c3ZnICpuZ0lmPVwiY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZSdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNFRjQ0NDRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00IDRMOCA4TTggNEw0IDhcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cImNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gUnVubmluZyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJ1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzNCODJGNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExvb3AgSWNvbiAtLT5cbiAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHJ4PVwiNFwiIGZpbGw9XCIjRUJFQ0ZEXCIvPjxwYXRoIGQ9XCJNOS42NjY2MyA0LjY2NjY2TDExIDUuOTk5OTlMOS42NjY2MyA3LjMzMzMyXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUgNy42NjY2N1Y3LjMzMzMzQzUgNi45Nzk3MSA1LjE0MDQ4IDYuNjQwNTcgNS4zOTA1MiA2LjM5MDUyQzUuNjQwNTcgNi4xNDA0OCA1Ljk3OTcxIDYgNi4zMzMzMyA2SDExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYuMzMzMzMgMTEuMzMzM0w1IDkuOTk5OTlMNi4zMzMzMyA4LjY2NjY2XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExIDguMzMzMzRWOC42NjY2OEMxMSA5LjAyMDMgMTAuODU5NSA5LjM1OTQ0IDEwLjYwOTUgOS42MDk0OUMxMC4zNTk0IDkuODU5NTMgMTAuMDIwMyAxMCA5LjY2NjY3IDEwSDVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuXG4gICAgPCEtLSBTdGVwIE51bWJlciBhbmQgVGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzMzNDE1NV0gY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxM3B4XVwiPlxuICAgICAgICB7eyBjb25maWcuc3RlcE51bWJlciB9fS4gPHNwYW4gW2lubmVySFRNTF09XCJjb25maWcudGl0bGVcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICBcbiAgICAgIDwhLS0gTG9vcCBUeXBlIEJhZGdlcyAtLT5cbiAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBiYWRnZSBvZiBnZXRMb29wVHlwZUJhZGdlcygpXCIgXG4gICAgICAgIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1wcmltYXJ5IGNxYS1iZy1bI0VCRUNGRF0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XVwiPlxuICAgICAgICB7eyBiYWRnZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVs5cHhdIGNxYS1sZWFkaW5nLVsxMXB4XSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLmR1cmF0aW9uKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHN2ZyBbY2xhc3MuY3FhLXJvdGF0ZS0xODBdPVwiaXNFeHBhbmRlZFwiIGNsYXNzPVwiY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMy41IDVMNyA4LjVMMTAuNSA1XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkXCI+XG4gICAgPCEtLSBJdGVyYXRpb24gU2VsZWN0b3IgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC00IGNxYS1weS0yIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXVwiPlxuICAgICAgPGxhYmVsPkl0ZXJhdGlvbjwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS13LWZ1bGwgY3FhLW1heC13LVsxNTZweF1cIj5cbiAgICAgICAgPCEtLSBTdGF0dXMgaW5kaWNhdG9yIGZvciBzZWxlY3RlZCBpdGVyYXRpb24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvblwiIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1sZWZ0LVsxMHB4XSBjcWEtdG9wLTEvMiBjcWEtdHJhbnNmb3JtIGNxYS0tdHJhbnNsYXRlLXktMS8yIGNxYS1wb2ludGVyLWV2ZW50cy1ub25lIGNxYS16LTEwXCI+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnXCIgd2lkdGg9XCI2XCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgNiA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiM1wiIGZpbGw9XCIjMDBBNjNFXCIvPjwvc3ZnPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbi5zdGF0dXMgPT09ICdmYWlsZWQnXCIgd2lkdGg9XCI2XCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgNiA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiM1wiIGZpbGw9XCIjRUY0NDQ0XCIvPjwvc3ZnPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbi5zdGF0dXMgPT09ICdwZW5kaW5nJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiIzlDQTNBRlwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAncnVubmluZydcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA2IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiM1wiIGN5PVwiM1wiIHI9XCIzXCIgZmlsbD1cIiMzQjgyRjZcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJjcWEtcGwtWzIycHhdIGNxYS1wci02IGNxYS1weS1bNXB4XSBjcWEtdy1mdWxsIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0U1RTVFNV0gY3FhLXJvdW5kZWQtbWQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWJnLVsjRkFGQUZBXSBjcWEtdGV4dC1ibGFjay0xMDAgY3FhLWFwcGVhcmFuY2Utbm9uZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkSXRlcmF0aW9uPy5pZFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVJdGVyYXRpb25DaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVyYXRpb24gb2YgY29uZmlnLml0ZXJhdGlvbnNcIiBbdmFsdWVdPVwiaXRlcmF0aW9uLmlkXCI+XG4gICAgICAgICAgICB7eyBnZXRJdGVyYXRpb25MYWJlbChpdGVyYXRpb24pIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8IS0tIERyb3Bkb3duIGFycm93IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1yaWdodC0yIGNxYS10b3AtMS8yIGNxYS10cmFuc2Zvcm0gY3FhLS10cmFuc2xhdGUteS0xLzIgY3FhLXBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCAxMCA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1tbC1hdXRvXCI+XG4gICAgICAgIERlZmF1bHQ6IHt7IGNvbmZpZy5kZWZhdWx0SXRlcmF0aW9uID09PSAnbGFzdCcgPyAnbGFzdCBpdGVyYXRpb24nIDogJ2ZpcnN0IGl0ZXJhdGlvbicgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2VsZWN0ZWQgSXRlcmF0aW9uIFN1Yi1zdGVwcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24gJiYgc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLXB5LTEgY3FhLW1sLTlcIiBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHN1YlN0ZXAgb2Ygc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHNcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bNS41cHhdIGNxYS1weC0zXCI+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFN1Yi1zdGVwIFN0YXR1cyBJY29uIC0tPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjMDBBNjNFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDZMNS41IDdMNy41IDVcIiBzdHJva2U9XCIjMDBBNjNFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuXG4gICAgICAgIDwhLS0gU3ViLXN0ZXAgRGVzY3JpcHRpb24gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdIGNxYS10ZXh0LVsjMzY0MTUzXVwiPlxuICAgICAgICAgIHt7IHN1YlN0ZXAuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gU3ViLXN0ZXAgRHVyYXRpb24gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtbWV0YWRhdGEta2V5XCI+XG4gICAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oc3ViU3RlcC5kdXJhdGlvbikgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5lc3RlZCBTdGVwcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLm5lc3RlZFN0ZXBzICYmIGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtbWwtOSBjcWEtcGItMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtcHktWzJweF0gY3FhLXB4LTNcIj5OZXN0ZWQgc3RlcHM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1wbC1bMThweF1cIiBzdHlsZT1cImJvcmRlci1sZWZ0OiAycHggc29saWQgI0M1QzdGQTtcIj5cbiAgICAgICAgPGNxYS1zdGVwLXJlbmRlcmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIGNvbmZpZy5uZXN0ZWRTdGVwc1wiIFtzdGVwXT1cInN0ZXBcIj48L2NxYS1zdGVwLXJlbmRlcmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFZpZXcgQWxsIEl0ZXJhdGlvbnMgTGluayAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnNob3dWaWV3QWxsSXRlcmF0aW9uc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kIGNxYS1weC0zIGNxYS1weS1bMTBweF1cIj5cbiAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cIm9uVmlld0FsbEl0ZXJhdGlvbnNDbGljaygkZXZlbnQpXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1uby11bmRlcmxpbmUgY3FhLXRleHQtcHJpbWFyeSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICBWaWV3IGFsbCBpdGVyYXRpb25zXG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNy42MzYzNiAxMS4yNjdMNi43NTg1MiAxMC4zOTc3TDkuMzg3NzggNy43Njg0N0gzVjYuNDk4NThIOS4zODc3OEw2Ljc1ODUyIDMuODczNThMNy42MzYzNiAzTDExLjc2OTkgNy4xMzM1Mkw3LjYzNjM2IDExLjI2N1pcIiBmaWxsPVwiIzNGNDNFRVwiLz48L3N2Zz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTZWxmIEhlYWwgQW5hbHlzaXMgLS0+XG4gICAgPGNxYS1zZWxmLWhlYWwtYW5hbHlzaXMgXG4gICAgICAqbmdJZj1cInNlbGZIZWFsQW5hbHlzaXNcIiBcbiAgICAgIFtvcmlnaW5hbExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5vcmlnaW5hbExvY2F0b3JcIlxuICAgICAgW2hlYWxlZExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsZWRMb2NhdG9yXCJcbiAgICAgIFtjb25maWRlbmNlXT1cInNlbGZIZWFsQW5hbHlzaXMuY29uZmlkZW5jZVwiXG4gICAgICBbaGVhbE1ldGhvZF09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxNZXRob2RcIlxuICAgICAgKGFjdGlvbik9XCJvblNlbGZIZWFsQWN0aW9uKCRldmVudClcIj5cbiAgICA8L2NxYS1zZWxmLWhlYWwtYW5hbHlzaXM+XG5cbiAgICA8IS0tIFRpbWluZyBCcmVha2Rvd24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy50aW1pbmdCcmVha2Rvd25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtNSBjcWEtcHQtMS41IGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8c3Bhbj5UaW1pbmcgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWRpYWxvZy1tdXRlZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEFwcCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmlldyBNb3JlIEZhaWxlZCBTdGVwIEJ1dHRvbiAtIHNob3duIHdoZW4gZXhwYW5kZWQgYW5kIGZhaWx1cmUgZGV0YWlscyBleGlzdCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvblwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b25cbiAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwic2hvd0ZhaWxlZFN0ZXBEZXRhaWxzXCJcbiAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgIDwvY3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uICYmc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdXBkYXRlZC1mYWlsZWQtc3RlcFxuICAgICAgW3Rlc3RTdGVwUmVzdWx0SWRdPVwidGVzdFN0ZXBSZXN1bHRJZFwiXG4gICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICBbZXhwYW5kZWRdPVwidHJ1ZVwiXG4gICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtyZWFzb25pbmddPVwicmVhc29uaW5nXCJcbiAgICAgIFtjb25maWRlbmNlXT1cImNvbmZpZGVuY2VcIlxuICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICAobWFrZUN1cnJlbnRCYXNlbGluZSk9XCJvbk1ha2VDdXJyZW50QmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAodXBsb2FkQmFzZWxpbmUpPVwib25VcGxvYWRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgIChhbmFseXplKT1cIm9uQW5hbHl6ZSgpXCJcbiAgICAgICh2aWV3RnVsbExvZ3MpPVwib25WaWV3RnVsbExvZ3MoKVwiPlxuICAgIDwvY3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXA+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQVMzRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBTnhEOztRQXlCVyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFeEIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0QsQ0FBQztRQUVoRywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFFdkMsOENBQThDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlDLHlEQUF5RDtRQUMvQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpELG9EQUFvRDtRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS3pELHNCQUFpQixHQUF5QixJQUFJLENBQUM7UUFDdkMsNEJBQXVCLEdBQWtCLElBQUksQ0FBQyxDQUFDLGdDQUFnQztLQTZMeEY7SUEzTFUsUUFB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RUFBRSxhQUFhLEVBQUU7OEJBSXJCLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFHRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb29wU3RlcENvbmZpZywgTG9vcEl0ZXJhdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZywgU3RlcFN0YXR1cywgVGltaW5nQnJlYWtkb3duLCBGYWlsdXJlRGV0YWlscywgU3ViU3RlcCwgU2VsZkhlYWxBbmFseXNpc0RhdGEsIFNlbGZIZWFsQWN0aW9uIH0gZnJvbSAnLi4vZXhlY3V0aW9uLXN0ZXAubW9kZWxzJztcbmltcG9ydCB7IEJhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQsIHVwbG9hZEJhc2VsaW5lRXZlbnQgfSBmcm9tICcuLi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbG9vcC1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvb3Atc3RlcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBMb29wU3RlcENvbXBvbmVudCBleHRlbmRzIEJhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBJbmRpdmlkdWFsIGlucHV0c1xuICBASW5wdXQoKSBpZCE6IHN0cmluZztcbiAgQElucHV0KCkgdGVzdFN0ZXBSZXN1bHRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgc3RlcE51bWJlciE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0YXR1cyE6IFN0ZXBTdGF0dXM7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1pbmdCcmVha2Rvd24/OiBUaW1pbmdCcmVha2Rvd247XG4gIEBJbnB1dCgpIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbG9vcFR5cGU/OiAnZm9yJyB8ICd3aGlsZSc7XG4gIEBJbnB1dCgpIGl0ZXJhdGlvbnMhOiBMb29wSXRlcmF0aW9uW107XG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlcmF0aW9uSWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRJdGVyYXRpb24/OiAnZmlyc3QnIHwgJ2xhc3QnO1xuICBASW5wdXQoKSBuZXN0ZWRTdGVwcz86IEV4ZWN1dGlvblN0ZXBDb25maWdbXTtcbiAgQElucHV0KCkgc2hvd1ZpZXdBbGxJdGVyYXRpb25zPzogYm9vbGVhbjtcbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VsZkhlYWxBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfT4oKTtcblxuICBzaG93RmFpbGVkU3RlcERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBPdXRwdXQgZXZlbnQgZm9yIHdoZW4gdGhlIGxvb3Agc3RlcCBleHBhbmRzXG4gIEBPdXRwdXQoKSBvbkV4cGFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBPdXRwdXQgZXZlbnQgZm9yIHdoZW4gXCJWaWV3IGFsbCBpdGVyYXRpb25zXCIgaXMgY2xpY2tlZFxuICBAT3V0cHV0KCkgb25WaWV3QWxsSXRlcmF0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBPdXRwdXQgZXZlbnQgZm9yIHdoZW4gaXRlcmF0aW9uIHNlbGVjdGlvbiBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBvbkl0ZXJhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIENvbmZpZyBwcm9wZXJ0eSBmb3IgYmFzZSBjbGFzcyAtIGJ1aWx0IGZyb20gaW5kaXZpZHVhbCBpbnB1dHMgaW4gbmdPbkluaXRcbiAgb3ZlcnJpZGUgY29uZmlnITogTG9vcFN0ZXBDb25maWc7XG5cbiAgc2VsZWN0ZWRJdGVyYXRpb246IExvb3BJdGVyYXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB1c2VyU2VsZWN0ZWRJdGVyYXRpb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIFRyYWNrIHVzZXIncyBtYW51YWwgc2VsZWN0aW9uXG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGQgY29uZmlnIGZyb20gaW5kaXZpZHVhbCBpbnB1dHNcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXG4gICAgICB0eXBlOiAnbG9vcCcsXG4gICAgICBsb29wVHlwZTogdGhpcy5sb29wVHlwZSxcbiAgICAgIGl0ZXJhdGlvbnM6IHRoaXMuaXRlcmF0aW9ucyxcbiAgICAgIHNlbGVjdGVkSXRlcmF0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCxcbiAgICAgIGRlZmF1bHRJdGVyYXRpb246IHRoaXMuZGVmYXVsdEl0ZXJhdGlvbixcbiAgICAgIG5lc3RlZFN0ZXBzOiB0aGlzLm5lc3RlZFN0ZXBzLFxuICAgICAgc2hvd1ZpZXdBbGxJdGVyYXRpb25zOiB0aGlzLnNob3dWaWV3QWxsSXRlcmF0aW9ucyxcbiAgICAgIHRpbWluZ0JyZWFrZG93bjogdGhpcy50aW1pbmdCcmVha2Rvd24sXG4gICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZCxcbiAgICB9IGFzIExvb3BTdGVwQ29uZmlnO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHdoZW4gc2VsZWN0ZWRJdGVyYXRpb25JZCBpbnB1dCBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSXRlcmF0aW9uSWQnXSAmJiB0aGlzLml0ZXJhdGlvbnMgJiYgdGhpcy5pdGVyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10uY3VycmVudFZhbHVlO1xuICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkSXRlcmF0aW9uSWQnXS5wcmV2aW91c1ZhbHVlO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAvLyBJZiB1c2VyIGhhcyBtYW51YWxseSBzZWxlY3RlZCBhbiBpdGVyYXRpb24sIGRvbid0IG92ZXJyaWRlIGl0IHVubGVzcyB0aGUgaW5wdXQgbWF0Y2hlc1xuICAgICAgICBpZiAodGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCAmJiB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID09PSBjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAvLyBJbnB1dCBtYXRjaGVzIHVzZXIncyBzZWxlY3Rpb24sIGtlZXAgaXRcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gY3VycmVudFZhbHVlKTtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQpIHtcbiAgICAgICAgICAvLyBObyB1c2VyIHNlbGVjdGlvbiwgdXNlIHRoZSBpbnB1dCB2YWx1ZVxuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5pdGVyYXRpb25zLmZpbmQoaXRlciA9PiBpdGVyLmlkID09PSBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgaW5wdXQgZG9lc24ndCBtYXRjaCB1c2VyIHNlbGVjdGlvbiwgZG9uJ3Qgb3ZlcnJpZGUgdXNlcidzIGNob2ljZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHdoZW4gaXRlcmF0aW9ucyBhcnJheSBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZXJhdGlvbnMnXSAmJiB0aGlzLml0ZXJhdGlvbnMgJiYgdGhpcy5pdGVyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIE9ubHkgcmVzZWxlY3QgaWYgd2UgZG9uJ3QgaGF2ZSBhIHZhbGlkIHNlbGVjdGlvbiBvciBpZiBzZWxlY3RlZEl0ZXJhdGlvbklkIGNoYW5nZWRcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiB8fCAhdGhpcy5pdGVyYXRpb25zLnNvbWUoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uPy5pZCkpIHtcbiAgICAgICAgLy8gSWYgdXNlciBoYXMgc2VsZWN0ZWQgc29tZXRoaW5nLCB0cnkgdG8gcHJlc2VydmUgaXRcbiAgICAgICAgaWYgKHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQpIHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gdGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gaW5wdXRzIGNoYW5nZVxuICAgIGlmIChjaGFuZ2VzWydpdGVyYXRpb25zJ10gfHwgY2hhbmdlc1snc2VsZWN0ZWRJdGVyYXRpb25JZCddIHx8IGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10pIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZy5pdGVyYXRpb25zID0gdGhpcy5pdGVyYXRpb25zO1xuICAgICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZEl0ZXJhdGlvbklkID0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyA9IHRoaXMubmVzdGVkU3RlcHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IHdhc0V4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuICAgIHN1cGVyLnRvZ2dsZSgpO1xuICAgIC8vIEVtaXQgZXZlbnQgd2hlbiBleHBhbmRpbmcgKHRyYW5zaXRpb25pbmcgZnJvbSBjb2xsYXBzZWQgdG8gZXhwYW5kZWQpXG4gICAgaWYgKCF3YXNFeHBhbmRlZCAmJiB0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMub25FeHBhbmQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTogdm9pZCB7XG4gICAgLy8gT25seSBzZWxlY3QgZGVmYXVsdCBpZiBubyBpdGVyYXRpb24gaXMgY3VycmVudGx5IHNlbGVjdGVkXG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgdXNlcidzIHNlbGVjdGlvbiB3aGVuIHRoZXkgbWFudWFsbHkgY2hhbmdlIHRoZSBpdGVyYXRpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCA9PT0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkKSB7XG4gICAgICAvLyBBbHJlYWR5IHNlbGVjdGVkIGNvcnJlY3RseSwgbm8gbmVlZCB0byBjaGFuZ2VcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChcbiAgICAgICAgaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGZvdW5kO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIE9ubHkgYXBwbHkgZGVmYXVsdCBpZiBubyBzcGVjaWZpYyBzZWxlY3Rpb24gd2FzIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zWzBdO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUl0ZXJhdGlvbkNoYW5nZShpdGVyYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gU3RvcmUgdGhlIHVzZXIncyBtYW51YWwgc2VsZWN0aW9uXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCA9IGl0ZXJhdGlvbklkO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSB0aGlzLml0ZXJhdGlvbnMuZmluZChpdGVyID0+IGl0ZXIuaWQgPT09IGl0ZXJhdGlvbklkKSB8fCBudWxsO1xuICAgIC8vIEVtaXQgdGhlIGV2ZW50IHdpdGggdGhlIGl0ZXJhdGlvbiBJRFxuICAgIHRoaXMub25JdGVyYXRpb25DaGFuZ2UuZW1pdChpdGVyYXRpb25JZCk7XG4gIH1cblxuICBnZXRMb29wVHlwZUJhZGdlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYmFkZ2VzOiBzdHJpbmdbXSA9IFsnTE9PUCddO1xuICAgIGlmICh0aGlzLmxvb3BUeXBlID09PSAnZm9yJykge1xuICAgICAgYmFkZ2VzLnB1c2goJ0ZPUicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sb29wVHlwZSA9PT0gJ3doaWxlJykge1xuICAgICAgYmFkZ2VzLnB1c2goJ1dISUxFJyk7XG4gICAgfVxuICAgIHJldHVybiBiYWRnZXM7XG4gIH1cblxuICBnZXRJdGVyYXRpb25MYWJlbChpdGVyYXRpb246IExvb3BJdGVyYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVyYXRpb24ubGFiZWw7XG4gIH1cblxuICBvblZpZXdBbGxJdGVyYXRpb25zQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uVmlld0FsbEl0ZXJhdGlvbnMuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cblxuICBnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKTogU3ViU3RlcFtdIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbj8uc3ViU3RlcHMgfHwgW107XG4gIH1cblxuICBvbk1ha2VDdXJyZW50QmFzZWxpbmUoZXZlbnQ6IG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubWFrZUN1cnJlbnRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uVXBsb2FkQmFzZWxpbmUoZXZlbnQ6IHVwbG9hZEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25BbmFseXplKCk6IHZvaWQge1xuICAgIHRoaXMuYW5hbHl6ZS5lbWl0KCk7XG4gIH1cblxuICBvblZpZXdGdWxsTG9ncygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdGdWxsTG9ncy5lbWl0KCk7XG4gIH1cblxuICBvblNlbGZIZWFsQWN0aW9uKGV2ZW50OiB7IHR5cGU6IFNlbGZIZWFsQWN0aW9uOyBoZWFsZWRMb2NhdG9yOiBzdHJpbmc7IH0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGZIZWFsQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IHNob3dWaWV3TW9yZUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmIEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscykgJiZcbiAgICAgIChcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uZXhwZWN0ZWQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uYWN0dWFsKSkgfHxcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmN1cnJlbnQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmJhc2VsaW5lIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5kaWZmZXJlbmNlKVxuICAgICAgICAgIHx8IEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8ubG9ncz8ubGVuZ3RoKSkgfHwgXG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmFpRml4QXBwbGllZCAmJiAodGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhNZXNzYWdlIHx8IHRoaXMuY29uZmlkZW5jZSB8fCB0aGlzLnJlYXNvbmluZz8ubGVuZ3RoKSkpXG4gICAgICApXG4gIH1cblxuICB0b2dnbGVIZWFkZXIoKSB7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICBpZighdGhpcy5pc0V4cGFuZGVkKXtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2PlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXAtMiBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVIZWFkZXIoKVwiPlxuICAgIFxuICAgIDwhLS0gU3RhdHVzIEljb24gLS0+XG4gICAgPGRpdj5cbiAgICAgIDwhLS0gU3VjY2VzcyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gRmFpbGVkIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cImNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNCA0TDggOE04IDRMNCA4XCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gUGVuZGluZyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICA8IS0tIFJ1bm5pbmcgLS0+XG4gICAgICA8c3ZnICpuZ0lmPVwiY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMb29wIEljb24gLS0+XG4gICAgPGRpdj48c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiByeD1cIjRcIiBmaWxsPVwiI0VCRUNGRFwiLz48cGF0aCBkPVwiTTkuNjY2NjMgNC42NjY2NkwxMSA1Ljk5OTk5TDkuNjY2NjMgNy4zMzMzMlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk01IDcuNjY2NjdWNy4zMzMzM0M1IDYuOTc5NzEgNS4xNDA0OCA2LjY0MDU3IDUuMzkwNTIgNi4zOTA1MkM1LjY0MDU3IDYuMTQwNDggNS45Nzk3MSA2IDYuMzMzMzMgNkgxMVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02LjMzMzMzIDExLjMzMzNMNSA5Ljk5OTk5TDYuMzMzMzMgOC42NjY2NlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMSA4LjMzMzM0VjguNjY2NjhDMTEgOS4wMjAzIDEwLjg1OTUgOS4zNTk0NCAxMC42MDk1IDkuNjA5NDlDMTAuMzU5NCA5Ljg1OTUzIDEwLjAyMDMgMTAgOS42NjY2NyAxMEg1XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMzMzQxNTVdIGNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF1cIj5cbiAgICAgICAge3sgY29uZmlnLnN0ZXBOdW1iZXIgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnLnRpdGxlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIExvb3AgVHlwZSBCYWRnZXMgLS0+XG4gICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgZ2V0TG9vcFR5cGVCYWRnZXMoKVwiIFxuICAgICAgICBjbGFzcz1cImNxYS1weC0xLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtcHJpbWFyeSBjcWEtYmctWyNFQkVDRkRdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF1cIj5cbiAgICAgICAge3sgYmFkZ2UgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bOXB4XSBjcWEtbGVhZGluZy1bMTFweF0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy5kdXJhdGlvbikgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzdmcgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzRXhwYW5kZWRcIiBjbGFzcz1cImNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuNSA1TDcgOC41TDEwLjUgNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjgzMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFeHBhbmRlZCBDb250ZW50IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZFwiPlxuICAgIDwhLS0gSXRlcmF0aW9uIFNlbGVjdG9yIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHgtNCBjcWEtcHktMiBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzczNzM3M11cIj5cbiAgICAgIDxsYWJlbD5JdGVyYXRpb248L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bMTU2cHhdXCI+XG4gICAgICAgIDwhLS0gU3RhdHVzIGluZGljYXRvciBmb3Igc2VsZWN0ZWQgaXRlcmF0aW9uIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb25cIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtbGVmdC1bMTBweF0gY3FhLXRvcC0xLzIgY3FhLXRyYW5zZm9ybSBjcWEtLXRyYW5zbGF0ZS15LTEvMiBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei0xMFwiPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbi5zdGF0dXMgPT09ICdzdWNjZXNzJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiIzAwQTYzRVwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAnZmFpbGVkJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiI0VGNDQ0NFwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAncGVuZGluZydcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA2IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiM1wiIGN5PVwiM1wiIHI9XCIzXCIgZmlsbD1cIiM5Q0EzQUZcIi8+PC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uLnN0YXR1cyA9PT0gJ3J1bm5pbmcnXCIgd2lkdGg9XCI2XCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgNiA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiM1wiIGZpbGw9XCIjM0I4MkY2XCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXBsLVsyMnB4XSBjcWEtcHItNiBjcWEtcHktWzVweF0gY3FhLXctZnVsbCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU1RTVdIGNxYS1yb3VuZGVkLW1kIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy1bI0ZBRkFGQV0gY3FhLXRleHQtYmxhY2stMTAwIGNxYS1hcHBlYXJhbmNlLW5vbmVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEl0ZXJhdGlvbj8uaWRcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlSXRlcmF0aW9uQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlcmF0aW9uIG9mIGNvbmZpZy5pdGVyYXRpb25zXCIgW3ZhbHVlXT1cIml0ZXJhdGlvbi5pZFwiPlxuICAgICAgICAgICAge3sgZ2V0SXRlcmF0aW9uTGFiZWwoaXRlcmF0aW9uKSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPCEtLSBEcm9wZG93biBhcnJvdyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcmlnaHQtMiBjcWEtdG9wLTEvMiBjcWEtdHJhbnNmb3JtIGNxYS0tdHJhbnNsYXRlLXktMS8yIGNxYS1wb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgMTAgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMSAxTDUgNUw5IDFcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbWwtYXV0b1wiPlxuICAgICAgICBEZWZhdWx0OiB7eyBjb25maWcuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnID8gJ2xhc3QgaXRlcmF0aW9uJyA6ICdmaXJzdCBpdGVyYXRpb24nIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlbGVjdGVkIEl0ZXJhdGlvbiBTdWItc3RlcHMgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uICYmIHNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1weS0xIGNxYS1tbC05XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAnMXB4IHNvbGlkICNGM0Y0RjYnXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBzdWJTdGVwIG9mIHNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzUuNXB4XSBjcWEtcHgtM1wiPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBTdWItc3RlcCBTdGF0dXMgSWNvbiAtLT5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzAwQTYzRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA2TDUuNSA3TDcuNSA1XCIgc3Ryb2tlPVwiIzAwQTYzRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cblxuICAgICAgICA8IS0tIFN1Yi1zdGVwIERlc2NyaXB0aW9uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxM3B4XSBjcWEtdGV4dC1bIzM2NDE1M11cIj5cbiAgICAgICAgICB7eyBzdWJTdGVwLmRlc2NyaXB0aW9uIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIFN1Yi1zdGVwIER1cmF0aW9uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHN1YlN0ZXAuZHVyYXRpb24pIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXN0ZWQgU3RlcHMgLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy5uZXN0ZWRTdGVwcyAmJiBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMFwiIGNsYXNzPVwiY3FhLW1sLTkgY3FhLXBiLTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzczNzM3M10gY3FhLXB5LVsycHhdIGNxYS1weC0zXCI+TmVzdGVkIHN0ZXBzPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcGwtWzE4cHhdXCIgc3R5bGU9XCJib3JkZXItbGVmdDogMnB4IHNvbGlkICNDNUM3RkE7XCI+XG4gICAgICAgIDxjcWEtc3RlcC1yZW5kZXJlciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBjb25maWcubmVzdGVkU3RlcHNcIiBbc3RlcF09XCJzdGVwXCI+PC9jcWEtc3RlcC1yZW5kZXJlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBWaWV3IEFsbCBJdGVyYXRpb25zIExpbmsgLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy5zaG93Vmlld0FsbEl0ZXJhdGlvbnNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWVuZCBjcWEtcHgtMyBjcWEtcHktWzEwcHhdXCI+XG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJvblZpZXdBbGxJdGVyYXRpb25zQ2xpY2soJGV2ZW50KVwiIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtbm8tdW5kZXJsaW5lIGNxYS10ZXh0LXByaW1hcnkgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgVmlldyBhbGwgaXRlcmF0aW9uc1xuICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcuNjM2MzYgMTEuMjY3TDYuNzU4NTIgMTAuMzk3N0w5LjM4Nzc4IDcuNzY4NDdIM1Y2LjQ5ODU4SDkuMzg3NzhMNi43NTg1MiAzLjg3MzU4TDcuNjM2MzYgM0wxMS43Njk5IDcuMTMzNTJMNy42MzYzNiAxMS4yNjdaXCIgZmlsbD1cIiMzRjQzRUVcIi8+PC9zdmc+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU2VsZiBIZWFsIEFuYWx5c2lzIC0tPlxuICAgIDxjcWEtc2VsZi1oZWFsLWFuYWx5c2lzIFxuICAgICAgKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCIgXG4gICAgICBbb3JpZ2luYWxMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMub3JpZ2luYWxMb2NhdG9yXCJcbiAgICAgIFtoZWFsZWRMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbGVkTG9jYXRvclwiXG4gICAgICBbY29uZmlkZW5jZV09XCJzZWxmSGVhbEFuYWx5c2lzLmNvbmZpZGVuY2VcIlxuICAgICAgW2hlYWxNZXRob2RdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsTWV0aG9kXCJcbiAgICAgIChhY3Rpb24pPVwib25TZWxmSGVhbEFjdGlvbigkZXZlbnQpXCI+XG4gICAgPC9jcWEtc2VsZi1oZWFsLWFuYWx5c2lzPlxuXG4gICAgPCEtLSBUaW1pbmcgQnJlYWtkb3duIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcudGltaW5nQnJlYWtkb3duXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTUgY3FhLXB0LTEuNSBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPHNwYW4+VGltaW5nIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBBcHAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24uYXBwKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMSAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLTMuODE0N2UtMDYgMTAuMzJWLTcuMTUyNTZlLTA3SDAuOTU5OTk2VjEwLjMySC0zLjgxNDdlLTA2WlwiIGZpbGw9XCIjRTVFN0VCXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIFRvb2wgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24udG9vbCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFZpZXcgTW9yZSBGYWlsZWQgU3RlcCBCdXR0b24gLSBzaG93biB3aGVuIGV4cGFuZGVkIGFuZCBmYWlsdXJlIGRldGFpbHMgZXhpc3QgLS0+XG4gIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b25cIiBjbGFzcz1cImNxYS1tdC0yIGNxYS1weC00XCI+XG4gICAgPGNxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uXG4gICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtpc0V4cGFuZGVkXT1cInNob3dGYWlsZWRTdGVwRGV0YWlsc1wiXG4gICAgICAodmlld01vcmVDbGljayk9XCJvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKCRldmVudClcIj5cbiAgICA8L2NxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIFVwZGF0ZWQgRmFpbGVkIFN0ZXAgQ29tcG9uZW50IC0gc2hvd24gd2hlbiBidXR0b24gaXMgY2xpY2tlZCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvbiAmJnNob3dGYWlsZWRTdGVwRGV0YWlscyAmJiBmYWlsdXJlRGV0YWlsc1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXBcbiAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW2V4cGFuZGVkXT1cInRydWVcIlxuICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbcmVhc29uaW5nXT1cInJlYXNvbmluZ1wiXG4gICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKHVwbG9hZEJhc2VsaW5lKT1cIm9uVXBsb2FkQmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAoYW5hbHl6ZSk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICA8L2NxYS11cGRhdGVkLWZhaWxlZC1zdGVwPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -6286,6 +6286,7 @@ class LoopStepComponent extends BaseStepComponent {
|
|
|
6286
6286
|
// Output event for when iteration selection changes
|
|
6287
6287
|
this.onIterationChange = new EventEmitter();
|
|
6288
6288
|
this.selectedIteration = null;
|
|
6289
|
+
this.userSelectedIterationId = null; // Track user's manual selection
|
|
6289
6290
|
}
|
|
6290
6291
|
ngOnInit() {
|
|
6291
6292
|
// Build config from individual inputs
|
|
@@ -6316,12 +6317,50 @@ class LoopStepComponent extends BaseStepComponent {
|
|
|
6316
6317
|
const currentValue = changes['selectedIterationId'].currentValue;
|
|
6317
6318
|
const previousValue = changes['selectedIterationId'].previousValue;
|
|
6318
6319
|
if (currentValue !== previousValue) {
|
|
6319
|
-
|
|
6320
|
+
// If user has manually selected an iteration, don't override it unless the input matches
|
|
6321
|
+
if (this.userSelectedIterationId && this.userSelectedIterationId === currentValue) {
|
|
6322
|
+
// Input matches user's selection, keep it
|
|
6323
|
+
const found = this.iterations.find(iter => iter.id === currentValue);
|
|
6324
|
+
if (found) {
|
|
6325
|
+
this.selectedIteration = found;
|
|
6326
|
+
}
|
|
6327
|
+
}
|
|
6328
|
+
else if (!this.userSelectedIterationId) {
|
|
6329
|
+
// No user selection, use the input value
|
|
6330
|
+
if (currentValue) {
|
|
6331
|
+
const found = this.iterations.find(iter => iter.id === currentValue);
|
|
6332
|
+
if (found) {
|
|
6333
|
+
this.selectedIteration = found;
|
|
6334
|
+
}
|
|
6335
|
+
else {
|
|
6336
|
+
this.selectDefaultIteration();
|
|
6337
|
+
}
|
|
6338
|
+
}
|
|
6339
|
+
else {
|
|
6340
|
+
this.selectDefaultIteration();
|
|
6341
|
+
}
|
|
6342
|
+
}
|
|
6343
|
+
// If input doesn't match user selection, don't override user's choice
|
|
6320
6344
|
}
|
|
6321
6345
|
}
|
|
6322
6346
|
// Update selection when iterations array changes
|
|
6323
6347
|
if (changes['iterations'] && this.iterations && this.iterations.length > 0) {
|
|
6324
|
-
|
|
6348
|
+
// Only reselect if we don't have a valid selection or if selectedIterationId changed
|
|
6349
|
+
if (!this.selectedIteration || !this.iterations.some(iter => { var _a; return iter.id === ((_a = this.selectedIteration) === null || _a === void 0 ? void 0 : _a.id); })) {
|
|
6350
|
+
// If user has selected something, try to preserve it
|
|
6351
|
+
if (this.userSelectedIterationId) {
|
|
6352
|
+
const found = this.iterations.find(iter => iter.id === this.userSelectedIterationId);
|
|
6353
|
+
if (found) {
|
|
6354
|
+
this.selectedIteration = found;
|
|
6355
|
+
}
|
|
6356
|
+
else {
|
|
6357
|
+
this.selectDefaultIteration();
|
|
6358
|
+
}
|
|
6359
|
+
}
|
|
6360
|
+
else {
|
|
6361
|
+
this.selectDefaultIteration();
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6325
6364
|
}
|
|
6326
6365
|
// Update config when inputs change
|
|
6327
6366
|
if (changes['iterations'] || changes['selectedIterationId'] || changes['nestedSteps']) {
|
|
@@ -6341,10 +6380,21 @@ class LoopStepComponent extends BaseStepComponent {
|
|
|
6341
6380
|
}
|
|
6342
6381
|
}
|
|
6343
6382
|
selectDefaultIteration() {
|
|
6383
|
+
// Only select default if no iteration is currently selected
|
|
6384
|
+
// This preserves user's selection when they manually change the iteration
|
|
6385
|
+
if (this.selectedIteration && this.selectedIterationId && this.selectedIteration.id === this.selectedIterationId) {
|
|
6386
|
+
// Already selected correctly, no need to change
|
|
6387
|
+
return;
|
|
6388
|
+
}
|
|
6344
6389
|
if (this.selectedIterationId) {
|
|
6345
|
-
|
|
6390
|
+
const found = this.iterations.find(iter => iter.id === this.selectedIterationId);
|
|
6391
|
+
if (found) {
|
|
6392
|
+
this.selectedIteration = found;
|
|
6393
|
+
return;
|
|
6394
|
+
}
|
|
6346
6395
|
}
|
|
6347
|
-
|
|
6396
|
+
// Only apply default if no specific selection was provided
|
|
6397
|
+
if (this.defaultIteration === 'last' && this.iterations.length > 0) {
|
|
6348
6398
|
this.selectedIteration = this.iterations[this.iterations.length - 1];
|
|
6349
6399
|
}
|
|
6350
6400
|
else if (this.iterations.length > 0) {
|
|
@@ -6352,6 +6402,8 @@ class LoopStepComponent extends BaseStepComponent {
|
|
|
6352
6402
|
}
|
|
6353
6403
|
}
|
|
6354
6404
|
handleIterationChange(iterationId) {
|
|
6405
|
+
// Store the user's manual selection
|
|
6406
|
+
this.userSelectedIterationId = iterationId;
|
|
6355
6407
|
this.selectedIteration = this.iterations.find(iter => iter.id === iterationId) || null;
|
|
6356
6408
|
// Emit the event with the iteration ID
|
|
6357
6409
|
this.onIterationChange.emit(iterationId);
|