tango-app-ui-manage-billing 3.3.7 → 3.3.8
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.
|
@@ -366,6 +366,11 @@ export class EditInvoiceComponent {
|
|
|
366
366
|
}
|
|
367
367
|
else {
|
|
368
368
|
payload.clientId = this.clientId;
|
|
369
|
+
// Flag the backend to take the "custom create" path that persists what
|
|
370
|
+
// the form built. The legacy /createInvoice contract expects either
|
|
371
|
+
// allClient+clientList or invoiceId; without this flag, the server
|
|
372
|
+
// silently returns 2xx and writes nothing.
|
|
373
|
+
payload.customInvoice = true;
|
|
369
374
|
this.billingService.createInvoice(payload).pipe(takeUntil(this.destroy$)).subscribe({
|
|
370
375
|
next: (res) => {
|
|
371
376
|
this.saving = false;
|
|
@@ -374,9 +379,10 @@ export class EditInvoiceComponent {
|
|
|
374
379
|
this.activeModal.close('created');
|
|
375
380
|
}
|
|
376
381
|
},
|
|
377
|
-
error: () => {
|
|
382
|
+
error: (err) => {
|
|
378
383
|
this.saving = false;
|
|
379
|
-
|
|
384
|
+
const msg = err?.error?.message || 'Failed to create invoice';
|
|
385
|
+
this.toast.getErrorToast(msg);
|
|
380
386
|
}
|
|
381
387
|
});
|
|
382
388
|
}
|
|
@@ -510,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
510
516
|
}], billingGroups: [{
|
|
511
517
|
type: Input
|
|
512
518
|
}] } });
|
|
513
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1pbnZvaWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtYmlsbGluZy9lZGl0LWludm9pY2UvZWRpdC1pbnZvaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtYmlsbGluZy9lZGl0LWludm9pY2UvZWRpdC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVMxQyxNQUFNLE9BQU8sb0JBQW9CO0lBNkN0QjtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBaERELFdBQVcsQ0FBTTtJQUNqQixJQUFJLEdBQXNCLE1BQU0sQ0FBQztJQUNqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFFbkMsV0FBVyxDQUFhO0lBQ1AsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUMsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4Qix1Q0FBdUM7SUFDdkMsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUUzQixRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENB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LEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDdEM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUMzRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FwaEJVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG9LQ1pqQyxtZ3lCQTZaTTs7NEZEalpPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7cU1BS25CLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWRpdC1pbnZvaWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtaW52b2ljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lZGl0LWludm9pY2UuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRJbnZvaWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpbnZvaWNlRGF0YTogYW55O1xuICBASW5wdXQoKSBtb2RlOiAnZWRpdCcgfCAnY3JlYXRlJyA9ICdlZGl0JztcbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBiaWxsaW5nR3JvdXBzOiBhbnlbXSA9IFtdO1xuXG4gIGludm9pY2VGb3JtITogRm9ybUdyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgc2F2aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVGFiczogZWRpdCB8IGNyZWRpdE5vdGUgfCBvbmVUaW1lRmVlXG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2VkaXQnO1xuXG4gIHRheFR5cGVzID0gWydJR1NUJywgJ0NHU1QnLCAnU0dTVCddO1xuICBjdXJyZW5jeU9wdGlvbnMgPSBbJ2lucicsICdkb2xsYXInLCAnc2luZ2Fwb3JlZG9sbGFyJywgJ2V1cm8nXTtcbiAgY3VycmVuY3lMYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgaW5yOiAnSU5SICjigrkpJyxcbiAgICBkb2xsYXI6ICdVU0QgKCQpJyxcbiAgICBzaW5nYXBvcmVkb2xsYXI6ICdTR0QgKFMkKScsXG4gICAgZXVybzogJ0VVUiAo4oKsKSdcbiAgfTtcbiAgLy8gU3ltYm9sIG1hcCBtaXJyb3JzIHRoZSBiYWNrZW5kJ3MgQ1VSUkVOQ1lfU1lNQk9MUyBpbiB1dGlscy9jdXJyZW5jeS5qcyBzb1xuICAvLyB0aGUgbW9kYWwsIGludm9pY2UgbGlzdCwgY3JlZGl0LW5vdGUgYW5kIG9uZS10aW1lLWZlZSBwb3B1cHMgYWxsIHJlbmRlclxuICAvLyB0aGUgc2FtZSBzeW1ib2wgdGhlIFBERi9lbWFpbCB1c2VzLlxuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbmN5U3ltYm9sczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBpbnI6ICfigrknLFxuICAgIGRvbGxhcjogJyQnLFxuICAgIHNpbmdhcG9yZWRvbGxhcjogJ1MkJyxcbiAgICBldXJvOiAn4oKsJyxcbiAgfTtcbiAgc3RhdHVzT3B0aW9ucyA9IFsncGVuZGluZycsICdhcHByb3ZlZCddO1xuICBwYXltZW50U3RhdHVzT3B0aW9ucyA9IFsndW5wYWlkJywgJ3BhaWQnXTtcblxuICAvLyBDcmVkaXQgTm90ZVxuICBjcmVkaXROb3RlRm9ybSE6IEZvcm1Hcm91cDtcbiAgY3JlZGl0TW9yZVRoYW5UZW5QZXJjZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gUHJvZHVjdHMgZnJvbSBiYXNlIHByaWNpbmdcbiAgYXZhaWxhYmxlUHJvZHVjdHM6IGFueVtdID0gW107XG5cbiAgLy8gT25lIFRpbWUgRmVlXG4gIG9uZVRpbWVGZWVGb3JtITogRm9ybUdyb3VwO1xuICBvbmVUaW1lRmVlVG90YWw6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGJpbGxpbmdTZXJ2aWNlOiBCaWxsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZEJpbGxpbmdHcm91cHMoKTtcbiAgICB0aGlzLmxvYWRDbGllbnRQcm9kdWN0cygpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLmluaXRDcmVkaXROb3RlRm9ybSgpO1xuICAgIHRoaXMuaW5pdE9uZVRpbWVGZWVGb3JtKCk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnICYmIHRoaXMuaW52b2ljZURhdGEpIHtcbiAgICAgIHRoaXMucGF0Y2hGb3JtKCk7XG4gICAgICB0aGlzLnBhdGNoQ3JlZGl0Tm90ZURlZmF1bHRzKCk7XG4gICAgICB0aGlzLnBhdGNoT25lVGltZUZlZURlZmF1bHRzKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZENsaWVudFByb2R1Y3RzKCkge1xuICAgIGNvbnN0IGNJZCA9IHRoaXMuY2xpZW50SWQgfHwgdGhpcy5pbnZvaWNlRGF0YT8uY2xpZW50SWQ7XG4gICAgaWYgKGNJZCkge1xuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRDbGllbnRCYXNlUHJpY2luZyhjSWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZVByb2R1Y3RzID0gcmVzPy5kYXRhIHx8IFtdO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlUHJvZHVjdHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Qcm9kdWN0Q2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwcm9kdWN0R3JvdXAgPSB0aGlzLnByb2R1Y3RzLmF0KGluZGV4KTtcbiAgICBjb25zdCBzZWxlY3RlZE5hbWUgPSBwcm9kdWN0R3JvdXAuZ2V0KCdwcm9kdWN0TmFtZScpPy52YWx1ZTtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5hdmFpbGFibGVQcm9kdWN0cy5maW5kKHAgPT4gcC5wcm9kdWN0TmFtZSA9PT0gc2VsZWN0ZWROYW1lKTtcbiAgICBpZiAocHJvZHVjdCkge1xuICAgICAgcHJvZHVjdEdyb3VwLmdldCgncHJpY2UnKT8uc2V0VmFsdWUocHJvZHVjdC5wcmljZSk7XG4gICAgICAvLyBTZXQgZGVzY3JpcHRpb24gYmFzZWQgb24gcHJvZHVjdCBuYW1lXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIHRhbmdvVHJhZmZpYzogJ0N1c3RvbWVyIEZvb3RmYWxsIEFuYWx5dGljcycsXG4gICAgICAgIHRhbmdvWm9uZTogJ1Byb2R1Y3QgY2F0ZWdvcnkvc2VjdGlvbiBhbmFseXRpY3MnLFxuICAgICAgICB0YW5nb1RyYXg6ICdDdXN0b21lciBKb3VybmV5IEFuYWx5dGljcycsXG4gICAgICAgIHByaW9yaXR5U3VwcG9ydDogJ1ByaW9yaXR5IFN1cHBvcnQnLFxuICAgICAgfTtcbiAgICAgIHByb2R1Y3RHcm91cC5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnNldFZhbHVlKGRlc2NyaXB0aW9uc1tzZWxlY3RlZE5hbWVdIHx8ICcnKTtcbiAgICAgIHRoaXMucmVjYWxjdWxhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgIC8vIENvbnZlcnQgY2FtZWxDYXNlIHRvIFRpdGxlIENhc2Ugd2l0aCBzcGFjZXM6IHRhbmdvVHJhZmZpYyAtPiBUYW5nbyBUcmFmZmljXG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIGxvYWRCaWxsaW5nR3JvdXBzKCkge1xuICAgIGNvbnN0IGNJZCA9IHRoaXMuY2xpZW50SWQgfHwgdGhpcy5pbnZvaWNlRGF0YT8uY2xpZW50SWQ7XG4gICAgaWYgKGNJZCkge1xuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRBbGxCaWxsaW5nR3JvdXBzKGNJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3VwcyA9IHJlcz8uZGF0YSB8fCBbXTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHNldFRhYih0YWI6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09IEVESVQgSU5WT0lDRSA9PT09PT09PT09PT09PT09PT09PT1cblxuICBpbml0Rm9ybSgpIHtcbiAgICB0aGlzLmludm9pY2VGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBjb21wYW55TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGNvbXBhbnlBZGRyZXNzOiBbJyddLFxuICAgICAgR1NUTnVtYmVyOiBbJyddLFxuICAgICAgUGxhY2VPZlN1cHBseTogWycnXSxcbiAgICAgIGdyb3VwTmFtZTogWycnXSxcbiAgICAgIC8vIEJpbGxpbmcgR3JvdXAgaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyDigJQgdGhlIHJlc3Qgb2YgdGhlIGNvbXBhbnlcbiAgICAgIC8vIGZpZWxkcyBhdXRvLWZpbGwgZnJvbSB0aGUgc2VsZWN0ZWQgZ3JvdXAuXG4gICAgICBncm91cElkOiBbJycsIHRoaXMubW9kZSA9PT0gJ2NyZWF0ZScgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogW11dLFxuICAgICAgc3RvcmVzOiBbMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApXV0sXG4gICAgICBiaWxsaW5nRGF0ZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGR1ZURhdGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBjdXJyZW5jeTogWydpbnInLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHN0YXR1czogWydwZW5kaW5nJ10sXG4gICAgICBwYXltZW50U3RhdHVzOiBbJ3VucGFpZCddLFxuICAgICAgcHJvZHVjdHM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgdGF4OiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRlbXBsYXRlIGhlbHBlcnM6IHN1cmZhY2UgXCJ0b3VjaGVkICYmIGludmFsaWRcIiBzbyB0aGUgSFRNTCBjYW4gaGlnaGxpZ2h0XG4gIC8vIHRoZSBmaWVsZCBhbmQgcmVuZGVyIGFuIGlubGluZSBlcnJvci4gRGVmZW5zaXZlIGFnYWluc3QgdGhlIGZvcm0gbm90IHlldFxuICAvLyBiZWluZyBpbml0aWFsaXNlZCBkdXJpbmcgdGhlIGZpcnN0IGNoYW5nZS1kZXRlY3Rpb24gcGFzcy5cbiAgY29udHJvbEludmFsaWQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuaW52b2ljZUZvcm0/LmdldChuYW1lKTtcbiAgICByZXR1cm4gISFjdHJsICYmIGN0cmwudG91Y2hlZCAmJiBjdHJsLmludmFsaWQ7XG4gIH1cblxuICBhcnJheUNvbnRyb2xJbnZhbGlkKGFycmF5TmFtZTogJ3Byb2R1Y3RzJyB8ICd0YXgnLCBpbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBhcnIgPSB0aGlzLmludm9pY2VGb3JtPy5nZXQoYXJyYXlOYW1lKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xuICAgIGNvbnN0IGN0cmwgPSBhcnI/LmF0KGluZGV4KT8uZ2V0KG5hbWUpO1xuICAgIHJldHVybiAhIWN0cmwgJiYgY3RybC50b3VjaGVkICYmIGN0cmwuaW52YWxpZDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9GaXJzdEludmFsaWQoKTogdm9pZCB7XG4gICAgLy8gRmluZCB0aGUgZmlyc3QgaW52YWxpZCBjb250cm9sIGluc2lkZSB0aGUgbW9kYWwgYW5kIGJyaW5nIGl0IGludG8gdmlldy5cbiAgICAvLyBTY29wZWQgdG8gLm1vZGFsLWNvbnRlbnQgc28gd2UgZG9uJ3QgZ3JhYiBmaWVsZHMgZnJvbSBvdGhlciBtb2RhbHMgb25cbiAgICAvLyB0aGUgcGFnZSBpZiBhbnkgYXJlIG9wZW4uXG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1jb250ZW50Jyk7XG4gICAgY29uc3QgZmlyc3QgPSByb290Py5xdWVyeVNlbGVjdG9yKCcuaXMtaW52YWxpZCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGZpcnN0LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICBpZiAodHlwZW9mIGZpcnN0LmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZpcnN0LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgcHJvZHVjdHMoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5pbnZvaWNlRm9ybS5nZXQoJ3Byb2R1Y3RzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgZ2V0IHRheEFycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuaW52b2ljZUZvcm0uZ2V0KCd0YXgnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBjcmVhdGVQcm9kdWN0R3JvdXAocHJvZHVjdD86IGFueSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgcHJvZHVjdE5hbWU6IFtwcm9kdWN0Py5wcm9kdWN0TmFtZSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkZXNjcmlwdGlvbjogW3Byb2R1Y3Q/LmRlc2NyaXB0aW9uIHx8ICcnXSxcbiAgICAgIG1vbnRoOiBbcHJvZHVjdD8ubW9udGggfHwgJyddLFxuICAgICAgSHNuTnVtYmVyOiBbcHJvZHVjdD8uSHNuTnVtYmVyIHx8ICc5OTgzMTQnXSxcbiAgICAgIHN0b3JlQ291bnQ6IFtwcm9kdWN0Py5zdG9yZUNvdW50IHx8IDAsIFZhbGlkYXRvcnMubWluKDApXSxcbiAgICAgIHByaWNlOiBbcHJvZHVjdD8ucHJpY2UgfHwgMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApXV0sXG4gICAgICBhbW91bnQ6IFtwcm9kdWN0Py5hbW91bnQgfHwgMF0sXG4gICAgICBwZXJpb2Q6IFtwcm9kdWN0Py5wZXJpb2QgfHwgJ21vbnRobHknXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVRheEdyb3VwKHRheD86IGFueSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdHlwZTogW3RheD8udHlwZSB8fCAnSUdTVCcsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdmFsdWU6IFt0YXg/LnZhbHVlIHx8IDE4LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDEwMCldXSxcbiAgICAgIHRheEFtb3VudDogW3RheD8udGF4QW1vdW50IHx8ICcwJ10sXG4gICAgICAvLyBEZWZhdWx0IHRoZSB0YXgtcm93IHN5bWJvbCB0byB0aGUgaW52b2ljZSdzIGN1cnJlbmN5ICh3YXMgaGFyZGNvZGVkXG4gICAgICAvLyB0byDigrksIHdoaWNoIGxlYWtlZCBpbnRvIHRoZSBzYXZlZCBkb2MgZm9yIG5vbi1JTlIgaW52b2ljZXMpLlxuICAgICAgY3VycmVuY3k6IFt0YXg/LmN1cnJlbmN5IHx8IHRoaXMuc3ltYm9sRm9yKHRoaXMuaW52b2ljZUZvcm0/LmdldCgnY3VycmVuY3knKT8udmFsdWUpXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3ltYm9sRm9yKGNvZGU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5U3ltYm9sc1tjb2RlIHx8ICcnXSB8fCAnJCc7XG4gIH1cblxuICBhZGRQcm9kdWN0KCkge1xuICAgIHRoaXMucHJvZHVjdHMucHVzaCh0aGlzLmNyZWF0ZVByb2R1Y3RHcm91cCgpKTtcbiAgfVxuXG4gIHJlbW92ZVByb2R1Y3QoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucHJvZHVjdHMucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMucmVjYWxjdWxhdGUoKTtcbiAgfVxuXG4gIGFkZFRheCgpIHtcbiAgICB0aGlzLnRheEFycmF5LnB1c2godGhpcy5jcmVhdGVUYXhHcm91cCgpKTtcbiAgfVxuXG4gIHJlbW92ZVRheChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy50YXhBcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZSgpO1xuICB9XG5cbiAgcGF0Y2hGb3JtKCkge1xuICAgIGNvbnN0IGludiA9IHRoaXMuaW52b2ljZURhdGE7XG5cbiAgICB0aGlzLmludm9pY2VGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgY29tcGFueU5hbWU6IGludi5jb21wYW55TmFtZSB8fCAnJyxcbiAgICAgIGNvbXBhbnlBZGRyZXNzOiBpbnYuY29tcGFueUFkZHJlc3MgfHwgJycsXG4gICAgICBHU1ROdW1iZXI6IGludi5HU1ROdW1iZXIgfHwgJycsXG4gICAgICBQbGFjZU9mU3VwcGx5OiBpbnYuUGxhY2VPZlN1cHBseSB8fCAnJyxcbiAgICAgIGdyb3VwTmFtZTogaW52Lmdyb3VwTmFtZSB8fCAnJyxcbiAgICAgIGdyb3VwSWQ6IGludi5ncm91cElkIHx8ICcnLFxuICAgICAgc3RvcmVzOiBpbnYuc3RvcmVzIHx8IDAsXG4gICAgICBiaWxsaW5nRGF0ZTogdGhpcy5mb3JtYXREYXRlRm9ySW5wdXQoaW52LmJpbGxpbmdEYXRlKSxcbiAgICAgIGR1ZURhdGU6IHRoaXMuZm9ybWF0RGF0ZUZvcklucHV0KGludi5kdWVEYXRlKSxcbiAgICAgIGN1cnJlbmN5OiBpbnYuY3VycmVuY3kgfHwgJ2lucicsXG4gICAgICBzdGF0dXM6IGludi5zdGF0dXMgfHwgJ3BlbmRpbmcnLFxuICAgICAgcGF5bWVudFN0YXR1czogaW52LnBheW1lbnRTdGF0dXMgfHwgJ3VucGFpZCcsXG4gICAgfSk7XG5cbiAgICAvLyBQYXRjaCBwcm9kdWN0c1xuICAgIGlmIChpbnYucHJvZHVjdHM/Lmxlbmd0aCkge1xuICAgICAgaW52LnByb2R1Y3RzLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2R1Y3RzLnB1c2godGhpcy5jcmVhdGVQcm9kdWN0R3JvdXAocCkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUHJvZHVjdCgpO1xuICAgIH1cblxuICAgIC8vIFBhdGNoIHRheFxuICAgIGlmIChpbnYudGF4Py5sZW5ndGgpIHtcbiAgICAgIGludi50YXguZm9yRWFjaCgodDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGF4QXJyYXkucHVzaCh0aGlzLmNyZWF0ZVRheEdyb3VwKHQpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFRheCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdERhdGVGb3JJbnB1dChkYXRlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlPy4kZGF0ZSB8fCBkYXRlKTtcbiAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICB9XG5cbiAgb25Hcm91cENoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cCA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5maW5kKGcgPT4gZy5faWQgPT09IGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgaWYgKHNlbGVjdGVkR3JvdXApIHtcbiAgICAgIHRoaXMuaW52b2ljZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGdyb3VwTmFtZTogc2VsZWN0ZWRHcm91cC5ncm91cE5hbWUsXG4gICAgICAgIGdyb3VwSWQ6IHNlbGVjdGVkR3JvdXAuX2lkLFxuICAgICAgICBjb21wYW55TmFtZTogc2VsZWN0ZWRHcm91cC5yZWdpc3RlcmVkQ29tcGFueU5hbWUgfHwgJycsXG4gICAgICAgIGNvbXBhbnlBZGRyZXNzOiBbc2VsZWN0ZWRHcm91cC5hZGRyZXNzTGluZU9uZSwgc2VsZWN0ZWRHcm91cC5hZGRyZXNzTGluZVR3bywgc2VsZWN0ZWRHcm91cC5jaXR5LCBzZWxlY3RlZEdyb3VwLnN0YXRlLCBzZWxlY3RlZEdyb3VwLmNvdW50cnksIHNlbGVjdGVkR3JvdXAucGluQ29kZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gICAgICAgIEdTVE51bWJlcjogc2VsZWN0ZWRHcm91cC5nc3QgfHwgJycsXG4gICAgICAgIFBsYWNlT2ZTdXBwbHk6IHNlbGVjdGVkR3JvdXAucGxhY2VPZlN1cHBseSB8fCAnJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlY2FsY3VsYXRlKCkge1xuICAgIGxldCBzdWJ0b3RhbCA9IDA7XG4gICAgdGhpcy5wcm9kdWN0cy5jb250cm9scy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmVDb3VudCA9IGdyb3VwLmdldCgnc3RvcmVDb3VudCcpPy52YWx1ZSB8fCAwO1xuICAgICAgY29uc3QgcHJpY2UgPSBncm91cC5nZXQoJ3ByaWNlJyk/LnZhbHVlIHx8IDA7XG4gICAgICBjb25zdCBhbW91bnQgPSBzdG9yZUNvdW50ICogcHJpY2U7XG4gICAgICBncm91cC5nZXQoJ2Ftb3VudCcpPy5zZXRWYWx1ZShwYXJzZUZsb2F0KGFtb3VudC50b0ZpeGVkKDIpKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgc3VidG90YWwgKz0gYW1vdW50O1xuICAgIH0pO1xuXG4gICAgdGhpcy50YXhBcnJheS5jb250cm9scy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBncm91cC5nZXQoJ3ZhbHVlJyk/LnZhbHVlIHx8IDA7XG4gICAgICBjb25zdCB0YXhBbW91bnQgPSAoc3VidG90YWwgKiB2YWx1ZSAvIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgIGdyb3VwLmdldCgndGF4QW1vdW50Jyk/LnNldFZhbHVlKHRheEFtb3VudCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pO1xuXG4gICAgbGV0IHRvdGFsU3RvcmVzID0gMDtcbiAgICB0aGlzLnByb2R1Y3RzLmNvbnRyb2xzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICB0b3RhbFN0b3JlcyArPSBncm91cC5nZXQoJ3N0b3JlQ291bnQnKT8udmFsdWUgfHwgMDtcbiAgICB9KTtcbiAgICB0aGlzLmludm9pY2VGb3JtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKHRvdGFsU3RvcmVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldFN1YnRvdGFsKCk6IG51bWJlciB7XG4gICAgbGV0IHN1YnRvdGFsID0gMDtcbiAgICB0aGlzLnByb2R1Y3RzLmNvbnRyb2xzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBzdWJ0b3RhbCArPSBncm91cC5nZXQoJ2Ftb3VudCcpPy52YWx1ZSB8fCAwO1xuICAgIH0pO1xuICAgIHJldHVybiBzdWJ0b3RhbDtcbiAgfVxuXG4gIGdldFRvdGFsVGF4KCk6IG51bWJlciB7XG4gICAgbGV0IHRvdGFsVGF4ID0gMDtcbiAgICB0aGlzLnRheEFycmF5LmNvbnRyb2xzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICB0b3RhbFRheCArPSBwYXJzZUZsb2F0KGdyb3VwLmdldCgndGF4QW1vdW50Jyk/LnZhbHVlIHx8ICcwJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRvdGFsVGF4O1xuICB9XG5cbiAgZ2V0VG90YWxBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJ0b3RhbCgpICsgdGhpcy5nZXRUb3RhbFRheCgpO1xuICB9XG5cbiAgZ2V0Q3VycmVuY3lTeW1ib2woKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xGb3IodGhpcy5pbnZvaWNlRm9ybS5nZXQoJ2N1cnJlbmN5Jyk/LnZhbHVlKTtcbiAgfVxuXG4gIGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbEZvcih0aGlzLmludm9pY2VEYXRhPy5jdXJyZW5jeSk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBpZiAodGhpcy5pbnZvaWNlRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmludm9pY2VGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIC8vIERlZmVyIHRvIG5leHQgdGljayBzbyBBbmd1bGFyIHJlbmRlcnMgdGhlIC5pcy1pbnZhbGlkIGNsYXNzZXNcbiAgICAgIC8vIGJlZm9yZSB3ZSBxdWVyeSB0aGUgRE9NIGZvciB0aGUgZmlyc3QgaW52YWxpZCBjb250cm9sIHRvIHNjcm9sbCB0by5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0ZpcnN0SW52YWxpZCgpLCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5pbnZvaWNlRm9ybS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgY29tcGFueU5hbWU6IGZvcm1WYWx1ZS5jb21wYW55TmFtZSxcbiAgICAgIGNvbXBhbnlBZGRyZXNzOiBmb3JtVmFsdWUuY29tcGFueUFkZHJlc3MsXG4gICAgICBHU1ROdW1iZXI6IGZvcm1WYWx1ZS5HU1ROdW1iZXIsXG4gICAgICBQbGFjZU9mU3VwcGx5OiBmb3JtVmFsdWUuUGxhY2VPZlN1cHBseSxcbiAgICAgIGdyb3VwTmFtZTogZm9ybVZhbHVlLmdyb3VwTmFtZSxcbiAgICAgIGdyb3VwSWQ6IGZvcm1WYWx1ZS5ncm91cElkLFxuICAgICAgc3RvcmVzOiBmb3JtVmFsdWUuc3RvcmVzLFxuICAgICAgYmlsbGluZ0RhdGU6IGZvcm1WYWx1ZS5iaWxsaW5nRGF0ZSxcbiAgICAgIGR1ZURhdGU6IGZvcm1WYWx1ZS5kdWVEYXRlLFxuICAgICAgY3VycmVuY3k6IGZvcm1WYWx1ZS5jdXJyZW5jeSxcbiAgICAgIHN0YXR1czogZm9ybVZhbHVlLnN0YXR1cyxcbiAgICAgIHBheW1lbnRTdGF0dXM6IGZvcm1WYWx1ZS5wYXltZW50U3RhdHVzLFxuICAgICAgcHJvZHVjdHM6IGZvcm1WYWx1ZS5wcm9kdWN0cyxcbiAgICAgIHRheDogZm9ybVZhbHVlLnRheCxcbiAgICAgIGFtb3VudDogdGhpcy5nZXRTdWJ0b3RhbCgpLFxuICAgICAgdG90YWxBbW91bnQ6IE1hdGgucm91bmQodGhpcy5nZXRUb3RhbEFtb3VudCgpKSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICBwYXlsb2FkLl9pZCA9IHRoaXMuaW52b2ljZURhdGEuX2lkO1xuICAgICAgcGF5bG9hZC5pbnZvaWNlID0gdGhpcy5pbnZvaWNlRGF0YS5pbnZvaWNlO1xuICAgICAgcGF5bG9hZC5jbGllbnRJZCA9IHRoaXMuaW52b2ljZURhdGEuY2xpZW50SWQ7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnVwZGF0ZUludm9pY2UocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ0ludm9pY2UgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3VwZGF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byB1cGRhdGUgaW52b2ljZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZC5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmNyZWF0ZUludm9pY2UocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ0ludm9pY2UgY3JlYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ2NyZWF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBjcmVhdGUgaW52b2ljZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT0gQ1JFRElUIE5PVEUgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgaW5pdENyZWRpdE5vdGVGb3JtKCkge1xuICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGFtb3VudDogWycnXSxcbiAgICAgIHJldmlzZWRBbW91bnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkaXNjb3VudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoMTApXV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNyZWRpdE5vdGVGb3JtLmdldCgncmV2aXNlZEFtb3VudCcpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcbiAgICAgICAgaWYgKGFtb3VudCkge1xuICAgICAgICAgIGNvbnN0IGRpc2NvdW50ID0gKChhbW91bnQgLSBlKSAvIGFtb3VudCAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICB0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA9IHBhcnNlRmxvYXQoZGlzY291bnQpID4gMTAgfHwgaXNOYU4oZSkgfHwgcGFyc2VGbG9hdChkaXNjb3VudCkgPCAwIHx8IGUgPCAwO1xuICAgICAgICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0uZ2V0KCdkaXNjb3VudCcpPy5zZXRWYWx1ZShkaXNjb3VudCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWRpdE5vdGVGb3JtLmdldCgnZGlzY291bnQnKT8uc2V0VmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0uZ2V0KCdkaXNjb3VudCcpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcbiAgICAgICAgY29uc3QgcmV2aXNlZCA9IHBhcnNlSW50KChhbW91bnQgKiAoMSAtIGUgLyAxMDApKS50b0ZpeGVkKCkpO1xuICAgICAgICB0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA9IHBhcnNlRmxvYXQoZSkgPiAxMCB8fCBpc05hTihlKSB8fCBlIDwgMCB8fCByZXZpc2VkIDwgMDtcbiAgICAgICAgdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8uc2V0VmFsdWUocmV2aXNlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8uc2V0VmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hDcmVkaXROb3RlRGVmYXVsdHMoKSB7XG4gICAgaWYgKHRoaXMuaW52b2ljZURhdGEpIHtcbiAgICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGFtb3VudDogdGhpcy5pbnZvaWNlRGF0YS5hbW91bnQgfHwgdGhpcy5pbnZvaWNlRGF0YS50b3RhbEFtb3VudCB8fCAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlDcmVkaXROb3RlKCkge1xuICAgIGlmICh0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xuICAgICAgaW52b2ljZTogdGhpcy5pbnZvaWNlRGF0YS5pbnZvaWNlLFxuICAgICAgcmV2aXNlZEFtb3VudDogdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8udmFsdWUsXG4gICAgICBkaXNjb3VudDogdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Rpc2NvdW50Jyk/LnZhbHVlLFxuICAgIH07XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYXBwbHlEaXNjb3VudChyZXF1ZXN0RGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdCgnQ3JlZGl0IG5vdGUgYXBwbGllZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdjcmVkaXRBcHBsaWVkJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBhcHBseSBjcmVkaXQgbm90ZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb21pdFNwZWNpYWxDaGFyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBrID0gZXZlbnQuY2hhckNvZGU7XG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT0gT05FIFRJTUUgRkVFID09PT09PT09PT09PT09PT09PT09PVxuXG4gIGluaXRPbmVUaW1lRmVlRm9ybSgpIHtcbiAgICB0aGlzLm9uZVRpbWVGZWVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBhbW91bnQ6IFsnJ10sXG4gICAgICBvbmVUaW1lRmVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vbmVUaW1lRmVlRm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hPbmVUaW1lRmVlRGVmYXVsdHMoKSB7XG4gICAgaWYgKHRoaXMuaW52b2ljZURhdGEpIHtcbiAgICAgIHRoaXMub25lVGltZUZlZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGFtb3VudDogdGhpcy5pbnZvaWNlRGF0YS5hbW91bnQgfHwgdGhpcy5pbnZvaWNlRGF0YS50b3RhbEFtb3VudCB8fCAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpIHtcbiAgICBjb25zdCBhbW91bnQgPSBwYXJzZUZsb2F0KHRoaXMub25lVGltZUZlZUZvcm0uZ2V0KCdhbW91bnQnKT8udmFsdWUgfHwgJzAnKTtcbiAgICBjb25zdCBmZWUgPSBwYXJzZUZsb2F0KHRoaXMub25lVGltZUZlZUZvcm0uZ2V0KCdvbmVUaW1lRmVlJyk/LnZhbHVlIHx8ICcwJyk7XG4gICAgdGhpcy5vbmVUaW1lRmVlVG90YWwgPSBwYXJzZUZsb2F0KChhbW91bnQgKyBmZWUpLnRvRml4ZWQoMikpO1xuICB9XG5cbiAgYXBwbHlPbmVUaW1lRmVlKCkge1xuICAgIGNvbnN0IGZlZVZhbHVlID0gdGhpcy5vbmVUaW1lRmVlRm9ybS5nZXQoJ29uZVRpbWVGZWUnKT8udmFsdWU7XG4gICAgaWYgKCFmZWVWYWx1ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xuICAgICAgb25lVGltZUZlZTogZmVlVmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5vbmVUaW1lRmVlKHJlcXVlc3REYXRhLCB0aGlzLmludm9pY2VEYXRhLmludm9pY2UpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ09uZSB0aW1lIGZlZSBhcHBsaWVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ2ZlZUFwcGxpZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGFwcGx5IG9uZSB0aW1lIGZlZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC01IHB4LTYgcGItMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgbXQtMlwiPnt7IG1vZGUgPT09ICdlZGl0JyA/ICdJbnZvaWNlJyA6ICdDcmVhdGUgSW52b2ljZScgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0J1wiIGNsYXNzPVwiaW52b2ljZS1udW1iZXJcIj57eyBpbnZvaWNlRGF0YT8uaW52b2ljZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVGFicyAob25seSBpbiBlZGl0IG1vZGUpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhciBtdC0zXCIgKm5nSWY9XCJtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWItYnRuXCIgW25nQ2xhc3NdPVwiYWN0aXZlVGFiID09PSAnZWRpdCcgPyAndGFiLWFjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRhYignZWRpdCcpXCI+RWRpdCBJbnZvaWNlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGFiLWJ0blwiIFtuZ0NsYXNzXT1cImFjdGl2ZVRhYiA9PT0gJ2NyZWRpdE5vdGUnID8gJ3RhYi1hY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUYWIoJ2NyZWRpdE5vdGUnKVwiPkNyZWRpdCBOb3RlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGFiLWJ0blwiIFtuZ0NsYXNzXT1cImFjdGl2ZVRhYiA9PT0gJ29uZVRpbWVGZWUnID8gJ3RhYi1hY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUYWIoJ29uZVRpbWVGZWUnKVwiPk9uZSBUaW1lIEZlZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09IEVESVQgSU5WT0lDRSBUQUIgPT09PT09PT09PT09PT09PT09PT09PT09IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG1iLTRcIiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2VkaXQnIHx8IG1vZGUgPT09ICdjcmVhdGUnXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiaW52b2ljZUZvcm1cIiBjbGFzcz1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuXG4gICAgICAgICAgICA8IS0tIENvbXBhbnkgRGV0YWlscyBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGUgbWItM1wiPkNvbXBhbnkgRGV0YWlsczwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+Q29tcGFueSBOYW1lIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImNvbXBhbnlOYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbEludmFsaWQoJ2NvbXBhbnlOYW1lJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdjb21wYW55TmFtZScpXCI+Q29tcGFueSBOYW1lIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+R1NUIE51bWJlcjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIkdTVE51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5Db21wYW55IEFkZHJlc3M8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJjb21wYW55QWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlBsYWNlIG9mIFN1cHBseTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIlBsYWNlT2ZTdXBwbHlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEJpbGxpbmcgR3JvdXAgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5CaWxsaW5nIEdyb3VwIDxzcGFuICpuZ0lmPVwibW9kZSA9PT0gJ2NyZWF0ZSdcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwibW9kZSA9PT0gJ2NyZWF0ZSdcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9sSW52YWxpZCgnZ3JvdXBJZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Hcm91cENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGJpbGxpbmcgZ3JvdXA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGcgb2YgYmlsbGluZ0dyb3Vwc1wiIFt2YWx1ZV09XCJnLl9pZFwiPnt7IGcuZ3JvdXBOYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJtb2RlID09PSAnZWRpdCdcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJpbnZvaWNlRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy52YWx1ZSB8fCAnRGVmYXVsdCBHcm91cCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdncm91cElkJylcIj5CaWxsaW5nIEdyb3VwIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+R3JvdXAgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImdyb3VwTmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSW52b2ljZSBEZXRhaWxzIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZSBtYi0zIG10LTJcIj5JbnZvaWNlIERldGFpbHM8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkJpbGxpbmcgRGF0ZSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJiaWxsaW5nRGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xJbnZhbGlkKCdiaWxsaW5nRGF0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLW1zZ1wiICpuZ0lmPVwiY29udHJvbEludmFsaWQoJ2JpbGxpbmdEYXRlJylcIj5CaWxsaW5nIERhdGUgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5EdWUgRGF0ZSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJkdWVEYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbEludmFsaWQoJ2R1ZURhdGUnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdkdWVEYXRlJylcIj5EdWUgRGF0ZSBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkN1cnJlbmN5IDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xJbnZhbGlkKCdjdXJyZW5jeScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFt2YWx1ZV09XCJjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVuY3lMYWJlbHNbY10gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJjb250cm9sSW52YWxpZCgnY3VycmVuY3knKVwiPkN1cnJlbmN5IGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+Tm8uIG9mIFN0b3JlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVzXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwhLS0gUHJvZHVjdHMgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIG1iLTMgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb2R1Y3RzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJhZGRQcm9kdWN0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIFByb2R1Y3RcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwicHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RzLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdC1yb3cgbWItMyBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9kdWN0LWxhYmVsXCI+UHJvZHVjdCB7eyBpICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIiAoY2xpY2spPVwicmVtb3ZlUHJvZHVjdChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+UHJvZHVjdCBOYW1lIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cImF2YWlsYWJsZVByb2R1Y3RzLmxlbmd0aCA+IDBcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJhcnJheUNvbnRyb2xJbnZhbGlkKCdwcm9kdWN0cycsIGksICdwcm9kdWN0TmFtZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblByb2R1Y3RDaGFuZ2UoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBwcm9kdWN0PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHAgb2YgYXZhaWxhYmxlUHJvZHVjdHNcIiBbdmFsdWVdPVwicC5wcm9kdWN0TmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJvZHVjdE5hbWUocC5wcm9kdWN0TmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiYXZhaWxhYmxlUHJvZHVjdHMubGVuZ3RoID09PSAwXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiYXJyYXlDb250cm9sSW52YWxpZCgncHJvZHVjdHMnLCBpLCAncHJvZHVjdE5hbWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiB0YW5nb1RyYWZmaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImFycmF5Q29udHJvbEludmFsaWQoJ3Byb2R1Y3RzJywgaSwgJ3Byb2R1Y3ROYW1lJylcIj5Qcm9kdWN0IE5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBDdXN0b21lciBGb290ZmFsbCBBbmFseXRpY3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5Nb250aDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBNYXIgMjAyNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkhTTi9TQUM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIkhzbk51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+U3RvcmUgQ291bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVDb3VudFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInJlY2FsY3VsYXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5SYXRlL1ByaWNlIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJwcmljZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiYXJyYXlDb250cm9sSW52YWxpZCgncHJvZHVjdHMnLCBpLCAncHJpY2UnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJyZWNhbGN1bGF0ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJhcnJheUNvbnRyb2xJbnZhbGlkKCdwcm9kdWN0cycsIGksICdwcmljZScpXCI+UmF0ZS9QcmljZSBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJhbW91bnRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGVyaW9kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb250aGx5XCI+TW9udGhseTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicHJvcmF0ZVwiPlByby1yYXRlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJxdWFydGVybHlcIj5RdWFydGVybHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllYXJseVwiPlllYXJseTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGF4IFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZSBtYi0zIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5UYXg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZFRheCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICArIEFkZCBUYXhcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwidGF4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdCBvZiB0YXhBcnJheS5jb250cm9sczsgbGV0IGogPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImpcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRheC1yb3cgbWItMyBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9kdWN0LWxhYmVsXCI+VGF4IHt7IGogKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJyZW1vdmVUYXgoailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGF4QXJyYXkubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlRheCBUeXBlIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImFycmF5Q29udHJvbEludmFsaWQoJ3RheCcsIGosICd0eXBlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdHQgb2YgdGF4VHlwZXNcIiBbdmFsdWVdPVwidHRcIj57eyB0dCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLW1zZ1wiICpuZ0lmPVwiYXJyYXlDb250cm9sSW52YWxpZCgndGF4JywgaiwgJ3R5cGUnKVwiPlRheCBUeXBlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+VGF4ICUgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJhcnJheUNvbnRyb2xJbnZhbGlkKCd0YXgnLCBqLCAndmFsdWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJyZWNhbGN1bGF0ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJhcnJheUNvbnRyb2xJbnZhbGlkKCd0YXgnLCBqLCAndmFsdWUnKVwiPlRheCAlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+VGF4IEFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4QW1vdW50XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5DdXJyZW5jeSBTeW1ib2w8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFN1bW1hcnkgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1zZWN0aW9uIHAtMyBtdC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeS1sYWJlbFwiPlN1YnRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWVcIj57eyBnZXRDdXJyZW5jeVN5bWJvbCgpIH19IHt7IGdldFN1YnRvdGFsKCkgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5LWxhYmVsXCI+VG90YWwgVGF4PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWVcIj57eyBnZXRDdXJyZW5jeVN5bWJvbCgpIH19IHt7IGdldFRvdGFsVGF4KCkgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHN1bW1hcnktdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5LWxhYmVsLWJvbGRcIj5Ub3RhbCBBbW91bnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeS12YWx1ZS1ib2xkXCI+e3sgZ2V0Q3VycmVuY3lTeW1ib2woKSB9fSB7eyBnZXRUb3RhbEFtb3VudCgpIHwgbnVtYmVyOicxLjItMidcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmVNb2RhbC5kaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBjYW5jZWwgbWUtNCB3LTUwXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInNhdmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgdy01MFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2F2aW5nXCIgY2xhc3M9XCJzdWJtaXRcIj57eyBtb2RlID09PSAnZWRpdCcgPyAnVXBkYXRlIEludm9pY2UnIDogJ0NyZWF0ZSBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2F2aW5nXCIgY2xhc3M9XCJzdWJtaXRcIj5TYXZpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT0gQ1JFRElUIE5PVEUgVEFCID09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYi00XCIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdjcmVkaXROb3RlJyAmJiBtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVkaXROb3RlRm9ybVwiIGNsYXNzPVwiZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IG1iLTNcIj5cbiAgICAgICAgICAgICAgICBBcHBseSBhIGNyZWRpdCBub3RlIC8gZGlzY291bnQgdG8gdGhpcyBpbnZvaWNlLiBNYXhpbXVtIDEwJSBkaXNjb3VudCBhbGxvd2VkLlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5JbnZvaWNlIElEPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbdmFsdWVdPVwiaW52b2ljZURhdGE/Lmludm9pY2VcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlRvdGFsIEFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2xsYXItc2lnblwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYW1vdW50LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlJldmlzZWQgQW1vdW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9sbGFyLXNpZ25cIj57eyBnZXRJbnZvaWNlQ3VycmVuY3lTeW1ib2woKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZXZpc2VkQW1vdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRTcGVjaWFsQ2hhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYW1vdW50LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3JlZGl0TW9yZVRoYW5UZW5QZXJjZW50ID8gJ2Vycm9yaW5wdXQnIDogJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWljb25cIiAqbmdJZj1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXBfY25fZXJyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyA1LjMzMzAxVjcuOTk5NjdNNy45OTk2NyAxMC42NjYzSDguMDA2MzRNMTQuNjY2MyA3Ljk5OTY3QzE0LjY2NjMgMTEuNjgxNiAxMS42ODE2IDE0LjY2NjMgNy45OTk2NyAxNC42NjYzQzQuMzE3NzggMTQuNjY2MyAxLjMzMzAxIDExLjY4MTYgMS4zMzMwMSA3Ljk5OTY3QzEuMzMzMDEgNC4zMTc3OCA0LjMxNzc4IDEuMzMzMDEgNy45OTk2NyAxLjMzMzAxQzExLjY4MTYgMS4zMzMwMSAxNC42NjYzIDQuMzE3NzggMTQuNjY2MyA3Ljk5OTY3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXBfY25fZXJyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJjcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPyAndGV4dC1kYW5nZXInIDogJ2NvbnRlbnR0ZXh0J1wiIGNsYXNzPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vcmUgdGhhbiAxMCUgY2FuJ3QgYmUgcmV2aXNlZCBmcm9tIHRvdGFsIGFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+RGlzY291bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzY291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdFNwZWNpYWxDaGFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA/ICdlcnJvcmlucHV0JyA6ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjcgMy4zMzM2NkwzLjMzMzY2IDEyLjY2N002LjAwMDMzIDQuMzMzNjZDNi4wMDAzMyA1LjI1NDEzIDUuMjU0MTMgNi4wMDAzMyA0LjMzMzY2IDYuMDAwMzNDMy40MTMxOCA2LjAwMDMzIDIuNjY2OTkgNS4yNTQxMyAyLjY2Njk5IDQuMzMzNjZDMi42NjY5OSAzLjQxMzE4IDMuNDEzMTggMi42NjY5OSA0LjMzMzY2IDIuNjY2OTlDNS4yNTQxMyAyLjY2Njk5IDYuMDAwMzMgMy40MTMxOCA2LjAwMDMzIDQuMzMzNjZaTTEzLjMzMzcgMTEuNjY3QzEzLjMzMzcgMTIuNTg3NSAxMi41ODc1IDEzLjMzMzcgMTEuNjY3IDEzLjMzMzdDMTAuNzQ2NSAxMy4zMzM3IDEwLjAwMDMgMTIuNTg3NSAxMC4wMDAzIDExLjY2N0MxMC4wMDAzIDEwLjc0NjUgMTAuNzQ2NSAxMC4wMDAzIDExLjY2NyAxMC4wMDAzQzEyLjU4NzUgMTAuMDAwMyAxMy4zMzM3IDEwLjc0NjUgMTMuMzMzNyAxMS42NjdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiY3JlZGl0TW9yZVRoYW5UZW5QZXJjZW50ID8gJyNGMDQ0MzgnIDogJyM5OEEyQjMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA/ICd0ZXh0LWRhbmdlcicgOiAnY29udGVudHRleHQnXCIgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgSW4gcGVyY2VudGFnZVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC01XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGNhbmNlbCBtZS00IHctNTBcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJjcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgfHwgc2F2aW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhcHBseUNyZWRpdE5vdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgdy01MFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2F2aW5nXCI+QXBwbHkgQ3JlZGl0IE5vdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2F2aW5nXCI+QXBwbHlpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT0gT05FIFRJTUUgRkVFIFRBQiA9PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbWItNFwiICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnb25lVGltZUZlZScgJiYgbW9kZSA9PT0gJ2VkaXQnXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwib25lVGltZUZlZUZvcm1cIiBjbGFzcz1cImZvcm1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50dGV4dCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgQWRkIGEgb25lLXRpbWUgZmVlIChlLmcuIGluc3RhbGxhdGlvbikgdG8gdGhpcyBpbnZvaWNlLlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5JbnZvaWNlIElEPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbdmFsdWVdPVwiaW52b2ljZURhdGE/Lmludm9pY2VcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkN1cnJlbnQgSW52b2ljZSBBbW91bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9sbGFyLXNpZ25cIj57eyBnZXRJbnZvaWNlQ3VycmVuY3lTeW1ib2woKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhbW91bnRcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwiZm9ybS1jb250cm9sIGFtb3VudC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5PbmUgVGltZSBGZWUgKEluc3RhbGxhdGlvbik8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2xsYXItc2lnblwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm9uZVRpbWVGZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdFNwZWNpYWxDaGFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBhbW91bnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGZlZSBhbW91bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBtdC0zIGZlZS1zdW1tYXJ5IHAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbFwiPlNlbGVjdGVkIEludm9pY2UgQW1vdW50ICsgT25lIFRpbWUgRmVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWUtYm9sZFwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVUaW1lRmVlVG90YWwgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC01XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGNhbmNlbCBtZS00IHctNTBcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJzYXZpbmcgfHwgIW9uZVRpbWVGZWVGb3JtLmdldCgnb25lVGltZUZlZScpPy52YWx1ZVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlPbmVUaW1lRmVlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IHctNTBcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNhdmluZ1wiPkFwcGx5IEZlZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzYXZpbmdcIj5BcHBseWluZy4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1pbnZvaWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtYmlsbGluZy9lZGl0LWludm9pY2UvZWRpdC1pbnZvaWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtYmlsbGluZy9lZGl0LWludm9pY2UvZWRpdC1pbnZvaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVMxQyxNQUFNLE9BQU8sb0JBQW9CO0lBNkN0QjtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBaERELFdBQVcsQ0FBTTtJQUNqQixJQUFJLEdBQXNCLE1BQU0sQ0FBQztJQUNqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFFbkMsV0FBVyxDQUFhO0lBQ1AsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUMsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUV4Qix1Q0FBdUM7SUFDdkMsU0FBUyxHQUFXLE1BQU0sQ0FBQztJQUUzQixRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENB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QUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUN0QztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzNELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTFoQlUsb0JBQW9COzRGQUFwQixvQkFBb0Isb0tDWmpDLG1neUJBNlpNOzs0RkRqWk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjtxTUFLbkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmlsbGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iaWxsaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lZGl0LWludm9pY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1pbnZvaWNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VkaXQtaW52b2ljZS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRWRpdEludm9pY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGludm9pY2VEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGU6ICdlZGl0JyB8ICdjcmVhdGUnID0gJ2VkaXQnO1xuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJpbGxpbmdHcm91cHM6IGFueVtdID0gW107XG5cbiAgaW52b2ljZUZvcm0hOiBGb3JtR3JvdXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBzYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBUYWJzOiBlZGl0IHwgY3JlZGl0Tm90ZSB8IG9uZVRpbWVGZWVcbiAgYWN0aXZlVGFiOiBzdHJpbmcgPSAnZWRpdCc7XG5cbiAgdGF4VHlwZXMgPSBbJ0lHU1QnLCAnQ0dTVCcsICdTR1NUJ107XG4gIGN1cnJlbmN5T3B0aW9ucyA9IFsnaW5yJywgJ2RvbGxhcicsICdzaW5nYXBvcmVkb2xsYXInLCAnZXVybyddO1xuICBjdXJyZW5jeUxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBpbnI6ICdJTlIgKOKCuSknLFxuICAgIGRvbGxhcjogJ1VTRCAoJCknLFxuICAgIHNpbmdhcG9yZWRvbGxhcjogJ1NHRCAoUyQpJyxcbiAgICBldXJvOiAnRVVSICjigqwpJ1xuICB9O1xuICAvLyBTeW1ib2wgbWFwIG1pcnJvcnMgdGhlIGJhY2tlbmQncyBDVVJSRU5DWV9TWU1CT0xTIGluIHV0aWxzL2N1cnJlbmN5LmpzIHNvXG4gIC8vIHRoZSBtb2RhbCwgaW52b2ljZSBsaXN0LCBjcmVkaXQtbm90ZSBhbmQgb25lLXRpbWUtZmVlIHBvcHVwcyBhbGwgcmVuZGVyXG4gIC8vIHRoZSBzYW1lIHN5bWJvbCB0aGUgUERGL2VtYWlsIHVzZXMuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVuY3lTeW1ib2xzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGlucjogJ+KCuScsXG4gICAgZG9sbGFyOiAnJCcsXG4gICAgc2luZ2Fwb3JlZG9sbGFyOiAnUyQnLFxuICAgIGV1cm86ICfigqwnLFxuICB9O1xuICBzdGF0dXNPcHRpb25zID0gWydwZW5kaW5nJywgJ2FwcHJvdmVkJ107XG4gIHBheW1lbnRTdGF0dXNPcHRpb25zID0gWyd1bnBhaWQnLCAncGFpZCddO1xuXG4gIC8vIENyZWRpdCBOb3RlXG4gIGNyZWRpdE5vdGVGb3JtITogRm9ybUdyb3VwO1xuICBjcmVkaXRNb3JlVGhhblRlblBlcmNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBQcm9kdWN0cyBmcm9tIGJhc2UgcHJpY2luZ1xuICBhdmFpbGFibGVQcm9kdWN0czogYW55W10gPSBbXTtcblxuICAvLyBPbmUgVGltZSBGZWVcbiAgb25lVGltZUZlZUZvcm0hOiBGb3JtR3JvdXA7XG4gIG9uZVRpbWVGZWVUb3RhbDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQmlsbGluZ0dyb3VwcygpO1xuICAgIHRoaXMubG9hZENsaWVudFByb2R1Y3RzKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuaW5pdENyZWRpdE5vdGVGb3JtKCk7XG4gICAgdGhpcy5pbml0T25lVGltZUZlZUZvcm0oKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcgJiYgdGhpcy5pbnZvaWNlRGF0YSkge1xuICAgICAgdGhpcy5wYXRjaEZvcm0oKTtcbiAgICAgIHRoaXMucGF0Y2hDcmVkaXROb3RlRGVmYXVsdHMoKTtcbiAgICAgIHRoaXMucGF0Y2hPbmVUaW1lRmVlRGVmYXVsdHMoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkQ2xpZW50UHJvZHVjdHMoKSB7XG4gICAgY29uc3QgY0lkID0gdGhpcy5jbGllbnRJZCB8fCB0aGlzLmludm9pY2VEYXRhPy5jbGllbnRJZDtcbiAgICBpZiAoY0lkKSB7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldENsaWVudEJhc2VQcmljaW5nKGNJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlUHJvZHVjdHMgPSByZXM/LmRhdGEgfHwgW107XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVQcm9kdWN0cyA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblByb2R1Y3RDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHByb2R1Y3RHcm91cCA9IHRoaXMucHJvZHVjdHMuYXQoaW5kZXgpO1xuICAgIGNvbnN0IHNlbGVjdGVkTmFtZSA9IHByb2R1Y3RHcm91cC5nZXQoJ3Byb2R1Y3ROYW1lJyk/LnZhbHVlO1xuICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLmF2YWlsYWJsZVByb2R1Y3RzLmZpbmQocCA9PiBwLnByb2R1Y3ROYW1lID09PSBzZWxlY3RlZE5hbWUpO1xuICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICBwcm9kdWN0R3JvdXAuZ2V0KCdwcmljZScpPy5zZXRWYWx1ZShwcm9kdWN0LnByaWNlKTtcbiAgICAgIC8vIFNldCBkZXNjcmlwdGlvbiBiYXNlZCBvbiBwcm9kdWN0IG5hbWVcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgdGFuZ29UcmFmZmljOiAnQ3VzdG9tZXIgRm9vdGZhbGwgQW5hbHl0aWNzJyxcbiAgICAgICAgdGFuZ29ab25lOiAnUHJvZHVjdCBjYXRlZ29yeS9zZWN0aW9uIGFuYWx5dGljcycsXG4gICAgICAgIHRhbmdvVHJheDogJ0N1c3RvbWVyIEpvdXJuZXkgQW5hbHl0aWNzJyxcbiAgICAgICAgcHJpb3JpdHlTdXBwb3J0OiAnUHJpb3JpdHkgU3VwcG9ydCcsXG4gICAgICB9O1xuICAgICAgcHJvZHVjdEdyb3VwLmdldCgnZGVzY3JpcHRpb24nKT8uc2V0VmFsdWUoZGVzY3JpcHRpb25zW3NlbGVjdGVkTmFtZV0gfHwgJycpO1xuICAgICAgdGhpcy5yZWNhbGN1bGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgLy8gQ29udmVydCBjYW1lbENhc2UgdG8gVGl0bGUgQ2FzZSB3aXRoIHNwYWNlczogdGFuZ29UcmFmZmljIC0+IFRhbmdvIFRyYWZmaWNcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoL14uLywgKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgbG9hZEJpbGxpbmdHcm91cHMoKSB7XG4gICAgY29uc3QgY0lkID0gdGhpcy5jbGllbnRJZCB8fCB0aGlzLmludm9pY2VEYXRhPy5jbGllbnRJZDtcbiAgICBpZiAoY0lkKSB7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldEFsbEJpbGxpbmdHcm91cHMoY0lkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzID0gcmVzPy5kYXRhIHx8IFtdO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3VwcyA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2V0VGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT0gRURJVCBJTlZPSUNFID09PT09PT09PT09PT09PT09PT09PVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuaW52b2ljZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGNvbXBhbnlOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgY29tcGFueUFkZHJlc3M6IFsnJ10sXG4gICAgICBHU1ROdW1iZXI6IFsnJ10sXG4gICAgICBQbGFjZU9mU3VwcGx5OiBbJyddLFxuICAgICAgZ3JvdXBOYW1lOiBbJyddLFxuICAgICAgLy8gQmlsbGluZyBHcm91cCBpcyByZXF1aXJlZCB3aGVuIGNyZWF0aW5nIOKAlCB0aGUgcmVzdCBvZiB0aGUgY29tcGFueVxuICAgICAgLy8gZmllbGRzIGF1dG8tZmlsbCBmcm9tIHRoZSBzZWxlY3RlZCBncm91cC5cbiAgICAgIGdyb3VwSWQ6IFsnJywgdGhpcy5tb2RlID09PSAnY3JlYXRlJyA/IFZhbGlkYXRvcnMucmVxdWlyZWQgOiBbXV0sXG4gICAgICBzdG9yZXM6IFswLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGJpbGxpbmdEYXRlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZHVlRGF0ZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGN1cnJlbmN5OiBbJ2lucicsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgc3RhdHVzOiBbJ3BlbmRpbmcnXSxcbiAgICAgIHBheW1lbnRTdGF0dXM6IFsndW5wYWlkJ10sXG4gICAgICBwcm9kdWN0czogdGhpcy5mYi5hcnJheShbXSksXG4gICAgICB0YXg6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVGVtcGxhdGUgaGVscGVyczogc3VyZmFjZSBcInRvdWNoZWQgJiYgaW52YWxpZFwiIHNvIHRoZSBIVE1MIGNhbiBoaWdobGlnaHRcbiAgLy8gdGhlIGZpZWxkIGFuZCByZW5kZXIgYW4gaW5saW5lIGVycm9yLiBEZWZlbnNpdmUgYWdhaW5zdCB0aGUgZm9ybSBub3QgeWV0XG4gIC8vIGJlaW5nIGluaXRpYWxpc2VkIGR1cmluZyB0aGUgZmlyc3QgY2hhbmdlLWRldGVjdGlvbiBwYXNzLlxuICBjb250cm9sSW52YWxpZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5pbnZvaWNlRm9ybT8uZ2V0KG5hbWUpO1xuICAgIHJldHVybiAhIWN0cmwgJiYgY3RybC50b3VjaGVkICYmIGN0cmwuaW52YWxpZDtcbiAgfVxuXG4gIGFycmF5Q29udHJvbEludmFsaWQoYXJyYXlOYW1lOiAncHJvZHVjdHMnIHwgJ3RheCcsIGluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFyciA9IHRoaXMuaW52b2ljZUZvcm0/LmdldChhcnJheU5hbWUpIGFzIEZvcm1BcnJheSB8IG51bGw7XG4gICAgY29uc3QgY3RybCA9IGFycj8uYXQoaW5kZXgpPy5nZXQobmFtZSk7XG4gICAgcmV0dXJuICEhY3RybCAmJiBjdHJsLnRvdWNoZWQgJiYgY3RybC5pbnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0ZpcnN0SW52YWxpZCgpOiB2b2lkIHtcbiAgICAvLyBGaW5kIHRoZSBmaXJzdCBpbnZhbGlkIGNvbnRyb2wgaW5zaWRlIHRoZSBtb2RhbCBhbmQgYnJpbmcgaXQgaW50byB2aWV3LlxuICAgIC8vIFNjb3BlZCB0byAubW9kYWwtY29udGVudCBzbyB3ZSBkb24ndCBncmFiIGZpZWxkcyBmcm9tIG90aGVyIG1vZGFscyBvblxuICAgIC8vIHRoZSBwYWdlIGlmIGFueSBhcmUgb3Blbi5cbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1vZGFsLWNvbnRlbnQnKTtcbiAgICBjb25zdCBmaXJzdCA9IHJvb3Q/LnF1ZXJ5U2VsZWN0b3IoJy5pcy1pbnZhbGlkJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3Quc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgIGlmICh0eXBlb2YgZmlyc3QuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZmlyc3QuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBwcm9kdWN0cygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmludm9pY2VGb3JtLmdldCgncHJvZHVjdHMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBnZXQgdGF4QXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5pbnZvaWNlRm9ybS5nZXQoJ3RheCcpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGNyZWF0ZVByb2R1Y3RHcm91cChwcm9kdWN0PzogYW55KTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwcm9kdWN0TmFtZTogW3Byb2R1Y3Q/LnByb2R1Y3ROYW1lIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbcHJvZHVjdD8uZGVzY3JpcHRpb24gfHwgJyddLFxuICAgICAgbW9udGg6IFtwcm9kdWN0Py5tb250aCB8fCAnJ10sXG4gICAgICBIc25OdW1iZXI6IFtwcm9kdWN0Py5Ic25OdW1iZXIgfHwgJzk5ODMxNCddLFxuICAgICAgc3RvcmVDb3VudDogW3Byb2R1Y3Q/LnN0b3JlQ291bnQgfHwgMCwgVmFsaWRhdG9ycy5taW4oMCldLFxuICAgICAgcHJpY2U6IFtwcm9kdWN0Py5wcmljZSB8fCAwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCldXSxcbiAgICAgIGFtb3VudDogW3Byb2R1Y3Q/LmFtb3VudCB8fCAwXSxcbiAgICAgIHBlcmlvZDogW3Byb2R1Y3Q/LnBlcmlvZCB8fCAnbW9udGhseSddLFxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVGF4R3JvdXAodGF4PzogYW55KTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICB0eXBlOiBbdGF4Py50eXBlIHx8ICdJR1NUJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZTogW3RheD8udmFsdWUgfHwgMTgsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMTAwKV1dLFxuICAgICAgdGF4QW1vdW50OiBbdGF4Py50YXhBbW91bnQgfHwgJzAnXSxcbiAgICAgIC8vIERlZmF1bHQgdGhlIHRheC1yb3cgc3ltYm9sIHRvIHRoZSBpbnZvaWNlJ3MgY3VycmVuY3kgKHdhcyBoYXJkY29kZWRcbiAgICAgIC8vIHRvIOKCuSwgd2hpY2ggbGVha2VkIGludG8gdGhlIHNhdmVkIGRvYyBmb3Igbm9uLUlOUiBpbnZvaWNlcykuXG4gICAgICBjdXJyZW5jeTogW3RheD8uY3VycmVuY3kgfHwgdGhpcy5zeW1ib2xGb3IodGhpcy5pbnZvaWNlRm9ybT8uZ2V0KCdjdXJyZW5jeScpPy52YWx1ZSldLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW1ib2xGb3IoY29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lTeW1ib2xzW2NvZGUgfHwgJyddIHx8ICckJztcbiAgfVxuXG4gIGFkZFByb2R1Y3QoKSB7XG4gICAgdGhpcy5wcm9kdWN0cy5wdXNoKHRoaXMuY3JlYXRlUHJvZHVjdEdyb3VwKCkpO1xuICB9XG5cbiAgcmVtb3ZlUHJvZHVjdChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5wcm9kdWN0cy5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZSgpO1xuICB9XG5cbiAgYWRkVGF4KCkge1xuICAgIHRoaXMudGF4QXJyYXkucHVzaCh0aGlzLmNyZWF0ZVRheEdyb3VwKCkpO1xuICB9XG5cbiAgcmVtb3ZlVGF4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnRheEFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgICB0aGlzLnJlY2FsY3VsYXRlKCk7XG4gIH1cblxuICBwYXRjaEZvcm0oKSB7XG4gICAgY29uc3QgaW52ID0gdGhpcy5pbnZvaWNlRGF0YTtcblxuICAgIHRoaXMuaW52b2ljZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBjb21wYW55TmFtZTogaW52LmNvbXBhbnlOYW1lIHx8ICcnLFxuICAgICAgY29tcGFueUFkZHJlc3M6IGludi5jb21wYW55QWRkcmVzcyB8fCAnJyxcbiAgICAgIEdTVE51bWJlcjogaW52LkdTVE51bWJlciB8fCAnJyxcbiAgICAgIFBsYWNlT2ZTdXBwbHk6IGludi5QbGFjZU9mU3VwcGx5IHx8ICcnLFxuICAgICAgZ3JvdXBOYW1lOiBpbnYuZ3JvdXBOYW1lIHx8ICcnLFxuICAgICAgZ3JvdXBJZDogaW52Lmdyb3VwSWQgfHwgJycsXG4gICAgICBzdG9yZXM6IGludi5zdG9yZXMgfHwgMCxcbiAgICAgIGJpbGxpbmdEYXRlOiB0aGlzLmZvcm1hdERhdGVGb3JJbnB1dChpbnYuYmlsbGluZ0RhdGUpLFxuICAgICAgZHVlRGF0ZTogdGhpcy5mb3JtYXREYXRlRm9ySW5wdXQoaW52LmR1ZURhdGUpLFxuICAgICAgY3VycmVuY3k6IGludi5jdXJyZW5jeSB8fCAnaW5yJyxcbiAgICAgIHN0YXR1czogaW52LnN0YXR1cyB8fCAncGVuZGluZycsXG4gICAgICBwYXltZW50U3RhdHVzOiBpbnYucGF5bWVudFN0YXR1cyB8fCAndW5wYWlkJyxcbiAgICB9KTtcblxuICAgIC8vIFBhdGNoIHByb2R1Y3RzXG4gICAgaWYgKGludi5wcm9kdWN0cz8ubGVuZ3RoKSB7XG4gICAgICBpbnYucHJvZHVjdHMuZm9yRWFjaCgocDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZHVjdHMucHVzaCh0aGlzLmNyZWF0ZVByb2R1Y3RHcm91cChwKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRQcm9kdWN0KCk7XG4gICAgfVxuXG4gICAgLy8gUGF0Y2ggdGF4XG4gICAgaWYgKGludi50YXg/Lmxlbmd0aCkge1xuICAgICAgaW52LnRheC5mb3JFYWNoKCh0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50YXhBcnJheS5wdXNoKHRoaXMuY3JlYXRlVGF4R3JvdXAodCkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkVGF4KCk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZUZvcklucHV0KGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGU/LiRkYXRlIHx8IGRhdGUpO1xuICAgIGlmIChpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiAnJztcbiAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH1cblxuICBvbkdyb3VwQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZEdyb3VwID0gdGhpcy5iaWxsaW5nR3JvdXBzLmZpbmQoZyA9PiBnLl9pZCA9PT0gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoc2VsZWN0ZWRHcm91cCkge1xuICAgICAgdGhpcy5pbnZvaWNlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgZ3JvdXBOYW1lOiBzZWxlY3RlZEdyb3VwLmdyb3VwTmFtZSxcbiAgICAgICAgZ3JvdXBJZDogc2VsZWN0ZWRHcm91cC5faWQsXG4gICAgICAgIGNvbXBhbnlOYW1lOiBzZWxlY3RlZEdyb3VwLnJlZ2lzdGVyZWRDb21wYW55TmFtZSB8fCAnJyxcbiAgICAgICAgY29tcGFueUFkZHJlc3M6IFtzZWxlY3RlZEdyb3VwLmFkZHJlc3NMaW5lT25lLCBzZWxlY3RlZEdyb3VwLmFkZHJlc3NMaW5lVHdvLCBzZWxlY3RlZEdyb3VwLmNpdHksIHNlbGVjdGVkR3JvdXAuc3RhdGUsIHNlbGVjdGVkR3JvdXAuY291bnRyeSwgc2VsZWN0ZWRHcm91cC5waW5Db2RlXS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKSxcbiAgICAgICAgR1NUTnVtYmVyOiBzZWxlY3RlZEdyb3VwLmdzdCB8fCAnJyxcbiAgICAgICAgUGxhY2VPZlN1cHBseTogc2VsZWN0ZWRHcm91cC5wbGFjZU9mU3VwcGx5IHx8ICcnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVjYWxjdWxhdGUoKSB7XG4gICAgbGV0IHN1YnRvdGFsID0gMDtcbiAgICB0aGlzLnByb2R1Y3RzLmNvbnRyb2xzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZUNvdW50ID0gZ3JvdXAuZ2V0KCdzdG9yZUNvdW50Jyk/LnZhbHVlIHx8IDA7XG4gICAgICBjb25zdCBwcmljZSA9IGdyb3VwLmdldCgncHJpY2UnKT8udmFsdWUgfHwgMDtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHN0b3JlQ291bnQgKiBwcmljZTtcbiAgICAgIGdyb3VwLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKHBhcnNlRmxvYXQoYW1vdW50LnRvRml4ZWQoMikpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBzdWJ0b3RhbCArPSBhbW91bnQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRheEFycmF5LmNvbnRyb2xzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGdyb3VwLmdldCgndmFsdWUnKT8udmFsdWUgfHwgMDtcbiAgICAgIGNvbnN0IHRheEFtb3VudCA9IChzdWJ0b3RhbCAqIHZhbHVlIC8gMTAwKS50b0ZpeGVkKDIpO1xuICAgICAgZ3JvdXAuZ2V0KCd0YXhBbW91bnQnKT8uc2V0VmFsdWUodGF4QW1vdW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgdG90YWxTdG9yZXMgPSAwO1xuICAgIHRoaXMucHJvZHVjdHMuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIHRvdGFsU3RvcmVzICs9IGdyb3VwLmdldCgnc3RvcmVDb3VudCcpPy52YWx1ZSB8fCAwO1xuICAgIH0pO1xuICAgIHRoaXMuaW52b2ljZUZvcm0uZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUodG90YWxTdG9yZXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0U3VidG90YWwoKTogbnVtYmVyIHtcbiAgICBsZXQgc3VidG90YWwgPSAwO1xuICAgIHRoaXMucHJvZHVjdHMuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIHN1YnRvdGFsICs9IGdyb3VwLmdldCgnYW1vdW50Jyk/LnZhbHVlIHx8IDA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1YnRvdGFsO1xuICB9XG5cbiAgZ2V0VG90YWxUYXgoKTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWxUYXggPSAwO1xuICAgIHRoaXMudGF4QXJyYXkuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIHRvdGFsVGF4ICs9IHBhcnNlRmxvYXQoZ3JvdXAuZ2V0KCd0YXhBbW91bnQnKT8udmFsdWUgfHwgJzAnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdG90YWxUYXg7XG4gIH1cblxuICBnZXRUb3RhbEFtb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldFN1YnRvdGFsKCkgKyB0aGlzLmdldFRvdGFsVGF4KCk7XG4gIH1cblxuICBnZXRDdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbEZvcih0aGlzLmludm9pY2VGb3JtLmdldCgnY3VycmVuY3knKT8udmFsdWUpO1xuICB9XG5cbiAgZ2V0SW52b2ljZUN1cnJlbmN5U3ltYm9sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sRm9yKHRoaXMuaW52b2ljZURhdGE/LmN1cnJlbmN5KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICh0aGlzLmludm9pY2VGb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuaW52b2ljZUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgLy8gRGVmZXIgdG8gbmV4dCB0aWNrIHNvIEFuZ3VsYXIgcmVuZGVycyB0aGUgLmlzLWludmFsaWQgY2xhc3Nlc1xuICAgICAgLy8gYmVmb3JlIHdlIHF1ZXJ5IHRoZSBET00gZm9yIHRoZSBmaXJzdCBpbnZhbGlkIGNvbnRyb2wgdG8gc2Nyb2xsIHRvLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjcm9sbFRvRmlyc3RJbnZhbGlkKCksIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmludm9pY2VGb3JtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBjb21wYW55TmFtZTogZm9ybVZhbHVlLmNvbXBhbnlOYW1lLFxuICAgICAgY29tcGFueUFkZHJlc3M6IGZvcm1WYWx1ZS5jb21wYW55QWRkcmVzcyxcbiAgICAgIEdTVE51bWJlcjogZm9ybVZhbHVlLkdTVE51bWJlcixcbiAgICAgIFBsYWNlT2ZTdXBwbHk6IGZvcm1WYWx1ZS5QbGFjZU9mU3VwcGx5LFxuICAgICAgZ3JvdXBOYW1lOiBmb3JtVmFsdWUuZ3JvdXBOYW1lLFxuICAgICAgZ3JvdXBJZDogZm9ybVZhbHVlLmdyb3VwSWQsXG4gICAgICBzdG9yZXM6IGZvcm1WYWx1ZS5zdG9yZXMsXG4gICAgICBiaWxsaW5nRGF0ZTogZm9ybVZhbHVlLmJpbGxpbmdEYXRlLFxuICAgICAgZHVlRGF0ZTogZm9ybVZhbHVlLmR1ZURhdGUsXG4gICAgICBjdXJyZW5jeTogZm9ybVZhbHVlLmN1cnJlbmN5LFxuICAgICAgc3RhdHVzOiBmb3JtVmFsdWUuc3RhdHVzLFxuICAgICAgcGF5bWVudFN0YXR1czogZm9ybVZhbHVlLnBheW1lbnRTdGF0dXMsXG4gICAgICBwcm9kdWN0czogZm9ybVZhbHVlLnByb2R1Y3RzLFxuICAgICAgdGF4OiBmb3JtVmFsdWUudGF4LFxuICAgICAgYW1vdW50OiB0aGlzLmdldFN1YnRvdGFsKCksXG4gICAgICB0b3RhbEFtb3VudDogTWF0aC5yb3VuZCh0aGlzLmdldFRvdGFsQW1vdW50KCkpLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgIHBheWxvYWQuX2lkID0gdGhpcy5pbnZvaWNlRGF0YS5faWQ7XG4gICAgICBwYXlsb2FkLmludm9pY2UgPSB0aGlzLmludm9pY2VEYXRhLmludm9pY2U7XG4gICAgICBwYXlsb2FkLmNsaWVudElkID0gdGhpcy5pbnZvaWNlRGF0YS5jbGllbnRJZDtcbiAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlSW52b2ljZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdCgnSW52b2ljZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgndXBkYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZSBpbnZvaWNlJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXlsb2FkLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcbiAgICAgIC8vIEZsYWcgdGhlIGJhY2tlbmQgdG8gdGFrZSB0aGUgXCJjdXN0b20gY3JlYXRlXCIgcGF0aCB0aGF0IHBlcnNpc3RzIHdoYXRcbiAgICAgIC8vIHRoZSBmb3JtIGJ1aWx0LiBUaGUgbGVnYWN5IC9jcmVhdGVJbnZvaWNlIGNvbnRyYWN0IGV4cGVjdHMgZWl0aGVyXG4gICAgICAvLyBhbGxDbGllbnQrY2xpZW50TGlzdCBvciBpbnZvaWNlSWQ7IHdpdGhvdXQgdGhpcyBmbGFnLCB0aGUgc2VydmVyXG4gICAgICAvLyBzaWxlbnRseSByZXR1cm5zIDJ4eCBhbmQgd3JpdGVzIG5vdGhpbmcuXG4gICAgICBwYXlsb2FkLmN1c3RvbUludm9pY2UgPSB0cnVlO1xuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5jcmVhdGVJbnZvaWNlKHBheWxvYWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdJbnZvaWNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdjcmVhdGVkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBtc2cgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gY3JlYXRlIGludm9pY2UnO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT0gQ1JFRElUIE5PVEUgPT09PT09PT09PT09PT09PT09PT09XG5cbiAgaW5pdENyZWRpdE5vdGVGb3JtKCkge1xuICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGFtb3VudDogWycnXSxcbiAgICAgIHJldmlzZWRBbW91bnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkaXNjb3VudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoMTApXV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNyZWRpdE5vdGVGb3JtLmdldCgncmV2aXNlZEFtb3VudCcpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcbiAgICAgICAgaWYgKGFtb3VudCkge1xuICAgICAgICAgIGNvbnN0IGRpc2NvdW50ID0gKChhbW91bnQgLSBlKSAvIGFtb3VudCAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICB0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA9IHBhcnNlRmxvYXQoZGlzY291bnQpID4gMTAgfHwgaXNOYU4oZSkgfHwgcGFyc2VGbG9hdChkaXNjb3VudCkgPCAwIHx8IGUgPCAwO1xuICAgICAgICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0uZ2V0KCdkaXNjb3VudCcpPy5zZXRWYWx1ZShkaXNjb3VudCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWRpdE5vdGVGb3JtLmdldCgnZGlzY291bnQnKT8uc2V0VmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0uZ2V0KCdkaXNjb3VudCcpPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUpIHtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcbiAgICAgICAgY29uc3QgcmV2aXNlZCA9IHBhcnNlSW50KChhbW91bnQgKiAoMSAtIGUgLyAxMDApKS50b0ZpeGVkKCkpO1xuICAgICAgICB0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA9IHBhcnNlRmxvYXQoZSkgPiAxMCB8fCBpc05hTihlKSB8fCBlIDwgMCB8fCByZXZpc2VkIDwgMDtcbiAgICAgICAgdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8uc2V0VmFsdWUocmV2aXNlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8uc2V0VmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hDcmVkaXROb3RlRGVmYXVsdHMoKSB7XG4gICAgaWYgKHRoaXMuaW52b2ljZURhdGEpIHtcbiAgICAgIHRoaXMuY3JlZGl0Tm90ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGFtb3VudDogdGhpcy5pbnZvaWNlRGF0YS5hbW91bnQgfHwgdGhpcy5pbnZvaWNlRGF0YS50b3RhbEFtb3VudCB8fCAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlDcmVkaXROb3RlKCkge1xuICAgIGlmICh0aGlzLmNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xuICAgICAgaW52b2ljZTogdGhpcy5pbnZvaWNlRGF0YS5pbnZvaWNlLFxuICAgICAgcmV2aXNlZEFtb3VudDogdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ3JldmlzZWRBbW91bnQnKT8udmFsdWUsXG4gICAgICBkaXNjb3VudDogdGhpcy5jcmVkaXROb3RlRm9ybS5nZXQoJ2Rpc2NvdW50Jyk/LnZhbHVlLFxuICAgIH07XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYXBwbHlEaXNjb3VudChyZXF1ZXN0RGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdCgnQ3JlZGl0IG5vdGUgYXBwbGllZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdjcmVkaXRBcHBsaWVkJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBhcHBseSBjcmVkaXQgbm90ZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb21pdFNwZWNpYWxDaGFyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBrID0gZXZlbnQuY2hhckNvZGU7XG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT0gT05FIFRJTUUgRkVFID09PT09PT09PT09PT09PT09PT09PVxuXG4gIGluaXRPbmVUaW1lRmVlRm9ybSgpIHtcbiAgICB0aGlzLm9uZVRpbWVGZWVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBhbW91bnQ6IFsnJ10sXG4gICAgICBvbmVUaW1lRmVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vbmVUaW1lRmVlRm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hPbmVUaW1lRmVlRGVmYXVsdHMoKSB7XG4gICAgaWYgKHRoaXMuaW52b2ljZURhdGEpIHtcbiAgICAgIHRoaXMub25lVGltZUZlZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGFtb3VudDogdGhpcy5pbnZvaWNlRGF0YS5hbW91bnQgfHwgdGhpcy5pbnZvaWNlRGF0YS50b3RhbEFtb3VudCB8fCAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZU9uZVRpbWVGZWVUb3RhbCgpIHtcbiAgICBjb25zdCBhbW91bnQgPSBwYXJzZUZsb2F0KHRoaXMub25lVGltZUZlZUZvcm0uZ2V0KCdhbW91bnQnKT8udmFsdWUgfHwgJzAnKTtcbiAgICBjb25zdCBmZWUgPSBwYXJzZUZsb2F0KHRoaXMub25lVGltZUZlZUZvcm0uZ2V0KCdvbmVUaW1lRmVlJyk/LnZhbHVlIHx8ICcwJyk7XG4gICAgdGhpcy5vbmVUaW1lRmVlVG90YWwgPSBwYXJzZUZsb2F0KChhbW91bnQgKyBmZWUpLnRvRml4ZWQoMikpO1xuICB9XG5cbiAgYXBwbHlPbmVUaW1lRmVlKCkge1xuICAgIGNvbnN0IGZlZVZhbHVlID0gdGhpcy5vbmVUaW1lRmVlRm9ybS5nZXQoJ29uZVRpbWVGZWUnKT8udmFsdWU7XG4gICAgaWYgKCFmZWVWYWx1ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xuICAgICAgb25lVGltZUZlZTogZmVlVmFsdWUsXG4gICAgfTtcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5vbmVUaW1lRmVlKHJlcXVlc3REYXRhLCB0aGlzLmludm9pY2VEYXRhLmludm9pY2UpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRQcmltYXJ5VG9hc3QoJ09uZSB0aW1lIGZlZSBhcHBsaWVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ2ZlZUFwcGxpZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGFwcGx5IG9uZSB0aW1lIGZlZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC01IHB4LTYgcGItMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmcgbXQtMlwiPnt7IG1vZGUgPT09ICdlZGl0JyA/ICdJbnZvaWNlJyA6ICdDcmVhdGUgSW52b2ljZScgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0J1wiIGNsYXNzPVwiaW52b2ljZS1udW1iZXJcIj57eyBpbnZvaWNlRGF0YT8uaW52b2ljZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVGFicyAob25seSBpbiBlZGl0IG1vZGUpIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhciBtdC0zXCIgKm5nSWY9XCJtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWItYnRuXCIgW25nQ2xhc3NdPVwiYWN0aXZlVGFiID09PSAnZWRpdCcgPyAndGFiLWFjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRhYignZWRpdCcpXCI+RWRpdCBJbnZvaWNlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGFiLWJ0blwiIFtuZ0NsYXNzXT1cImFjdGl2ZVRhYiA9PT0gJ2NyZWRpdE5vdGUnID8gJ3RhYi1hY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUYWIoJ2NyZWRpdE5vdGUnKVwiPkNyZWRpdCBOb3RlPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGFiLWJ0blwiIFtuZ0NsYXNzXT1cImFjdGl2ZVRhYiA9PT0gJ29uZVRpbWVGZWUnID8gJ3RhYi1hY3RpdmUnIDogJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUYWIoJ29uZVRpbWVGZWUnKVwiPk9uZSBUaW1lIEZlZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09IEVESVQgSU5WT0lDRSBUQUIgPT09PT09PT09PT09PT09PT09PT09PT09IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG1iLTRcIiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2VkaXQnIHx8IG1vZGUgPT09ICdjcmVhdGUnXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiaW52b2ljZUZvcm1cIiBjbGFzcz1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuXG4gICAgICAgICAgICA8IS0tIENvbXBhbnkgRGV0YWlscyBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGUgbWItM1wiPkNvbXBhbnkgRGV0YWlsczwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+Q29tcGFueSBOYW1lIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImNvbXBhbnlOYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbEludmFsaWQoJ2NvbXBhbnlOYW1lJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdjb21wYW55TmFtZScpXCI+Q29tcGFueSBOYW1lIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+R1NUIE51bWJlcjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIkdTVE51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5Db21wYW55IEFkZHJlc3M8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJjb21wYW55QWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlBsYWNlIG9mIFN1cHBseTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIlBsYWNlT2ZTdXBwbHlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtyZWFkb25seV09XCJtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEJpbGxpbmcgR3JvdXAgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5CaWxsaW5nIEdyb3VwIDxzcGFuICpuZ0lmPVwibW9kZSA9PT0gJ2NyZWF0ZSdcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwibW9kZSA9PT0gJ2NyZWF0ZSdcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9sSW52YWxpZCgnZ3JvdXBJZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Hcm91cENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGJpbGxpbmcgZ3JvdXA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGcgb2YgYmlsbGluZ0dyb3Vwc1wiIFt2YWx1ZV09XCJnLl9pZFwiPnt7IGcuZ3JvdXBOYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJtb2RlID09PSAnZWRpdCdcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJpbnZvaWNlRm9ybS5nZXQoJ2dyb3VwTmFtZScpPy52YWx1ZSB8fCAnRGVmYXVsdCBHcm91cCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdncm91cElkJylcIj5CaWxsaW5nIEdyb3VwIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+R3JvdXAgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImdyb3VwTmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3JlYWRvbmx5XT1cIm1vZGUgPT09ICdlZGl0J1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSW52b2ljZSBEZXRhaWxzIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZSBtYi0zIG10LTJcIj5JbnZvaWNlIERldGFpbHM8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkJpbGxpbmcgRGF0ZSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJiaWxsaW5nRGF0ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xJbnZhbGlkKCdiaWxsaW5nRGF0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLW1zZ1wiICpuZ0lmPVwiY29udHJvbEludmFsaWQoJ2JpbGxpbmdEYXRlJylcIj5CaWxsaW5nIERhdGUgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5EdWUgRGF0ZSA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJkdWVEYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbEludmFsaWQoJ2R1ZURhdGUnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImNvbnRyb2xJbnZhbGlkKCdkdWVEYXRlJylcIj5EdWUgRGF0ZSBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkN1cnJlbmN5IDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xJbnZhbGlkKCdjdXJyZW5jeScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGN1cnJlbmN5T3B0aW9uc1wiIFt2YWx1ZV09XCJjXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVuY3lMYWJlbHNbY10gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJjb250cm9sSW52YWxpZCgnY3VycmVuY3knKVwiPkN1cnJlbmN5IGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+Tm8uIG9mIFN0b3JlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVzXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwhLS0gUHJvZHVjdHMgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIG1iLTMgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb2R1Y3RzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJhZGRQcm9kdWN0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIFByb2R1Y3RcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwicHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RzLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZHVjdC1yb3cgbWItMyBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9kdWN0LWxhYmVsXCI+UHJvZHVjdCB7eyBpICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIiAoY2xpY2spPVwicmVtb3ZlUHJvZHVjdChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+UHJvZHVjdCBOYW1lIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cImF2YWlsYWJsZVByb2R1Y3RzLmxlbmd0aCA+IDBcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJhcnJheUNvbnRyb2xJbnZhbGlkKCdwcm9kdWN0cycsIGksICdwcm9kdWN0TmFtZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblByb2R1Y3RDaGFuZ2UoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBwcm9kdWN0PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHAgb2YgYXZhaWxhYmxlUHJvZHVjdHNcIiBbdmFsdWVdPVwicC5wcm9kdWN0TmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJvZHVjdE5hbWUocC5wcm9kdWN0TmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiYXZhaWxhYmxlUHJvZHVjdHMubGVuZ3RoID09PSAwXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiYXJyYXlDb250cm9sSW52YWxpZCgncHJvZHVjdHMnLCBpLCAncHJvZHVjdE5hbWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiB0YW5nb1RyYWZmaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1tc2dcIiAqbmdJZj1cImFycmF5Q29udHJvbEludmFsaWQoJ3Byb2R1Y3RzJywgaSwgJ3Byb2R1Y3ROYW1lJylcIj5Qcm9kdWN0IE5hbWUgaXMgcmVxdWlyZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBDdXN0b21lciBGb290ZmFsbCBBbmFseXRpY3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5Nb250aDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBNYXIgMjAyNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkhTTi9TQUM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIkhzbk51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+U3RvcmUgQ291bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RvcmVDb3VudFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInJlY2FsY3VsYXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5SYXRlL1ByaWNlIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJwcmljZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiYXJyYXlDb250cm9sSW52YWxpZCgncHJvZHVjdHMnLCBpLCAncHJpY2UnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJyZWNhbGN1bGF0ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJhcnJheUNvbnRyb2xJbnZhbGlkKCdwcm9kdWN0cycsIGksICdwcmljZScpXCI+UmF0ZS9QcmljZSBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPkFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJhbW91bnRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicGVyaW9kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb250aGx5XCI+TW9udGhseTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicHJvcmF0ZVwiPlByby1yYXRlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJxdWFydGVybHlcIj5RdWFydGVybHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllYXJseVwiPlllYXJseTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGF4IFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZSBtYi0zIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5UYXg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZFRheCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICArIEFkZCBUYXhcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwidGF4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdCBvZiB0YXhBcnJheS5jb250cm9sczsgbGV0IGogPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImpcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRheC1yb3cgbWItMyBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9kdWN0LWxhYmVsXCI+VGF4IHt7IGogKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJyZW1vdmVUYXgoailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGF4QXJyYXkubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZm9ybS1ncm91cCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMVwiPlRheCBUeXBlIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImFycmF5Q29udHJvbEludmFsaWQoJ3RheCcsIGosICd0eXBlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdHQgb2YgdGF4VHlwZXNcIiBbdmFsdWVdPVwidHRcIj57eyB0dCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLW1zZ1wiICpuZ0lmPVwiYXJyYXlDb250cm9sSW52YWxpZCgndGF4JywgaiwgJ3R5cGUnKVwiPlRheCBUeXBlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+VGF4ICUgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJhcnJheUNvbnRyb2xJbnZhbGlkKCd0YXgnLCBqLCAndmFsdWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJyZWNhbGN1bGF0ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtbXNnXCIgKm5nSWY9XCJhcnJheUNvbnRyb2xJbnZhbGlkKCd0YXgnLCBqLCAndmFsdWUnKVwiPlRheCAlIGlzIHJlcXVpcmVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBmb3JtLWdyb3VwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0xXCI+VGF4IEFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4QW1vdW50XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGZvcm0tZ3JvdXAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTFcIj5DdXJyZW5jeSBTeW1ib2w8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFN1bW1hcnkgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1zZWN0aW9uIHAtMyBtdC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeS1sYWJlbFwiPlN1YnRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWVcIj57eyBnZXRDdXJyZW5jeVN5bWJvbCgpIH19IHt7IGdldFN1YnRvdGFsKCkgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5LWxhYmVsXCI+VG90YWwgVGF4PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWVcIj57eyBnZXRDdXJyZW5jeVN5bWJvbCgpIH19IHt7IGdldFRvdGFsVGF4KCkgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHN1bW1hcnktdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5LWxhYmVsLWJvbGRcIj5Ub3RhbCBBbW91bnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeS12YWx1ZS1ib2xkXCI+e3sgZ2V0Q3VycmVuY3lTeW1ib2woKSB9fSB7eyBnZXRUb3RhbEFtb3VudCgpIHwgbnVtYmVyOicxLjItMidcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhY3RpdmVNb2RhbC5kaXNtaXNzKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBjYW5jZWwgbWUtNCB3LTUwXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInNhdmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgdy01MFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2F2aW5nXCIgY2xhc3M9XCJzdWJtaXRcIj57eyBtb2RlID09PSAnZWRpdCcgPyAnVXBkYXRlIEludm9pY2UnIDogJ0NyZWF0ZSBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2F2aW5nXCIgY2xhc3M9XCJzdWJtaXRcIj5TYXZpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT0gQ1JFRElUIE5PVEUgVEFCID09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYi00XCIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdjcmVkaXROb3RlJyAmJiBtb2RlID09PSAnZWRpdCdcIj5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVkaXROb3RlRm9ybVwiIGNsYXNzPVwiZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IG1iLTNcIj5cbiAgICAgICAgICAgICAgICBBcHBseSBhIGNyZWRpdCBub3RlIC8gZGlzY291bnQgdG8gdGhpcyBpbnZvaWNlLiBNYXhpbXVtIDEwJSBkaXNjb3VudCBhbGxvd2VkLlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5JbnZvaWNlIElEPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbdmFsdWVdPVwiaW52b2ljZURhdGE/Lmludm9pY2VcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlRvdGFsIEFtb3VudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2xsYXItc2lnblwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYW1vdW50LWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPlJldmlzZWQgQW1vdW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9sbGFyLXNpZ25cIj57eyBnZXRJbnZvaWNlQ3VycmVuY3lTeW1ib2woKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZXZpc2VkQW1vdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRTcGVjaWFsQ2hhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYW1vdW50LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY3JlZGl0TW9yZVRoYW5UZW5QZXJjZW50ID8gJ2Vycm9yaW5wdXQnIDogJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWljb25cIiAqbmdJZj1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXBfY25fZXJyKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyA1LjMzMzAxVjcuOTk5NjdNNy45OTk2NyAxMC42NjYzSDguMDA2MzRNMTQuNjY2MyA3Ljk5OTY3QzE0LjY2NjMgMTEuNjgxNiAxMS42ODE2IDE0LjY2NjMgNy45OTk2NyAxNC42NjYzQzQuMzE3NzggMTQuNjY2MyAxLjMzMzAxIDExLjY4MTYgMS4zMzMwMSA3Ljk5OTY3QzEuMzMzMDEgNC4zMTc3OCA0LjMxNzc4IDEuMzMzMDEgNy45OTk2NyAxLjMzMzAxQzExLjY4MTYgMS4zMzMwMSAxNC42NjYzIDQuMzE3NzggMTQuNjY2MyA3Ljk5OTY3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXBfY25fZXJyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJjcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgPyAndGV4dC1kYW5nZXInIDogJ2NvbnRlbnR0ZXh0J1wiIGNsYXNzPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vcmUgdGhhbiAxMCUgY2FuJ3QgYmUgcmV2aXNlZCBmcm9tIHRvdGFsIGFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJoZWFkaW5ndGV4dCBtYi0yXCI+RGlzY291bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzY291bnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdFNwZWNpYWxDaGFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA/ICdlcnJvcmlucHV0JyA6ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjcgMy4zMzM2NkwzLjMzMzY2IDEyLjY2N002LjAwMDMzIDQuMzMzNjZDNi4wMDAzMyA1LjI1NDEzIDUuMjU0MTMgNi4wMDAzMyA0LjMzMzY2IDYuMDAwMzNDMy40MTMxOCA2LjAwMDMzIDIuNjY2OTkgNS4yNTQxMyAyLjY2Njk5IDQuMzMzNjZDMi42NjY5OSAzLjQxMzE4IDMuNDEzMTggMi42NjY5OSA0LjMzMzY2IDIuNjY2OTlDNS4yNTQxMyAyLjY2Njk5IDYuMDAwMzMgMy40MTMxOCA2LjAwMDMzIDQuMzMzNjZaTTEzLjMzMzcgMTEuNjY3QzEzLjMzMzcgMTIuNTg3NSAxMi41ODc1IDEzLjMzMzcgMTEuNjY3IDEzLjMzMzdDMTAuNzQ2NSAxMy4zMzM3IDEwLjAwMDMgMTIuNTg3NSAxMC4wMDAzIDExLjY2N0MxMC4wMDAzIDEwLjc0NjUgMTAuNzQ2NSAxMC4wMDAzIDExLjY2NyAxMC4wMDAzQzEyLjU4NzUgMTAuMDAwMyAxMy4zMzM3IDEwLjc0NjUgMTMuMzMzNyAxMS42NjdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiY3JlZGl0TW9yZVRoYW5UZW5QZXJjZW50ID8gJyNGMDQ0MzgnIDogJyM5OEEyQjMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImNyZWRpdE1vcmVUaGFuVGVuUGVyY2VudCA/ICd0ZXh0LWRhbmdlcicgOiAnY29udGVudHRleHQnXCIgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgSW4gcGVyY2VudGFnZVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC01XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGNhbmNlbCBtZS00IHctNTBcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJjcmVkaXRNb3JlVGhhblRlblBlcmNlbnQgfHwgc2F2aW5nXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhcHBseUNyZWRpdE5vdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgdy01MFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhc2F2aW5nXCI+QXBwbHkgQ3JlZGl0IE5vdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2F2aW5nXCI+QXBwbHlpbmcuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT0gT05FIFRJTUUgRkVFIFRBQiA9PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbWItNFwiICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnb25lVGltZUZlZScgJiYgbW9kZSA9PT0gJ2VkaXQnXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwib25lVGltZUZlZUZvcm1cIiBjbGFzcz1cImZvcm1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50dGV4dCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgQWRkIGEgb25lLXRpbWUgZmVlIChlLmcuIGluc3RhbGxhdGlvbikgdG8gdGhpcyBpbnZvaWNlLlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBweS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5JbnZvaWNlIElEPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbdmFsdWVdPVwiaW52b2ljZURhdGE/Lmludm9pY2VcIiByZWFkb25seT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaGVhZGluZ3RleHQgbWItMlwiPkN1cnJlbnQgSW52b2ljZSBBbW91bnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9sbGFyLXNpZ25cIj57eyBnZXRJbnZvaWNlQ3VycmVuY3lTeW1ib2woKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhbW91bnRcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwiZm9ybS1jb250cm9sIGFtb3VudC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImhlYWRpbmd0ZXh0IG1iLTJcIj5PbmUgVGltZSBGZWUgKEluc3RhbGxhdGlvbik8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2xsYXItc2lnblwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm9uZVRpbWVGZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdFNwZWNpYWxDaGFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBhbW91bnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGZlZSBhbW91bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBtdC0zIGZlZS1zdW1tYXJ5IHAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1sYWJlbFwiPlNlbGVjdGVkIEludm9pY2UgQW1vdW50ICsgT25lIFRpbWUgRmVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktdmFsdWUtYm9sZFwiPnt7IGdldEludm9pY2VDdXJyZW5jeVN5bWJvbCgpIH19e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVUaW1lRmVlVG90YWwgfCBudW1iZXI6JzEuMi0yJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC01XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmRpc21pc3MoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGNhbmNlbCBtZS00IHctNTBcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJzYXZpbmcgfHwgIW9uZVRpbWVGZWVGb3JtLmdldCgnb25lVGltZUZlZScpPy52YWx1ZVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlPbmVUaW1lRmVlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00IHctNTBcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNhdmluZ1wiPkFwcGx5IEZlZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzYXZpbmdcIj5BcHBseWluZy4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -2203,6 +2203,11 @@ class EditInvoiceComponent {
|
|
|
2203
2203
|
}
|
|
2204
2204
|
else {
|
|
2205
2205
|
payload.clientId = this.clientId;
|
|
2206
|
+
// Flag the backend to take the "custom create" path that persists what
|
|
2207
|
+
// the form built. The legacy /createInvoice contract expects either
|
|
2208
|
+
// allClient+clientList or invoiceId; without this flag, the server
|
|
2209
|
+
// silently returns 2xx and writes nothing.
|
|
2210
|
+
payload.customInvoice = true;
|
|
2206
2211
|
this.billingService.createInvoice(payload).pipe(takeUntil(this.destroy$)).subscribe({
|
|
2207
2212
|
next: (res) => {
|
|
2208
2213
|
this.saving = false;
|
|
@@ -2211,9 +2216,10 @@ class EditInvoiceComponent {
|
|
|
2211
2216
|
this.activeModal.close('created');
|
|
2212
2217
|
}
|
|
2213
2218
|
},
|
|
2214
|
-
error: () => {
|
|
2219
|
+
error: (err) => {
|
|
2215
2220
|
this.saving = false;
|
|
2216
|
-
|
|
2221
|
+
const msg = err?.error?.message || 'Failed to create invoice';
|
|
2222
|
+
this.toast.getErrorToast(msg);
|
|
2217
2223
|
}
|
|
2218
2224
|
});
|
|
2219
2225
|
}
|