tango-app-ui-shared 3.7.3-dev20 → 3.7.3-dev21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +1 -14
- package/esm2022/lib/routes/routing.mjs +6 -6
- package/fesm2022/tango-app-ui-shared.mjs +5 -18
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/esm2022/lib/routes/route-wraper-modules/eyetest-wrapper.module.mjs +0 -18
- package/fesm2022/tango-app-ui-shared-eyetest-wrapper.module-CfO814JB.mjs +0 -21
- package/fesm2022/tango-app-ui-shared-eyetest-wrapper.module-CfO814JB.mjs.map +0 -1
- package/lib/routes/route-wraper-modules/eyetest-wrapper.module.d.ts +0 -7
|
@@ -1116,25 +1116,16 @@ export class TrafficHeaderComponent {
|
|
|
1116
1116
|
next: (res) => {
|
|
1117
1117
|
if (res && res.code === 200) {
|
|
1118
1118
|
this.downtimeData = res.data.storesData || [];
|
|
1119
|
-
// ✅ 1) get storeIds that match downtime filter
|
|
1120
1119
|
const downtimeStoreIds = this.downtimeData.map((d) => d.storeId);
|
|
1121
|
-
// ✅ 2) update stores.checked based on downtime result
|
|
1122
|
-
// 1) mark stores as checked based on downtime results
|
|
1123
1120
|
this.stores.forEach((store) => {
|
|
1124
1121
|
store.checked = downtimeStoreIds.includes(store.storeId);
|
|
1125
1122
|
});
|
|
1126
|
-
console.log("Stores after downtime filter:", this.stores);
|
|
1127
|
-
// 2) filteredStores → only checked stores
|
|
1128
1123
|
this.filteredStores = this.stores.filter((s) => true === s.checked);
|
|
1129
|
-
console.log("Filtered stores after downtime filter:", this.filteredStores);
|
|
1130
|
-
// 3) selectedFilters.stores → all stores, preserve checked flag
|
|
1131
1124
|
this.selectedFilters.stores = this.stores.map((store) => ({
|
|
1132
1125
|
storeId: store.storeId,
|
|
1133
1126
|
storeName: store.storeName,
|
|
1134
1127
|
checked: store.checked
|
|
1135
1128
|
}));
|
|
1136
|
-
console.log("Selected filters after downtime filter:", this.selectedFilters.stores);
|
|
1137
|
-
// optional: save to localStorage if you want
|
|
1138
1129
|
localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
|
|
1139
1130
|
}
|
|
1140
1131
|
else {
|
|
@@ -1148,15 +1139,11 @@ export class TrafficHeaderComponent {
|
|
|
1148
1139
|
}
|
|
1149
1140
|
restoreDowntimeFromStorage() {
|
|
1150
1141
|
const storedDowntime = this.selectedFilters?.downtime || [];
|
|
1151
|
-
console.log("Restoring downtime from storage:", storedDowntime);
|
|
1152
|
-
// mark downtimeOptions as checked based on stored values
|
|
1153
1142
|
this.downtimeOptions = this.downtimeOptions.map(opt => ({
|
|
1154
1143
|
...opt,
|
|
1155
1144
|
checked: storedDowntime.includes(opt.value)
|
|
1156
1145
|
}));
|
|
1157
|
-
// sync selectedDowntimeValues
|
|
1158
1146
|
this.selectedDowntimeValues = [...storedDowntime];
|
|
1159
|
-
// if you want to immediately load downtime data:
|
|
1160
1147
|
if (this.selectedDowntimeValues.length) {
|
|
1161
1148
|
this.downtimeApi();
|
|
1162
1149
|
}
|
|
@@ -1270,4 +1257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1270
1257
|
type: HostListener,
|
|
1271
1258
|
args: ["document:click", ["$event"]]
|
|
1272
1259
|
}] } });
|
|
1273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sc0JBQXNCO0lBNEN2QjtJQUE4QjtJQUMvQjtJQUNDO0lBN0NWLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRTtRQUNoQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRixpQkFBaUIsR0FBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztRQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRSxDQUFDO0lBQ3pDLGVB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bEMsU0FBUzsrQkFDRSxvQkFBb0I7c0tBc0Q5QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdzRCMUMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uSW5pdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdHJhZmZpYy1oZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtaGVhZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90cmFmZmljLWhlYWRlci5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhZmZpY0hlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBpc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgIGNvbnN0IGlzVmFsaWREYXRlID0gbSA+IHRoaXMuZGF5anMoKTtcclxuICAgIHJldHVybiBpc1ZhbGlkRGF0ZSA/IFwiaW52YWxpZC1kYXRlXCIgOiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0geyBzdGFydERhdGU6IGRheWpzKCkuc3VidHJhY3QoMzAsICdkYXlzJyksXHJcbiAgICBlbmREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSx9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuICAgIGdyb3VwOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXSxcclxuICAgIGNvdW50cnk6IFtdLFxyXG4gICAgc3RhdHVzOltdLFxyXG4gICAgZG93bnRpbWU6IFtdXHJcbiAgfTtcclxuICBPcGVuZHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyAnbG9jYXRpb24nIG9yICdncm91cCdcclxuICBzZWFyY2hMb2NhdGlvblRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgc2VhcmNoR3JvdXBUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGxvY2F0aW9uczogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZExvY2F0aW9uczogYW55ID0gW107XHJcbiAgZ3JvdXBzRGF0YTogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZEdyb3VwczogYW55ID0gW107XHJcbiAgZmlsdGVyZWRTdG9yZXM6IGFueSA9IFtdO1xyXG4gIHN0b3JlczphbnlbXSA9IFtdXHJcbiAgc2VhcmNoU3RvcmVUZXh0OnN0cmluZyA9ICcnO1xyXG4gIGNsaWVudExpc3Q6YW55ID0gW11cclxuICBzZWxlY3RlZENsaWVudDphbnlcclxuICBsb2NhdGlvbkxhYmVsOiBhbnlbXT1bXTtcclxuICBncm91cExhYmVsOiBhbnlbXT1bXTtcclxuICB1c2VyczogYW55O1xyXG4gIHVybDogYW55O1xyXG4gIGZpbHRlcmVkQ291bnRyaWVzOiBhbnkgPSBbXTtcclxuICBjb3VudHJ5TGFiZWw6IGFueVtdPVtdO1xyXG4gIHNlYXJjaENvdW50cnlUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvdW50cmllczogYW55W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2sgKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZighdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bjInKSkge1xyXG4gICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZURyb3Bkb3duMSgpe1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNldFJhbmdlc0Jhc2VkT25Sb3V0ZSgpO1xyXG5cclxuICAgIC8vIExpc3RlbiBmb3Igcm91dGUgY2hhbmdlcyB0byB1cGRhdGUgcmFuZ2VzXHJcbiAgICAvLyB0aGlzLnJvdXRlcj8uZXZlbnRzPy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgIC8vICAgICB0aGlzLnNldFJhbmdlc0Jhc2VkT25Sb3V0ZSgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KFwiP1wiKVswXS5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIGFzIHN0cmluZyk7XHJcbiAgICB0aGlzLnVzZXJzID0gdXNlcjtcclxuICAgIHRoaXMuZ3M/Lm1hbmFnZVJlZnJlc2hUcmlnZ2VyPy5zdWJzY3JpYmUoKGUpID0+IHsgICAgICBcclxuICAgICAgaWYgKGUpIHtcclxuICAgICAgICBpZiAodXNlci51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xpZW50KCk7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgY29uc3Qgc3RvcmVkRmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIik7XHJcbiAgICAgICAgICBpZiAoc3RvcmVkRmlsdGVycykge1xyXG4gICAgICAgICAgY29uc3QgaGVhZGVyRmlsdGVycyA9IEpTT04ucGFyc2Uoc3RvcmVkRmlsdGVycyk7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gaGVhZGVyRmlsdGVycz8uc3RvcmVzLm1hcCgoc3RvcmU6YW55KSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5zdG9yZSxcclxuICAgICAgICAgICAgY2hlY2tlZDogc3RvcmUuY2hlY2tlZFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3RvcmVEb3dudGltZUZyb21TdG9yYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuIFxyXG4gICAgLy8gRmV0Y2ggY2xpZW50IGRhdGEgaWYgdGhlIHVzZXIgaXMgb2YgdHlwZSAndGFuZ28nXHJcbiAgICBpZiAodXNlci51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gICAgICB0aGlzLmdldENsaWVudCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgICBcclxuICAgICAgY29uc3QgY2xpZW50RmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpZW50LWRldGFpbHNcIik7XHJcbiAgICAgIGlmIChjbGllbnRGaWx0ZXJzKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyY2xpZW50RmlsdGVycyA9IEpTT04ucGFyc2UoY2xpZW50RmlsdGVycyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDbGllbnQgPSB7XHJcbiAgICAgIHRyYWZmaWNEYXRlUmFuZ2UgOiBoZWFkZXJjbGllbnRGaWx0ZXJzLnRyYWZmaWNEYXRlUmFuZ2VcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgLy8gTG9hZCBmaWx0ZXJzIGZyb20gbG9jYWxTdG9yYWdlIGlmIHRoZXkgZXhpc3RcclxuICAgIGNvbnN0IHN0b3JlZEZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpO1xyXG4gICAgaWYgKHN0b3JlZEZpbHRlcnMpIHtcclxuICAgICAgY29uc3QgaGVhZGVyRmlsdGVycyA9IEpTT04ucGFyc2Uoc3RvcmVkRmlsdGVycyk7XHJcbiAgXHJcbiAgICAgIC8vIEluaXRpYWxpemUgc2VsZWN0ZWRGaWx0ZXJzIHdpdGggZGVmYXVsdHMgb3IgZXhpc3RpbmcgdmFsdWVzXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0ge1xyXG4gICAgICAgIGNsaWVudDogaGVhZGVyRmlsdGVycy5jbGllbnQgfHwgdGhpcy51c2Vycy5jbGllbnQsXHJcbiAgICAgICAgY2xpZW50TmFtZTogaGVhZGVyRmlsdGVycy5jbGllbnROYW1lIHx8ICcnLFxyXG4gICAgICAgIGNsaWVudHM6IGhlYWRlckZpbHRlcnMuY2xpZW50cyB8fCBbXSxcclxuICAgICAgICBzdG9yZTogaGVhZGVyRmlsdGVycy5zdG9yZSB8fCBudWxsLFxyXG4gICAgICAgIGRhdGU6IGhlYWRlckZpbHRlcnMuZGF0ZSB8fCB7fSxcclxuICAgICAgICBzdG9yZXM6IGhlYWRlckZpbHRlcnMuc3RvcmVzIHx8IFtdLFxyXG4gICAgICAgIGdyb3VwOiBoZWFkZXJGaWx0ZXJzLmdyb3VwIHx8IFtdLFxyXG4gICAgICAgIGxvY2F0aW9uOiBoZWFkZXJGaWx0ZXJzLmxvY2F0aW9uIHx8IFtdLFxyXG4gICAgICAgIGNvdW50cnk6IGhlYWRlckZpbHRlcnMuY291bnRyeSB8fCBbXSxcclxuICAgICAgICBzdGF0dXM6IGhlYWRlckZpbHRlcnMuc3RhdHVzIHx8IFtcImFjdGl2ZVwiXSxcclxuICAgICAgICBkb3dudGltZTogaGVhZGVyRmlsdGVycy5kb3dudGltZSB8fCBbXVxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBTeW5jIGZpbHRlcmVkIGRhdGEgd2l0aCBzdG9yZWQgc2VsZWN0aW9uc1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gdGhpcy5zeW5jV2l0aExvY2FsU3RvcmFnZShoZWFkZXJGaWx0ZXJzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5zeW5jV2l0aExvY2FsU3RvcmFnZShoZWFkZXJGaWx0ZXJzLmxvY2F0aW9uKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IHRoaXMuc3luY1dpdGhMb2NhbFN0b3JhZ2UoaGVhZGVyRmlsdGVycy5ncm91cCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRTdG9yZXMgPSB0aGlzLnN5bmNXaXRoTG9jYWxTdG9yYWdlKGhlYWRlckZpbHRlcnMuc3RvcmVzKTtcclxuICAgICAgdGhpcy5kb3dudGltZURhdGEgPSB0aGlzLnN5bmNXaXRoTG9jYWxTdG9yYWdlKGhlYWRlckZpbHRlcnMuZG93bnRpbWUpO1xyXG4gICAgIHRoaXMucmVzdG9yZURvd250aW1lRnJvbVN0b3JhZ2UoKTtcclxuICAgICAgLy8gRm9ybWF0IGRhdGUgcmFuZ2UgaWYgaXQgZXhpc3RzXHJcbiAgICAgIGlmIChoZWFkZXJGaWx0ZXJzLmRhdGUpIHtcclxuICAgIFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLnN0YXJ0RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKGhlYWRlckZpbHRlcnMuZGF0ZS5lbmREYXRlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgLy8gY29uc29sZS5sb2coXCIzXCIpXHJcbiAgICAgIC8vIEVtaXQgZGF0YSB2aWEgc2VydmljZSBhbmQgdXBkYXRlIGxvY2FsU3RvcmFnZVxyXG50aGlzLmVtaXRBbmRTdG9yZUZpbHRlcnMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgZW1wdHkgc3RhdGVzIGlmIG5vIGhlYWRlciBmaWx0ZXJzIGFyZSBwcmVzZW50IGluIGxvY2FsU3RvcmFnZVxyXG4gICAgICB0aGlzLnJlc2V0RmlsdGVycygpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIjJcIilcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duKCdzdG9yZXMnKTsgIFxyXG4gIH1cclxuICBwcml2YXRlIHN5bmNXaXRoTG9jYWxTdG9yYWdlKGl0ZW1zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtc1xyXG4gICAgICA/IGl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICA6IFtdO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGVtaXRBbmRTdG9yZUZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIxXCIpXHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHNlbGVjdGVkRmlsdGVycyBhbmQgYWxsIHJlbGF0ZWQgYXJyYXlzIHRvIGVtcHR5IHN0YXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMgPSB7XHJcbiAgICAgIGNsaWVudDogbnVsbCxcclxuICAgICAgY2xpZW50TmFtZTogJycsXHJcbiAgICAgIGNsaWVudHM6IFtdLFxyXG4gICAgICBzdG9yZTogbnVsbCxcclxuICAgICAgZGF0ZToge30sXHJcbiAgICAgIHN0b3JlczogW10sXHJcbiAgICAgIGdyb3VwOiBbXSxcclxuICAgICAgbG9jYXRpb246IFtdLFxyXG4gICAgICBjb3VudHJ5OiBbXSxcclxuICAgICAgc3RhdHVzOltdLFxyXG4gICAgICBkb3dudGltZTogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWx0ZXJlZExvY2F0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5kb3dudGltZURhdGEgPSBbXTtcclxuICB9XHJcbmdldENsaWVudCgpe1xyXG4gIHRoaXMuYXV0aC5nZXRDbGllbnRzKCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRMaXN0ID0gZS5kYXRhLnJlc3VsdDtcclxuICAgICAgICBjb25zdCBoZWFkZXJGaWx0ZXJzOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoZWFkZXJGaWx0ZXJzLmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRMaXN0LmZpbmQoKG9iajogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvYmouY2xpZW50SWQgPT09IGhlYWRlckZpbHRlcnMuY2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IG9iajtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBjb25zdCBzdGFydERhdGUgPSB0aGlzLmRheWpzKGhlYWRlckZpbHRlcnMuZGF0ZS5zdGFydERhdGUpO1xyXG4gICAgICAgICAgLy8gY29uc3QgZW5kRGF0ZSA9IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgICAgLy8gY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IGVuZERhdGUuZGlmZihzdGFydERhdGUsICdkYXlzJyk7XHJcbiAgICAgICAgICAvLyBpZiAoZGlmZmVyZW5jZUluRGF5cyA+PSA5MCAmJiB0aGlzLnNlbGVjdGVkQ2xpZW50Py50cmFmZmljRGF0ZVJhbmdlID09PSA5MCkge1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgLy8gICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyhoZWFkZXJGaWx0ZXJzLmRhdGUuc3RhcnREYXRlLCBcIllZWVktTU0tRERcIikuc3VidHJhY3QoLTkwLCAnZGF5cycpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyhoZWFkZXJGaWx0ZXJzLmRhdGUuZW5kRGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgIH07XHJcbiAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgLy8gICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgLy8gICB9O1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID0gaGVhZGVyRmlsdGVycy5jbGllbnQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnROYW1lID0gaGVhZGVyRmlsdGVycy5jbGllbnROYW1lO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50cyA9IGhlYWRlckZpbHRlcnMuY2xpZW50cztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlID0gaGVhZGVyRmlsdGVycy5zdG9yZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRhdGUgPSBoZWFkZXJGaWx0ZXJzLmRhdGU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlcztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gaGVhZGVyRmlsdGVycy5ncm91cDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gaGVhZGVyRmlsdGVycy5sb2NhdGlvbjtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSBoZWFkZXJGaWx0ZXJzLmNvdW50cnk7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gaGVhZGVyRmlsdGVycy5zdGF0dXMgfHwgW1wiYWN0aXZlXCJdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPSBoZWFkZXJGaWx0ZXJzLmRvd250aW1lO1xyXG4gICAgICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMlwiKVxyXG4gICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgIHRoaXMucmVzdG9yZURvd250aW1lRnJvbVN0b3JhZ2UoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gdGhpcy5jbGllbnRMaXN0WzBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA9ICB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudElkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWVcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50cyA9IGhlYWRlckZpbHRlcnMuY2xpZW50cztcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmUgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0gaGVhZGVyRmlsdGVycy5kYXRlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlcztcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZ3JvdXAgPSBoZWFkZXJGaWx0ZXJzLmdyb3VwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbiA9IGhlYWRlckZpbHRlcnMubG9jYXRpb247XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSBoZWFkZXJGaWx0ZXJzLmNvdW50cnk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgPSBoZWFkZXJGaWx0ZXJzLnN0YXR1cyB8fCBbXCJhY3RpdmVcIl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRvd250aW1lID0gaGVhZGVyRmlsdGVycy5kb3dudGltZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwiaGVhZGVyLWZpbHRlcnNcIixcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCIzXCIpXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgICB0aGlzLnJlc3RvcmVEb3dudGltZUZyb21TdG9yYWdlKCk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IHRoaXMuY2xpZW50TGlzdFswXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID0gIHRoaXMuc2VsZWN0ZWRDbGllbnQuY2xpZW50SWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWVcclxuICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgXCJoZWFkZXItZmlsdGVyc1wiLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSBcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCI0XCIpXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIHRoaXMuZ2V0VXNlckluZm8odGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50KTtcclxuXHJcbiAgICB9LFxyXG4gIH0pO1xyXG59XHJcbmdldFVzZXJJbmZvKGNsaWVudDphbnkpe1xyXG4gIGxldCBvYmogPXtcclxuICAgICAgY2xpZW50SWQ6IGNsaWVudCA/IGNsaWVudCA6JydcclxuICB9XHJcbiAgaWYoY2xpZW50KXtcclxuICAgIHRoaXMuYXV0aC5nZXRIZWFkZXJVc2VycyhvYmopLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICBcInVzZXJzRW1haWwtaW5mb1wiLFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZT8uZGF0YT8udXNlckVtYWlsRGF0YSB8fCBbXSlcclxuICAgICAgICApO1xyXG4gICAgICB9IFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxub25DbGllbnRTZWxlY3QoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY2xpZW50XHJcbiAgdGhpcy5zZWxlY3RlZENsaWVudCA9IGV2ZW50O1xyXG4gIC8vIENsZWFyIHByZXZpb3VzIGZpbHRlcmVkIGRhdGEgYW5kIHNlbGVjdGlvbnNcclxuICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gW107XHJcbiAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSBbXTtcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gW107XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRvd250aW1lID0gW107XHJcbnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cyA9IFsnYWN0aXZlJ107XHJcblxyXG4gIC8vIEZldGNoIGhlYWRlciBmaWx0ZXJzIGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgY29uc3QgaGVhZGVyRmlsdGVyczogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIik7XHJcbiAgXHJcbiAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBmaWx0ZXJzIHdpdGggdGhlIG5ldyBjbGllbnRcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudElkO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWU7XHJcbiAgXHJcbiAgLy8gUmVtb3ZlIG9sZCBzdG9yZSwgZ3JvdXAsIGFuZCBsb2NhdGlvbiBkYXRhIGZyb20gdGhlIGhlYWRlciBmaWx0ZXJzXHJcbiAgZGVsZXRlIGhlYWRlckZpbHRlcnMuc3RvcmVzO1xyXG4gIGRlbGV0ZSBoZWFkZXJGaWx0ZXJzLmdyb3VwcztcclxuICBkZWxldGUgaGVhZGVyRmlsdGVycy5sb2NhdGlvbjtcclxuICBkZWxldGUgaGVhZGVyRmlsdGVycy5jb3VudHJ5O1xyXG4gIGRlbGV0ZSBoZWFkZXJGaWx0ZXJzLmRvd250aW1lO1xyXG4gZGVsZXRlIGhlYWRlckZpbHRlcnMuc3RhdHVzO1xyXG4gIFxyXG4gIC8vIEZldGNoIG5ldyBkYXRhIGJhc2VkIG9uIHRoZSBuZXcgY2xpZW50XHJcbiAgLy8gdGhpcy5nZXRDb3VudHJ5KCk7XHJcbiAgLy8gdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAvLyB0aGlzLmdldFN0b3JlKCk7XHJcbiAgLy8gdGhpcy5nZXRHcm91cHMoKTtcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG4gIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2Ugd2l0aCB0aGUgbmV3IGNsaWVudCBzZWxlY3Rpb24gYW5kIGVtcHR5IGZpbHRlciBkYXRhXHJcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcclxuICAvLyBFbWl0IGRhdGEgdG8gdGhlIGdsb2JhbCBzZXJ2aWNlXHJcbiAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gdG8gcmVmbGVjdCBVSSBjaGFuZ2VzXHJcbiAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbn1cclxuXHJcblxyXG5cclxucmFuZ2VzOmFueSA9IHtcclxuICBUb2RheTogW2RheWpzKCksIGRheWpzKCldLFxyXG4gIFllc3RlcmRheTogW2RheWpzKCkuc3VidHJhY3QoMSwgJ2RheXMnKSwgZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcclxuICAnVGhpcyBXZWVrJzogW2RheWpzKCkuc3VidHJhY3QoNywgJ2RheXMnKSwgZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcclxuICAnTGFzdCBXZWVrJzogW1xyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxNCwgJ2RheXMnKS5zdGFydE9mKCdkYXknKSxcclxuICAgIGRheWpzKCkuc3VidHJhY3QoOCwgJ2RheXMnKS5lbmRPZignZGF5JyksXHJcbiAgXSxcclxuICAnVGhpcyBNb250aCc6IFtkYXlqcygpLnN1YnRyYWN0KDMwLCAnZGF5cycpLCBkYXlqcygpLnN1YnRyYWN0KDEsICdkYXlzJyldLFxyXG4gICdMYXN0IE1vbnRoJzogW1xyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5zdGFydE9mKCdtb250aCcpLFxyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5lbmRPZignbW9udGgnKSxcclxuICBdLFxyXG59O1xyXG5cclxuICBvblN0YXJ0RGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICBpZih0aGlzLnNlbGVjdGVkQ2xpZW50Py50cmF4RGF0ZVJhbmdlID09PSA5MCl7XHJcbiAgICAgICAgICAgICB0aGlzLmlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgbSA+IHRoaXMuZGF5anMoKSB8fCBtID4gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUuYWRkKDkwLCBcImRheXNcIikpO1xyXG4gICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNWYWxpZERhdGUgPVxyXG4gICAgICAgICAgbSA+IHRoaXMuZGF5anMoKSB8fCBtID4gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUuYWRkKDE4MCwgXCJkYXlzXCIpKTtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICAgIH07XHJcbiAgICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkgJiZcclxuICAgICAgICB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmlzVmFsaWQoKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RGF0ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSBldmVudC5lbmREYXRlO1xyXG4gICAgICAgIHZhciBkYXRldGltZSA9IHtcclxuICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUsIFwiREQtTU0tWVlZWVwiKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyhldmVudC5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRhdGUgPSBkYXRldGltZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwiaGVhZGVyLWZpbHRlcnNcIixcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgfVxyXG4gIG9wZW5kcm9wZG93bihlOk1vdXNlRXZlbnQpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9ICF0aGlzLk9wZW5kcm9wZG93bjtcclxuICB9XHJcbiAgZ2V0TG9jYXRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7ICBcclxuICAgIC8vIGNvbnN0IGhlYWRlckZpbHRlcnM6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCIpO1xyXG4gICAgbGV0IG9iaiA9e1xyXG4gICAgIGNsaWVudElkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgOnRoaXMudXNlcnMuY2xpZW50SWQsXHJcbiAgICAgY291bnRyeSxcclxuICAgICBjaXR5OiBbXSxcclxuICAgICBncm91cDogW10sXHJcbiAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGguZ2V0TG9jYXRpb24ob2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgY2l0eUxpc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVycz8ubG9jYXRpb24/LmZpbHRlcigobG9jYXRpb246YW55KSA9PiBsb2NhdGlvbi5jaGVja2VkKS5tYXAoKGxvYzphbnkpID0+IGxvYy5jaXR5KTtcclxuICAgICAgICAvLyBNYXAgdGhlIGZldGNoZWQgbG9jYXRpb25zIHdpdGggZGVmYXVsdCB1bmNoZWNrZWQgc3RhdGVcclxuICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IHJlcz8uZGF0YT8ubG9jYXRpb25EYXRhLm1hcCgoY2l0eTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgY2l0eTogY2l0eS5jaXR5LFxyXG4gICAgICAgICAgLy8gY2hlY2tlZDogY2l0eUxpc3Q/Lmxlbmd0aCA/IGNpdHlMaXN0LmluY2x1ZGVzKGNpdHkuY2l0eSkgOiB0cnVlLFxyXG4gICAgICAgICAgY2hlY2tlZDogY2l0eUxpc3Q/LmluY2x1ZGVzKGNpdHkuY2l0eSkgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgfSkpO1xyXG4gIFxyXG4gICAgICAgIC8vIFN5bmMgdGhlIGZldGNoZWQgbG9jYXRpb25zIHdpdGggYW55IHN0b3JlZCBjaGVja2VkIHZhbHVlcyBpbiBsb2NhbFN0b3JhZ2VcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24gJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbikpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucy5tYXAobG9jYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkTG9jYXRpb24gPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbi5maW5kKChsb2M6IGFueSkgPT4gbG9jLmNpdHkgPT09IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlZExvY2F0aW9uID8geyAuLi5sb2NhdGlvbiwgY2hlY2tlZDogbWF0Y2hlZExvY2F0aW9uLmNoZWNrZWQgfSA6IGxvY2F0aW9uO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMuc2VhcmNoTG9jYXRpb25UZXh0KSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnMuZmlsdGVyKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC50b0xvd2VyQ2FzZSgpKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucy5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaGVja2VkKS5tYXAoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaXR5KTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlKCk7IC8vIEZldGNoIHN0b3JlcyBiYXNlZCBvbiBzZWxlY3RlZCBncm91cHNcclxuICAgICAgICAgIH0sMTAwMClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCFzZWxlY3RlZExvY2F0aW9ucy5sZW5ndGggJiYgY291bnRyeS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggbG9jYXRpb25zXCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgaXNBbGxMb2NhdGlvbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkTG9jYXRpb25zLmV2ZXJ5KChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNoZWNrZWQpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgc2VsZWN0ZWRMb2NhdGlvbnNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9uTGFiZWwgPSB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC5sZW5ndGggPyB0aGlzLmxvY2F0aW9uc1xyXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNoZWNrZWQpLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaXR5KSA6ICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zXHJcbiAgICAgIC5maWx0ZXIoKGxvY2F0aW9uOmFueSkgPT4gbG9jYXRpb24uY2hlY2tlZCkubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID09PSAxXHJcbiAgICAgID8gc2VsZWN0ZWRMb2NhdGlvbnNbMF1cclxuICAgICAgOiBgJHtzZWxlY3RlZExvY2F0aW9ucy5sZW5ndGh9IFJlZ2lvbnNgO1xyXG4gIH1cclxuICBzZWxlY3RlZExvY2F0aW9uc0xhYmVsMSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9uTGFiZWwgPSB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC5sZW5ndGggPyB0aGlzLmxvY2F0aW9uc1xyXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNoZWNrZWQpLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaXR5KSA6ICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zXHJcbiAgICAgIC5maWx0ZXIoKGxvY2F0aW9uOmFueSkgPT4gbG9jYXRpb24uY2hlY2tlZCkubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogYCR7c2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RofWA7XHJcbiAgfVxyXG4gIHJlbW92ZUxvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5SZXNldCgpO1xyXG4gIH1cclxuICBcclxuICBnZXRHcm91cHMoKTogdm9pZCB7ICBcclxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLmNvdW50cmllc1xyXG4gICAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgICAubWFwKGNvdW50cnkgPT4gY291bnRyeS5jb3VudHJ5KTsgIFxyXG4gICAgbGV0IGNpdHk7XHJcbiAgICBjaXR5ID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNpdHkpO1xyXG5cclxuICAgICAgaWYoIWNpdHkubGVuZ3RoICYmIGNvdW50cnkubGVuZ3RoKSB7XHJcbiAgICAgICAgY2l0eSA9IHRoaXMubG9jYXRpb25zLm1hcCgobG9jKSA9PiBsb2MuY2l0eSk7XHJcbiAgICAgIH1cclxuICAgIGNvbnN0IG9iaiA9IHsgY291bnRyeSxjaXR5LGNsaWVudElkOnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA/IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA6dGhpcy51c2Vycy5jbGllbnRJZCxncm91cDpbXSxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICAgfTtcclxuICAgIHRoaXMuYXV0aC5nZXRHcm91cHMob2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgY2hlY2tlZEdyb3VwID0gdGhpcy5zZWxlY3RlZEZpbHRlcnM/Lmdyb3VwPy5maWx0ZXIoKGdyb3VwOmFueSkgPT4gZ3JvdXAuY2hlY2tlZCkubWFwKChncm91cDphbnkpID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgICAgY29uc3QgY29tYmluZWRHcm91cHMgPSByZXM/LmRhdGE/Lmdyb3VwRGF0YT8ubWFwKChncm91cE5hbWU6IGFueSkgPT4gKHtcclxuICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXBOYW1lLmdyb3VwTmFtZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGNoZWNrZWRHcm91cD8uaW5jbHVkZXMoZ3JvdXBOYW1lLmdyb3VwTmFtZSkgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICAvLyBjaGVja2VkOiBjaGVja2VkR3JvdXA/Lmxlbmd0aCA/IGNoZWNrZWRHcm91cC5pbmNsdWRlcyhncm91cE5hbWUuZ3JvdXBOYW1lKSA6IHRydWUsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzRGF0YSA9IGNvbWJpbmVkR3JvdXBzO1xyXG4gICAgICAgIGlmKHRoaXMuc2VhcmNoR3JvdXBUZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IGNvbWJpbmVkR3JvdXBzLmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0uZ3JvdXBOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hHcm91cFRleHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gY29tYmluZWRHcm91cHM7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIC8vIEF1dG8tZmV0Y2ggc3RvcmVzIHdoZW4gZ3JvdXBzIGFyZSBzZWxlY3RlZFxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gdGhpcy5ncm91cHNEYXRhLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmNoZWNrZWQpLm1hcCgoZ3JvdXApID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZSgpOyAvLyBGZXRjaCBzdG9yZXMgYmFzZWQgb24gc2VsZWN0ZWQgZ3JvdXBzXHJcbiAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZ3JvdXBzXCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKHR5cGU6ICdjb3VudHJ5JyB8ICdsb2NhdGlvbicgfCAnZ3JvdXAnIHwgJ3N0b3JlJ3wgJ3N0YXR1cycpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duT3BlbiA9PT0gdHlwZSkge1xyXG4gICAgICAvLyBJZiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgY2xvc2UgaXQgYW5kIGF2b2lkIHJlc2V0dGluZyB0aGUgc2VsZWN0ZWQgdmFsdWVzIHVubmVjZXNzYXJpbHlcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3BlbiB0aGUgc3BlY2lmaWMgZHJvcGRvd24gYW5kIGhhbmRsZSBkYXRhIGZldGNoaW5nIG9ubHkgaWYgbmVjZXNzYXJ5XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHlwZTtcclxuaWYodHlwZSA9PT1cInN0YXR1c1wiKXtcclxuXHJcbiAgdGhpcy5nZXRTdGF0dXMoKTtcclxufVxyXG4gICAgICBpZiAodHlwZSA9PT0gJ2NvdW50cnknKSB7XHJcbiAgICAgICAgLy8gRmV0Y2ggY291bnRyaWVzIG9ubHkgaWYgbm90IGFscmVhZHkgZmV0Y2hlZCBhbmQgbm8gc2VhcmNoIHRleHQgZXhpc3RzXHJcbiAgICAgICAgaWYgKCghdGhpcy5maWx0ZXJlZENvdW50cmllcyB8fCB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmxlbmd0aCA9PT0gMCkgJiYgIXRoaXMuc2VhcmNoQ291bnRyeVRleHQudHJpbSgpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENvdW50cnkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgaWYgKHR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgICAvLyBGZXRjaCBncm91cHMgb25seSBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgY2l0aWVzIGFuZCBubyBhY3RpdmUgc2VhcmNoIHRleHRcclxuICAgICAgICBjb25zdCBzZWxlY3RlZENpdGllcyA9IHRoaXMubG9jYXRpb25zXHJcbiAgICAgICAgICAuZmlsdGVyKChsb2NhdGlvbikgPT4gbG9jYXRpb24uY2hlY2tlZClcclxuICAgICAgICAgIC5tYXAoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaXR5KTtcclxuICBcclxuICAgICAgICAvLyBGZXRjaCBncm91cHMgb25seSBpZiBsb2NhdGlvbnMgYXJlIHNlbGVjdGVkLCBubyBzZWFyY2ggdGV4dCBleGlzdHMsIGFuZCBkcm9wZG93biBpcyBvcGVuZWRcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMubGVuZ3RoID4gMCB8fCAoc2VsZWN0ZWRDaXRpZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5zZWFyY2hHcm91cFRleHQudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IFtdOyAvLyBDbGVhciBncm91cHMgaWYgbm8gbG9jYXRpb25zIGFyZSBzZWxlY3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgLy8gRmV0Y2ggc3RvcmVzIG9ubHkgaWYgbm90IGFscmVhZHkgZmV0Y2hlZCBhbmQgbm8gc2VhcmNoIHRleHQgaXMgYWN0aXZlXHJcbiAgICAgIGlmICgoIXRoaXMuZmlsdGVyZWRTdG9yZXMgfHwgdGhpcy5maWx0ZXJlZFN0b3Jlcy5sZW5ndGggPT09IDApICYmICF0aGlzLnNlYXJjaFN0b3JlVGV4dC50cmltKCkpIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlKCk7XHJcbiAgICAgIH0gXHJcbiAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIGhhbmRsZUdyb3VwRHJvcGRvd25DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duT3BlbiA9PT0gJ2dyb3VwJykge1xyXG4gICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRHcm91cHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oJ2dyb3VwJyk7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3Vwcy5mb3JFYWNoKChncm91cDphbnkpID0+IChncm91cC5jaGVja2VkID0gZmFsc2UpKTtcclxuICAgIHRoaXMuc2VhcmNoR3JvdXBUZXh0ID0gXCJcIjtcclxuICB9XHJcbiAgc2VsZWN0ZWRHcm91cHNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSB0aGlzLmdyb3VwTGFiZWwgPSB0aGlzLnNlYXJjaEdyb3VwVGV4dC5sZW5ndGggPyB0aGlzLmdyb3Vwc0RhdGEuZmlsdGVyKChncm91cCkgPT4gZ3JvdXAuY2hlY2tlZCkgOiB0aGlzLmZpbHRlcmVkR3JvdXBzLmZpbHRlcigoZ3JvdXA6YW55KSA9PiBncm91cC5jaGVja2VkKTtcclxuICAgIHJldHVybiBzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPT09IDBcclxuICAgICAgPyBcIlwiXHJcbiAgICAgIDogc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAxXHJcbiAgICAgID8gc2VsZWN0ZWRHcm91cHNbMF0uZ3JvdXBOYW1lXHJcbiAgICAgIDogYCR7c2VsZWN0ZWRHcm91cHMubGVuZ3RofSBDbHVzdGVyc2A7XHJcbiAgfVxyXG4gICAgc2VsZWN0ZWRHcm91cHNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gdGhpcy5ncm91cExhYmVsID0gdGhpcy5zZWFyY2hHcm91cFRleHQubGVuZ3RoID8gdGhpcy5ncm91cHNEYXRhLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmNoZWNrZWQpIDogdGhpcy5maWx0ZXJlZEdyb3Vwcy5maWx0ZXIoKGdyb3VwOmFueSkgPT4gZ3JvdXAuY2hlY2tlZCk7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAwXHJcbiAgICAgID8gXCJcIlxyXG4gICAgICA6IGAke3NlbGVjdGVkR3JvdXBzLmxlbmd0aH1gO1xyXG4gIH1cclxuICByZW1vdmVHcm91cCgpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzZXQoKTtcclxuICAgXHJcbiAgfVxyXG4gIFxyXG5cclxuICBpc0FsbEdyb3Vwc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEdyb3Vwcy5sZW5ndGggPyB0aGlzLmZpbHRlcmVkR3JvdXBzLmV2ZXJ5KChncm91cDphbnkpID0+IGdyb3VwLmNoZWNrZWQpIDogZmFsc2U7XHJcbiAgfVxyXG4gICAgICAgIFxyXG4gIGdldFN0b3JlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgICBjb25zdCBjaXR5ID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwc0RhdGFcclxuICAgICAgLmZpbHRlcihncm91cCA9PiBncm91cC5jaGVja2VkKVxyXG4gICAgICAubWFwKGdyb3VwID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBjb3VudHJ5LFxyXG4gICAgICBjaXR5LFxyXG4gICAgICBjbHVzdGVyczogZ3JvdXAsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLnVzZXJzLmNsaWVudElkIHx8IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdGhpcy5hdXRoLmdldEhlYWRlclN0b3JlcyhkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIC8vIEluaXRpYWxpemUgc3RvcmVzIGZyb20gQVBJIHJlc3BvbnNlXHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgcHJldmlvdXNseSBzZWxlY3RlZCBzdG9yZXNcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRTdG9yZUlkcyA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5zdG9yZXNcclxuICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgLy8gU3luYyB0aGUgYGNoZWNrZWRgIHN0YXRlXHJcbiAgICAgICAgICB0aGlzLnN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGNoZWNrZWRTdG9yZUlkcy5sZW5ndGhcclxuICAgICAgICAgICAgICA/IGNoZWNrZWRTdG9yZUlkcy5pbmNsdWRlcyhzdG9yZS5zdG9yZUlkKSAvLyBVc2UgcHJldmlvdXMgc2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgOiB0cnVlOyAvLyBEZWZhdWx0IHRvIHRydWUgaWYgbm8gcHJldmlvdXMgc2VsZWN0aW9uXHJcbiAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAgIC8vIEFwcGx5IHNlYXJjaCBmaWx0ZXIgaWYgc2VhcmNoIHRleHQgaXMgcHJlc2VudFxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoU3RvcmVUZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gdGhpcy5zdG9yZXMuZmlsdGVyKHN0b3JlID0+XHJcbiAgICAgICAgICAgICAgc3RvcmUuc3RvcmVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hTdG9yZVRleHQudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdG9yZXMgPSBbLi4udGhpcy5zdG9yZXNdO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgLy8gVXBkYXRlIGBzZWxlY3RlZEZpbHRlcnMuc3RvcmVzYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSB0aGlzLmZpbHRlcmVkU3RvcmVzLm1hcCgoc3RvcmU6YW55KSA9PiAoe1xyXG4gICAgICAgICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZU5hbWU6IHN0b3JlLnN0b3JlTmFtZSxcclxuICAgICAgICAgICAgY2hlY2tlZDogc3RvcmUuY2hlY2tlZFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IGNvdW50cnk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2aW91c0NoZWNrZWRTdG9yZUlkcyA9XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0b3Jlc1xyXG4gICAgPy5maWx0ZXIoKHM6IGFueSkgPT4gcy5jaGVja2VkKVxyXG4gICAgLm1hcCgoczogYW55KSA9PiBzLnN0b3JlSWQpIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGVja2VkU3RvcmVJZHMgPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXNcclxuICAuZmlsdGVyKChzOiBhbnkpID0+IHMuY2hlY2tlZClcclxuICAubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZCk7XHJcblxyXG4vLyDwn5SRIENhbGwgZG93bnRpbWUgQVBJIE9OTFkgaWYgc3RvcmUgc2VsZWN0aW9uIGNoYW5nZWRcclxuaWYgKCF0aGlzLmFyZUFycmF5c0VxdWFsKHByZXZpb3VzQ2hlY2tlZFN0b3JlSWRzLCBjdXJyZW50Q2hlY2tlZFN0b3JlSWRzKSkge1xyXG4gIHRoaXMuZG93bnRpbWVBcGkoKTtcclxufVxyXG4gICAgICAgICAgLy8gU2F2ZSB1cGRhdGVkIGZpbHRlcnMgdG8gbG9jYWxTdG9yYWdlXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gIFxyXG4gICAgICAgICAgLy8gVHJpZ2dlciBVSSBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIGVtcHR5IG9yIGVycm9yIHJlc3BvbnNlXHJcbiAgICAgICAgICB0aGlzLmNsZWFyU3RvcmVzU3RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBzdG9yZXNcIiwgZXJyKTtcclxuICAgICAgICB0aGlzLmNsZWFyU3RvcmVzU3RhdGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXJlQXJyYXlzRXF1YWwoYTogYW55W10sIGI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gIHJldHVybiBhLmV2ZXJ5KHZhbCA9PiBiLmluY2x1ZGVzKHZhbCkpO1xyXG59XHJcblxyXG4gIC8vIENsZWFyIHN0b3JlcyBzdGF0ZSBhbmQgcmVzZXQgZmlsdGVyc1xyXG4gIHByaXZhdGUgY2xlYXJTdG9yZXNTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmVzID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdoZWFkZXItZmlsdGVycycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgfVxyXG4gIFxyXG4gIHJlc2V0U2VsZWN0ZWRTdG9yZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzLmZvckVhY2goKHN0b3JlOmFueSkgPT4gKHN0b3JlLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5zZWFyY2hTdG9yZVRleHQgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRTdG9yZXNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRTdG9yZXMgPSB0aGlzLnNlYXJjaFN0b3JlVGV4dC5sZW5ndGggPyB0aGlzLnN0b3Jlcy5maWx0ZXIoKHN0b3JlKSA9PiBzdG9yZS5jaGVja2VkKSA6IHRoaXMuZmlsdGVyZWRTdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/IFwiMCBTdG9yZXNcIlxyXG4gICAgICA6IHNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IHNlbGVjdGVkU3RvcmVzWzBdLnN0b3JlTmFtZVxyXG4gICAgICA6IGAke3NlbGVjdGVkU3RvcmVzLmxlbmd0aH0gU3RvcmVzYDtcclxuICB9XHJcbiAgc2VsZWN0ZWRTdG9yZXNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkU3RvcmVzID0gdGhpcy5zZWFyY2hTdG9yZVRleHQubGVuZ3RoID8gdGhpcy5zdG9yZXMuZmlsdGVyKChzdG9yZSkgPT4gc3RvcmUuY2hlY2tlZCkgOiB0aGlzLmZpbHRlcmVkU3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKTtcclxuICAgIHJldHVybiBzZWxlY3RlZFN0b3Jlcy5sZW5ndGggPT09IDBcclxuICAgICAgPyBcIjBcIlxyXG4gICAgICA6IGAke3NlbGVjdGVkU3RvcmVzLmxlbmd0aH1gO1xyXG4gIH1cclxuICBpc0FsbFN0b3Jlc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRTdG9yZXMubGVuZ3RoID4gMCAmJiB0aGlzLmZpbHRlcmVkU3RvcmVzLmV2ZXJ5KChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gIH1cclxuLy8gTWV0aG9kIHRvIGhhbmRsZSBkcm9wZG93biBpdGVtIHNlbGVjdGlvblxyXG51cGRhdGVTZWxlY3RlZFN0b3JlcygpOiB2b2lkIHtcclxuICB0aGlzLmZpbHRlcmVkU3RvcmVzLmZvckVhY2goKHN0b3JlOmFueSkgPT4ge1xyXG4gICAgY29uc3QgZmlsdGVyZWRTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmRJbmRleChmU3RvcmUgPT4gZlN0b3JlLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgaWYgKGZpbHRlcmVkU3RvcmUgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zdG9yZXNbZmlsdGVyZWRTdG9yZV0uY2hlY2tlZCA9IHN0b3JlLmNoZWNrZWQ7IC8vIFN5bmMgdGhlIGNoZWNrZWQgc3RhdGUgd2l0aCBmdWxsIHN0b3JlIGxpc3RcclxuICAgIH1cclxuICB9KTsgIFxyXG4gIC8vIFVwZGF0ZSBzZWxlY3RlZEZpbHRlcnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RvcmUgc2VsZWN0aW9uXHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID0gdGhpcy5zdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmNoZWNrZWQpO1xyXG5cclxuICAvLyBVcGRhdGUgbG9jYWxTdG9yYWdlIHdpdGggdGhlIGxhdGVzdCBzZWxlY3Rpb25cclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG5cclxuICAvLyBFbWl0IHVwZGF0ZWQgZmlsdGVycyB2aWEgc2VydmljZVxyXG4gIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcblxyXG4gIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWNlc3NhcnlcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4gIHRvZ2dsZVNlbGVjdEFsbExvY2F0aW9ucyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMuZm9yRWFjaCgobG9jYXRpb246YW55KSA9PiAobG9jYXRpb24uY2hlY2tlZCA9IGlzQ2hlY2tlZCkpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZExvY2F0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU3RvcmVzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcclxuICBcclxuICAgIC8vIEFwcGx5IHRoZSBzZWxlY3Rpb24gdG8gYm90aCBmaWx0ZXJlZCBhbmQgZnVsbCBsaXN0IG9mIHN0b3Jlc1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3Jlcy5mb3JFYWNoKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQgPSBjaGVja2VkKTtcclxuICAgIHRoaXMuc3RvcmVzLmZvckVhY2goc3RvcmUgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZFN0b3JlID0gdGhpcy5maWx0ZXJlZFN0b3Jlcy5maW5kKChmU3RvcmU6YW55KSA9PiBmU3RvcmUuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCk7XHJcbiAgICAgIGlmIChmaWx0ZXJlZFN0b3JlKSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGNoZWNrZWQ7IC8vIFN5bmMgdGhlIGNoZWNrZWQgc3RhdGUgd2l0aCBmdWxsIHN0b3JlIGxpc3RcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIHN0b3JlcyBhbmQgcGVyc2lzdCB0aGUgc2VsZWN0aW9uXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU3RvcmVzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gbG9jYXRpb25zIGFyZSBzZWxlY3RlZCwgZmV0Y2ggdGhlIHJlbGF0ZWQgZ3JvdXBzXHJcbiAgICBjb25zdCBzZWxlY3RlZENpdGllcyA9IHRoaXMuZmlsdGVyZWRMb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcigobG9jYXRpb246YW55KSA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgdGhpcy5maWx0ZXJlZExvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbjphbnkpID0+IHtcclxuICAgICAgbGV0IGZpbmRMb2NhdGlvbkluZGV4ID0gdGhpcy5sb2NhdGlvbnMuZmluZEluZGV4KChsb2M6YW55KSA9PiBsb2MuY2l0eSA9PSBsb2NhdGlvbi5jaXR5KTtcclxuICAgICAgaWYoZmluZExvY2F0aW9uSW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uc1tmaW5kTG9jYXRpb25JbmRleF0uY2hlY2tlZCA9IGxvY2F0aW9uLmNoZWNrZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAoc2VsZWN0ZWRDaXRpZXMubGVuZ3RoID4gMCB8fCAhc2VsZWN0ZWRDaXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlcyA9W107XHJcbiAgICAgIHRoaXMuZ3JvdXBzRGF0YSA9W11cclxuICAgICAgdGhpcy5nZXRHcm91cHMoKTsgLy8gRmV0Y2ggZ3JvdXBzIGJhc2VkIG9uIHNlbGVjdGVkIGNpdGllc1xyXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0ZWQgZ3JvdXBzLCBmZXRjaCB0aGUgc3RvcmVzIGJhc2VkIG9uIHNlbGVjdGVkIGdyb3Vwc1xyXG4gICAgICB0aGlzLmdldFN0b3JlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gdGhpcy5sb2NhdGlvbnM7XHJcbiAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gW107IC8vIENsZWFyIGdyb3VwcyBpZiBubyBsb2NhdGlvbnMgYXJlIHNlbGVjdGVkXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107IC8vIFJlc2V0IHN0b3JlcyBhcyB3ZWxsXHJcbiAgICB0aGlzLnNlYXJjaEdyb3VwVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5zZWFyY2hTdG9yZVRleHQgPSAnJztcclxuICAgIC8vIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxHcm91cHMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmZpbHRlcmVkR3JvdXBzLmZvckVhY2goKGdyb3VwOmFueSkgPT4gKGdyb3VwLmNoZWNrZWQgPSBpc0NoZWNrZWQpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRHcm91cHMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGVkR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgLy8gRmV0Y2ggdGhlIHJlbGV2YW50IHN0b3JlcyBhZnRlciBncm91cHMgYXJlIHNlbGVjdGVkXHJcbiAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IHRoaXMuZmlsdGVyZWRHcm91cHNcclxuICAgICAgLmZpbHRlcigoZ3JvdXA6YW55KSA9PiBncm91cC5jaGVja2VkKVxyXG4gICAgICAubWFwKChncm91cDphbnkpID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3Vwcy5mb3JFYWNoKChncm91cDphbnkpID0+IHtcclxuICAgICAgbGV0IGZpbmRHcm91cEluZGV4ID0gdGhpcy5ncm91cHNEYXRhLmZpbmRJbmRleCgoaXRlbTphbnkpID0+IGl0ZW0uZ3JvdXBOYW1lID09IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgIGlmKGZpbmRHcm91cEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cHNEYXRhW2ZpbmRHcm91cEluZGV4XS5jaGVja2VkID0gZ3JvdXAuY2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSkgXHJcbiAgICBpZiAoc2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMCB8fCAhc2VsZWN0ZWRHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlcyA9W107XHJcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBzZWxlY3RlZCBncm91cHMsIGZldGNoIHRoZSBzdG9yZXMgYmFzZWQgb24gc2VsZWN0ZWQgZ3JvdXBzXHJcbiAgICAgIHRoaXMuZ2V0U3RvcmUoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZ3JvdXAgPSB0aGlzLmdyb3Vwc0RhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBubyBncm91cHMgYXJlIHNlbGVjdGVkLCBjbGVhciB0aGUgc3RvcmVzIGxpc3RcclxuICAgICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gICAgICBcclxuICAgICAgLy8gQWxzbywgdXBkYXRlIGxvY2FsU3RvcmFnZSB0byByZWZsZWN0IHRoZSBjbGVhcmVkIHN0b3JlIHNlbGVjdGlvblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICBcclxuICAgICAgLy8gRW1pdCBkYXRhIHZpYSBzZXJ2aWNlXHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBDbGVhciB0aGUgc2VhcmNoIHN0b3JlIHRleHQgd2hlbiBncm91cHMgYXJlIHVwZGF0ZWRcclxuICAgIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBSZXNldCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAvLyBDbGVhciBzZWxlY3RlZCBncm91cHMsIHN0b3JlcywgYW5kIGxvY2F0aW9uc1xyXG4gIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSBbXVxyXG4gIHRoaXMuZmlsdGVyZWRHcm91cHMgPSBbXTtcclxuICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107XHJcbiAgIHRoaXMuZmlsdGVyZWRTdGF0dXMgPSBbXTtcclxuICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gW107IC8vIFJlc2V0IGxvY2F0aW9ucyBhcyB3ZWxsXHJcbiAgdGhpcy5kb3dudGltZURhdGEgPSBbXTtcclxudGhpcy5sb2NhdGlvbnMgPVtdO3RoaXMuZ3JvdXBzRGF0YSA9W107IHRoaXMuc3RvcmVzID1bXTsgdGhpcy5jb3VudHJpZXMgPVtdO1xyXG4gIC8vIENsZWFyIHNlYXJjaCBpbnB1dCBmaWVsZHNcclxuICB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dCA9IFwiXCI7XHJcbiAgdGhpcy5zZWFyY2hHcm91cFRleHQgPSBcIlwiO1xyXG4gIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gXCJcIjtcclxuICB0aGlzLnNlYXJjaFN0YXR1c1RleHQ9XCJcIlxyXG50aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPVtdO1xyXG50aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9W107XHJcbnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID1bXTtcclxudGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9W107XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gWydhY3RpdmUnXTtcclxudGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPVtdO1xyXG5cclxuIFxyXG4gIC8vIEZldGNoIGxvY2F0aW9ucywgZ3JvdXBzLCBhbmQgc3RvcmVzIGFnYWluXHJcbiAgLy8gdGhpcy5nZXRDb3VudHJ5KCk7XHJcbiAgLy8gdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAvLyB0aGlzLmdldFN0b3JlKCk7XHJcbiAgLy8gdGhpcy5nZXRHcm91cHMoKTtcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2Ugd2l0aCB0aGUgbGF0ZXN0IHNlbGVjdGVkRmlsdGVyc1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxyXG4gICAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9LDEwMClcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcblxyXG4gIGZpbHRlckxvY2F0aW9ucygpOiB2b2lkIHsgICAgXHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hMb2NhdGlvblRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIFxyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgZHVyaW5nIGZpbHRlcmluZ1xyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgICAubWFwKGxvY2F0aW9uID0+ICh7XHJcbiAgICAgICAgICAuLi5sb2NhdGlvbixcclxuICAgICAgICAgIGNoZWNrZWQ6IHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMuZmluZCgobDphbnkpID0+IGwuY2l0eSA9PT0gbG9jYXRpb24uY2l0eSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgICB9KSlcclxuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+XHJcbiAgICAgICAgICBsb2NhdGlvbj8uY2l0eT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBjaGVja2VkIHN0YXRlIHdoZW4gc2VhcmNoIHRleHQgaXMgY2xlYXJlZFxyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnMubWFwKGxvY2F0aW9uID0+ICh7XHJcbiAgICAgICAgLi4ubG9jYXRpb24sXHJcbiAgICAgICAgY2hlY2tlZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24uZmluZCgobDphbnkpID0+IGwuY2l0eSA9PT0gbG9jYXRpb24uY2l0eSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgZmlsdGVyR3JvdXBzKCk6IHZvaWQgeyAgXHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hHcm91cFRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIFxyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgZHVyaW5nIGZpbHRlcmluZ1xyXG4gICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gdGhpcy5ncm91cHNEYXRhXHJcbiAgICAgICAgLm1hcChncm91cCA9PiAoe1xyXG4gICAgICAgICAgLi4uZ3JvdXAsXHJcbiAgICAgICAgICBjaGVja2VkOiB0aGlzLmZpbHRlcmVkR3JvdXBzLmZpbmQoKGc6YW55KSA9PiBnLmdyb3VwTmFtZSA9PT0gZ3JvdXAuZ3JvdXBOYW1lKT8uY2hlY2tlZCB8fCBmYWxzZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoZ3JvdXAgPT5cclxuICAgICAgICAgIGdyb3VwPy5ncm91cE5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dClcclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgY2hlY2tlZCBzdGF0ZSB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWRcclxuICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IHRoaXMuZ3JvdXBzRGF0YS5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBjaGVja2VkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cC5maW5kKChnOmFueSkgPT4gZy5ncm91cE5hbWUgPT09IGdyb3VwLmdyb3VwTmFtZSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBcclxuICBmaWx0ZXJTdG9yZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hTdG9yZVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIC8vIFByZXNlcnZlIGNoZWNrZWQgc3RhdGVzIGR1cmluZyBmaWx0ZXJpbmdcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIC8vIEZpbHRlciBiYXNlZCBvbiBzZWFyY2ggdGV4dCB3aGlsZSBwcmVzZXJ2aW5nIGNoZWNrZWQgc3RhdGVcclxuICAgICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IHRoaXMuc3RvcmVzXHJcbiAgICAgICAgLm1hcChzdG9yZSA9PiAoe1xyXG4gICAgICAgICAgLi4uc3RvcmUsXHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3RvcmUgaXMgYWxyZWFkeSBjaGVja2VkIGluIGZpbHRlcmVkU3RvcmVzLCBmYWxsYmFjayB0byBvcmlnaW5hbCBzdG9yZXMnIGNoZWNrZWQgc3RhdGVcclxuICAgICAgICAgIGNoZWNrZWQ6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3Jlcy5maW5kKChzOiBhbnkpID0+IHMuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCk/LmNoZWNrZWQgfHwgc3RvcmUuY2hlY2tlZCB8fCBmYWxzZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoc3RvcmUgPT4gc3RvcmUuc3RvcmVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gV2hlbiB0aGUgc2VhcmNoIHRleHQgaXMgY2xlYXJlZCwgcmVzdG9yZSB0aGUgb3JpZ2luYWwgbGlzdCB3aXRoIHByZXNlcnZlZCBjaGVja2VkIHN0YXRlc1xyXG4gICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gdGhpcy5zdG9yZXMubWFwKHN0b3JlID0+ICh7XHJcbiAgICAgICAgLi4uc3RvcmUsXHJcbiAgICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGZpbHRlcnNcclxuICAgICAgICBjaGVja2VkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMuZmluZCgoczogYW55KSA9PiBzLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpPy5jaGVja2VkIHx8IHN0b3JlLmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXHJcbiAgY2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcclxuICAgICAgXCIuZHJvcGRvd24tY29udGFpbmVyXCJcclxuICAgICk7XHJcbiAgICBjb25zdCBjbGlja2Vkb3V0U2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXHJcbiAgICAgIFwiLmRyb3Bkb3duMlwiXHJcbiAgICApO1xyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgfVxyXG4gICAgaWYoIWNsaWNrZWRvdXRTaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bjEoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuIFxyXG4gIFxyXG5cclxuICAgIGdldENvdW50cnkoKTogdm9pZCB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID8gdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50IDogdGhpcy51c2Vycy5jbGllbnRJZCxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0aGlzLmF1dGguZ2V0Q291bnRyeShvYmopLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIEV4dHJhY3Qgc2VsZWN0ZWQgY291bnRyaWVzIGZyb20gZXhpc3RpbmcgZmlsdGVycyAoaWYgYW55KVxyXG4gICAgICAgIGxldCBjb3VudHJ5TGlzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5jb3VudHJ5Py5maWx0ZXIoKGNvdW50cnk6IGFueSkgPT4gY291bnRyeS5jaGVja2VkKS5tYXAoKGxvYzogYW55KSA9PiBsb2MuY291bnRyeSk7XHJcbiAgXHJcbiAgICAgICAgLy8gTWFwIEFQSSByZXNwb25zZSB0byBmcm9udGVuZCBtb2RlbFxyXG4gICAgICAgIHRoaXMuY291bnRyaWVzID0gcmVzPy5kYXRhPy5jb3VudHJ5RGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgIGNvdW50cnk6IGl0ZW0uY291bnRyeSxcclxuICAgICAgICAgIC8vIGNoZWNrZWQ6IGNvdW50cnlMaXN0Py5sZW5ndGggPyBjb3VudHJ5TGlzdC5pbmNsdWRlcyhpdGVtLmNvdW50cnkpIDogdHJ1ZSxcclxuICAgICAgICAgIC8vIGNoZWNrZWQ6IGNpdHlMaXN0Py5sZW5ndGggPyBjaXR5TGlzdC5pbmNsdWRlcyhjaXR5LmNpdHkpIDogdHJ1ZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGNvdW50cnlMaXN0Py5pbmNsdWRlcyhpdGVtLmNvdW50cnkpID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSkpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5tYXAobG9jYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkTG9jYXRpb24gPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5LmZpbmQoKGxvYzogYW55KSA9PiBsb2MuY291bnRyeSA9PT0gbG9jYXRpb24uY291bnRyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVkTG9jYXRpb24gPyB7IC4uLmxvY2F0aW9uLCBjaGVja2VkOiBtYXRjaGVkTG9jYXRpb24uY2hlY2tlZCB9IDogbG9jYXRpb247XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IHRoaXMuY291bnRyaWVzO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIEluaXRpYWxseSwgYWxsIGNvdW50cmllcyBhcmUgdmlzaWJsZVxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSBbLi4udGhpcy5jb3VudHJpZXNdO1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAvLyBJZiBhIHNlYXJjaCB0ZXh0IGFscmVhZHkgZXhpc3RzLCBmaWx0ZXIgaW1tZWRpYXRlbHlcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5VGV4dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJDb3VudHJpZXMoKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgLy8gRmV0Y2ggc3RvcmVzIGlmIGF0IGxlYXN0IG9uZSBjb3VudHJ5IGlzIHNlbGVjdGVkXHJcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiBjb3VudHJ5LmNoZWNrZWQpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZSgpOyAvLyBmZXRjaCBzdG9yZXNcclxuICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGZldGNoIGNvdW50cmllc1wiLCBlcnIpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZENvdW50cmllc0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cmllcyA9IHRoaXMuc2VhcmNoQ291bnRyeVRleHQubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5maWx0ZXJlZENvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6YW55KSA9PiBjb3VudHJ5LmNoZWNrZWQpLm1hcCgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY291bnRyeSlcclxuICAgICAgOiB0aGlzLmNvdW50cmllcy5maWx0ZXIoY291bnRyeSA9PiBjb3VudHJ5LmNoZWNrZWQpLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudHJpZXMubGVuZ3RoID09PSAwXHJcbiAgICAgID8gJydcclxuICAgICAgOiBzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPT09IDFcclxuICAgICAgPyBzZWxlY3RlZENvdW50cmllc1swXVxyXG4gICAgICA6IGAke3NlbGVjdGVkQ291bnRyaWVzLmxlbmd0aH0gY291bnRyaWVzYDtcclxuICB9XHJcbiAgc2VsZWN0ZWRDb3VudHJpZXNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5zZWFyY2hDb3VudHJ5VGV4dC5sZW5ndGhcclxuICAgICAgPyB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmZpbHRlcigoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZCkubWFwKChjb3VudHJ5OmFueSkgPT4gY291bnRyeS5jb3VudHJ5KVxyXG4gICAgICA6IHRoaXMuY291bnRyaWVzLmZpbHRlcihjb3VudHJ5ID0+IGNvdW50cnkuY2hlY2tlZCkubWFwKGNvdW50cnkgPT4gY291bnRyeS5jb3VudHJ5KTtcclxuICBcclxuICAgIHJldHVybiBzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPT09IDBcclxuICAgICAgPyAnJ1xyXG4gICAgICA6IGAke3NlbGVjdGVkQ291bnRyaWVzLmxlbmd0aH1gO1xyXG4gIH1cclxuICBmaWx0ZXJDb3VudHJpZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hDb3VudHJ5VGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgXHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICAvLyBGaWx0ZXIgYW5kIHByZXNlcnZlIGNoZWNrZWQgc3RhdGVcclxuICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAgICAgLm1hcChjb3VudHJ5ID0+ICh7XHJcbiAgICAgICAgICAuLi5jb3VudHJ5LFxyXG4gICAgICAgICAgY2hlY2tlZDogdGhpcy5maWx0ZXJlZENvdW50cmllcy5maW5kKChjOmFueSkgPT4gYy5jb3VudHJ5ID09PSBjb3VudHJ5LmNvdW50cnkpPy5jaGVja2VkIHx8IGZhbHNlXHJcbiAgICAgICAgfSkpXHJcbiAgICAgICAgLmZpbHRlcihjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFJlc2V0IHRvIGZ1bGwgbGlzdFxyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMubWFwKChjb3VudHJ5OiBDb3VudHJ5KSA9PiAoe1xyXG4gICAgICAgIC4uLmNvdW50cnksXHJcbiAgICAgICAgY2hlY2tlZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeT8uZmluZCgoYzogYW55KSA9PiBjLmNvdW50cnkgPT09IGNvdW50cnkuY291bnRyeSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxDb3VudHJpZXNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJlZENvdW50cmllcy5ldmVyeSgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZCk7XHJcbiAgfVxyXG4gIHRvZ2dsZVNlbGVjdEFsbENvdW50cmllcyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMuZm9yRWFjaCgoY291bnRyeTphbnkpID0+IChjb3VudHJ5LmNoZWNrZWQgPSBpc0NoZWNrZWQpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJpZXMoKTtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICB1cGRhdGVTZWxlY3RlZENvdW50cmllcygpOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gbG9jYXRpb25zIGFyZSBzZWxlY3RlZCwgZmV0Y2ggdGhlIHJlbGF0ZWQgZ3JvdXBzXHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cmllcyA9IHRoaXMuZmlsdGVyZWRDb3VudHJpZXNcclxuICAgICAgLmZpbHRlcigoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZClcclxuICAgICAgLm1hcCgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmZvckVhY2goKGNvdW50cnk6YW55KSA9PiB7XHJcbiAgICAgIGxldCBmaW5kQ291bnRyeUluZGV4ID0gdGhpcy5jb3VudHJpZXMuZmluZEluZGV4KChsb2M6YW55KSA9PiBsb2MuY291bnRyeSA9PSBjb3VudHJ5LmNvdW50cnkpO1xyXG4gICAgICBpZihmaW5kQ291bnRyeUluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXNbZmluZENvdW50cnlJbmRleF0uY2hlY2tlZCA9IGNvdW50cnkuY2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPiAwIHx8ICFzZWxlY3RlZENvdW50cmllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID1bXTtcclxuICAgICAgdGhpcy5ncm91cHNEYXRhID1bXVxyXG4gICAgICB0aGlzLmxvY2F0aW9ucyA9W107XHJcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25zKCk7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7IC8vIEZldGNoIGdyb3VwcyBiYXNlZCBvbiBzZWxlY3RlZCBjaXRpZXNcclxuICAgICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdGVkIGdyb3VwcywgZmV0Y2ggdGhlIHN0b3JlcyBiYXNlZCBvbiBzZWxlY3RlZCBncm91cHNcclxuICAgICAgdGhpcy5nZXRTdG9yZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5ID0gdGhpcy5maWx0ZXJlZENvdW50cmllcztcclxuICAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRHcm91cHMgPSBbXTsgLy8gQ2xlYXIgZ3JvdXBzIGlmIG5vIGxvY2F0aW9ucyBhcmUgc2VsZWN0ZWRcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IFtdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdOyAvLyBSZXNldCBzdG9yZXMgYXMgd2VsbFxyXG4gICAgdGhpcy5zZWFyY2hHcm91cFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgICAvLyB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ291bnRyeSgpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzZXQoKTtcclxuICB9XHJcblxyXG4gIEFwcGx5KCk6IHZvaWQge1xyXG4gICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duXHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIFxyXG4gICAgLy8gRmV0Y2ggZXhpc3RpbmcgZmlsdGVycyBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgY29uc3QgaGVhZGVyRmlsdGVyczogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZSA9ICBudWxsXHJcbiAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cyA9IHRoaXMuZmlsdGVyZWRTdGF0dXNcclxuICAgIC5maWx0ZXIoKHM6IGFueSkgPT4gcy5jaGVja2VkKVxyXG4gICAgLm1hcCgoczogYW55KSA9PiBzLnN0YXR1cyk7XHJcbiAgICAvLyBFbnN1cmUgY3VycmVudCBzZWxlY3Rpb25zIGFyZSByZWZsZWN0ZWRcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSB0aGlzLmZpbHRlcmVkQ291bnRyaWVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24gPSB0aGlzLmxvY2F0aW9ucztcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gdGhpcy5ncm91cHNEYXRhO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID0gaGVhZGVyRmlsdGVycy5zdG9yZXMgPyBoZWFkZXJGaWx0ZXJzLnN0b3JlcyA6IHRoaXMuc3RvcmVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPSB0aGlzLnNlbGVjdGVkRG93bnRpbWVWYWx1ZXMgPyAgdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzIDogaGVhZGVyRmlsdGVycz8uZG93bnRpbWUgPyBoZWFkZXJGaWx0ZXJzPy5kb3dudGltZSA6W10gO1xyXG4gICAgLy8gU3RvcmUgdXBkYXRlZCBmaWx0ZXJzIGJhY2sgaW4gbG9jYWxTdG9yYWdlXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAvLyB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXHJcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZpbHRlcnMgdmlhIHRoZSBzZXJ2aWNlXHJcbiAgICAvLyB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgLy8gVHJpZ2dlciByZWZyZXNoIGlmIG5lY2Vzc2FyeVxyXG4gICAgLy8gdGhpcy5ncy5tYW5hZ2VSZWZyZXNoVHJpZ2dlci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG5nZXRTZWxlY3RlZENvdW50KHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdzdGF0dXMnOlxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFN0YXR1c0xhYmVsMSgpO1xyXG4gICAgY2FzZSAnY291bnRyeSc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnRyaWVzTGFiZWwxKCk7XHJcbiAgICBjYXNlICdsb2NhdGlvbic6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zTGFiZWwxKCk7XHJcbiAgICBjYXNlICdncm91cCc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBzTGFiZWwxKCk7XHJcbiAgICBjYXNlICdzdG9yZSc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkU3RvcmVzTGFiZWwxKCk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59XHJcbiAgYWN0aXZlRHJvcGRvd246IHN0cmluZyA9ICcnO1xyXG5cclxuLy8gQWRkIHRoaXMgbWV0aG9kIHRvIGhhbmRsZSBjYXRlZ29yeSBjbGlja3Ncclxuc2hvd0Ryb3Bkb3duKHR5cGU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlRHJvcGRvd24gPSB0eXBlO1xyXG4gIC8vIFJlc2V0IHNlYXJjaCB0ZXh0cyB3aGVuIHN3aXRjaGluZyBkcm9wZG93bnNcclxuICB0aGlzLnNlYXJjaENvdW50cnlUZXh0ID0gJyc7XHJcbiAgdGhpcy5zZWFyY2hMb2NhdGlvblRleHQgPSAnJztcclxuICB0aGlzLnNlYXJjaEdyb3VwVGV4dCA9ICcnO1xyXG4gIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgLy8gUmVzZXQgZmlsdGVyZWQgbGlzdHMgdG8gc2hvdyBhbGwgaXRlbXNcclxuICB0aGlzLmZpbHRlckNvdW50cmllcygpO1xyXG4gIHRoaXMuZmlsdGVyTG9jYXRpb25zKCk7XHJcbiAgdGhpcy5maWx0ZXJHcm91cHMoKTtcclxuICB0aGlzLmZpbHRlclN0b3JlcygpO1xyXG59XHJcblxyXG5zaG93Q2xpY2sodHlwZTogYW55LGU6TW91c2VFdmVudCkge1xyXG4gIHRoaXMub3BlbmRyb3Bkb3duKGUpXHJcbiAgdGhpcy5PcGVuZHJvcGRvd24gPSB0cnVlO1xyXG4gIHRoaXMuYWN0aXZlRHJvcGRvd24gPSB0eXBlO1xyXG59XHJcblxyXG5kb3dudGltZU9wdGlvbnMgPSBbXHJcbiAgeyBsYWJlbDogJzAtMTIwIG1pbnMnLCB2YWx1ZTogJzAtMTIwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnMTIxLTM2MCBtaW5zJywgdmFsdWU6ICcxMjEtMzYwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnMzYxLTYwMCBtaW5zJywgdmFsdWU6ICczNjEtNjAwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnNjAxKyBtaW5zJywgdmFsdWU6ICc2MDErJywgY2hlY2tlZDogZmFsc2UgfSxcclxuXTtcclxuXHJcbnNlbGVjdGVkRG93bnRpbWVWYWx1ZXM6IGFueVtdID0gW107XHJcblxyXG4vLyAxLiBGb3IgdGhlIFtjaGVja2VkXSBvZiBcIlNlbGVjdCBBbGxcIlxyXG5pc0FsbERvd250aW1lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgLy8gdHJ1ZSBvbmx5IGlmIEFMTCBvcHRpb25zIGFyZSBjaGVja2VkIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3B0aW9uXHJcbiAgcmV0dXJuIHRoaXMuZG93bnRpbWVPcHRpb25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgdGhpcy5kb3dudGltZU9wdGlvbnMuZXZlcnkob3B0ID0+IG9wdC5jaGVja2VkKTtcclxufVxyXG5cclxuLy8gMi4gV2hlbiB1c2VyIGNsaWNrcyBcIlNlbGVjdCBBbGxcIlxyXG50b2dnbGVTZWxlY3RBbGxEb3dudGltZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG5cclxuICAvLyBzZXQgYWxsIGNoaWxkIGNoZWNrYm94ZXMgdG8gc2FtZSBzdGF0ZVxyXG4gdGhpcy5kb3dudGltZU9wdGlvbnMgPSB0aGlzLmRvd250aW1lT3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAuLi5vcHQsXHJcbiAgICBjaGVja2VkXHJcbiAgfSkpO1xyXG5cclxuICAvLyB1cGRhdGUgc2VsZWN0ZWQgdmFsdWVzIChpZiB5b3UgYXJlIHVzaW5nIHRoZW0gaW4gZmlsdGVyKVxyXG4gIHRoaXMudXBkYXRlU2VsZWN0ZWREb3dudGltZSgpO1xyXG59XHJcblxyXG4vLyAzLiBXaGVuIGFueSBzaW5nbGUgY2hlY2tib3ggaXMgY2hhbmdlZFxyXG51cGRhdGVTZWxlY3RlZERvd250aW1lKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREb3dudGltZVZhbHVlcyA9IHRoaXMuZG93bnRpbWVPcHRpb25zXHJcbiAgICAgIC5maWx0ZXIob3B0ID0+IG9wdC5jaGVja2VkKVxyXG4gICAgICAubWFwKG9wdCA9PiBvcHQudmFsdWUpO1xyXG4gIC8vIOKshyBjYWxsIGRvd250aW1lIEFQSSB3aGVuZXZlciB1c2VyIGNoYW5nZXMgZG93bnRpbWUgZmlsdGVyXHJcbiAgdGhpcy5kb3dudGltZUFwaSgpO1xyXG59XHJcblxyXG5kb3dudGltZURhdGE6YW55W10gPVtdO1xyXG5cclxuXHJcbmRvd250aW1lQXBpKCkge1xyXG4gIGNvbnN0IG9iaiA9IHtcclxuICAgIGNsaWVudElkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnRcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnRcclxuICAgICAgOiB0aGlzLnVzZXJzLmNsaWVudElkLFxyXG4gICBzdG9yZUlkOiB0aGlzLnN0b3Jlc1xyXG4gID8gdGhpcy5zdG9yZXMubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gIDogW10sXHJcbiAgICBkb3dudGltZTogdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzPy5sZW5ndGggPyBbLi4udGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzXSA6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kb3dudGltZSA/IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kb3dudGltZSA6IFtdLFxyXG4gICAgZnJvbURhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLFxyXG4gIH07XHJcblxyXG4gIHRoaXMuYXV0aC5nZXREb3dudGltZUhlYWRlcihvYmopLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5kb3dudGltZURhdGEgPSByZXMuZGF0YS5zdG9yZXNEYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICAvLyDinIUgMSkgZ2V0IHN0b3JlSWRzIHRoYXQgbWF0Y2ggZG93bnRpbWUgZmlsdGVyXHJcbiAgICAgICAgY29uc3QgZG93bnRpbWVTdG9yZUlkcyA9IHRoaXMuZG93bnRpbWVEYXRhLm1hcCgoZDogYW55KSA9PiBkLnN0b3JlSWQpO1xyXG5cclxuICAgICAgICAvLyDinIUgMikgdXBkYXRlIHN0b3Jlcy5jaGVja2VkIGJhc2VkIG9uIGRvd250aW1lIHJlc3VsdFxyXG4gICAvLyAxKSBtYXJrIHN0b3JlcyBhcyBjaGVja2VkIGJhc2VkIG9uIGRvd250aW1lIHJlc3VsdHNcclxudGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IGFueSkgPT4ge1xyXG4gIHN0b3JlLmNoZWNrZWQgPSBkb3dudGltZVN0b3JlSWRzLmluY2x1ZGVzKHN0b3JlLnN0b3JlSWQpO1xyXG59KTtcclxuY29uc29sZS5sb2coXCJTdG9yZXMgYWZ0ZXIgZG93bnRpbWUgZmlsdGVyOlwiLCB0aGlzLnN0b3Jlcyk7XHJcbi8vIDIpIGZpbHRlcmVkU3RvcmVzIOKGkiBvbmx5IGNoZWNrZWQgc3RvcmVzXHJcbnRoaXMuZmlsdGVyZWRTdG9yZXMgPSB0aGlzLnN0b3Jlcy5maWx0ZXIoKHM6IGFueSkgPT4gdHJ1ZSA9PT0gcy5jaGVja2VkKTtcclxuY29uc29sZS5sb2coXCJGaWx0ZXJlZCBzdG9yZXMgYWZ0ZXIgZG93bnRpbWUgZmlsdGVyOlwiLCB0aGlzLmZpbHRlcmVkU3RvcmVzKTtcclxuXHJcbi8vIDMpIHNlbGVjdGVkRmlsdGVycy5zdG9yZXMg4oaSIGFsbCBzdG9yZXMsIHByZXNlcnZlIGNoZWNrZWQgZmxhZ1xyXG50aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSB0aGlzLnN0b3Jlcy5tYXAoKHN0b3JlOiBhbnkpID0+ICh7XHJcbiAgc3RvcmVJZDogc3RvcmUuc3RvcmVJZCxcclxuICBzdG9yZU5hbWU6IHN0b3JlLnN0b3JlTmFtZSxcclxuICBjaGVja2VkOiBzdG9yZS5jaGVja2VkXHJcbn0pKTtcclxuXHJcbmNvbnNvbGUubG9nKFwiU2VsZWN0ZWQgZmlsdGVycyBhZnRlciBkb3dudGltZSBmaWx0ZXI6XCIsIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3Jlcyk7XHJcblxyXG4gICAgICAgICAgLy8gb3B0aW9uYWw6IHNhdmUgdG8gbG9jYWxTdG9yYWdlIGlmIHlvdSB3YW50XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZG93bnRpbWVEYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZG93bnRpbWUgZGF0YVwiLCBlcnIpO1xyXG4gICAgfSxcclxuICB9KTtcclxufVxyXG5yZXN0b3JlRG93bnRpbWVGcm9tU3RvcmFnZSgpOiB2b2lkIHtcclxuICBjb25zdCBzdG9yZWREb3dudGltZTogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkRmlsdGVycz8uZG93bnRpbWUgfHwgW107XHJcbmNvbnNvbGUubG9nKFwiUmVzdG9yaW5nIGRvd250aW1lIGZyb20gc3RvcmFnZTpcIiwgc3RvcmVkRG93bnRpbWUpO1xyXG4gIC8vIG1hcmsgZG93bnRpbWVPcHRpb25zIGFzIGNoZWNrZWQgYmFzZWQgb24gc3RvcmVkIHZhbHVlc1xyXG4gIHRoaXMuZG93bnRpbWVPcHRpb25zID0gdGhpcy5kb3dudGltZU9wdGlvbnMubWFwKG9wdCA9PiAoe1xyXG4gICAgLi4ub3B0LFxyXG4gICAgY2hlY2tlZDogc3RvcmVkRG93bnRpbWUuaW5jbHVkZXMob3B0LnZhbHVlKVxyXG4gIH0pKTtcclxuXHJcbiAgLy8gc3luYyBzZWxlY3RlZERvd250aW1lVmFsdWVzXHJcbiAgdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzID0gWy4uLnN0b3JlZERvd250aW1lXTtcclxuXHJcbiAgLy8gaWYgeW91IHdhbnQgdG8gaW1tZWRpYXRlbHkgbG9hZCBkb3dudGltZSBkYXRhOlxyXG4gIGlmICh0aGlzLnNlbGVjdGVkRG93bnRpbWVWYWx1ZXMubGVuZ3RoKSB7XHJcbiAgICB0aGlzLmRvd250aW1lQXBpKCk7XHJcbiAgfVxyXG59XHJcblxyXG4gIHN0YXR1c1ZhbDogYW55O1xyXG4gIHNlYXJjaFN0YXR1c1RleHQ6IGFueT1cIlwiO1xyXG4gIGZpbHRlcmVkU3RhdHVzOiBhbnkgPSBbXTtcclxuZ2V0U3RhdHVzKCk6IHZvaWQge1xyXG4gIC8vIGJhc2Ugc3RhdHVzIGxpc3RcclxuICB0aGlzLnN0YXR1c1ZhbCA9IFtcclxuICAgIHsgc3RhdHVzOiAnYWN0aXZlJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICAgIHsgc3RhdHVzOiAnZGVhY3RpdmUnLCBjaGVja2VkOiBmYWxzZSB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3Qgc3RvcmVkRmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIik7XHJcblxyXG4gIGxldCBzdGF0dXNMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cyAmJiB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMubGVuZ3RoID4gMCkge1xyXG4gICAgc3RhdHVzTGlzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cztcclxuICB9IGVsc2UgaWYgKHN0b3JlZEZpbHRlcnMpIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3RvcmVkRmlsdGVycyk7XHJcbiAgICBzdGF0dXNMaXN0ID0gcGFyc2VkLnN0YXR1cyAmJiBwYXJzZWQuc3RhdHVzLmxlbmd0aCA+IDAgPyBwYXJzZWQuc3RhdHVzIDogWydhY3RpdmUnXTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3RhdHVzTGlzdCA9IFsnYWN0aXZlJ107XHJcbiAgfVxyXG5cclxuICAvLyB1cGRhdGUgc2VsZWN0ZWRGaWx0ZXJzIHRvIGFsd2F5cyBoYXZlIGEgdmFsdWVcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgPSBzdGF0dXNMaXN0O1xyXG5cclxuICAvLyBtYXJrIGNoZWNrZWQgYmFzZWQgb24gdmFsdWVzXHJcbiAgdGhpcy5maWx0ZXJlZFN0YXR1cyA9IHRoaXMuc3RhdHVzVmFsLm1hcCgoc3RhdHVzOiBhbnkpID0+ICh7XHJcbiAgICBzdGF0dXM6IHN0YXR1cy5zdGF0dXMsXHJcbiAgICBjaGVja2VkOiBzdGF0dXNMaXN0LmluY2x1ZGVzKHN0YXR1cy5zdGF0dXMpXHJcbiAgfSkpO1xyXG5cclxuICAvLyBpZiBhIHNlYXJjaCB0ZXh0IGFscmVhZHkgZXhpc3RzLCBmaWx0ZXIgaW1tZWRpYXRlbHlcclxuICBpZiAodGhpcy5zZWFyY2hTdGF0dXNUZXh0KSB7XHJcbiAgICB0aGlzLmZpbHRlclN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVmcmVzaCBkZXBlbmRlbnQgZHJvcGRvd25zXHJcbiAgdGhpcy5nZXRDb3VudHJ5KCk7XHJcbiAgdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIHRoaXMuZ2V0U3RvcmUoKTtcclxufVxyXG5zZWxlY3RlZFN0YXR1c0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgY29uc3Qgc2VsZWN0ZWRTdGF0dXMgPSB0aGlzLmZpbHRlcmVkU3RhdHVzXHJcbiAgICAuZmlsdGVyKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLmNoZWNrZWQpXHJcbiAgICAubWFwKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLnN0YXR1cyk7XHJcblxyXG4gIGlmIChzZWxlY3RlZFN0YXR1cy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNlbGVjdGVkU3RhdHVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkU3RhdHVzWzBdOyAgLy8gc2hvdyBcImFjdGl2ZVwiIG9yIFwiZGVhY3RpdmVcIlxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGAke3NlbGVjdGVkU3RhdHVzLmxlbmd0aH0gc3RhdHVzYDsgIC8vIGUuZy4gXCIyIHN0YXR1c1wiXHJcbn1cclxuc2VsZWN0ZWRTdGF0dXNMYWJlbDEoKTogc3RyaW5nIHtcclxuICBjb25zdCBzZWxlY3RlZFN0YXR1cyA9IHRoaXMuZmlsdGVyZWRTdGF0dXNcclxuICAgIC5maWx0ZXIoKHN0YXR1czogYW55KSA9PiBzdGF0dXMuY2hlY2tlZClcclxuICAgIC5tYXAoKHN0YXR1czogYW55KSA9PiBzdGF0dXMuc3RhdHVzKTtcclxuXHJcblxyXG4gIHJldHVybiBgJHtzZWxlY3RlZFN0YXR1cy5sZW5ndGh9YDsgIC8vIGUuZy4gXCIyIHN0YXR1c1wiXHJcbn1cclxuZmlsdGVyU3RhdHVzKCk6IHZvaWQge1xyXG4gIGNvbnN0IHNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFN0YXR1c1RleHQudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgIHRoaXMuZmlsdGVyZWRTdGF0dXMgPSB0aGlzLnN0YXR1c1ZhbFxyXG4gICAgICAubWFwKChzdGF0dXM6IGFueSkgPT4gKHtcclxuICAgICAgICAuLi5zdGF0dXMsXHJcbiAgICAgICAgY2hlY2tlZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzPy5pbmNsdWRlcyhzdGF0dXMuc3RhdHVzKSB8fCBmYWxzZVxyXG4gICAgICB9KSlcclxuICAgICAgLmZpbHRlcigoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5zdGF0dXMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuZmlsdGVyZWRTdGF0dXMgPSB0aGlzLnN0YXR1c1ZhbC5tYXAoKHN0YXR1czogYW55KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0dXMsXHJcbiAgICAgIGNoZWNrZWQ6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cz8uaW5jbHVkZXMoc3RhdHVzLnN0YXR1cykgfHwgZmFsc2VcclxuICAgIH0pKTtcclxuICB9XHJcbn1cclxuXHJcbiAgICBpc0FsbFN0YXR1c1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5maWx0ZXJlZFN0YXR1cy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRTdGF0dXMuZXZlcnkoKHN0YXR1czphbnkpID0+IHN0YXR1cy5jaGVja2VkKVxyXG4gICAgKTtcclxuICB9XHJcbiAgdG9nZ2xlU2VsZWN0QWxsU3RhdHVzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcblxyXG4gIC8vIFVwZGF0ZSBVSSBzdGF0ZVxyXG4gIHRoaXMuZmlsdGVyZWRTdGF0dXMuZm9yRWFjaCgoc3RhdHVzOiBhbnkpID0+IChzdGF0dXMuY2hlY2tlZCA9IGlzQ2hlY2tlZCkpO1xyXG5cclxuICAvLyBVcGRhdGUgc2VsZWN0ZWRGaWx0ZXJzIHdpdGggb25seSBjaGVja2VkIHN0YXR1cyB2YWx1ZXNcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgPSB0aGlzLmZpbHRlcmVkU3RhdHVzXHJcbiAgICAuZmlsdGVyKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLmNoZWNrZWQpXHJcbiAgICAubWFwKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLnN0YXR1cyk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZENvdW50cmllcygpO1xyXG4gIH1cclxuXHJcbnVwZGF0ZVNlbGVjdGVkU3RhdHVzKCkge1xyXG4gIC8vIGtlZXAgb25seSB0aGUgY2hlY2tlZCBzdGF0dXNlc1xyXG4gIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5maWx0ZXJlZFN0YXR1c1xyXG4gICAgLmZpbHRlcigoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5jaGVja2VkKVxyXG4gICAgLm1hcCgoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5zdGF0dXMpOyAgLy8g4pyFIHBpY2sgb25seSB0aGUgdmFsdWVcclxuXHJcbiAgLy8gdGhpcy5zdGF0dXNWYWwgPSBzZWxlY3RlZDtcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgPSBzZWxlY3RlZDtcclxuICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ291bnRyaWVzKCk7XHJcbn1cclxufVxyXG5pbnRlcmZhY2UgQ2l0eSB7XHJcbiAgY2l0eTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTG9jYXRpb24ge1xyXG4gIGNpdHk6IENpdHk7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxufVxyXG5pbnRlcmZhY2UgQ291bnRyeSB7XHJcbiAgY291bnRyeTogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1lLTNcIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cInNlbGVjdGVkQ291bnRyaWVzTGFiZWwoKVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0NsaWNrKCdjb3VudHJ5JywgJGV2ZW50KVwiPnt7c2VsZWN0ZWRDb3VudHJpZXNMYWJlbCgpfX0gXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVDb3VudHJ5KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxsYWJlbCAqbmdJZj1cInNlbGVjdGVkTG9jYXRpb25zTGFiZWwoKVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0NsaWNrKCdyZWdpb24nLCAkZXZlbnQpXCI+e3tzZWxlY3RlZExvY2F0aW9uc0xhYmVsKCl9fSBcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZUxvY2F0aW9uKClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxsYWJlbCAqbmdJZj1cInNlbGVjdGVkR3JvdXBzTGFiZWwoKVwiICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtMiBtdC0xIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dDbGljaygnY2x1c3RlcnMnLCAkZXZlbnQpXCI+e3tzZWxlY3RlZEdyb3Vwc0xhYmVsKCl9fSBcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZUdyb3VwKClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxsYWJlbCAoY2xpY2spPVwic2hvd0NsaWNrKCdzdG9yZXMnLCAkZXZlbnQpXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG10LTEgY3Vyc29yLXBvaW50ZXJcIj57e3NlbGVjdGVkU3RvcmVzTGFiZWwoKX19PC9sYWJlbD5cclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cIndyYXBwZXIgbWUtM1wiICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nXCI+XHJcbjxsaWItc2VsZWN0IFtpdGVtc109XCJjbGllbnRMaXN0XCIgW211bHRpXT1cImZhbHNlXCIgW3NlYXJjaEZpZWxkXT1cIidjbGllbnROYW1lJ1wiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFtpZEZpZWxkXT1cIidjbGllbnRJZCdcIlxyXG4oc2VsZWN0ZWQpPVwib25DbGllbnRTZWxlY3QoJGV2ZW50KVwiIFtzZWxlY3RlZFZhbHVlc109XCJbc2VsZWN0ZWRDbGllbnRdXCI+PC9saWItc2VsZWN0PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGlucHV0IGNsYXNzPVwiZngtZGF0ZS1yYW5nZSBmb3JtLWNvbnRyb2wgcHMtMTRcIiBzdHlsZT1cIm1pbi13aWR0aDogMjYwcHggIWltcG9ydGFudDtcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0XHJcbiAgICAgICAgbmd4RGF0ZXJhbmdlcGlja2VyTWQgW2Ryb3BzXT1cIidkb3duJ1wiIFtvcGVuc109XCIncmlnaHQnXCIgW3Jhbmdlc109XCJyYW5nZXNcIiBbc2hvd0N1c3RvbVJhbmdlTGFiZWxdPVwidHJ1ZVwiIFthdXRvQXBwbHldPVwidHJ1ZVwiXHJcbiAgICAgICAgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIiBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwidHJ1ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVSYW5nZVwiIChzdGFydERhdGVDaGFuZ2VkKT1cIm9uU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIiBbaXNDdXN0b21EYXRlXT1cImlzQ3VzdG9tRGF0ZVwiXHJcbiAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0RELU1NLVlZWVknLCBmaXJzdERheTogMSwgbW9udGhOYW1lczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10gfVwiXHJcbiAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBuYW1lPVwiZGF0ZXJhbmdlXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5kcm9wZG93bigkZXZlbnQpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbXgtMiByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTkgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG48cGF0aCBkPVwiTTE3LjUwMjYgMC44MzU5MzhIMC44MzU5MzhMNy41MDI2IDguNzE5MjdWMTQuMTY5M0wxMC44MzU5IDE1LjgzNTlWOC43MTkyN0wxNy41MDI2IDAuODM1OTM4WlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkZpbHRlcjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICBcclxuICA8ZGl2ICpuZ0lmPVwiT3BlbmRyb3Bkb3duXCIgY2xhc3M9XCJjYXJkIGRyb3Bkb3duMiBwb3NpdGlvbi1hYnNvbHV0ZSB6LTEgZW5kLTBcIiBzdHlsZT1cInotaW5kZXg6IDEgIWltcG9ydGFudDsgbWluLXdpZHRoOiAzNTBweDtcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcGRvd24xKClcIj5cclxuICAgIFxyXG4gICAgPCEtLSBIZWFkZXIgU2VjdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcHgtMyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwdC0xIHB4LTAgYm9yZGVyLWJvdHRvbSBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgPGg2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gIT09ICdkb3dudGltZSdcIiBjbGFzcz1cIm1iLTAgaGVhZGVyLWZpbHRlciBwcy0yIG15LTRcIj5GaWx0ZXIgYnk8L2g2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnZG93bnRpbWUnXCI+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBoZWFkZXItZmlsdGVyIHBzLTIgbXktNFwiPkZpbHRlciBieTwvaDY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyB0ZXh0LW11dGVkIG15LTJcIj4gXHJcbiAgICAgICAgPCEtLSBTZWFyY2ggZnJvbSAyMDAwIHN0b3JlcyAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ3N0YXR1cydcIj5cclxuICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIG1iLTIgZHJvcGRvd24tc2VhcmNoXCIgXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHN0YXR1c1wiIFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFN0YXR1c1RleHRcIiBcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyU3RhdHVzKClcIiBcclxuICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdjb3VudHJ5J1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiIFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNvdW50cnlcIiBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaENvdW50cnlUZXh0XCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyQ291bnRyaWVzKClcIiBcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ3JlZ2lvbidcIj5cclxuICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIiBcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCByZWdpb25cIiBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaExvY2F0aW9uVGV4dFwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckxvY2F0aW9ucygpXCIgXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdjbHVzdGVycydcIj5cclxuICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIiBcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjbHVzdGVyc1wiIFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoR3JvdXBUZXh0XCIgXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyR3JvdXBzKClcIiBcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ3N0b3JlcydcIj5cclxuICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiIFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggc3RvcmVzXCIgXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFN0b3JlVGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyU3RvcmVzKClcIiBcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdkb3dudGltZSdcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTUgcGItM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCIgXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBmcm9tIDIwMDAgc3RvcmVzXCIgXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFN0b3JlVGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZmlsdGVyU3RvcmVzKClcIiBcclxuICAgICAgICAgICAgLz4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTWFpbiBDb250ZW50IEFyZWEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDwhLS0gTGVmdCBTaWRlIC0gRmlsdGVyIENhdGVnb3JpZXMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBib3JkZXItZW5kIHBlLTNcIj5cclxuICAgICAgICA8IS0tIEZpbHRlciBTdGF0cyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNhdGVnb3JpZXMgcHgtMyBteS0yXCI+XHJcbiAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJmaWx0ZXItY2F0ZWdvcnktaXRlbSAgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duKCdzdGF0dXMnKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAnc3RhdHVzJywgXHJcbiAgICAndGV4dC1pdGVtJzogYWN0aXZlRHJvcGRvd24gIT09ICdzdGF0dXMnXHJcbiAgICAgICAgfVwiPlN0YXR1cyA8c3BhbiAqbmdJZj1cInNlbGVjdGVkU3RhdHVzTGFiZWwxKClcIiAgW25nQ2xhc3NdPVwiYWN0aXZlRHJvcGRvd249PT0gJ3N0YXR1cycgPyAndGV4dC1ib3JkZXItcHJpYW1yeScgOiAndGV4dC1ib3JkZXInXCIgY2xhc3M9XCJteC0yXCI+e3tzZWxlY3RlZFN0YXR1c0xhYmVsMSgpfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICBjbGFzcz1cImZpbHRlci1jYXRlZ29yeS1pdGVtICBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93RHJvcGRvd24oJ2NvdW50cnknKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAnY291bnRyeScsIFxyXG4gICAgJ3RleHQtaXRlbSc6IGFjdGl2ZURyb3Bkb3duICE9PSAnY291bnRyeSdcclxuICB9XCI+Q291bnRyeSA8c3BhbiAqbmdJZj1cInNlbGVjdGVkQ291bnRyaWVzTGFiZWwxKClcIiAgW25nQ2xhc3NdPVwiYWN0aXZlRHJvcGRvd249PT0gJ2NvdW50cnknID8gJ3RleHQtYm9yZGVyLXByaWFtcnknIDogJ3RleHQtYm9yZGVyJ1wiIGNsYXNzPVwibXgtMlwiPnt7c2VsZWN0ZWRDb3VudHJpZXNMYWJlbDEoKX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXRlZ29yeS1pdGVtICBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93RHJvcGRvd24oJ3JlZ2lvbicpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2FjdGl2ZS1pdGVtJzogYWN0aXZlRHJvcGRvd24gPT09ICdyZWdpb24nLCBcclxuICAgICd0ZXh0LWl0ZW0nOiBhY3RpdmVEcm9wZG93biAhPT0gJ3JlZ2lvbidcclxuICB9XCI+UmVnaW9uIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRMb2NhdGlvbnNMYWJlbDEoKVwiICBbbmdDbGFzc109XCJhY3RpdmVEcm9wZG93bj09PSAncmVnaW9uJyA/ICd0ZXh0LWJvcmRlci1wcmlhbXJ5JyA6ICd0ZXh0LWJvcmRlcidcIiBjbGFzcz1cIm14LTJcIj57eyBzZWxlY3RlZExvY2F0aW9uc0xhYmVsMSgpIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNhdGVnb3J5LWl0ZW0gIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dEcm9wZG93bignY2x1c3RlcnMnKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAnY2x1c3RlcnMnLCBcclxuICAgICd0ZXh0LWl0ZW0nOiBhY3RpdmVEcm9wZG93biAhPT0gJ2NsdXN0ZXJzJ1xyXG4gIH1cIj5DbHVzdGVycyA8c3BhbiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzTGFiZWwxKClcIiAgW25nQ2xhc3NdPVwiYWN0aXZlRHJvcGRvd249PT0gJ2NsdXN0ZXJzJyA/ICd0ZXh0LWJvcmRlci1wcmlhbXJ5JyA6ICd0ZXh0LWJvcmRlcidcIiBjbGFzcz1cIm14LTJcIj57eyBzZWxlY3RlZEdyb3Vwc0xhYmVsMSgpIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXRlZ29yeS1pdGVtICBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93RHJvcGRvd24oJ3N0b3JlcycpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2FjdGl2ZS1pdGVtJzogYWN0aXZlRHJvcGRvd24gPT09ICdzdG9yZXMnLCBcclxuICAgICd0ZXh0LWl0ZW0nOiBhY3RpdmVEcm9wZG93biAhPT0gJ3N0b3JlcydcclxuICB9XCIgPlN0b3JlcyA8c3BhbiAgW25nQ2xhc3NdPVwiYWN0aXZlRHJvcGRvd249PT0gJ3N0b3JlcycgPyAndGV4dC1ib3JkZXItcHJpYW1yeScgOiAndGV4dC1ib3JkZXInXCIgKm5nSWY9XCJzZWxlY3RlZFN0b3Jlc0xhYmVsMSgpXCIgY2xhc3M9XCJteC0yXCI+e3sgc2VsZWN0ZWRTdG9yZXNMYWJlbDEoKSB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2F0ZWdvcnktaXRlbSAgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duKCdkb3dudGltZScpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwie1xyXG4gICAgJ2FjdGl2ZS1pdGVtJzogYWN0aXZlRHJvcGRvd24gPT09ICdkb3dudGltZScsIFxyXG4gICAgJ3RleHQtaXRlbSc6IGFjdGl2ZURyb3Bkb3duICE9PSAnZG93bnRpbWUnXHJcbiAgfVwiID5Eb3dudGltZSAoSW4gTWlucykgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gRG93bnRpbWUgU2VjdGlvbiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZCBtYi0yXCI+RG93bnRpbWU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPkRvd250aW1lIHNlY3Rpb248L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBSaWdodCBTaWRlIC0gRHJvcGRvd24gQ29udGVudCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC03IHBzLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudC1hcmVhXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMDBweDtcIj5cclxuICAgICAgICAgIFxyXG48ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdzdGF0dXMnXCIgY2xhc3M9XCJkcm9wZG93bi1mdWxsLXZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkU3RhdHVzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsU3RhdHVzXCIgXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFN0YXR1c1NlbGVjdGVkKClcIiBcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU3RhdHVzKCRldmVudClcIiBcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxDb3VudHJpZXNGdWxsXCI+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZpbHRlcmVkU3RhdHVzPy5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTIwIGNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdCB0ZXh0LW5vd3JhcFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIGZpbHRlcmVkU3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICBbaWRdPVwic3RhdHVzLnN0YXR1c1wiIFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic3RhdHVzLmNoZWNrZWRcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRTdGF0dXMoKVwiIFxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHRleHQtY2FwaXRhbGl6ZVwiIFtmb3JdPVwic3RhdHVzLnN0YXR1c1wiPlxyXG4gICAgICAgIHt7IHN0YXR1cy5zdGF0dXMgfX1cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIENvdW50cnkgRHJvcGRvd24gQ29udGVudCAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ2NvdW50cnknXCIgY2xhc3M9XCJkcm9wZG93bi1mdWxsLXZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkQ291bnRyaWVzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbENvdW50cmllc0Z1bGxcIiBcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsQ291bnRyaWVzU2VsZWN0ZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxDb3VudHJpZXMoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbENvdW50cmllc0Z1bGxcIj5cclxuICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZENvdW50cmllcz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0IHRleHQtbm93cmFwXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweDsgb3ZlcmZsb3cteTogYXV0bztcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCIgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgZmlsdGVyZWRDb3VudHJpZXNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2NvdW50cnktZnVsbC0nICsgY291bnRyeS5jb3VudHJ5XCIgXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY291bnRyeS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZENvdW50cmllcygpXCIgXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBweS0xXCIgW2Zvcl09XCInY291bnRyeS1mdWxsLScgKyBjb3VudHJ5LmNvdW50cnlcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5jb3VudHJ5IH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gUmVnaW9uIERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdyZWdpb24nXCIgY2xhc3M9XCJkcm9wZG93bi1mdWxsLXZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkTG9jYXRpb25zPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbExvY2F0aW9uc0Z1bGxcIiBcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsTG9jYXRpb25zU2VsZWN0ZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxMb2NhdGlvbnMoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbExvY2F0aW9uc0Z1bGxcIj5cclxuICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZExvY2F0aW9ucz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0IHRleHQtbm93cmFwXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweDsgb3ZlcmZsb3cteTogYXV0bztcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCIgKm5nRm9yPVwibGV0IGxvY2F0aW9uIG9mIGZpbHRlcmVkTG9jYXRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidsb2NhdGlvbi1mdWxsLScgKyBsb2NhdGlvbi5jaXR5XCIgXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYXRpb24uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRMb2NhdGlvbnMoKVwiIFxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcHktMVwiIFtmb3JdPVwiJ2xvY2F0aW9uLWZ1bGwtJyArIGxvY2F0aW9uLmNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAge3sgbG9jYXRpb24uY2l0eSB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIENsdXN0ZXJzIERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdjbHVzdGVycydcIiBjbGFzcz1cImRyb3Bkb3duLWZ1bGwtdmlld1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyZWRHcm91cHM/Lmxlbmd0aFwiIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsR3JvdXBzRnVsbFwiIFxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxHcm91cHNTZWxlY3RlZCgpXCIgXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbEdyb3VwcygkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsR3JvdXBzRnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZEdyb3Vwcz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC0yMCBtYi02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC0yMCBjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhLXRhYmxlXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3QgdGV4dC1ub3dyYXBcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDI1MHB4OyBvdmVyZmxvdy15OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTJcIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZmlsdGVyZWRHcm91cHNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2dyb3VwLWZ1bGwtJyArIGdyb3VwLmdyb3VwTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdyb3VwLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkR3JvdXBzKClcIiBcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB5LTFcIiBbZm9yXT1cIidncm91cC1mdWxsLScgKyBncm91cC5ncm91cE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXAuZ3JvdXBOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gU3RvcmVzIERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdzdG9yZXMnXCIgY2xhc3M9XCJkcm9wZG93bi1mdWxsLXZpZXdcIj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyZWRTdG9yZXM/Lmxlbmd0aFwiIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsU3RvcmVzRnVsbFwiIFxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTdG9yZXNTZWxlY3RlZCgpXCIgXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFN0b3JlcygkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsU3RvcmVzRnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZFN0b3Jlcz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0IHRleHQtbm93cmFwXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweDsgb3ZlcmZsb3cteTogYXV0bztcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIGZpbHRlcmVkU3RvcmVzXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidzdG9yZS1mdWxsLScgKyBzdG9yZS5zdG9yZUlkXCIgXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RvcmUuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRTdG9yZXMoKVwiIFxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcHktMVwiIFtmb3JdPVwiJ3N0b3JlLWZ1bGwtJyArIHN0b3JlLnN0b3JlSWRcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc3RvcmUuc3RvcmVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRG93bnRpbWUgRHJvcGRvd24gQ29udGVudCAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ2Rvd250aW1lJ1wiIGNsYXNzPVwiZHJvcGRvd24tZnVsbC12aWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxEb3dudGltZUZ1bGxcIiBcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsRG93bnRpbWVTZWxlY3RlZCgpXCIgXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbERvd250aW1lKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsRG93bnRpbWVGdWxsXCI+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQWxsICBcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdCB0ZXh0LW5vd3JhcFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiICpuZ0Zvcj1cImxldCBkb3dudGltZSBvZiBkb3dudGltZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2Rvd250aW1lLWZ1bGwtJyArIGRvd250aW1lLnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZG93bnRpbWUuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWREb3dudGltZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB5LTFcIiBbZm9yXT1cIidkb3dudGltZS1mdWxsLScgKyBkb3dudGltZS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkb3dudGltZS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBWaWV3IHdoZW4gbm8gZHJvcGRvd24gc2VsZWN0ZWQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFjdGl2ZURyb3Bkb3duXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTVcIj5cclxuICAgICAgICAgICAgPGRpdj5TZWxlY3QgYSBmaWx0ZXIgY2F0ZWdvcnkgdG8gc2VlIG9wdGlvbnM8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwLTMgYm9yZGVyLXRvcCBtdC0zXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5ICBidG4tc20gcHMtMlwiIChjbGljayk9XCJSZXNldCgpXCI+UmVzZXQgRmlsdGVyczwvYnV0dG9uPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYnRuLXNtIG1lLTJcIiAoY2xpY2spPVwiY2xvc2VEcm9wZG93bjEoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cIkFwcGx5KClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
1260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXBwLXNoYXJlZC9zcmMvbGliL21vZHVsZXMvbGF5b3V0L3Rvb2xiYXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIvdHJhZmZpYy1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sc0JBQXNCO0lBNEN2QjtJQUE4QjtJQUMvQjtJQUNDO0lBN0NWLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRTtRQUNoQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRixpQkFBaUIsR0FBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztRQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRSxDQUFDO0lBQ3pDLGVB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QUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUN2QyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUgsb0JBQW9CO1FBQ2xCLGlDQUFpQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYzthQUNqQyxNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDdkMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSx3QkFBd0I7UUFFakUsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO3dHQS8yQ1ksc0JBQXNCOzRGQUF0QixzQkFBc0IsNkhDaEJuQywwaXNCQXVhTTs7NEZEdlpPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7c0tBc0Q5QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdzRCMUMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE9uSW5pdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcImRheWpzL2xvY2FsZS9lblwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdHJhZmZpYy1oZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RyYWZmaWMtaGVhZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi90cmFmZmljLWhlYWRlci5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhZmZpY0hlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBpc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgIGNvbnN0IGlzVmFsaWREYXRlID0gbSA+IHRoaXMuZGF5anMoKTtcclxuICAgIHJldHVybiBpc1ZhbGlkRGF0ZSA/IFwiaW52YWxpZC1kYXRlXCIgOiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0geyBzdGFydERhdGU6IGRheWpzKCkuc3VidHJhY3QoMzAsICdkYXlzJyksXHJcbiAgICBlbmREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSx9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuICAgIGdyb3VwOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXSxcclxuICAgIGNvdW50cnk6IFtdLFxyXG4gICAgc3RhdHVzOltdLFxyXG4gICAgZG93bnRpbWU6IFtdXHJcbiAgfTtcclxuICBPcGVuZHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsOyAvLyAnbG9jYXRpb24nIG9yICdncm91cCdcclxuICBzZWFyY2hMb2NhdGlvblRleHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgc2VhcmNoR3JvdXBUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGxvY2F0aW9uczogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZExvY2F0aW9uczogYW55ID0gW107XHJcbiAgZ3JvdXBzRGF0YTogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZEdyb3VwczogYW55ID0gW107XHJcbiAgZmlsdGVyZWRTdG9yZXM6IGFueSA9IFtdO1xyXG4gIHN0b3JlczphbnlbXSA9IFtdXHJcbiAgc2VhcmNoU3RvcmVUZXh0OnN0cmluZyA9ICcnO1xyXG4gIGNsaWVudExpc3Q6YW55ID0gW11cclxuICBzZWxlY3RlZENsaWVudDphbnlcclxuICBsb2NhdGlvbkxhYmVsOiBhbnlbXT1bXTtcclxuICBncm91cExhYmVsOiBhbnlbXT1bXTtcclxuICB1c2VyczogYW55O1xyXG4gIHVybDogYW55O1xyXG4gIGZpbHRlcmVkQ291bnRyaWVzOiBhbnkgPSBbXTtcclxuICBjb3VudHJ5TGFiZWw6IGFueVtdPVtdO1xyXG4gIHNlYXJjaENvdW50cnlUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvdW50cmllczogYW55W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2sgKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZighdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bjInKSkge1xyXG4gICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZURyb3Bkb3duMSgpe1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNldFJhbmdlc0Jhc2VkT25Sb3V0ZSgpO1xyXG5cclxuICAgIC8vIExpc3RlbiBmb3Igcm91dGUgY2hhbmdlcyB0byB1cGRhdGUgcmFuZ2VzXHJcbiAgICAvLyB0aGlzLnJvdXRlcj8uZXZlbnRzPy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAvLyAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgIC8vICAgICB0aGlzLnNldFJhbmdlc0Jhc2VkT25Sb3V0ZSgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KFwiP1wiKVswXS5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIGFzIHN0cmluZyk7XHJcbiAgICB0aGlzLnVzZXJzID0gdXNlcjtcclxuICAgIHRoaXMuZ3M/Lm1hbmFnZVJlZnJlc2hUcmlnZ2VyPy5zdWJzY3JpYmUoKGUpID0+IHsgICAgICBcclxuICAgICAgaWYgKGUpIHtcclxuICAgICAgICBpZiAodXNlci51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xpZW50KCk7XHJcbiAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgY29uc3Qgc3RvcmVkRmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIik7XHJcbiAgICAgICAgICBpZiAoc3RvcmVkRmlsdGVycykge1xyXG4gICAgICAgICAgY29uc3QgaGVhZGVyRmlsdGVycyA9IEpTT04ucGFyc2Uoc3RvcmVkRmlsdGVycyk7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gaGVhZGVyRmlsdGVycz8uc3RvcmVzLm1hcCgoc3RvcmU6YW55KSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5zdG9yZSxcclxuICAgICAgICAgICAgY2hlY2tlZDogc3RvcmUuY2hlY2tlZFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc3RvcmVEb3dudGltZUZyb21TdG9yYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuIFxyXG4gICAgLy8gRmV0Y2ggY2xpZW50IGRhdGEgaWYgdGhlIHVzZXIgaXMgb2YgdHlwZSAndGFuZ28nXHJcbiAgICBpZiAodXNlci51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gICAgICB0aGlzLmdldENsaWVudCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgICBcclxuICAgICAgY29uc3QgY2xpZW50RmlsdGVycyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpZW50LWRldGFpbHNcIik7XHJcbiAgICAgIGlmIChjbGllbnRGaWx0ZXJzKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyY2xpZW50RmlsdGVycyA9IEpTT04ucGFyc2UoY2xpZW50RmlsdGVycyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDbGllbnQgPSB7XHJcbiAgICAgIHRyYWZmaWNEYXRlUmFuZ2UgOiBoZWFkZXJjbGllbnRGaWx0ZXJzLnRyYWZmaWNEYXRlUmFuZ2VcclxuICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgLy8gTG9hZCBmaWx0ZXJzIGZyb20gbG9jYWxTdG9yYWdlIGlmIHRoZXkgZXhpc3RcclxuICAgIGNvbnN0IHN0b3JlZEZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpO1xyXG4gICAgaWYgKHN0b3JlZEZpbHRlcnMpIHtcclxuICAgICAgY29uc3QgaGVhZGVyRmlsdGVycyA9IEpTT04ucGFyc2Uoc3RvcmVkRmlsdGVycyk7XHJcbiAgXHJcbiAgICAgIC8vIEluaXRpYWxpemUgc2VsZWN0ZWRGaWx0ZXJzIHdpdGggZGVmYXVsdHMgb3IgZXhpc3RpbmcgdmFsdWVzXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0ge1xyXG4gICAgICAgIGNsaWVudDogaGVhZGVyRmlsdGVycy5jbGllbnQgfHwgdGhpcy51c2Vycy5jbGllbnQsXHJcbiAgICAgICAgY2xpZW50TmFtZTogaGVhZGVyRmlsdGVycy5jbGllbnROYW1lIHx8ICcnLFxyXG4gICAgICAgIGNsaWVudHM6IGhlYWRlckZpbHRlcnMuY2xpZW50cyB8fCBbXSxcclxuICAgICAgICBzdG9yZTogaGVhZGVyRmlsdGVycy5zdG9yZSB8fCBudWxsLFxyXG4gICAgICAgIGRhdGU6IGhlYWRlckZpbHRlcnMuZGF0ZSB8fCB7fSxcclxuICAgICAgICBzdG9yZXM6IGhlYWRlckZpbHRlcnMuc3RvcmVzIHx8IFtdLFxyXG4gICAgICAgIGdyb3VwOiBoZWFkZXJGaWx0ZXJzLmdyb3VwIHx8IFtdLFxyXG4gICAgICAgIGxvY2F0aW9uOiBoZWFkZXJGaWx0ZXJzLmxvY2F0aW9uIHx8IFtdLFxyXG4gICAgICAgIGNvdW50cnk6IGhlYWRlckZpbHRlcnMuY291bnRyeSB8fCBbXSxcclxuICAgICAgICBzdGF0dXM6IGhlYWRlckZpbHRlcnMuc3RhdHVzIHx8IFtcImFjdGl2ZVwiXSxcclxuICAgICAgICBkb3dudGltZTogaGVhZGVyRmlsdGVycy5kb3dudGltZSB8fCBbXVxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBTeW5jIGZpbHRlcmVkIGRhdGEgd2l0aCBzdG9yZWQgc2VsZWN0aW9uc1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gdGhpcy5zeW5jV2l0aExvY2FsU3RvcmFnZShoZWFkZXJGaWx0ZXJzLmNvdW50cnkpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5zeW5jV2l0aExvY2FsU3RvcmFnZShoZWFkZXJGaWx0ZXJzLmxvY2F0aW9uKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IHRoaXMuc3luY1dpdGhMb2NhbFN0b3JhZ2UoaGVhZGVyRmlsdGVycy5ncm91cCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRTdG9yZXMgPSB0aGlzLnN5bmNXaXRoTG9jYWxTdG9yYWdlKGhlYWRlckZpbHRlcnMuc3RvcmVzKTtcclxuICAgICAgdGhpcy5kb3dudGltZURhdGEgPSB0aGlzLnN5bmNXaXRoTG9jYWxTdG9yYWdlKGhlYWRlckZpbHRlcnMuZG93bnRpbWUpO1xyXG4gICAgIHRoaXMucmVzdG9yZURvd250aW1lRnJvbVN0b3JhZ2UoKTtcclxuICAgICAgLy8gRm9ybWF0IGRhdGUgcmFuZ2UgaWYgaXQgZXhpc3RzXHJcbiAgICAgIGlmIChoZWFkZXJGaWx0ZXJzLmRhdGUpIHtcclxuICAgIFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLnN0YXJ0RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKGhlYWRlckZpbHRlcnMuZGF0ZS5lbmREYXRlLCBcIllZWVktTU0tRERcIikuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anModGhpcy5zZWxlY3RlZERhdGVSYW5nZS5zdGFydERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgLy8gY29uc29sZS5sb2coXCIzXCIpXHJcbiAgICAgIC8vIEVtaXQgZGF0YSB2aWEgc2VydmljZSBhbmQgdXBkYXRlIGxvY2FsU3RvcmFnZVxyXG50aGlzLmVtaXRBbmRTdG9yZUZpbHRlcnMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgZW1wdHkgc3RhdGVzIGlmIG5vIGhlYWRlciBmaWx0ZXJzIGFyZSBwcmVzZW50IGluIGxvY2FsU3RvcmFnZVxyXG4gICAgICB0aGlzLnJlc2V0RmlsdGVycygpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIjJcIilcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duKCdzdG9yZXMnKTsgIFxyXG4gIH1cclxuICBwcml2YXRlIHN5bmNXaXRoTG9jYWxTdG9yYWdlKGl0ZW1zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtc1xyXG4gICAgICA/IGl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICA6IFtdO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGVtaXRBbmRTdG9yZUZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIxXCIpXHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHNlbGVjdGVkRmlsdGVycyBhbmQgYWxsIHJlbGF0ZWQgYXJyYXlzIHRvIGVtcHR5IHN0YXRlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMgPSB7XHJcbiAgICAgIGNsaWVudDogbnVsbCxcclxuICAgICAgY2xpZW50TmFtZTogJycsXHJcbiAgICAgIGNsaWVudHM6IFtdLFxyXG4gICAgICBzdG9yZTogbnVsbCxcclxuICAgICAgZGF0ZToge30sXHJcbiAgICAgIHN0b3JlczogW10sXHJcbiAgICAgIGdyb3VwOiBbXSxcclxuICAgICAgbG9jYXRpb246IFtdLFxyXG4gICAgICBjb3VudHJ5OiBbXSxcclxuICAgICAgc3RhdHVzOltdLFxyXG4gICAgICBkb3dudGltZTogW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWx0ZXJlZExvY2F0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5kb3dudGltZURhdGEgPSBbXTtcclxuICB9XHJcbmdldENsaWVudCgpe1xyXG4gIHRoaXMuYXV0aC5nZXRDbGllbnRzKCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRMaXN0ID0gZS5kYXRhLnJlc3VsdDtcclxuICAgICAgICBjb25zdCBoZWFkZXJGaWx0ZXJzOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCJcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoZWFkZXJGaWx0ZXJzLmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRMaXN0LmZpbmQoKG9iajogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvYmouY2xpZW50SWQgPT09IGhlYWRlckZpbHRlcnMuY2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IG9iajtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBjb25zdCBzdGFydERhdGUgPSB0aGlzLmRheWpzKGhlYWRlckZpbHRlcnMuZGF0ZS5zdGFydERhdGUpO1xyXG4gICAgICAgICAgLy8gY29uc3QgZW5kRGF0ZSA9IHRoaXMuZGF5anMoaGVhZGVyRmlsdGVycy5kYXRlLmVuZERhdGUpO1xyXG4gICAgICAgICAgLy8gY29uc3QgZGlmZmVyZW5jZUluRGF5cyA9IGVuZERhdGUuZGlmZihzdGFydERhdGUsICdkYXlzJyk7XHJcbiAgICAgICAgICAvLyBpZiAoZGlmZmVyZW5jZUluRGF5cyA+PSA5MCAmJiB0aGlzLnNlbGVjdGVkQ2xpZW50Py50cmFmZmljRGF0ZVJhbmdlID09PSA5MCkge1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgLy8gICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyhoZWFkZXJGaWx0ZXJzLmRhdGUuc3RhcnREYXRlLCBcIllZWVktTU0tRERcIikuc3VidHJhY3QoLTkwLCAnZGF5cycpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyhoZWFkZXJGaWx0ZXJzLmRhdGUuZW5kRGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgIH07XHJcbiAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgICAgLy8gICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSwgXCJZWVlZLU1NLUREXCIpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAvLyAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgLy8gICB9O1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID0gaGVhZGVyRmlsdGVycy5jbGllbnQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnROYW1lID0gaGVhZGVyRmlsdGVycy5jbGllbnROYW1lO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50cyA9IGhlYWRlckZpbHRlcnMuY2xpZW50cztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlID0gaGVhZGVyRmlsdGVycy5zdG9yZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRhdGUgPSBoZWFkZXJGaWx0ZXJzLmRhdGU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlcztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gaGVhZGVyRmlsdGVycy5ncm91cDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gaGVhZGVyRmlsdGVycy5sb2NhdGlvbjtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSBoZWFkZXJGaWx0ZXJzLmNvdW50cnk7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gaGVhZGVyRmlsdGVycy5zdGF0dXMgfHwgW1wiYWN0aXZlXCJdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPSBoZWFkZXJGaWx0ZXJzLmRvd250aW1lO1xyXG4gICAgICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMlwiKVxyXG4gICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgIHRoaXMucmVzdG9yZURvd250aW1lRnJvbVN0b3JhZ2UoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gdGhpcy5jbGllbnRMaXN0WzBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA9ICB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudElkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWVcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50cyA9IGhlYWRlckZpbHRlcnMuY2xpZW50cztcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmUgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0gaGVhZGVyRmlsdGVycy5kYXRlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBoZWFkZXJGaWx0ZXJzLnN0b3JlcztcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZ3JvdXAgPSBoZWFkZXJGaWx0ZXJzLmdyb3VwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbiA9IGhlYWRlckZpbHRlcnMubG9jYXRpb247XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSBoZWFkZXJGaWx0ZXJzLmNvdW50cnk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgPSBoZWFkZXJGaWx0ZXJzLnN0YXR1cyB8fCBbXCJhY3RpdmVcIl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRvd250aW1lID0gaGVhZGVyRmlsdGVycy5kb3dudGltZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwiaGVhZGVyLWZpbHRlcnNcIixcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSBcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCIzXCIpXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuIHRoaXMuZ2V0U3RhdHVzKCk7XHJcbiAgICB0aGlzLnJlc3RvcmVEb3dudGltZUZyb21TdG9yYWdlKCk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENsaWVudCA9IHRoaXMuY2xpZW50TGlzdFswXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID0gIHRoaXMuc2VsZWN0ZWRDbGllbnQuY2xpZW50SWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWVcclxuICAgICAgIC8vIEVuc3VyZSBsb2NhdGlvbnMgYW5kIGdyb3VwcyBhcmUgbG9hZGVkIGJlZm9yZSBmZXRjaGluZyBzdG9yZXNcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgXCJoZWFkZXItZmlsdGVyc1wiLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSBcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCI0XCIpXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIHRoaXMuZ2V0VXNlckluZm8odGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50KTtcclxuXHJcbiAgICB9LFxyXG4gIH0pO1xyXG59XHJcbmdldFVzZXJJbmZvKGNsaWVudDphbnkpe1xyXG4gIGxldCBvYmogPXtcclxuICAgICAgY2xpZW50SWQ6IGNsaWVudCA/IGNsaWVudCA6JydcclxuICB9XHJcbiAgaWYoY2xpZW50KXtcclxuICAgIHRoaXMuYXV0aC5nZXRIZWFkZXJVc2VycyhvYmopLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICBcInVzZXJzRW1haWwtaW5mb1wiLFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZT8uZGF0YT8udXNlckVtYWlsRGF0YSB8fCBbXSlcclxuICAgICAgICApO1xyXG4gICAgICB9IFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxub25DbGllbnRTZWxlY3QoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgY2xpZW50XHJcbiAgdGhpcy5zZWxlY3RlZENsaWVudCA9IGV2ZW50O1xyXG4gIC8vIENsZWFyIHByZXZpb3VzIGZpbHRlcmVkIGRhdGEgYW5kIHNlbGVjdGlvbnNcclxuICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gW107XHJcbiAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSBbXTtcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gW107XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRvd250aW1lID0gW107XHJcbnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cyA9IFsnYWN0aXZlJ107XHJcblxyXG4gIC8vIEZldGNoIGhlYWRlciBmaWx0ZXJzIGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgY29uc3QgaGVhZGVyRmlsdGVyczogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIik7XHJcbiAgXHJcbiAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBmaWx0ZXJzIHdpdGggdGhlIG5ldyBjbGllbnRcclxuICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudElkO1xyXG4gIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudE5hbWUgPSB0aGlzLnNlbGVjdGVkQ2xpZW50LmNsaWVudE5hbWU7XHJcbiAgXHJcbiAgLy8gUmVtb3ZlIG9sZCBzdG9yZSwgZ3JvdXAsIGFuZCBsb2NhdGlvbiBkYXRhIGZyb20gdGhlIGhlYWRlciBmaWx0ZXJzXHJcbiAgZGVsZXRlIGhlYWRlckZpbHRlcnMuc3RvcmVzO1xyXG4gIGRlbGV0ZSBoZWFkZXJGaWx0ZXJzLmdyb3VwcztcclxuICBkZWxldGUgaGVhZGVyRmlsdGVycy5sb2NhdGlvbjtcclxuICBkZWxldGUgaGVhZGVyRmlsdGVycy5jb3VudHJ5O1xyXG4gIGRlbGV0ZSBoZWFkZXJGaWx0ZXJzLmRvd250aW1lO1xyXG4gZGVsZXRlIGhlYWRlckZpbHRlcnMuc3RhdHVzO1xyXG4gIFxyXG4gIC8vIEZldGNoIG5ldyBkYXRhIGJhc2VkIG9uIHRoZSBuZXcgY2xpZW50XHJcbiAgLy8gdGhpcy5nZXRDb3VudHJ5KCk7XHJcbiAgLy8gdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAvLyB0aGlzLmdldFN0b3JlKCk7XHJcbiAgLy8gdGhpcy5nZXRHcm91cHMoKTtcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG4gIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2Ugd2l0aCB0aGUgbmV3IGNsaWVudCBzZWxlY3Rpb24gYW5kIGVtcHR5IGZpbHRlciBkYXRhXHJcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcclxuICAvLyBFbWl0IGRhdGEgdG8gdGhlIGdsb2JhbCBzZXJ2aWNlXHJcbiAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gdG8gcmVmbGVjdCBVSSBjaGFuZ2VzXHJcbiAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbn1cclxuXHJcblxyXG5cclxucmFuZ2VzOmFueSA9IHtcclxuICBUb2RheTogW2RheWpzKCksIGRheWpzKCldLFxyXG4gIFllc3RlcmRheTogW2RheWpzKCkuc3VidHJhY3QoMSwgJ2RheXMnKSwgZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcclxuICAnVGhpcyBXZWVrJzogW2RheWpzKCkuc3VidHJhY3QoNywgJ2RheXMnKSwgZGF5anMoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcclxuICAnTGFzdCBXZWVrJzogW1xyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxNCwgJ2RheXMnKS5zdGFydE9mKCdkYXknKSxcclxuICAgIGRheWpzKCkuc3VidHJhY3QoOCwgJ2RheXMnKS5lbmRPZignZGF5JyksXHJcbiAgXSxcclxuICAnVGhpcyBNb250aCc6IFtkYXlqcygpLnN1YnRyYWN0KDMwLCAnZGF5cycpLCBkYXlqcygpLnN1YnRyYWN0KDEsICdkYXlzJyldLFxyXG4gICdMYXN0IE1vbnRoJzogW1xyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5zdGFydE9mKCdtb250aCcpLFxyXG4gICAgZGF5anMoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5lbmRPZignbW9udGgnKSxcclxuICBdLFxyXG59O1xyXG5cclxuICBvblN0YXJ0RGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICBpZih0aGlzLnNlbGVjdGVkQ2xpZW50Py50cmF4RGF0ZVJhbmdlID09PSA5MCl7XHJcbiAgICAgICAgICAgICB0aGlzLmlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgbSA+IHRoaXMuZGF5anMoKSB8fCBtID4gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUuYWRkKDkwLCBcImRheXNcIikpO1xyXG4gICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNWYWxpZERhdGUgPVxyXG4gICAgICAgICAgbSA+IHRoaXMuZGF5anMoKSB8fCBtID4gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUuYWRkKDE4MCwgXCJkYXlzXCIpKTtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICAgIH07XHJcbiAgICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZGF5anMoZXZlbnQuc3RhcnREYXRlKS5pc1ZhbGlkKCkgJiZcclxuICAgICAgICB0aGlzLmRheWpzKGV2ZW50LmVuZERhdGUpLmlzVmFsaWQoKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RGF0ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmVuZERhdGUgPSBldmVudC5lbmREYXRlO1xyXG4gICAgICAgIHZhciBkYXRldGltZSA9IHtcclxuICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUsIFwiREQtTU0tWVlZWVwiKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIFwiWVlZWS1NTS1ERFwiXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcyhldmVudC5lbmREYXRlLCBcIkRELU1NLVlZWVlcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmRhdGUgPSBkYXRldGltZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwiaGVhZGVyLWZpbHRlcnNcIixcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgfVxyXG4gIG9wZW5kcm9wZG93bihlOk1vdXNlRXZlbnQpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9ICF0aGlzLk9wZW5kcm9wZG93bjtcclxuICB9XHJcbiAgZ2V0TG9jYXRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7ICBcclxuICAgIC8vIGNvbnN0IGhlYWRlckZpbHRlcnM6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcInt9XCIpO1xyXG4gICAgbGV0IG9iaiA9e1xyXG4gICAgIGNsaWVudElkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnQgOnRoaXMudXNlcnMuY2xpZW50SWQsXHJcbiAgICAgY291bnRyeSxcclxuICAgICBjaXR5OiBbXSxcclxuICAgICBncm91cDogW10sXHJcbiAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9XHJcbiAgICB0aGlzLmF1dGguZ2V0TG9jYXRpb24ob2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgY2l0eUxpc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVycz8ubG9jYXRpb24/LmZpbHRlcigobG9jYXRpb246YW55KSA9PiBsb2NhdGlvbi5jaGVja2VkKS5tYXAoKGxvYzphbnkpID0+IGxvYy5jaXR5KTtcclxuICAgICAgICAvLyBNYXAgdGhlIGZldGNoZWQgbG9jYXRpb25zIHdpdGggZGVmYXVsdCB1bmNoZWNrZWQgc3RhdGVcclxuICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IHJlcz8uZGF0YT8ubG9jYXRpb25EYXRhLm1hcCgoY2l0eTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgY2l0eTogY2l0eS5jaXR5LFxyXG4gICAgICAgICAgLy8gY2hlY2tlZDogY2l0eUxpc3Q/Lmxlbmd0aCA/IGNpdHlMaXN0LmluY2x1ZGVzKGNpdHkuY2l0eSkgOiB0cnVlLFxyXG4gICAgICAgICAgY2hlY2tlZDogY2l0eUxpc3Q/LmluY2x1ZGVzKGNpdHkuY2l0eSkgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgfSkpO1xyXG4gIFxyXG4gICAgICAgIC8vIFN5bmMgdGhlIGZldGNoZWQgbG9jYXRpb25zIHdpdGggYW55IHN0b3JlZCBjaGVja2VkIHZhbHVlcyBpbiBsb2NhbFN0b3JhZ2VcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24gJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbikpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucy5tYXAobG9jYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkTG9jYXRpb24gPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5sb2NhdGlvbi5maW5kKChsb2M6IGFueSkgPT4gbG9jLmNpdHkgPT09IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlZExvY2F0aW9uID8geyAuLi5sb2NhdGlvbiwgY2hlY2tlZDogbWF0Y2hlZExvY2F0aW9uLmNoZWNrZWQgfSA6IGxvY2F0aW9uO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMuc2VhcmNoTG9jYXRpb25UZXh0KSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnMuZmlsdGVyKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC50b0xvd2VyQ2FzZSgpKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucy5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaGVja2VkKS5tYXAoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaXR5KTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlKCk7IC8vIEZldGNoIHN0b3JlcyBiYXNlZCBvbiBzZWxlY3RlZCBncm91cHNcclxuICAgICAgICAgIH0sMTAwMClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCFzZWxlY3RlZExvY2F0aW9ucy5sZW5ndGggJiYgY291bnRyeS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggbG9jYXRpb25zXCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgaXNBbGxMb2NhdGlvbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkTG9jYXRpb25zLmV2ZXJ5KChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNoZWNrZWQpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgc2VsZWN0ZWRMb2NhdGlvbnNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9uTGFiZWwgPSB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC5sZW5ndGggPyB0aGlzLmxvY2F0aW9uc1xyXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNoZWNrZWQpLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaXR5KSA6ICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zXHJcbiAgICAgIC5maWx0ZXIoKGxvY2F0aW9uOmFueSkgPT4gbG9jYXRpb24uY2hlY2tlZCkubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID09PSAxXHJcbiAgICAgID8gc2VsZWN0ZWRMb2NhdGlvbnNbMF1cclxuICAgICAgOiBgJHtzZWxlY3RlZExvY2F0aW9ucy5sZW5ndGh9IFJlZ2lvbnNgO1xyXG4gIH1cclxuICBzZWxlY3RlZExvY2F0aW9uc0xhYmVsMSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9uTGFiZWwgPSB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dC5sZW5ndGggPyB0aGlzLmxvY2F0aW9uc1xyXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNoZWNrZWQpLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaXR5KSA6ICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zXHJcbiAgICAgIC5maWx0ZXIoKGxvY2F0aW9uOmFueSkgPT4gbG9jYXRpb24uY2hlY2tlZCkubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/ICcnXHJcbiAgICAgIDogYCR7c2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RofWA7XHJcbiAgfVxyXG4gIHJlbW92ZUxvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5SZXNldCgpO1xyXG4gIH1cclxuICBcclxuICBnZXRHcm91cHMoKTogdm9pZCB7ICBcclxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLmNvdW50cmllc1xyXG4gICAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgICAubWFwKGNvdW50cnkgPT4gY291bnRyeS5jb3VudHJ5KTsgIFxyXG4gICAgbGV0IGNpdHk7XHJcbiAgICBjaXR5ID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNpdHkpO1xyXG5cclxuICAgICAgaWYoIWNpdHkubGVuZ3RoICYmIGNvdW50cnkubGVuZ3RoKSB7XHJcbiAgICAgICAgY2l0eSA9IHRoaXMubG9jYXRpb25zLm1hcCgobG9jKSA9PiBsb2MuY2l0eSk7XHJcbiAgICAgIH1cclxuICAgIGNvbnN0IG9iaiA9IHsgY291bnRyeSxjaXR5LGNsaWVudElkOnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA/IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCA6dGhpcy51c2Vycy5jbGllbnRJZCxncm91cDpbXSxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICAgfTtcclxuICAgIHRoaXMuYXV0aC5nZXRHcm91cHMob2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgY2hlY2tlZEdyb3VwID0gdGhpcy5zZWxlY3RlZEZpbHRlcnM/Lmdyb3VwPy5maWx0ZXIoKGdyb3VwOmFueSkgPT4gZ3JvdXAuY2hlY2tlZCkubWFwKChncm91cDphbnkpID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgICAgY29uc3QgY29tYmluZWRHcm91cHMgPSByZXM/LmRhdGE/Lmdyb3VwRGF0YT8ubWFwKChncm91cE5hbWU6IGFueSkgPT4gKHtcclxuICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXBOYW1lLmdyb3VwTmFtZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGNoZWNrZWRHcm91cD8uaW5jbHVkZXMoZ3JvdXBOYW1lLmdyb3VwTmFtZSkgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICAvLyBjaGVja2VkOiBjaGVja2VkR3JvdXA/Lmxlbmd0aCA/IGNoZWNrZWRHcm91cC5pbmNsdWRlcyhncm91cE5hbWUuZ3JvdXBOYW1lKSA6IHRydWUsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBzRGF0YSA9IGNvbWJpbmVkR3JvdXBzO1xyXG4gICAgICAgIGlmKHRoaXMuc2VhcmNoR3JvdXBUZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IGNvbWJpbmVkR3JvdXBzLmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0uZ3JvdXBOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hHcm91cFRleHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gY29tYmluZWRHcm91cHM7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIC8vIEF1dG8tZmV0Y2ggc3RvcmVzIHdoZW4gZ3JvdXBzIGFyZSBzZWxlY3RlZFxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gdGhpcy5ncm91cHNEYXRhLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmNoZWNrZWQpLm1hcCgoZ3JvdXApID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZSgpOyAvLyBGZXRjaCBzdG9yZXMgYmFzZWQgb24gc2VsZWN0ZWQgZ3JvdXBzXHJcbiAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZ3JvdXBzXCIsIGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKHR5cGU6ICdjb3VudHJ5JyB8ICdsb2NhdGlvbicgfCAnZ3JvdXAnIHwgJ3N0b3JlJ3wgJ3N0YXR1cycpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duT3BlbiA9PT0gdHlwZSkge1xyXG4gICAgICAvLyBJZiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgY2xvc2UgaXQgYW5kIGF2b2lkIHJlc2V0dGluZyB0aGUgc2VsZWN0ZWQgdmFsdWVzIHVubmVjZXNzYXJpbHlcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3BlbiB0aGUgc3BlY2lmaWMgZHJvcGRvd24gYW5kIGhhbmRsZSBkYXRhIGZldGNoaW5nIG9ubHkgaWYgbmVjZXNzYXJ5XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gdHlwZTtcclxuaWYodHlwZSA9PT1cInN0YXR1c1wiKXtcclxuXHJcbiAgdGhpcy5nZXRTdGF0dXMoKTtcclxufVxyXG4gICAgICBpZiAodHlwZSA9PT0gJ2NvdW50cnknKSB7XHJcbiAgICAgICAgLy8gRmV0Y2ggY291bnRyaWVzIG9ubHkgaWYgbm90IGFscmVhZHkgZmV0Y2hlZCBhbmQgbm8gc2VhcmNoIHRleHQgZXhpc3RzXHJcbiAgICAgICAgaWYgKCghdGhpcy5maWx0ZXJlZENvdW50cmllcyB8fCB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmxlbmd0aCA9PT0gMCkgJiYgIXRoaXMuc2VhcmNoQ291bnRyeVRleHQudHJpbSgpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENvdW50cnkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgaWYgKHR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgICAvLyBGZXRjaCBncm91cHMgb25seSBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgY2l0aWVzIGFuZCBubyBhY3RpdmUgc2VhcmNoIHRleHRcclxuICAgICAgICBjb25zdCBzZWxlY3RlZENpdGllcyA9IHRoaXMubG9jYXRpb25zXHJcbiAgICAgICAgICAuZmlsdGVyKChsb2NhdGlvbikgPT4gbG9jYXRpb24uY2hlY2tlZClcclxuICAgICAgICAgIC5tYXAoKGxvY2F0aW9uKSA9PiBsb2NhdGlvbi5jaXR5KTtcclxuICBcclxuICAgICAgICAvLyBGZXRjaCBncm91cHMgb25seSBpZiBsb2NhdGlvbnMgYXJlIHNlbGVjdGVkLCBubyBzZWFyY2ggdGV4dCBleGlzdHMsIGFuZCBkcm9wZG93biBpcyBvcGVuZWRcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMubGVuZ3RoID4gMCB8fCAoc2VsZWN0ZWRDaXRpZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5zZWFyY2hHcm91cFRleHQudHJpbSgpKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IFtdOyAvLyBDbGVhciBncm91cHMgaWYgbm8gbG9jYXRpb25zIGFyZSBzZWxlY3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgLy8gRmV0Y2ggc3RvcmVzIG9ubHkgaWYgbm90IGFscmVhZHkgZmV0Y2hlZCBhbmQgbm8gc2VhcmNoIHRleHQgaXMgYWN0aXZlXHJcbiAgICAgIGlmICgoIXRoaXMuZmlsdGVyZWRTdG9yZXMgfHwgdGhpcy5maWx0ZXJlZFN0b3Jlcy5sZW5ndGggPT09IDApICYmICF0aGlzLnNlYXJjaFN0b3JlVGV4dC50cmltKCkpIHtcclxuICAgICAgICB0aGlzLmdldFN0b3JlKCk7XHJcbiAgICAgIH0gXHJcbiAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIGhhbmRsZUdyb3VwRHJvcGRvd25DbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duT3BlbiA9PT0gJ2dyb3VwJykge1xyXG4gICAgICB0aGlzLnJlc2V0U2VsZWN0ZWRHcm91cHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oJ2dyb3VwJyk7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3Vwcy5mb3JFYWNoKChncm91cDphbnkpID0+IChncm91cC5jaGVja2VkID0gZmFsc2UpKTtcclxuICAgIHRoaXMuc2VhcmNoR3JvdXBUZXh0ID0gXCJcIjtcclxuICB9XHJcbiAgc2VsZWN0ZWRHcm91cHNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSB0aGlzLmdyb3VwTGFiZWwgPSB0aGlzLnNlYXJjaEdyb3VwVGV4dC5sZW5ndGggPyB0aGlzLmdyb3Vwc0RhdGEuZmlsdGVyKChncm91cCkgPT4gZ3JvdXAuY2hlY2tlZCkgOiB0aGlzLmZpbHRlcmVkR3JvdXBzLmZpbHRlcigoZ3JvdXA6YW55KSA9PiBncm91cC5jaGVja2VkKTtcclxuICAgIHJldHVybiBzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPT09IDBcclxuICAgICAgPyBcIlwiXHJcbiAgICAgIDogc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAxXHJcbiAgICAgID8gc2VsZWN0ZWRHcm91cHNbMF0uZ3JvdXBOYW1lXHJcbiAgICAgIDogYCR7c2VsZWN0ZWRHcm91cHMubGVuZ3RofSBDbHVzdGVyc2A7XHJcbiAgfVxyXG4gICAgc2VsZWN0ZWRHcm91cHNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gdGhpcy5ncm91cExhYmVsID0gdGhpcy5zZWFyY2hHcm91cFRleHQubGVuZ3RoID8gdGhpcy5ncm91cHNEYXRhLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmNoZWNrZWQpIDogdGhpcy5maWx0ZXJlZEdyb3Vwcy5maWx0ZXIoKGdyb3VwOmFueSkgPT4gZ3JvdXAuY2hlY2tlZCk7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAwXHJcbiAgICAgID8gXCJcIlxyXG4gICAgICA6IGAke3NlbGVjdGVkR3JvdXBzLmxlbmd0aH1gO1xyXG4gIH1cclxuICByZW1vdmVHcm91cCgpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzZXQoKTtcclxuICAgXHJcbiAgfVxyXG4gIFxyXG5cclxuICBpc0FsbEdyb3Vwc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEdyb3Vwcy5sZW5ndGggPyB0aGlzLmZpbHRlcmVkR3JvdXBzLmV2ZXJ5KChncm91cDphbnkpID0+IGdyb3VwLmNoZWNrZWQpIDogZmFsc2U7XHJcbiAgfVxyXG4gICAgICAgIFxyXG4gIGdldFN0b3JlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAuZmlsdGVyKGNvdW50cnkgPT4gY291bnRyeS5jaGVja2VkKVxyXG4gICAgLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgICBjb25zdCBjaXR5ID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKGxvY2F0aW9uID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwc0RhdGFcclxuICAgICAgLmZpbHRlcihncm91cCA9PiBncm91cC5jaGVja2VkKVxyXG4gICAgICAubWFwKGdyb3VwID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBjb3VudHJ5LFxyXG4gICAgICBjaXR5LFxyXG4gICAgICBjbHVzdGVyczogZ3JvdXAsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLnVzZXJzLmNsaWVudElkIHx8IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdGhpcy5hdXRoLmdldEhlYWRlclN0b3JlcyhkYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIC8vIEluaXRpYWxpemUgc3RvcmVzIGZyb20gQVBJIHJlc3BvbnNlXHJcbiAgICAgICAgICB0aGlzLnN0b3JlcyA9IHJlcy5kYXRhLnN0b3Jlc0RhdGE7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgcHJldmlvdXNseSBzZWxlY3RlZCBzdG9yZXNcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRTdG9yZUlkcyA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5zdG9yZXNcclxuICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgLy8gU3luYyB0aGUgYGNoZWNrZWRgIHN0YXRlXHJcbiAgICAgICAgICB0aGlzLnN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGNoZWNrZWRTdG9yZUlkcy5sZW5ndGhcclxuICAgICAgICAgICAgICA/IGNoZWNrZWRTdG9yZUlkcy5pbmNsdWRlcyhzdG9yZS5zdG9yZUlkKSAvLyBVc2UgcHJldmlvdXMgc2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgOiB0cnVlOyAvLyBEZWZhdWx0IHRvIHRydWUgaWYgbm8gcHJldmlvdXMgc2VsZWN0aW9uXHJcbiAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAgIC8vIEFwcGx5IHNlYXJjaCBmaWx0ZXIgaWYgc2VhcmNoIHRleHQgaXMgcHJlc2VudFxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoU3RvcmVUZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gdGhpcy5zdG9yZXMuZmlsdGVyKHN0b3JlID0+XHJcbiAgICAgICAgICAgICAgc3RvcmUuc3RvcmVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hTdG9yZVRleHQudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdG9yZXMgPSBbLi4udGhpcy5zdG9yZXNdO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgLy8gVXBkYXRlIGBzZWxlY3RlZEZpbHRlcnMuc3RvcmVzYCB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSB0aGlzLmZpbHRlcmVkU3RvcmVzLm1hcCgoc3RvcmU6YW55KSA9PiAoe1xyXG4gICAgICAgICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxyXG4gICAgICAgICAgICBzdG9yZU5hbWU6IHN0b3JlLnN0b3JlTmFtZSxcclxuICAgICAgICAgICAgY2hlY2tlZDogc3RvcmUuY2hlY2tlZFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IGNvdW50cnk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2aW91c0NoZWNrZWRTdG9yZUlkcyA9XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0b3Jlc1xyXG4gICAgPy5maWx0ZXIoKHM6IGFueSkgPT4gcy5jaGVja2VkKVxyXG4gICAgLm1hcCgoczogYW55KSA9PiBzLnN0b3JlSWQpIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDaGVja2VkU3RvcmVJZHMgPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXNcclxuICAuZmlsdGVyKChzOiBhbnkpID0+IHMuY2hlY2tlZClcclxuICAubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZCk7XHJcblxyXG4vLyDwn5SRIENhbGwgZG93bnRpbWUgQVBJIE9OTFkgaWYgc3RvcmUgc2VsZWN0aW9uIGNoYW5nZWRcclxuaWYgKCF0aGlzLmFyZUFycmF5c0VxdWFsKHByZXZpb3VzQ2hlY2tlZFN0b3JlSWRzLCBjdXJyZW50Q2hlY2tlZFN0b3JlSWRzKSkge1xyXG4gIHRoaXMuZG93bnRpbWVBcGkoKTtcclxufVxyXG4gICAgICAgICAgLy8gU2F2ZSB1cGRhdGVkIGZpbHRlcnMgdG8gbG9jYWxTdG9yYWdlXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gIFxyXG4gICAgICAgICAgLy8gVHJpZ2dlciBVSSBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIGVtcHR5IG9yIGVycm9yIHJlc3BvbnNlXHJcbiAgICAgICAgICB0aGlzLmNsZWFyU3RvcmVzU3RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmZXRjaCBzdG9yZXNcIiwgZXJyKTtcclxuICAgICAgICB0aGlzLmNsZWFyU3RvcmVzU3RhdGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXJlQXJyYXlzRXF1YWwoYTogYW55W10sIGI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gIHJldHVybiBhLmV2ZXJ5KHZhbCA9PiBiLmluY2x1ZGVzKHZhbCkpO1xyXG59XHJcblxyXG4gIC8vIENsZWFyIHN0b3JlcyBzdGF0ZSBhbmQgcmVzZXQgZmlsdGVyc1xyXG4gIHByaXZhdGUgY2xlYXJTdG9yZXNTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmVzID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdoZWFkZXItZmlsdGVycycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgfVxyXG4gIFxyXG4gIHJlc2V0U2VsZWN0ZWRTdG9yZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzLmZvckVhY2goKHN0b3JlOmFueSkgPT4gKHN0b3JlLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5zZWFyY2hTdG9yZVRleHQgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRTdG9yZXNMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRTdG9yZXMgPSB0aGlzLnNlYXJjaFN0b3JlVGV4dC5sZW5ndGggPyB0aGlzLnN0b3Jlcy5maWx0ZXIoKHN0b3JlKSA9PiBzdG9yZS5jaGVja2VkKSA6IHRoaXMuZmlsdGVyZWRTdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICA/IFwiMCBTdG9yZXNcIlxyXG4gICAgICA6IHNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IHNlbGVjdGVkU3RvcmVzWzBdLnN0b3JlTmFtZVxyXG4gICAgICA6IGAke3NlbGVjdGVkU3RvcmVzLmxlbmd0aH0gU3RvcmVzYDtcclxuICB9XHJcbiAgc2VsZWN0ZWRTdG9yZXNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkU3RvcmVzID0gdGhpcy5zZWFyY2hTdG9yZVRleHQubGVuZ3RoID8gdGhpcy5zdG9yZXMuZmlsdGVyKChzdG9yZSkgPT4gc3RvcmUuY2hlY2tlZCkgOiB0aGlzLmZpbHRlcmVkU3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKTtcclxuICAgIHJldHVybiBzZWxlY3RlZFN0b3Jlcy5sZW5ndGggPT09IDBcclxuICAgICAgPyBcIjBcIlxyXG4gICAgICA6IGAke3NlbGVjdGVkU3RvcmVzLmxlbmd0aH1gO1xyXG4gIH1cclxuICBpc0FsbFN0b3Jlc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRTdG9yZXMubGVuZ3RoID4gMCAmJiB0aGlzLmZpbHRlcmVkU3RvcmVzLmV2ZXJ5KChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gIH1cclxuLy8gTWV0aG9kIHRvIGhhbmRsZSBkcm9wZG93biBpdGVtIHNlbGVjdGlvblxyXG51cGRhdGVTZWxlY3RlZFN0b3JlcygpOiB2b2lkIHtcclxuICB0aGlzLmZpbHRlcmVkU3RvcmVzLmZvckVhY2goKHN0b3JlOmFueSkgPT4ge1xyXG4gICAgY29uc3QgZmlsdGVyZWRTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmRJbmRleChmU3RvcmUgPT4gZlN0b3JlLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpO1xyXG4gICAgaWYgKGZpbHRlcmVkU3RvcmUgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zdG9yZXNbZmlsdGVyZWRTdG9yZV0uY2hlY2tlZCA9IHN0b3JlLmNoZWNrZWQ7IC8vIFN5bmMgdGhlIGNoZWNrZWQgc3RhdGUgd2l0aCBmdWxsIHN0b3JlIGxpc3RcclxuICAgIH1cclxuICB9KTsgIFxyXG4gIC8vIFVwZGF0ZSBzZWxlY3RlZEZpbHRlcnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RvcmUgc2VsZWN0aW9uXHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID0gdGhpcy5zdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmNoZWNrZWQpO1xyXG5cclxuICAvLyBVcGRhdGUgbG9jYWxTdG9yYWdlIHdpdGggdGhlIGxhdGVzdCBzZWxlY3Rpb25cclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG5cclxuICAvLyBFbWl0IHVwZGF0ZWQgZmlsdGVycyB2aWEgc2VydmljZVxyXG4gIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcblxyXG4gIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWNlc3NhcnlcclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG4gIHRvZ2dsZVNlbGVjdEFsbExvY2F0aW9ucyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMuZm9yRWFjaCgobG9jYXRpb246YW55KSA9PiAobG9jYXRpb24uY2hlY2tlZCA9IGlzQ2hlY2tlZCkpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZExvY2F0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU3RvcmVzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcclxuICBcclxuICAgIC8vIEFwcGx5IHRoZSBzZWxlY3Rpb24gdG8gYm90aCBmaWx0ZXJlZCBhbmQgZnVsbCBsaXN0IG9mIHN0b3Jlc1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3Jlcy5mb3JFYWNoKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQgPSBjaGVja2VkKTtcclxuICAgIHRoaXMuc3RvcmVzLmZvckVhY2goc3RvcmUgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZFN0b3JlID0gdGhpcy5maWx0ZXJlZFN0b3Jlcy5maW5kKChmU3RvcmU6YW55KSA9PiBmU3RvcmUuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCk7XHJcbiAgICAgIGlmIChmaWx0ZXJlZFN0b3JlKSB7XHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IGNoZWNrZWQ7IC8vIFN5bmMgdGhlIGNoZWNrZWQgc3RhdGUgd2l0aCBmdWxsIHN0b3JlIGxpc3RcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIHN0b3JlcyBhbmQgcGVyc2lzdCB0aGUgc2VsZWN0aW9uXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU3RvcmVzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gbG9jYXRpb25zIGFyZSBzZWxlY3RlZCwgZmV0Y2ggdGhlIHJlbGF0ZWQgZ3JvdXBzXHJcbiAgICBjb25zdCBzZWxlY3RlZENpdGllcyA9IHRoaXMuZmlsdGVyZWRMb2NhdGlvbnNcclxuICAgICAgLmZpbHRlcigobG9jYXRpb246YW55KSA9PiBsb2NhdGlvbi5jaGVja2VkKVxyXG4gICAgICAubWFwKChsb2NhdGlvbjphbnkpID0+IGxvY2F0aW9uLmNpdHkpO1xyXG4gICAgdGhpcy5maWx0ZXJlZExvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbjphbnkpID0+IHtcclxuICAgICAgbGV0IGZpbmRMb2NhdGlvbkluZGV4ID0gdGhpcy5sb2NhdGlvbnMuZmluZEluZGV4KChsb2M6YW55KSA9PiBsb2MuY2l0eSA9PSBsb2NhdGlvbi5jaXR5KTtcclxuICAgICAgaWYoZmluZExvY2F0aW9uSW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uc1tmaW5kTG9jYXRpb25JbmRleF0uY2hlY2tlZCA9IGxvY2F0aW9uLmNoZWNrZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAoc2VsZWN0ZWRDaXRpZXMubGVuZ3RoID4gMCB8fCAhc2VsZWN0ZWRDaXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlcyA9W107XHJcbiAgICAgIHRoaXMuZ3JvdXBzRGF0YSA9W11cclxuICAgICAgdGhpcy5nZXRHcm91cHMoKTsgLy8gRmV0Y2ggZ3JvdXBzIGJhc2VkIG9uIHNlbGVjdGVkIGNpdGllc1xyXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0ZWQgZ3JvdXBzLCBmZXRjaCB0aGUgc3RvcmVzIGJhc2VkIG9uIHNlbGVjdGVkIGdyb3Vwc1xyXG4gICAgICB0aGlzLmdldFN0b3JlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gdGhpcy5sb2NhdGlvbnM7XHJcbiAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gW107IC8vIENsZWFyIGdyb3VwcyBpZiBubyBsb2NhdGlvbnMgYXJlIHNlbGVjdGVkXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107IC8vIFJlc2V0IHN0b3JlcyBhcyB3ZWxsXHJcbiAgICB0aGlzLnNlYXJjaEdyb3VwVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5zZWFyY2hTdG9yZVRleHQgPSAnJztcclxuICAgIC8vIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RBbGxHcm91cHMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmZpbHRlcmVkR3JvdXBzLmZvckVhY2goKGdyb3VwOmFueSkgPT4gKGdyb3VwLmNoZWNrZWQgPSBpc0NoZWNrZWQpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRHcm91cHMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGVkR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgLy8gRmV0Y2ggdGhlIHJlbGV2YW50IHN0b3JlcyBhZnRlciBncm91cHMgYXJlIHNlbGVjdGVkXHJcbiAgICBjb25zdCBzZWxlY3RlZEdyb3VwcyA9IHRoaXMuZmlsdGVyZWRHcm91cHNcclxuICAgICAgLmZpbHRlcigoZ3JvdXA6YW55KSA9PiBncm91cC5jaGVja2VkKVxyXG4gICAgICAubWFwKChncm91cDphbnkpID0+IGdyb3VwLmdyb3VwTmFtZSk7XHJcblxyXG4gICAgdGhpcy5maWx0ZXJlZEdyb3Vwcy5mb3JFYWNoKChncm91cDphbnkpID0+IHtcclxuICAgICAgbGV0IGZpbmRHcm91cEluZGV4ID0gdGhpcy5ncm91cHNEYXRhLmZpbmRJbmRleCgoaXRlbTphbnkpID0+IGl0ZW0uZ3JvdXBOYW1lID09IGdyb3VwLmdyb3VwTmFtZSk7XHJcbiAgICAgIGlmKGZpbmRHcm91cEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5ncm91cHNEYXRhW2ZpbmRHcm91cEluZGV4XS5jaGVja2VkID0gZ3JvdXAuY2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSkgXHJcbiAgICBpZiAoc2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMCB8fCAhc2VsZWN0ZWRHcm91cHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3JlcyA9W107XHJcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBzZWxlY3RlZCBncm91cHMsIGZldGNoIHRoZSBzdG9yZXMgYmFzZWQgb24gc2VsZWN0ZWQgZ3JvdXBzXHJcbiAgICAgIHRoaXMuZ2V0U3RvcmUoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZ3JvdXAgPSB0aGlzLmdyb3Vwc0RhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBJZiBubyBncm91cHMgYXJlIHNlbGVjdGVkLCBjbGVhciB0aGUgc3RvcmVzIGxpc3RcclxuICAgICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdO1xyXG4gICAgICBcclxuICAgICAgLy8gQWxzbywgdXBkYXRlIGxvY2FsU3RvcmFnZSB0byByZWZsZWN0IHRoZSBjbGVhcmVkIHN0b3JlIHNlbGVjdGlvblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPSBbXTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICBcclxuICAgICAgLy8gRW1pdCBkYXRhIHZpYSBzZXJ2aWNlXHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBDbGVhciB0aGUgc2VhcmNoIHN0b3JlIHRleHQgd2hlbiBncm91cHMgYXJlIHVwZGF0ZWRcclxuICAgIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBSZXNldCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAvLyBDbGVhciBzZWxlY3RlZCBncm91cHMsIHN0b3JlcywgYW5kIGxvY2F0aW9uc1xyXG4gIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSBbXVxyXG4gIHRoaXMuZmlsdGVyZWRHcm91cHMgPSBbXTtcclxuICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gW107XHJcbiAgIHRoaXMuZmlsdGVyZWRTdGF0dXMgPSBbXTtcclxuICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gW107IC8vIFJlc2V0IGxvY2F0aW9ucyBhcyB3ZWxsXHJcbiAgdGhpcy5kb3dudGltZURhdGEgPSBbXTtcclxudGhpcy5sb2NhdGlvbnMgPVtdO3RoaXMuZ3JvdXBzRGF0YSA9W107IHRoaXMuc3RvcmVzID1bXTsgdGhpcy5jb3VudHJpZXMgPVtdO1xyXG4gIC8vIENsZWFyIHNlYXJjaCBpbnB1dCBmaWVsZHNcclxuICB0aGlzLnNlYXJjaExvY2F0aW9uVGV4dCA9IFwiXCI7XHJcbiAgdGhpcy5zZWFyY2hHcm91cFRleHQgPSBcIlwiO1xyXG4gIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gXCJcIjtcclxuICB0aGlzLnNlYXJjaFN0YXR1c1RleHQ9XCJcIlxyXG50aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMgPVtdO1xyXG50aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9W107XHJcbnRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxvY2F0aW9uID1bXTtcclxudGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9W107XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gWydhY3RpdmUnXTtcclxudGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPVtdO1xyXG5cclxuIFxyXG4gIC8vIEZldGNoIGxvY2F0aW9ucywgZ3JvdXBzLCBhbmQgc3RvcmVzIGFnYWluXHJcbiAgLy8gdGhpcy5nZXRDb3VudHJ5KCk7XHJcbiAgLy8gdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAvLyB0aGlzLmdldFN0b3JlKCk7XHJcbiAgLy8gdGhpcy5nZXRHcm91cHMoKTtcclxuICB0aGlzLmdldFN0YXR1cygpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2Ugd2l0aCB0aGUgbGF0ZXN0IHNlbGVjdGVkRmlsdGVyc1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxyXG4gICAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9LDEwMClcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcblxyXG4gIGZpbHRlckxvY2F0aW9ucygpOiB2b2lkIHsgICAgXHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hMb2NhdGlvblRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIFxyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgZHVyaW5nIGZpbHRlcmluZ1xyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnNcclxuICAgICAgICAubWFwKGxvY2F0aW9uID0+ICh7XHJcbiAgICAgICAgICAuLi5sb2NhdGlvbixcclxuICAgICAgICAgIGNoZWNrZWQ6IHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMuZmluZCgobDphbnkpID0+IGwuY2l0eSA9PT0gbG9jYXRpb24uY2l0eSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgICB9KSlcclxuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+XHJcbiAgICAgICAgICBsb2NhdGlvbj8uY2l0eT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBjaGVja2VkIHN0YXRlIHdoZW4gc2VhcmNoIHRleHQgaXMgY2xlYXJlZFxyXG4gICAgICB0aGlzLmZpbHRlcmVkTG9jYXRpb25zID0gdGhpcy5sb2NhdGlvbnMubWFwKGxvY2F0aW9uID0+ICh7XHJcbiAgICAgICAgLi4ubG9jYXRpb24sXHJcbiAgICAgICAgY2hlY2tlZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24uZmluZCgobDphbnkpID0+IGwuY2l0eSA9PT0gbG9jYXRpb24uY2l0eSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgZmlsdGVyR3JvdXBzKCk6IHZvaWQgeyAgXHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hHcm91cFRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIFxyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgZHVyaW5nIGZpbHRlcmluZ1xyXG4gICAgICB0aGlzLmZpbHRlcmVkR3JvdXBzID0gdGhpcy5ncm91cHNEYXRhXHJcbiAgICAgICAgLm1hcChncm91cCA9PiAoe1xyXG4gICAgICAgICAgLi4uZ3JvdXAsXHJcbiAgICAgICAgICBjaGVja2VkOiB0aGlzLmZpbHRlcmVkR3JvdXBzLmZpbmQoKGc6YW55KSA9PiBnLmdyb3VwTmFtZSA9PT0gZ3JvdXAuZ3JvdXBOYW1lKT8uY2hlY2tlZCB8fCBmYWxzZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoZ3JvdXAgPT5cclxuICAgICAgICAgIGdyb3VwPy5ncm91cE5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dClcclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgY2hlY2tlZCBzdGF0ZSB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWRcclxuICAgICAgdGhpcy5maWx0ZXJlZEdyb3VwcyA9IHRoaXMuZ3JvdXBzRGF0YS5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBjaGVja2VkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cC5maW5kKChnOmFueSkgPT4gZy5ncm91cE5hbWUgPT09IGdyb3VwLmdyb3VwTmFtZSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBcclxuICBmaWx0ZXJTdG9yZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hTdG9yZVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIC8vIFByZXNlcnZlIGNoZWNrZWQgc3RhdGVzIGR1cmluZyBmaWx0ZXJpbmdcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIC8vIEZpbHRlciBiYXNlZCBvbiBzZWFyY2ggdGV4dCB3aGlsZSBwcmVzZXJ2aW5nIGNoZWNrZWQgc3RhdGVcclxuICAgICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IHRoaXMuc3RvcmVzXHJcbiAgICAgICAgLm1hcChzdG9yZSA9PiAoe1xyXG4gICAgICAgICAgLi4uc3RvcmUsXHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3RvcmUgaXMgYWxyZWFkeSBjaGVja2VkIGluIGZpbHRlcmVkU3RvcmVzLCBmYWxsYmFjayB0byBvcmlnaW5hbCBzdG9yZXMnIGNoZWNrZWQgc3RhdGVcclxuICAgICAgICAgIGNoZWNrZWQ6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0b3Jlcy5maW5kKChzOiBhbnkpID0+IHMuc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCk/LmNoZWNrZWQgfHwgc3RvcmUuY2hlY2tlZCB8fCBmYWxzZVxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgIC5maWx0ZXIoc3RvcmUgPT4gc3RvcmUuc3RvcmVOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gV2hlbiB0aGUgc2VhcmNoIHRleHQgaXMgY2xlYXJlZCwgcmVzdG9yZSB0aGUgb3JpZ2luYWwgbGlzdCB3aXRoIHByZXNlcnZlZCBjaGVja2VkIHN0YXRlc1xyXG4gICAgICB0aGlzLmZpbHRlcmVkU3RvcmVzID0gdGhpcy5zdG9yZXMubWFwKHN0b3JlID0+ICh7XHJcbiAgICAgICAgLi4uc3RvcmUsXHJcbiAgICAgICAgLy8gUHJlc2VydmUgdGhlIGNoZWNrZWQgc3RhdGUgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGZpbHRlcnNcclxuICAgICAgICBjaGVja2VkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZXMuZmluZCgoczogYW55KSA9PiBzLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQpPy5jaGVja2VkIHx8IHN0b3JlLmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcclxuICAgIHRoaXMuZHJvcGRvd25PcGVuID0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXHJcbiAgY2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcclxuICAgICAgXCIuZHJvcGRvd24tY29udGFpbmVyXCJcclxuICAgICk7XHJcbiAgICBjb25zdCBjbGlja2Vkb3V0U2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXHJcbiAgICAgIFwiLmRyb3Bkb3duMlwiXHJcbiAgICApO1xyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgfVxyXG4gICAgaWYoIWNsaWNrZWRvdXRTaWRlKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bjEoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuIFxyXG4gIFxyXG5cclxuICAgIGdldENvdW50cnkoKTogdm9pZCB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50ID8gdGhpcy5zZWxlY3RlZEZpbHRlcnMuY2xpZW50IDogdGhpcy51c2Vycy5jbGllbnRJZCxcclxuICAgICAgIHN0YXR1czogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LnN0YXR1cz8ubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXMgOiBbJ2FjdGl2ZSddXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICB0aGlzLmF1dGguZ2V0Q291bnRyeShvYmopLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIEV4dHJhY3Qgc2VsZWN0ZWQgY291bnRyaWVzIGZyb20gZXhpc3RpbmcgZmlsdGVycyAoaWYgYW55KVxyXG4gICAgICAgIGxldCBjb3VudHJ5TGlzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5jb3VudHJ5Py5maWx0ZXIoKGNvdW50cnk6IGFueSkgPT4gY291bnRyeS5jaGVja2VkKS5tYXAoKGxvYzogYW55KSA9PiBsb2MuY291bnRyeSk7XHJcbiAgXHJcbiAgICAgICAgLy8gTWFwIEFQSSByZXNwb25zZSB0byBmcm9udGVuZCBtb2RlbFxyXG4gICAgICAgIHRoaXMuY291bnRyaWVzID0gcmVzPy5kYXRhPy5jb3VudHJ5RGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgIGNvdW50cnk6IGl0ZW0uY291bnRyeSxcclxuICAgICAgICAgIC8vIGNoZWNrZWQ6IGNvdW50cnlMaXN0Py5sZW5ndGggPyBjb3VudHJ5TGlzdC5pbmNsdWRlcyhpdGVtLmNvdW50cnkpIDogdHJ1ZSxcclxuICAgICAgICAgIC8vIGNoZWNrZWQ6IGNpdHlMaXN0Py5sZW5ndGggPyBjaXR5TGlzdC5pbmNsdWRlcyhjaXR5LmNpdHkpIDogdHJ1ZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGNvdW50cnlMaXN0Py5pbmNsdWRlcyhpdGVtLmNvdW50cnkpID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5ICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSkpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5tYXAobG9jYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkTG9jYXRpb24gPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5LmZpbmQoKGxvYzogYW55KSA9PiBsb2MuY291bnRyeSA9PT0gbG9jYXRpb24uY291bnRyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVkTG9jYXRpb24gPyB7IC4uLmxvY2F0aW9uLCBjaGVja2VkOiBtYXRjaGVkTG9jYXRpb24uY2hlY2tlZCB9IDogbG9jYXRpb247XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IHRoaXMuY291bnRyaWVzO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIEluaXRpYWxseSwgYWxsIGNvdW50cmllcyBhcmUgdmlzaWJsZVxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSBbLi4udGhpcy5jb3VudHJpZXNdO1xyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAvLyBJZiBhIHNlYXJjaCB0ZXh0IGFscmVhZHkgZXhpc3RzLCBmaWx0ZXIgaW1tZWRpYXRlbHlcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5VGV4dCkge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJDb3VudHJpZXMoKTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgLy8gRmV0Y2ggc3RvcmVzIGlmIGF0IGxlYXN0IG9uZSBjb3VudHJ5IGlzIHNlbGVjdGVkXHJcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiBjb3VudHJ5LmNoZWNrZWQpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZSgpOyAvLyBmZXRjaCBzdG9yZXNcclxuICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGZldGNoIGNvdW50cmllc1wiLCBlcnIpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZENvdW50cmllc0xhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cmllcyA9IHRoaXMuc2VhcmNoQ291bnRyeVRleHQubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5maWx0ZXJlZENvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6YW55KSA9PiBjb3VudHJ5LmNoZWNrZWQpLm1hcCgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY291bnRyeSlcclxuICAgICAgOiB0aGlzLmNvdW50cmllcy5maWx0ZXIoY291bnRyeSA9PiBjb3VudHJ5LmNoZWNrZWQpLm1hcChjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudHJpZXMubGVuZ3RoID09PSAwXHJcbiAgICAgID8gJydcclxuICAgICAgOiBzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPT09IDFcclxuICAgICAgPyBzZWxlY3RlZENvdW50cmllc1swXVxyXG4gICAgICA6IGAke3NlbGVjdGVkQ291bnRyaWVzLmxlbmd0aH0gY291bnRyaWVzYDtcclxuICB9XHJcbiAgc2VsZWN0ZWRDb3VudHJpZXNMYWJlbDEoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyaWVzID0gdGhpcy5zZWFyY2hDb3VudHJ5VGV4dC5sZW5ndGhcclxuICAgICAgPyB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmZpbHRlcigoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZCkubWFwKChjb3VudHJ5OmFueSkgPT4gY291bnRyeS5jb3VudHJ5KVxyXG4gICAgICA6IHRoaXMuY291bnRyaWVzLmZpbHRlcihjb3VudHJ5ID0+IGNvdW50cnkuY2hlY2tlZCkubWFwKGNvdW50cnkgPT4gY291bnRyeS5jb3VudHJ5KTtcclxuICBcclxuICAgIHJldHVybiBzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPT09IDBcclxuICAgICAgPyAnJ1xyXG4gICAgICA6IGAke3NlbGVjdGVkQ291bnRyaWVzLmxlbmd0aH1gO1xyXG4gIH1cclxuICBmaWx0ZXJDb3VudHJpZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hDb3VudHJ5VGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgXHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICAvLyBGaWx0ZXIgYW5kIHByZXNlcnZlIGNoZWNrZWQgc3RhdGVcclxuICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IHRoaXMuY291bnRyaWVzXHJcbiAgICAgICAgLm1hcChjb3VudHJ5ID0+ICh7XHJcbiAgICAgICAgICAuLi5jb3VudHJ5LFxyXG4gICAgICAgICAgY2hlY2tlZDogdGhpcy5maWx0ZXJlZENvdW50cmllcy5maW5kKChjOmFueSkgPT4gYy5jb3VudHJ5ID09PSBjb3VudHJ5LmNvdW50cnkpPy5jaGVja2VkIHx8IGZhbHNlXHJcbiAgICAgICAgfSkpXHJcbiAgICAgICAgLmZpbHRlcihjb3VudHJ5ID0+IGNvdW50cnkuY291bnRyeS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFJlc2V0IHRvIGZ1bGwgbGlzdFxyXG4gICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMubWFwKChjb3VudHJ5OiBDb3VudHJ5KSA9PiAoe1xyXG4gICAgICAgIC4uLmNvdW50cnksXHJcbiAgICAgICAgY2hlY2tlZDogdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeT8uZmluZCgoYzogYW55KSA9PiBjLmNvdW50cnkgPT09IGNvdW50cnkuY291bnRyeSk/LmNoZWNrZWQgfHwgZmFsc2VcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxDb3VudHJpZXNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJlZENvdW50cmllcy5ldmVyeSgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZCk7XHJcbiAgfVxyXG4gIHRvZ2dsZVNlbGVjdEFsbENvdW50cmllcyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMuZm9yRWFjaCgoY291bnRyeTphbnkpID0+IChjb3VudHJ5LmNoZWNrZWQgPSBpc0NoZWNrZWQpKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJpZXMoKTtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICB1cGRhdGVTZWxlY3RlZENvdW50cmllcygpOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gbG9jYXRpb25zIGFyZSBzZWxlY3RlZCwgZmV0Y2ggdGhlIHJlbGF0ZWQgZ3JvdXBzXHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cmllcyA9IHRoaXMuZmlsdGVyZWRDb3VudHJpZXNcclxuICAgICAgLmZpbHRlcigoY291bnRyeTphbnkpID0+IGNvdW50cnkuY2hlY2tlZClcclxuICAgICAgLm1hcCgoY291bnRyeTphbnkpID0+IGNvdW50cnkuY291bnRyeSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzLmZvckVhY2goKGNvdW50cnk6YW55KSA9PiB7XHJcbiAgICAgIGxldCBmaW5kQ291bnRyeUluZGV4ID0gdGhpcy5jb3VudHJpZXMuZmluZEluZGV4KChsb2M6YW55KSA9PiBsb2MuY291bnRyeSA9PSBjb3VudHJ5LmNvdW50cnkpO1xyXG4gICAgICBpZihmaW5kQ291bnRyeUluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXNbZmluZENvdW50cnlJbmRleF0uY2hlY2tlZCA9IGNvdW50cnkuY2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChzZWxlY3RlZENvdW50cmllcy5sZW5ndGggPiAwIHx8ICFzZWxlY3RlZENvdW50cmllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID1bXTtcclxuICAgICAgdGhpcy5ncm91cHNEYXRhID1bXVxyXG4gICAgICB0aGlzLmxvY2F0aW9ucyA9W107XHJcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25zKCk7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7IC8vIEZldGNoIGdyb3VwcyBiYXNlZCBvbiBzZWxlY3RlZCBjaXRpZXNcclxuICAgICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdGVkIGdyb3VwcywgZmV0Y2ggdGhlIHN0b3JlcyBiYXNlZCBvbiBzZWxlY3RlZCBncm91cHNcclxuICAgICAgdGhpcy5nZXRTdG9yZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5jb3VudHJ5ID0gdGhpcy5maWx0ZXJlZENvdW50cmllcztcclxuICAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRHcm91cHMgPSBbXTsgLy8gQ2xlYXIgZ3JvdXBzIGlmIG5vIGxvY2F0aW9ucyBhcmUgc2VsZWN0ZWRcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuY291bnRyeSA9IFtdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5ncm91cCA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZFN0b3JlcyA9IFtdOyAvLyBSZXNldCBzdG9yZXMgYXMgd2VsbFxyXG4gICAgdGhpcy5zZWFyY2hHcm91cFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgICAvLyB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ291bnRyeSgpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVzZXQoKTtcclxuICB9XHJcblxyXG4gIEFwcGx5KCk6IHZvaWQge1xyXG4gICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duXHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIFxyXG4gICAgLy8gRmV0Y2ggZXhpc3RpbmcgZmlsdGVycyBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICAgY29uc3QgaGVhZGVyRmlsdGVyczogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdG9yZSA9ICBudWxsXHJcbiAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cyA9IHRoaXMuZmlsdGVyZWRTdGF0dXNcclxuICAgIC5maWx0ZXIoKHM6IGFueSkgPT4gcy5jaGVja2VkKVxyXG4gICAgLm1hcCgoczogYW55KSA9PiBzLnN0YXR1cyk7XHJcbiAgICAvLyBFbnN1cmUgY3VycmVudCBzZWxlY3Rpb25zIGFyZSByZWZsZWN0ZWRcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmNvdW50cnkgPSB0aGlzLmZpbHRlcmVkQ291bnRyaWVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMubG9jYXRpb24gPSB0aGlzLmxvY2F0aW9ucztcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmdyb3VwID0gdGhpcy5ncm91cHNEYXRhO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID0gaGVhZGVyRmlsdGVycy5zdG9yZXMgPyBoZWFkZXJGaWx0ZXJzLnN0b3JlcyA6IHRoaXMuc3RvcmVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZG93bnRpbWUgPSB0aGlzLnNlbGVjdGVkRG93bnRpbWVWYWx1ZXMgPyAgdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzIDogaGVhZGVyRmlsdGVycz8uZG93bnRpbWUgPyBoZWFkZXJGaWx0ZXJzPy5kb3dudGltZSA6W10gO1xyXG4gICAgLy8gU3RvcmUgdXBkYXRlZCBmaWx0ZXJzIGJhY2sgaW4gbG9jYWxTdG9yYWdlXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAvLyB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXHJcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZpbHRlcnMgdmlhIHRoZSBzZXJ2aWNlXHJcbiAgICAvLyB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLm5leHQodGhpcy5zZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgLy8gVHJpZ2dlciByZWZyZXNoIGlmIG5lY2Vzc2FyeVxyXG4gICAgLy8gdGhpcy5ncy5tYW5hZ2VSZWZyZXNoVHJpZ2dlci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG5nZXRTZWxlY3RlZENvdW50KHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdzdGF0dXMnOlxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFN0YXR1c0xhYmVsMSgpO1xyXG4gICAgY2FzZSAnY291bnRyeSc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnRyaWVzTGFiZWwxKCk7XHJcbiAgICBjYXNlICdsb2NhdGlvbic6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zTGFiZWwxKCk7XHJcbiAgICBjYXNlICdncm91cCc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBzTGFiZWwxKCk7XHJcbiAgICBjYXNlICdzdG9yZSc6XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkU3RvcmVzTGFiZWwxKCk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59XHJcbiAgYWN0aXZlRHJvcGRvd246IHN0cmluZyA9ICcnO1xyXG5cclxuLy8gQWRkIHRoaXMgbWV0aG9kIHRvIGhhbmRsZSBjYXRlZ29yeSBjbGlja3Ncclxuc2hvd0Ryb3Bkb3duKHR5cGU6IHN0cmluZykge1xyXG4gIHRoaXMuYWN0aXZlRHJvcGRvd24gPSB0eXBlO1xyXG4gIC8vIFJlc2V0IHNlYXJjaCB0ZXh0cyB3aGVuIHN3aXRjaGluZyBkcm9wZG93bnNcclxuICB0aGlzLnNlYXJjaENvdW50cnlUZXh0ID0gJyc7XHJcbiAgdGhpcy5zZWFyY2hMb2NhdGlvblRleHQgPSAnJztcclxuICB0aGlzLnNlYXJjaEdyb3VwVGV4dCA9ICcnO1xyXG4gIHRoaXMuc2VhcmNoU3RvcmVUZXh0ID0gJyc7XHJcbiAgLy8gUmVzZXQgZmlsdGVyZWQgbGlzdHMgdG8gc2hvdyBhbGwgaXRlbXNcclxuICB0aGlzLmZpbHRlckNvdW50cmllcygpO1xyXG4gIHRoaXMuZmlsdGVyTG9jYXRpb25zKCk7XHJcbiAgdGhpcy5maWx0ZXJHcm91cHMoKTtcclxuICB0aGlzLmZpbHRlclN0b3JlcygpO1xyXG59XHJcblxyXG5zaG93Q2xpY2sodHlwZTogYW55LGU6TW91c2VFdmVudCkge1xyXG4gIHRoaXMub3BlbmRyb3Bkb3duKGUpXHJcbiAgdGhpcy5PcGVuZHJvcGRvd24gPSB0cnVlO1xyXG4gIHRoaXMuYWN0aXZlRHJvcGRvd24gPSB0eXBlO1xyXG59XHJcblxyXG5kb3dudGltZU9wdGlvbnMgPSBbXHJcbiAgeyBsYWJlbDogJzAtMTIwIG1pbnMnLCB2YWx1ZTogJzAtMTIwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnMTIxLTM2MCBtaW5zJywgdmFsdWU6ICcxMjEtMzYwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnMzYxLTYwMCBtaW5zJywgdmFsdWU6ICczNjEtNjAwJywgY2hlY2tlZDogZmFsc2UgfSxcclxuICB7IGxhYmVsOiAnNjAxKyBtaW5zJywgdmFsdWU6ICc2MDErJywgY2hlY2tlZDogZmFsc2UgfSxcclxuXTtcclxuXHJcbnNlbGVjdGVkRG93bnRpbWVWYWx1ZXM6IGFueVtdID0gW107XHJcblxyXG4vLyAxLiBGb3IgdGhlIFtjaGVja2VkXSBvZiBcIlNlbGVjdCBBbGxcIlxyXG5pc0FsbERvd250aW1lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgLy8gdHJ1ZSBvbmx5IGlmIEFMTCBvcHRpb25zIGFyZSBjaGVja2VkIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3B0aW9uXHJcbiAgcmV0dXJuIHRoaXMuZG93bnRpbWVPcHRpb25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgdGhpcy5kb3dudGltZU9wdGlvbnMuZXZlcnkob3B0ID0+IG9wdC5jaGVja2VkKTtcclxufVxyXG5cclxuLy8gMi4gV2hlbiB1c2VyIGNsaWNrcyBcIlNlbGVjdCBBbGxcIlxyXG50b2dnbGVTZWxlY3RBbGxEb3dudGltZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG5cclxuICAvLyBzZXQgYWxsIGNoaWxkIGNoZWNrYm94ZXMgdG8gc2FtZSBzdGF0ZVxyXG4gdGhpcy5kb3dudGltZU9wdGlvbnMgPSB0aGlzLmRvd250aW1lT3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAuLi5vcHQsXHJcbiAgICBjaGVja2VkXHJcbiAgfSkpO1xyXG5cclxuICAvLyB1cGRhdGUgc2VsZWN0ZWQgdmFsdWVzIChpZiB5b3UgYXJlIHVzaW5nIHRoZW0gaW4gZmlsdGVyKVxyXG4gIHRoaXMudXBkYXRlU2VsZWN0ZWREb3dudGltZSgpO1xyXG59XHJcblxyXG4vLyAzLiBXaGVuIGFueSBzaW5nbGUgY2hlY2tib3ggaXMgY2hhbmdlZFxyXG51cGRhdGVTZWxlY3RlZERvd250aW1lKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWREb3dudGltZVZhbHVlcyA9IHRoaXMuZG93bnRpbWVPcHRpb25zXHJcbiAgICAgIC5maWx0ZXIob3B0ID0+IG9wdC5jaGVja2VkKVxyXG4gICAgICAubWFwKG9wdCA9PiBvcHQudmFsdWUpO1xyXG4gIC8vIOKshyBjYWxsIGRvd250aW1lIEFQSSB3aGVuZXZlciB1c2VyIGNoYW5nZXMgZG93bnRpbWUgZmlsdGVyXHJcbiAgdGhpcy5kb3dudGltZUFwaSgpO1xyXG59XHJcblxyXG5kb3dudGltZURhdGE6YW55W10gPVtdO1xyXG5cclxuXHJcbmRvd250aW1lQXBpKCkge1xyXG4gIGNvbnN0IG9iaiA9IHtcclxuICAgIGNsaWVudElkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnRcclxuICAgICAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycy5jbGllbnRcclxuICAgICAgOiB0aGlzLnVzZXJzLmNsaWVudElkLFxyXG4gICBzdG9yZUlkOiB0aGlzLnN0b3Jlc1xyXG4gID8gdGhpcy5zdG9yZXMubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gIDogW10sXHJcbiAgICBkb3dudGltZTogdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzPy5sZW5ndGggPyBbLi4udGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzXSA6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kb3dudGltZSA/IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kb3dudGltZSA6IFtdLFxyXG4gICAgZnJvbURhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICB0b0RhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLFxyXG4gIH07XHJcblxyXG4gIHRoaXMuYXV0aC5nZXREb3dudGltZUhlYWRlcihvYmopLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5kb3dudGltZURhdGEgPSByZXMuZGF0YS5zdG9yZXNEYXRhIHx8IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBkb3dudGltZVN0b3JlSWRzID0gdGhpcy5kb3dudGltZURhdGEubWFwKChkOiBhbnkpID0+IGQuc3RvcmVJZCk7XHJcblxyXG50aGlzLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgc3RvcmUuY2hlY2tlZCA9IGRvd250aW1lU3RvcmVJZHMuaW5jbHVkZXMoc3RvcmUuc3RvcmVJZCk7XHJcbn0pO1xyXG5cclxudGhpcy5maWx0ZXJlZFN0b3JlcyA9IHRoaXMuc3RvcmVzLmZpbHRlcigoczogYW55KSA9PiB0cnVlID09PSBzLmNoZWNrZWQpO1xyXG5cclxudGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RvcmVzID0gdGhpcy5zdG9yZXMubWFwKChzdG9yZTogYW55KSA9PiAoe1xyXG4gIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXHJcbiAgc3RvcmVOYW1lOiBzdG9yZS5zdG9yZU5hbWUsXHJcbiAgY2hlY2tlZDogc3RvcmUuY2hlY2tlZFxyXG59KSk7XHJcblxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRvd250aW1lRGF0YSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGZldGNoIGRvd250aW1lIGRhdGFcIiwgZXJyKTtcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxucmVzdG9yZURvd250aW1lRnJvbVN0b3JhZ2UoKTogdm9pZCB7XHJcbiAgY29uc3Qgc3RvcmVkRG93bnRpbWU6IHN0cmluZ1tdID0gdGhpcy5zZWxlY3RlZEZpbHRlcnM/LmRvd250aW1lIHx8IFtdO1xyXG4gIHRoaXMuZG93bnRpbWVPcHRpb25zID0gdGhpcy5kb3dudGltZU9wdGlvbnMubWFwKG9wdCA9PiAoe1xyXG4gICAgLi4ub3B0LFxyXG4gICAgY2hlY2tlZDogc3RvcmVkRG93bnRpbWUuaW5jbHVkZXMob3B0LnZhbHVlKVxyXG4gIH0pKTtcclxuXHJcbiAgdGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzID0gWy4uLnN0b3JlZERvd250aW1lXTtcclxuICBpZiAodGhpcy5zZWxlY3RlZERvd250aW1lVmFsdWVzLmxlbmd0aCkge1xyXG4gICAgdGhpcy5kb3dudGltZUFwaSgpO1xyXG4gIH1cclxufVxyXG5cclxuICBzdGF0dXNWYWw6IGFueTtcclxuICBzZWFyY2hTdGF0dXNUZXh0OiBhbnk9XCJcIjtcclxuICBmaWx0ZXJlZFN0YXR1czogYW55ID0gW107XHJcbmdldFN0YXR1cygpOiB2b2lkIHtcclxuICAvLyBiYXNlIHN0YXR1cyBsaXN0XHJcbiAgdGhpcy5zdGF0dXNWYWwgPSBbXHJcbiAgICB7IHN0YXR1czogJ2FjdGl2ZScsIGNoZWNrZWQ6IGZhbHNlIH0sXHJcbiAgICB7IHN0YXR1czogJ2RlYWN0aXZlJywgY2hlY2tlZDogZmFsc2UgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0IHN0b3JlZEZpbHRlcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpO1xyXG5cclxuICBsZXQgc3RhdHVzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgaWYgKHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5zdGF0dXMgJiYgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzLmxlbmd0aCA+IDApIHtcclxuICAgIHN0YXR1c0xpc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXM7XHJcbiAgfSBlbHNlIGlmIChzdG9yZWRGaWx0ZXJzKSB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHN0b3JlZEZpbHRlcnMpO1xyXG4gICAgc3RhdHVzTGlzdCA9IHBhcnNlZC5zdGF0dXMgJiYgcGFyc2VkLnN0YXR1cy5sZW5ndGggPiAwID8gcGFyc2VkLnN0YXR1cyA6IFsnYWN0aXZlJ107XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXR1c0xpc3QgPSBbJ2FjdGl2ZSddO1xyXG4gIH1cclxuXHJcbiAgLy8gdXBkYXRlIHNlbGVjdGVkRmlsdGVycyB0byBhbHdheXMgaGF2ZSBhIHZhbHVlXHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gc3RhdHVzTGlzdDtcclxuXHJcbiAgLy8gbWFyayBjaGVja2VkIGJhc2VkIG9uIHZhbHVlc1xyXG4gIHRoaXMuZmlsdGVyZWRTdGF0dXMgPSB0aGlzLnN0YXR1c1ZhbC5tYXAoKHN0YXR1czogYW55KSA9PiAoe1xyXG4gICAgc3RhdHVzOiBzdGF0dXMuc3RhdHVzLFxyXG4gICAgY2hlY2tlZDogc3RhdHVzTGlzdC5pbmNsdWRlcyhzdGF0dXMuc3RhdHVzKVxyXG4gIH0pKTtcclxuXHJcbiAgLy8gaWYgYSBzZWFyY2ggdGV4dCBhbHJlYWR5IGV4aXN0cywgZmlsdGVyIGltbWVkaWF0ZWx5XHJcbiAgaWYgKHRoaXMuc2VhcmNoU3RhdHVzVGV4dCkge1xyXG4gICAgdGhpcy5maWx0ZXJTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8vIHJlZnJlc2ggZGVwZW5kZW50IGRyb3Bkb3duc1xyXG4gIHRoaXMuZ2V0Q291bnRyeSgpO1xyXG4gIHRoaXMuZ2V0TG9jYXRpb25zKCk7XHJcbiAgdGhpcy5nZXRHcm91cHMoKTtcclxuICB0aGlzLmdldFN0b3JlKCk7XHJcbn1cclxuc2VsZWN0ZWRTdGF0dXNMYWJlbCgpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHNlbGVjdGVkU3RhdHVzID0gdGhpcy5maWx0ZXJlZFN0YXR1c1xyXG4gICAgLmZpbHRlcigoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5jaGVja2VkKVxyXG4gICAgLm1hcCgoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5zdGF0dXMpO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRTdGF0dXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIGlmIChzZWxlY3RlZFN0YXR1cy5sZW5ndGggPT09IDEpIHtcclxuICAgIHJldHVybiBzZWxlY3RlZFN0YXR1c1swXTsgIC8vIHNob3cgXCJhY3RpdmVcIiBvciBcImRlYWN0aXZlXCJcclxuICB9XHJcblxyXG4gIHJldHVybiBgJHtzZWxlY3RlZFN0YXR1cy5sZW5ndGh9IHN0YXR1c2A7ICAvLyBlLmcuIFwiMiBzdGF0dXNcIlxyXG59XHJcbnNlbGVjdGVkU3RhdHVzTGFiZWwxKCk6IHN0cmluZyB7XHJcbiAgY29uc3Qgc2VsZWN0ZWRTdGF0dXMgPSB0aGlzLmZpbHRlcmVkU3RhdHVzXHJcbiAgICAuZmlsdGVyKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLmNoZWNrZWQpXHJcbiAgICAubWFwKChzdGF0dXM6IGFueSkgPT4gc3RhdHVzLnN0YXR1cyk7XHJcblxyXG5cclxuICByZXR1cm4gYCR7c2VsZWN0ZWRTdGF0dXMubGVuZ3RofWA7ICAvLyBlLmcuIFwiMiBzdGF0dXNcIlxyXG59XHJcbmZpbHRlclN0YXR1cygpOiB2b2lkIHtcclxuICBjb25zdCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hTdGF0dXNUZXh0LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RhdHVzID0gdGhpcy5zdGF0dXNWYWxcclxuICAgICAgLm1hcCgoc3RhdHVzOiBhbnkpID0+ICh7XHJcbiAgICAgICAgLi4uc3RhdHVzLFxyXG4gICAgICAgIGNoZWNrZWQ6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnN0YXR1cz8uaW5jbHVkZXMoc3RhdHVzLnN0YXR1cykgfHwgZmFsc2VcclxuICAgICAgfSkpXHJcbiAgICAgIC5maWx0ZXIoKHN0YXR1czogYW55KSA9PiBzdGF0dXMuc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dCkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkU3RhdHVzID0gdGhpcy5zdGF0dXNWYWwubWFwKChzdGF0dXM6IGFueSkgPT4gKHtcclxuICAgICAgLi4uc3RhdHVzLFxyXG4gICAgICBjaGVja2VkOiB0aGlzLnNlbGVjdGVkRmlsdGVycy5zdGF0dXM/LmluY2x1ZGVzKHN0YXR1cy5zdGF0dXMpIHx8IGZhbHNlXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcblxyXG4gICAgaXNBbGxTdGF0dXNTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRTdGF0dXMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLmZpbHRlcmVkU3RhdHVzLmV2ZXJ5KChzdGF0dXM6YW55KSA9PiBzdGF0dXMuY2hlY2tlZClcclxuICAgICk7XHJcbiAgfVxyXG4gIHRvZ2dsZVNlbGVjdEFsbFN0YXR1cyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG5cclxuICAvLyBVcGRhdGUgVUkgc3RhdGVcclxuICB0aGlzLmZpbHRlcmVkU3RhdHVzLmZvckVhY2goKHN0YXR1czogYW55KSA9PiAoc3RhdHVzLmNoZWNrZWQgPSBpc0NoZWNrZWQpKTtcclxuXHJcbiAgLy8gVXBkYXRlIHNlbGVjdGVkRmlsdGVycyB3aXRoIG9ubHkgY2hlY2tlZCBzdGF0dXMgdmFsdWVzXHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gdGhpcy5maWx0ZXJlZFN0YXR1c1xyXG4gICAgLmZpbHRlcigoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5jaGVja2VkKVxyXG4gICAgLm1hcCgoc3RhdHVzOiBhbnkpID0+IHN0YXR1cy5zdGF0dXMpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJpZXMoKTtcclxuICB9XHJcblxyXG51cGRhdGVTZWxlY3RlZFN0YXR1cygpIHtcclxuICAvLyBrZWVwIG9ubHkgdGhlIGNoZWNrZWQgc3RhdHVzZXNcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmlsdGVyZWRTdGF0dXNcclxuICAgIC5maWx0ZXIoKHN0YXR1czogYW55KSA9PiBzdGF0dXMuY2hlY2tlZClcclxuICAgIC5tYXAoKHN0YXR1czogYW55KSA9PiBzdGF0dXMuc3RhdHVzKTsgIC8vIOKchSBwaWNrIG9ubHkgdGhlIHZhbHVlXHJcblxyXG4gIC8vIHRoaXMuc3RhdHVzVmFsID0gc2VsZWN0ZWQ7XHJcbiAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuc3RhdHVzID0gc2VsZWN0ZWQ7XHJcbiAgdGhpcy51cGRhdGVTZWxlY3RlZENvdW50cmllcygpO1xyXG59XHJcbn1cclxuaW50ZXJmYWNlIENpdHkge1xyXG4gIGNpdHk6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIExvY2F0aW9uIHtcclxuICBjaXR5OiBDaXR5O1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuaW50ZXJmYWNlIENvdW50cnkge1xyXG4gIGNvdW50cnk6IHN0cmluZztcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtZS0zXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJzZWxlY3RlZENvdW50cmllc0xhYmVsKClcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtMiBtdC0xIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dDbGljaygnY291bnRyeScsICRldmVudClcIj57e3NlbGVjdGVkQ291bnRyaWVzTGFiZWwoKX19IFxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVtb3ZlQ291bnRyeSgpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJzZWxlY3RlZExvY2F0aW9uc0xhYmVsKClcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXgtMiBtdC0xIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dDbGljaygncmVnaW9uJywgJGV2ZW50KVwiPnt7c2VsZWN0ZWRMb2NhdGlvbnNMYWJlbCgpfX0gXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVMb2NhdGlvbigpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJzZWxlY3RlZEdyb3Vwc0xhYmVsKClcIiAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG14LTIgbXQtMSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93Q2xpY2soJ2NsdXN0ZXJzJywgJGV2ZW50KVwiPnt7c2VsZWN0ZWRHcm91cHNMYWJlbCgpfX0gXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVHcm91cCgpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8bGFiZWwgKGNsaWNrKT1cInNob3dDbGljaygnc3RvcmVzJywgJGV2ZW50KVwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBtdC0xIGN1cnNvci1wb2ludGVyXCI+e3tzZWxlY3RlZFN0b3Jlc0xhYmVsKCl9fTwvbGFiZWw+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJ3cmFwcGVyIG1lLTNcIiAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJ1wiPlxyXG48bGliLXNlbGVjdCBbaXRlbXNdPVwiY2xpZW50TGlzdFwiIFttdWx0aV09XCJmYWxzZVwiIFtzZWFyY2hGaWVsZF09XCInY2xpZW50TmFtZSdcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbaWRGaWVsZF09XCInY2xpZW50SWQnXCJcclxuKHNlbGVjdGVkKT1cIm9uQ2xpZW50U2VsZWN0KCRldmVudClcIiBbc2VsZWN0ZWRWYWx1ZXNdPVwiW3NlbGVjdGVkQ2xpZW50XVwiPjwvbGliLXNlbGVjdD5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICBkPVwiTTEzLjMzMzMgMS42NjY2M1Y0Ljk5OTk2TTYuNjY2NjcgMS42NjY2M1Y0Ljk5OTk2TTIuNSA4LjMzMzI5SDE3LjVNNC4xNjY2NyAzLjMzMzI5SDE1LjgzMzNDMTYuNzUzOCAzLjMzMzI5IDE3LjUgNC4wNzk0OCAxNy41IDQuOTk5OTZWMTYuNjY2NkMxNy41IDE3LjU4NzEgMTYuNzUzOCAxOC4zMzMzIDE1LjgzMzMgMTguMzMzM0g0LjE2NjY3QzMuMjQ2MTkgMTguMzMzMyAyLjUgMTcuNTg3MSAyLjUgMTYuNjY2NlY0Ljk5OTk2QzIuNSA0LjA3OTQ4IDMuMjQ2MTkgMy4zMzMyOSA0LjE2NjY3IDMuMzMzMjlaXCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxpbnB1dCBjbGFzcz1cImZ4LWRhdGUtcmFuZ2UgZm9ybS1jb250cm9sIHBzLTE0XCIgc3R5bGU9XCJtaW4td2lkdGg6IDI2MHB4ICFpbXBvcnRhbnQ7XCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dFxyXG4gICAgICAgIG5neERhdGVyYW5nZXBpY2tlck1kIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFtyYW5nZXNdPVwicmFuZ2VzXCIgW3Nob3dDdXN0b21SYW5nZUxhYmVsXT1cInRydWVcIiBbYXV0b0FwcGx5XT1cInRydWVcIlxyXG4gICAgICAgIFthbHdheXNTaG93Q2FsZW5kYXJzXT1cImZhbHNlXCIgW2tlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2VdPVwidHJ1ZVwiIFtzaG93Q2FuY2VsXT1cInRydWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIiAoc3RhcnREYXRlQ2hhbmdlZCk9XCJvblN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCIgW2lzQ3VzdG9tRGF0ZV09XCJpc0N1c3RvbURhdGVcIlxyXG4gICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgIChkYXRlc1VwZGF0ZWQpPVwiZGF0ZWNoYW5nZSgkZXZlbnQpXCIgbmFtZT1cImRhdGVyYW5nZVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuZHJvcGRvd24oJGV2ZW50KVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE5IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0xNy41MDI2IDAuODM1OTM4SDAuODM1OTM4TDcuNTAyNiA4LjcxOTI3VjE0LjE2OTNMMTAuODM1OSAxNS44MzU5VjguNzE5MjdMMTcuNTAyNiAwLjgzNTkzOFpcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuPC9zdmc+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5GaWx0ZXI8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgXHJcbiAgPGRpdiAqbmdJZj1cIk9wZW5kcm9wZG93blwiIGNsYXNzPVwiY2FyZCBkcm9wZG93bjIgcG9zaXRpb24tYWJzb2x1dGUgei0xIGVuZC0wXCIgc3R5bGU9XCJ6LWluZGV4OiAxICFpbXBvcnRhbnQ7IG1pbi13aWR0aDogMzUwcHg7XCIgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZURyb3Bkb3duMSgpXCI+XHJcbiAgICBcclxuICAgIDwhLS0gSGVhZGVyIFNlY3Rpb24gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHB4LTMganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHQtMSBweC0wIGJvcmRlci1ib3R0b20gYWxpZ24taXRlbXMtY2VudGVyIG1iLTFcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxyXG4gICAgICAgICAgIDxoNiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duICE9PSAnZG93bnRpbWUnXCIgY2xhc3M9XCJtYi0wIGhlYWRlci1maWx0ZXIgcHMtMiBteS00XCI+RmlsdGVyIGJ5PC9oNj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCIgKm5nSWY9XCJhY3RpdmVEcm9wZG93biA9PT0gJ2Rvd250aW1lJ1wiPlxyXG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgaGVhZGVyLWZpbHRlciBwcy0yIG15LTRcIj5GaWx0ZXIgYnk8L2g2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTcgdGV4dC1tdXRlZCBteS0yXCI+IFxyXG4gICAgICAgIDwhLS0gU2VhcmNoIGZyb20gMjAwMCBzdG9yZXMgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdzdGF0dXMnXCI+XHJcbiAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGRyb3Bkb3duLXNlYXJjaFwiIFxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBzdGF0dXNcIiBcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdGF0dXNUZXh0XCIgXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlclN0YXR1cygpXCIgXHJcbiAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnY291bnRyeSdcIj5cclxuICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIiBcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb3VudHJ5XCIgXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hDb3VudHJ5VGV4dFwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckNvdW50cmllcygpXCIgXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdyZWdpb24nXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCIgXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggcmVnaW9uXCIgXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hMb2NhdGlvblRleHRcIiBcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJmaWx0ZXJMb2NhdGlvbnMoKVwiIFxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnY2x1c3RlcnMnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCIgXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY2x1c3RlcnNcIiBcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEdyb3VwVGV4dFwiIFxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckdyb3VwcygpXCIgXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdzdG9yZXMnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIiBcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHN0b3Jlc1wiIFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdG9yZVRleHRcIiBcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlclN0b3JlcygpXCIgXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnZG93bnRpbWUnXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01IHBiLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gPGlucHV0IFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiIFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZnJvbSAyMDAwIHN0b3Jlc1wiIFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdG9yZVRleHRcIiBcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlclN0b3JlcygpXCIgXHJcbiAgICAgICAgICAgIC8+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE1haW4gQ29udGVudCBBcmVhIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8IS0tIExlZnQgU2lkZSAtIEZpbHRlciBDYXRlZ29yaWVzIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgYm9yZGVyLWVuZCBwZS0zXCI+XHJcbiAgICAgICAgPCEtLSBGaWx0ZXIgU3RhdHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXRlZ29yaWVzIHB4LTMgbXktMlwiPlxyXG4gICAgICAgICAgIDxkaXYgIGNsYXNzPVwiZmlsdGVyLWNhdGVnb3J5LWl0ZW0gIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dEcm9wZG93bignc3RhdHVzJylcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XHJcbiAgICAnYWN0aXZlLWl0ZW0nOiBhY3RpdmVEcm9wZG93biA9PT0gJ3N0YXR1cycsIFxyXG4gICAgJ3RleHQtaXRlbSc6IGFjdGl2ZURyb3Bkb3duICE9PSAnc3RhdHVzJ1xyXG4gICAgICAgIH1cIj5TdGF0dXMgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFN0YXR1c0xhYmVsMSgpXCIgIFtuZ0NsYXNzXT1cImFjdGl2ZURyb3Bkb3duPT09ICdzdGF0dXMnID8gJ3RleHQtYm9yZGVyLXByaWFtcnknIDogJ3RleHQtYm9yZGVyJ1wiIGNsYXNzPVwibXgtMlwiPnt7c2VsZWN0ZWRTdGF0dXNMYWJlbDEoKX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAgY2xhc3M9XCJmaWx0ZXItY2F0ZWdvcnktaXRlbSAgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duKCdjb3VudHJ5JylcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XHJcbiAgICAnYWN0aXZlLWl0ZW0nOiBhY3RpdmVEcm9wZG93biA9PT0gJ2NvdW50cnknLCBcclxuICAgICd0ZXh0LWl0ZW0nOiBhY3RpdmVEcm9wZG93biAhPT0gJ2NvdW50cnknXHJcbiAgfVwiPkNvdW50cnkgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZENvdW50cmllc0xhYmVsMSgpXCIgIFtuZ0NsYXNzXT1cImFjdGl2ZURyb3Bkb3duPT09ICdjb3VudHJ5JyA/ICd0ZXh0LWJvcmRlci1wcmlhbXJ5JyA6ICd0ZXh0LWJvcmRlcidcIiBjbGFzcz1cIm14LTJcIj57e3NlbGVjdGVkQ291bnRyaWVzTGFiZWwxKCl9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2F0ZWdvcnktaXRlbSAgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duKCdyZWdpb24nKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAncmVnaW9uJywgXHJcbiAgICAndGV4dC1pdGVtJzogYWN0aXZlRHJvcGRvd24gIT09ICdyZWdpb24nXHJcbiAgfVwiPlJlZ2lvbiA8c3BhbiAqbmdJZj1cInNlbGVjdGVkTG9jYXRpb25zTGFiZWwxKClcIiAgW25nQ2xhc3NdPVwiYWN0aXZlRHJvcGRvd249PT0gJ3JlZ2lvbicgPyAndGV4dC1ib3JkZXItcHJpYW1yeScgOiAndGV4dC1ib3JkZXInXCIgY2xhc3M9XCJteC0yXCI+e3sgc2VsZWN0ZWRMb2NhdGlvbnNMYWJlbDEoKSB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXRlZ29yeS1pdGVtICBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93RHJvcGRvd24oJ2NsdXN0ZXJzJylcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XHJcbiAgICAnYWN0aXZlLWl0ZW0nOiBhY3RpdmVEcm9wZG93biA9PT0gJ2NsdXN0ZXJzJywgXHJcbiAgICAndGV4dC1pdGVtJzogYWN0aXZlRHJvcGRvd24gIT09ICdjbHVzdGVycydcclxuICB9XCI+Q2x1c3RlcnMgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEdyb3Vwc0xhYmVsMSgpXCIgIFtuZ0NsYXNzXT1cImFjdGl2ZURyb3Bkb3duPT09ICdjbHVzdGVycycgPyAndGV4dC1ib3JkZXItcHJpYW1yeScgOiAndGV4dC1ib3JkZXInXCIgY2xhc3M9XCJteC0yXCI+e3sgc2VsZWN0ZWRHcm91cHNMYWJlbDEoKSB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2F0ZWdvcnktaXRlbSAgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duKCdzdG9yZXMnKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAnc3RvcmVzJywgXHJcbiAgICAndGV4dC1pdGVtJzogYWN0aXZlRHJvcGRvd24gIT09ICdzdG9yZXMnXHJcbiAgfVwiID5TdG9yZXMgPHNwYW4gIFtuZ0NsYXNzXT1cImFjdGl2ZURyb3Bkb3duPT09ICdzdG9yZXMnID8gJ3RleHQtYm9yZGVyLXByaWFtcnknIDogJ3RleHQtYm9yZGVyJ1wiICpuZ0lmPVwic2VsZWN0ZWRTdG9yZXNMYWJlbDEoKVwiIGNsYXNzPVwibXgtMlwiPnt7IHNlbGVjdGVkU3RvcmVzTGFiZWwxKCkgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNhdGVnb3J5LWl0ZW0gIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dEcm9wZG93bignZG93bnRpbWUnKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICdhY3RpdmUtaXRlbSc6IGFjdGl2ZURyb3Bkb3duID09PSAnZG93bnRpbWUnLCBcclxuICAgICd0ZXh0LWl0ZW0nOiBhY3RpdmVEcm9wZG93biAhPT0gJ2Rvd250aW1lJ1xyXG4gIH1cIiA+RG93bnRpbWUgKEluIE1pbnMpIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIERvd250aW1lIFNlY3Rpb24gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIHRleHQtbXV0ZWQgbWItMlwiPkRvd250aW1lPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj5Eb3dudGltZSBzZWN0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gUmlnaHQgU2lkZSAtIERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBwcy0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQtYXJlYVwiIHN0eWxlPVwibWluLWhlaWdodDogMjAwcHg7XCI+XHJcbiAgICAgICAgICBcclxuPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnc3RhdHVzJ1wiIGNsYXNzPVwiZHJvcGRvd24tZnVsbC12aWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJlZFN0YXR1cz8ubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFN0YXR1c1wiIFxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTdGF0dXNTZWxlY3RlZCgpXCIgXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFN0YXR1cygkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsQ291bnRyaWVzRnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJlZFN0YXR1cz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC0yMCBtYi02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC0yMCBjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctbm9kYXRhLXRhYmxlXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3QgdGV4dC1ub3dyYXBcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDI1MHB4OyBvdmVyZmxvdy15OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIiAgKm5nRm9yPVwibGV0IHN0YXR1cyBvZiBmaWx0ZXJlZFN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgW2lkXT1cInN0YXR1cy5zdGF0dXNcIiBcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXR1cy5jaGVja2VkXCJcclxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkU3RhdHVzKClcIiBcclxuICAgICAgLz5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCB0ZXh0LWNhcGl0YWxpemVcIiBbZm9yXT1cInN0YXR1cy5zdGF0dXNcIj5cclxuICAgICAgICB7eyBzdGF0dXMuc3RhdHVzIH19XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBDb3VudHJ5IERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdjb3VudHJ5J1wiIGNsYXNzPVwiZHJvcGRvd24tZnVsbC12aWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJlZENvdW50cmllcz8ubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxDb3VudHJpZXNGdWxsXCIgXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbENvdW50cmllc1NlbGVjdGVkKClcIiBcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsQ291bnRyaWVzKCRldmVudClcIiBcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxDb3VudHJpZXNGdWxsXCI+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmlsdGVyZWRDb3VudHJpZXM/Lmxlbmd0aFwiID5cclxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTIwIGNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdCB0ZXh0LW5vd3JhcFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidjb3VudHJ5LWZ1bGwtJyArIGNvdW50cnkuY291bnRyeVwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvdW50cnkuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRDb3VudHJpZXMoKVwiIFxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcHktMVwiIFtmb3JdPVwiJ2NvdW50cnktZnVsbC0nICsgY291bnRyeS5jb3VudHJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvdW50cnkuY291bnRyeSB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFJlZ2lvbiBEcm9wZG93biBDb250ZW50IC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAncmVnaW9uJ1wiIGNsYXNzPVwiZHJvcGRvd24tZnVsbC12aWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJlZExvY2F0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxMb2NhdGlvbnNGdWxsXCIgXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbExvY2F0aW9uc1NlbGVjdGVkKClcIiBcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsTG9jYXRpb25zKCRldmVudClcIiBcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJzZWxlY3RBbGxMb2NhdGlvbnNGdWxsXCI+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmlsdGVyZWRMb2NhdGlvbnM/Lmxlbmd0aFwiID5cclxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTIwIGNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdCB0ZXh0LW5vd3JhcFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBmaWx0ZXJlZExvY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiBcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCInbG9jYXRpb24tZnVsbC0nICsgbG9jYXRpb24uY2l0eVwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkTG9jYXRpb25zKClcIiBcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB5LTFcIiBbZm9yXT1cIidsb2NhdGlvbi1mdWxsLScgKyBsb2NhdGlvbi5jaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGxvY2F0aW9uLmNpdHkgfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBDbHVzdGVycyBEcm9wZG93biBDb250ZW50IC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnY2x1c3RlcnMnXCIgY2xhc3M9XCJkcm9wZG93bi1mdWxsLXZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkR3JvdXBzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbEdyb3Vwc0Z1bGxcIiBcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsR3JvdXBzU2VsZWN0ZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxHcm91cHMoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbEdyb3Vwc0Z1bGxcIj5cclxuICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmlsdGVyZWRHcm91cHM/Lmxlbmd0aFwiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtMjAgbWItNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtMjAgY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1saXN0IHRleHQtbm93cmFwXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweDsgb3ZlcmZsb3cteTogYXV0bztcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpbHRlcmVkR3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidncm91cC1mdWxsLScgKyBncm91cC5ncm91cE5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJncm91cC5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZEdyb3VwcygpXCIgXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBweS0xXCIgW2Zvcl09XCInZ3JvdXAtZnVsbC0nICsgZ3JvdXAuZ3JvdXBOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwTmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFN0b3JlcyBEcm9wZG93biBDb250ZW50IC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZURyb3Bkb3duID09PSAnc3RvcmVzJ1wiIGNsYXNzPVwiZHJvcGRvd24tZnVsbC12aWV3XCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkU3RvcmVzPy5sZW5ndGhcIiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFN0b3Jlc0Z1bGxcIiBcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU3RvcmVzU2VsZWN0ZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxTdG9yZXMoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbFN0b3Jlc0Z1bGxcIj5cclxuICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmlsdGVyZWRTdG9yZXM/Lmxlbmd0aFwiID5cclxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTIwIG1iLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTIwIGNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGEtdGFibGVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbGlzdCB0ZXh0LW5vd3JhcFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBmaWx0ZXJlZFN0b3Jlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCInc3RvcmUtZnVsbC0nICsgc3RvcmUuc3RvcmVJZFwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0b3JlLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkU3RvcmVzKClcIiBcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHB5LTFcIiBbZm9yXT1cIidzdG9yZS1mdWxsLScgKyBzdG9yZS5zdG9yZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHN0b3JlLnN0b3JlTmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERvd250aW1lIERyb3Bkb3duIENvbnRlbnQgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlRHJvcGRvd24gPT09ICdkb3dudGltZSdcIiBjbGFzcz1cImRyb3Bkb3duLWZ1bGwtdmlld1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsRG93bnRpbWVGdWxsXCIgXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbERvd250aW1lU2VsZWN0ZWQoKVwiIFxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxEb3dudGltZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbERvd250aW1lRnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFsbCAgXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxpc3QgdGV4dC1ub3dyYXBcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDI1MHB4OyBvdmVyZmxvdy15OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTJcIiAqbmdGb3I9XCJsZXQgZG93bnRpbWUgb2YgZG93bnRpbWVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidkb3dudGltZS1mdWxsLScgKyBkb3dudGltZS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRvd250aW1lLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkRG93bnRpbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBweS0xXCIgW2Zvcl09XCInZG93bnRpbWUtZnVsbC0nICsgZG93bnRpbWUudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZG93bnRpbWUubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8IS0tIERlZmF1bHQgVmlldyB3aGVuIG5vIGRyb3Bkb3duIHNlbGVjdGVkIC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFhY3RpdmVEcm9wZG93blwiIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBweS01XCI+XHJcbiAgICAgICAgICAgIDxkaXY+U2VsZWN0IGEgZmlsdGVyIGNhdGVnb3J5IHRvIHNlZSBvcHRpb25zPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcC0zIGJvcmRlci10b3AgbXQtM1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSAgYnRuLXNtIHBzLTJcIiAoY2xpY2spPVwiUmVzZXQoKVwiPlJlc2V0IEZpbHRlcnM8L2J1dHRvbj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGJ0bi1zbSBtZS0yXCIgKGNsaWNrKT1cImNsb3NlRHJvcGRvd24xKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJBcHBseSgpXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|