info-library 2.14.9 → 2.14.10
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.
|
@@ -1597,24 +1597,34 @@ export class InfoGridComponent {
|
|
|
1597
1597
|
}
|
|
1598
1598
|
}
|
|
1599
1599
|
shortcutEdit(e) {
|
|
1600
|
+
if (this.onaction)
|
|
1601
|
+
return;
|
|
1600
1602
|
e.preventDefault();
|
|
1601
1603
|
if (this.overIndex > -1)
|
|
1602
1604
|
this.edit(this.data[this.overIndex], false);
|
|
1603
1605
|
}
|
|
1604
1606
|
shortcutDelete(e) {
|
|
1607
|
+
if (this.onaction)
|
|
1608
|
+
return;
|
|
1605
1609
|
e.preventDefault();
|
|
1606
1610
|
if (this.overIndex > -1)
|
|
1607
1611
|
this.delete(this.data[this.overIndex]);
|
|
1608
1612
|
}
|
|
1609
1613
|
shortcutFirst(e) {
|
|
1614
|
+
if (this.onaction)
|
|
1615
|
+
return;
|
|
1610
1616
|
e.preventDefault();
|
|
1611
1617
|
this.overIndex = 0;
|
|
1612
1618
|
}
|
|
1613
1619
|
shortcutLast(e) {
|
|
1620
|
+
if (this.onaction)
|
|
1621
|
+
return;
|
|
1614
1622
|
e.preventDefault();
|
|
1615
1623
|
this.overIndex = this.paginator.numberItensPage - 1;
|
|
1616
1624
|
}
|
|
1617
1625
|
shortcutNavigateDown(e) {
|
|
1626
|
+
if (this.onaction)
|
|
1627
|
+
return;
|
|
1618
1628
|
e.preventDefault();
|
|
1619
1629
|
this.overIndex--;
|
|
1620
1630
|
if (this.overIndex < 0)
|
|
@@ -1623,6 +1633,8 @@ export class InfoGridComponent {
|
|
|
1623
1633
|
});
|
|
1624
1634
|
}
|
|
1625
1635
|
shortcutNavigateUp(e) {
|
|
1636
|
+
if (this.onaction)
|
|
1637
|
+
return;
|
|
1626
1638
|
e.preventDefault();
|
|
1627
1639
|
this.overIndex++;
|
|
1628
1640
|
if (this.overIndex >= this.paginator.numberItensPage)
|
|
@@ -1631,6 +1643,8 @@ export class InfoGridComponent {
|
|
|
1631
1643
|
});
|
|
1632
1644
|
}
|
|
1633
1645
|
shortcutPagePrevious(e) {
|
|
1646
|
+
if (this.onaction)
|
|
1647
|
+
return;
|
|
1634
1648
|
e.preventDefault();
|
|
1635
1649
|
this.paginator.previous().subscribe(r => {
|
|
1636
1650
|
if (r != null)
|
|
@@ -1639,6 +1653,8 @@ export class InfoGridComponent {
|
|
|
1639
1653
|
;
|
|
1640
1654
|
}
|
|
1641
1655
|
shortcutPageNext(e) {
|
|
1656
|
+
if (this.onaction)
|
|
1657
|
+
return;
|
|
1642
1658
|
e.preventDefault();
|
|
1643
1659
|
this.paginator.next().subscribe(r => {
|
|
1644
1660
|
if (r != null)
|
|
@@ -1943,4 +1959,4 @@ export class InfoGridModalComponent {
|
|
|
1943
1959
|
type: Inject,
|
|
1944
1960
|
args: [MAT_DIALOG_DATA]
|
|
1945
1961
|
}] }, { type: i3.MatDialogRef }, { type: i3.MatDialog }]; }, null); })();
|
|
1946
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZ3JpZC9ncmlkLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUwsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFB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QUFLLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OytHQXpDUSxzQkFBc0IsdUJBT1gsZUFBZTt3R0FQMUIsc0JBQXNCLGtFQUZwQixDQUFDLGlCQUFpQixDQUFDO1FFMzdCbEMscUNBQTZEO1FBQWpELHlHQUFVLFVBQU0sSUFBQztRQUN6Qix1Q0FBMEMsU0FBQSxTQUFBLGtCQUFBO1FBRUgsb0JBQUk7UUFBQSxpQkFBVztRQUFBLFlBQThDOztRQUFBLGlCQUFLO1FBQ2pHLDBCQUFJLGtCQUFBO1FBQTJCLDBCQUFTO1FBQUEsaUJBQVc7UUFBQSxhQUE4Qzs7UUFBQSxpQkFBSyxFQUFBLEVBQUE7UUFLOUcsOEJBQXFCO1FBQ2pCLDJGQUllO1FBQ25CLGlCQUFLLEVBQUE7O1FBWmlELGVBQThDO1FBQTlDLHdFQUE4QztRQUN6QyxlQUE4QztRQUE5Qyx5RUFBOEM7UUFNdEUsZUFBVTtRQUFWLHFDQUFVOzt1RkZtN0JwQyxzQkFBc0I7Y0FKbEMsU0FBUzs0QkFFSyxDQUFDLGlCQUFpQixDQUFDOztzQkFTakIsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBBZnRlclZpZXdJbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29udGVudENoaWxkcmVuLCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIEluamVjdCwgSG9zdExpc3RlbmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dNb2RhbCB9IGZyb20gXCIuLi8uLi9sYXlvdXRzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0J1dHRvbnMgfSBmcm9tIFwiLi4vLi4vZW51bS9kaWFsb2ctYnV0dG9ucy5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gXCIuLi8uLi9lbnVtL21vZGFsLWFjdGlvbi5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9QYWdlQWN0aW9uIH0gZnJvbSBcIi4uLy4uL2VudW0vcGFnZS1hY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnZWJhckJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL3BhZ2ViYXItYnV0dG9ucy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvR3JpZEJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2dyaWQtYnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9MYXN0U2VhcmNoTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvbGFzdC1zZWFyY2gubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb01ldGhvZEdyaWRCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9tZXRob2QtZ3JpZC1idXR0b24ubW9kZWxcIjtcclxuaW1wb3J0IHsgTmdNb2RlbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWdyaWQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtJbmZvRm9ybVByb3BNb2RlbF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBwYWdldGl0bGUgPSAnJztcclxuICAgIEBJbnB1dCgpIHByZWZpeHRpdGxlID0gJyc7XHJcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgQElucHV0KCkgcGFnZWJhcmJ1dHRvbnM6IEluZm9QYWdlYmFyQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgZnVsbGFyZWEgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBhcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2Q6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBmb3JtOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlciA9IDgwMDtcclxuICAgIEBJbnB1dCgpIHBhcmVudDogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGFwaWRvd25sb2FkOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kZG93bmxvYWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgQElucHV0KCkgYmFja3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgbmV3dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSBuZXdsYWJlbCA9ICdOb3ZvJztcclxuICAgIEBJbnB1dCgpIGVkaXR1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHZpZXd1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRldXJsID0gJyc7XHJcblxyXG4gICAgQElucHV0KCkgcGFnZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNpemUgPSAxNTtcclxuICAgIEBJbnB1dCgpIGF1dG9yZWZyZXNoID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBlbmFibGVkY29scyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkbmV3ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRlZGl0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRkZWxldGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZHZpZXcgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNhbmNlbHNlYXJjaCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZGV0YWlsID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xhc3NpY29ucyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xpY2thY2Nlc3MgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjbGlja2V2ZW50ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZXhwYW5kID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgc2VhcmNob3BlbmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZWFyY2hvbmx5b25lYnV0dG9uID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlc2VhcmNobGFzdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc3RhdGljdGl0bGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkY29sID0gJyc7XHJcbiAgICBASW5wdXQoKSBhY2Nlc3NpY29uID0gJ2Fycm93X2ZvcndhcmQnO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvYWRvbmluaXQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBzZWFyY2htb2RlbDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25iZWZvcmVzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25sb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25jbG9zZW1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9ubmV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbnZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25kZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY3VzdG9tZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIGR5bmFtaWNjb2xzOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KCkgYnV0dG9uczogSW5mb0dyaWRCdXR0b25Nb2RlbFtdID0gW107XHJcbiAgICBASW5wdXQoKSBzZWFyY2hidXR0b25zOiBJbmZvTWV0aG9kR3JpZEJ1dHRvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKSBzaG93bWVzc2FnZWVycm9yID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkZWZhdWx0bmV3b2JqZWN0OiBhbnkgPSBudWxsO1xyXG4gICAgXHJcbiAgICBAQ29udGVudENoaWxkcmVuKE5nTW9kZWwpIGZvcm1Nb2RlbDogUXVlcnlMaXN0PE5nTW9kZWw+O1xyXG4gICAgQFZpZXdDaGlsZChOZ0Zvcm0sIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtU2VhcmNoOiBOZ0Zvcm07XHJcbiAgICBcclxuICAgIG1lc3NhZ2VzOiBTdHJpbmdbXSA9IFtdO1xyXG4gICAgcmVzdWx0VGl0bGUgPSAnJztcclxuICAgIGVuYWJsZWRTZWFyY2ggPSBmYWxzZTtcclxuICAgIHNlYXJjaE1vZGVsUmVzZXQ6IGFueSA9IG51bGw7XHJcbiAgICBkaXNhYmxlZENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBvdmVySW5kZXg6IG51bWJlciA9IC0xO1xyXG4gICAgb3Zlckxhc3RJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgICBvbmFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHNob3dQYWdlYmFyID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uTmV3ID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uRWRpdCA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbkRlbGV0ZSA9IGZhbHNlO1xyXG5cclxuICAgIHRhYmxlSGVpZ2h0ID0gMDtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHBhZ2ViYXJUaXRsZSA9ICcnO1xyXG4gICAgaWNvbnM6IGFueVtdID0gW107XHJcbiAgICBjb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgIGNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICBjb2x1bmFzUGFkcmFvSGVhZGVycyA9IFtdO1xyXG4gICAgY29sdW5hc1R5cGUgPSBbXTtcclxuICAgIGNvbHVuYXNXaWR0aCA9IFtdO1xyXG4gICAgY29sdW5hc1RyYW5zbGF0ZSA9IFtdO1xyXG4gICAgY29sdW5hc0h0bWwgPSBbXTtcclxuICAgIGNvbHVuYXNJdGVuc0V4cGFuZGlkb3MgPSBbXTtcclxuICAgIGN1cnJlbnRVcmw6IHN0cmluZyA9IG51bGw7XHJcbiAgICB1cmw6IHN0cmluZyA9IG51bGw7XHJcbiAgICBjaGF2ZVN0b3JhZ2U6IHN0cmluZyA9ICdjb2xzJztcclxuICAgIGlkZW50aWZpY2Fkb3I6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsaW1pdGNoYXJhY3RlcnM6IG51bWJlciA9IDI1MDtcclxuICAgIGNhbGxUaW1lb3V0OiBhbnk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luYXRvcjogSW5mb1BhZ2luYXRvckNvbXBvbmVudDtcclxuICAgIEBPdXRwdXQoKSBwYXJlbnRJZFVybENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwYXJlbnRJZFVybFZhbHVlOiBudW1iZXIgPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYXJlbnRJZFVybCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRJZFVybFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwYXJlbnRJZFVybCh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMucGFyZW50SWRVcmxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMucGFyZW50SWRVcmxDaGFuZ2UuZW1pdCh0aGlzLnBhcmVudElkVXJsVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9jb2xzOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29scygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29scztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY29scyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2NvbHMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2c6IEluZm9EaWFsb2dNb2RhbCwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX3BsYXRmb3JtOiBJbmZvUGxhdGZvcm1Nb2RlbCxcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBtb2RhbDogTWF0RGlhbG9nLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3Byb3A6IEluZm9Gb3JtUHJvcE1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2RhdGFBY2Nlc3NTZXJ2aWNlOiBJbmZvRGF0YVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogSW5mb1RyYW5zbGF0ZVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbGFzdFNlYXJjaDogSW5mb0xhc3RTZWFyY2hNb2RlbCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgICAgIHRoaXMudXJsID0gKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGFbJ1VSTCddIHx8IHRoaXMuX3JvdXRlci51cmwpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlYmFyVGl0bGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2QgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ1NlYXJjaCc7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1vZGVsUmVzZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ICE9IG51bGwgJiYgKHRoaXMubWV0aG9kID09IG51bGwgfHwgdGhpcy5tZXRob2QgPT0gJycpKVxyXG4gICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdHZXRCeVBhcmVudElkJztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLl9sYXN0U2VhcmNoLnVybCkgPT0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRTZWFyY2ggPSB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsICYmIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5fbGFzdFNlYXJjaC5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gbG9jYXRpb24uaHJlZjtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5hcGkgPSB0aGlzLmFwaTtcclxuICAgICAgICB0aGlzLl9wcm9wLm1vZGFsQ29tcG9uZW50ID0gdGhpcy5mb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmlkZW50aWZpY2Fkb3IgPSB0aGlzLmFwaSArICdfJyArIHRoaXMubWV0aG9kO1xyXG4gICAgICAgIHRoaXMuc2hvd1BhZ2ViYXIgPSB0aGlzLnBhZ2V0aXRsZSAhPSAnJyB8fCB0aGlzLnByZWZpeHRpdGxlICE9ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghdGhpcy5mdWxsYXJlYSAmJiB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXggPD0gMilcclxuICAgICAgICAgICAgdGhpcy5mdWxsYXJlYSA9IHRoaXMuc2hvd1BhZ2ViYXI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICYmIHRoaXMuZm9ybU1vZGVsLmxlbmd0aCA+IDAgJiYgdGhpcy5mb3JtU2VhcmNoKVxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC50b0FycmF5KCkuZm9yRWFjaChtb2RlbCA9PiB0aGlzLmZvcm1TZWFyY2guYWRkQ29udHJvbChtb2RlbCkpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QgJiYgdGhpcy5wYWdlZCAmJiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy5fbGFzdFNlYXJjaC51cmwpID09IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLnVybCkpXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gdGhpcy5fbGFzdFNlYXJjaC5pbmRleDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY2NvbHMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2Fkb25pbml0KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5keW5hbWljY29scylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29scyA9IHIuZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hZG9uaW5pdClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRjbGlja2V2ZW50KVxyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRjbGlja2FjY2VzcyA9IHRydWU7XHJcblxyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbHVtbnMoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHMgPT0gJycpXHJcbiAgICAgICAgICAgIGFsZXJ0KCdOZW5odW1hIGNvbHVuYSBpbmZvcm1hZGEnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29scyAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbHVuYXNPY3VsdGFzID0gW107XHJcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGFkb3NTdG9yYWdlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYWRvc1N0b3JhZ2UuZmluZEluZGV4KGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikgPiAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW5hc09jdWx0YXMgPSBkYWRvc1N0b3JhZ2UuZmluZChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpLkNvbHVuYXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bmFzT2N1bHRhcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bmFzT2N1bHRhcyA9IGNvbHVuYXNPY3VsdGFzLmZpbHRlcihjID0+ICFjLkV4aWJpcikubWFwKGMgPT4gYy5Ob21lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzSGVhZGVycyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNQYWRyYW9IZWFkZXJzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGggPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzVHJhbnNsYXRlID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0h0bWwgPSBbXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY29scy5zcGxpdCgnLCcpLmZvckVhY2gocmVnaXN0cm8gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGU6IGJvb2xlYW4gPSByZWdpc3Ryby5pbmRleE9mKCcjJykgPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgaHRtbDogYm9vbGVhbiA9IHJlZ2lzdHJvLmluZGV4T2YoJ0AnKSA9PSAtMTtcclxuICAgICAgICAgICAgICAgIHJlZ2lzdHJvID0gcmVnaXN0cm8ucmVwbGFjZSgvIy9nLCAnJykucmVwbGFjZSgvQC9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbjogc3RyaW5nID0gcmVnaXN0cm87XHJcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyOiBzdHJpbmcgPSByZWdpc3RybztcclxuICAgICAgICAgICAgICAgIGxldCB0eXBlOiBzdHJpbmcgPSAnJztcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5pbmRleE9mKCc6JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IHJlZ2lzdHJvLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gZGFkb3NbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gZGFkb3NbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5pbmRleE9mKCc9JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJ0cyA9IGhlYWRlci5zcGxpdCgnPScpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uID09IGhlYWRlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gcGFydHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IHBhcnRzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJ0c1sxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYXV4ID0gdHlwZSA9PSAnJyA/IGhlYWRlciA6IHR5cGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXV4LmluZGV4T2YoJyonKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlckluZm8gPSBhdXguc3BsaXQoJyonKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBoZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBoZWFkZXJJbmZvWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHR5cGUgPSBoZWFkZXJJbmZvWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGhlYWRlckluZm9bMV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aC5pbmRleE9mKCclJykgPCAwICYmIHdpZHRoLmluZGV4T2YoJ3B4JykgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCArPSAncHgnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bmFzT2N1bHRhcy5pbmRleE9mKGhlYWRlcikgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnMucHVzaChjb2x1bW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc0hlYWRlcnMucHVzaChoZWFkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUucHVzaCh0eXBlID09ICcnID8gJ2xhYmVsJyA6IHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1dpZHRoLnB1c2god2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1RyYW5zbGF0ZS5wdXNoKHRyYW5zbGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzSHRtbC5wdXNoKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1BhZHJhb0hlYWRlcnMucHVzaChoZWFkZXIpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVuYXNJdGVucy5sZW5ndGggPT0gMSAmJiB0aGlzLmNvbHVuYXNXaWR0aC5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1dpZHRoWzBdID0gJzEwMCUnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRJdGVuc0V4cGFuZGlkb3MoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWRleHBhbmQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW5hc0l0ZW5zPy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgcm93LnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zRXhwYW5kaWRvcy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhZ2ViYXJUaXRsZSgpIHtcclxuICAgICAgICBsZXQgYXV4ID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnByZWZpeHRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggPSB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucHJlZml4dGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ICs9ICh0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucmVzdWx0VGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wYWdldGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJyB8fCB0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucGFnZXRpdGxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlYmFyVGl0bGUgPSBhdXg7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGVUbyh1cmw6IHN0cmluZywgcGFzc0lkOiBib29sZWFuLCBpZD86IHN0cmluZykge1xyXG5cclxuICAgICAgICBpZiAocGFzc0lkKSB7XHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihcIjppZFwiKSA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLnJlcGxhY2UoJzppZCcsIGlkKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt1cmwsIGlkXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkN1c3RvbU1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnksIHdpZHRoOiBOdW1iZXIsIG1vZGVsOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZENsaWNrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uTm9uZSwgbW9kZWwpO1xyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50LCB3aWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YSgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwaSA9PSBudWxsIHx8IHRoaXMuYXBpID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWFyY2goKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wYWdlZClcclxuICAgICAgICAgICAgdGhpcy5nZXRQYWdlZCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnBhcmVudCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmdldEFsbCgpO1xyXG5cclxuICAgICAgICBlbHNlIHRoaXMuZ2V0QnlQYXJlbnRJZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbCgpOiBhbnkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIpKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAucG9zdCh0aGlzLmFwaSwgdGhpcy5zZWFyY2htb2RlbCwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ocikpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhZ2VkKCk6IGFueSB7XHJcblxyXG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcmVudCA9PSBudWxsID8gXCJcIiA6IFwiaWQ9XCIgKyB0aGlzLnBhcmVudCArIFwiJlwiO1xyXG4gICAgICAgIHBhcmFtcyArPSAnaW5kZXg9JyArIHRoaXMucGFnaW5hdG9yLmluZGV4ICsgJyZzaXplPScgKyB0aGlzLnNpemU7XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbXMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgdHJ1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlYXJjaCgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMub25iZWZvcmVzZWFyY2guZW1pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMucGFnZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5JbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaG1vZGVsLlNpemUgPSB0aGlzLnNpemU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZGF0YUluaWNpYWwgPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUluaWNpYWxcIl07XHJcbiAgICAgICAgdmFyIGRhdGFGaW5hbCA9IHRoaXMuc2VhcmNobW9kZWxbXCJEYXRhRmluYWxcIl07XHJcbiAgICAgICAgaWYgKGRhdGFJbmljaWFsICE9IG51bGwgJiYgZGF0YUZpbmFsICE9IG51bGwgJiYgbmV3IERhdGUoZGF0YUluaWNpYWwpID4gbmV3IERhdGUoZGF0YUZpbmFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goJ0RhdGFJbmljaWFsTWFpb3JGaW5hbCcpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBkYXRhSW5pY2lvID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFJbmljaW9cIl07XHJcbiAgICAgICAgdmFyIGRhdGFGaW0gPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUZpbVwiXTtcclxuICAgICAgICBpZiAoZGF0YUluaWNpbyAhPSBudWxsICYmIGRhdGFGaW0gIT0gbnVsbCAmJiBuZXcgRGF0ZShkYXRhSW5pY2lvKSA+IG5ldyBEYXRlKGRhdGFGaW0pKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCgnRGF0YUluaWNpb01haW9yRmltJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRoaXMucGFnZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsICdpZD0nICsgdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgZmFsc2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhUmV0dXJuKHJlc3VsdDogYW55LCByZWZyZXNoUGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC51cmwgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2ggPSB0aGlzLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5pbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdC5kYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRpY3RpdGxlICYmIHJlc3VsdC5uYW1lICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShyZXN1bHQubmFtZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmRlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVzdWx0LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXJlbnRJZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRJZFVybCA9IHJlc3VsdC5wYXJlbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZWZyZXNoUGFnaW5hdG9yKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucmVmcmVzaChyZXN1bHQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3JlZnJlc2ggPiAwICYmIHRoaXMuY3VycmVudFVybCA9PSBsb2NhdGlvbi5ocmVmKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jYWxsVGltZW91dCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2V0RGF0YSgpOyB9LCB0aGlzLmF1dG9yZWZyZXNoICogMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZmlsbEljb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SXRlbnNFeHBhbmRpZG9zKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpIHRoaXMubWVzc2FnZXMgPSByZXN1bHQubWVzc2FnZXM7XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgIHRoaXMub25sb2FkY29tcGxldGUuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVBhZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IuaW5kZXggPSBpbmRleDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWFyY2goKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLmdldFBhZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2MnLCBbJyRldmVudCddKVxyXG4gICAgY2FuY2VsU2VhcmNoKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5zZWFyY2hNb2RlbFJlc2V0KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaG9wZW5lZClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkU2VhcmNoID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMucGFnZWQpXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5pbnNlcnQnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLisnLCBbJyRldmVudCddKVxyXG4gICAgYWRkKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHRoaXMub3ZlckluZGV4ID0gLTE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5OZXcsIHRoaXMuZGVmYXVsdG5ld29iamVjdCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld3VybCA9PSBudWxsIHx8IHRoaXMubmV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXd1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsICs9ICcvbm92byc7XHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsID0gdGhpcy5uZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uZXd1cmwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbm5ldy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGV0YWlsKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5TZWFyY2gsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vc3RyYXJNYWlzKGxpbmhhLCBjb2x1bmEpIHtcclxuICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3NbbGluaGFdW2NvbHVuYV0gPSAhdGhpcy5jb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2xpbmhhXVtjb2x1bmFdIFxyXG4gICAgfVxyXG5cclxuICAgIGFjY2Vzcyhtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRDbGljayl7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2lmICh0aGlzLmVuYWJsZWRjbGlja2FjY2Vzcyl7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZGNsaWNrZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBlbHNlIHRoaXMuZWRpdChtb2RlbCwgZmFsc2UpO1xyXG4gICAgICAgIC8vfVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXcobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRDbGljayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbmFjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMub3Zlckxhc3RJbmRleCA9IHRoaXMub3ZlckluZGV4O1xyXG4gICAgICAgIHRoaXMub3ZlckluZGV4ID0gLTE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5WaWV3LCBtb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXQobW9kZWw6IGFueSwgZGlzYWJsZWRDbGljazogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSBkaXNhYmxlZENsaWNrO1xyXG4gICAgICAgIHRoaXMub25hY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSB0aGlzLm92ZXJJbmRleDtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9uRWRpdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLkVkaXQsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdHVybCA9PSBudWxsIHx8IHRoaXMuZWRpdHVybCA9PSAnJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLmVkaXR1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdGhpcy5lZGl0dXJsLCBtb2RlbC5JZF0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uZWRpdC5lbWl0KG1vZGVsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLlZpZXcsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy51cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy52aWV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgZGVsZXRlKG1vZGVsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub25hY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSB0aGlzLm92ZXJJbmRleDtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZih0aGlzLmN1c3RvbWRlbGV0ZS5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbWRlbGV0ZS5lbWl0KG1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLlllc09yTm8oJ01lbnNhZ2VtRXhjbHVpcicpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuYnV0dG9uID09IEluZm9EaWFsb2dCdXR0b25zLlllcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5kZWxldGUodGhpcy5hcGksIG1vZGVsLklkKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmRlbGV0ZS5lbWl0KGQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZC5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gZC5tZXNzYWdlcztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSB0aGlzLm92ZXJMYXN0SW5kZXg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25hY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbWl6ZVRhYmxlKCl7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uRWRpdCwgeyBcclxuICAgICAgICAgICAgSWRlbnRpZmljYWRvcjogdGhpcy5pZGVudGlmaWNhZG9yLCBcclxuICAgICAgICAgICAgQ29sdW5hczogdGhpcy5jb2x1bmFzUGFkcmFvSGVhZGVycywgXHJcbiAgICAgICAgICAgIENoYXZlOiB0aGlzLmNoYXZlU3RvcmFnZSBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLm1vZGFsLm9wZW4oSW5mb0dyaWRNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9wcm9wLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKHIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGlmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5TYXZlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wuZicsIFsnJGV2ZW50J10pXHJcbiAgICBmaW5kKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9ICF0aGlzLmVuYWJsZWRTZWFyY2g7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRTZWFyY2gpe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwcmltZWlyb0NhbXBvOiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdyaWQtc2VhcmNoIGluZm8taW5wdXQgaW5wdXQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJpbWVpcm9DYW1wbylcclxuICAgICAgICAgICAgICAgICAgICBwcmltZWlyb0NhbXBvLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEljb25zKCkge1xyXG4gICAgICAgIHRoaXMuaWNvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKHJldCA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHJldFsnSWNvbiddO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignfCcpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXRvcm5vID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnfCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChpY29uZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbmUuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGljb25lLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGljb25lLCBUb29sdGlwOiAnJywgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihhID0+IGEuSWNvbiAhPSBudWxsICYmIGEuSWNvbiAhPSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldG9ybm8uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSAmJiBhLkljb24gPT0gZWxlbWVudC5JY29uKSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5QcmluY2lwYWwgPSBpbmRleCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogYW55ID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSBpdGVtLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogZGFkb3NbMF0sIFRvb2x0aXA6IGRhZG9zWzFdLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogaXRlbSwgVG9vbHRpcDogXCJcIiwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWNvbnMuZmluZChhID0+IGEuTmFtZSA9PSBlbGVtZW50Lk5hbWUpID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pY29ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5mbyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5hbGVydCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFjaygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5iYWNrdXJsICsgKHRoaXMucGFyZW50SWRVcmwgPT0gbnVsbCA/IFwiXCIgOiBcIi9cIiArIHRoaXMucGFyZW50SWRVcmwpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnkgPSB0aGlzLmZvcm0sIHdpZHRoOiBOdW1iZXIgPSB0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKG1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX3Byb3AsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbmNsb3NlbW9kYWwuZW1pdChyKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gdGhpcy5vdmVyTGFzdEluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgdGhpcy5vbmFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICByZWYuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTG9hZCgpIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2ViYXJUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb24oKSB7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uTmV3ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICduZXcnKTtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25FZGl0ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdlZGl0Jyk7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uRGVsZXRlID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdyZW1vdmUnKTtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWQoYXJxdWl2b0lkOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlkb3dubG9hZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnQVBJIERvd25sb2FkIGVzdMOhIG51bGwnKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5nZXQodGhpcy5hcGlkb3dubG9hZCwgKHRoaXMubWV0aG9kZG93bmxvYWQgIT0gbnVsbCA/IHRoaXMubWV0aG9kZG93bmxvYWQgOiAnR2V0JyksIFwiaWQ9XCIgKyBhcnF1aXZvSWQpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICBpZiAoci5zdWNjZXNzICYmIHIuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gd2luZG93LmF0b2Ioci5kYXRhLkNvbnRldWRvKTtcclxuICAgICAgICAgICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5TGVuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmluYXJ5TGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgYnl0ZXNbaV0gPSBhc2NpaTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRBOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSByLmRhdGEuTm9tZTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnRCdXR0b24obW9kZWw6IGFueSwgYXBpOiBhbnksIG1ldGhvZDogc3RyaW5nLCBjb25maXJtOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1xyXG4gICAgICAgICAgICAgICAgLlllc09yTm8oJ01lbnNhZ2VtQ29uZmlybWFyJylcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0LmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dEVkaXQoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vdmVySW5kZXggPiAtMSlcclxuICAgICAgICAgICAgdGhpcy5lZGl0KHRoaXMuZGF0YVt0aGlzLm92ZXJJbmRleF0sIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmRlbGV0ZScsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dERlbGV0ZShlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm92ZXJJbmRleCA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZSh0aGlzLmRhdGFbdGhpcy5vdmVySW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmhvbWUnLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXRGaXJzdChlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW5kJywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0TGFzdChlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXggPSB0aGlzLnBhZ2luYXRvci5udW1iZXJJdGVuc1BhZ2UgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uYXJyb3d1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dE5hdmlnYXRlRG93bihlOiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5vdmVySW5kZXgtLTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3ZlckluZGV4IDwgMClcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucHJldmlvdXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IHIgPT0gbnVsbCA/IDAgOiAoci5udW1iZXJJdGVuc1BhZ2UgLSAxKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5hcnJvd2Rvd24nLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXROYXZpZ2F0ZVVwKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCsrO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vdmVySW5kZXggPj0gdGhpcy5wYWdpbmF0b3IubnVtYmVySXRlbnNQYWdlKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5uZXh0KCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSByID09IG51bGwgPyAodGhpcy5wYWdpbmF0b3IubnVtYmVySXRlbnNQYWdlIC0gMSkgOiAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLnBhZ2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0UGFnZVByZXZpb3VzKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvci5wcmV2aW91cygpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gLTE7XHJcbiAgICAgICAgfSk7O1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24ucGFnZXVwJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uYXJyb3dyaWdodCcsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dFBhZ2VOZXh0KGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRvci5uZXh0KCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAociAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSAtMTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZVVybDogJ2dyaWQubW9kYWwuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtJbmZvRm9ybVByb3BNb2RlbF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9HcmlkTW9kYWxDb21wb25lbnQge1xyXG5cclxuICAgIGlkZW50aWZpY2Fkb3I6IHN0cmluZztcclxuICAgIGNoYXZlU3RvcmFnZTogc3RyaW5nO1xyXG4gICAgY29sdW5hczogYW55ID0gW107XHJcbiAgICBkYWRvc1N0b3JhZ2U6IGFueSA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBfcHJvcDogSW5mb0Zvcm1Qcm9wTW9kZWwsIHByaXZhdGUgX3JlZjogTWF0RGlhbG9nUmVmPEluZm9HcmlkTW9kYWxDb21wb25lbnQ+LCBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nKXtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpe1xyXG4gICAgICAgIHRoaXMuaWRlbnRpZmljYWRvciA9IHRoaXMuX3Byb3AuZGF0YS5JZGVudGlmaWNhZG9yO1xyXG4gICAgICAgIHRoaXMuY2hhdmVTdG9yYWdlID0gdGhpcy5fcHJvcC5kYXRhLkNoYXZlO1xyXG5cclxuICAgICAgICBsZXQgY29sdW5hc0dyaWQgPSB0aGlzLl9wcm9wLmRhdGEuQ29sdW5hcy5tYXAoYyA9PiB7IHJldHVybiB7IE5vbWU6IGMsIEV4aWJpcjogdHJ1ZSwgR3JpZEF0dWFsOiB0cnVlIH07IH0pO1xyXG5cclxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpID09IG51bGwpXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlLCBKU09OLnN0cmluZ2lmeShbXSkpO1xyXG5cclxuICAgICAgICB0aGlzLmRhZG9zU3RvcmFnZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGFkb3NTdG9yYWdlLmZpbmRJbmRleChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpIDwgMClcclxuICAgICAgICAgICAgdGhpcy5kYWRvc1N0b3JhZ2UucHVzaCh7IElkZW50aWZpY2Fkb3I6IHRoaXMuaWRlbnRpZmljYWRvciwgQ29sdW5hczogY29sdW5hc0dyaWQgfSk7XHJcblxyXG4gICAgICAgIGxldCBjb2x1bmFzR2VyYWwgPSB0aGlzLmRhZG9zU3RvcmFnZS5maW5kKGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikuQ29sdW5hcztcclxuICAgICAgICBcclxuICAgICAgICAvL0FkaWNpb25hIHBvc3PDrXZlaXMgbm92YXMgY29sdW5hc1xyXG4gICAgICAgIGNvbHVuYXNHcmlkLmZpbHRlcihnID0+IGNvbHVuYXNHZXJhbC5tYXAoYyA9PiBjLk5vbWUpLmluZGV4T2YoZy5Ob21lKSA8IDApLmZvckVhY2gobm92YUNvbHVuYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbHVuYXNHZXJhbC5wdXNoKG5vdmFDb2x1bmEpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL0V4aWJlIGFwZW5hcyBhcyBjb2x1bmFzIHByZXNlbnRlcyBubyBncmlkIGF0dWFsXHJcbiAgICAgICAgdGhpcy5jb2x1bmFzID0gY29sdW5hc0dlcmFsLm1hcChjID0+ICh7IC4uLmMsIEdyaWRBdHVhbDogY29sdW5hc0dyaWQuZmluZEluZGV4KGcgPT4gZy5Ob21lID09IGMuTm9tZSkgPiAtMSB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpe1xyXG4gICAgICAgIHRoaXMuZGFkb3NTdG9yYWdlLmZpbmQoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKS5Db2x1bmFzID0gdGhpcy5jb2x1bmFzO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY2hhdmVTdG9yYWdlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhZG9zU3RvcmFnZSkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX3Byb3AubW9kYWxBY3Rpb24gPSBJbmZvTW9kYWxBY3Rpb24uU2F2ZTtcclxuICAgICAgICB0aGlzLl9yZWYuY2xvc2UodGhpcy5fcHJvcCk7XHJcbiAgICB9XHJcbn0iLCI8aW5mby1wYWdlYmFyICpuZ0lmPVwic2hvd1BhZ2ViYXJcIiBpY29uPVwid29ya1wiIFtwYWdldGl0bGVdPVwicGFnZWJhclRpdGxlXCIgW2Rlc2NyaXB0aW9uXT1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiYmFja3VybCAhPSBudWxsICYmIGJhY2t1cmwgIT0gJydcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPnt7XCJWb2x0YXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIHBhZ2ViYXJidXR0b25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYi5tb2RhbCA9PSBudWxsID8gbmF2aWdhdGVUbyhiLnVybCwgZmFsc2UsIG51bGwpIDogb3BlbkN1c3RvbU1vZGFsKGIubW9kYWwsIGIubW9kYWx3aWR0aCwgbnVsbClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYi5pY29uICE9ICdjaGV2cm9uX3JpZ2h0J1wiIGNsYXNzPVwiZnMtMjBcIj57eyBiLmljb24gfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICB7eyBiLmxhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNobW9kZWwgIT0gbnVsbCAmJiAhZW5hYmxlZFNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJmaW5kKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPnNlYXJjaDwvbWF0LWljb24+IHt7IFwiUGVzcXVpc2FyXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInNlYXJjaG1vZGVsICE9IG51bGwgJiYgZW5hYmxlZFNlYXJjaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJmaW5kKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPnNlYXJjaF9vZmY8L21hdC1pY29uPiB7eyBcIk9jdWx0YXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZW5hYmxlZG5ldyAmJiBoYXNQZXJtaXNzaW9uTmV3XCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImFkZCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5hZGQ8L21hdC1pY29uPiB7eyBuZXdsYWJlbCB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuPC9pbmZvLXBhZ2ViYXI+XHJcblxyXG48ZGl2IFtuZ0NsYXNzXT1cInsgJ3RhYmxlLWZ1bGwnOiBmdWxsYXJlYSB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB3aGl0ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSBncmlkLXNlYXJjaFwiIFtuZ1N0eWxlXT1cInsgJ3BhZGRpbmcnOiAoZW5hYmxlZFNlYXJjaCA/IDEwIDogMCkgKyAncHggMjBweCcgfVwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiAjZm9ybVNlYXJjaD1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJzZWFyY2goKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZWRTZWFyY2hcIiBjbGFzcz1cInNlYXJjaC1jb250YWluZXIgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC17eyhzZWFyY2hidXR0b25zIHx8IFtdKS5sZW5ndGggPT0gMCA/ICcxMCcgOiAnOScgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7KHNlYXJjaGJ1dHRvbnMgfHwgW10pLmxlbmd0aCA9PSAwID8gJzInIDogJzMnIH19IGFsaWduLXJpZ2h0XCIgKm5nSWY9XCJzZWFyY2htb2RlbCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYnV0dG9ucyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hvbmx5b25lYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0J1c2NhcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNob25seW9uZWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNhbmNlbFNlYXJjaCgpXCIgKm5nSWY9XCJlbmFibGVkY2FuY2Vsc2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm1TZWFyY2guaW52YWxpZCB8fCBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIHNlYXJjaGJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIiAoY2xpY2spPVwiYi5tZXRob2QoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYi5pY29uXCIgY2xhc3M9XCJmcy0yMFwiPnt7Yi5pY29uIHwgdHJhbnNsYXRlfX08L21hdC1pY29uPiB7e2IubGFiZWwgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZmllbGRzZXQgKm5nSWY9XCIhc2hvd1BhZ2ViYXJcIj48bGVnZW5kIFtpbm5lckhUTUxdPVwicGFnZWJhclRpdGxlIHwgdHJhbnNsYXRlXCI+PC9sZWdlbmQ+PC9maWVsZHNldD5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImxvYWRpbmctYmFyXCI+PG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImxvYWRpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+PC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwiYXV0by1yZWZyZXNoXCIgKm5nSWY9XCJhdXRvcmVmcmVzaCA+IDBcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIG1hdFRvb2x0aXA9XCJ7eyAnQXV0b1JlZnJlc2gnIHwgdHJhbnNsYXRlIH19IHt7IGF1dG9yZWZyZXNoIH19IHNlZ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj5hY2Nlc3NfdGltZTwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtaG92ZXJcIiBbbmdTdHlsZV09XCJ7ICdtaW4taGVpZ2h0LnB4JzogdGFibGVIZWlnaHQgfVwiIFtuZ0NsYXNzXT1cInsgJ2xvYWRpbmcnOiBsb2FkaW5nLCAnY2xpY2thY2Nlc3MnOiBlbmFibGVkY2xpY2thY2Nlc3MgfVwiIChtb3VzZWxlYXZlKT1cIm92ZXJJbmRleCA9IC0xXCIgKm5nSWY9XCJkYXRhICE9IG51bGxcIiA+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNSU7XCIgKm5nSWY9XCJlbmFibGVkY2xhc3NpY29ucyAmJiBkYXRhPy5sZW5ndGggPiAwICYmIGRhdGFbMF0/Lkljb24gIT0gbnVsbFwiPjwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bmFzSGVhZGVyczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjb2x1bmFzV2lkdGhbaV0gPT0gJydcIiBbY2xhc3NdPVwiJ2NvbF8nICsgY29sLnRvTG93ZXJDYXNlKClcIiBbbmdDbGFzc109XCJ7ICd0ZXh0LWNlbnRlcic6IGNvbHVuYXNUeXBlW2ldID09ICdjaGVjaycsICdhbGlnbi1yaWdodCc6IGNvbHVuYXNUeXBlW2ldLnN0YXJ0c1dpdGgoJ24nKSB9XCI+e3sgY29sIHwgdHJhbnNsYXRlIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiY29sdW5hc1dpZHRoW2ldICE9ICcnXCIgW25nU3R5bGVdPVwieyAnd2lkdGgnOiBjb2x1bmFzV2lkdGhbaV0gfVwiIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJzogY29sdW5hc1R5cGVbaV0gPT0gJ2NoZWNrJywgJ2FsaWduLXJpZ2h0JzogY29sdW5hc1R5cGVbaV0uc3RhcnRzV2l0aCgnbicpIH1cIj57eyBjb2wgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zIGFsaWduLXJpZ2h0IGJ1dHRvbnNcIiAqbmdJZj1cIih0ZW1wbGF0ZXVybCAhPSAnJykgfHwgKGJ1dHRvbnMgIT0gbnVsbCAmJiBidXR0b25zLmxlbmd0aCA+IDApIHx8IGVuYWJsZWRkZXRhaWwgfHwgZW5hYmxlZHZpZXcgfHwgZW5hYmxlZGNvbHMgfHwgKChkaXNhYmxlZGNvbCA9PSAnJykgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8ICgoZGlzYWJsZWRjb2wgPT0gJycpICYmIGVuYWJsZWRkZWxldGUgJiYgaGFzUGVybWlzc2lvbkRlbGV0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiW21hdFRvb2x0aXBdPVwibmV3bGFiZWwgfCB0cmFuc2xhdGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCIgKGNsaWNrKT1cImFkZCgpXCIgKm5nSWY9XCIhc2hvd1BhZ2ViYXIgJiYgZW5hYmxlZG5ldyAmJiBoYXNQZXJtaXNzaW9uTmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YWRkX2NpcmNsZV9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hbmFnZXJjb2xzXCIgW21hdFRvb2x0aXBdPVwiJ0N1c3RvbWl6YXJUYWJlbGEnIHwgdHJhbnNsYXRlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIChjbGljayk9XCJjdXN0b21pemVUYWJsZSgpXCIgKm5nSWY9XCJlbmFibGVkY29sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5zZXR0aW5nczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJncmlkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbW9kIG9mIGRhdGE7IGxldCBqID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7ICdkZWZhdWx0LWNvbG9yJzogIWVuYWJsZWRjbGFzc2ljb25zLCAnc2VsZWN0ZWQtcm93JzogaiA9PSBvdmVySW5kZXggfVwiIFtjbGFzc109XCJtb2QuQ2xhc3NcIiAoY2xpY2spPVwiYWNjZXNzKG1vZClcIiAobW91c2VlbnRlcik9XCJvdmVySW5kZXggPSBqXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImVuYWJsZWRjbGFzc2ljb25zICYmIG1vZD8uSWNvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgaWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiBbbWF0VG9vbHRpcF09XCJpY29uLlRvb2x0aXAgfCB0cmFuc2xhdGVcIiAqbmdJZj1cImljb24uTmFtZSA9PSBtb2QuSWNvblwiIFtuZ0NsYXNzXT1cInsgJ2ljb25lLXNlY3VuZGFyaW8nOiBpY29uLlByaW5jaXBhbCA9PSBmYWxzZSB9XCI+e3tpY29uLkljb259fTwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVuYXNJdGVuczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RbY29sXSA9PSBudWxsIHx8IG1vZFtjb2xdID09IHVuZGVmaW5lZFwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVuYXNUeXBlW2ldXCIgKm5nSWY9XCJtb2RbY29sXSAhPSBudWxsICYmIG1vZFtjb2xdICE9IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbbmdDbGFzc109XCJ7ICd0ZC1leHBhbnNpdmVsJzogbW9kW2NvbF0ubGVuZ3RoID4gbGltaXRjaGFyYWN0ZXJzICYmIGVuYWJsZWRleHBhbmQgPT0gdHJ1ZX1cIiAqbmdJZj1cIm1vZFtjb2xdICE9PSB0cnVlICYmIG1vZFtjb2xdICE9PSBmYWxzZSAmJiBtb2RbY29sXSAhPT0gMCAmJiBtb2RbY29sXSAhPT0gJzAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbbmdDbGFzc109XCJ7J2xhYmVsLWV4cGFuc2l2ZWwnOiBlbmFibGVkZXhwYW5kID09IHRydWUgJiYgbW9kW2NvbF0ubGVuZ3RoID4gbGltaXRjaGFyYWN0ZXJzLCAnbGFiZWwtZXhwYW5kaWRhJzogZW5hYmxlZGV4cGFuZCAmJiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiAqbmdJZj1cImNvbHVuYXNIdG1sW2ldID09PSB0cnVlXCIgW2lubmVySFRNTF09XCIobW9kW2NvbF0gfCB0cmFuc2xhdGU6Y29sdW5hc1RyYW5zbGF0ZVtpXSkgfHwgJycgXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYnJlYWstd29yZFwiIFtuZ0NsYXNzXT1cInsnbGFiZWwtZXhwYW5zaXZlbCc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMsICdsYWJlbC1leHBhbmRpZGEnOiBlbmFibGVkZXhwYW5kID09IHRydWUgJiYgY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tqXVtpXSB9XCIgKm5nSWY9XCJjb2x1bmFzSHRtbFtpXSA9PT0gZmFsc2VcIj57eyAobW9kW2NvbF0gfCB0cmFuc2xhdGU6Y29sdW5hc0h0bWxbaV0pIHx8ICcnIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnNcIiBbbmdDbGFzc109XCJ7J21vc3RyYXItbWFpcy1leHBhbmRpZG8nOiBlbmFibGVkZXhwYW5kID09IHRydWUgJiYgY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tqXVtpXSB9XCIgY2xhc3M9XCJtb3N0cmFyLW1haXNcIiAoY2xpY2spPVwibW9zdHJhck1haXMoaixpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsnaWNvbmUtZXhwYW5kaWRvJzogZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIGNvbHVuYXNJdGVuc0V4cGFuZGlkb3Nbal1baV0gfVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJpID09IDAgJiYgbW9kLkJhZGdlICE9IG51bGwgJiYgbW9kLkJhZGdlICE9IHVuZGVmaW5lZFwiPnt7IG1vZC5CYWRnZSB8IHRyYW5zbGF0ZTpjb2x1bmFzVHJhbnNsYXRlW2ldIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibW9kW2NvbF0gPT09IHRydWVcIj48bWF0LWljb24+Y2hlY2tfYm94PC9tYXQtaWNvbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09PSBmYWxzZVwiPjxtYXQtaWNvbj5jaGVja19ib3hfb3V0bGluZV9ibGFuazwvbWF0LWljb24+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RbY29sXSA9PT0gMCB8fCBtb2RbY29sXSA9PT0gJzAnXCI+MDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbaW5uZXJIVE1MXT1cIm1vZFtjb2xdIHwgZGF0ZTonc2hvcnREYXRlJ1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCI+e3sgbW9kW2NvbF0gfCBkYXRlOidzaG9ydERhdGUnIH19IHt7IG1vZFtjb2xdIHwgZGF0ZTonbWVkaXVtVGltZScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRoeWVhcidcIiBbaW5uZXJIVE1MXT1cIm1vZFtjb2xdIHwgZGF0ZTonTU0veXl5eSdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ24wJ1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuMC0wJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjInXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4yLTInIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduNCdcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjQtNCcgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ242J1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuNi02JyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjknXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS45LTknIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduMTInXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4xMi0xMicgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrJ1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kW2NvbF0gIT0gbnVsbCAmJiAobW9kW2NvbF0gPT09IHRydWUgfHwgbW9kW2NvbF0gPT0gMSB8fCBtb2RbY29sXS50b0xvd2VyQ2FzZSgpID09ICdzJyk7IHRoZW4gY2hlY2tlZDsgZWxzZSB1bmNoZWNrZWRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoZWNrZWQ+PG1hdC1pY29uPmNoZWNrX2JveDwvbWF0LWljb24+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3VuY2hlY2tlZD48bWF0LWljb24+Y2hlY2tfYm94X291dGxpbmVfYmxhbms8L21hdC1pY29uPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZWRjbGlja2FjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZC1hY3Rpb25zIGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlbmFibGVkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2FjY2Vzc2ljb24gfHwgJ2Fycm93X2ZvcndhcmQnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW5hYmxlZGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFjdGlvbnNcIiAqbmdJZj1cIih0ZW1wbGF0ZXVybCAhPSAnJykgfHwgKGJ1dHRvbnMgIT0gbnVsbCAmJiBidXR0b25zLmxlbmd0aCA+IDApIHx8IChtb2QuRG93bmxvYWQgIT0gbnVsbCkgfHwgZW5hYmxlZGRldGFpbCB8fCAobW9kPy5JbmZvICE9IG51bGwpIHx8IGVuYWJsZWR2aWV3IHx8ICgoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8ICgoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG1hdC1pY29uLWJ1dHRvbiBocmVmPVwie3sgdGVtcGxhdGV1cmwucmVwbGFjZSgne2lkfScsIG1vZC5JZCkgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiBbbWF0VG9vbHRpcF09XCInQWJyaXInIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJ0ZW1wbGF0ZXVybCAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBiIG9mIGJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiYi5sYWJlbCB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJiLm1vZGFsQ29tcG9uZW50ICE9IG51bGwgPyBvcGVuQ3VzdG9tTW9kYWwoYi5tb2RhbENvbXBvbmVudCwgYi53aWR0aE1vZGFsQ29tcG9uZW50LCBtb2QpIDogYi5hcGkgIT0gbnVsbCA/IGV2ZW50QnV0dG9uKG1vZCwgYi5hcGksIGIubWV0aG9kLCBiLmNvbmZpcm0pIDogbmF2aWdhdGVUbyhiLm5hdmlnYXRlVG8sIGIucGFzc0lkLCBtb2QuSWQpXCIgKm5nSWY9XCJiLnNob3dPbmx5Q2xhc3MgPT0gbnVsbCB8fCBiLnNob3dPbmx5Q2xhc3MgPT0gbW9kLkNsYXNzXCIgW2Rpc2FibGVkXT1cImIuZGlzYWJsZWRGaWVsZCAmJiBtb2RbYi5kaXNhYmxlZEZpZWxkXSA9PT0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tiLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJkb3dubG9hZChtb2QuRG93bmxvYWQpXCIgKm5nSWY9XCJtb2QuRG93bmxvYWQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiJ0RldGFsaGUnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRldGFpbChtb2QpXCIgKm5nSWY9XCJlbmFibGVkZGV0YWlsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmxpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInSW5mb3JtYWNhbycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiaW5mbyhtb2Q/LkluZm8pXCIgKm5nSWY9XCJtb2Q/LkluZm8gIT0gbnVsbFwiIFtkaXNhYmxlZF09XCJtb2Q/LkluZm8gPT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ1Zpc3VhbGl6YXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInZpZXcobW9kKVwiICpuZ0lmPVwiZW5hYmxlZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwXT1cIidFZGl0YXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVkaXQobW9kKVwiICpuZ0lmPVwiKGRpc2FibGVkY29sID09ICcnIHx8IG1vZFtkaXNhYmxlZGNvbF0gPT09IHRydWUpICYmIGVuYWJsZWRlZGl0ICYmIGhhc1Blcm1pc3Npb25FZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiJ0V4Y2x1aXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRlbGV0ZShtb2QpXCIgKm5nSWY9XCIoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlICYmICFtb2QuSGlkZURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjgwMFwiIFttYXRUb29sdGlwXT1cIidBY2Vzc2FyJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJlZGl0KG1vZClcIiAqbmdJZj1cIigoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXQpIHx8IGVuYWJsZWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJibGFuay10YWJsZVwiICpuZ0lmPVwiZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID09IDBcIj57e1wiTmVuaHVtSXRlbUVuY29udHJhZG9cIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG5cclxuICAgICAgICA8aW5mby1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZGVuXT1cIiFwYWdlZCB8fCAoZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID09IDApXCIgW3NpemVdPVwic2l6ZVwiIChjaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCIgPjwvaW5mby1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYmxvY2tcIiAqbmdJZj1cImxvYWRpbmdcIj48L2Rpdj5cclxuPGluZm8tYWxlcnQgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCI+PC9pbmZvLWFsZXJ0PiIsIjxpbmZvLW1vZGFsIChvbnNhdmUpPVwic2F2ZSgpXCIgbW9kYWx0aXRsZT1cIkN1c3RvbWl6YXJUYWJlbGFcIiA+XHJcbiAgICA8aW5mby1tZXNzYWdlIGNvbG9yPVwid2FybmluZ1wiIGNsYXNzPVwibWluXCI+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+PG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5pbmZvPC9tYXQtaWNvbj57eyAnQ3VzdG9taXphclRhYmVsYURlc2NyaWNhbzEnIHwgdHJhbnNsYXRlIH19PC9saT5cclxuICAgICAgICAgICAgPGxpPjxtYXQtaWNvbiBjbGFzcz1cImljb24tb3V0XCI+ZGFuZ2Vyb3VzPC9tYXQtaWNvbj57eyAnQ3VzdG9taXphclRhYmVsYURlc2NyaWNhbzInIHwgdHJhbnNsYXRlIH19PC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIFxyXG4gICAgPC9pbmZvLW1lc3NhZ2U+XHJcbiAgICBcclxuICAgIDx1bCBjbGFzcz1cImxpc3RhZ2VtXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2x1bmFzXCIgPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJpdGVtLkdyaWRBdHVhbFwiID5cclxuICAgICAgICAgICAgICAgIDxpbmZvLWNoZWNrYm94IFsobmdNb2RlbCldPVwiaXRlbS5FeGliaXJcIiBbcGxhY2Vob2xkZXJdPVwiaXRlbS5Ob21lXCIgW25hbWVdPVwiJ2Noa2NvbHVuYScgKyBpdGVtLk5vbWVcIiA+PC9pbmZvLWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC91bD5cclxuPC9pbmZvLW1vZGFsPiJdfQ==
|
|
1962
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvZ3JpZC9ncmlkLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUwsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFB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LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29udGVudENoaWxkcmVuLCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIEluamVjdCwgSG9zdExpc3RlbmVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dNb2RhbCB9IGZyb20gXCIuLi8uLi9sYXlvdXRzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0J1dHRvbnMgfSBmcm9tIFwiLi4vLi4vZW51bS9kaWFsb2ctYnV0dG9ucy5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gXCIuLi8uLi9lbnVtL21vZGFsLWFjdGlvbi5lbnVtXCI7XHJcbmltcG9ydCB7IEluZm9QYWdlQWN0aW9uIH0gZnJvbSBcIi4uLy4uL2VudW0vcGFnZS1hY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQgeyBJbmZvUGFnZWJhckJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL3BhZ2ViYXItYnV0dG9ucy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbmZvR3JpZEJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVsL2dyaWQtYnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEluZm9MYXN0U2VhcmNoTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvbGFzdC1zZWFyY2gubW9kZWxcIjtcclxuaW1wb3J0IHsgSW5mb01ldGhvZEdyaWRCdXR0b25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbC9tZXRob2QtZ3JpZC1idXR0b24ubW9kZWxcIjtcclxuaW1wb3J0IHsgTmdNb2RlbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWdyaWQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydncmlkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtJbmZvRm9ybVByb3BNb2RlbF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBwYWdldGl0bGUgPSAnJztcclxuICAgIEBJbnB1dCgpIHByZWZpeHRpdGxlID0gJyc7XHJcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgQElucHV0KCkgcGFnZWJhcmJ1dHRvbnM6IEluZm9QYWdlYmFyQnV0dG9uTW9kZWxbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgZnVsbGFyZWEgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBhcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBtZXRob2Q6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBmb3JtOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlciA9IDgwMDtcclxuICAgIEBJbnB1dCgpIHBhcmVudDogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGFwaWRvd25sb2FkOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kZG93bmxvYWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgQElucHV0KCkgYmFja3VybCA9ICcnO1xyXG4gICAgQElucHV0KCkgbmV3dXJsID0gJyc7XHJcbiAgICBASW5wdXQoKSBuZXdsYWJlbCA9ICdOb3ZvJztcclxuICAgIEBJbnB1dCgpIGVkaXR1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHZpZXd1cmwgPSAnJztcclxuICAgIEBJbnB1dCgpIHRlbXBsYXRldXJsID0gJyc7XHJcblxyXG4gICAgQElucHV0KCkgcGFnZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNpemUgPSAxNTtcclxuICAgIEBJbnB1dCgpIGF1dG9yZWZyZXNoID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBlbmFibGVkY29scyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkbmV3ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRlZGl0ID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRkZWxldGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZHZpZXcgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZW5hYmxlZGNhbmNlbHNlYXJjaCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZGV0YWlsID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xhc3NpY29ucyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkY2xpY2thY2Nlc3MgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGVuYWJsZWRjbGlja2V2ZW50ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBlbmFibGVkZXhwYW5kID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgc2VhcmNob3BlbmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZWFyY2hvbmx5b25lYnV0dG9uID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlc2VhcmNobGFzdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc3RhdGljdGl0bGUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkY29sID0gJyc7XHJcbiAgICBASW5wdXQoKSBhY2Nlc3NpY29uID0gJ2Fycm93X2ZvcndhcmQnO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvYWRvbmluaXQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZGF0YTogYW55W107XHJcbiAgICBASW5wdXQoKSBzZWFyY2htb2RlbDogYW55ID0gbnVsbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25iZWZvcmVzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25sb2FkY29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25jbG9zZW1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9ubmV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIG9uZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBvbnZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgb25kZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY3VzdG9tZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIGR5bmFtaWNjb2xzOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KCkgYnV0dG9uczogSW5mb0dyaWRCdXR0b25Nb2RlbFtdID0gW107XHJcbiAgICBASW5wdXQoKSBzZWFyY2hidXR0b25zOiBJbmZvTWV0aG9kR3JpZEJ1dHRvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKSBzaG93bWVzc2FnZWVycm9yID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkZWZhdWx0bmV3b2JqZWN0OiBhbnkgPSBudWxsO1xyXG4gICAgXHJcbiAgICBAQ29udGVudENoaWxkcmVuKE5nTW9kZWwpIGZvcm1Nb2RlbDogUXVlcnlMaXN0PE5nTW9kZWw+O1xyXG4gICAgQFZpZXdDaGlsZChOZ0Zvcm0sIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtU2VhcmNoOiBOZ0Zvcm07XHJcbiAgICBcclxuICAgIG1lc3NhZ2VzOiBTdHJpbmdbXSA9IFtdO1xyXG4gICAgcmVzdWx0VGl0bGUgPSAnJztcclxuICAgIGVuYWJsZWRTZWFyY2ggPSBmYWxzZTtcclxuICAgIHNlYXJjaE1vZGVsUmVzZXQ6IGFueSA9IG51bGw7XHJcbiAgICBkaXNhYmxlZENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBvdmVySW5kZXg6IG51bWJlciA9IC0xO1xyXG4gICAgb3Zlckxhc3RJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgICBvbmFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHNob3dQYWdlYmFyID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uTmV3ID0gZmFsc2U7XHJcbiAgICBoYXNQZXJtaXNzaW9uRWRpdCA9IGZhbHNlO1xyXG4gICAgaGFzUGVybWlzc2lvbkRlbGV0ZSA9IGZhbHNlO1xyXG5cclxuICAgIHRhYmxlSGVpZ2h0ID0gMDtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHBhZ2ViYXJUaXRsZSA9ICcnO1xyXG4gICAgaWNvbnM6IGFueVtdID0gW107XHJcbiAgICBjb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgIGNvbHVuYXNIZWFkZXJzID0gW107XHJcbiAgICBjb2x1bmFzUGFkcmFvSGVhZGVycyA9IFtdO1xyXG4gICAgY29sdW5hc1R5cGUgPSBbXTtcclxuICAgIGNvbHVuYXNXaWR0aCA9IFtdO1xyXG4gICAgY29sdW5hc1RyYW5zbGF0ZSA9IFtdO1xyXG4gICAgY29sdW5hc0h0bWwgPSBbXTtcclxuICAgIGNvbHVuYXNJdGVuc0V4cGFuZGlkb3MgPSBbXTtcclxuICAgIGN1cnJlbnRVcmw6IHN0cmluZyA9IG51bGw7XHJcbiAgICB1cmw6IHN0cmluZyA9IG51bGw7XHJcbiAgICBjaGF2ZVN0b3JhZ2U6IHN0cmluZyA9ICdjb2xzJztcclxuICAgIGlkZW50aWZpY2Fkb3I6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsaW1pdGNoYXJhY3RlcnM6IG51bWJlciA9IDI1MDtcclxuICAgIGNhbGxUaW1lb3V0OiBhbnk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luYXRvcjogSW5mb1BhZ2luYXRvckNvbXBvbmVudDtcclxuICAgIEBPdXRwdXQoKSBwYXJlbnRJZFVybENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwYXJlbnRJZFVybFZhbHVlOiBudW1iZXIgPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYXJlbnRJZFVybCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRJZFVybFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwYXJlbnRJZFVybCh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMucGFyZW50SWRVcmxWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMucGFyZW50SWRVcmxDaGFuZ2UuZW1pdCh0aGlzLnBhcmVudElkVXJsVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9jb2xzOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29scygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29scztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY29scyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2NvbHMgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2c6IEluZm9EaWFsb2dNb2RhbCwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX3BsYXRmb3JtOiBJbmZvUGxhdGZvcm1Nb2RlbCxcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBtb2RhbDogTWF0RGlhbG9nLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3Byb3A6IEluZm9Gb3JtUHJvcE1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2RhdGFBY2Nlc3NTZXJ2aWNlOiBJbmZvRGF0YVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogSW5mb1RyYW5zbGF0ZVNlcnZpY2UsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbGFzdFNlYXJjaDogSW5mb0xhc3RTZWFyY2hNb2RlbCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgICAgIHRoaXMudXJsID0gKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGFbJ1VSTCddIHx8IHRoaXMuX3JvdXRlci51cmwpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlYmFyVGl0bGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2QgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gJ1NlYXJjaCc7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1vZGVsUmVzZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGFyZW50ICE9IG51bGwgJiYgKHRoaXMubWV0aG9kID09IG51bGwgfHwgdGhpcy5tZXRob2QgPT0gJycpKVxyXG4gICAgICAgICAgICB0aGlzLm1ldGhvZCA9ICdHZXRCeVBhcmVudElkJztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVzZWFyY2hsYXN0ICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLl9sYXN0U2VhcmNoLnVybCkgPT0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFVybEdlbmVyaWNhKHRoaXMudXJsKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRTZWFyY2ggPSB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCAhPSBudWxsICYmIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5fbGFzdFNlYXJjaC5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hvcGVuZWQpXHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9yZWZyZXNoID4gMClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gbG9jYXRpb24uaHJlZjtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5hcGkgPSB0aGlzLmFwaTtcclxuICAgICAgICB0aGlzLl9wcm9wLm1vZGFsQ29tcG9uZW50ID0gdGhpcy5mb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmlkZW50aWZpY2Fkb3IgPSB0aGlzLmFwaSArICdfJyArIHRoaXMubWV0aG9kO1xyXG4gICAgICAgIHRoaXMuc2hvd1BhZ2ViYXIgPSB0aGlzLnBhZ2V0aXRsZSAhPSAnJyB8fCB0aGlzLnByZWZpeHRpdGxlICE9ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghdGhpcy5mdWxsYXJlYSAmJiB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXggPD0gMilcclxuICAgICAgICAgICAgdGhpcy5mdWxsYXJlYSA9IHRoaXMuc2hvd1BhZ2ViYXI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsICYmIHRoaXMuZm9ybU1vZGVsLmxlbmd0aCA+IDAgJiYgdGhpcy5mb3JtU2VhcmNoKVxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC50b0FycmF5KCkuZm9yRWFjaChtb2RlbCA9PiB0aGlzLmZvcm1TZWFyY2guYWRkQ29udHJvbChtb2RlbCkpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QgJiYgdGhpcy5wYWdlZCAmJiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy5fbGFzdFNlYXJjaC51cmwpID09IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRVcmxHZW5lcmljYSh0aGlzLnVybCkpXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gdGhpcy5fbGFzdFNlYXJjaC5pbmRleDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY2NvbHMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvbHVtbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2Fkb25pbml0KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5keW5hbWljY29scylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29scyA9IHIuZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9uKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hZG9uaW5pdClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRjbGlja2V2ZW50KVxyXG4gICAgICAgICAgICB0aGlzLmVuYWJsZWRjbGlja2FjY2VzcyA9IHRydWU7XHJcblxyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2FsbFRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbHVtbnMoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHMgPT0gJycpXHJcbiAgICAgICAgICAgIGFsZXJ0KCdOZW5odW1hIGNvbHVuYSBpbmZvcm1hZGEnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29scyAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbHVuYXNPY3VsdGFzID0gW107XHJcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGFkb3NTdG9yYWdlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYWRvc1N0b3JhZ2UuZmluZEluZGV4KGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikgPiAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW5hc09jdWx0YXMgPSBkYWRvc1N0b3JhZ2UuZmluZChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpLkNvbHVuYXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bmFzT2N1bHRhcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bmFzT2N1bHRhcyA9IGNvbHVuYXNPY3VsdGFzLmZpbHRlcihjID0+ICFjLkV4aWJpcikubWFwKGMgPT4gYy5Ob21lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzSGVhZGVycyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVuYXNQYWRyYW9IZWFkZXJzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzV2lkdGggPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bmFzVHJhbnNsYXRlID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0h0bWwgPSBbXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY29scy5zcGxpdCgnLCcpLmZvckVhY2gocmVnaXN0cm8gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGU6IGJvb2xlYW4gPSByZWdpc3Ryby5pbmRleE9mKCcjJykgPT0gLTE7XHJcbiAgICAgICAgICAgICAgICBsZXQgaHRtbDogYm9vbGVhbiA9IHJlZ2lzdHJvLmluZGV4T2YoJ0AnKSA9PSAtMTtcclxuICAgICAgICAgICAgICAgIHJlZ2lzdHJvID0gcmVnaXN0cm8ucmVwbGFjZSgvIy9nLCAnJykucmVwbGFjZSgvQC9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbjogc3RyaW5nID0gcmVnaXN0cm87XHJcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyOiBzdHJpbmcgPSByZWdpc3RybztcclxuICAgICAgICAgICAgICAgIGxldCB0eXBlOiBzdHJpbmcgPSAnJztcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5pbmRleE9mKCc6JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IHJlZ2lzdHJvLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gZGFkb3NbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gZGFkb3NbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5pbmRleE9mKCc9JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJ0cyA9IGhlYWRlci5zcGxpdCgnPScpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uID09IGhlYWRlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gcGFydHNbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IHBhcnRzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJ0c1sxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYXV4ID0gdHlwZSA9PSAnJyA/IGhlYWRlciA6IHR5cGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXV4LmluZGV4T2YoJyonKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlckluZm8gPSBhdXguc3BsaXQoJyonKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBoZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBoZWFkZXJJbmZvWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gaGVhZGVySW5mb1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHR5cGUgPSBoZWFkZXJJbmZvWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGhlYWRlckluZm9bMV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aC5pbmRleE9mKCclJykgPCAwICYmIHdpZHRoLmluZGV4T2YoJ3B4JykgPCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCArPSAncHgnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bmFzT2N1bHRhcy5pbmRleE9mKGhlYWRlcikgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzSXRlbnMucHVzaChjb2x1bW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc0hlYWRlcnMucHVzaChoZWFkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1R5cGUucHVzaCh0eXBlID09ICcnID8gJ2xhYmVsJyA6IHR5cGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1dpZHRoLnB1c2god2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1RyYW5zbGF0ZS5wdXNoKHRyYW5zbGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bmFzSHRtbC5wdXNoKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1BhZHJhb0hlYWRlcnMucHVzaChoZWFkZXIpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVuYXNJdGVucy5sZW5ndGggPT0gMSAmJiB0aGlzLmNvbHVuYXNXaWR0aC5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW5hc1dpZHRoWzBdID0gJzEwMCUnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRJdGVuc0V4cGFuZGlkb3MoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWRleHBhbmQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW5hc0l0ZW5zPy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgcm93LnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW5hc0l0ZW5zRXhwYW5kaWRvcy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhZ2ViYXJUaXRsZSgpIHtcclxuICAgICAgICBsZXQgYXV4ID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnByZWZpeHRpdGxlICE9ICcnKVxyXG4gICAgICAgICAgICBhdXggPSB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucHJlZml4dGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJylcclxuICAgICAgICAgICAgYXV4ICs9ICh0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucmVzdWx0VGl0bGUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wYWdldGl0bGUgIT0gJycpXHJcbiAgICAgICAgICAgIGF1eCArPSAodGhpcy5yZXN1bHRUaXRsZSAhPSAnJyB8fCB0aGlzLnByZWZpeHRpdGxlICE9ICcnID8gJyAvICcgOiAnJykgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMucGFnZXRpdGxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlYmFyVGl0bGUgPSBhdXg7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGVUbyh1cmw6IHN0cmluZywgcGFzc0lkOiBib29sZWFuLCBpZD86IHN0cmluZykge1xyXG5cclxuICAgICAgICBpZiAocGFzc0lkKSB7XHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZihcIjppZFwiKSA+IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsLnJlcGxhY2UoJzppZCcsIGlkKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt1cmwsIGlkXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkN1c3RvbU1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnksIHdpZHRoOiBOdW1iZXIsIG1vZGVsOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZENsaWNrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uTm9uZSwgbW9kZWwpO1xyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50LCB3aWR0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YSgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwaSA9PSBudWxsIHx8IHRoaXMuYXBpID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWFyY2goKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wYWdlZClcclxuICAgICAgICAgICAgdGhpcy5nZXRQYWdlZCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmICh0aGlzLnBhcmVudCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmdldEFsbCgpO1xyXG5cclxuICAgICAgICBlbHNlIHRoaXMuZ2V0QnlQYXJlbnRJZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbCgpOiBhbnkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2htb2RlbCA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIpKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLl9kYXRhQWNjZXNzU2VydmljZVxyXG4gICAgICAgICAgICAucG9zdCh0aGlzLmFwaSwgdGhpcy5zZWFyY2htb2RlbCwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ocikpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhZ2VkKCk6IGFueSB7XHJcblxyXG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcmVudCA9PSBudWxsID8gXCJcIiA6IFwiaWQ9XCIgKyB0aGlzLnBhcmVudCArIFwiJlwiO1xyXG4gICAgICAgIHBhcmFtcyArPSAnaW5kZXg9JyArIHRoaXMucGFnaW5hdG9yLmluZGV4ICsgJyZzaXplPScgKyB0aGlzLnNpemU7XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Nlc3NTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbXMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgdHJ1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlYXJjaCgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMub25iZWZvcmVzZWFyY2guZW1pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMucGFnZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2htb2RlbC5JbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaG1vZGVsLlNpemUgPSB0aGlzLnNpemU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZGF0YUluaWNpYWwgPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUluaWNpYWxcIl07XHJcbiAgICAgICAgdmFyIGRhdGFGaW5hbCA9IHRoaXMuc2VhcmNobW9kZWxbXCJEYXRhRmluYWxcIl07XHJcbiAgICAgICAgaWYgKGRhdGFJbmljaWFsICE9IG51bGwgJiYgZGF0YUZpbmFsICE9IG51bGwgJiYgbmV3IERhdGUoZGF0YUluaWNpYWwpID4gbmV3IERhdGUoZGF0YUZpbmFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goJ0RhdGFJbmljaWFsTWFpb3JGaW5hbCcpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVMb2FkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBkYXRhSW5pY2lvID0gdGhpcy5zZWFyY2htb2RlbFtcIkRhdGFJbmljaW9cIl07XHJcbiAgICAgICAgdmFyIGRhdGFGaW0gPSB0aGlzLnNlYXJjaG1vZGVsW1wiRGF0YUZpbVwiXTtcclxuICAgICAgICBpZiAoZGF0YUluaWNpbyAhPSBudWxsICYmIGRhdGFGaW0gIT0gbnVsbCAmJiBuZXcgRGF0ZShkYXRhSW5pY2lvKSA+IG5ldyBEYXRlKGRhdGFGaW0pKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCgnRGF0YUluaWNpb01haW9yRmltJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUxvYWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLnBvc3QodGhpcy5hcGksIHRoaXMuc2VhcmNobW9kZWwsIHRoaXMubWV0aG9kKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5nZXREYXRhUmV0dXJuKHIsIHRoaXMucGFnZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeVBhcmVudElkKCk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QsICdpZD0nICsgdGhpcy5wYXJlbnQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB0aGlzLmdldERhdGFSZXR1cm4ociwgZmFsc2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhUmV0dXJuKHJlc3VsdDogYW55LCByZWZyZXNoUGFnaW5hdG9yOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZXNlYXJjaGxhc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC51cmwgPSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VXJsR2VuZXJpY2EodGhpcy51cmwpO1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLmVuYWJsZWRTZWFyY2ggPSB0aGlzLmVuYWJsZWRTZWFyY2g7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2gubW9kZWwgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNlYXJjaG1vZGVsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2VkKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaC5pbmRleCA9IHRoaXMucGFnaW5hdG9yLmluZGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdC5kYXRhO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRpY3RpdGxlICYmIHJlc3VsdC5uYW1lICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFRpdGxlID0gdGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZShyZXN1bHQubmFtZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmRlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVzdWx0LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXJlbnRJZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRJZFVybCA9IHJlc3VsdC5wYXJlbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZWZyZXNoUGFnaW5hdG9yKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucmVmcmVzaChyZXN1bHQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b3JlZnJlc2ggPiAwICYmIHRoaXMuY3VycmVudFVybCA9PSBsb2NhdGlvbi5ocmVmKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jYWxsVGltZW91dCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZ2V0RGF0YSgpOyB9LCB0aGlzLmF1dG9yZWZyZXNoICogMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZmlsbEljb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SXRlbnNFeHBhbmRpZG9zKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBpZih0aGlzLnNob3dtZXNzYWdlZXJyb3IpIHRoaXMubWVzc2FnZXMgPSByZXN1bHQubWVzc2FnZXM7XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgIHRoaXMub25sb2FkY29tcGxldGUuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVBhZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IuaW5kZXggPSBpbmRleDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNobW9kZWwgIT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWFyY2goKTtcclxuXHJcbiAgICAgICAgZWxzZSB0aGlzLmdldFBhZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2MnLCBbJyRldmVudCddKVxyXG4gICAgY2FuY2VsU2VhcmNoKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zZWFyY2htb2RlbCwgdGhpcy5zZWFyY2hNb2RlbFJlc2V0KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaG9wZW5lZClcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVkU2VhcmNoID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMucGFnZWQpXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5pbnNlcnQnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLisnLCBbJyRldmVudCddKVxyXG4gICAgYWRkKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHRoaXMub3ZlckluZGV4ID0gLTE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5OZXcsIHRoaXMuZGVmYXVsdG5ld29iamVjdCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld3VybCA9PSBudWxsIHx8IHRoaXMubmV3dXJsID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXd1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsICs9ICcvbm92byc7XHJcbiAgICAgICAgICAgIHRoaXMubmV3dXJsID0gdGhpcy5uZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uZXd1cmwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbm5ldy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGV0YWlsKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5TZWFyY2gsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vc3RyYXJNYWlzKGxpbmhhLCBjb2x1bmEpIHtcclxuICAgICAgICB0aGlzLmNvbHVuYXNJdGVuc0V4cGFuZGlkb3NbbGluaGFdW2NvbHVuYV0gPSAhdGhpcy5jb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2xpbmhhXVtjb2x1bmFdIFxyXG4gICAgfVxyXG5cclxuICAgIGFjY2Vzcyhtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRDbGljayl7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2lmICh0aGlzLmVuYWJsZWRjbGlja2FjY2Vzcyl7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlZGNsaWNrZXZlbnQpXHJcbiAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBlbHNlIHRoaXMuZWRpdChtb2RlbCwgZmFsc2UpO1xyXG4gICAgICAgIC8vfVxyXG4gICAgfVxyXG5cclxuICAgIHZpZXcobW9kZWw6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRDbGljayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbmFjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMub3Zlckxhc3RJbmRleCA9IHRoaXMub3ZlckluZGV4O1xyXG4gICAgICAgIHRoaXMub3ZlckluZGV4ID0gLTE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9wLnNldChJbmZvUGFnZUFjdGlvbi5WaWV3LCBtb2RlbCk7XHJcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnVybDtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICB0aGlzLnZpZXd1cmwgPSB0aGlzLnZpZXd1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXQobW9kZWw6IGFueSwgZGlzYWJsZWRDbGljazogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSBkaXNhYmxlZENsaWNrO1xyXG4gICAgICAgIHRoaXMub25hY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSB0aGlzLm92ZXJJbmRleDtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9uRWRpdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLkVkaXQsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdHVybCA9PSBudWxsIHx8IHRoaXMuZWRpdHVybCA9PSAnJylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLnVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXR1cmwgPSB0aGlzLmVkaXR1cmwucmVwbGFjZSgnLy8nLCAnLycpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdGhpcy5lZGl0dXJsLCBtb2RlbC5JZF0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uZWRpdC5lbWl0KG1vZGVsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Byb3Auc2V0KEluZm9QYWdlQWN0aW9uLlZpZXcsIG1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXd1cmwgPT0gbnVsbCB8fCB0aGlzLnZpZXd1cmwgPT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy51cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXd1cmwgKz0gJy8nICsgbW9kZWwuSWQgKyAodGhpcy5lbmFibGVkY2xpY2thY2Nlc3MgPyAnJyA6ICcvdmlzdWFsaXphcicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3dXJsID0gdGhpcy52aWV3dXJsLnJlcGxhY2UoJy8vJywgJy8nKTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy52aWV3dXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIHRoaXMub252aWV3LmVtaXQobW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgZGVsZXRlKG1vZGVsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub25hY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSB0aGlzLm92ZXJJbmRleDtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG5cclxuICAgICAgICBpZih0aGlzLmN1c3RvbWRlbGV0ZS5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbWRlbGV0ZS5lbWl0KG1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLlllc09yTm8oJ01lbnNhZ2VtRXhjbHVpcicpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuYnV0dG9uID09IEluZm9EaWFsb2dCdXR0b25zLlllcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5kZWxldGUodGhpcy5hcGksIG1vZGVsLklkKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmRlbGV0ZS5lbWl0KGQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZC5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlTG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93bWVzc2FnZWVycm9yKSB0aGlzLm1lc3NhZ2VzID0gZC5tZXNzYWdlcztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSB0aGlzLm92ZXJMYXN0SW5kZXg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25hY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGN1c3RvbWl6ZVRhYmxlKCl7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uRWRpdCwgeyBcclxuICAgICAgICAgICAgSWRlbnRpZmljYWRvcjogdGhpcy5pZGVudGlmaWNhZG9yLCBcclxuICAgICAgICAgICAgQ29sdW5hczogdGhpcy5jb2x1bmFzUGFkcmFvSGVhZGVycywgXHJcbiAgICAgICAgICAgIENoYXZlOiB0aGlzLmNoYXZlU3RvcmFnZSBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLm1vZGFsLm9wZW4oSW5mb0dyaWRNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9wcm9wLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgaWYgKHIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGlmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5TYXZlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wuZicsIFsnJGV2ZW50J10pXHJcbiAgICBmaW5kKGU6IEV2ZW50ID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaG1vZGVsID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlZFNlYXJjaCA9ICF0aGlzLmVuYWJsZWRTZWFyY2g7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWRTZWFyY2gpe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwcmltZWlyb0NhbXBvOiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdyaWQtc2VhcmNoIGluZm8taW5wdXQgaW5wdXQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJpbWVpcm9DYW1wbylcclxuICAgICAgICAgICAgICAgICAgICBwcmltZWlyb0NhbXBvLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEljb25zKCkge1xyXG4gICAgICAgIHRoaXMuaWNvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKHJldCA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHJldFsnSWNvbiddO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignfCcpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXRvcm5vID0gaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnfCcpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcChpY29uZSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWNvbmUuaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYWRvcyA9IGljb25lLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBOYW1lOiBpdGVtLCBJY29uOiBkYWRvc1swXSwgVG9vbHRpcDogZGFkb3NbMV0sIFByaW5jaXBhbDogdHJ1ZSB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB7IE5hbWU6IGl0ZW0sIEljb246IGljb25lLCBUb29sdGlwOiAnJywgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihhID0+IGEuSWNvbiAhPSBudWxsICYmIGEuSWNvbiAhPSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHJldG9ybm8uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pY29ucy5maW5kKGEgPT4gYS5OYW1lID09IGVsZW1lbnQuTmFtZSAmJiBhLkljb24gPT0gZWxlbWVudC5JY29uKSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5QcmluY2lwYWwgPSBpbmRleCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogYW55ID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZignOicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZGFkb3MgPSBpdGVtLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogZGFkb3NbMF0sIFRvb2x0aXA6IGRhZG9zWzFdLCBQcmluY2lwYWw6IHRydWUgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgZWxlbWVudCA9IHsgTmFtZTogaXRlbSwgSWNvbjogaXRlbSwgVG9vbHRpcDogXCJcIiwgUHJpbmNpcGFsOiB0cnVlIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaWNvbnMuZmluZChhID0+IGEuTmFtZSA9PSBlbGVtZW50Lk5hbWUpID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pY29ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5mbyh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZy5hbGVydCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFjaygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5iYWNrdXJsICsgKHRoaXMucGFyZW50SWRVcmwgPT0gbnVsbCA/IFwiXCIgOiBcIi9cIiArIHRoaXMucGFyZW50SWRVcmwpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKG1vZGFsQ29tcG9uZW50OiBhbnkgPSB0aGlzLmZvcm0sIHdpZHRoOiBOdW1iZXIgPSB0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5Ob25lO1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5tb2RhbC5vcGVuKG1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX3Byb3AsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoICsgJ3B4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbmNsb3NlbW9kYWwuZW1pdChyKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gdGhpcy5vdmVyTGFzdEluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJMYXN0SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgdGhpcy5vbmFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICByZWYuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTG9hZCgpIHtcclxuICAgICAgICB0aGlzLnNldFBhZ2ViYXJUaXRsZSgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb24oKSB7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uTmV3ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICduZXcnKTtcclxuICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb25FZGl0ID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdlZGl0Jyk7XHJcbiAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uRGVsZXRlID0gdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24odGhpcy51cmwsICdyZW1vdmUnKTtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWQoYXJxdWl2b0lkOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlkb3dubG9hZCA9PSBudWxsKVxyXG4gICAgICAgICAgICBhbGVydCgnQVBJIERvd25sb2FkIGVzdMOhIG51bGwnKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9kYXRhQWNjZXNzU2VydmljZS5nZXQodGhpcy5hcGlkb3dubG9hZCwgKHRoaXMubWV0aG9kZG93bmxvYWQgIT0gbnVsbCA/IHRoaXMubWV0aG9kZG93bmxvYWQgOiAnR2V0JyksIFwiaWQ9XCIgKyBhcnF1aXZvSWQpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHIubWVzc2FnZXM7XHJcblxyXG4gICAgICAgICAgICBpZiAoci5zdWNjZXNzICYmIHIuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gd2luZG93LmF0b2Ioci5kYXRhLkNvbnRldWRvKTtcclxuICAgICAgICAgICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5TGVuKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmluYXJ5TGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgYnl0ZXNbaV0gPSBhc2NpaTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRBOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSByLmRhdGEuTm9tZTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudEEpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnRCdXR0b24obW9kZWw6IGFueSwgYXBpOiBhbnksIG1ldGhvZDogc3RyaW5nLCBjb25maXJtOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1xyXG4gICAgICAgICAgICAgICAgLlllc09yTm8oJ01lbnNhZ2VtQ29uZmlybWFyJylcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0LmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YUFjY2Vzc1NlcnZpY2UucG9zdChhcGksIG1vZGVsLCBtZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2hvd21lc3NhZ2VlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gci5tZXNzYWdlcztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dEVkaXQoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm92ZXJJbmRleCA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLmVkaXQodGhpcy5kYXRhW3RoaXMub3ZlckluZGV4XSwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZGVsZXRlJywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0RGVsZXRlKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3ZlckluZGV4ID4gLTEpXHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlKHRoaXMuZGF0YVt0aGlzLm92ZXJJbmRleF0pO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dEZpcnN0KGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbmQnLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXRMYXN0KGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleCA9IHRoaXMucGFnaW5hdG9yLm51bWJlckl0ZW5zUGFnZSAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5hcnJvd3VwJywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0TmF2aWdhdGVEb3duKGU6IEtleWJvYXJkRXZlbnQpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uYWN0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLm92ZXJJbmRleC0tO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vdmVySW5kZXggPCAwKVxyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wcmV2aW91cygpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlckluZGV4ID0gciA9PSBudWxsID8gMCA6IChyLm51bWJlckl0ZW5zUGFnZSAtIDEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBzaG9ydGN1dE5hdmlnYXRlVXAoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMub3ZlckluZGV4Kys7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm92ZXJJbmRleCA+PSB0aGlzLnBhZ2luYXRvci5udW1iZXJJdGVuc1BhZ2UpXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLm5leHQoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IHIgPT0gbnVsbCA/ICh0aGlzLnBhZ2luYXRvci5udW1iZXJJdGVuc1BhZ2UgLSAxKSA6IDA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24ucGFnZWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5hcnJvd2xlZnQnLCBbJyRldmVudCddKVxyXG4gICAgc2hvcnRjdXRQYWdlUHJldmlvdXMoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnByZXZpb3VzKCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAociAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVySW5kZXggPSAtMTtcclxuICAgICAgICB9KTs7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5wYWdldXAnLCBbJyRldmVudCddKVxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcclxuICAgIHNob3J0Y3V0UGFnZU5leHQoZTogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKHRoaXMub25hY3Rpb24pXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLm5leHQoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJJbmRleCA9IC0xO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC5tb2RhbC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW0luZm9Gb3JtUHJvcE1vZGVsXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0dyaWRNb2RhbENvbXBvbmVudCB7XHJcblxyXG4gICAgaWRlbnRpZmljYWRvcjogc3RyaW5nO1xyXG4gICAgY2hhdmVTdG9yYWdlOiBzdHJpbmc7XHJcbiAgICBjb2x1bmFzOiBhbnkgPSBbXTtcclxuICAgIGRhZG9zU3RvcmFnZTogYW55ID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIF9wcm9wOiBJbmZvRm9ybVByb3BNb2RlbCwgcHJpdmF0ZSBfcmVmOiBNYXREaWFsb2dSZWY8SW5mb0dyaWRNb2RhbENvbXBvbmVudD4sIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2cpe1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCl7XHJcbiAgICAgICAgdGhpcy5pZGVudGlmaWNhZG9yID0gdGhpcy5fcHJvcC5kYXRhLklkZW50aWZpY2Fkb3I7XHJcbiAgICAgICAgdGhpcy5jaGF2ZVN0b3JhZ2UgPSB0aGlzLl9wcm9wLmRhdGEuQ2hhdmU7XHJcblxyXG4gICAgICAgIGxldCBjb2x1bmFzR3JpZCA9IHRoaXMuX3Byb3AuZGF0YS5Db2x1bmFzLm1hcChjID0+IHsgcmV0dXJuIHsgTm9tZTogYywgRXhpYmlyOiB0cnVlLCBHcmlkQXR1YWw6IHRydWUgfTsgfSk7XHJcblxyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkgPT0gbnVsbClcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UsIEpTT04uc3RyaW5naWZ5KFtdKSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGFkb3NTdG9yYWdlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmNoYXZlU3RvcmFnZSkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kYWRvc1N0b3JhZ2UuZmluZEluZGV4KGMgPT4gYy5JZGVudGlmaWNhZG9yID09IHRoaXMuaWRlbnRpZmljYWRvcikgPCAwKVxyXG4gICAgICAgICAgICB0aGlzLmRhZG9zU3RvcmFnZS5wdXNoKHsgSWRlbnRpZmljYWRvcjogdGhpcy5pZGVudGlmaWNhZG9yLCBDb2x1bmFzOiBjb2x1bmFzR3JpZCB9KTtcclxuXHJcbiAgICAgICAgbGV0IGNvbHVuYXNHZXJhbCA9IHRoaXMuZGFkb3NTdG9yYWdlLmZpbmQoYyA9PiBjLklkZW50aWZpY2Fkb3IgPT0gdGhpcy5pZGVudGlmaWNhZG9yKS5Db2x1bmFzO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vQWRpY2lvbmEgcG9zc8OtdmVpcyBub3ZhcyBjb2x1bmFzXHJcbiAgICAgICAgY29sdW5hc0dyaWQuZmlsdGVyKGcgPT4gY29sdW5hc0dlcmFsLm1hcChjID0+IGMuTm9tZSkuaW5kZXhPZihnLk5vbWUpIDwgMCkuZm9yRWFjaChub3ZhQ29sdW5hID0+IHtcclxuICAgICAgICAgICAgY29sdW5hc0dlcmFsLnB1c2gobm92YUNvbHVuYSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vRXhpYmUgYXBlbmFzIGFzIGNvbHVuYXMgcHJlc2VudGVzIG5vIGdyaWQgYXR1YWxcclxuICAgICAgICB0aGlzLmNvbHVuYXMgPSBjb2x1bmFzR2VyYWwubWFwKGMgPT4gKHsgLi4uYywgR3JpZEF0dWFsOiBjb2x1bmFzR3JpZC5maW5kSW5kZXgoZyA9PiBnLk5vbWUgPT0gYy5Ob21lKSA+IC0xIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCl7XHJcbiAgICAgICAgdGhpcy5kYWRvc1N0b3JhZ2UuZmluZChjID0+IGMuSWRlbnRpZmljYWRvciA9PSB0aGlzLmlkZW50aWZpY2Fkb3IpLkNvbHVuYXMgPSB0aGlzLmNvbHVuYXM7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5jaGF2ZVN0b3JhZ2UsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGFkb3NTdG9yYWdlKSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fcHJvcC5tb2RhbEFjdGlvbiA9IEluZm9Nb2RhbEFjdGlvbi5TYXZlO1xyXG4gICAgICAgIHRoaXMuX3JlZi5jbG9zZSh0aGlzLl9wcm9wKTtcclxuICAgIH1cclxufSIsIjxpbmZvLXBhZ2ViYXIgKm5nSWY9XCJzaG93UGFnZWJhclwiIGljb249XCJ3b3JrXCIgW3BhZ2V0aXRsZV09XCJwYWdlYmFyVGl0bGVcIiBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJiYWNrdXJsICE9IG51bGwgJiYgYmFja3VybCAhPSAnJ1wiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPmNoZXZyb25fbGVmdDwvbWF0LWljb24+e3tcIlZvbHRhclwiIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2YgcGFnZWJhcmJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJiLm1vZGFsID09IG51bGwgPyBuYXZpZ2F0ZVRvKGIudXJsLCBmYWxzZSwgbnVsbCkgOiBvcGVuQ3VzdG9tTW9kYWwoYi5tb2RhbCwgYi5tb2RhbHdpZHRoLCBudWxsKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJiLmljb24gIT0gJ2NoZXZyb25fcmlnaHQnXCIgY2xhc3M9XCJmcy0yMFwiPnt7IGIuaWNvbiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIHt7IGIubGFiZWwgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzZWFyY2htb2RlbCAhPSBudWxsICYmICFlbmFibGVkU2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbmQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoPC9tYXQtaWNvbj4ge3sgXCJQZXNxdWlzYXJcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2VhcmNobW9kZWwgIT0gbnVsbCAmJiBlbmFibGVkU2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbmQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2VhcmNoX29mZjwvbWF0LWljb24+IHt7IFwiT2N1bHRhclwiIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlbmFibGVkbmV3ICYmIGhhc1Blcm1pc3Npb25OZXdcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYWRkKClcIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy0yMFwiPmFkZDwvbWF0LWljb24+IHt7IG5ld2xhYmVsIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvYnV0dG9uPlxyXG48L2luZm8tcGFnZWJhcj5cclxuXHJcbjxkaXYgW25nQ2xhc3NdPVwieyAndGFibGUtZnVsbCc6IGZ1bGxhcmVhIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHdoaXRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlIGdyaWQtc2VhcmNoXCIgW25nU3R5bGVdPVwieyAncGFkZGluZyc6IChlbmFibGVkU2VhcmNoID8gMTAgOiAwKSArICdweCAyMHB4JyB9XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNmb3JtU2VhcmNoPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cInNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlZFNlYXJjaFwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lciByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7KHNlYXJjaGJ1dHRvbnMgfHwgW10pLmxlbmd0aCA9PSAwID8gJzEwJyA6ICc5JyB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3soc2VhcmNoYnV0dG9ucyB8fCBbXSkubGVuZ3RoID09IDAgPyAnMicgOiAnMycgfX0gYWxpZ24tcmlnaHRcIiAqbmdJZj1cInNlYXJjaG1vZGVsICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1idXR0b25zIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaG9ubHlvbmVidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtU2VhcmNoLmludmFsaWQgfHwgbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQnVzY2FyJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWFyY2hvbmx5b25lYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY2FuY2VsU2VhcmNoKClcIiAqbmdJZj1cImVuYWJsZWRjYW5jZWxzZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybVNlYXJjaC5pbnZhbGlkIHx8IGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2Ygc2VhcmNoYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtU2VhcmNoLmludmFsaWQgfHwgbG9hZGluZ1wiIChjbGljayk9XCJiLm1ldGhvZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJiLmljb25cIiBjbGFzcz1cImZzLTIwXCI+e3tiLmljb24gfCB0cmFuc2xhdGV9fTwvbWF0LWljb24+IHt7Yi5sYWJlbCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxmaWVsZHNldCAqbmdJZj1cIiFzaG93UGFnZWJhclwiPjxsZWdlbmQgW2lubmVySFRNTF09XCJwYWdlYmFyVGl0bGUgfCB0cmFuc2xhdGVcIj48L2xlZ2VuZD48L2ZpZWxkc2V0PlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibG9hZGluZy1iYXJcIj48bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwibG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj48L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxkaXYgaWQ9XCJhdXRvLXJlZnJlc2hcIiAqbmdJZj1cImF1dG9yZWZyZXNoID4gMFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgbWF0VG9vbHRpcD1cInt7ICdBdXRvUmVmcmVzaCcgfCB0cmFuc2xhdGUgfX0ge3sgYXV0b3JlZnJlc2ggfX0gc2VnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiPmFjY2Vzc190aW1lPC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ob3ZlclwiIFtuZ1N0eWxlXT1cInsgJ21pbi1oZWlnaHQucHgnOiB0YWJsZUhlaWdodCB9XCIgW25nQ2xhc3NdPVwieyAnbG9hZGluZyc6IGxvYWRpbmcsICdjbGlja2FjY2Vzcyc6IGVuYWJsZWRjbGlja2FjY2VzcyB9XCIgKG1vdXNlbGVhdmUpPVwib3ZlckluZGV4ID0gLTFcIiAqbmdJZj1cImRhdGEgIT0gbnVsbFwiID5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA1JTtcIiAqbmdJZj1cImVuYWJsZWRjbGFzc2ljb25zICYmIGRhdGE/Lmxlbmd0aCA+IDAgJiYgZGF0YVswXT8uSWNvbiAhPSBudWxsXCI+PC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVuYXNIZWFkZXJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImNvbHVuYXNXaWR0aFtpXSA9PSAnJ1wiIFtjbGFzc109XCInY29sXycgKyBjb2wudG9Mb3dlckNhc2UoKVwiIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJzogY29sdW5hc1R5cGVbaV0gPT0gJ2NoZWNrJywgJ2FsaWduLXJpZ2h0JzogY29sdW5hc1R5cGVbaV0uc3RhcnRzV2l0aCgnbicpIH1cIj57eyBjb2wgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJjb2x1bmFzV2lkdGhbaV0gIT0gJydcIiBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6IGNvbHVuYXNXaWR0aFtpXSB9XCIgW25nQ2xhc3NdPVwieyAndGV4dC1jZW50ZXInOiBjb2x1bmFzVHlwZVtpXSA9PSAnY2hlY2snLCAnYWxpZ24tcmlnaHQnOiBjb2x1bmFzVHlwZVtpXS5zdGFydHNXaXRoKCduJykgfVwiPnt7IGNvbCB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMgYWxpZ24tcmlnaHQgYnV0dG9uc1wiICpuZ0lmPVwiKHRlbXBsYXRldXJsICE9ICcnKSB8fCAoYnV0dG9ucyAhPSBudWxsICYmIGJ1dHRvbnMubGVuZ3RoID4gMCkgfHwgZW5hYmxlZGRldGFpbCB8fCBlbmFibGVkdmlldyB8fCBlbmFibGVkY29scyB8fCAoKGRpc2FibGVkY29sID09ICcnKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgKChkaXNhYmxlZGNvbCA9PSAnJykgJiYgZW5hYmxlZGRlbGV0ZSAmJiBoYXNQZXJtaXNzaW9uRGVsZXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJbbWF0VG9vbHRpcF09XCJuZXdsYWJlbCB8IHRyYW5zbGF0ZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIiAoY2xpY2spPVwiYWRkKClcIiAqbmdJZj1cIiFzaG93UGFnZWJhciAmJiBlbmFibGVkbmV3ICYmIGhhc1Blcm1pc3Npb25OZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFuYWdlcmNvbHNcIiBbbWF0VG9vbHRpcF09XCInQ3VzdG9taXphclRhYmVsYScgfCB0cmFuc2xhdGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCIgKGNsaWNrKT1cImN1c3RvbWl6ZVRhYmxlKClcIiAqbmdJZj1cImVuYWJsZWRjb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW91dFwiPnNldHRpbmdzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdyaWQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBtb2Qgb2YgZGF0YTsgbGV0IGogPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsgJ2RlZmF1bHQtY29sb3InOiAhZW5hYmxlZGNsYXNzaWNvbnMsICdzZWxlY3RlZC1yb3cnOiBqID09IG92ZXJJbmRleCB9XCIgW2NsYXNzXT1cIm1vZC5DbGFzc1wiIChjbGljayk9XCJhY2Nlc3MobW9kKVwiIChtb3VzZWVudGVyKT1cIm92ZXJJbmRleCA9IGpcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZW5hYmxlZGNsYXNzaWNvbnMgJiYgbW9kPy5JY29uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaWNvbiBvZiBpY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIFttYXRUb29sdGlwXT1cImljb24uVG9vbHRpcCB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiaWNvbi5OYW1lID09IG1vZC5JY29uXCIgW25nQ2xhc3NdPVwieyAnaWNvbmUtc2VjdW5kYXJpbyc6IGljb24uUHJpbmNpcGFsID09IGZhbHNlIH1cIj57e2ljb24uSWNvbn19PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW5hc0l0ZW5zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09IG51bGwgfHwgbW9kW2NvbF0gPT0gdW5kZWZpbmVkXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW5hc1R5cGVbaV1cIiAqbmdJZj1cIm1vZFtjb2xdICE9IG51bGwgJiYgbW9kW2NvbF0gIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsgJ3RkLWV4cGFuc2l2ZWwnOiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMgJiYgZW5hYmxlZGV4cGFuZCA9PSB0cnVlfVwiICpuZ0lmPVwibW9kW2NvbF0gIT09IHRydWUgJiYgbW9kW2NvbF0gIT09IGZhbHNlICYmIG1vZFtjb2xdICE9PSAwICYmIG1vZFtjb2xdICE9PSAnMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsnbGFiZWwtZXhwYW5zaXZlbCc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBtb2RbY29sXS5sZW5ndGggPiBsaW1pdGNoYXJhY3RlcnMsICdsYWJlbC1leHBhbmRpZGEnOiBlbmFibGVkZXhwYW5kICYmIGNvbHVuYXNJdGVuc0V4cGFuZGlkb3Nbal1baV0gfVwiICpuZ0lmPVwiY29sdW5hc0h0bWxbaV0gPT09IHRydWVcIiBbaW5uZXJIVE1MXT1cIihtb2RbY29sXSB8IHRyYW5zbGF0ZTpjb2x1bmFzVHJhbnNsYXRlW2ldKSB8fCAnJyBcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJicmVhay13b3JkXCIgW25nQ2xhc3NdPVwieydsYWJlbC1leHBhbnNpdmVsJzogZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIG1vZFtjb2xdLmxlbmd0aCA+IGxpbWl0Y2hhcmFjdGVycywgJ2xhYmVsLWV4cGFuZGlkYSc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiAqbmdJZj1cImNvbHVuYXNIdG1sW2ldID09PSBmYWxzZVwiPnt7IChtb2RbY29sXSB8IHRyYW5zbGF0ZTpjb2x1bmFzSHRtbFtpXSkgfHwgJycgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW5hYmxlZGV4cGFuZCA9PSB0cnVlICYmIG1vZFtjb2xdLmxlbmd0aCA+IGxpbWl0Y2hhcmFjdGVyc1wiIFtuZ0NsYXNzXT1cInsnbW9zdHJhci1tYWlzLWV4cGFuZGlkbyc6IGVuYWJsZWRleHBhbmQgPT0gdHJ1ZSAmJiBjb2x1bmFzSXRlbnNFeHBhbmRpZG9zW2pdW2ldIH1cIiBjbGFzcz1cIm1vc3RyYXItbWFpc1wiIChjbGljayk9XCJtb3N0cmFyTWFpcyhqLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwieydpY29uZS1leHBhbmRpZG8nOiBlbmFibGVkZXhwYW5kID09IHRydWUgJiYgY29sdW5hc0l0ZW5zRXhwYW5kaWRvc1tqXVtpXSB9XCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImkgPT0gMCAmJiBtb2QuQmFkZ2UgIT0gbnVsbCAmJiBtb2QuQmFkZ2UgIT0gdW5kZWZpbmVkXCI+e3sgbW9kLkJhZGdlIHwgdHJhbnNsYXRlOmNvbHVuYXNUcmFuc2xhdGVbaV0gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RbY29sXSA9PT0gdHJ1ZVwiPjxtYXQtaWNvbj5jaGVja19ib3g8L21hdC1pY29uPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibW9kW2NvbF0gPT09IGZhbHNlXCI+PG1hdC1pY29uPmNoZWNrX2JveF9vdXRsaW5lX2JsYW5rPC9tYXQtaWNvbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm1vZFtjb2xdID09PSAwIHx8IG1vZFtjb2xdID09PSAnMCdcIj4wPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIFtpbm5lckhUTUxdPVwibW9kW2NvbF0gfCBkYXRlOidzaG9ydERhdGUnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIidkYXRldGltZSdcIj57eyBtb2RbY29sXSB8IGRhdGU6J3Nob3J0RGF0ZScgfX0ge3sgbW9kW2NvbF0gfCBkYXRlOidtZWRpdW1UaW1lJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbW9udGh5ZWFyJ1wiIFtpbm5lckhUTUxdPVwibW9kW2NvbF0gfCBkYXRlOidNTS95eXl5J1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjAnXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS4wLTAnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduMidcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjItMicgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ240J1wiIFtjbGFzc109XCInYWxpZ24tcmlnaHQgJyArIChtb2RbY29sXSA8IDAgPyAndGV4dC1yZWQnIDogJycpXCI+e3sgbW9kW2NvbF0gfCBudW1iZXI6JzEuNC00JyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwICpuZ1N3aXRjaENhc2U9XCInbjYnXCIgW2NsYXNzXT1cIidhbGlnbi1yaWdodCAnICsgKG1vZFtjb2xdIDwgMCA/ICd0ZXh0LXJlZCcgOiAnJylcIj57eyBtb2RbY29sXSB8IG51bWJlcjonMS42LTYnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXAgKm5nU3dpdGNoQ2FzZT1cIiduOSdcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjktOScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcCAqbmdTd2l0Y2hDYXNlPVwiJ24xMidcIiBbY2xhc3NdPVwiJ2FsaWduLXJpZ2h0ICcgKyAobW9kW2NvbF0gPCAwID8gJ3RleHQtcmVkJyA6ICcnKVwiPnt7IG1vZFtjb2xdIHwgbnVtYmVyOicxLjEyLTEyJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ1N3aXRjaENhc2U9XCInY2hlY2snXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RbY29sXSAhPSBudWxsICYmIChtb2RbY29sXSA9PT0gdHJ1ZSB8fCBtb2RbY29sXSA9PSAxIHx8IG1vZFtjb2xdLnRvTG93ZXJDYXNlKCkgPT0gJ3MnKTsgdGhlbiBjaGVja2VkOyBlbHNlIHVuY2hlY2tlZFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tlZD48bWF0LWljb24+Y2hlY2tfYm94PC9tYXQtaWNvbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5jaGVja2VkPjxtYXQtaWNvbj5jaGVja19ib3hfb3V0bGluZV9ibGFuazwvbWF0LWljb24+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5hYmxlZGNsaWNrYWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFjdGlvbnMgY2xpY2thY2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImVuYWJsZWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7YWNjZXNzaWNvbiB8fCAnYXJyb3dfZm9yd2FyZCd9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbmFibGVkY2xpY2thY2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtYWN0aW9uc1wiICpuZ0lmPVwiKHRlbXBsYXRldXJsICE9ICcnKSB8fCAoYnV0dG9ucyAhPSBudWxsICYmIGJ1dHRvbnMubGVuZ3RoID4gMCkgfHwgKG1vZC5Eb3dubG9hZCAhPSBudWxsKSB8fCBlbmFibGVkZGV0YWlsIHx8IChtb2Q/LkluZm8gIT0gbnVsbCkgfHwgZW5hYmxlZHZpZXcgfHwgKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZGVsZXRlICYmIGhhc1Blcm1pc3Npb25EZWxldGUpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbWF0LWljb24tYnV0dG9uIGhyZWY9XCJ7eyB0ZW1wbGF0ZXVybC5yZXBsYWNlKCd7aWR9JywgbW9kLklkKSB9fVwiIHRhcmdldD1cIl9ibGFua1wiIFttYXRUb29sdGlwXT1cIidBYnJpcicgfCB0cmFuc2xhdGVcIiAqbmdJZj1cInRlbXBsYXRldXJsICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnZpc2liaWxpdHk8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGIgb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCJiLmxhYmVsIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImIubW9kYWxDb21wb25lbnQgIT0gbnVsbCA/IG9wZW5DdXN0b21Nb2RhbChiLm1vZGFsQ29tcG9uZW50LCBiLndpZHRoTW9kYWxDb21wb25lbnQsIG1vZCkgOiBiLmFwaSAhPSBudWxsID8gZXZlbnRCdXR0b24obW9kLCBiLmFwaSwgYi5tZXRob2QsIGIuY29uZmlybSkgOiBuYXZpZ2F0ZVRvKGIubmF2aWdhdGVUbywgYi5wYXNzSWQsIG1vZC5JZClcIiAqbmdJZj1cImIuc2hvd09ubHlDbGFzcyA9PSBudWxsIHx8IGIuc2hvd09ubHlDbGFzcyA9PSBtb2QuQ2xhc3NcIiBbZGlzYWJsZWRdPVwiYi5kaXNhYmxlZEZpZWxkICYmIG1vZFtiLmRpc2FibGVkRmllbGRdID09PSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2IuaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRG93bmxvYWQnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImRvd25sb2FkKG1vZC5Eb3dubG9hZClcIiAqbmdJZj1cIm1vZC5Eb3dubG9hZCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRGV0YWxoZScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGV0YWlsKG1vZClcIiAqbmdJZj1cImVuYWJsZWRkZXRhaWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjgwMFwiIFttYXRUb29sdGlwXT1cIidJbmZvcm1hY2FvJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJpbmZvKG1vZD8uSW5mbylcIiAqbmdJZj1cIm1vZD8uSW5mbyAhPSBudWxsXCIgW2Rpc2FibGVkXT1cIm1vZD8uSW5mbyA9PSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcF09XCInVmlzdWFsaXphcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwidmlldyhtb2QpXCIgKm5nSWY9XCJlbmFibGVkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj52aXNpYmlsaXR5PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBdPVwiJ0VkaXRhcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZWRpdChtb2QpXCIgKm5nSWY9XCIoZGlzYWJsZWRjb2wgPT0gJycgfHwgbW9kW2Rpc2FibGVkY29sXSA9PT0gdHJ1ZSkgJiYgZW5hYmxlZGVkaXQgJiYgaGFzUGVybWlzc2lvbkVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCI4MDBcIiBbbWF0VG9vbHRpcF09XCInRXhjbHVpcicgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGVsZXRlKG1vZClcIiAqbmdJZj1cIihkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZGVsZXRlICYmIGhhc1Blcm1pc3Npb25EZWxldGUgJiYgIW1vZC5IaWRlRGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiODAwXCIgW21hdFRvb2x0aXBdPVwiJ0FjZXNzYXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImVkaXQobW9kKVwiICpuZ0lmPVwiKChkaXNhYmxlZGNvbCA9PSAnJyB8fCBtb2RbZGlzYWJsZWRjb2xdID09PSB0cnVlKSAmJiBlbmFibGVkZWRpdCAmJiBoYXNQZXJtaXNzaW9uRWRpdCkgfHwgZW5hYmxlZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZm9yd2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJsYW5rLXRhYmxlXCIgKm5nSWY9XCJkYXRhICE9IG51bGwgJiYgZGF0YS5sZW5ndGggPT0gMFwiPnt7XCJOZW5odW1JdGVtRW5jb250cmFkb1wiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDxpbmZvLXBhZ2luYXRvciAjcGFnaW5hdG9yIFtoaWRkZW5dPVwiIXBhZ2VkIHx8IChkYXRhICE9IG51bGwgJiYgZGF0YS5sZW5ndGggPT0gMClcIiBbc2l6ZV09XCJzaXplXCIgKGNoYW5nZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIiA+PC9pbmZvLXBhZ2luYXRvcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJibG9ja1wiICpuZ0lmPVwibG9hZGluZ1wiPjwvZGl2PlxyXG48aW5mby1hbGVydCBbbWVzc2FnZXNdPVwibWVzc2FnZXNcIj48L2luZm8tYWxlcnQ+IiwiPGluZm8tbW9kYWwgKG9uc2F2ZSk9XCJzYXZlKClcIiBtb2RhbHRpdGxlPVwiQ3VzdG9taXphclRhYmVsYVwiID5cclxuICAgIDxpbmZvLW1lc3NhZ2UgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJtaW5cIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaT48bWF0LWljb24gY2xhc3M9XCJpY29uLW91dFwiPmluZm88L21hdC1pY29uPnt7ICdDdXN0b21pemFyVGFiZWxhRGVzY3JpY2FvMScgfCB0cmFuc2xhdGUgfX08L2xpPlxyXG4gICAgICAgICAgICA8bGk+PG1hdC1pY29uIGNsYXNzPVwiaWNvbi1vdXRcIj5kYW5nZXJvdXM8L21hdC1pY29uPnt7ICdDdXN0b21pemFyVGFiZWxhRGVzY3JpY2FvMicgfCB0cmFuc2xhdGUgfX08L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgXHJcbiAgICA8L2luZm8tbWVzc2FnZT5cclxuICAgIFxyXG4gICAgPHVsIGNsYXNzPVwibGlzdGFnZW1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVuYXNcIiA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIml0ZW0uR3JpZEF0dWFsXCIgPlxyXG4gICAgICAgICAgICAgICAgPGluZm8tY2hlY2tib3ggWyhuZ01vZGVsKV09XCJpdGVtLkV4aWJpclwiIFtwbGFjZWhvbGRlcl09XCJpdGVtLk5vbWVcIiBbbmFtZV09XCInY2hrY29sdW5hJyArIGl0ZW0uTm9tZVwiID48L2luZm8tY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3VsPlxyXG48L2luZm8tbW9kYWw+Il19
|