@churchillliving/se-ui-toolkit 6.54.507 → 6.54.509
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.
|
@@ -63,7 +63,7 @@ export class SeGlobalFilterComponent {
|
|
|
63
63
|
setDateRangeFilterValue(dateRange) {
|
|
64
64
|
if (dateRange?.value?.length > 1) {
|
|
65
65
|
dateRange.value[0] = new Date(dateRange.value[0]);
|
|
66
|
-
dateRange.value[1] = dateRange.value[1] == null ?
|
|
66
|
+
dateRange.value[1] = dateRange.value[1] == null ? dateRange.value[0] : new Date(dateRange.value[1]);
|
|
67
67
|
// dateRange.value[1] = new Date(dateRange.value[1]);
|
|
68
68
|
this.selectDate(dateRange, false);
|
|
69
69
|
}
|
|
@@ -90,37 +90,51 @@ export class SeGlobalFilterComponent {
|
|
|
90
90
|
}
|
|
91
91
|
// change calendar format on run time if user type date on the calendar field.
|
|
92
92
|
calendarFocusEvent(globalFilter, event) {
|
|
93
|
-
document.getElementsByClassName(globalFilter.displayText)[0]
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
93
|
+
const inputElement = document.getElementsByClassName(globalFilter.displayText)[0];
|
|
94
|
+
if (inputElement) {
|
|
95
|
+
inputElement.addEventListener('keydown', (a) => {
|
|
96
|
+
if (a.key === 'Tab' || a.key === 'Enter') {
|
|
97
|
+
const inputValue = a.target?.value?.trim();
|
|
98
|
+
if (inputValue && !inputValue.includes('-')) {
|
|
99
|
+
const singleDate = new Date(inputValue);
|
|
100
|
+
if (!isNaN(singleDate.getTime())) {
|
|
101
|
+
globalFilter.value = [singleDate, singleDate];
|
|
102
|
+
this.selectDate(globalFilter, false);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
103
105
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
});
|
|
107
|
+
inputElement.addEventListener('keyup', (a) => {
|
|
108
|
+
let year = a.target?.value?.toString()?.split('/')[2];
|
|
109
|
+
year = year?.toString().split(' ')[0];
|
|
110
|
+
this.dateRangeValue = a.target?.value;
|
|
111
|
+
let dateRangeValue = this.dateRangeValue.includes('-') ? this.dateRangeValue.split('-') : '';
|
|
112
|
+
// Adding space between from and to date in date range filter
|
|
113
|
+
if (dateRangeValue.length === 2 &&
|
|
114
|
+
dateRangeValue[1].split('/').length === 3 &&
|
|
115
|
+
(!this.containsWhitespace(dateRangeValue[0]) || !this.containsWhitespace(dateRangeValue[1]))) {
|
|
116
|
+
if (!this.containsWhitespace(dateRangeValue[0])) {
|
|
117
|
+
dateRangeValue[0] = this.addSpacesatlast(dateRangeValue[0]);
|
|
118
|
+
}
|
|
119
|
+
if (!this.containsWhitespace(dateRangeValue[1])) {
|
|
120
|
+
dateRangeValue[1] = this.addSpacesatfirst(dateRangeValue[1]);
|
|
121
|
+
}
|
|
122
|
+
a.target.value = `${dateRangeValue[0]}-${dateRangeValue[1]}`;
|
|
107
123
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (globalFilter.type === GridFilterControlType.CALENDAR) {
|
|
114
|
-
globalFilter.value = new Date(a.target.value).toLocaleDateString("en-US");
|
|
124
|
+
if (year?.length === 4) {
|
|
125
|
+
this.calendarFormat = 'mm/dd/yy';
|
|
126
|
+
if (globalFilter.type === GridFilterControlType.CALENDAR) {
|
|
127
|
+
globalFilter.value = new Date(a.target.value).toLocaleDateString("en-US");
|
|
128
|
+
}
|
|
115
129
|
}
|
|
130
|
+
else if (year?.length) {
|
|
131
|
+
this.calendarFormat = 'mm/dd/y';
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
let yearValue = event?.target?.value?.toString()?.split('/')[4];
|
|
135
|
+
if ((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE) {
|
|
136
|
+
this.setDateRangeValue(globalFilter, true);
|
|
116
137
|
}
|
|
117
|
-
else if (year?.length) {
|
|
118
|
-
this.calendarFormat = 'mm/dd/y';
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
let yearValue = event?.target?.value?.toString()?.split('/')[4];
|
|
122
|
-
if ((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE) {
|
|
123
|
-
this.setDateRangeValue(globalFilter, true);
|
|
124
138
|
}
|
|
125
139
|
}
|
|
126
140
|
checkIfFilterRequired(filter) {
|
|
@@ -595,4 +609,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
595
609
|
}], activeTestMode: [{
|
|
596
610
|
type: Input
|
|
597
611
|
}] } });
|
|
598
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWtCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxJQUFhLGNBQWMsQ0FBRSxHQUFPLElBQUksSUFBRyxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQUUsUUFBUSxDQUFBO0tBQUUsQ0FBQSxDQUFDO0lBYXRFLFlBQ1MsUUFBa0IsRUFDTixHQUFxQixFQUNyQixNQUEyQixFQUN0QyxXQUF3QixFQUN6QixhQUE0QixFQUMzQixFQUFjLEVBQ2QsTUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FB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LGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7XG4gIElHbG9iYWxGaWx0ZXIsXG4gIEdyaWRGaWx0ZXJDb250cm9sVHlwZSxcbiAgRUdyaWRDb2x1bW5UeXBlLFxuICBFRGF5UmFuZ2UsXG4gIEVGaWx0ZXJWYWxpZGF0b3IsXG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjdXJyZW50VXJsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1nbG9iYWwtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlR2xvYmFsRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgncmFuZ2VDYWxlbmRhcicpIGRhdGVQaWNrZXI6IGFueTtcbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcltdID0gW107XG4gIEBJbnB1dCgpIHNlYXJjaEdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGVhckdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBncmlkVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHNldCBhY3RpdmVUZXN0TW9kZSAodmFsOmFueSkgeyBpZih2YWwgPT09IHRydWUpIHsgZGVidWdnZXIgfX1cbiAgcHVibGljIGZpdGVyVHlwZXMgPSBHcmlkRmlsdGVyQ29udHJvbFR5cGU7XG4gIHB1YmxpYyBjb2x1bW5UeXBlID0gRUdyaWRDb2x1bW5UeXBlO1xuICBwdWJsaWMgc2hvd0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlUmFuZ2VWYWx1ZSA6IGFueTtcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgcHVibGljIGVuZERhdGU6IERhdGU7XG5cbiAgc2hvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlcjogYW55ID0gJyc7XG4gIGhpZGVDbGVhckZpbHRlckJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIGNhbGVuZGFyRm9ybWF0OnN0cmluZyA9ICdtbS9kZC95eSc7XG4gIHNlYXJjaGJ0bklkID0gJ3NlYXJjaEdsb2JhbEZpbHRlckJ0bic7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXRlcGlwZTogRGF0ZVBpcGUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlZjogRHluYW1pY0RpYWxvZ1JlZixcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7IH1cblxuICAvKipcbiAgICogQXNzaWdubWVudCBvZiBzZWxlY3RlZCBjb2x1bW5zIG9uIHBhZ2UgbG9hZFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZGF0YSl7XG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSB0aGlzLmNvbmZpZy5kYXRhLm9wZW5EaWFsb2c7XG4gICAgICBpZih0aGlzLmNvbmZpZy5kYXRhLmdsb2JhbEZpbHRlcnMpe1xuICAgICAgICB0aGlzLmdsb2JhbEZpbHRlcnMgPSB0aGlzLmNvbmZpZz8uZGF0YS5nbG9iYWxGaWx0ZXJzIGFzIElHbG9iYWxGaWx0ZXJbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JpZFNlcnZpY2UuZ2V0TnVtYmVyT2ZDYWxscygpID09PSAxKSB7XG4gICAgICB0aGlzLnNlYXJjaGJ0bklkID0gJ3NlYXJjaEdsb2JhbEZpbHRlckJ0bic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoYnRuSWQgPSBgRmlsdGVyXyR7Y3VycmVudFVybCgpfV8ke3RoaXMuZ3JpZFNlcnZpY2UuZ2V0TnVtYmVyT2ZDYWxscygpfWBcbiAgICB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2Upe1xuICAgIGlmKGRhdGVSYW5nZT8udmFsdWU/Lmxlbmd0aCA+IDEpe1xuICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlLnZhbHVlWzBdKTtcbiAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9ZGF0ZVJhbmdlLnZhbHVlWzFdPT1udWxsPyBuZXcgRGF0ZSgpOiBuZXcgRGF0ZShkYXRlUmFuZ2UudmFsdWVbMV0pO1xuICAgICAvLyBkYXRlUmFuZ2UudmFsdWVbMV0gPSBuZXcgRGF0ZShkYXRlUmFuZ2UudmFsdWVbMV0pO1xuICAgICAgdGhpcy5zZWxlY3REYXRlKGRhdGVSYW5nZSwgZmFsc2UpO1xuICAgIH1lbHNlIHtcbiAgICAgIGlmKHRoaXMuZGF0ZVJhbmdlVmFsdWUpe1xuICAgICAgICBsZXQgZGF0ZVJhbmdlVmFsdWUgPSB0aGlzLmRhdGVSYW5nZVZhbHVlPy5pbmNsdWRlcygnLScpID8gdGhpcy5kYXRlUmFuZ2VWYWx1ZT8uc3BsaXQoJy0nKSA6ICcnO1xuICAgICAgICBpZiAoZGF0ZVJhbmdlVmFsdWUubGVuZ3RoID09IDIgJiYgKGRhdGVSYW5nZVZhbHVlWzBdLnRyaW0oKSA9PSBkYXRlUmFuZ2VWYWx1ZVsxXS50cmltKCkpKXtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSBbXVxuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVswXSA9IG5ldyBEYXRlKGRhdGVSYW5nZVZhbHVlWzBdKTtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVbMV0gPSBuZXcgRGF0ZShkYXRlUmFuZ2VWYWx1ZVsxXSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3REYXRlKGRhdGVSYW5nZSwgZmFsc2UpOyAgICAgXG4gICAgICAgIH0gICAgXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBcbiAgY29udGFpbnNXaGl0ZXNwYWNlKHN0cikge1xuICAgIHJldHVybiBzdHIuaW5jbHVkZXMoJyAnKTtcbiAgfVxuXG4gIGFkZFNwYWNlc2F0Zmlyc3QoeCkge1xuICAgIHJldHVybiBcIiBcIiArIHg7XG4gIH1cblxuICBhZGRTcGFjZXNhdGxhc3QoeCkge1xuICAgIHJldHVybiB4ICsgXCIgXCJcbiAgfVxuXG4gIC8vIGNoYW5nZSBjYWxlbmRhciBmb3JtYXQgb24gcnVuIHRpbWUgaWYgdXNlciB0eXBlIGRhdGUgb24gdGhlIGNhbGVuZGFyIGZpZWxkLlxuICBjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyOklHbG9iYWxGaWx0ZXIsIGV2ZW50PzogYW55KXtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dClbMF0/LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGE6IGFueSkgPT4ge1xuICAgICAgbGV0IHllYXIgPSBhPy50YXJnZXQ/LnZhbHVlPy50b1N0cmluZygpPy5zcGxpdCgnLycpWzJdO1xuICAgICAgeWVhciA9IHllYXI/LnRvU3RyaW5nKCkuc3BsaXQoXCIgXCIpWzBdO1xuICAgICAgdGhpcy5kYXRlUmFuZ2VWYWx1ZSA9IGE/LnRhcmdldD8udmFsdWVcbiAgICAgIGxldCBkYXRlUmFuZ2VWYWx1ZSA9IGE/LnRhcmdldD8udmFsdWU/LmluY2x1ZGVzKCctJykgPyBhPy50YXJnZXQ/LnZhbHVlPy5zcGxpdCgnLScpIDogJyc7XG4gICAgICAvLyBhZGRpbmcgc3BhY2UgYmV0d2VlbiBmcm9tIGFuZCB0byBkYXRlIGluIGRhdGUgcmFuZ2UgZmlsdGVyXG4gICAgICBpZiAoZGF0ZVJhbmdlVmFsdWUubGVuZ3RoID09IDIgJiYgZGF0ZVJhbmdlVmFsdWVbMV0uc3BsaXQoJy8nKS5sZW5ndGggPT0gMyAmJiAoIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzBdKSB8fCAhdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMV0pKSkge1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzBdKSkge1xuICAgICAgICAgIGxldCBmcm9tRGF0ZSA9IHRoaXMuYWRkU3BhY2VzYXRsYXN0KGRhdGVSYW5nZVZhbHVlWzBdKTtcbiAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZVswXSA9IGZyb21EYXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMV0pKSB7XG4gICAgICAgICAgbGV0IHRvRGF0ZSA9IHRoaXMuYWRkU3BhY2VzYXRmaXJzdChkYXRlUmFuZ2VWYWx1ZVsxXSk7XG4gICAgICAgICAgZGF0ZVJhbmdlVmFsdWVbMV0gPSB0b0RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFsdWUgPSBkYXRlUmFuZ2VWYWx1ZVswXSArICctJyArIGRhdGVSYW5nZVZhbHVlWzFdXG4gICAgICAgIGEudGFyZ2V0LnZhbHVlID0gYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmKHllYXI/Lmxlbmd0aCA9PT0gNCl7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJGb3JtYXQgPSAnbW0vZGQveXknO1xuICAgICAgICBpZihnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSKXtcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWUgPSBuZXcgRGF0ZShhLnRhcmdldC52YWx1ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZih5ZWFyPy5sZW5ndGgpe1xuICAgICAgICB0aGlzLmNhbGVuZGFyRm9ybWF0ID0gJ21tL2RkL3knO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCB5ZWFyVmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZT8udG9TdHJpbmcoKT8uc3BsaXQoJy8nKVs0XTtcbiAgICBpZigoIWdsb2JhbEZpbHRlci52YWx1ZSB8fCB5ZWFyVmFsdWUgPT0gdW5kZWZpbmVkIHx8IHllYXJWYWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoID09PSAxKSAmJiBnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0Upe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXIsIHRydWUpO1xuICAgIH1cbiAgfVxuICBjaGVja0lmRmlsdGVyUmVxdWlyZWQoZmlsdGVyOklHbG9iYWxGaWx0ZXIpe1xuICAgIGlmKGZpbHRlci52YWxpZGF0aW9ucz8uZmluZCh2YWxpZGF0aW9uPT52YWxpZGF0aW9uLnR5cGU9PT1FRmlsdGVyVmFsaWRhdG9yLlJFUVVJUkVEKSl7XG4gICAgICBmaWx0ZXIucmVxdWlyZWRGaWVsZD10cnVlO1xuICAgIH0gICAgXG4gIH1cbiAgY2hlY2tGaWx0ZXJWYWxpZGF0aW9uKHJlbW92ZUVycm9yOmJvb2xlYW4gPSBmYWxzZSk6Ym9vbGVhbntcbiAgICBsZXQgdmFsaWQ6Ym9vbGVhbiA9IGZhbHNlO1xuICAgIGlmKHRoaXMuZ2xvYmFsRmlsdGVycyAmJiB0aGlzLmdsb2JhbEZpbHRlcnMubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKT0+e1xuICAgICAgICBpZihmaWx0ZXIudmFsaWRhdGlvbnMgJiYgZmlsdGVyLnZhbGlkYXRpb25zLmxlbmd0aCA+IDAgJiYgZmlsdGVyLnZhbGlkYXRpb25zWzBdLnR5cGUgPT09IEVGaWx0ZXJWYWxpZGF0b3IuUkVRVUlSRUQgJiYgIWZpbHRlci52YWx1ZSAmJiAhcmVtb3ZlRXJyb3Ipe1xuICAgICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBmaWx0ZXIuZXJyb3JNZXNzYWdlID0gZmlsdGVyLmRpc3BsYXlUZXh0K1wiIGlzIHJlcXVpcmVkXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsdGVyLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpe1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVycz8uZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrSWZGaWx0ZXJSZXF1aXJlZChmaWx0ZXIpO1xuICAgICAgaWYgKGZpbHRlci52YWx1ZSAmJiAoZmlsdGVyLmhpZGRlbiA9PT0gZmFsc2UgfHwgZmlsdGVyLmhpZGRlbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyc0V2ZW50KCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBzZXQgQnkgRGVmYXVsdCBDYWxlbmRhciBSYW5nZVxuICAgIC8vdGhpcy5zZXREZWZhdWx0Q2FsZW5kYXJSYW5nZShmYWxzZSk7XG4gICAgY29uc3QgZ2lyZENsZWFyRmlsdGVyQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJ1xuICAgICk7XG4gICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bikge1xuICAgICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGUtY2xlYXItZmlsdGVyLWJ1dHRvbicpKSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBzcGxpdGluZyBkYXRlIHJhbmdlIHZhbHVlIGFuZCBhc3NpZ24gdG8gdmFsdWUgYW5kIHZhbHVlVHdvIGluIERhdGVfUmFuZ2UgQ29udHJvbFxuICAgIGNvbnN0IGRhdGVSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKTtcbiAgICBkYXRlUmFuZ2VGaWx0ZXI/LmZvckVhY2goKGRhdGVSYW5nZSkgPT4ge1xuICAgICAgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSBkYXRlUmFuZ2UudmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlVHdvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVUd28gPSBkYXRlUmFuZ2UudmFsdWVUd28udG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZVJhbmdlLnZhbHVlID0gKGRhdGVSYW5nZS52YWx1ZSArIFwiLVwiICsgZGF0ZVJhbmdlLnZhbHVlVHdvKT8udG9TdHJpbmcoKT8uc3BsaXQoJy0nKTtcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2UpO1xuICAgICAgfSBlbHNlIGlmIChkYXRlUmFuZ2UudmFsdWUgJiYgIWRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWUsICdndGUnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZGF0ZVJhbmdlLmZyb21GaWVsZCwgZGF0ZVJhbmdlLnZhbHVlVHdvLCAnZ3RlJyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBGaWx0cmluZyBOdW1lcmljIFJhbmdlIGNvbnRyb2xzIG9uIGdsb2JhbCBmaWx0ZXIgXG4gICAgY29uc3QgbnVtZXJSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5OVU1FUklDX1JBTkdFKTtcbiAgICBudW1lclJhbmdlRmlsdGVyLmZvckVhY2goKG51bWVyaWNSYW5nZSkgPT4ge1xuICAgICAgaWYgKG51bWVyaWNSYW5nZSkge1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlRnJvbShudW1lcmljUmFuZ2UpO1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlVHdvKG51bWVyaWNSYW5nZSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHNldE51bWVyaWNSYW5nZVZhbHVlVHdvKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlciwgc2VuZFJlcXVlc3Q6Ym9vbGVhbiA9IGZhbHNlKXtcbiAgICBpZihnbG9iYWxGaWx0ZXIudG9GaWVsZCl7XG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIudG9GaWVsZCwgZ2xvYmFsRmlsdGVyLnZhbHVlVHdvLCdsdGUnLCBnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgICBpZihzZW5kUmVxdWVzdCl7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoU2FtZUZpZWxkcyhmaWVsZDogc3RyaW5nLHZhbHVlOmFueSwgb3BlcmF0b3I6c3RyaW5nLCBudW1lclJhbmdlRmlsdGVyOiBhbnkgPSB7fSl7XG4gICAgICBpZihmaWVsZCl7XG4gICAgICAgIGlmKG51bWVyUmFuZ2VGaWx0ZXIgJiYgbnVtZXJSYW5nZUZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgJiYgdmFsdWUpe1xuICAgICAgICAgIGNvbnN0IGRpZ2l0SW5mbyA9IG51bWVyUmFuZ2VGaWx0ZXI/LmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvO1xuICAgICAgICAgIGlmKGRpZ2l0SW5mbyl7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpPy50b0ZpeGVkKGRpZ2l0SW5mbyk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpPy50b0ZpeGVkKDIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcik9PiBmaWVsZCA9PT0gZmlsdGVyLmZpZWxkKTtcbiAgICAgICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzW2luZGV4XSA9IHtmaWVsZDogZmllbGQsIG1hdGNoTW9kZTonYW5kJywgb3BlcmF0b3I6IG9wZXJhdG9yLCB2YWx1ZTogdmFsdWV9OyAgICAgICBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdsb2JhbEZpbHRlcnMucHVzaCh7ZmllbGQ6IGZpZWxkLCBtYXRjaE1vZGU6J2FuZCcsIG9wZXJhdG9yOiBvcGVyYXRvciwgdmFsdWU6IHZhbHVlfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIHNldE51bWVyaWNSYW5nZVZhbHVlRnJvbShnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIHNlbmRSZXF1ZXN0OmJvb2xlYW4gPSBmYWxzZSkge1xuICAgICBpZihnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLk5VTUVSSUNfUkFOR0UgJiYgZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCl7IFxuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCxnbG9iYWxGaWx0ZXIudmFsdWUsJ2d0ZScsIGdsb2JhbEZpbHRlcik7XG4gICAgICBpZihzZW5kUmVxdWVzdCl7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9XG4gICAgIH1cbiAgXG4gIH1cbiAgcmVtb3ZlTnVsbExvb2t1cChldmVudDogYW55LCBnbG9iYWxGaWx0ZXI6IGFueSl7XG4gICAgaWYoIWV2ZW50LnRhcmdldC52YWx1ZSl7XG4gICAgICB0aGlzLmxvb2t1cENsZWFyVmFsdWUoZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgbG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXI6IGFueSl7XG4gICAgaWYgKGdsb2JhbEZpbHRlcikge1xuXG4gICAgICBnbG9iYWxGaWx0ZXIudmFsdWUgPyBnbG9iYWxGaWx0ZXIudmFsdWU9Jyc6JydcbiAgICAgIGdsb2JhbEZpbHRlci52YWx1ZVR3bz9nbG9iYWxGaWx0ZXIudmFsdWVUd289Jyc6JydcbiAgICAgLy8gZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0P2dsb2JhbEZpbHRlci5kaXNwbGF5VGV4dD0nJzonJ1xuICAgICAgLy8gY29sdW1uLmRpc3BsYXlGaWVsZD9yb3dbY29sdW1uLmRpc3BsYXlGaWVsZF0gPSAnJzonJ1xuICAgICAgLy8gcm93W2NvbHVtbi5maWVsZCsnX29iaiddPy50ZXh0PyByb3dbY29sdW1uLmZpZWxkKydfb2JqJ10udGV4dD0nJzonJ1xuICAgICAgLy8gcm93W2NvbHVtbi5maWVsZF0gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAvLyBjb2x1bW4uZmlsdGVyVmFsdWUgPSAnJztcbiAgICAgIC8vdGhpcy5zZXRGaWx0ZXJGb2N1c091dChjb2x1bW4pO1xuICAgIH1cbiAgIC8vIHRoaXMuYnJvd3NlckNsb3NlRXZlbnQodHJ1ZSk7XG4gICAvLyBpZiAoY29sdW1uLm9uQ2hhbmdlKSB7XG4gICAgLy8gIGNvbHVtbi5vbkNoYW5nZShyb3cpO1xuICAgLy8gfVxuICB9XG5cbiAgc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyOiBhbnksIGNsZWFyVmFsdWU6IGJvb2xlYW4gPWZhbHNlKSB7XG4gICAgaWYoZ2xvYmFsRmlsdGVyLnZhbHVlPy5sZW5ndGggPiAwKXtcbiAgICAgIGNvbnN0IGZyb21EYXRlVmFsdWUgPSB0aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShcbiAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlWzBdLFxuICAgICAgICBnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHRvRGF0ZVZhbHVlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZVsxXSxcbiAgICAgICAgZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICk7XG4gICAgICBpZiAoZnJvbURhdGVWYWx1ZSAmJiB0b0RhdGVWYWx1ZSAmJiBnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkICYmIGdsb2JhbEZpbHRlci50b0ZpZWxkKSB7XG4gICAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci5mcm9tRmllbGQsZnJvbURhdGVWYWx1ZSwnZ3RlJyk7XG4gICAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci50b0ZpZWxkLHRvRGF0ZVZhbHVlLCdsdGUnKTtcbiAgICAgIH1cbiAgICB9ZWxzZSBpZihjbGVhclZhbHVlKXtcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci5mcm9tRmllbGQsIG51bGwsICdndGUnKTtcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci50b0ZpZWxkLCBudWxsLCAnbHRlJyk7XG4gICAgfVxuICB9XG5cbiAgb25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcikge1xuICAgIGlmIChnbG9iYWxGaWx0ZXIgJiYgZ2xvYmFsRmlsdGVyLm9uQ2xpY2spIHtcbiAgICAgIGdsb2JhbEZpbHRlci5vbkNsaWNrKGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICAgIGVsc2UgaWYgKGdsb2JhbEZpbHRlciAmJiBnbG9iYWxGaWx0ZXIub25Gb2N1c091dCkge1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uRm9jdXNPdXQoZ2xvYmFsRmlsdGVyKTtcbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpID0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UpXG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQoZ2xvYmFsRmlsdGVycyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUuZW1pdChnbG9iYWxGaWx0ZXIpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzRXZlbnQoKXtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBnbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgKVxuICAgICAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KGdsb2JhbEZpbHRlcnMpO1xuICAgICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEFwcGx5IHNlbGVjdGVkIGZpbHRlcnNcbiAgICovXG4gIGFwcGx5RmlsdGVycyhmaWx0ZXJFdmVudDogYm9vbGVhbj0gdHJ1ZSwgZ2xvYmFsRmlsdGVyOmFueSA9IHt9KSB7XG4gICAgIHRoaXMuZ3JpZFNlcnZpY2UudXNlclNlYXJjaGVkPXRydWU7XG4gICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgfSBcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmaWx0ZXJFdmVudDtcbiAgICBjb25zdCBnbG9iYWxGaWx0ZXJzID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoeCkgPT4geC5maWVsZCk7XG4gICAgY29uc3QgaW5kZXggPSBnbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgKVxuICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgZ2xvYmFsRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgaWYgKHRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgdGhpcy5yZWYuY2xvc2UoZ2xvYmFsRmlsdGVycyk7XG4gICAgfSBlbHNlIFxuICAgIGlmKCF0aGlzLmNoZWNrRmlsdGVyVmFsaWRhdGlvbigpKXtcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJWYWxpZGF0aW9uKHRydWUpO1xuICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KGdsb2JhbEZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBCeSBEZWZhdWx0IENhbGVuZGFyIFJhbmdlIFxuICBzZXREZWZhdWx0Q2FsZW5kYXJSYW5nZShjaGVjazogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXJzICYmIHRoaXMuZ2xvYmFsRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgJiYgZmlsdGVyLmRheVJhbmdlICYmIGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWVUd28pIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSkgLy8gRW1pdCBvbmx5IG9uY2Ugd2hlbiB0aGUgem9uZSBiZWNvbWVzIHN0YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd05leHQoZmlsdGVyLCBjaGVjayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2hvd05leHQoZmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBjaGVjazogYm9vbGVhbiA9IHRydWUpOiBEYXRlW10ge1xuICAgIC8vIGxldCBuZXh0VmFsdWU6IHN0cmluZztcbiAgICBsZXQgbmV4dFZhbHVlOiBEYXRlW11cbiAgICBsZXQgZGF5UmFuZ2U6IEVEYXlSYW5nZSA9IGZpbHRlci5kYXlSYW5nZVxuICAgICAgPyBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgIDogRURheVJhbmdlLldFRUs7XG4gICAgc3dpdGNoIChkYXlSYW5nZSkge1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuREFZOlxuICAgICAgIC8vIG5leHRWYWx1ZSA9IHRoaXMuc2V0RGF5RmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuTU9OVEg6XG4gICAgICAvLyAgbmV4dFZhbHVlID0gdGhpcy5zZXRNb250aEZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLllFQVI6XG4gICAgICAvLyAgbmV4dFZhbHVlID0gdGhpcy5zZXRZZWFyRmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gd2Vla1xuICAgICAgbmV4dFZhbHVlID0gdGhpcy5zZXRXZWVrRmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGZpbHRlci52YWx1ZT0gbmV4dFZhbHVlXG4gICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKVxuICAgICAgICAvL2ZpbHRlci52YWx1ZVR3bz1uZXh0VmFsdWVbMV1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBjaGVjaztcbiAgICBjb25zdCBnbG9iYWxGaWx0ZXJzID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoeCkgPT4geC5maWVsZCk7XG4gICAgY29uc3QgaW5kZXggPSBnbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgKVxuICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgZ2xvYmFsRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQoZ2xvYmFsRmlsdGVycyk7XG4gICAvLyBsZXQgdGVzdD1uZXh0VmFsdWVcbiAgICAvL2ZpbHRlci52YWx1ZT1uZXh0VmFsdWVcbiAgIFxuICAgIHJldHVybiBuZXh0VmFsdWU7XG4gIH1cblxuICBzaG93UHJldmlvdXMoZmlsdGVyOiBJR2xvYmFsRmlsdGVyKTogRGF0ZVtdIHtcbiAgICBsZXQgcHJldmlvdXNWYWx1ZTogRGF0ZVtdO1xuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0RGF5RmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLk1PTlRIOlxuICAgICAvLyAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLllFQVI6XG4gICAgICAvLyAgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0WWVhckZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIudmFsdWU9cHJldmlvdXNWYWx1ZVxuICAgIHRoaXMuc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKVxuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IHRydWU7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChnbG9iYWxGaWx0ZXJzKTtcbiAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgfVxuXG4gIHNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXI6IElHbG9iYWxGaWx0ZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAoZmlsdGVyLnZhbHVlID1cbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkgK1xuICAgICAgJ3wnICtcbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLmVuZERhdGUsXG4gICAgICAgIGZpbHRlci5mb3JtYXQgPyBmaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApKTtcbiAgfVxuXG4gIHNldERhdGVWYWx1ZShmaWx0ZXI6IGFueSkge1xuICAgIGxldCB2YWx1ZTogRGF0ZTtcbiAgICBpZiAoZmlsdGVyLnZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKGZpbHRlci52YWx1ZS5zcGxpdCgnfCcpWzBdKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5zZXRNb250aCh2YWx1ZS5nZXRNb250aCgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldERheUZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RGF0ZSgpICsgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBjdXJyZW50RGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgLSAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0WWVhckZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcbiAgICB2YXIgZmlyc3REYXRlT2ZZZWFyID0gbmV3IERhdGUoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSAtIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIDExLCAzMSk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXRDYWxlbmRhclJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgfVxuXG4gIHNldE1vbnRoRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZk1vbnRoID0gbmV3IERhdGUoXG4gICAgICBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgY3VycmVudERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIDFcbiAgICApO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBmaXJzdERhdGVPZk1vbnRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAwXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0V2Vla0ZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IERhdGVbXXtcbiAgICBsZXQgZmlsdGVyVmFsdWU6RGF0ZT0gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpPyBmaWx0ZXIudmFsdWVbMF06ZmlsdGVyLnZhbHVlXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoZmlsdGVyVmFsdWU/IGZpbHRlclZhbHVlOm5ldyBEYXRlKCkpLy90aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLnNldERhdGUoZmlsdGVyVmFsdWUgPyBjdXJyZW50RGF0ZS5nZXREYXRlKCkgOiBjdXJyZW50RGF0ZS5nZXREYXRlKCkgLSBjdXJyZW50RGF0ZS5nZXREYXkoKSArIDEpKTtcbiAgICBsZXQgd2Vla1NlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBsZXQgdmFsdWU6RGF0ZVxuICAgICAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlclZhbHVlXG4gICAgICAgZmlsdGVyLnZhbHVlXG4gICAgICAgID8gIHZhbHVlLnNldERhdGUoZmlsdGVyVmFsdWUuZ2V0RGF0ZSgpKzcpICAgLy9uZXcgRGF0ZShuZXcgRGF0ZShmaWx0ZXJWYWx1ZSkuZ2V0VGltZSgpICsgd2Vla1NlY29uZHMpXG4gICAgICAgIDogdmFsdWU9IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBmaWx0ZXIudmFsdWVcbiAgICAgICAgP25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgICAgICA6IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgIH1cbiAgICAvL3RoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAvLyBsZXQgdmFsdWU6RGF0ZT1maWx0ZXJWYWx1ZT9cbiAgICAvLyAgIGlzTmV4dD9uZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcyk6bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpOlxuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSk6bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG5cbiAgICBsZXQgdmFsdWVUd286RGF0ZT1uZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkgKyA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7IFxuICAgLy8gY29uc29sZS5sb2coJ3Rlc3QnLHZhbHVlLCd0ZXN0MicsdmFsdWVUd28pXG4gICAgcmV0dXJuIFt2YWx1ZSwgdmFsdWVUd29dXG4gICAvL3JldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgICAvKipcbiAgICogb3BlbiBkaWFsb2cgb24gbG9va3VwQ29udHJvbCBmaWVsZFxuICAgKi9cbiAgICAgc2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcikgeyAgIFxuXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldExvb2tVcEZpbHRlcihnbG9iYWxGaWx0ZXJzLCB0aGlzLmRpYWxvZ1NlcnZpY2UsIHRydWUpO1xuICAgIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLmdsb2JhbEZpbHRlcnMuZm9yRWFjaCgoaXRlbSk9PntcbiAgICAgIGlmKGl0ZW0udHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkxPT0tVUF9JTlBVVCAmJiBpdGVtPy52YWx1ZVR3bz8udGV4dCl7XG4gICAgICAgIGl0ZW0udmFsdWVUd28gPSBudWxsO1xuICAgICAgfVxuICAgICAgaXRlbS52YWx1ZSA9IG51bGw7XG4gICAgfSlcbiAgICBjb25zdCBjbGVhckdyaWRGaWx0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJylcbiAgICBpZihjbGVhckdyaWRGaWx0ZXIpe1xuICAgICAgY2xlYXJHcmlkRmlsdGVyLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgIC8qKlxuICAgKiBDbGVhciB2YWx1ZXMgb2YgRGF0ZSBSYW5nZSBGaWx0ZXJcbiAgICovXG4gICAgY2xlYXJEYXRlUmFuZ2VWYWx1ZShmaWx0ZXI6IGFueSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGZpbHRlciwgdHJ1ZSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGRpYWxvZyB3aXRob3V0IGFwcGx5aW5nIGZpbHRlcnNcbiAgICovXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgIHRoaXMucmVmLmNsb3NlKCk7XG4gIH1cbiAgcmFuZ2VEYXRlY2xvc2UoZWxlbWVudCkgeyAgXG4gICAgdGhpcy5kYXRlUGlja2VyLmhpZGVPdmVybGF5KCk7XG4gICAgdGhpcy5kYXRlUGlja2VyLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kYXRlUGlja2VyLmRhdGVwaWNrZXJDbGljayA9IHRydWU7XG4gICAgLy8gY29uc3QgaWQ6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCk7XG4gICAgLy8gY29uc29sZS5sb2coaWQsICBlbGVtZW50LmVsLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZC5maXJzdENoaWxkKS8vZWxlbWVudCwgaWQgLFxuICAgIC8vIGlkLmZvY3VzKCk7XG4gICAgZWxlbWVudC5lbC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5mb2N1cygpO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5kYXRlcGlja2VyQ2xpY2sgPSB0cnVlO1xuXG4gIH1cblxuICBmaWx0ZXJJbnB1dCgpIHtcbiAgICB0aGlzLnNob3dJbnB1dCA9ICF0aGlzLnNob3dJbnB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VkIHRoZSBjYWxlbmRhciBpbnB1dFxuICAgKi9cbiAgc2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXI6IGFueSwgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlLCBldmVudD86YW55KXtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDEgJiYgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdICE9PSBudWxsKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKGZvY3VzZWQgPT10cnVlKXtcbiAgICAgIHRoaXMucmFuZ2VEYXRlY2xvc2UoZXZlbnQpOyBcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoZm9jdXNlZCl7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChnbG9iYWxGaWx0ZXIuZmllbGQpPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuICB0YWJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcjogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLicrZ2xvYmFsRmlsdGVyLmZpZWxkXG4gICAgKTtcbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWUuY2xpY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1jb21wb25lbnQtd3JhcHBlci1kaXZcIj5cbiAgPGRpdlxuICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuaGlkZGVuID8gJ2dsb2JhbEZpbHRlckhpZGRlbicgOiBnbG9iYWxGaWx0ZXIuY29sdW1uID8gJ2NvbC0nICsgZ2xvYmFsRmlsdGVyLmNvbHVtbiA6ICdjb2wtMydcIlxuICAgICpuZ0Zvcj1cImxldCBnbG9iYWxGaWx0ZXIgb2YgZ2xvYmFsRmlsdGVyc1wiXG4gID5cbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJnbG9iYWxGaWx0ZXIudHlwZVwiPlxuICAgICAgPCEtLSBDYWxlbmRhciBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuQ0FMRU5EQVJcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0OiAnZmxleC1ncm93LTEgZ3Jvdy0xICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0LURhdGUnXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXIsIHRydWUpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImNhbGVuZGFyRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAob25DbG9zZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICBbc2hvd0J1dHRvbkJhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwiY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIENhbGVuZGFyIFJhbmdlIC0tPlxuICAgICAgPCEtLSA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuQ0FMRU5EQVJfUkFOR0VcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJldmlvdXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiUHJldmlvdXMge3tcbiAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICAgICAgfX0gPDxcIiBcbiAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgICAgPCEtLSA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5wcmVmaXg9PT10cnVlIHx8IGdsb2JhbEZpbHRlci5wcmVmaXg9PT11bmRlZmluZWRcIj5cbiAgICAgICAgICAgICAgICB7eyAgZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA/IGdsb2JhbEZpbHRlci5sYWJlbFRleHQgOiAnJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIHt7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlXG4gICAgICAgICAgICAgICAgICB8IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eScpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHRvXG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgZW5kRGF0ZVxuICAgICAgICAgICAgICAgICAgfCBkYXRlXG4gICAgICAgICAgICAgICAgICAgIDogKGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknKVxuICAgICAgICAgICAgICB9fSAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5wcmVmaXg9PT1mYWxzZVwiPlxuICAgICAgICAgICAgICAgIHt7IGdsb2JhbEZpbHRlci5sYWJlbFRleHQgPyBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0IDogJyd9fVxuICAgICAgICAgICAgICA8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd05leHQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiTmV4dCB7e1xuICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgICB9fSA+PlwiXG4gICAgICAgICAgICA+IC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwhLS0gPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj4gLS0+XG5cbiAgICAgIDwhLS0gQ2hlY2tib3ggQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkNIRUNLQk9YXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8cC1jaGVja2JveFxuICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eSc6ICdmbGV4IGFsaWduLWl0ZW1zLWNlbnRlcidcIlxuICAgICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIFNwYWNlciBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5TUEFDRVJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5jb2x1bW5cbiAgICAgICAgICAgICAgICA/ICdjb2wtJyArIGdsb2JhbEZpbHRlci5jb2x1bW5cbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIERyb3Bkb3duIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5EUk9QRE9XTlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8cC1kcm9wZG93blxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbbmFtZV09XCJnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cInRydWVcIlxuICAgICAgICAgICAgICBbc3R5bGVDbGFzc109XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAoa2V5dXAuVGFiKT1cInRhYkZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJnbG9iYWxGaWx0ZXIuZGF0YSB8fCBbXVwiXG4gICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnbG9iYWxGaWx0ZXIub3B0aW9uTGFiZWxcIlxuICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiZ2xvYmFsRmlsdGVyLm9wdGlvblZhbHVlXCJcbiAgICAgICAgICAgICAgW2ZpbHRlcl09XCJnbG9iYWxGaWx0ZXIuYWxsb3dTZWFyY2hcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgZmlsdGVyTWF0Y2hNb2RlPVwic3RhcnRzV2l0aFwiXG4gICAgICAgICAgICA+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIElucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5JTlBVVFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgICA8IS0tIE51bWVyaWNJbnB1dCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk5VTUVSSUNJTlBVVFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIFxuICAgICAgPCEtLSBEYXRlIFJhbmdlIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5EQVRFX1JBTkdFXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByYW5nZS1jYWxlbmRhciBnYXAtMVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdsb2JhbEZpbHRlci5kYXlSYW5nZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuICBjYWxlbmRhci1wcmV2aW91c1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJldmlvdXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiPDxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBcIlByZXZpb3VzIHt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgfX0gPDxcIiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFxuICAgICAgICAgICAgI3JhbmdlQ2FsZW5kYXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuXG4gICAgICAgICAgICBbaW5wdXRJZF09XCJnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IDogJ2ZsZXgtZ3Jvdy0xIGdyb3ctMSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCIgXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIiBcbiAgICAgICAgICAgIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXIsIHRydWUsIHJhbmdlQ2FsZW5kYXIpXCJcbiAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImNhbGVuZGFyRm9ybWF0XCJcbiAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkNsaWNrT3V0c2lkZSk9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwic2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAoa2V5dXApPVwiY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlciwgJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbGVhckNsaWNrKT1cImNsZWFyRGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnModHJ1ZSwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBcbiAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuIGNhbGVuZGFyLW5leHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dOZXh0KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgbGFiZWw9XCI+PlwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwhLS0gTmV4dCB7e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgfX0gPj5cIiAtLT5cbiAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLSB0b2RheUJ1dHRvblN0eWxlQ2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgY2xlYXJCdXR0b25TdHlsZUNsYXNzPVwibWwtYXV0b1wiIC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBOdW1lcmljIFJhbmdlIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ19SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LW5vd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcix0cnVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xICBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvLW51bWVyaWMgbXItMlwiPlRvPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlVHdvXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xIG1yLTIgZ3Jvdy0xIGlucHV0LW51bWJlcidcIlxuICAgICAgICAgICAgICAob25CbHVyKT1cInNldE51bWVyaWNSYW5nZVZhbHVlVHdvKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBNdWx0aVNlbGVjdCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk1VTFRJU0VMRUNUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cbiAgICAgICAgIDwhLS0gU2VsZWN0IEJ1dHRvbiBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNFTEVDVEJVVFRPTlwiXG5cbiAgICAgICAgPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8cC1zZWxlY3RCdXR0b25cbiAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5U3R5bGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgXG4gICAgICAgID5cbiAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPlxuICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICA8L25nLXRlbXBsYXRlPiAtLT5cbiAgICAgIDwvcC1zZWxlY3RCdXR0b24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuXG5cbiAgICAgIDwhLS0gTG9va3VwIENvbnRyb2wgRmllbGQgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTE9PS1VQX0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UtaWNvbi13cmFwcGVyIGxvb2t1cC1maWx0ZXItd3JhcHBlciBnbG9iYWxGaWx0ZXJzXCI+IFxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyPy52YWx1ZVR3bz8udGV4dCA/IGdsb2JhbEZpbHRlci52YWx1ZVR3by50ZXh0IDogZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuVGFiKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwicmVtb3ZlTnVsbExvb2t1cCgkZXZlbnQsIGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHQgbG9va3VwLWlucHV0LWljb24gZ2xvYmFsLWZpbHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlyZWN0LXdyYXBwZXItY2xvc2UtaWNvbi1sb29rdXBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpO29uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gPHNwYW4+XG4gIDxpICBpY29uPVwicGkgcGktdGltZXNcIj48L2k+XG48L3NwYW4+IC0tPlxuXG48IS0tIEFwcGx5IGJ1dHRvbiAtLT5cblxuPGJ1dHRvblxucEJ1dHRvblxuKm5nSWY9XCIhZ3JpZFVwZGF0ZVwiXG50eXBlPVwiYnV0dG9uXCJcbmljb249XCJwaSBwaS1zZWFyY2hcIlxuW2lkXT1cInNlYXJjaGJ0bklkXCJcbihjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiXG5jbGFzcz1cImdsb2JhbC1zZWFyY2ggYWxpZ24tZ2xvYmFsRmlsdGVyLWJ0biBnbG9iYWwtYnRuIGhpZGUtZmlsdGVyLWJ1dHRvblwiXG4+PC9idXR0b24+XG5cbjwhLS0gQ2xvc2UgYnV0dG9uIC0tPlxuPGJ1dHRvblxucEJ1dHRvblxuKm5nSWY9XCIhZ3JpZFVwZGF0ZVwiXG5pZD1cImNsZWFyR2xvYmFsRmlsdGVyQnRuXCJcbnR5cGU9XCJidXR0b25cIlxuaWNvbj1cInBpIHBpLXJlcGxheVwiXG4oY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIlxuY2xhc3M9XCJoaWRlLWZpbHRlci1idXR0b25cIlxuPjwvYnV0dG9uPlxuIl19
|
|
612
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWtCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsZUFBZSxFQUNmLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxJQUFhLGNBQWMsQ0FBRSxHQUFPLElBQUksSUFBRyxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQUUsUUFBUSxDQUFBO0tBQUUsQ0FBQSxDQUFDO0lBYXRFLFlBQ1MsUUFBa0IsRUFDTixHQUFxQixFQUNyQixNQUEyQixFQUN0QyxXQUF3QixFQUN6QixhQUE0QixFQUMzQixFQUFjLEVBQ2QsTUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FB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QkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtTQUNGO1FBQ0QsSUFBRyxPQUFPLEVBQUM7WUFDVCxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFDRCxhQUFhLENBQUMsWUFBaUI7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUNuRCxHQUFHLEdBQUMsWUFBWSxDQUFDLEtBQUssQ0FDdkIsQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFO1lBQ2IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztpSUFyb0JVLHVCQUF1QjtxSEFBdkIsdUJBQXVCLDRjQ25CcEMsNjJ1QkE2Z0JBOzsyRkQxZmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBMkIxQixRQUFROzswQkFDUixRQUFRO2dKQXZCaUIsVUFBVTtzQkFBckMsU0FBUzt1QkFBQyxlQUFlO2dCQUNqQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ00sY0FBYztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ1JlZiwgRHluYW1pY0RpYWxvZ0NvbmZpZywgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1xuICBJR2xvYmFsRmlsdGVyLFxuICBHcmlkRmlsdGVyQ29udHJvbFR5cGUsXG4gIEVHcmlkQ29sdW1uVHlwZSxcbiAgRURheVJhbmdlLFxuICBFRmlsdGVyVmFsaWRhdG9yLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY3VycmVudFVybCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtZ2xvYmFsLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZUdsb2JhbEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3JhbmdlQ2FsZW5kYXInKSBkYXRlUGlja2VyOiBhbnk7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlcnM6IElHbG9iYWxGaWx0ZXJbXSA9IFtdO1xuICBASW5wdXQoKSBzZWFyY2hHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xlYXJHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZ3JpZFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZmlsdGVyc0FwcGxpZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUgKHZhbDphbnkpIHsgaWYodmFsID09PSB0cnVlKSB7IGRlYnVnZ2VyIH19XG4gIHB1YmxpYyBmaXRlclR5cGVzID0gR3JpZEZpbHRlckNvbnRyb2xUeXBlO1xuICBwdWJsaWMgY29sdW1uVHlwZSA9IEVHcmlkQ29sdW1uVHlwZTtcbiAgcHVibGljIHNob3dEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0ZVJhbmdlVmFsdWUgOiBhbnk7XG4gIHB1YmxpYyBzdGFydERhdGU6IERhdGU7XG4gIHB1YmxpYyBlbmREYXRlOiBEYXRlO1xuXG4gIHNob3dJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXI6IGFueSA9ICcnO1xuICBoaWRlQ2xlYXJGaWx0ZXJCdG46IGJvb2xlYW4gPSB0cnVlO1xuICBjYWxlbmRhckZvcm1hdDpzdHJpbmcgPSAnbW0vZGQveXknO1xuICBzZWFyY2hidG5JZCA9ICdzZWFyY2hHbG9iYWxGaWx0ZXJCdG4nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGF0ZXBpcGU6IERhdGVQaXBlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbm1lbnQgb2Ygc2VsZWN0ZWQgY29sdW1ucyBvbiBwYWdlIGxvYWRcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRhdGEpe1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gdGhpcy5jb25maWcuZGF0YS5vcGVuRGlhbG9nO1xuICAgICAgaWYodGhpcy5jb25maWcuZGF0YS5nbG9iYWxGaWx0ZXJzKXtcbiAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzID0gdGhpcy5jb25maWc/LmRhdGEuZ2xvYmFsRmlsdGVycyBhcyBJR2xvYmFsRmlsdGVyW107XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmdyaWRTZXJ2aWNlLmdldE51bWJlck9mQ2FsbHMoKSA9PT0gMSkge1xuICAgICAgdGhpcy5zZWFyY2hidG5JZCA9ICdzZWFyY2hHbG9iYWxGaWx0ZXJCdG4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaGJ0bklkID0gYEZpbHRlcl8ke2N1cnJlbnRVcmwoKX1fJHt0aGlzLmdyaWRTZXJ2aWNlLmdldE51bWJlck9mQ2FsbHMoKX1gXG4gICAgfVxuICB9XG5cbiAgc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZGF0ZVJhbmdlKXtcbiAgICBpZihkYXRlUmFuZ2U/LnZhbHVlPy5sZW5ndGggPiAxKXtcbiAgICAgIGRhdGVSYW5nZS52YWx1ZVswXSA9IG5ldyBEYXRlKGRhdGVSYW5nZS52YWx1ZVswXSk7XG4gICAgICBkYXRlUmFuZ2UudmFsdWVbMV0gPSBkYXRlUmFuZ2UudmFsdWVbMV0gPT0gbnVsbCA/IGRhdGVSYW5nZS52YWx1ZVswXSA6IG5ldyBEYXRlKGRhdGVSYW5nZS52YWx1ZVsxXSk7XG4gICAgIC8vIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZS52YWx1ZVsxXSk7XG4gICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7XG4gICAgfWVsc2Uge1xuICAgICAgaWYodGhpcy5kYXRlUmFuZ2VWYWx1ZSl7XG4gICAgICAgIGxldCBkYXRlUmFuZ2VWYWx1ZSA9IHRoaXMuZGF0ZVJhbmdlVmFsdWU/LmluY2x1ZGVzKCctJykgPyB0aGlzLmRhdGVSYW5nZVZhbHVlPy5zcGxpdCgnLScpIDogJyc7XG4gICAgICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT0gMiAmJiAoZGF0ZVJhbmdlVmFsdWVbMF0udHJpbSgpID09IGRhdGVSYW5nZVZhbHVlWzFdLnRyaW0oKSkpe1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IFtdXG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlVmFsdWVbMF0pO1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7ICAgICBcbiAgICAgICAgfSAgICBcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIFxuICBjb250YWluc1doaXRlc3BhY2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5pbmNsdWRlcygnICcpO1xuICB9XG5cbiAgYWRkU3BhY2VzYXRmaXJzdCh4KSB7XG4gICAgcmV0dXJuIFwiIFwiICsgeDtcbiAgfVxuXG4gIGFkZFNwYWNlc2F0bGFzdCh4KSB7XG4gICAgcmV0dXJuIHggKyBcIiBcIlxuICB9XG5cbiAgLy8gY2hhbmdlIGNhbGVuZGFyIGZvcm1hdCBvbiBydW4gdGltZSBpZiB1c2VyIHR5cGUgZGF0ZSBvbiB0aGUgY2FsZW5kYXIgZmllbGQuXG4gIGNhbGVuZGFyRm9jdXNFdmVudChnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQpWzBdO1xuICBcbiAgICBpZiAoaW5wdXRFbGVtZW50KSB7XG4gICAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChhOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChhLmtleSA9PT0gJ1RhYicgfHwgYS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gKGEudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZT8udHJpbSgpO1xuICAgICAgICAgIGlmIChpbnB1dFZhbHVlICYmICFpbnB1dFZhbHVlLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZURhdGUgPSBuZXcgRGF0ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaXNOYU4oc2luZ2xlRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA9IFtzaW5nbGVEYXRlLCBzaW5nbGVEYXRlXTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIFxuICAgICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGE6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgbGV0IHllYXIgPSAoYS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LnZhbHVlPy50b1N0cmluZygpPy5zcGxpdCgnLycpWzJdO1xuICAgICAgICB5ZWFyID0geWVhcj8udG9TdHJpbmcoKS5zcGxpdCgnICcpWzBdO1xuICAgICAgICB0aGlzLmRhdGVSYW5nZVZhbHVlID0gKGEudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZTtcbiAgICAgICAgbGV0IGRhdGVSYW5nZVZhbHVlID0gdGhpcy5kYXRlUmFuZ2VWYWx1ZS5pbmNsdWRlcygnLScpID8gdGhpcy5kYXRlUmFuZ2VWYWx1ZS5zcGxpdCgnLScpIDogJyc7XG4gIFxuICAgICAgICAvLyBBZGRpbmcgc3BhY2UgYmV0d2VlbiBmcm9tIGFuZCB0byBkYXRlIGluIGRhdGUgcmFuZ2UgZmlsdGVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZVsxXS5zcGxpdCgnLycpLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgICAgICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pIHx8ICF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pKSB7XG4gICAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZVswXSA9IHRoaXMuYWRkU3BhY2VzYXRsYXN0KGRhdGVSYW5nZVZhbHVlWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpIHtcbiAgICAgICAgICAgIGRhdGVSYW5nZVZhbHVlWzFdID0gdGhpcy5hZGRTcGFjZXNhdGZpcnN0KGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKGEudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlID0gYCR7ZGF0ZVJhbmdlVmFsdWVbMF19LSR7ZGF0ZVJhbmdlVmFsdWVbMV19YDtcbiAgICAgICAgfVxuICBcbiAgICAgIGlmKHllYXI/Lmxlbmd0aCA9PT0gNCl7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJGb3JtYXQgPSAnbW0vZGQveXknO1xuICAgICAgICBpZihnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSKXtcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWUgPSBuZXcgRGF0ZSgoYS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoeWVhcj8ubGVuZ3RoKXtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm1hdCA9ICdtbS9kZC95JztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgeWVhclZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU/LnRvU3RyaW5nKCk/LnNwbGl0KCcvJylbNF07XG4gICAgaWYoKCFnbG9iYWxGaWx0ZXIudmFsdWUgfHwgeWVhclZhbHVlID09IHVuZGVmaW5lZCB8fCB5ZWFyVmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PT0gMSkgJiYgZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyLCB0cnVlKTtcbiAgICB9XG4gIH0gXG59XG4gIGNoZWNrSWZGaWx0ZXJSZXF1aXJlZChmaWx0ZXI6SUdsb2JhbEZpbHRlcil7XG4gICAgaWYoZmlsdGVyLnZhbGlkYXRpb25zPy5maW5kKHZhbGlkYXRpb249PnZhbGlkYXRpb24udHlwZT09PUVGaWx0ZXJWYWxpZGF0b3IuUkVRVUlSRUQpKXtcbiAgICAgIGZpbHRlci5yZXF1aXJlZEZpZWxkPXRydWU7XG4gICAgfSAgICBcbiAgfVxuICBjaGVja0ZpbHRlclZhbGlkYXRpb24ocmVtb3ZlRXJyb3I6Ym9vbGVhbiA9IGZhbHNlKTpib29sZWFue1xuICAgIGxldCB2YWxpZDpib29sZWFuID0gZmFsc2U7XG4gICAgaWYodGhpcy5nbG9iYWxGaWx0ZXJzICYmIHRoaXMuZ2xvYmFsRmlsdGVycy5sZW5ndGggPiAwKXtcbiAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpPT57XG4gICAgICAgIGlmKGZpbHRlci52YWxpZGF0aW9ucyAmJiBmaWx0ZXIudmFsaWRhdGlvbnMubGVuZ3RoID4gMCAmJiBmaWx0ZXIudmFsaWRhdGlvbnNbMF0udHlwZSA9PT0gRUZpbHRlclZhbGlkYXRvci5SRVFVSVJFRCAmJiAhZmlsdGVyLnZhbHVlICYmICFyZW1vdmVFcnJvcil7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGZpbHRlci5lcnJvck1lc3NhZ2UgPSBmaWx0ZXIuZGlzcGxheVRleHQrXCIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXIuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJzPy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tJZkZpbHRlclJlcXVpcmVkKGZpbHRlcik7XG4gICAgICBpZiAoZmlsdGVyLnZhbHVlICYmIChmaWx0ZXIuaGlkZGVuID09PSBmYWxzZSB8fCBmaWx0ZXIuaGlkZGVuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRXZlbnQoKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIHNldCBCeSBEZWZhdWx0IENhbGVuZGFyIFJhbmdlXG4gICAgLy90aGlzLnNldERlZmF1bHRDYWxlbmRhclJhbmdlKGZhbHNlKTtcbiAgICBjb25zdCBnaXJkQ2xlYXJGaWx0ZXJCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICdjbGVhckdyaWRGaWx0ZXJWYWx1ZXNCdXR0b24nXG4gICAgKTtcbiAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuKSB7XG4gICAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuLmNsYXNzTGlzdC5jb250YWlucygnaGlkZS1jbGVhci1maWx0ZXItYnV0dG9uJykpIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIHNwbGl0aW5nIGRhdGUgcmFuZ2UgdmFsdWUgYW5kIGFzc2lnbiB0byB2YWx1ZSBhbmQgdmFsdWVUd28gaW4gRGF0ZV9SYW5nZSBDb250cm9sXG4gICAgY29uc3QgZGF0ZVJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UpO1xuICAgIGRhdGVSYW5nZUZpbHRlcj8uZm9yRWFjaCgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICBpZiAoZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IGRhdGVSYW5nZS52YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWVUd28pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVR3byA9IGRhdGVSYW5nZS52YWx1ZVR3by50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSAoZGF0ZVJhbmdlLnZhbHVlICsgXCItXCIgKyBkYXRlUmFuZ2UudmFsdWVUd28pPy50b1N0cmluZygpPy5zcGxpdCgnLScpO1xuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGRhdGVSYW5nZSk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiAhZGF0ZVJhbmdlLnZhbHVlVHdvKSB7XG4gICAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGRhdGVSYW5nZS5mcm9tRmllbGQsIGRhdGVSYW5nZS52YWx1ZSwgJ2d0ZScpO1xuICAgICAgfSBlbHNlIGlmICghZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWVUd28sICdndGUnKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIEZpbHRyaW5nIE51bWVyaWMgUmFuZ2UgY29udHJvbHMgb24gZ2xvYmFsIGZpbHRlciBcbiAgICBjb25zdCBudW1lclJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLk5VTUVSSUNfUkFOR0UpO1xuICAgIG51bWVyUmFuZ2VGaWx0ZXIuZm9yRWFjaCgobnVtZXJpY1JhbmdlKSA9PiB7XG4gICAgICBpZiAobnVtZXJpY1JhbmdlKSB7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKG51bWVyaWNSYW5nZSk7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28obnVtZXJpY1JhbmdlKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBzZW5kUmVxdWVzdDpib29sZWFuID0gZmFsc2Upe1xuICAgIGlmKGdsb2JhbEZpbHRlci50b0ZpZWxkKXtcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci50b0ZpZWxkLCBnbG9iYWxGaWx0ZXIudmFsdWVUd28sJ2x0ZScsIGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hTYW1lRmllbGRzKGZpZWxkOiBzdHJpbmcsdmFsdWU6YW55LCBvcGVyYXRvcjpzdHJpbmcsIG51bWVyUmFuZ2VGaWx0ZXI6IGFueSA9IHt9KXtcbiAgICAgIGlmKGZpZWxkKXtcbiAgICAgICAgaWYobnVtZXJSYW5nZUZpbHRlciAmJiBudW1lclJhbmdlRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyAmJiB2YWx1ZSl7XG4gICAgICAgICAgY29uc3QgZGlnaXRJbmZvID0gbnVtZXJSYW5nZUZpbHRlcj8uZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm87XG4gICAgICAgICAgaWYoZGlnaXRJbmZvKXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoZGlnaXRJbmZvKTtcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpZWxkID09PSBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgICAgICB0aGlzLmdsb2JhbEZpbHRlcnNbaW5kZXhdID0ge2ZpZWxkOiBmaWVsZCwgbWF0Y2hNb2RlOidhbmQnLCBvcGVyYXRvcjogb3BlcmF0b3IsIHZhbHVlOiB2YWx1ZX07ICAgICAgIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5wdXNoKHtmaWVsZDogZmllbGQsIG1hdGNoTW9kZTonYW5kJywgb3BlcmF0b3I6IG9wZXJhdG9yLCB2YWx1ZTogdmFsdWV9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlciwgc2VuZFJlcXVlc3Q6Ym9vbGVhbiA9IGZhbHNlKSB7XG4gICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTlVNRVJJQ19SQU5HRSAmJiBnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkKXsgXG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLGdsb2JhbEZpbHRlci52YWx1ZSwnZ3RlJywgZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH1cbiAgICAgfVxuICBcbiAgfVxuICByZW1vdmVOdWxsTG9va3VwKGV2ZW50OiBhbnksIGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZighZXZlbnQudGFyZ2V0LnZhbHVlKXtcbiAgICAgIHRoaXMubG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgfVxuICBsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZiAoZ2xvYmFsRmlsdGVyKSB7XG5cbiAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA/IGdsb2JhbEZpbHRlci52YWx1ZT0nJzonJ1xuICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlVHdvP2dsb2JhbEZpbHRlci52YWx1ZVR3bz0nJzonJ1xuICAgICAvLyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ/Z2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0PScnOicnXG4gICAgICAvLyBjb2x1bW4uZGlzcGxheUZpZWxkP3Jvd1tjb2x1bW4uZGlzcGxheUZpZWxkXSA9ICcnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkKydfb2JqJ10/LnRleHQ/IHJvd1tjb2x1bW4uZmllbGQrJ19vYmonXS50ZXh0PScnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgIC8vIGNvbHVtbi5maWx0ZXJWYWx1ZSA9ICcnO1xuICAgICAgLy90aGlzLnNldEZpbHRlckZvY3VzT3V0KGNvbHVtbik7XG4gICAgfVxuICAgLy8gdGhpcy5icm93c2VyQ2xvc2VFdmVudCh0cnVlKTtcbiAgIC8vIGlmIChjb2x1bW4ub25DaGFuZ2UpIHtcbiAgICAvLyAgY29sdW1uLm9uQ2hhbmdlKHJvdyk7XG4gICAvLyB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXI6IGFueSwgY2xlYXJWYWx1ZTogYm9vbGVhbiA9ZmFsc2UpIHtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDApe1xuICAgICAgY29uc3QgZnJvbURhdGVWYWx1ZSA9IHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWVbMF0sXG4gICAgICAgIGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApO1xuICAgICAgY29uc3QgdG9EYXRlVmFsdWUgPSB0aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShcbiAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdLFxuICAgICAgICBnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKTtcbiAgICAgIGlmIChmcm9tRGF0ZVZhbHVlICYmIHRvRGF0ZVZhbHVlICYmIGdsb2JhbEZpbHRlci5mcm9tRmllbGQgJiYgZ2xvYmFsRmlsdGVyLnRvRmllbGQpIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCxmcm9tRGF0ZVZhbHVlLCdndGUnKTtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsdG9EYXRlVmFsdWUsJ2x0ZScpO1xuICAgICAgfVxuICAgIH1lbHNlIGlmKGNsZWFyVmFsdWUpe1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCwgbnVsbCwgJ2d0ZScpO1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsIG51bGwsICdsdGUnKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKSB7XG4gICAgaWYgKGdsb2JhbEZpbHRlciAmJiBnbG9iYWxGaWx0ZXIub25DbGljaykge1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uQ2xpY2soZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZ2xvYmFsRmlsdGVyICYmIGdsb2JhbEZpbHRlci5vbkZvY3VzT3V0KSB7XG4gICAgICBnbG9iYWxGaWx0ZXIub25Gb2N1c091dChnbG9iYWxGaWx0ZXIpO1xuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsRmlsdGVycyA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKHgpID0+IHguZmllbGQpO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ2xvYmFsRmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcikgPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSlcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChnbG9iYWxGaWx0ZXJzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIpe1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZS5lbWl0KGdsb2JhbEZpbHRlcik7XG4gIH1cblxuICBhcHBseUZpbHRlcnNFdmVudCgpe1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYmFsRmlsdGVycyA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKHgpID0+IHguZmllbGQpO1xuICAgICAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgICAgIGdsb2JhbEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQoZ2xvYmFsRmlsdGVycyk7XG4gICAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXBwbHkgc2VsZWN0ZWQgZmlsdGVyc1xuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKGZpbHRlckV2ZW50OiBib29sZWFuPSB0cnVlLCBnbG9iYWxGaWx0ZXI6YW55ID0ge30pIHtcbiAgICAgdGhpcy5ncmlkU2VydmljZS51c2VyU2VhcmNoZWQ9dHJ1ZTtcbiAgICAgaWYoZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZ2xvYmFsRmlsdGVyKTtcbiAgICB9IFxuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZpbHRlckV2ZW50O1xuICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcbiAgICBpZiAodGhpcy5zaG93RGlhbG9nKSB7XG4gICAgICB0aGlzLnJlZi5jbG9zZShnbG9iYWxGaWx0ZXJzKTtcbiAgICB9IGVsc2UgXG4gICAgaWYoIXRoaXMuY2hlY2tGaWx0ZXJWYWxpZGF0aW9uKCkpe1xuICAgICAgdGhpcy5jaGVja0ZpbHRlclZhbGlkYXRpb24odHJ1ZSk7XG4gICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQoZ2xvYmFsRmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IEJ5IERlZmF1bHQgQ2FsZW5kYXIgUmFuZ2UgXG4gIHNldERlZmF1bHRDYWxlbmRhclJhbmdlKGNoZWNrOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmdsb2JhbEZpbHRlcnMgJiYgdGhpcy5nbG9iYWxGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgaWYgKGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSAmJiBmaWx0ZXIuZGF5UmFuZ2UgJiYgZmlsdGVyLnZhbHVlICYmIGZpbHRlci52YWx1ZVR3bykge1xuICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmV4dChmaWx0ZXIsIGNoZWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93TmV4dChmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGNoZWNrOiBib29sZWFuID0gdHJ1ZSk6IERhdGVbXSB7XG4gICAgLy8gbGV0IG5leHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBuZXh0VmFsdWU6IERhdGVbXVxuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gbmV4dFZhbHVlID0gdGhpcy5zZXREYXlGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5NT05USDpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuWUVBUjpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldFllYXJGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICBuZXh0VmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgZmlsdGVyLnZhbHVlPSBuZXh0VmFsdWVcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpXG4gICAgICAgIC8vZmlsdGVyLnZhbHVlVHdvPW5leHRWYWx1ZVsxXVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGNoZWNrO1xuICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChnbG9iYWxGaWx0ZXJzKTtcbiAgIC8vIGxldCB0ZXN0PW5leHRWYWx1ZVxuICAgIC8vZmlsdGVyLnZhbHVlPW5leHRWYWx1ZVxuICAgXG4gICAgcmV0dXJuIG5leHRWYWx1ZTtcbiAgfVxuXG4gIHNob3dQcmV2aW91cyhmaWx0ZXI6IElHbG9iYWxGaWx0ZXIpOiBEYXRlW10ge1xuICAgIGxldCBwcmV2aW91c1ZhbHVlOiBEYXRlW107XG4gICAgbGV0IGRheVJhbmdlOiBFRGF5UmFuZ2UgPSBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgID8gZmlsdGVyLmRheVJhbmdlXG4gICAgICA6IEVEYXlSYW5nZS5XRUVLO1xuICAgIHN3aXRjaCAoZGF5UmFuZ2UpIHtcbiAgICAgIGNhc2UgRURheVJhbmdlLkRBWTpcbiAgICAgICAvLyBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXREYXlGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuTU9OVEg6XG4gICAgIC8vICAgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0TW9udGhGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuWUVBUjpcbiAgICAgIC8vICBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXRZZWFyRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIHdlZWtcbiAgICAgICAgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0V2Vla0ZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZpbHRlci52YWx1ZT1wcmV2aW91c1ZhbHVlXG4gICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpXG4gICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gdHJ1ZTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgY29uc3QgZ2xvYmFsRmlsdGVycyA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKHgpID0+IHguZmllbGQpO1xuICAgIGNvbnN0IGluZGV4ID0gZ2xvYmFsRmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcik9PiBmaWx0ZXIuZmllbGQgJiYgZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFIClcbiAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgIGdsb2JhbEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KGdsb2JhbEZpbHRlcnMpO1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcjogSUdsb2JhbEZpbHRlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIChmaWx0ZXIudmFsdWUgPVxuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuc3RhcnREYXRlLFxuICAgICAgICBmaWx0ZXIuZm9ybWF0ID8gZmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKSArXG4gICAgICAnfCcgK1xuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuZW5kRGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkpO1xuICB9XG5cbiAgc2V0RGF0ZVZhbHVlKGZpbHRlcjogYW55KSB7XG4gICAgbGV0IHZhbHVlOiBEYXRlO1xuICAgIGlmIChmaWx0ZXIudmFsdWUpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoZmlsdGVyLnZhbHVlLnNwbGl0KCd8JylbMF0pO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLnNldE1vbnRoKHZhbHVlLmdldE1vbnRoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF5RmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSAtIDFcbiAgICAgICAgICApXG4gICAgICAgIDogY3VycmVudERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSArIDFcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRZZWFyRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZlllYXIgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpIC0gMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSwgMTEsIDMxKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0TW9udGhGaWx0ZXIoZmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBpc05leHQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgdmFyIGZpcnN0RGF0ZU9mTW9udGggPSBuZXcgRGF0ZShcbiAgICAgIGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBjdXJyZW50RGF0ZS5nZXRNb250aCgpLFxuICAgICAgMVxuICAgICk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpIC0gMSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogZmlyc3REYXRlT2ZNb250aDtcbiAgICB9XG5cbiAgICB0aGlzLmVuZERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRXZWVrRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogRGF0ZVtde1xuICAgIGxldCBmaWx0ZXJWYWx1ZTpEYXRlPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSk/IGZpbHRlci52YWx1ZVswXTpmaWx0ZXIudmFsdWVcbiAgICBsZXQgY3VycmVudERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJWYWx1ZT8gZmlsdGVyVmFsdWU6bmV3IERhdGUoKSkvL3RoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoY3VycmVudERhdGUuc2V0RGF0ZShmaWx0ZXJWYWx1ZSA/IGN1cnJlbnREYXRlLmdldERhdGUoKSA6IGN1cnJlbnREYXRlLmdldERhdGUoKSAtIGN1cnJlbnREYXRlLmdldERheSgpICsgMSkpO1xuICAgIGxldCB3ZWVrU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGxldCB2YWx1ZTpEYXRlXG4gICAgICAgIGlmIChpc05leHQpIHtcbiAgICAgIHZhbHVlID0gZmlsdGVyVmFsdWVcbiAgICAgICBmaWx0ZXIudmFsdWVcbiAgICAgICAgPyAgdmFsdWUuc2V0RGF0ZShmaWx0ZXJWYWx1ZS5nZXREYXRlKCkrNykgICAvL25ldyBEYXRlKG5ldyBEYXRlKGZpbHRlclZhbHVlKS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcylcbiAgICAgICAgOiB2YWx1ZT0gbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlci52YWx1ZVxuICAgICAgICA/bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgICAgIDogbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgfVxuICAgIC8vdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0VGltZSgpICsgNiAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIC8vIGxldCB2YWx1ZTpEYXRlPWZpbHRlclZhbHVlP1xuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSArIHdlZWtTZWNvbmRzKTpuZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcyk6XG4gICAgLy8gICBpc05leHQ/bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKTpuZXcgRGF0ZShmaXJzdERheS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcylcblxuICAgIGxldCB2YWx1ZVR3bzpEYXRlPW5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTsgXG4gICAvLyBjb25zb2xlLmxvZygndGVzdCcsdmFsdWUsJ3Rlc3QyJyx2YWx1ZVR3bylcbiAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZVR3b11cbiAgIC8vcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICAgIC8qKlxuICAgKiBvcGVuIGRpYWxvZyBvbiBsb29rdXBDb250cm9sIGZpZWxkXG4gICAqL1xuICAgICBzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXJzOiBJR2xvYmFsRmlsdGVyKSB7ICAgXG5cbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0TG9va1VwRmlsdGVyKGdsb2JhbEZpbHRlcnMsIHRoaXMuZGlhbG9nU2VydmljZSwgdHJ1ZSk7XG4gICAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgZmlsdGVyIHZhbHVlc1xuICAgKi9cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5mb3JFYWNoKChpdGVtKT0+e1xuICAgICAgaWYoaXRlbS50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTE9PS1VQX0lOUFVUICYmIGl0ZW0/LnZhbHVlVHdvPy50ZXh0KXtcbiAgICAgICAgaXRlbS52YWx1ZVR3byA9IG51bGw7XG4gICAgICB9XG4gICAgICBpdGVtLnZhbHVlID0gbnVsbDtcbiAgICB9KVxuICAgIGNvbnN0IGNsZWFyR3JpZEZpbHRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGVhckdyaWRGaWx0ZXJWYWx1ZXNCdXR0b24nKVxuICAgIGlmKGNsZWFyR3JpZEZpbHRlcil7XG4gICAgICBjbGVhckdyaWRGaWx0ZXIuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAgLyoqXG4gICAqIENsZWFyIHZhbHVlcyBvZiBEYXRlIFJhbmdlIEZpbHRlclxuICAgKi9cbiAgICBjbGVhckRhdGVSYW5nZVZhbHVlKGZpbHRlcjogYW55KXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZmlsdGVyLCB0cnVlKVxuICAgIH1cblxuICAvKipcbiAgICogQ2xvc2UgZGlhbG9nIHdpdGhvdXQgYXBwbHlpbmcgZmlsdGVyc1xuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuY2xlYXJGaWx0ZXJzKCk7XG4gICAgdGhpcy5yZWYuY2xvc2UoKTtcbiAgfVxuICByYW5nZURhdGVjbG9zZShlbGVtZW50KSB7ICBcbiAgICB0aGlzLmRhdGVQaWNrZXIuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuZGF0ZXBpY2tlckNsaWNrID0gdHJ1ZTtcbiAgICAvLyBjb25zdCBpZDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0KTtcbiAgICAvLyBjb25zb2xlLmxvZyhpZCwgIGVsZW1lbnQuZWwubmF0aXZlRWxlbWVudC5maXJzdENoaWxkLmZpcnN0Q2hpbGQpLy9lbGVtZW50LCBpZCAsXG4gICAgLy8gaWQuZm9jdXMoKTtcbiAgICBlbGVtZW50LmVsLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZC5maXJzdENoaWxkLmZvY3VzKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kYXRlUGlja2VyLmRhdGVwaWNrZXJDbGljayA9IHRydWU7XG5cbiAgfVxuXG4gIGZpbHRlcklucHV0KCkge1xuICAgIHRoaXMuc2hvd0lucHV0ID0gIXRoaXMuc2hvd0lucHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZWQgdGhlIGNhbGVuZGFyIGlucHV0XG4gICAqL1xuICBzZWxlY3REYXRlKGdsb2JhbEZpbHRlcjogYW55LCBmb2N1c2VkOiBib29sZWFuID0gZmFsc2UsIGV2ZW50Pzphbnkpe1xuICAgIGlmKGdsb2JhbEZpbHRlci52YWx1ZT8ubGVuZ3RoID4gMSAmJiBnbG9iYWxGaWx0ZXIudmFsdWVbMV0gIT09IG51bGwpe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgICAgaWYoZm9jdXNlZCA9PXRydWUpe1xuICAgICAgdGhpcy5yYW5nZURhdGVjbG9zZShldmVudCk7IFxuICAgICAgfVxuICAgIH1cbiAgICBpZihmb2N1c2VkKXtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5maWVsZCk/LmZvY3VzKCk7XG4gICAgfVxuICB9XG4gIHRhYkZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuJytnbG9iYWxGaWx0ZXIuZmllbGRcbiAgICApO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZS5jbGljaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWNvbXBvbmVudC13cmFwcGVyLWRpdlwiPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5oaWRkZW4gPyAnZ2xvYmFsRmlsdGVySGlkZGVuJyA6IGdsb2JhbEZpbHRlci5jb2x1bW4gPyAnY29sLScgKyBnbG9iYWxGaWx0ZXIuY29sdW1uIDogJ2NvbC0zJ1wiXG4gICAgKm5nRm9yPVwibGV0IGdsb2JhbEZpbHRlciBvZiBnbG9iYWxGaWx0ZXJzXCJcbiAgPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cImdsb2JhbEZpbHRlci50eXBlXCI+XG4gICAgICA8IS0tIENhbGVuZGFyIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ6ICdmbGV4LWdyb3ctMSBncm93LTEgJyArIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QtRGF0ZSdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgUmFuZ2UgLS0+XG4gICAgICA8IS0tIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUl9SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJQcmV2aW91cyB7e1xuICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgICB9fSA8PFwiIFxuICAgICAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8IS0tIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PXRydWUgfHwgZ2xvYmFsRmlsdGVyLnByZWZpeD09PXVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIHt7ICBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0ID8gZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA6ICcnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0ge3tcbiAgICAgICAgICAgICAgICBzdGFydERhdGVcbiAgICAgICAgICAgICAgICAgIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IChnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5JylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdG9cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBlbmREYXRlXG4gICAgICAgICAgICAgICAgICB8IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eScpXG4gICAgICAgICAgICAgIH19IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PWZhbHNlXCI+XG4gICAgICAgICAgICAgICAge3sgZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA/IGdsb2JhbEZpbHRlci5sYWJlbFRleHQgOiAnJ319XG4gICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93TmV4dChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJOZXh0IHt7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICAgIH19ID4+XCJcbiAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgICAgPCEtLSA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPiAtLT5cblxuICAgICAgPCEtLSBDaGVja2JveCBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuQ0hFQ0tCT1hcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JzogJ2ZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1wiXG4gICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gU3BhY2VyIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNQQUNFUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgID8gJ2NvbC0nICsgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRHJvcGRvd24gQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRST1BET1dOXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwidGFiRm9jdXNFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhIHx8IFtdXCJcbiAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdsb2JhbEZpbHRlci5vcHRpb25MYWJlbFwiXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJnbG9iYWxGaWx0ZXIub3B0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICBbZmlsdGVyXT1cImdsb2JhbEZpbHRlci5hbGxvd1NlYXJjaFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBmaWx0ZXJNYXRjaE1vZGU9XCJzdGFydHNXaXRoXCJcbiAgICAgICAgICAgID48L3AtZHJvcGRvd24+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gSW5wdXQgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLklOUFVUXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDwhLS0gTnVtZXJpY0lucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyIHBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIERhdGUgUmFuZ2UgQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRBVEVfUkFOR0VcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJhbmdlLWNhbGVuZGFyIGdhcC0xXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gIGNhbGVuZGFyLXByZXZpb3VzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCI8PFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFwiUHJldmlvdXMge3tcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICB9fSA8PFwiIC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgXG4gICAgICAgICAgICAjcmFuZ2VDYWxlbmRhclxuICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwidHJ1ZVwiXG5cbiAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgOiAnZmxleC1ncm93LTEgZ3Jvdy0xICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIiBcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiIFxuICAgICAgICAgICAgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSwgcmFuZ2VDYWxlbmRhcilcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQ2xpY2tPdXRzaWRlKT1cInNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNsZWFyQ2xpY2spPVwiY2xlYXJEYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycyh0cnVlLCBnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZGF5UmFuZ2VcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gY2FsZW5kYXItbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd05leHQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBsYWJlbD1cIj4+XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSBOZXh0IHt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICB9fSA+PlwiIC0tPlxuICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIHRvZGF5QnV0dG9uU3R5bGVDbGFzcz1cImhpZGRlblwiXG4gICAgICAgICAgICBjbGVhckJ1dHRvblN0eWxlQ2xhc3M9XCJtbC1hdXRvXCIgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE51bWVyaWMgUmFuZ2UgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5OVU1FUklDX1JBTkdFXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBtci0yXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgIGdyb3ctMSBpbnB1dC1udW1iZXInXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG8tbnVtZXJpYyBtci0yXCI+VG88L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVUd29cIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgbXItMiBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZVR3byhnbG9iYWxGaWx0ZXIsdHJ1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE11bHRpU2VsZWN0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTVVMVElTRUxFQ1RcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cblxuICAgICAgICAgPCEtLSBTZWxlY3QgQnV0dG9uIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuU0VMRUNUQlVUVE9OXCJcblxuICAgICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJnbG9iYWxGaWx0ZXIuZGF0YVwiXG4gICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlTdHlsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICBcbiAgICAgICAgPlxuICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU+XG4gICAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxuICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cblxuICAgICAgPCEtLSBMb29rdXAgQ29udHJvbCBGaWVsZCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5MT09LVVBfSU5QVVRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1pY29uLXdyYXBwZXIgbG9va3VwLWZpbHRlci13cmFwcGVyIGdsb2JhbEZpbHRlcnNcIj4gXG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXI/LnZhbHVlVHdvPy50ZXh0ID8gZ2xvYmFsRmlsdGVyLnZhbHVlVHdvLnRleHQgOiBnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwic2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJyZW1vdmVOdWxsTG9va3VwKCRldmVudCwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCBsb29rdXAtaW5wdXQtaWNvbiBnbG9iYWwtZmlsdGVyXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXJlY3Qtd3JhcHBlci1jbG9zZS1pY29uLWxvb2t1cFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcik7b25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSA8c3Bhbj5cbiAgPGkgIGljb249XCJwaSBwaS10aW1lc1wiPjwvaT5cbjwvc3Bhbj4gLS0+XG5cbjwhLS0gQXBwbHkgYnV0dG9uIC0tPlxuXG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbnR5cGU9XCJidXR0b25cIlxuaWNvbj1cInBpIHBpLXNlYXJjaFwiXG5baWRdPVwic2VhcmNoYnRuSWRcIlxuKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcbmNsYXNzPVwiZ2xvYmFsLXNlYXJjaCBhbGlnbi1nbG9iYWxGaWx0ZXItYnRuIGdsb2JhbC1idG4gaGlkZS1maWx0ZXItYnV0dG9uXCJcbj48L2J1dHRvbj5cblxuPCEtLSBDbG9zZSBidXR0b24gLS0+XG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbmlkPVwiY2xlYXJHbG9iYWxGaWx0ZXJCdG5cIlxudHlwZT1cImJ1dHRvblwiXG5pY29uPVwicGkgcGktcmVwbGF5XCJcbihjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiXG5jbGFzcz1cImhpZGUtZmlsdGVyLWJ1dHRvblwiXG4+PC9idXR0b24+XG4iXX0=
|