@huntsman-cancer-institute/input 17.3.4 → 17.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/date/date-date.component.d.ts +3 -1
- package/date/date-validator.d.ts +3 -0
- package/esm2022/date/date-date-range.component.mjs +1 -1
- package/esm2022/date/date-date.component.mjs +49 -96
- package/esm2022/date/date-validator.mjs +12 -4
- package/esm2022/dropdown/dropdown-select.component.mjs +3 -3
- package/esm2022/select/custom-combobox.component.mjs +5 -5
- package/fesm2022/huntsman-cancer-institute-input.mjs +67 -106
- package/fesm2022/huntsman-cancer-institute-input.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -338,7 +338,7 @@ export class DropdownSelectComponent {
|
|
|
338
338
|
(keyup)="onKeyUp($event)"
|
|
339
339
|
(keydown)="onKeyDown($event)"
|
|
340
340
|
(keypress)="onKeyPress($event)"
|
|
341
|
-
(click)="showResults()" *ngIf="!disabled" />
|
|
341
|
+
(click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
|
|
342
342
|
</li>
|
|
343
343
|
</ul>
|
|
344
344
|
<span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
|
|
@@ -394,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
394
394
|
(keyup)="onKeyUp($event)"
|
|
395
395
|
(keydown)="onKeyDown($event)"
|
|
396
396
|
(keypress)="onKeyPress($event)"
|
|
397
|
-
(click)="showResults()" *ngIf="!disabled" />
|
|
397
|
+
(click)="showResults()" *ngIf="!disabled" attr.aria-label="{{getPlaceholder()}}"/>
|
|
398
398
|
</li>
|
|
399
399
|
</ul>
|
|
400
400
|
<span class="icon-drop-menu" *ngIf="inputState===0" (click)="showResults()">
|
|
@@ -456,4 +456,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
456
456
|
type: ViewChild,
|
|
457
457
|
args: ["termInput", { static: false }]
|
|
458
458
|
}] } });
|
|
459
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3Ryxt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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRFQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDO2lCQUM3Qjs4QkFNVSxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVnQyxPQUFPO3NCQUE3QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBWVksU0FBUztzQkFBekQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtEcm9wZG93blNlbGVjdFJlc3VsdENvbXBvbmVudH0gZnJvbSBcIi4vZHJvcGRvd24tc2VsZWN0LXJlc3VsdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTZWxlY3RJdGVtLCBLRVlfQ09ERX0gZnJvbSBcIi4vc2VsZWN0LWl0ZW1cIjtcclxuaW1wb3J0IHtNZXNzYWdlc30gZnJvbSBcIi4vbWVzc2FnZXNcIjtcclxuXHJcbmNvbnN0IFZBTFVFX0FDQ0VTU09SID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duU2VsZWN0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWRyb3Bkb3duLXNlbGVjdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgW2NsYXNzLnNpbXBsZS1zZWxlY3Rpb25dPVwiIW11bHRpcGxlXCJcclxuICAgICAgICAgIFtjbGFzcy5tdWx0aXBsZS1zZWxlY3Rpb25dPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLnNlYXJjaC1mb2N1c2VkXT1cInNlYXJjaEZvY3VzZWRcIlxyXG4gICAgICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cImRpc2FibGVkXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNoRm9jdXNlZCB8fCBtdWx0aXBsZVwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cInNlbGVjdC1zZWxlY3RlZCBsYWJlbCBsYWJlbC1pbmZvXCIgW2NsYXNzLmxhYmVsXT1cIm11bHRpcGxlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MubGFiZWwtaW5mb109XCJtdWx0aXBsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWl0ZW0tdGV4dFwiPnt7aXRlbS50ZXh0fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwic2VsZWN0LXNlbGVjdGlvbi1yZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiICpuZ0lmPVwiIWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImRlbGV0ZUljb25cIiBbY2xhc3MudGV4dC1pbmZvXT1cIiFtdWx0aXBsZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGxpIGNsYXNzPVwic2VsZWN0LWlucHV0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgI3Rlcm1JbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXJtXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZWFibGVdPVwiaXNIaWRlYWJsZSgpXCJcclxuICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0SW5wdXRXaWR0aCgpXCJcclxuICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UmVzdWx0cygpXCIgKm5nSWY9XCIhZGlzYWJsZWRcIiAvPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1kcm9wLW1lbnVcIiAqbmdJZj1cImlucHV0U3RhdGU9PT0wXCIgKGNsaWNrKT1cInNob3dSZXN1bHRzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImFmdGVyXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRzLWNvbnRhaW5lclwiICpuZ0lmPVwicmVzdWx0c1Zpc2libGVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdHMtbXNnXCIgKm5nSWY9XCJsaXN0ZWREYXRhICYmIChsaXN0ZWREYXRhLmxlbmd0aCArIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSA8IHJlc3VsdHNDb3VudFwiPlxyXG4gICAgICAgICAge3tnZXRDb3VudE1lc3NhZ2UoKX19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0cy1tc2cgbm8tcmVzdWx0cy1tc2dcIiAqbmdJZj1cInNlYXJjaEZvY3VzZWQgJiYgbGlzdGVkRGF0YSAmJiBsaXN0ZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAge3ttZXNzYWdlcyAmJiBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgPyBtZXNzYWdlcy5ub1Jlc3VsdHNNc2cgOiBOT19SRVNVTFRTX01TR319XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxoY2ktZHJvcGRvd24tc2VsZWN0LXJlc3VsdCAjcmVzdWx0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImxpc3RlZERhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkRXZlbnQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hGb2N1c2VkXT1cInNlYXJjaEZvY3VzZWRcIj48L2hjaS1kcm9wZG93bi1zZWxlY3QtcmVzdWx0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbVkFMVUVfQUNDRVNTT1JdLFxyXG4gIGhvc3Q6IHtjbGFzczogXCJmbGV4LWdyb3ctMVwifVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciAge1xyXG5cclxuICBNT1JFX1JFU1VMVFNfTVNHID0gXCJTaG93aW5nIFwiICsgTWVzc2FnZXMuUEFSVElBTF9DT1VOVF9WQVIgKyBcIiBvZiBcIiArIE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiArIFwiIHJlc3VsdHMuXCI7XHJcbiAgTk9fUkVTVUxUU19NU0cgPSBcIk5vIHJlc3VsdHMgZm91bmRcIjtcclxuXHJcbiAgQElucHV0KCkgbWVzc2FnZXM6IE1lc3NhZ2VzID0ge1xyXG4gICAgbW9yZVJlc3VsdHNNc2c6IHRoaXMuTU9SRV9SRVNVTFRTX01TRyxcclxuICAgIG5vUmVzdWx0c01zZzogdGhpcy5OT19SRVNVTFRTX01TR1xyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFQcm92aWRlcjogKGl0ZW06IHN0cmluZywgc2VsZWN0ZWQ/OiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm92aWRlcjogKGlkczogYW55W10pID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdEl0ZW1BZGFwdGVyOiAoZW50aXR5OiBhbnkpID0+IFNlbGVjdEl0ZW07XHJcbiAgQElucHV0KCkgcmVmZXJlbmNlTW9kZTogXCJpZFwiIHwgXCJlbnRpdHlcIiA9IFwiaWRcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsaWVudE1vZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWxldGVJY29uID0gXCJmYXMgZmEtdGltZXMtY2lyY2xlXCI7XHJcbiAgQElucHV0KCkgaW5wdXRTdGF0ZSA9IDI7IC8vIHNlbGVjdEljb24gY29udHJvbGxlcjogMC0+d2l0aCBzZWxlY3RJY29uIDItPndpdGhvdXQgc2VsZWN0SWNvblxyXG4gIEBJbnB1dCgpIHJlc3VsdHNDb3VudDtcclxuICBASW5wdXQoKSBzZWFyY2hEZWxheSA9IDEwMDtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmU6IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInJlc3VsdHNcIiwge3N0YXRpYzogZmFsc2V9KSByZXN1bHRzOiBEcm9wZG93blNlbGVjdFJlc3VsdENvbXBvbmVudDtcclxuXHJcbiAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHRlcm0gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gIHJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgbGlzdGVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIG1vZGlmaWVkRGF0YTogU2VsZWN0SXRlbVtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFNlbGVjdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKFwidGVybUlucHV0XCIsIHtzdGF0aWM6IGZhbHNlfSkgcHJpdmF0ZSB0ZXJtSW5wdXQ7XHJcblxyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogU2VsZWN0SXRlbSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5saXN0ZWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5idWlsZFZhbHVlKCkpO1xyXG4gICAgdGhpcy50ZXJtLnBhdGNoVmFsdWUoXCJcIiwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c0lucHV0KCksIDEpO1xyXG4gICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBpdGVtLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c0lucHV0KCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWVzOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcykge1xyXG4gICAgICBpZiAodGhpcy5yZWZlcmVuY2VNb2RlID09PSBcImlkXCIpIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tSWRzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvdW50TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1zZyA9IHRoaXMubWVzc2FnZXMgJiYgdGhpcy5tZXNzYWdlcy5tb3JlUmVzdWx0c01zZyA/IHRoaXMubWVzc2FnZXMubW9yZVJlc3VsdHNNc2cgOiB0aGlzLk1PUkVfUkVTVUxUU19NU0c7XHJcbiAgICBtc2cgPSBtc2cucmVwbGFjZShNZXNzYWdlcy5QQVJUSUFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMubGlzdGVkRGF0YS5sZW5ndGgpKTtcclxuICAgIG1zZyA9IG1zZy5yZXBsYWNlKE1lc3NhZ2VzLlRPVEFMX0NPVU5UX1ZBUiwgU3RyaW5nKHRoaXMucmVzdWx0c0NvdW50IC0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkpO1xyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSXRlbShpdGVtOiBTZWxlY3RJdGVtKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0sIDApO1xyXG5cclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmJ1aWxkVmFsdWUoKSk7XHJcbiAgICB0aGlzLnJlbW92ZS5lbWl0KGl0ZW0pO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkIDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIGdldElucHV0V2lkdGgoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlYXJjaEVtcHR5ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiAodGhpcy50ZXJtLnZhbHVlID09PSBudWxsIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy50ZXJtLnZhbHVlID09PSBudWxsID8gMCA6IHRoaXMudGVybS52YWx1ZS5sZW5ndGg7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgcmV0dXJuIFwiMTAwJVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHNlYXJjaEVtcHR5ID8gXCIxMDAlXCIgOiAoMSArIGxlbmd0aCAqIC42KSArIFwiZW1cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSGlkZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkICE9PSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpIHtcclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLnRlcm0ucGF0Y2hWYWx1ZShcIlwiLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbktleVVwKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ET1dOX0FSUk9XKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLmFjdGl2ZU5leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5VUF9BUlJPVykge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5hY3RpdmVQcmV2aW91cygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkVOVEVSKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLnNlbGVjdEN1cnJlbnRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0U3RhdGUgPT09IDApIHtcclxuICAgICAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIgfHwgZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRE9XTl9BUlJPVykge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZXN1bHRzKSB7XHJcbiAgICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5UQUIpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuc2VsZWN0Q3VycmVudEl0ZW0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5ERUxFVEUpIHtcclxuICAgICAgaWYgKCghdGhpcy50ZXJtLnZhbHVlIHx8IHRoaXMudGVybS52YWx1ZS5sZW5ndGggPT09IDApICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbktleVByZXNzKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRU5URVIpIHtcclxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dSZXN1bHRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb1Jlc3VsdHMob2YoXCJcIikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1c2VkID0gIXRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVybUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9DaGFuZ2VzQW5kTG9hZERhdGFGcm9tT2JzZXJ2YWJsZSgpIHtcclxuICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLnRlcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLnNlYXJjaERlbGF5KSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9SZXN1bHRzKG9ic2VydmFibGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc3VsdHMob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBvYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gZmFsc2UpLFxyXG4gICAgICBmaWx0ZXIoKHRlcm0pID0+IHRlcm0ubGVuZ3RoID49IHRoaXMuaW5wdXRTdGF0ZSksXHJcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMubG9hZERhdGFGcm9tT2JzZXJ2YWJsZSh0ZXJtKSksXHJcbiAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiAhKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5hbHJlYWR5U2VsZWN0ZWQoaXRlbSkpKSksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc3VsdHNWaXNpYmxlID0gdGhpcy5zZWFyY2hGb2N1c2VkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB0aGlzLmxpc3RlZERhdGEgPSBpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWREYXRhRnJvbU9ic2VydmFibGUodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudE1vZGUgPyB0aGlzLmZldGNoQW5kZmlsdGVyTG9jYWxEYXRhKHRlcm0pIDogdGhpcy5mZXRjaERhdGEodGVybSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFscmVhZHlTZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChzZWxlY3RlZEl0ZW0gPT4ge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtLmlkID09PSBpdGVtLmlkKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZGZpbHRlckxvY2FsRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgaWYgKCF0aGlzLm1vZGlmaWVkRGF0YSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEoXCJcIikucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoaXRlbXMpID0+IHtcclxuICAgICAgICAgIHRoaXMubW9kaWZpZWREYXRhID0gaXRlbXM7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckxvY2FsRGF0YSh0ZXJtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpc1xyXG4gICAgICAuZGF0YVByb3ZpZGVyKHRlcm0sIHRoaXMuYnVpbGRWYWx1ZSgpKVxyXG4gICAgICAucGlwZShtYXAoKGl0ZW1zOiBhbnlbXSkgPT4gdGhpcy5hZGFwdEl0ZW1zKGl0ZW1zKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMb2NhbERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIHJldHVybiBvZih0aGlzLm1vZGlmaWVkRGF0YS5maWx0ZXIoKGl0ZW0pID0+IHRoaXMuY29udGFpbnNUZXh0KGl0ZW0sIHRlcm0pKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnRhaW5zVGV4dChpdGVtLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBpdGVtLnRleHQudG9VcHBlckNhc2UoKS5pbmRleE9mKHRlcm0udG9VcHBlckNhc2UoKSkgIT09IC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGFwdEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdEl0ZW1bXSB7XHJcbiAgICBjb25zdCBjb252ZXJ0ZWRJdGVtcyA9IFtdO1xyXG4gICAgaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKGl0ZW0pKVxyXG4gICAgICAuZm9yRWFjaCgoc2VsZWN0SXRlbSkgPT4gY29udmVydGVkSXRlbXMucHVzaChzZWxlY3RJdGVtKSk7XHJcbiAgICByZXR1cm4gY29udmVydGVkSXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gXCJpZFwiID09PSB0aGlzLnJlZmVyZW5jZU1vZGUgPyB0aGlzLmdldFNlbGVjdGVkSWRzKCkgOiB0aGlzLmdldEVudGl0aWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdGVkSWRzKCk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBpZHM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaWRzLnB1c2goaXRlbS5pZCkpO1xyXG4gICAgICByZXR1cm4gaWRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RlZEl0ZW1zWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdGllcygpOiBhbnlbXSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBjb25zdCBlbnRpdGllcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBlbnRpdGllcy5wdXNoKGl0ZW0uZW50aXR5KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlbnRpdGllcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5lbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlSXRlbXNGcm9tRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gc2VsZWN0SXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aXBsZVdpdGhFbnRpdGllcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihlbnRpdHkpO1xyXG4gICAgICBjb25zdCBpZHMgPSB0aGlzLmdldFNlbGVjdGVkSWRzKCk7XHJcblxyXG4gICAgICBpZiAoaWRzLmluZGV4T2YoaXRlbS5pZCkgPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZVNpbmdsZVdpdGhJZChzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlV2l0aElkcyhzZWxlY3RlZFZhbHVlczogYW55KSB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB1bmlxdWVJZHMgPSBbXTtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICBpZiAodW5pcXVlSWRzLmluZGV4T2YoaWQpID09PSAtMSkge1xyXG4gICAgICAgICAgdW5pcXVlSWRzLnB1c2goaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIodW5pcXVlSWRzKS5zdWJzY3JpYmUoKGl0ZW1zOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zLm1hcCh0aGlzLnNlbGVjdEl0ZW1BZGFwdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNpbmdsZVdpdGhJZChpZDogYW55KSB7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIoW2lkXSkuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RJdGVtID0gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtzZWxlY3RJdGVtXTtcclxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IHNlbGVjdEl0ZW0udGV4dDtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBZSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7OztBQUVwQyxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDdEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBMER0QixNQUFNLE9BQU8sdUJBQXVCO0lBeERwQztRQTBERSxxQkFBZ0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUM3Ryxt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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRFQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDO2lCQUM3Qjs4QkFNVSxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVnQyxPQUFPO3NCQUE3QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBWVksU0FBUztzQkFBekQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtEcm9wZG93blNlbGVjdFJlc3VsdENvbXBvbmVudH0gZnJvbSBcIi4vZHJvcGRvd24tc2VsZWN0LXJlc3VsdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTZWxlY3RJdGVtLCBLRVlfQ09ERX0gZnJvbSBcIi4vc2VsZWN0LWl0ZW1cIjtcclxuaW1wb3J0IHtNZXNzYWdlc30gZnJvbSBcIi4vbWVzc2FnZXNcIjtcclxuXHJcbmNvbnN0IFZBTFVFX0FDQ0VTU09SID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duU2VsZWN0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLWRyb3Bkb3duLXNlbGVjdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgW2NsYXNzLnNpbXBsZS1zZWxlY3Rpb25dPVwiIW11bHRpcGxlXCJcclxuICAgICAgICAgIFtjbGFzcy5tdWx0aXBsZS1zZWxlY3Rpb25dPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgW2NsYXNzLnNlYXJjaC1mb2N1c2VkXT1cInNlYXJjaEZvY3VzZWRcIlxyXG4gICAgICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cImRpc2FibGVkXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNoRm9jdXNlZCB8fCBtdWx0aXBsZVwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIiBjbGFzcz1cInNlbGVjdC1zZWxlY3RlZCBsYWJlbCBsYWJlbC1pbmZvXCIgW2NsYXNzLmxhYmVsXT1cIm11bHRpcGxlXCJcclxuICAgICAgICAgICAgICBbY2xhc3MubGFiZWwtaW5mb109XCJtdWx0aXBsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLWl0ZW0tdGV4dFwiPnt7aXRlbS50ZXh0fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwic2VsZWN0LXNlbGVjdGlvbi1yZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiICpuZ0lmPVwiIWRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImRlbGV0ZUljb25cIiBbY2xhc3MudGV4dC1pbmZvXT1cIiFtdWx0aXBsZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGxpIGNsYXNzPVwic2VsZWN0LWlucHV0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgI3Rlcm1JbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXJtXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZWFibGVdPVwiaXNIaWRlYWJsZSgpXCJcclxuICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0SW5wdXRXaWR0aCgpXCJcclxuICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93UmVzdWx0cygpXCIgKm5nSWY9XCIhZGlzYWJsZWRcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7e2dldFBsYWNlaG9sZGVyKCl9fVwiLz5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImljb24tZHJvcC1tZW51XCIgKm5nSWY9XCJpbnB1dFN0YXRlPT09MFwiIChjbGljayk9XCJzaG93UmVzdWx0cygpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZnRlclwiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0cy1jb250YWluZXJcIiAqbmdJZj1cInJlc3VsdHNWaXNpYmxlXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHRzLW1zZ1wiICpuZ0lmPVwibGlzdGVkRGF0YSAmJiAobGlzdGVkRGF0YS5sZW5ndGggKyBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkgPCByZXN1bHRzQ291bnRcIj5cclxuICAgICAgICAgIHt7Z2V0Q291bnRNZXNzYWdlKCl9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdHMtbXNnIG5vLXJlc3VsdHMtbXNnXCIgKm5nSWY9XCJzZWFyY2hGb2N1c2VkICYmIGxpc3RlZERhdGEgJiYgbGlzdGVkRGF0YS5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIHt7bWVzc2FnZXMgJiYgbWVzc2FnZXMubm9SZXN1bHRzTXNnID8gbWVzc2FnZXMubm9SZXN1bHRzTXNnIDogTk9fUkVTVUxUU19NU0d9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aGNpLWRyb3Bkb3duLXNlbGVjdC1yZXN1bHQgI3Jlc3VsdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJsaXN0ZWREYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZEV2ZW50KT1cIm9uSXRlbVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRm9jdXNlZF09XCJzZWFyY2hGb2N1c2VkXCI+PC9oY2ktZHJvcGRvd24tc2VsZWN0LXJlc3VsdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1ZBTFVFX0FDQ0VTU09SXSxcclxuICBob3N0OiB7Y2xhc3M6IFwiZmxleC1ncm93LTFcIn1cclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IgIHtcclxuXHJcbiAgTU9SRV9SRVNVTFRTX01TRyA9IFwiU2hvd2luZyBcIiArIE1lc3NhZ2VzLlBBUlRJQUxfQ09VTlRfVkFSICsgXCIgb2YgXCIgKyBNZXNzYWdlcy5UT1RBTF9DT1VOVF9WQVIgKyBcIiByZXN1bHRzLlwiO1xyXG4gIE5PX1JFU1VMVFNfTVNHID0gXCJObyByZXN1bHRzIGZvdW5kXCI7XHJcblxyXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBNZXNzYWdlcyA9IHtcclxuICAgIG1vcmVSZXN1bHRzTXNnOiB0aGlzLk1PUkVfUkVTVUxUU19NU0csXHJcbiAgICBub1Jlc3VsdHNNc2c6IHRoaXMuTk9fUkVTVUxUU19NU0dcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBkYXRhUHJvdmlkZXI6IChpdGVtOiBzdHJpbmcsIHNlbGVjdGVkPzogYW55W10pID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUHJvdmlkZXI6IChpZHM6IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBzZWxlY3RJdGVtQWRhcHRlcjogKGVudGl0eTogYW55KSA9PiBTZWxlY3RJdGVtO1xyXG4gIEBJbnB1dCgpIHJlZmVyZW5jZU1vZGU6IFwiaWRcIiB8IFwiZW50aXR5XCIgPSBcImlkXCI7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGllbnRNb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVsZXRlSWNvbiA9IFwiZmFzIGZhLXRpbWVzLWNpcmNsZVwiO1xyXG4gIEBJbnB1dCgpIGlucHV0U3RhdGUgPSAyOyAvLyBzZWxlY3RJY29uIGNvbnRyb2xsZXI6IDAtPndpdGggc2VsZWN0SWNvbiAyLT53aXRob3V0IHNlbGVjdEljb25cclxuICBASW5wdXQoKSByZXN1bHRzQ291bnQ7XHJcbiAgQElucHV0KCkgc2VhcmNoRGVsYXkgPSAxMDA7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxTZWxlY3RJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4oKTtcclxuICBAT3V0cHV0KCkgcmVtb3ZlOiBFdmVudEVtaXR0ZXI8U2VsZWN0SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdEl0ZW0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJyZXN1bHRzXCIsIHtzdGF0aWM6IGZhbHNlfSkgcmVzdWx0czogRHJvcGRvd25TZWxlY3RSZXN1bHRDb21wb25lbnQ7XHJcblxyXG4gIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0ZXJtID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHNlYXJjaEZvY3VzZWQgPSBmYWxzZTtcclxuICByZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGxpc3RlZERhdGE6IFNlbGVjdEl0ZW1bXTtcclxuICBtb2RpZmllZERhdGE6IFNlbGVjdEl0ZW1bXTtcclxuICBzZWxlY3RlZEl0ZW1zOiBTZWxlY3RJdGVtW10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInRlcm1JbnB1dFwiLCB7c3RhdGljOiBmYWxzZX0pIHByaXZhdGUgdGVybUlucHV0O1xyXG5cclxuICBwcml2YXRlIHBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBcIlwiO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQ2hhbmdlc0FuZExvYWREYXRhRnJvbU9ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbVNlbGVjdGVkKGl0ZW06IFNlbGVjdEl0ZW0pIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubGlzdGVkRGF0YS5pbmRleE9mKGl0ZW0sIDApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMubGlzdGVkRGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuYnVpbGRWYWx1ZSgpKTtcclxuICAgIHRoaXMudGVybS5wYXRjaFZhbHVlKFwiXCIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNJbnB1dCgpLCAxKTtcclxuICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0LmVtaXQoaXRlbSk7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gaXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNJbnB1dCgpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRlcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMucmVzdWx0c1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9ICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShzZWxlY3RlZFZhbHVlczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgaWYgKHRoaXMucmVmZXJlbmNlTW9kZSA9PT0gXCJpZFwiKSB7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUl0ZW1zRnJvbUlkcyhzZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUl0ZW1zRnJvbUVudGl0aWVzKHNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlclNlbGVjdGVkID0gXCJcIjtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb3VudE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGxldCBtc2cgPSB0aGlzLm1lc3NhZ2VzICYmIHRoaXMubWVzc2FnZXMubW9yZVJlc3VsdHNNc2cgPyB0aGlzLm1lc3NhZ2VzLm1vcmVSZXN1bHRzTXNnIDogdGhpcy5NT1JFX1JFU1VMVFNfTVNHO1xyXG4gICAgbXNnID0gbXNnLnJlcGxhY2UoTWVzc2FnZXMuUEFSVElBTF9DT1VOVF9WQVIsIFN0cmluZyh0aGlzLmxpc3RlZERhdGEubGVuZ3RoKSk7XHJcbiAgICBtc2cgPSBtc2cucmVwbGFjZShNZXNzYWdlcy5UT1RBTF9DT1VOVF9WQVIsIFN0cmluZyh0aGlzLnJlc3VsdHNDb3VudCAtIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGgpKTtcclxuICAgIHJldHVybiBtc2c7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlbW92ZUl0ZW0oaXRlbTogU2VsZWN0SXRlbSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtLCAwKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5idWlsZFZhbHVlKCkpO1xyXG4gICAgdGhpcy5yZW1vdmUuZW1pdChpdGVtKTtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCA/IHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA6IHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICBnZXRJbnB1dFdpZHRoKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWFyY2hFbXB0eSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgJiYgKHRoaXMudGVybS52YWx1ZSA9PT0gbnVsbCB8fCB0aGlzLnRlcm0udmFsdWUubGVuZ3RoID09PSAwKTtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMudGVybS52YWx1ZSA9PT0gbnVsbCA/IDAgOiB0aGlzLnRlcm0udmFsdWUubGVuZ3RoO1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHJldHVybiBcIjEwMCVcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBzZWFyY2hFbXB0eSA/IFwiMTAwJVwiIDogKDEgKyBsZW5ndGggKiAuNikgKyBcImVtXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0hpZGVhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLm11bHRpcGxlICYmIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCAhPT0gXCJcIjtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEZvY3VzZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy50ZXJtLnBhdGNoVmFsdWUoXCJcIiwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgb25LZXlVcChldjogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucmVzdWx0cykge1xyXG4gICAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuRE9XTl9BUlJPVykge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5hY3RpdmVOZXh0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuVVBfQVJST1cpIHtcclxuICAgICAgICB0aGlzLnJlc3VsdHMuYWN0aXZlUHJldmlvdXMoKTtcclxuICAgICAgfSBlbHNlIGlmIChldi5rZXlDb2RlID09PSBLRVlfQ09ERS5FTlRFUikge1xyXG4gICAgICAgIHRoaXMucmVzdWx0cy5zZWxlY3RDdXJyZW50SXRlbSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5pbnB1dFN0YXRlID09PSAwKSB7XHJcbiAgICAgICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkVOVEVSIHx8IGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkRPV05fQVJST1cpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3VsdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5RG93bihldjogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucmVzdWx0cykge1xyXG4gICAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuVEFCKSB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzLnNlbGVjdEN1cnJlbnRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXYua2V5Q29kZSA9PT0gS0VZX0NPREUuREVMRVRFKSB7XHJcbiAgICAgIGlmICgoIXRoaXMudGVybS52YWx1ZSB8fCB0aGlzLnRlcm0udmFsdWUubGVuZ3RoID09PSAwKSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbSh0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDFdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlQcmVzcyhldjogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2LmtleUNvZGUgPT09IEtFWV9DT0RFLkVOVEVSKSB7XHJcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UmVzdWx0cygpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRlcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZXN1bHRzKG9mKFwiXCIpKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VhcmNoRm9jdXNlZCA9ICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlcm1JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQ2hhbmdlc0FuZExvYWREYXRhRnJvbU9ic2VydmFibGUoKSB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy50ZXJtLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5zZWFyY2hEZWxheSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUmVzdWx0cyhvYnNlcnZhYmxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9SZXN1bHRzKG9ic2VydmFibGU6IE9ic2VydmFibGU8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgb2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzVmlzaWJsZSA9IGZhbHNlKSxcclxuICAgICAgZmlsdGVyKCh0ZXJtKSA9PiB0ZXJtLmxlbmd0aCA+PSB0aGlzLmlucHV0U3RhdGUpLFxyXG4gICAgICBzd2l0Y2hNYXAodGVybSA9PiB0aGlzLmxvYWREYXRhRnJvbU9ic2VydmFibGUodGVybSkpLFxyXG4gICAgICBtYXAoaXRlbXMgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gISh0aGlzLm11bHRpcGxlICYmIHRoaXMuYWxyZWFkeVNlbGVjdGVkKGl0ZW0pKSkpLFxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5yZXN1bHRzVmlzaWJsZSA9IHRoaXMuc2VhcmNoRm9jdXNlZClcclxuICAgICkuc3Vic2NyaWJlKChpdGVtcykgPT4gdGhpcy5saXN0ZWREYXRhID0gaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YUZyb21PYnNlcnZhYmxlKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnRNb2RlID8gdGhpcy5mZXRjaEFuZGZpbHRlckxvY2FsRGF0YSh0ZXJtKSA6IHRoaXMuZmV0Y2hEYXRhKHRlcm0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhbHJlYWR5U2VsZWN0ZWQoaXRlbTogU2VsZWN0SXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkSXRlbS5pZCA9PT0gaXRlbS5pZCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hBbmRmaWx0ZXJMb2NhbERhdGEodGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcclxuICAgIGlmICghdGhpcy5tb2RpZmllZERhdGEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hEYXRhKFwiXCIpLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKGl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1vZGlmaWVkRGF0YSA9IGl0ZW1zO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTG9jYWxEYXRhKHRlcm0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJMb2NhbERhdGEodGVybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoRGF0YSh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXNcclxuICAgICAgLmRhdGFQcm92aWRlcih0ZXJtLCB0aGlzLmJ1aWxkVmFsdWUoKSlcclxuICAgICAgLnBpcGUobWFwKChpdGVtczogYW55W10pID0+IHRoaXMuYWRhcHRJdGVtcyhpdGVtcykpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyTG9jYWxEYXRhKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICByZXR1cm4gb2YodGhpcy5tb2RpZmllZERhdGEuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmNvbnRhaW5zVGV4dChpdGVtLCB0ZXJtKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb250YWluc1RleHQoaXRlbSwgdGVybTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gaXRlbS50ZXh0LnRvVXBwZXJDYXNlKCkuaW5kZXhPZih0ZXJtLnRvVXBwZXJDYXNlKCkpICE9PSAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRhcHRJdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RJdGVtW10ge1xyXG4gICAgY29uc3QgY29udmVydGVkSXRlbXMgPSBbXTtcclxuICAgIGl0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5zZWxlY3RJdGVtQWRhcHRlcihpdGVtKSlcclxuICAgICAgLmZvckVhY2goKHNlbGVjdEl0ZW0pID0+IGNvbnZlcnRlZEl0ZW1zLnB1c2goc2VsZWN0SXRlbSkpO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIFwiaWRcIiA9PT0gdGhpcy5yZWZlcmVuY2VNb2RlID8gdGhpcy5nZXRTZWxlY3RlZElkcygpIDogdGhpcy5nZXRFbnRpdGllcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZElkcygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgY29uc3QgaWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaChpdGVtID0+IGlkcy5wdXNoKGl0ZW0uaWQpKTtcclxuICAgICAgcmV0dXJuIGlkcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwID8gbnVsbCA6IHRoaXMuc2VsZWN0ZWRJdGVtc1swXS5pZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXRpZXMoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgY29uc3QgZW50aXRpZXMgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgZW50aXRpZXMucHVzaChpdGVtLmVudGl0eSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZW50aXRpZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMCA/IG51bGwgOiB0aGlzLnNlbGVjdGVkSXRlbXNbMF0uZW50aXR5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUl0ZW1zRnJvbUVudGl0aWVzKHNlbGVjdGVkVmFsdWVzOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlTXVsdGlwbGVXaXRoRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VsZWN0SXRlbSA9IHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbc2VsZWN0SXRlbV07XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJTZWxlY3RlZCA9IHNlbGVjdEl0ZW0udGV4dDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlwbGVXaXRoRW50aXRpZXMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICBzZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChlbnRpdHkpID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIoZW50aXR5KTtcclxuICAgICAgY29uc3QgaWRzID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xyXG5cclxuICAgICAgaWYgKGlkcy5pbmRleE9mKGl0ZW0uaWQpID09PSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVJdGVtc0Zyb21JZHMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNdWx0aXBsZVdpdGhJZHMoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVTaW5nbGVXaXRoSWQoc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aXBsZVdpdGhJZHMoc2VsZWN0ZWRWYWx1ZXM6IGFueSkge1xyXG4gICAgaWYgKHNlbGVjdGVkVmFsdWVzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFByb3ZpZGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3QgdW5pcXVlSWRzID0gW107XHJcbiAgICAgIHNlbGVjdGVkVmFsdWVzLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgaWYgKHVuaXF1ZUlkcy5pbmRleE9mKGlkKSA9PT0gLTEpIHtcclxuICAgICAgICAgIHVuaXF1ZUlkcy5wdXNoKGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyKHVuaXF1ZUlkcykuc3Vic2NyaWJlKChpdGVtczogYW55W10pID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBpdGVtcy5tYXAodGhpcy5zZWxlY3RJdGVtQWRhcHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVXaXRoSWQoaWQ6IGFueSkge1xyXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFByb3ZpZGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyKFtpZF0pLnN1YnNjcmliZSgoaXRlbXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0SXRlbSA9IHRoaXMuc2VsZWN0SXRlbUFkYXB0ZXIoaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbc2VsZWN0SXRlbV07XHJcbiAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyU2VsZWN0ZWQgPSBzZWxlY3RJdGVtLnRleHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -479,7 +479,7 @@ export class CustomComboBoxComponent {
|
|
|
479
479
|
[tabindex]="tabindex"
|
|
480
480
|
(keydown)="onKey($event)"
|
|
481
481
|
(focus)="onFocus()"
|
|
482
|
-
(focusout)="onFocusOut()"
|
|
482
|
+
(focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
|
|
483
483
|
>
|
|
484
484
|
<div matSuffix
|
|
485
485
|
class="hci-combobox-arrow-wrapper"
|
|
@@ -529,7 +529,7 @@ export class CustomComboBoxComponent {
|
|
|
529
529
|
</mat-error>
|
|
530
530
|
<ng-content></ng-content>
|
|
531
531
|
</mat-form-field>
|
|
532
|
-
`, isInline: true, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color
|
|
532
|
+
`, isInline: true, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:var(--black-darkest)}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "component", type: i4.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i6.MatLegacyAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatLegacyAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
533
533
|
}
|
|
534
534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomComboBoxComponent, decorators: [{
|
|
535
535
|
type: Component,
|
|
@@ -557,7 +557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
557
557
|
[tabindex]="tabindex"
|
|
558
558
|
(keydown)="onKey($event)"
|
|
559
559
|
(focus)="onFocus()"
|
|
560
|
-
(focusout)="onFocusOut()"
|
|
560
|
+
(focusout)="onFocusOut()" attr.aria-label="hci-ng-custom-combobox-{{label}}"
|
|
561
561
|
>
|
|
562
562
|
<div matSuffix
|
|
563
563
|
class="hci-combobox-arrow-wrapper"
|
|
@@ -613,7 +613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
613
613
|
multi: true,
|
|
614
614
|
}], host: {
|
|
615
615
|
class: "hci-combobox-container"
|
|
616
|
-
}, encapsulation: ViewEncapsulation.None, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color
|
|
616
|
+
}, encapsulation: ViewEncapsulation.None, styles: [".hci-combobox-container{display:inline-block}.hci-combobox-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:var(--black-darkest)}.hci-combobox-arrow-wrapper{display:table-cell;vertical-align:middle}.hci-combobox-viewport mat-option{display:flex;align-items:center;padding:0 .2rem}.hci-combobox-viewport mat-option .mat-option-text{white-space:nowrap}.hci-combobox-viewport .hci-combobox-selected{background-color:#ddd}.hci-combobox-viewport .mat-active{background-color:#f3f3f3}.hci-combobox-viewport{overflow-anchor:none}\n"] }]
|
|
617
617
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }], propDecorators: { maxOptionsToShow: [{
|
|
618
618
|
type: Input
|
|
619
619
|
}], customViewportClass: [{
|
|
@@ -676,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
676
676
|
type: ViewChild,
|
|
677
677
|
args: ["input", { read: MatAutocompleteTrigger, static: false }]
|
|
678
678
|
}] } });
|
|
679
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFJLEVBQUM7Z0JBSWxDLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2UsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xyXG5pbXBvcnQge01hdExlZ2FjeUF1dG9jb21wbGV0ZVRyaWdnZXIgYXMgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtMaXN0UmFuZ2V9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcclxuaW1wb3J0IHtMaXN0S2V5TWFuYWdlciwgSGlnaGxpZ2h0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQge01hdExlZ2FjeU9wdGlvbiBhcyBNYXRPcHRpb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY29yZVwiO1xyXG5pbXBvcnQge0xlZ2FjeUZsb2F0TGFiZWxUeXBlIGFzIEZsb2F0TGFiZWxUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jb21ib2JveFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImVuZENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRoaXMudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tRmllbGRDbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbCAhPT0gdW5kZWZpbmVkXCI+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsID09PSB1bmRlZmluZWRcIj5cclxuICAgICAgICB7eyB0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChpbm5lckNvbnRyb2wudmFsdWUgPyAnJyA6IHBsYWNlaG9sZGVyKSA6IHBsYWNlaG9sZGVyIH19XHJcbiAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgI2lucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgbmFtZT1cImN1c3RvbUNvbWJvQm94RmlsdGVyXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChpbm5lckNvbnRyb2wudmFsdWUgPyAnJyA6IHBsYWNlaG9sZGVyKSA6IHBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlubmVyQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiY2RrRm9jdXNJbml0aWFsID09PSB1bmRlZmluZWQgPyBudWxsIDogY2RrRm9jdXNJbml0aWFsXCJcclxuICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiXHJcbiAgICAgICAgICAgICA+XHJcbiAgICAgIDxkaXYgbWF0U3VmZml4XHJcbiAgICAgICAgICAgY2xhc3M9XCJoY2ktY29tYm9ib3gtYXJyb3ctd3JhcHBlclwiXHJcbiAgICAgICAgICAgKGNsaWNrKSA9IFwidG9nZ2xlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAobW91c2Vkb3duKT1cInN0YXJ0Q2xpY2soKVwiXHJcbiAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoY2ktY29tYm9ib3gtYXJyb3dcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciBtYXRTdWZmaXggKm5nSWY9XCJzaG93TG9hZGVyKClcIiBbZGlhbWV0ZXJdPVwiMzBcIiBzdHlsZT1cImZsb2F0OiByaWdodDsgbWFyZ2luLWxlZnQ6IDhweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJ0aGlzLnNlbGVjdE9wdGlvbigkZXZlbnQub3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwidGhpcy5vbk9wZW5lZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlZCk9XCJ0aGlzLm9uQ2xvc2VkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwidGhpcy5kaXNwbGF5Rm5cIj5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICN2aWV3cG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNPcGVuID8gbnVsbCA6ICdub25lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhjaS1jb21ib2JveC12aWV3cG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109IFwiY3VzdG9tVmlld3BvcnRDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwib3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibnVtT3B0aW9uc1RvU2hvdyAqIG9wdGlvblNpemVQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluQnVmZmVyUHhdPVwibnVtT3B0aW9uc1RvU2hvdyAqIG9wdGlvblNpemVQeCAqIDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEJ1ZmZlclB4XT1cIm51bU9wdGlvbnNUb1Nob3cgKiBvcHRpb25TaXplUHggKiAzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImVuZENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd05vbmUgJiYgaXNPcGVuICYmICh0aGlzLmZvcmNlU2hvd05vbmUgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjdXN0b21PcHRpb25DbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgTm9uZVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0IG9mIHRoaXMubG9hZGVkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImN1c3RvbU9wdGlvbkNsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhjaS1jb21ib2JveC1zZWxlY3RlZF09XCIodmFsdWVGaWVsZCA/IG9wdFt2YWx1ZUZpZWxkXSA6IG9wdCkgPT09IG91dGVyQ29udHJvbC52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWF0LXNlbGVjdGVkXT1cIih2YWx1ZUZpZWxkID8gb3B0W3ZhbHVlRmllbGRdIDogb3B0KSA9PT0gb3V0ZXJDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgZGlzcGxheUZpZWxkID8gb3B0W2Rpc3BsYXlGaWVsZF0gOiBvcHQgfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgIHt7IGdldEVycm9yKCkgfX1cclxuICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEN1c3RvbUNvbWJvQm94Q29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlLFxyXG4gIH1dLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiBcImhjaS1jb21ib2JveC1jb250YWluZXJcIlxyXG4gIH0sXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLmhjaS1jb21ib2JveC1jb250YWluZXIge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC1hcnJvdyB7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBoZWlnaHQ6IDA7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItdG9wOiA1cHggc29saWQ7XHJcbiAgICAgIG1hcmdpbjogMCA0cHg7XHJcbiAgICAgIGNvbG9yOiByZ2JhKDAsMCwwLC41NCk7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IG1hdC1vcHRpb24ge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAwIC4ycmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgbWF0LW9wdGlvbiAubWF0LW9wdGlvbi10ZXh0IHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IC5oY2ktY29tYm9ib3gtc2VsZWN0ZWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtdmlld3BvcnQgLm1hdC1hY3RpdmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIGZpeCBqaXR0ZXJ5IHNjcm9sbCBidWcgaW4gY2hyb21lICovXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IHtcclxuICAgICAgb3ZlcmZsb3ctYW5jaG9yOiBub25lO1xyXG4gICAgfVxyXG4gIGBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21Db21ib0JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHVibGljIG9wdGlvblNpemVQeDogbnVtYmVyID0gMjU7XHJcbiAgcHVibGljIG51bU9wdGlvbnNUb1Nob3c6IG51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhPcHRpb25zVG9TaG93OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VzdG9tVmlld3BvcnRDbGFzczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbUZpZWxkQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPSB2YWx1ZSA/IHZhbHVlIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tRmllbGRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgPyB0aGlzLl9jdXN0b21GaWVsZENsYXNzZXMgOiBcIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFwiO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbU9wdGlvbkNsYXNzZXModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA9IHZhbHVlID8gdmFsdWUgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXN0b21PcHRpb25DbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gISF0aGlzLl9jdXN0b21PcHRpb25DbGFzc2VzID8gdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLyBJZiBhIGxhYmVsIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBsYWNlaG9sZGVyIGlzIHByb21vdGVkIHRvIGEgbGFiZWwuXHJcbiAgLy8gVG8gY3JlYXRlIGEgZm9ybSBmaWVsZCB3aXRoIG9ubHkgYSBwbGFjZWhvbGRlciwgc3BlY2lmeSBhbiBlbXB0eVxyXG4gIC8vIGxhYmVsIHRvIHByZXZlbnQgdGhlIHBsYWNlaG9sZGVyIGZyb20gYmVpbmcgcHJvbW90ZWQuXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvLyBSZW1vdmVzIHRoZSBwbGFjZWhvbGRlciBhZnRlciBhIHNlbGVjdGlvbiBpcyBtYWRlXHJcbiAgQElucHV0KCkgcHVibGljIHRlbXBvcmFyeVBsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd05vbmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0VGV4dE9uT3BlbiA9IHRydWU7XHJcblxyXG4gIC8vIHRlbGwgbWF0LWRpYWxvZyB0byBwYXNzIGluaXRpYWwgZm9jdXMgdG8gdGhlIGlubmVyIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5jZGtGb2N1c0luaXRpYWxcIikgX2Nka0ZvY3VzSW5pdGlhbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGNka0ZvY3VzSW5pdGlhbDogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAvLyBvbiB0YWIsIHNraXAgdGhlIGhvc3QgZWxlbWVudCBhbmQgZm9jdXMgdGhlIGlucHV0XHJcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci50YWJpbmRleFwiKSBfdGFiaW5kZXggPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIGZvcmNlU2hvd05vbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgYWxsb3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBsb2FkZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaXZhdGUgZm9yY2VFbWl0T2JqZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcclxuXHJcbiAgLy8gU2V0IHRvIGVtcHR5IHRvIG5vdCBzaG93IGVycm9yc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmluZUVycm9yczogYW55ID0ge3JlcXVpcmVkOiBcIlRoaXMgaXMgYSByZXF1aXJlZCBmaWVsZFwifTtcclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2N1c3RvbUZpZWxkQ2xhc3Nlczogc3RyaW5nID0gXCJcIjtcclxuICBwcml2YXRlIF9jdXN0b21PcHRpb25DbGFzc2VzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgb3V0ZXJDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIGlubmVyQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcclxuICBwcml2YXRlIGlnbm9yZUlubmVyQ29udHJvbENoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBwcml2YXRlIG5vTmdDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAga2V5TWFuYWdlcjogTGlzdEtleU1hbmFnZXI8SGlnaGxpZ2h0YWJsZT47XHJcbiAgdmlld3BvcnRSZW5kZXJSYW5nZTogTGlzdFJhbmdlO1xyXG4gIHZpZXdwb3J0VmlzaWJsZVJhbmdlOiBMaXN0UmFuZ2UgPSB7XHJcbiAgICBzdGFydDogMCxcclxuICAgIGVuZDogdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMVxyXG4gIH07XHJcblxyXG4gIGFjdGl2ZVZhbHVlOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBjbGlja0luUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9wdGlvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcHRpb25zTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcInZpZXdwb3J0XCIsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7c3RhdGljOiB0cnVlfSlcclxuICBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7cmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiBmYWxzZX0pXHJcbiAgYXV0b0NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZEZuOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHB1YmxpYyBkaXNwbGF5Rm46IChvcHQ/OiBhbnkpID0+IHN0cmluZyB8IHVuZGVmaW5lZCA9IChvcHQ/OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBvcHQgPyAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvd0xvYWRlciA9IHRoaXMuYWxsb3dMb2FkZXIgJiYgKCEgdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vdXRlckNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbDtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC52YWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9OZ0NvbnRyb2wgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5pbm5lckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoX3ZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIHdvcmsgYXJvdW5kIGZvciB2YWxpZGF0b3JzIG5vdCBhbHdheXMgcHJvcGFnYXRpbmdcclxuICAgIHRoaXMuc3Vicy5hZGQodGhpcy5vdXRlckNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKF9ldmVudDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wudmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRFcnJvcnModGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm91dGVyQ29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgLy8gdGhpcyBvYmplY3QgaXMgdXNlZCB0byBjb250cm9sIHRoZSBhY3RpdmUgc3RhdGUgd2hlbiBrZXlpbmcgdXAgYW5kIGRvd25cclxuICAgIHRoaXMua2V5TWFuYWdlciA9IHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI7XHJcbiAgICB0aGlzLmtleU1hbmFnZXIud2l0aFdyYXAoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuc3Vicy5hZGQoY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMudmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbSxcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxlZEluZGV4Q2hhbmdlXHJcbiAgICBdKS5zdWJzY3JpYmUoKFtyZW5kZXJlZFJhbmdlLCBzY3JvbGxlZEluZGV4XTogW0xpc3RSYW5nZSwgbnVtYmVyXSkgPT4ge1xyXG5cclxuICAgICAgLy8gSW5zdGVhZCBvZiBsb2FkaW5nIHRoZSB3aG9sZSBpdGVtIGxpc3QgYXQgb25jZSwgdGhlIHZpcnR1YWwgc2Nyb2xsIHZpZXdwb3J0IGJ1ZmZlcnNcclxuICAgICAgLy8gYSByYW5nZSBvZiBlbnRyaWVzLCBvbmx5IGEgcG9ydGlvbiBvZiB3aGljaCBhcmUgd2l0aGluIHRoZSB2aXNpYmxlIGZvbGRcclxuICAgICAgdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlID0gcmVuZGVyZWRSYW5nZTtcclxuXHJcbiAgICAgIC8vIHdlIGhhdmUgdG8gZmlndXJlIG91dCB0aGUgdmlzaWJsZSByYW5nZSBvdXJzZWx2ZXNcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gTWF0aC5taW4odGhpcy5sb2FkZWRPcHRpb25zLmxlbmd0aCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKSwgdGhpcy5udW1PcHRpb25zVG9TaG93IC0gMSk7XHJcblxyXG4gICAgICB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0OiBzY3JvbGxlZEluZGV4LFxyXG4gICAgICAgIGVuZDogc2Nyb2xsZWRJbmRleCArIGxlblxyXG4gICAgICB9O1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgb3B0aW9uc0NoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5vcHRpb25zO1xyXG4gICAgICBpZiAoIW9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlIHx8IG9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICBpZih0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPSBudWxsKXtcclxuICAgICAgICAgIC8vUmVzZXQgdGhlIGlubmVyQ29udHJvbCB2YWx1ZSBvZiB0aGUgZHJvcGRvd24gbGlzdCB0byBhbiBlbXB0eSBhcnJheSBpbiBjYXNlIG9mIG5vIHJlc3VsdHMgYXJlIHByZXNlbnQgdG8gYmUgZGlzcGxheWVkLlxyXG4gICAgICAgICAgLy9UaGlzIGZsdXNoZXMgb3V0IHRoZSBzdGFsZSB2YWx1ZSBmcm9tIHRoZSBsaXN0IGlmIHRoZXJlIGFyZSBubyByZXN1bHRzIHRvIGJlIGRpc3BsYXllZC5cclxuICAgICAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjdXJyZW50T3B0czogYW55W10gPSA8YW55W10+b3B0aW9uc0NoYW5nZS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChjdXJyZW50T3B0cyAmJiBcImxlbmd0aFwiIGluIGN1cnJlbnRPcHRzICYmIGN1cnJlbnRPcHRzICE9PSBvcHRpb25zQ2hhbmdlLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zTG9hZGVkLmVtaXQoKTtcclxuXHJcbiAgICAgICAgLy8gSWYgbnVtYmVyIG9mIG9wdGlvbnMgaXMgbGVzcyB0aGFuIG91ciBtYXgsIHJlZHVjZSBzaXplIG9mIG92ZXJsYXlcclxuICAgICAgICB0aGlzLm51bU9wdGlvbnNUb1Nob3cgPSBNYXRoLm1pbihjdXJyZW50T3B0cy5sZW5ndGggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCksIHRoaXMubWF4T3B0aW9uc1RvU2hvdyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIGF1dG9tYXRpY2FsbHkgcG9wIG9wZW4gb25jZSBpdCBoYXMgb3B0aW9ucyBmaWx0ZXJlZCBpbnRvIGl0LFxyXG4gICAgICAvLyBidXQgd2UgZG9uJ3Qgd2FudCBpdCB0byBvbiBpbml0aWFsIHBhZ2UgbG9hZCBvciB3aGVuIHRhYmJpbmcgdGhvdWdoXHJcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUob2JqKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3IoKTogc3RyaW5nIHtcclxuICAgIGZvciAoY29uc3QgZXJyb3IgaW4gdGhpcy5vdXRlckNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlZmluZUVycm9ycyAmJiBlcnJvciBpbiB0aGlzLmRlZmluZUVycm9ycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmluZUVycm9yc1tlcnJvcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE9ubHlDdXJyZW50VmFsdWUoY250cmxWYWw6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gbnVsbDtcclxuICAgIGlmIChjbnRybFZhbCAhPT0gbnVsbCAmJiBjbnRybFZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBjdXJyZW50bHlTZWxlY3RlZDogYW55ID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9wdFZhbHVlOiBhbnkgPSB0aGlzLnZhbHVlRmllbGQgPyBvcHRbdGhpcy52YWx1ZUZpZWxkXSA6IG9wdDtcclxuICAgICAgICBpZiAodGhpcy5mb3JjZUVtaXRPYmplY3QpIHtcclxuICAgICAgICAgIGxldCBvdXRlclZhbHVlOiBhbnkgPSBjbnRybFZhbCA/ICh0aGlzLnZhbHVlRmllbGQgPyBjbnRybFZhbFt0aGlzLnZhbHVlRmllbGRdIDogY250cmxWYWwpIDogbnVsbDtcclxuICAgICAgICAgIGlmIChvcHRWYWx1ZSA9PT0gb3V0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdFZhbHVlID09PSBjbnRybFZhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRseVNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJlZmVyIHRvIGNoZWNrIGlkIGlmIGl0IGhhcyBvbmUgIHZzIHN0cmFpZ2h0IGFnYWluc3QgaXQncyBvYmplY3QgaWRlbnRpdHlcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAmJiBuZXdWYWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWVbdGhpcy52YWx1ZUZpZWxkXSAhPT0gbmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSkge1xyXG4gICAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlubmVyQ29udHJvbC52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgICBsZXQgbnYgPSBuZXdWYWx1ZSA/ICgodGhpcy52YWx1ZUZpZWxkICYmICF0aGlzLmZvcmNlRW1pdE9iamVjdCkgPyBuZXdWYWx1ZVt0aGlzLnZhbHVlRmllbGRdIDogbmV3VmFsdWUpIDogbnVsbDtcclxuICAgICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG52KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucyhzaG93QWxsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHNob3dBbGw7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3dBbGwgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5uZXJDb250cm9sLnZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmlubmVyQ29udHJvbC52YWx1ZVt0aGlzLmRpc3BsYXlGaWVsZF0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvcHREaXNwbGF5OiBzdHJpbmcgPSAodGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0KS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBvcHREaXNwbGF5LmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRoaXMubG9hZGVkT3B0aW9ucy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0xvYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93TG9hZGVyICYmIHRoaXMuX3Nob3dMb2FkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbigpIHtcclxuICAgIGlmICh0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIGF1dG9jb21wbGV0ZSB3aWxsIG9ubHkgb3BlbiB3aGVuIG9wdGlvbnMgYXJlIGxvYWRlZFxyXG4gICAgdGhpcy5maWx0ZXJPcHRpb25zKHRydWUpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wZW5lZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9yY2VTaG93Tm9uZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0VGV4dE9uT3Blbil7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7IC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKSB7XHJcbiAgICAgIC8vIG1ha2UgdGhlIHNlbGVjdGVkIG9wdGlvbiBhbHNvIHRoZSBhY3RpdmUgb3B0aW9uXHJcbiAgICAgIHRoaXMuYWN0aXZlVmFsdWUgPSB0aGlzLmdldE9wdFZhbCh0aGlzLmxvYWRlZE9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghdGhpcy5pbm5lckNvbnRyb2wudmFsdWUgJiYgdGhpcy5vdXRlckNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb24obnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgLy8gcmVzZXQgdGhlIG9wdGlvbnMgc28gdGhlIGF1dG9jb21wbGV0ZSB3b24ndCBhdXRvbWF0aWNhbGx5IG9wZW4gb24gdGhlIG5leHQgdGFiIHRocm91Z2hcclxuICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXJ0Q2xpY2soKSB7XHJcbiAgICAvLyBjbGlja2luZyBvbiBjZXJ0YWluIHBhcnRzIG9mIHRoZSBtYXQtZmllbGQgd2lsbCBcImZsaWNrZXJcIiB0aGUgZm9jdXMsIHRyaWdnZXJpbmdcclxuICAgIC8vIGVycm9yIHZhbGlkYXRpb24gZWFybHkuIFRoaXMgdHJhY2tzIHRob3NlIGludGVybmFsIGNsaWNrcyBzbyB0aGV5IGNhbiBiZSBpZ25vcmVkXHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5kQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNsaWNrSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVPcGVuKGV2ZW50OiBNb3VzZUV2ZW50KTp2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIiB8fCBldmVudC5rZXkgPT09IFwiRW50ZXJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIHdoZXJlIHRoZSBjZGsgYTExeSBLZXlNYW5hZ2VyIGltcGxlbWVudGF0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGhcclxuICAgICAgLy8gdGhlIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHdoaWNoIGNhdXNlcyB0aGUgRHJvcC1kb3duIG5vdCBzY3JvbGwgd2l0aCBrZXlib2FyZFxyXG4gICAgICAvLyBvbiBsb25nIG9wdGlvbiBsaXN0cy5cclxuICAgICAgLy9cclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMTY1OThcclxuICAgICAgLy9cclxuICAgICAgLy8gVGhpcyB3b3JrIGFyb3VuZCB0YWtlcyBjb250cm9sIG9mIHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2Nyb2xscyBhbmQgYWN0aXZhdGVzXHJcbiAgICAgIC8vIHRoZSBvcHRpb25zXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFJlZmVyZW5jZXM6XHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10cmlnZ2VyLnRzXHJcbiAgICAgIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21hc3Rlci9zcmMvY2RrL2ExMXkva2V5LW1hbmFnZXIvbGlzdC1rZXktbWFuYWdlci50c1xyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9hMTF5L2tleS1tYW5hZ2VyL2FjdGl2ZWRlc2NlbmRhbnQta2V5LW1hbmFnZXIudHNcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIgfHwgZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgICAgICB0aGlzLnNoaWZ0QWN0aXZlSXRlbShldmVudC5rZXkpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVCb3VuZGFyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGJlZm9yZSBvdXIga2V5cHJlc3MgYmluZGluZyBldmVuIHRyaWdnZXJzLCBhbmd1bGFyIGhhcyBhbHJlYWR5IG1vdmVkIHRoZSBhY3RpdmUgc2VsZWN0aW9uXHJcbiAgLy8gdW5zeW5jaW5nIGl0IHdpdGggb3VyIGRpc3BsYXkuIHRoaXMgY29kZSByZS1pbml0aWFsaXplcyB0aGUgYWN0aXZlIG9wdGlvblxyXG4gIGluaXRBY3RpdmVJdGVtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmFjdGl2ZVZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgICAgLy8gdGhpcyBkb2VzIHRoZSBjb252ZXJzaW9uIGZyb20gYW4gaW5kZXggd2l0aGluIGFsbCBvcHRpb25zIGRvd24gdG8gYSBwb3NpdGlvbiB3aXRoaW4gdGhlXHJcbiAgICAgIC8vIGRpc3BsYXllZCByYW5nZSwgd2hpY2ggaXMgYWxsIHRoZSBrZXltYW5hZ2VyIGlzIGF3YXJlIG9mXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IGFjdGl2ZUluZGV4IC0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLnN0YXJ0O1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaGlmdEFjdGl2ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChrZXkgPT09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTtcclxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgIHRoaXMua2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdGhpcy5nZXRPcHRWYWwoKDxNYXRPcHRpb24+dGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIGlmIHRoZSBhY3RpdmUgb3B0aW9uIGluZGV4IGlzIHdpdGhpbiB0aGUgZGlzcGxheWVkIHZpZXdwb3J0IHdpbmRvd1xyXG4gIC8vIGlmIG5vdCwgc2Nyb2xsIGl0IGludG8gdmlld1xyXG4gIGNoZWNrQWN0aXZlQm91bmRhcmllcygpOiB2b2lkIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xyXG5cclxuICAgIGlmIChhY3RpdmVJbmRleCA8IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2Uuc3RhcnQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChhY3RpdmVJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChhY3RpdmVJbmRleCA+IHRoaXMudmlld3BvcnRWaXNpYmxlUmFuZ2UuZW5kKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQoKGFjdGl2ZUluZGV4IC0gKHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDEpKSAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVJbmRleCgpIHtcclxuICAgIGxldCBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWN0aXZlVmFsdWUgIT09IG51bGwpIHtcclxuXHJcbiAgICAgIC8vIGlmIHdlIGFkZGVkIGEgbm9uZSBvcHRpb24gdGhlIHJldHVybmVkIGluZGV4IHdvdWxkIGJlIG9mZiBieSBvbmVcclxuICAgICAgbGV0IHZhbEluZGV4ID0gdGhpcy5nZXRPcHRJbmRleCh0aGlzLmFjdGl2ZVZhbHVlKSArICh0aGlzLmFsbG93Tm9uZSAmJiAodGhpcy5mb3JjZVNob3dOb25lIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkgPyAxIDogMCk7XHJcblxyXG4gICAgICAvLyB0aGUgaW5kZXggc2hvdWxkIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2Ygb3VyIGVudGlyZSBidWZmZXIsIG9yIGp1c3QgYWxsb3cgaXQgdG8gcmVzZXRcclxuICAgICAgaWYgKHZhbEluZGV4ID49IHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5zdGFydFxyXG4gICAgICAgICYmICghdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLmVuZCB8fCB2YWxJbmRleCA8PSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2UuZW5kKVxyXG4gICAgICApIHtcclxuICAgICAgICBhY3RpdmVJbmRleCA9IHZhbEluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIC8vIEhpZ2hsaWdodHMgdGV4dFxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RUZXh0T25PcGVuKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXNPdXQoKSB7XHJcbiAgICAvLyBtYXJrIGNvbnRyb2wgdG91Y2hlZCBhbmQgdHJpZ2dlciBlcnJvciB2YWxpZGF0aW9uXHJcbiAgICBpZiAoIXRoaXMuY2xpY2tJblByb2dyZXNzKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbihvcHQ6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IG5ld1ZhbCA9IHRoaXMuZ2V0T3B0VmFsKG9wdCwgdGhpcy5mb3JjZUVtaXRPYmplY3QpO1xyXG5cclxuICAgIGlmICh0aGlzLm5vTmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUZuKG5ld1ZhbCk7XHJcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobmV3VmFsKTtcclxuICAgIHRoaXMub3B0aW9uQ2hhbmdlZC5lbWl0KG5ld1ZhbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcclxuICAgIC8vIHNjcm9sbCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbiB3aGVuIHdlIG9wZW4gdGhlIGRyb3Bkb3duXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCkge1xyXG4gICAgICBsZXQgb2Zmc2V0SW5kZXg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWRJbmRleCArICh0aGlzLmFsbG93Tm9uZSA/IDEgOiAwKTsgLy8gYWRqdXN0IGZvciBOb25lIGVudHJ5XHJcbiAgICAgIG9mZnNldEluZGV4IC09ICh0aGlzLm51bU9wdGlvbnNUb1Nob3cgLyAyKSAtIDE7IC8vIGNhbGN1bGF0ZSBtaWRkbGUgb2Ygdmlld3BvcnRcclxuICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb09mZnNldChvZmZzZXRJbmRleCAqIHRoaXMub3B0aW9uU2l6ZVB4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9wdFZhbChvcHQ6IGFueSwgZm9yY2VPYmplY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUZpZWxkICYmICFmb3JjZU9iamVjdCkge1xyXG4gICAgICBpZiAob3B0ICE9PSBudWxsICYmIG9wdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHQgPT09IFwib2JqZWN0XCIgJiYgdGhpcy52YWx1ZUZpZWxkIGluIG9wdCkge1xyXG4gICAgICAgIHJldHVybiBvcHRbdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0SW5kZXgob3B0VmFsdWU6IGFueSk6IG51bWJlciB7XHJcbiAgICAvLyBmaW5kIHRoZSBpbmRleCBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb25cclxuICAgIGlmIChvcHRWYWx1ZSAhPT0gbnVsbCAmJiBvcHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRlZE9wdGlvbnMuZmluZEluZGV4KChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdFZhbChvcHRpb24pID09PSBvcHRWYWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
679
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdDLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsNEJBQTRCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF5STdHLE1BQU0sT0FBTyx1QkFBdUI7SUFVbEMsSUFDVyxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMs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QUFJLEVBQUM7Z0JBSWxDLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2UsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xyXG5pbXBvcnQge01hdExlZ2FjeUF1dG9jb21wbGV0ZVRyaWdnZXIgYXMgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtMaXN0UmFuZ2V9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcclxuaW1wb3J0IHtMaXN0S2V5TWFuYWdlciwgSGlnaGxpZ2h0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQge01hdExlZ2FjeU9wdGlvbiBhcyBNYXRPcHRpb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY29yZVwiO1xyXG5pbXBvcnQge0xlZ2FjeUZsb2F0TGFiZWxUeXBlIGFzIEZsb2F0TGFiZWxUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jb21ib2JveFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImVuZENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRoaXMudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tRmllbGRDbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbCAhPT0gdW5kZWZpbmVkXCI+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsID09PSB1bmRlZmluZWRcIj5cclxuICAgICAgICB7eyB0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChpbm5lckNvbnRyb2wudmFsdWUgPyAnJyA6IHBsYWNlaG9sZGVyKSA6IHBsYWNlaG9sZGVyIH19XHJcbiAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgI2lucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgbmFtZT1cImN1c3RvbUNvbWJvQm94RmlsdGVyXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChpbm5lckNvbnRyb2wudmFsdWUgPyAnJyA6IHBsYWNlaG9sZGVyKSA6IHBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlubmVyQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiY2RrRm9jdXNJbml0aWFsID09PSB1bmRlZmluZWQgPyBudWxsIDogY2RrRm9jdXNJbml0aWFsXCJcclxuICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiIGF0dHIuYXJpYS1sYWJlbD1cImhjaS1uZy1jdXN0b20tY29tYm9ib3gte3tsYWJlbH19XCJcclxuICAgICAgICAgICAgID5cclxuICAgICAgPGRpdiBtYXRTdWZmaXhcclxuICAgICAgICAgICBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyXCJcclxuICAgICAgICAgICAoY2xpY2spID0gXCJ0b2dnbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRDbGljaygpXCJcclxuICAgICAgICAgICAobW91c2V1cCk9XCJlbmRDbGljaygpXCJcclxuICAgICAgICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvd1wiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1zcGlubmVyIG1hdFN1ZmZpeCAqbmdJZj1cInNob3dMb2FkZXIoKVwiIFtkaWFtZXRlcl09XCIzMFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tbGVmdDogOHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInRoaXMuc2VsZWN0T3B0aW9uKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJ0aGlzLm9uT3BlbmVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cInRoaXMub25DbG9zZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJ0aGlzLmRpc3BsYXlGblwiPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc09wZW4gPyBudWxsIDogJ25vbmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGNpLWNvbWJvYm94LXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT0gXCJjdXN0b21WaWV3cG9ydENsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJudW1PcHRpb25zVG9TaG93ICogb3B0aW9uU2l6ZVB4ICogMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4QnVmZmVyUHhdPVwibnVtT3B0aW9uc1RvU2hvdyAqIG9wdGlvblNpemVQeCAqIDNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzdGFydENsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwiZW5kQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImFsbG93Tm9uZSAmJiBpc09wZW4gJiYgKHRoaXMuZm9yY2VTaG93Tm9uZSB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImN1c3RvbU9wdGlvbkNsYXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICBOb25lXHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqY2RrVmlydHVhbEZvcj1cImxldCBvcHQgb2YgdGhpcy5sb2FkZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3VzdG9tT3B0aW9uQ2xhc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGNpLWNvbWJvYm94LXNlbGVjdGVkXT1cIih2YWx1ZUZpZWxkID8gb3B0W3ZhbHVlRmllbGRdIDogb3B0KSA9PT0gb3V0ZXJDb250cm9sLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtc2VsZWN0ZWRdPVwiKHZhbHVlRmllbGQgPyBvcHRbdmFsdWVGaWVsZF0gOiBvcHQpID09PSBvdXRlckNvbnRyb2wudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25TaXplUHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBkaXNwbGF5RmllbGQgPyBvcHRbZGlzcGxheUZpZWxkXSA6IG9wdCB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAge3sgZ2V0RXJyb3IoKSB9fVxyXG4gICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tQ29tYm9Cb3hDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgfV0sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6IFwiaGNpLWNvbWJvYm94LWNvbnRhaW5lclwiXHJcbiAgfSxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuaGNpLWNvbWJvYm94LWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LWFycm93IHtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZDtcclxuICAgICAgbWFyZ2luOiAwIDRweDtcclxuICAgICAgY29sb3I6IHZhcigtLWJsYWNrLWRhcmtlc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIC5oY2ktY29tYm9ib3gtYXJyb3ctd3JhcHBlciB7XHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCBtYXQtb3B0aW9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgcGFkZGluZzogMCAuMnJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IG1hdC1vcHRpb24gLm1hdC1vcHRpb24tdGV4dCB7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcblxyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCAuaGNpLWNvbWJvYm94LXNlbGVjdGVkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDtcclxuICAgIH1cclxuXHJcbiAgICAuaGNpLWNvbWJvYm94LXZpZXdwb3J0IC5tYXQtYWN0aXZlIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxuICAgIH1cclxuXHJcbiAgICAvKiBmaXggaml0dGVyeSBzY3JvbGwgYnVnIGluIGNocm9tZSAqL1xyXG4gICAgLmhjaS1jb21ib2JveC12aWV3cG9ydCB7XHJcbiAgICAgIG92ZXJmbG93LWFuY2hvcjogbm9uZTtcclxuICAgIH1cclxuICBgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tYm9Cb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHB1YmxpYyBvcHRpb25TaXplUHg6IG51bWJlciA9IDI1O1xyXG4gIHB1YmxpYyBudW1PcHRpb25zVG9TaG93OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4T3B0aW9uc1RvU2hvdzogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbVZpZXdwb3J0Q2xhc3M6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjdXN0b21GaWVsZENsYXNzZXModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzID0gdmFsdWUgPyB2YWx1ZSA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1c3RvbUZpZWxkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzID8gdGhpcy5fY3VzdG9tRmllbGRDbGFzc2VzIDogXCJtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRcIjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBjdXN0b21PcHRpb25DbGFzc2VzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1c3RvbU9wdGlvbkNsYXNzZXMgPSB2YWx1ZSA/IHZhbHVlIDogXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tT3B0aW9uQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICEhdGhpcy5fY3VzdG9tT3B0aW9uQ2xhc3NlcyA/IHRoaXMuX2N1c3RvbU9wdGlvbkNsYXNzZXMgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgYSBsYWJlbCBpcyBub3Qgc3BlY2lmaWVkIHRoZSBwbGFjZWhvbGRlciBpcyBwcm9tb3RlZCB0byBhIGxhYmVsLlxyXG4gIC8vIFRvIGNyZWF0ZSBhIGZvcm0gZmllbGQgd2l0aCBvbmx5IGEgcGxhY2Vob2xkZXIsIHNwZWNpZnkgYW4gZW1wdHlcclxuICAvLyBsYWJlbCB0byBwcmV2ZW50IHRoZSBwbGFjZWhvbGRlciBmcm9tIGJlaW5nIHByb21vdGVkLlxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy8gUmVtb3ZlcyB0aGUgcGxhY2Vob2xkZXIgYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZVxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0ZW1wb3JhcnlQbGFjZWhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dOb25lOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdFRleHRPbk9wZW4gPSB0cnVlO1xyXG5cclxuICAvLyB0ZWxsIG1hdC1kaWFsb2cgdG8gcGFzcyBpbml0aWFsIGZvY3VzIHRvIHRoZSBpbm5lciBpbnB1dFxyXG4gIEBIb3N0QmluZGluZyhcImF0dHIuY2RrRm9jdXNJbml0aWFsXCIpIF9jZGtGb2N1c0luaXRpYWwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjZGtGb2N1c0luaXRpYWw6IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gb24gdGFiLCBza2lwIHRoZSBob3N0IGVsZW1lbnQgYW5kIGZvY3VzIHRoZSBpbnB1dFxyXG4gIEBIb3N0QmluZGluZyhcImF0dHIudGFiaW5kZXhcIikgX3RhYmluZGV4ID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBmb3JjZVNob3dOb25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFsbG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbG9hZGVkT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHZhbHVlRmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwcml2YXRlIGZvcmNlRW1pdE9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgYXBwZWFyYW5jZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGU7XHJcblxyXG4gIC8vIFNldCB0byBlbXB0eSB0byBub3Qgc2hvdyBlcnJvcnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWZpbmVFcnJvcnM6IGFueSA9IHtyZXF1aXJlZDogXCJUaGlzIGlzIGEgcmVxdWlyZWQgZmllbGRcIn07XHJcblxyXG4gIHByaXZhdGUgX3Nob3dMb2FkZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jdXN0b21GaWVsZENsYXNzZXM6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBfY3VzdG9tT3B0aW9uQ2xhc3Nlczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIG91dGVyQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBpbm5lckNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCk7XHJcbiAgcHJpdmF0ZSBpZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBub05nQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblxyXG4gIGtleU1hbmFnZXI6IExpc3RLZXlNYW5hZ2VyPEhpZ2hsaWdodGFibGU+O1xyXG4gIHZpZXdwb3J0UmVuZGVyUmFuZ2U6IExpc3RSYW5nZTtcclxuICB2aWV3cG9ydFZpc2libGVSYW5nZTogTGlzdFJhbmdlID0ge1xyXG4gICAgc3RhcnQ6IDAsXHJcbiAgICBlbmQ6IHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDFcclxuICB9O1xyXG5cclxuICBhY3RpdmVWYWx1ZTogYW55O1xyXG5cclxuICBwdWJsaWMgY2xpY2tJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3B0aW9uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJ2aWV3cG9ydFwiLCB7c3RhdGljOiB0cnVlfSlcclxuICB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwge3N0YXRpYzogdHJ1ZX0pXHJcbiAgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwge3JlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHN0YXRpYzogZmFsc2V9KVxyXG4gIGF1dG9Db21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VGbjogKHZhbDogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgZGlzcGxheUZuOiAob3B0PzogYW55KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQgPSAob3B0PzogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gb3B0ID8gKHRoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdCkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nob3dMb2FkZXIgPSB0aGlzLmFsbG93TG9hZGVyICYmICghIHRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICBpZiAobmdDb250cm9sICYmIG5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5vdXRlckNvbnRyb2wudmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vTmdDb250cm9sID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKF92YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyB3b3JrIGFyb3VuZCBmb3IgdmFsaWRhdG9ycyBub3QgYWx3YXlzIHByb3BhZ2F0aW5nXHJcbiAgICB0aGlzLnN1YnMuYWRkKHRoaXMub3V0ZXJDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChfZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMub3V0ZXJDb250cm9sLnZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLm91dGVyQ29udHJvbC5hc3luY1ZhbGlkYXRvcik7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0RXJyb3JzKHRoaXMub3V0ZXJDb250cm9sLmVycm9ycyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5vdXRlckNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgIHRoaXMuaW5uZXJDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIHRoaXMgb2JqZWN0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgYWN0aXZlIHN0YXRlIHdoZW4ga2V5aW5nIHVwIGFuZCBkb3duXHJcbiAgICB0aGlzLmtleU1hbmFnZXIgPSB0aGlzLmF1dG9Db21wbGV0ZVRyaWdnZXIuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyO1xyXG4gICAgdGhpcy5rZXlNYW5hZ2VyLndpdGhXcmFwKGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnN1YnMuYWRkKGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLnZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW0sXHJcbiAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZVxyXG4gICAgXSkuc3Vic2NyaWJlKChbcmVuZGVyZWRSYW5nZSwgc2Nyb2xsZWRJbmRleF06IFtMaXN0UmFuZ2UsIG51bWJlcl0pID0+IHtcclxuXHJcbiAgICAgIC8vIEluc3RlYWQgb2YgbG9hZGluZyB0aGUgd2hvbGUgaXRlbSBsaXN0IGF0IG9uY2UsIHRoZSB2aXJ0dWFsIHNjcm9sbCB2aWV3cG9ydCBidWZmZXJzXHJcbiAgICAgIC8vIGEgcmFuZ2Ugb2YgZW50cmllcywgb25seSBhIHBvcnRpb24gb2Ygd2hpY2ggYXJlIHdpdGhpbiB0aGUgdmlzaWJsZSBmb2xkXHJcbiAgICAgIHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZSA9IHJlbmRlcmVkUmFuZ2U7XHJcblxyXG4gICAgICAvLyB3ZSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIHZpc2libGUgcmFuZ2Ugb3Vyc2VsdmVzXHJcbiAgICAgIGxldCBsZW46IG51bWJlciA9IE1hdGgubWluKHRoaXMubG9hZGVkT3B0aW9ucy5sZW5ndGggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCksIHRoaXMubnVtT3B0aW9uc1RvU2hvdyAtIDEpO1xyXG5cclxuICAgICAgdGhpcy52aWV3cG9ydFZpc2libGVSYW5nZSA9IHtcclxuICAgICAgICBzdGFydDogc2Nyb2xsZWRJbmRleCxcclxuICAgICAgICBlbmQ6IHNjcm9sbGVkSW5kZXggKyBsZW5cclxuICAgICAgfTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMpIHtcclxuICAgICAgbGV0IG9wdGlvbnNDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMub3B0aW9ucztcclxuICAgICAgaWYgKCFvcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZSB8fCBvcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgICAgaWYodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAvL1Jlc2V0IHRoZSBpbm5lckNvbnRyb2wgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGxpc3QgdG8gYW4gZW1wdHkgYXJyYXkgaW4gY2FzZSBvZiBubyByZXN1bHRzIGFyZSBwcmVzZW50IHRvIGJlIGRpc3BsYXllZC5cclxuICAgICAgICAgIC8vVGhpcyBmbHVzaGVzIG91dCB0aGUgc3RhbGUgdmFsdWUgZnJvbSB0aGUgbGlzdCBpZiB0aGVyZSBhcmUgbm8gcmVzdWx0cyB0byBiZSBkaXNwbGF5ZWQuXHJcbiAgICAgICAgICB0aGlzLmlubmVyQ29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY3VycmVudE9wdHM6IGFueVtdID0gPGFueVtdPm9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAoY3VycmVudE9wdHMgJiYgXCJsZW5ndGhcIiBpbiBjdXJyZW50T3B0cyAmJiBjdXJyZW50T3B0cyAhPT0gb3B0aW9uc0NoYW5nZS5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3B0aW9uc0xvYWRlZC5lbWl0KCk7XHJcblxyXG4gICAgICAgIC8vIElmIG51bWJlciBvZiBvcHRpb25zIGlzIGxlc3MgdGhhbiBvdXIgbWF4LCByZWR1Y2Ugc2l6ZSBvZiBvdmVybGF5XHJcbiAgICAgICAgdGhpcy5udW1PcHRpb25zVG9TaG93ID0gTWF0aC5taW4oY3VycmVudE9wdHMubGVuZ3RoICsgKHRoaXMuYWxsb3dOb25lID8gMSA6IDApLCB0aGlzLm1heE9wdGlvbnNUb1Nob3cpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3Nob3dMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIFRoZSBhdXRvY29tcGxldGUgd2lsbCBhdXRvbWF0aWNhbGx5IHBvcCBvcGVuIG9uY2UgaXQgaGFzIG9wdGlvbnMgZmlsdGVyZWQgaW50byBpdCxcclxuICAgICAgLy8gYnV0IHdlIGRvbid0IHdhbnQgaXQgdG8gb24gaW5pdGlhbCBwYWdlIGxvYWQgb3Igd2hlbiB0YWJiaW5nIHRob3VnaFxyXG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKG9iaik7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEVycm9yKCk6IHN0cmluZyB7XHJcbiAgICBmb3IgKGNvbnN0IGVycm9yIGluIHRoaXMub3V0ZXJDb250cm9sLmVycm9ycykge1xyXG4gICAgICBpZiAodGhpcy5kZWZpbmVFcnJvcnMgJiYgZXJyb3IgaW4gdGhpcy5kZWZpbmVFcnJvcnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZpbmVFcnJvcnNbZXJyb3JdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRPbmx5Q3VycmVudFZhbHVlKGNudHJsVmFsOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IG51bGw7XHJcbiAgICBpZiAoY250cmxWYWwgIT09IG51bGwgJiYgY250cmxWYWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgY3VycmVudGx5U2VsZWN0ZWQ6IGFueSA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvcHRWYWx1ZTogYW55ID0gdGhpcy52YWx1ZUZpZWxkID8gb3B0W3RoaXMudmFsdWVGaWVsZF0gOiBvcHQ7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9yY2VFbWl0T2JqZWN0KSB7XHJcbiAgICAgICAgICBsZXQgb3V0ZXJWYWx1ZTogYW55ID0gY250cmxWYWwgPyAodGhpcy52YWx1ZUZpZWxkID8gY250cmxWYWxbdGhpcy52YWx1ZUZpZWxkXSA6IGNudHJsVmFsKSA6IG51bGw7XHJcbiAgICAgICAgICBpZiAob3B0VmFsdWUgPT09IG91dGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBvcHRWYWx1ZSA9PT0gY250cmxWYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGN1cnJlbnRseVNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50bHlTZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHByZWZlciB0byBjaGVjayBpZCBpZiBpdCBoYXMgb25lICB2cyBzdHJhaWdodCBhZ2FpbnN0IGl0J3Mgb2JqZWN0IGlkZW50aXR5XHJcbiAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgJiYgbmV3VmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgaWYgKHRoaXMuaW5uZXJDb250cm9sLnZhbHVlW3RoaXMudmFsdWVGaWVsZF0gIT09IG5ld1ZhbHVlW3RoaXMudmFsdWVGaWVsZF0pIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQobmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbm5lckNvbnRyb2wudmFsdWUgIT09IG5ld1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgbGV0IG52ID0gbmV3VmFsdWUgPyAoKHRoaXMudmFsdWVGaWVsZCAmJiAhdGhpcy5mb3JjZUVtaXRPYmplY3QpID8gbmV3VmFsdWVbdGhpcy52YWx1ZUZpZWxkXSA6IG5ld1ZhbHVlKSA6IG51bGw7XHJcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChudik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlck9wdGlvbnMoc2hvd0FsbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSBzaG93QWxsO1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG93QWxsIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzZWFyY2hWYWx1ZTogc3RyaW5nID0gXCJcIjtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmlubmVyQ29udHJvbC52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgIHNlYXJjaFZhbHVlID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWVbdGhpcy5kaXNwbGF5RmllbGRdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0OiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgb3B0RGlzcGxheTogc3RyaW5nID0gKHRoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gb3B0RGlzcGxheS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSB0aGlzLmxvYWRlZE9wdGlvbnMubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0T3B0SW5kZXgodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dMb2FkZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxvd0xvYWRlciAmJiB0aGlzLl9zaG93TG9hZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5pbm5lckNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZSBhdXRvY29tcGxldGUgd2lsbCBvbmx5IG9wZW4gd2hlbiBvcHRpb25zIGFyZSBsb2FkZWRcclxuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh0cnVlKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpIHtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcmNlU2hvd05vbmUgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdFRleHRPbk9wZW4pe1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpOyAvLyBIaWdobGlnaHRzIHRleHRcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMCkge1xyXG4gICAgICAvLyBtYWtlIHRoZSBzZWxlY3RlZCBvcHRpb24gYWxzbyB0aGUgYWN0aXZlIG9wdGlvblxyXG4gICAgICB0aGlzLmFjdGl2ZVZhbHVlID0gdGhpcy5nZXRPcHRWYWwodGhpcy5sb2FkZWRPcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkT3B0aW9uKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlICYmIHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUodGhpcy5vdXRlckNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgIC8vIHJlc2V0IHRoZSBvcHRpb25zIHNvIHRoZSBhdXRvY29tcGxldGUgd29uJ3QgYXV0b21hdGljYWxseSBvcGVuIG9uIHRoZSBuZXh0IHRhYiB0aHJvdWdoXHJcbiAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGFydENsaWNrKCkge1xyXG4gICAgLy8gY2xpY2tpbmcgb24gY2VydGFpbiBwYXJ0cyBvZiB0aGUgbWF0LWZpZWxkIHdpbGwgXCJmbGlja2VyXCIgdGhlIGZvY3VzLCB0cmlnZ2VyaW5nXHJcbiAgICAvLyBlcnJvciB2YWxpZGF0aW9uIGVhcmx5LiBUaGlzIHRyYWNrcyB0aG9zZSBpbnRlcm5hbCBjbGlja3Mgc28gdGhleSBjYW4gYmUgaWdub3JlZFxyXG4gICAgdGhpcy5jbGlja0luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZENsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlT3BlbihldmVudDogTW91c2VFdmVudCk6dm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09IFwiVGFiXCIgfHwgZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyB3aGVyZSB0aGUgY2RrIGExMXkgS2V5TWFuYWdlciBpbXBsZW1lbnRhdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoXHJcbiAgICAgIC8vIHRoZSBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB3aGljaCBjYXVzZXMgdGhlIERyb3AtZG93biBub3Qgc2Nyb2xsIHdpdGgga2V5Ym9hcmRcclxuICAgICAgLy8gb24gbG9uZyBvcHRpb24gbGlzdHMuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzE2NTk4XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFRoaXMgd29yayBhcm91bmQgdGFrZXMgY29udHJvbCBvZiB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNjcm9sbHMgYW5kIGFjdGl2YXRlc1xyXG4gICAgICAvLyB0aGUgb3B0aW9uc1xyXG4gICAgICAvL1xyXG4gICAgICAvLyBSZWZlcmVuY2VzOlxyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtdHJpZ2dlci50c1xyXG4gICAgICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9hMTF5L2tleS1tYW5hZ2VyL2xpc3Qta2V5LW1hbmFnZXIudHNcclxuICAgICAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvYTExeS9rZXktbWFuYWdlci9hY3RpdmVkZXNjZW5kYW50LWtleS1tYW5hZ2VyLnRzXHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiIHx8IGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRBY3RpdmVJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5zaGlmdEFjdGl2ZUl0ZW0oZXZlbnQua2V5KTtcclxuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlQm91bmRhcmllcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBiZWZvcmUgb3VyIGtleXByZXNzIGJpbmRpbmcgZXZlbiB0cmlnZ2VycywgYW5ndWxhciBoYXMgYWxyZWFkeSBtb3ZlZCB0aGUgYWN0aXZlIHNlbGVjdGlvblxyXG4gIC8vIHVuc3luY2luZyBpdCB3aXRoIG91ciBkaXNwbGF5LiB0aGlzIGNvZGUgcmUtaW5pdGlhbGl6ZXMgdGhlIGFjdGl2ZSBvcHRpb25cclxuICBpbml0QWN0aXZlSXRlbSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY3RpdmVWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKTtcclxuXHJcbiAgICAgIC8vIHRoaXMgZG9lcyB0aGUgY29udmVyc2lvbiBmcm9tIGFuIGluZGV4IHdpdGhpbiBhbGwgb3B0aW9ucyBkb3duIHRvIGEgcG9zaXRpb24gd2l0aGluIHRoZVxyXG4gICAgICAvLyBkaXNwbGF5ZWQgcmFuZ2UsIHdoaWNoIGlzIGFsbCB0aGUga2V5bWFuYWdlciBpcyBhd2FyZSBvZlxyXG4gICAgICBsZXQgcG9zaXRpb24gPSBhY3RpdmVJbmRleCAtIHRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5zdGFydDtcclxuICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0ocG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hpZnRBY3RpdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoa2V5ID09PSBcIkFycm93VXBcIikge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xyXG4gICAgICB0aGlzLmtleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pIHtcclxuICAgICAgdGhpcy5hY3RpdmVWYWx1ZSA9IHRoaXMuZ2V0T3B0VmFsKCg8TWF0T3B0aW9uPnRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayBpZiB0aGUgYWN0aXZlIG9wdGlvbiBpbmRleCBpcyB3aXRoaW4gdGhlIGRpc3BsYXllZCB2aWV3cG9ydCB3aW5kb3dcclxuICAvLyBpZiBub3QsIHNjcm9sbCBpdCBpbnRvIHZpZXdcclxuICBjaGVja0FjdGl2ZUJvdW5kYXJpZXMoKTogdm9pZCB7XHJcbiAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlSW5kZXggPCB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlLnN0YXJ0KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQoYWN0aXZlSW5kZXggKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoYWN0aXZlSW5kZXggPiB0aGlzLnZpZXdwb3J0VmlzaWJsZVJhbmdlLmVuZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvT2Zmc2V0KChhY3RpdmVJbmRleCAtICh0aGlzLm51bU9wdGlvbnNUb1Nob3cgLSAxKSkgKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlSW5kZXgoKSB7XHJcbiAgICBsZXQgYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZVZhbHVlICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAvLyBpZiB3ZSBhZGRlZCBhIG5vbmUgb3B0aW9uIHRoZSByZXR1cm5lZCBpbmRleCB3b3VsZCBiZSBvZmYgYnkgb25lXHJcbiAgICAgIGxldCB2YWxJbmRleCA9IHRoaXMuZ2V0T3B0SW5kZXgodGhpcy5hY3RpdmVWYWx1ZSkgKyAodGhpcy5hbGxvd05vbmUgJiYgKHRoaXMuZm9yY2VTaG93Tm9uZSB8fCAhdGhpcy5pbm5lckNvbnRyb2wudmFsdWUpID8gMSA6IDApO1xyXG5cclxuICAgICAgLy8gdGhlIGluZGV4IHNob3VsZCBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIG91ciBlbnRpcmUgYnVmZmVyLCBvciBqdXN0IGFsbG93IGl0IHRvIHJlc2V0XHJcbiAgICAgIGlmICh2YWxJbmRleCA+PSB0aGlzLnZpZXdwb3J0UmVuZGVyUmFuZ2Uuc3RhcnRcclxuICAgICAgICAmJiAoIXRoaXMudmlld3BvcnRSZW5kZXJSYW5nZS5lbmQgfHwgdmFsSW5kZXggPD0gdGhpcy52aWV3cG9ydFJlbmRlclJhbmdlLmVuZClcclxuICAgICAgKSB7XHJcbiAgICAgICAgYWN0aXZlSW5kZXggPSB2YWxJbmRleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY3RpdmVJbmRleDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICAvLyBIaWdobGlnaHRzIHRleHRcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0VGV4dE9uT3Blbikge1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzT3V0KCkge1xyXG4gICAgLy8gbWFyayBjb250cm9sIHRvdWNoZWQgYW5kIHRyaWdnZXIgZXJyb3IgdmFsaWRhdGlvblxyXG4gICAgaWYgKCF0aGlzLmNsaWNrSW5Qcm9ncmVzcykge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RPcHRpb24ob3B0OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBuZXdWYWwgPSB0aGlzLmdldE9wdFZhbChvcHQsIHRoaXMuZm9yY2VFbWl0T2JqZWN0KTtcclxuXHJcbiAgICBpZiAodGhpcy5ub05nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm91dGVyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VGbihuZXdWYWwpO1xyXG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG5ld1ZhbCk7XHJcbiAgICB0aGlzLm9wdGlvbkNoYW5nZWQuZW1pdChuZXdWYWwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNjcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XHJcbiAgICAvLyBzY3JvbGwgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvcHRpb24gd2hlbiB3ZSBvcGVuIHRoZSBkcm9wZG93blxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApIHtcclxuICAgICAgbGV0IG9mZnNldEluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkSW5kZXggKyAodGhpcy5hbGxvd05vbmUgPyAxIDogMCk7IC8vIGFkanVzdCBmb3IgTm9uZSBlbnRyeVxyXG4gICAgICBvZmZzZXRJbmRleCAtPSAodGhpcy5udW1PcHRpb25zVG9TaG93IC8gMikgLSAxOyAvLyBjYWxjdWxhdGUgbWlkZGxlIG9mIHZpZXdwb3J0XHJcbiAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQob2Zmc2V0SW5kZXggKiB0aGlzLm9wdGlvblNpemVQeCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPcHRWYWwob3B0OiBhbnksIGZvcmNlT2JqZWN0OiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMudmFsdWVGaWVsZCAmJiAhZm9yY2VPYmplY3QpIHtcclxuICAgICAgaWYgKG9wdCAhPT0gbnVsbCAmJiBvcHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0ID09PSBcIm9iamVjdFwiICYmIHRoaXMudmFsdWVGaWVsZCBpbiBvcHQpIHtcclxuICAgICAgICByZXR1cm4gb3B0W3RoaXMudmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdDtcclxuICB9XHJcblxyXG4gIGdldE9wdEluZGV4KG9wdFZhbHVlOiBhbnkpOiBudW1iZXIge1xyXG4gICAgLy8gZmluZCB0aGUgaW5kZXggZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb3B0aW9uXHJcbiAgICBpZiAob3B0VmFsdWUgIT09IG51bGwgJiYgb3B0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRWYWwob3B0aW9uKSA9PT0gb3B0VmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|