tango-app-ui-manage-billing 3.3.36 → 3.3.37
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.
|
@@ -100,6 +100,10 @@ export class DailyPricingComponent {
|
|
|
100
100
|
'run ai': 'runai',
|
|
101
101
|
'ai in checklist': 'runai',
|
|
102
102
|
'remote optum': 'remoteoptum',
|
|
103
|
+
// Factory QC (FactoryQC_billing Lambda). Day-scoped: the Lambda takes only
|
|
104
|
+
// report_date, so this export covers the snapshot date shown on the card
|
|
105
|
+
// rather than month-to-date like Remote Optum.
|
|
106
|
+
'factory': 'factory',
|
|
103
107
|
};
|
|
104
108
|
canExportAdditionalProduct(productName) {
|
|
105
109
|
return !!this.exportableProducts[(productName || '').toLowerCase()];
|
|
@@ -514,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
514
518
|
}], ctorParameters: () => [{ type: i1.BillingService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3.NgbModal }], propDecorators: { clientId: [{
|
|
515
519
|
type: Input
|
|
516
520
|
}] } });
|
|
517
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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RSxtQkFBbUI7cUtBT3BCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYXRlLWludm9pY2UtbW9kYWwvZ2VuZXJhdGUtaW52b2ljZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3U3RvcmVzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL25ldy1zdG9yZXMtbW9kYWwvbmV3LXN0b3Jlcy1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFpbHktcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYWlseS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhaWx5LXByaWNpbmcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhaWx5UHJpY2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG5cbiAgbGVuOiBhbnk7XG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gTWV0YWRhdGFcbiAgZGFpbHlQcmljaW5nSW5mbzogYW55ID0ge307XG5cbiAgLy8gRWRpdCB0cmFja2luZzoga2V5ID0gJ3N0b3JlSWRfcHJvZHVjdE5hbWUnLCB2YWx1ZSA9IGVkaXRlZCB3b3JraW5nZGF5c1xuICBlZGl0aW5nUHJvZHVjdDogYW55ID0ge307XG4gIC8vIEVkaXQgdHJhY2tpbmcgZm9yIHN0b3JlLWxldmVsIGZpZWxkcyAodHJhZmZpY0NhbWVyYUNvdW50LCB6b25lQ2FtZXJhQ291bnQsIHpvbmVDb3VudClcbiAgZWRpdGluZ0ZpZWxkOiBhbnkgPSB7fTtcblxuICAvLyBEYXRlIGZpbHRlclxuICBkYXRlRmlsdGVyOiBzdHJpbmcgPSAnJztcblxuICAvLyBGaWx0ZXIg4oCUIG11bHRpLXNlbGVjdCBzdGF0dXMuIE5vIGRlZmF1bHQ6IHRoZSB0YWJsZSBvcGVucyBzaG93aW5nIEFMTFxuICAvLyBzdG9yZXMgKGFjdGl2ZSArIGRlYWN0aXZlKTsgbmVpdGhlciBvcHRpb24gaXMgcHJlLWNoZWNrZWQuXG4gIHN0YXR1c0ZpbHRlcjogc3RyaW5nW10gPSBbXTtcbiAgLy8gTXVsdGktc2VsZWN0IGNvdW50cnkgZmlsdGVyIChvcHRpb25zIHBvcHVsYXRlZCBmcm9tIHRoZSBBUEkncyBgY291bnRyaWVzYCkuXG4gIGNvdW50cnlGaWx0ZXI6IHN0cmluZ1tdID0gW107XG4gIHN0b3JlRmlsdGVyT2JqZWN0OiBhbnlbXSA9IFtcbiAgICB7IERlc2NyaXB0aW9uOiAnU3RhdHVzJywgdHlwZTogJ211bHRpJywgSXNzdWVzOiBbeyBpZDogJ2FjdGl2ZScsIHRleHQ6ICdBY3RpdmUnIH0sIHsgaWQ6ICdkZWFjdGl2ZScsIHRleHQ6ICdEZWFjdGl2ZScgfV0gfSxcbiAgXTtcbiAgLy8gbGliLWZpbHRlcnMgc25hcHNob3RzIGRhdGFPYmplY3QgaW4gaXRzIG5nT25Jbml0LCBzbyB0aGUgQ291bnRyeSBncm91cCBtdXN0XG4gIC8vIGJlIHByZXNlbnQgQkVGT1JFIGl0IG1vdW50cy4gV2UgZ2F0ZSB0aGUgPGxpYi1maWx0ZXJzPiByZW5kZXIgb24gdGhpcyBmbGFnLFxuICAvLyBmbGlwcGluZyBpdCB0cnVlIG9ubHkgb25jZSB0aGUgY291bnRyeSBvcHRpb25zIGhhdmUgYmVlbiBidWlsdCBmcm9tIHRoZSBBUEkuXG4gIGZpbHRlcnNSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBkZXJpdmVkIGZyb20gaW52b2ljZSBoaXN0b3J5IGZvciB0aGUgYnJhbmQuXG4gIC8vIE5ld2VzdCBmaXJzdDsgZWFjaCByb3cgY2FycmllcyBwcmlvci1tb250aCBkZWx0YXMgZm9yIHRoZSB0cmVuZCBpbmRpY2F0b3IuXG4gIG1vbnRobHlCaWxsaW5nU3VtbWFyeTogYW55W10gPSBbXTtcbiAgbW9udGhseVN1bW1hcnlFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRhYmxlXG4gIHN0b3JlTGlzdDogYW55ID0gW107XG4gIHN0b3JlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHN0b3JlTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgLy8gRGVmYXVsdCBzb3J0OiB3b3JraW5nIGRheXMgKGRheXNEaWZmZXJlbmNlKSwgaGlnaGVzdCBmaXJzdC5cbiAgc29ydENvbHVtTmFtZTogc3RyaW5nID0gJ2RheXNEaWZmZXJlbmNlJztcbiAgc29ydEJ5OiBudW1iZXIgPSAtMTtcbiAgZ2VuZXJhdGluZ0ludm9pY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBBZGRpdGlvbmFsIChub24tc3RhbmRhcmQpIHByb2R1Y3RzIGF2YWlsYWJsZSBvbmx5IGZvciBzcGVjaWZpYyBjbGllbnRzXG4gIC8vIChjdXJyZW50bHkgY2xpZW50SWQgMTEpLiBFbXB0eSBmb3IgZXZlcnlvbmUgZWxzZSAtPiB0aGUgdGFibGUgaXMgaGlkZGVuLlxuICBhZGRpdGlvbmFsUHJvZHVjdHM6IGFueVtdID0gW107XG4gIGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5OiBzdHJpbmcgPSAnaW5yJztcbiAgLy8gRGF0ZSAoWVlZWS1NTS1ERCkgb2YgdGhlIGJpbGxpbmdfZGV0YWlscyBzbmFwc2hvdCBiZWhpbmQgdGhlIGFkZGl0aW9uYWxcbiAgLy8gcHJvZHVjdCBjb3VudHM7IHBhc3NlZCB0byB0aGUgZXhwb3J0IHNvIGV4cG9ydHMgbWF0Y2ggdGhlIGRpc3BsYXllZCBjYXJkcy5cbiAgYWRkaXRpb25hbFByb2R1Y3RzRGF0ZTogc3RyaW5nID0gJyc7XG5cbiAgLy8gQ291bnQgKyBsaXN0IG9mIHN0b3JlcyBvbmJvYXJkZWQgdGhpcyBtb250aCAoZmlyc3QgZmlsZSBkYXRlIGluIHRoZSBjdXJyZW50XG4gIC8vIG1vbnRoKS4gVGhlIGxpc3QgZmVlZHMgdGhlIFwiVmlldyBTdG9yZXNcIiBwb3B1cC5cbiAgbmV3bHlPbmJvYXJkZWRTdG9yZXM6IG51bWJlciA9IDA7XG4gIG5ld2x5T25ib2FyZGVkU3RvcmVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY2xpZW50SWQnXSAmJiAhY2hhbmdlc1snY2xpZW50SWQnXS5maXJzdENoYW5nZSAmJiB0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdyYW5kIHRvdGFsIGFjcm9zcyBhbGwgYWRkaXRpb25hbC1wcm9kdWN0IHJvd3MuXG4gIGdldCBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgfHwgW10pLnJlZHVjZSgoYSwgcCkgPT4gYSArIChOdW1iZXIocC50b3RhbCkgfHwgMCksIDApO1xuICB9XG5cbiAgLy8gUHJvZHVjdHMgdGhhdCBoYXZlIGEgYmFja2VuZCBkZXRhaWxlZCBleHBvcnQuIEtleWVkIGJ5IHRoZSBwcm9kdWN0IGtleSB0aGVcbiAgLy8gZXhwb3J0IGVuZHBvaW50IHVuZGVyc3RhbmRzLiBBZGQgbW9yZSBhcyB0aGVpciBxdWVyaWVzIGFyZSB3aXJlZCB1cC5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRhYmxlUHJvZHVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ2V5ZXRlc3QnOiAnZXlldGVzdCcsXG4gICAgJ2V5ZXRlc3QgKGFkZGl0aW9uYWwgc3RvcmFnZSknOiAnZXlldGVzdGFkZGl0aW9uYWxzdG9yYWdlJyxcbiAgICAncGxhbm9ncmFtJzogJ3BsYW5vZ3JhbScsXG4gICAgJ2FpIG1hbmFnZXInOiAnYWltYW5hZ2VyJyxcbiAgICAndm1zJzogJ3ZtcycsXG4gICAgLy8gJ1J1biBBSScgaXMgZGlzcGxheWVkIGFzICdBSSBpbiBjaGVja2xpc3QnOyBib3RoIG1hcCB0byB0aGUgc2FtZSBleHBvcnRcbiAgICAvLyBrZXkgc28gdGhlIGRvd25sb2FkIHdvcmtzIHdoaWNoZXZlciBsYWJlbCB0aGUgQVBJIHJldHVybnMuXG4gICAgJ3J1biBhaSc6ICdydW5haScsXG4gICAgJ2FpIGluIGNoZWNrbGlzdCc6ICdydW5haScsXG4gICAgJ3JlbW90ZSBvcHR1bSc6ICdyZW1vdGVvcHR1bScsXG4gIH07XG5cbiAgY2FuRXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZXhwb3J0YWJsZVByb2R1Y3RzWyhwcm9kdWN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICBleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwcm9kdWN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5leHBvcnRhYmxlUHJvZHVjdHNbKHByb2R1Y3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBQYXNzIHRoZSBiaWxsaW5nX2RldGFpbHMgc25hcHNob3QgZGF0ZSAoWVlZWS1NTS1ERCkgYmVoaW5kIHRoZSBjYXJkIGNvdW50c1xuICAgIC8vIHNvIGRheS1zY29wZWQgZXhwb3J0cyAoVk1TIC8gUnVuIEFJIHZpYSBMYW1iZGEgdG9fZGF0ZSwgUmVtb3RlIE9wdHVtKSBtYXRjaFxuICAgIC8vIHdoYXQncyBzaG93bi4gRmFsbCBiYWNrIHRvIHRvZGF5IGlmIHRoZSBiYWNrZW5kIGRpZG4ndCByZXR1cm4gYSBkYXRlLlxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0b2RheVN0ciA9IGAke3RvZGF5LmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHRvZGF5LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh0b2RheS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICBjb25zdCBleHBvcnREYXRlID0gdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNEYXRlIHx8IHRvZGF5U3RyO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYWRkaXRpb25hbFByb2R1Y3RFeHBvcnQodGhpcy5jbGllbnRJZCwga2V5LCBleHBvcnREYXRlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgICAgLy8gQSByZWFsIC54bHN4IGlzIGEgemlwIOKAlCBpdHMgZmlyc3QgdHdvIGJ5dGVzIGFyZSAnUEsnICgweDUwIDB4NEIpLlxuICAgICAgICAgIC8vIEEgMjA0L2VtcHR5IG9yIEpTT04gZXJyb3IgYm9keSBpcyBOT1QsIGFuZCBzYXZpbmcgaXQgcHJvZHVjZXMgYVxuICAgICAgICAgIC8vIFwiY29ycnVwdGVkXCIgZmlsZS4gR3VhcmQgc28gd2Ugb25seSBzYXZlIGEgZ2VudWluZSB3b3JrYm9vay5cbiAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcyA/IG5ldyBVaW50OEFycmF5KHJlcykgOiBuZXcgVWludDhBcnJheSgpO1xuICAgICAgICAgIGNvbnN0IGlzWGxzeCA9IGJ5dGVzLmxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0gPT09IDB4NTAgJiYgYnl0ZXNbMV0gPT09IDB4NGI7XG4gICAgICAgICAgaWYgKCFpc1hsc3gpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnTm8gZGF0YSB0byBleHBvcnQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBgJHtwcm9kdWN0TmFtZX0tJHt0aGlzLmNsaWVudElkfWApO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRXhwb3J0IGZhaWxlZCcpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgYWRkaXRpb25hbC1wcm9kdWN0cyB0YWJsZSBmb3IgdGhpcyBjbGllbnQuIEJhY2tlbmQgcmV0dXJucyBhblxuICAvLyBlbXB0eSBsaXN0IGZvciBhbnkgY2xpZW50IHRoYXQgaGFzIG5vbmUgKHNvIHRoZSB0YWJsZSBqdXN0IHdvbid0IHJlbmRlcikuXG4gIGxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKSB7XG4gICAgLy8gU2VuZCB0aGUgcGFnZSdzIHNlbGVjdGVkIGRhdGUgKGlmIGFueSkgc28gdGhlIHNlY3Rpb24gcmVmbGVjdHMgaXQuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5hZGRpdGlvbmFsUHJvZHVjdHModGhpcy5jbGllbnRJZCwgdGhpcy5kYXRlRmlsdGVyIHx8IHVuZGVmaW5lZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gcmVzPy5kYXRhPy5wcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9IHJlcz8uZGF0YT8uY3VycmVuY3kgfHwgJ2lucic7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzRGF0ZSA9IHJlcz8uZGF0YT8uYmlsbGluZ0RhdGUgfHwgJyc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2FkRGFpbHlQcmljaW5nKCkge1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3JlTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdG9yZU5vRGF0YSA9IGZhbHNlO1xuXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBjb3VudHJ5RmlsdGVyOiB0aGlzLmNvdW50cnlGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nKGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGUpID0+IHtcbiAgICAgICAgLy8gVGhlIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IGNvbWVzIGZyb20gaW52b2ljZSBoaXN0b3J5LCBub3QgdGhlIHN0b3JlXG4gICAgICAgIC8vIHJvd3Mg4oCUIGFwcGx5IGl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmUgbGlzdCBpcyBlbXB0eSwgc28gaXRcbiAgICAgICAgLy8gc3RpbGwgc2hvd3Mgd2hlbiB0aGUgZmlsdGVyZWQgc3RvcmUgdGFibGUgaGFzIG5vIHJvd3MuXG4gICAgICAgIHRoaXMubW9udGhseUJpbGxpbmdTdW1tYXJ5ID0gdGhpcy5kZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KGU/LmRhdGE/Lm1vbnRobHlCaWxsaW5nU3VtbWFyeSB8fCBbXSk7XG4gICAgICAgIC8vIE5ld2x5IG9uYm9hcmRlZCBjb3VudC9saXN0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBzdG9yZSB0YWJsZSdzXG4gICAgICAgIC8vIGZpbHRlcnMsIHNvIGNhcHR1cmUgaXQgd2hldGhlciBvciBub3QgdGhlIGZpbHRlcmVkIHN0b3JlIGxpc3QgaGFzIHJvd3MuXG4gICAgICAgIHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZXMgPSBlPy5kYXRhPy5uZXdseU9uYm9hcmRlZFN0b3JlcyB8fCAwO1xuICAgICAgICB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0ID0gZT8uZGF0YT8ubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QgfHwgW107XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgdGhlIENvdW50cnkgZmlsdGVyIG9wdGlvbnMgZnJvbSB0aGUgQVBJJ3MgY291bnRyeSBsaXN0IChhbGxcbiAgICAgICAgLy8gY2xpZW50IHN0b3JlcykuIEluZGVwZW5kZW50IG9mIHRoZSBmaWx0ZXJlZCBzdG9yZSBjb3VudCwgc28gYnVpbGQgaXRcbiAgICAgICAgLy8gZXZlbiB3aGVuIHRoZSBmaWx0ZXJlZCB0YWJsZSBpcyBlbXB0eS5cbiAgICAgICAgdGhpcy5idWlsZENvdW50cnlGaWx0ZXJPcHRpb25zKGU/LmRhdGE/LmNvdW50cmllcyB8fCBbXSk7XG5cbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBlLmRhdGE/LmRhdGE7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudDtcblxuICAgICAgICAgIHRoaXMuZGFpbHlQcmljaW5nSW5mbyA9IHtcbiAgICAgICAgICAgIGJyYW5kTmFtZTogZS5kYXRhPy5icmFuZE5hbWUgfHwgJycsXG4gICAgICAgICAgICBkYXRlU3RyaW5nOiBlLmRhdGE/LmRhdGVTdHJpbmcgfHwgJycsXG4gICAgICAgICAgICBkYXRlSVNPOiBlLmRhdGE/LmRhdGVJU08gfHwgJycsXG4gICAgICAgICAgICBhY3RpdmVTdG9yZXM6IGUuZGF0YT8uYWN0aXZlU3RvcmVzIHx8IDAsXG4gICAgICAgICAgICBhY2NvdW50VHlwZTogZS5kYXRhPy5hY2NvdW50VHlwZSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogZS5kYXRhPy5zdGF0dXMgfHwgJycsXG4gICAgICAgICAgICBwcm9SYXRlOiBlLmRhdGE/LnByb1JhdGUgfHwgJycsXG4gICAgICAgICAgICBjbGllbnRJZDogZS5kYXRhPy5jbGllbnRJZCB8fCAnJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLmxlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLm1vbnRobHlCaWxsaW5nU3VtbWFyeSA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0ZUZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gICAgLy8gQWRkaXRpb25hbCBQcm9kdWN0cyByZWZsZWN0IHRoZSBzZWxlY3RlZCBkYXRlIHRvby5cbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIGNsZWFyRGF0ZUZpbHRlcigpIHtcbiAgICB0aGlzLmRhdGVGaWx0ZXIgPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgLy8gQWRkL3JlZnJlc2ggdGhlIENvdW50cnkgZ3JvdXAgaW4gdGhlIGZpbHRlciBkcm9wZG93biBmcm9tIHRoZSBBUEkncyBjb3VudHJ5XG4gIC8vIGxpc3QsIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIChjaGVja2VkKS4gbGliLWZpbHRlcnMgc25hcHNob3RzXG4gIC8vIGRhdGFPYmplY3Qgb25seSBpbiBuZ09uSW5pdCwgc28gd2UgYnVpbGQgdGhlIGZ1bGwgc3RvcmVGaWx0ZXJPYmplY3QgaGVyZSBhbmRcbiAgLy8gdGhlbiBmbGlwIGZpbHRlcnNSZWFkeSB0byBtb3VudCA8bGliLWZpbHRlcnM+IG9uY2Ug4oCUIGFmdGVyIHdoaWNoIGl0IHNlZXMgYm90aFxuICAvLyBTdGF0dXMgYW5kIENvdW50cnkgZ3JvdXBzLlxuICBwcml2YXRlIGJ1aWxkQ291bnRyeUZpbHRlck9wdGlvbnMoY291bnRyaWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KGNvdW50cmllcykgPyBjb3VudHJpZXMuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5jb3VudHJ5RmlsdGVyKTtcbiAgICAgIGNvbnN0IGlzc3VlcyA9IGxpc3QubWFwKChjKSA9PiAoeyBpZDogYywgdGV4dDogYywgY2hlY2tlZDogc2VsZWN0ZWQuaGFzKGMpIH0pKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5zdG9yZUZpbHRlck9iamVjdC5maW5kKChnKSA9PiBnLkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLklzc3VlcyA9IGlzc3VlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmVGaWx0ZXJPYmplY3QgPSBbLi4udGhpcy5zdG9yZUZpbHRlck9iamVjdCwgeyBEZXNjcmlwdGlvbjogJ0NvdW50cnknLCB0eXBlOiAnbXVsdGknLCBJc3N1ZXM6IGlzc3VlcyB9XTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTW91bnQgbGliLWZpbHRlcnMgb25jZSB0aGUgZmlyc3QgcmVzcG9uc2UgaXMgaW4gKFN0YXR1cyBhbG9uZSBpZiB0aGVyZSBhcmVcbiAgICAvLyBubyBjb3VudHJpZXMpLCBzbyBpdCBzbmFwc2hvdHMgdGhlIGZ1bGwgZGF0YU9iamVjdCBvbiBpbml0LlxuICAgIGlmICghdGhpcy5maWx0ZXJzUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhcHBseVN0b3JlRmlsdGVycyhldmVudDogYW55KSB7XG4gICAgLy8gTXVsdGktc2VsZWN0IFN0YXR1cyAvIENvdW50cnkg4oCUIGxpYi1maWx0ZXJzIGVtaXRzIGVhY2ggZ3JvdXAncyBzZWxlY3RlZFxuICAgIC8vIG9wdGlvbnMgYXMgYW4gQVJSQVkgdW5kZXIgSXNzdWVzIChBcHBseSBzZXRzIElzc3VlcyA9IHNlbGVjdGVkVmFsdWVzQXJyYXlcbiAgICAvLyBbaW5kZXhdKS4gQ29sbGVjdCBldmVyeSBzZWxlY3RlZCBpZCwgdG9sZXJhdGluZyBhcnJheSBhbmQgc2luZ2xlLW9iamVjdFxuICAgIC8vIHNoYXBlcy5cbiAgICBjb25zdCBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc3N1ZXMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuSXNzdWVzKSA/IGVsZW1lbnQuSXNzdWVzIDogKGVsZW1lbnQuSXNzdWVzID8gW2VsZW1lbnQuSXNzdWVzXSA6IFtdKTtcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdTdGF0dXMnKSB7XG4gICAgICAgICAgaXNzdWVzLmZvckVhY2goKGk6IGFueSkgPT4geyBpZiAoaT8uaWQpIHN0YXR1c2VzLnB1c2goaS5pZCk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5Jykge1xuICAgICAgICAgIGlzc3Vlcy5mb3JFYWNoKChpOiBhbnkpID0+IHsgaWYgKGk/LmlkKSBjb3VudHJpZXMucHVzaChpLmlkKTsgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1c0ZpbHRlciA9IFsuLi5uZXcgU2V0KHN0YXR1c2VzKV07XG4gICAgdGhpcy5jb3VudHJ5RmlsdGVyID0gWy4uLm5ldyBTZXQoY291bnRyaWVzKV07XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyc2VJbnQocGFnZU9mZnNldCk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25FeHBvcnQoKSB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBzdGF0dXNGaWx0ZXI6IHRoaXMuc3RhdHVzRmlsdGVyLFxuICAgICAgZGF0ZUZpbHRlcjogdGhpcy5kYXRlRmlsdGVyIHx8ICcnLFxuICAgICAgZXhwb3J0OiB0cnVlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nRXhwb3J0KGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsICdkYWlseS1wcmljaW5nJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N0b3JlSWR9XyR7cHJvZHVjdE5hbWV9YDtcbiAgfVxuXG4gIGlzRWRpdGluZyhzdG9yZUlkOiBzdHJpbmcsIHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nUHJvZHVjdFt0aGlzLmdldEVkaXRLZXkoc3RvcmVJZCwgcHJvZHVjdE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRFZGl0KHN0b3JlOiBhbnksIHByb2R1Y3Q6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RWRpdEtleShzdG9yZS5zdG9yZUlkLCBwcm9kdWN0LnByb2R1Y3ROYW1lKTtcbiAgICAvLyBDb2VyY2UgdG8gYSBudW1iZXIgc28gYSAwIC8gbWlzc2luZyB2YWx1ZSBzdGlsbCBlbnRlcnMgZWRpdCBtb2RlIHdpdGggYVxuICAgIC8vIGRlZmluZWQgdmFsdWUgKHVuZGVmaW5lZCB3b3VsZCBtYWtlIGlzRWRpdGluZygpIHRoaW5rIHdlJ3JlIG5vdCBlZGl0aW5nKS5cbiAgICB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV0gPSBOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMDtcbiAgfVxuXG4gIGNhbmNlbEVkaXQoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gIH1cblxuICBzYXZlV29ya2luZ0RheXMoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gTnVtYmVyKHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XSkgfHwgMDtcblxuICAgIC8vIFVuY2hhbmdlZCDihpIganVzdCBjbG9zZSB0aGUgZWRpdG9yIChjb21wYXJlIGFzIG51bWJlcnMgc28gMCB2cyBcIjBcIiBldGMuXG4gICAgLy8gZG9uJ3Qgc2xpcCB0aHJvdWdoKS5cbiAgICBpZiAobmV3VmFsdWUgPT09IChOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5kYWlseVByaWNpbmdJbmZvLmRhdGVTdHJpbmcsXG4gICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxuICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QucHJvZHVjdE5hbWUsXG4gICAgICB3b3JraW5nZGF5czogbmV3VmFsdWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVEYWlseVByaWNpbmdXb3JraW5nRGF5cyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgcHJvZHVjdC53b3JraW5nZGF5cyA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdXb3JraW5nIGRheXMgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlIHdvcmtpbmcgZGF5cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmllbGRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtzdG9yZUlkfV8ke2ZpZWxkTmFtZX1gO1xuICB9XG5cbiAgaXNFZGl0aW5nRmllbGQoc3RvcmVJZDogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdGaWVsZFt0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZUlkLCBmaWVsZE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV0gPSBzdG9yZVtmaWVsZE5hbWVdIHx8IDA7XG4gIH1cblxuICBjYW5jZWxGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICB9XG5cbiAgc2F2ZUZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSBzdG9yZVtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmRhaWx5UHJpY2luZ0luZm8uZGF0ZVN0cmluZyxcbiAgICAgIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBOdW1iZXIobmV3VmFsdWUpXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlRGFpbHlQcmljaW5nU3RvcmVGaWVsZChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgc3RvcmVbZmllbGROYW1lXSA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICAgICAgICBjb25zdCBmaWVsZExhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAnVHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICdab25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ1pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGAke2ZpZWxkTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfSB1cGRhdGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvckxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAndHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICd6b25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ3pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgRmFpbGVkIHRvIHVwZGF0ZSAke2Vycm9yTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVJbnZvaWNlKCkge1xuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xuICAgIC8vIE9wZW4gdGhlIHBpY2tlciBmaXJzdCDigJQgdGhlIHVzZXIgY2hvb3NlcyB3aGljaCBiaWxsaW5nIGdyb3VwcyB0b1xuICAgIC8vIGdlbmVyYXRlIGZvci4gTW9kYWwgY2xvc2VzIHdpdGggeyBncm91cElkcywgb3V0c3RhbmRpbmdHcm91cElkcyB9XG4gICAgLy8gKG9yIGlzIGRpc21pc3NlZCA9IG5vLW9wKS5cbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiB7IGdyb3VwSWRzOiBzdHJpbmdbXTsgb3V0c3RhbmRpbmdHcm91cElkczogc3RyaW5nW10gfSkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQgfHwgIUFycmF5LmlzQXJyYXkocmVzdWx0Lmdyb3VwSWRzKSB8fCByZXN1bHQuZ3JvdXBJZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0aGlzLnJ1bkludm9pY2VHZW5lcmF0aW9uKHJlc3VsdC5ncm91cElkcywgcmVzdWx0Lm91dHN0YW5kaW5nR3JvdXBJZHMgfHwgW10pO1xuICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8vIE9wZW4gYSBwb3B1cCBsaXN0aW5nIHRoZSBuZXdseSBvbmJvYXJkZWQgc3RvcmVzICh3aXRoIGZpcnN0IGZpbGUgZGF0ZSkuXG4gIC8vIFRoZSBsaXN0IGlzIGFscmVhZHkgbG9hZGVkIHdpdGggdGhlIHBhZ2UsIHNvIG5vIGV4dHJhIEFQSSBjYWxsIGlzIG5lZWRlZC5cbiAgdmlld05ld1N0b3JlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5ld1N0b3Jlc01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZXMgPSB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBydW5JbnZvaWNlR2VuZXJhdGlvbihncm91cElkczogc3RyaW5nW10sIG91dHN0YW5kaW5nR3JvdXBJZHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhbGxDbGllbnQ6IHRydWUsXG4gICAgICBjbGllbnRMaXN0OiBbdGhpcy5jbGllbnRJZF0sXG4gICAgICBncm91cElkcyxcbiAgICAgIG91dHN0YW5kaW5nR3JvdXBJZHMsXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuY3JlYXRlSW52b2ljZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChgSW52b2ljZSBnZW5lcmF0ZWQgZm9yICR7Z3JvdXBJZHMubGVuZ3RofSBiaWxsaW5nIGdyb3VwKHMpYCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGluZ0ludm9pY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gZ2VuZXJhdGUgaW52b2ljZScpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8vIFRha2UgdGhlIHJhdyBhZ2dyZWdhdGlvbiByb3dzIChhbHJlYWR5IHNvcnRlZCBuZXdlc3QtZmlyc3QgYnkgdGhlIEFQSSkgYW5kXG4gIC8vIGF0dGFjaCAoYSkgYSBodW1hbi1yZWFkYWJsZSBtb250aExhYmVsLCAoYikgdGFnIGZvciB0aGUgbGF0ZXN0IHR3byByb3dzXG4gIC8vIChcIkN1cnJlbnRcIiAvIFwiTGFzdCBnZW5lcmF0ZWRcIikgYW5kIChjKSBkZWx0YXMgdnMgdGhlIGltbWVkaWF0ZWx5IG9sZGVyXG4gIC8vIEN1cnJlbmN5IHN5bWJvbCBmb3IgYSBzdG9yZSdzIGludm9pY2UgYW1vdW50IChtYXRjaGVzIHRoZSBiYWNrZW5kJ3NcbiAgLy8gYmFzZXByaWNpbmcgY3VycmVuY3k7IEFFRCByZW5kZXJlZCBhcyB0ZXh0KS5cbiAgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBzeW1ib2xzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBpbnI6ICfigrknLCBkb2xsYXI6ICckJywgc2luZ2Fwb3JlZG9sbGFyOiAnUyQnLCBldXJvOiAn4oKsJywgYWVkOiAnQUVEICcgfTtcbiAgICByZXR1cm4gc3ltYm9sc1soc3RvcmU/Lmludm9pY2VDdXJyZW5jeSB8fCAnaW5yJykudG9Mb3dlckNhc2UoKV0gfHwgJ+KCuSc7XG4gIH1cblxuICAvLyBtb250aCBzbyB0aGUgdGVtcGxhdGUgY2FuIHJlbmRlciB0aGUg4payL+KWvC/ilqwgdHJlbmQgaW5kaWNhdG9ycy5cbiAgcHJpdmF0ZSBkZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KHJvd3M6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShyb3dzKSB8fCByb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddO1xuICAgIGNvbnN0IHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGlucjogJ+KCuScsIGRvbGxhcjogJyQnLCBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsIGV1cm86ICfigqwnIH07XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBpc0N1cnJlbnQgPSAocjogYW55KSA9PiByLnllYXIgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIHIubW9udGggPT09IChub3cuZ2V0TW9udGgoKSArIDEpO1xuICAgIHJldHVybiByb3dzLm1hcCgociwgaSkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHJvd3NbaSArIDFdO1xuICAgICAgY29uc3Qgc3RvcmVzRGVsdGEgPSBuZXh0ID8gKHIuc3RvcmVzQmlsbGVkIHx8IDApIC0gKG5leHQuc3RvcmVzQmlsbGVkIHx8IDApIDogbnVsbDtcbiAgICAgIGNvbnN0IGFtb3VudERlbHRhID0gbmV4dCA/IChyLmludm9pY2VBbW91bnQgfHwgMCkgLSAobmV4dC5pbnZvaWNlQW1vdW50IHx8IDApIDogbnVsbDtcbiAgICAgIGxldCB0YWcgPSAnJztcbiAgICAgIGlmIChpc0N1cnJlbnQocikpIHRhZyA9ICdDdXJyZW50JztcbiAgICAgIGVsc2UgaWYgKGkgPT09IDApIHRhZyA9ICdMYXN0IGdlbmVyYXRlZCc7XG4gICAgICBlbHNlIGlmIChpID09PSAxICYmIGlzQ3VycmVudChyb3dzWzBdKSkgdGFnID0gJ0xhc3QgZ2VuZXJhdGVkJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnIsXG4gICAgICAgIG1vbnRoTGFiZWw6IGAke21vbnRoTmFtZXNbKHIubW9udGggfHwgMSkgLSAxXX0gJHtyLnllYXJ9YCxcbiAgICAgICAgdGFnLFxuICAgICAgICBzdG9yZXNEZWx0YSxcbiAgICAgICAgYW1vdW50RGVsdGEsXG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiBzeW1ib2xzWyhyLmN1cnJlbmN5IHx8ICdpbnInKS50b0xvd2VyQ2FzZSgpXSB8fCAnJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVNb250aGx5U3VtbWFyeUhpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5tb250aGx5U3VtbWFyeUV4cGFuZGVkID0gIXRoaXMubW9udGhseVN1bW1hcnlFeHBhbmRlZDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJpbnZvaWNlcy1zZWN0aW9uXCI+XG4gICAgPCEtLSBIZWFkZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmlsbGluZ2hlYWRlclwiPkJpbGxpbmcgQnJlYWtkb3duPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTFcIj57eyB0b3RhbEl0ZW1zIH19IHN0b3Jlczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiICpuZ0lmPVwiZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZ1wiPlxuICAgICAgICAgICAgICAgIERhdGU6IDxzdHJvbmc+e3sgZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPnw8L3NwYW4+XG4gICAgICAgICAgICAgICAgQWN0aXZlIFN0b3JlczogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY3RpdmVTdG9yZXMgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj58PC9zcGFuPlxuICAgICAgICAgICAgICAgIEFjY291bnQgVHlwZTogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY2NvdW50VHlwZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZGF0ZS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25EYXRlRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBkYXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGVGaWx0ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckRhdGVGaWx0ZXIoKVwiIHRpdGxlPVwiQ2xlYXIgZGF0ZSBmaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjUgMy41TDMuNSAxMC41TTMuNSAzLjVMMTAuNSAxMC41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZW5lcmF0ZUludm9pY2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIGludmhlYWRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdG9yZUxpc3QubGVuZ3RoIHx8IGdlbmVyYXRpbmdJbnZvaWNlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+e3sgZ2VuZXJhdGluZ0ludm9pY2UgPyAnR2VuZXJhdGluZy4uLicgOiAnR2VuZXJhdGUgSW52b2ljZScgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkV4cG9ydCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0b3JlTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXdseSBPbmJvYXJkZWQgU3RvcmVzIOKAlCBzdG9yZXMgd2hvc2UgZmlyc3QgZmlsZSBkYXRlIGlzIGluIHRoZSBjdXJyZW50IG1vbnRoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3bHktb25ib2FyZGVkLWNhcmRcIlxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNHB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFQztib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHg7YmFja2dyb3VuZDojZmZmO21pbi13aWR0aDoyNDBweDtcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I0VBRjhGRjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAyMVY4bDktNSA5IDV2MTNNMyAyMWgxOE0zIDIxSDFtMjAgMGgyTTkgMjF2LTZoNnY2TTEyIDcuNWguMDFcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MjRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzEwMTgyODtsaW5lLWhlaWdodDoxLjE7XCI+e3sgbmV3bHlPbmJvYXJkZWRTdG9yZXMgfCBudW1iZXI6JzEuMC0wJzonZW4tSU4nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjcwODU7XCI+TmV3bHkgT25ib2FyZGVkIFN0b3JlczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MTFweDtjb2xvcjojOThBMkIzO1wiPkZpcnN0IGZpbGUgaW4gY3VycmVudCBtb250aDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtcy0zXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW5ld2x5T25ib2FyZGVkU3RvcmVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld05ld1N0b3JlcygpXCI+VmlldyBTdG9yZXM8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBpbnZvaWNlIHRyZW5kIChuZXdlc3QgZmlyc3QsIHdpdGggZGVsdGFzIHZzIHByaW9yIG1vbnRoKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhseS1iaWxsaW5nLXN1bW1hcnlcIiAqbmdJZj1cIm1vbnRobHlCaWxsaW5nU3VtbWFyeT8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtc3VtLWhlYWRlclwiPk1vbnRobHkgQmlsbGluZyBTdW1tYXJ5PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TU9OVEg8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5VTUJFUiBPRiBTVE9SRVMgQklMTEVEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JTlZPSUNFIEFNT1VOVDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBtb250aGx5QmlsbGluZ1N1bW1hcnk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImkgPCAyIHx8IG1vbnRobHlTdW1tYXJ5RXhwYW5kZWRcIiBbY2xhc3MuY3Vycl09XCJyb3cudGFnID09PSAnQ3VycmVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93Lm1vbnRoTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudGFnID09PSAnQ3VycmVudCdcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXMtMlwiPkN1cnJlbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnRhZyA9PT0gJ0xhc3QgZ2VuZXJhdGVkJ1wiIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTJcIj5MYXN0IGdlbmVyYXRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cuc3RvcmVzQmlsbGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnN0b3Jlc0RlbHRhICE9PSBudWxsXCIgY2xhc3M9XCJpbmQgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXBdPVwicm93LnN0b3Jlc0RlbHRhID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG93bl09XCJyb3cuc3RvcmVzRGVsdGEgPCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGF0XT1cInJvdy5zdG9yZXNEZWx0YSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5zdG9yZXNEZWx0YSA+IDBcIj7ilrIge3sgcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LnN0b3Jlc0RlbHRhIDwgMFwiPuKWvCB7eyAtcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5pbnZvaWNlQW1vdW50IHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5hbW91bnREZWx0YSAhPT0gbnVsbFwiIGNsYXNzPVwiaW5kIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnVwXT1cInJvdy5hbW91bnREZWx0YSA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvd25dPVwicm93LmFtb3VudERlbHRhIDwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxhdF09XCJyb3cuYW1vdW50RGVsdGEgPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPiAwXCI+4payIHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5hbW91bnREZWx0YSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPCAwXCI+4pa8IHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IC1yb3cuYW1vdW50RGVsdGEgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb250aGx5QmlsbGluZ1N1bW1hcnkubGVuZ3RoID4gMlwiIGNsYXNzPVwibXN1bS10b2dnbGVcIiAoY2xpY2spPVwidG9nZ2xlTW9udGhseVN1bW1hcnlIaXN0b3J5KClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWviBTaG93IG9sZGVyIG1vbnRocyAoe3sgbW9udGhseUJpbGxpbmdTdW1tYXJ5Lmxlbmd0aCAtIDIgfX0pPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWtCBIaWRlIG9sZGVyIG1vbnRoczwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQWRkaXRpb25hbCBQcm9kdWN0cyDigJQgbm9uLXN0YW5kYXJkIHByb2R1Y3RzIGJpbGxlZCBmb3IgdGhpcyBjbGllbnQgb25seVxuICAgICAgICAgKGUuZy4gY2xpZW50SWQgMTE6IEV5ZXRlc3QsIFBsYW5vZ3JhbSkuIEhpZGRlbiB3aGVuIHRoZSBjbGllbnQgaGFzIG5vbmUuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb250aGx5LWJpbGxpbmctc3VtbWFyeVwiICpuZ0lmPVwiYWRkaXRpb25hbFByb2R1Y3RzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zdW0taGVhZGVyXCI+QWRkaXRpb25hbCBQcm9kdWN0czwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3QgTmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlF1YW50aXR5PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UHJpY2U8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5Ub3RhbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPkFjdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBhZGRpdGlvbmFsUHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBwLnByb2R1Y3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcC5xdWFudGl0eSB8IG51bWJlcjonMS4wLTAnOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyAoYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPT09ICdkb2xsYXInID8gJyQnIDogJ+KCuScpIH19e3sgcC5wcmljZSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBwLnRvdGFsIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FeHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCIgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+R3JhbmQgVG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggKyBGaWx0ZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwYXltZW50aGlzdG9yeSBib3JkZXItMCBweC0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gaW52b2ljZXNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG10LTYgbXMtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwibGVuXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBpbnZvaWNlc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3RvcmUgbmFtZSBvciBJRC4uLlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2VhcmNoRmllbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoRGlzYWJsZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJzUmVhZHlcIiBbZGF0YU9iamVjdF09XCJzdG9yZUZpbHRlck9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseVN0b3JlRmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTG9hZGluZyBTaGltbWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE5vIERhdGEgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlTm9EYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFN0b3JlcyBUYWJsZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXN0b3JlTG9hZGluZyAmJiAhc3RvcmVOb0RhdGFcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWNjb3JkaW9uIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdzdG9yZU5hbWUnKVwiPlNUT1JFIE5BTUVcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUT1JFIElEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPkNPVU5UUlk8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+UFJPRFVDVFM8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgndHJhZmZpY0NhbWVyYUNvdW50JylcIj5UUkFGRklDIENBTUVSQVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3RyYWZmaWNDYW1lcmFDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd0cmFmZmljQ2FtZXJhQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3pvbmVDYW1lcmFDb3VudCcpXCI+Wk9ORSBDQU1FUkFTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ2FtZXJhQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNhbWVyYUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd6b25lQ291bnQnKVwiPlpPTkVTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5GSVJTVCBGSUxFIERBVEU8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF5c0RpZmZlcmVuY2UnKVwiPldPUktJTkcgREFZU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUQVRVUzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+SU5WT0lDRSBBTU9VTlQ8L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSB0YWJsZS10aXRsZS1wcmltYXJ5XCI+e3sgc3RvcmU/LnN0b3JlTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uc3RvcmVJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uY291bnRyeSB8fCAn4oCUJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdHNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy50cmFmZmljQ2FtZXJhQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8uem9uZUNhbWVyYUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnpvbmVDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmU/LmVkZ2VmaXJzdEZpbGVEYXRlID8gKHN0b3JlPy5lZGdlZmlyc3RGaWxlRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScpIDogJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygc3RvcmU/LnByb2R1Y3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsIHRleHQtbXV0ZWRcIj57eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX06PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmlldyBtb2RlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHByb2R1Y3Q/LndvcmtpbmdkYXlzIHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgbW9kZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdQcm9kdWN0W2dldEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsIHByb2R1Y3Q/LnByb2R1Y3ROYW1lKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVXb3JraW5nRGF5cyhzdG9yZSwgcHJvZHVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxFZGl0KHN0b3JlLCBwcm9kdWN0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZVdvcmtpbmdEYXlzKHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiIFtuZ0NsYXNzXT1cInN0b3JlPy5zdGF0dXMgPT09ICdhY3RpdmUnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZT8uc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyLXByb2R1Y3QgYnJlYWtkb3duIChUcmFmZmljOiDigrl4LCBab25lOiDigrl5IOKApikgKyB0b3RhbC4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiIG9mIHN0b3JlPy5pbnZvaWNlQnJlYWtkb3duXCIgY2xhc3M9XCJpbnYtYnJlYWtkb3duLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52LWJyZWFrZG93bi1sYWJlbFwiPnt7IGIubGFiZWwgfX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlQ3VycmVuY3lTeW1ib2woc3RvcmUpIH19e3sgKGIuYW1vdW50IHx8IDApIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgaW52LWJyZWFrZG93bi10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZSkgfX17eyAoc3RvcmU/Lmludm9pY2VBbW91bnQgfHwgMCkgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzdG9yZUxvYWRpbmcgJiYgIXN0b3JlTm9EYXRhXCI+XG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFpbHktcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtYmlsbGluZy9zcmMvbGliL2NvbXBvbmVudHMvZGFpbHktcHJpY2luZy9kYWlseS1wcmljaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9kYWlseS1wcmljaW5nL2RhaWx5LXByaWNpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQU94RixNQUFNLE9BQU8scUJBQXFCO0lBaUV0QjtJQUNBO0lBQ0E7SUFDQTtJQW5FTyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVqQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEdBQUcsQ0FBTTtJQUNULGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsV0FBVztJQUNYLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5RUFBeUU7SUFDekUsY0FBYyxHQUFRLEVBQUUsQ0FBQztJQUN6Qix3RkFBd0Y7SUFDeEYsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUV2QixjQUFjO0lBQ2QsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4Qix3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELFlBQVksR0FBYSxFQUFFLENBQUM7SUFDNUIsOEVBQThFO0lBQzlFLGFBQWEsR0FB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RkFBckIscUJBQXFCLGdIQ2JsQyxvNmlDQW9iTTs7NEZEdmFPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7cUtBT3BCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xuaW1wb3J0IHsgR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyYXRlLWludm9pY2UtbW9kYWwvZ2VuZXJhdGUtaW52b2ljZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3U3RvcmVzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL25ldy1zdG9yZXMtbW9kYWwvbmV3LXN0b3Jlcy1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFpbHktcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYWlseS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhaWx5LXByaWNpbmcuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhaWx5UHJpY2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nID0gJyc7XG5cbiAgbGVuOiBhbnk7XG4gIHNlYXJjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gTWV0YWRhdGFcbiAgZGFpbHlQcmljaW5nSW5mbzogYW55ID0ge307XG5cbiAgLy8gRWRpdCB0cmFja2luZzoga2V5ID0gJ3N0b3JlSWRfcHJvZHVjdE5hbWUnLCB2YWx1ZSA9IGVkaXRlZCB3b3JraW5nZGF5c1xuICBlZGl0aW5nUHJvZHVjdDogYW55ID0ge307XG4gIC8vIEVkaXQgdHJhY2tpbmcgZm9yIHN0b3JlLWxldmVsIGZpZWxkcyAodHJhZmZpY0NhbWVyYUNvdW50LCB6b25lQ2FtZXJhQ291bnQsIHpvbmVDb3VudClcbiAgZWRpdGluZ0ZpZWxkOiBhbnkgPSB7fTtcblxuICAvLyBEYXRlIGZpbHRlclxuICBkYXRlRmlsdGVyOiBzdHJpbmcgPSAnJztcblxuICAvLyBGaWx0ZXIg4oCUIG11bHRpLXNlbGVjdCBzdGF0dXMuIE5vIGRlZmF1bHQ6IHRoZSB0YWJsZSBvcGVucyBzaG93aW5nIEFMTFxuICAvLyBzdG9yZXMgKGFjdGl2ZSArIGRlYWN0aXZlKTsgbmVpdGhlciBvcHRpb24gaXMgcHJlLWNoZWNrZWQuXG4gIHN0YXR1c0ZpbHRlcjogc3RyaW5nW10gPSBbXTtcbiAgLy8gTXVsdGktc2VsZWN0IGNvdW50cnkgZmlsdGVyIChvcHRpb25zIHBvcHVsYXRlZCBmcm9tIHRoZSBBUEkncyBgY291bnRyaWVzYCkuXG4gIGNvdW50cnlGaWx0ZXI6IHN0cmluZ1tdID0gW107XG4gIHN0b3JlRmlsdGVyT2JqZWN0OiBhbnlbXSA9IFtcbiAgICB7IERlc2NyaXB0aW9uOiAnU3RhdHVzJywgdHlwZTogJ211bHRpJywgSXNzdWVzOiBbeyBpZDogJ2FjdGl2ZScsIHRleHQ6ICdBY3RpdmUnIH0sIHsgaWQ6ICdkZWFjdGl2ZScsIHRleHQ6ICdEZWFjdGl2ZScgfV0gfSxcbiAgXTtcbiAgLy8gbGliLWZpbHRlcnMgc25hcHNob3RzIGRhdGFPYmplY3QgaW4gaXRzIG5nT25Jbml0LCBzbyB0aGUgQ291bnRyeSBncm91cCBtdXN0XG4gIC8vIGJlIHByZXNlbnQgQkVGT1JFIGl0IG1vdW50cy4gV2UgZ2F0ZSB0aGUgPGxpYi1maWx0ZXJzPiByZW5kZXIgb24gdGhpcyBmbGFnLFxuICAvLyBmbGlwcGluZyBpdCB0cnVlIG9ubHkgb25jZSB0aGUgY291bnRyeSBvcHRpb25zIGhhdmUgYmVlbiBidWlsdCBmcm9tIHRoZSBBUEkuXG4gIGZpbHRlcnNSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBkZXJpdmVkIGZyb20gaW52b2ljZSBoaXN0b3J5IGZvciB0aGUgYnJhbmQuXG4gIC8vIE5ld2VzdCBmaXJzdDsgZWFjaCByb3cgY2FycmllcyBwcmlvci1tb250aCBkZWx0YXMgZm9yIHRoZSB0cmVuZCBpbmRpY2F0b3IuXG4gIG1vbnRobHlCaWxsaW5nU3VtbWFyeTogYW55W10gPSBbXTtcbiAgbW9udGhseVN1bW1hcnlFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFRhYmxlXG4gIHN0b3JlTGlzdDogYW55ID0gW107XG4gIHN0b3JlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHN0b3JlTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRvdGFsSXRlbXM6IG51bWJlciA9IDA7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gMTA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgLy8gRGVmYXVsdCBzb3J0OiB3b3JraW5nIGRheXMgKGRheXNEaWZmZXJlbmNlKSwgaGlnaGVzdCBmaXJzdC5cbiAgc29ydENvbHVtTmFtZTogc3RyaW5nID0gJ2RheXNEaWZmZXJlbmNlJztcbiAgc29ydEJ5OiBudW1iZXIgPSAtMTtcbiAgZ2VuZXJhdGluZ0ludm9pY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBBZGRpdGlvbmFsIChub24tc3RhbmRhcmQpIHByb2R1Y3RzIGF2YWlsYWJsZSBvbmx5IGZvciBzcGVjaWZpYyBjbGllbnRzXG4gIC8vIChjdXJyZW50bHkgY2xpZW50SWQgMTEpLiBFbXB0eSBmb3IgZXZlcnlvbmUgZWxzZSAtPiB0aGUgdGFibGUgaXMgaGlkZGVuLlxuICBhZGRpdGlvbmFsUHJvZHVjdHM6IGFueVtdID0gW107XG4gIGFkZGl0aW9uYWxQcm9kdWN0c0N1cnJlbmN5OiBzdHJpbmcgPSAnaW5yJztcbiAgLy8gRGF0ZSAoWVlZWS1NTS1ERCkgb2YgdGhlIGJpbGxpbmdfZGV0YWlscyBzbmFwc2hvdCBiZWhpbmQgdGhlIGFkZGl0aW9uYWxcbiAgLy8gcHJvZHVjdCBjb3VudHM7IHBhc3NlZCB0byB0aGUgZXhwb3J0IHNvIGV4cG9ydHMgbWF0Y2ggdGhlIGRpc3BsYXllZCBjYXJkcy5cbiAgYWRkaXRpb25hbFByb2R1Y3RzRGF0ZTogc3RyaW5nID0gJyc7XG5cbiAgLy8gQ291bnQgKyBsaXN0IG9mIHN0b3JlcyBvbmJvYXJkZWQgdGhpcyBtb250aCAoZmlyc3QgZmlsZSBkYXRlIGluIHRoZSBjdXJyZW50XG4gIC8vIG1vbnRoKS4gVGhlIGxpc3QgZmVlZHMgdGhlIFwiVmlldyBTdG9yZXNcIiBwb3B1cC5cbiAgbmV3bHlPbmJvYXJkZWRTdG9yZXM6IG51bWJlciA9IDA7XG4gIG5ld2x5T25ib2FyZGVkU3RvcmVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmlsbGluZ1NlcnZpY2U6IEJpbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY2xpZW50SWQnXSAmJiAhY2hhbmdlc1snY2xpZW50SWQnXS5maXJzdENoYW5nZSAmJiB0aGlzLmNsaWVudElkKSB7XG4gICAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICAgIHRoaXMubG9hZEFkZGl0aW9uYWxQcm9kdWN0cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdyYW5kIHRvdGFsIGFjcm9zcyBhbGwgYWRkaXRpb25hbC1wcm9kdWN0IHJvd3MuXG4gIGdldCBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5hZGRpdGlvbmFsUHJvZHVjdHMgfHwgW10pLnJlZHVjZSgoYSwgcCkgPT4gYSArIChOdW1iZXIocC50b3RhbCkgfHwgMCksIDApO1xuICB9XG5cbiAgLy8gUHJvZHVjdHMgdGhhdCBoYXZlIGEgYmFja2VuZCBkZXRhaWxlZCBleHBvcnQuIEtleWVkIGJ5IHRoZSBwcm9kdWN0IGtleSB0aGVcbiAgLy8gZXhwb3J0IGVuZHBvaW50IHVuZGVyc3RhbmRzLiBBZGQgbW9yZSBhcyB0aGVpciBxdWVyaWVzIGFyZSB3aXJlZCB1cC5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRhYmxlUHJvZHVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ2V5ZXRlc3QnOiAnZXlldGVzdCcsXG4gICAgJ2V5ZXRlc3QgKGFkZGl0aW9uYWwgc3RvcmFnZSknOiAnZXlldGVzdGFkZGl0aW9uYWxzdG9yYWdlJyxcbiAgICAncGxhbm9ncmFtJzogJ3BsYW5vZ3JhbScsXG4gICAgJ2FpIG1hbmFnZXInOiAnYWltYW5hZ2VyJyxcbiAgICAndm1zJzogJ3ZtcycsXG4gICAgLy8gJ1J1biBBSScgaXMgZGlzcGxheWVkIGFzICdBSSBpbiBjaGVja2xpc3QnOyBib3RoIG1hcCB0byB0aGUgc2FtZSBleHBvcnRcbiAgICAvLyBrZXkgc28gdGhlIGRvd25sb2FkIHdvcmtzIHdoaWNoZXZlciBsYWJlbCB0aGUgQVBJIHJldHVybnMuXG4gICAgJ3J1biBhaSc6ICdydW5haScsXG4gICAgJ2FpIGluIGNoZWNrbGlzdCc6ICdydW5haScsXG4gICAgJ3JlbW90ZSBvcHR1bSc6ICdyZW1vdGVvcHR1bScsXG4gICAgLy8gRmFjdG9yeSBRQyAoRmFjdG9yeVFDX2JpbGxpbmcgTGFtYmRhKS4gRGF5LXNjb3BlZDogdGhlIExhbWJkYSB0YWtlcyBvbmx5XG4gICAgLy8gcmVwb3J0X2RhdGUsIHNvIHRoaXMgZXhwb3J0IGNvdmVycyB0aGUgc25hcHNob3QgZGF0ZSBzaG93biBvbiB0aGUgY2FyZFxuICAgIC8vIHJhdGhlciB0aGFuIG1vbnRoLXRvLWRhdGUgbGlrZSBSZW1vdGUgT3B0dW0uXG4gICAgJ2ZhY3RvcnknOiAnZmFjdG9yeScsXG4gIH07XG5cbiAgY2FuRXhwb3J0QWRkaXRpb25hbFByb2R1Y3QocHJvZHVjdE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZXhwb3J0YWJsZVByb2R1Y3RzWyhwcm9kdWN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICBleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwcm9kdWN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5leHBvcnRhYmxlUHJvZHVjdHNbKHByb2R1Y3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBQYXNzIHRoZSBiaWxsaW5nX2RldGFpbHMgc25hcHNob3QgZGF0ZSAoWVlZWS1NTS1ERCkgYmVoaW5kIHRoZSBjYXJkIGNvdW50c1xuICAgIC8vIHNvIGRheS1zY29wZWQgZXhwb3J0cyAoVk1TIC8gUnVuIEFJIHZpYSBMYW1iZGEgdG9fZGF0ZSwgUmVtb3RlIE9wdHVtKSBtYXRjaFxuICAgIC8vIHdoYXQncyBzaG93bi4gRmFsbCBiYWNrIHRvIHRvZGF5IGlmIHRoZSBiYWNrZW5kIGRpZG4ndCByZXR1cm4gYSBkYXRlLlxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0b2RheVN0ciA9IGAke3RvZGF5LmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKHRvZGF5LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyh0b2RheS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICBjb25zdCBleHBvcnREYXRlID0gdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNEYXRlIHx8IHRvZGF5U3RyO1xuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuYWRkaXRpb25hbFByb2R1Y3RFeHBvcnQodGhpcy5jbGllbnRJZCwga2V5LCBleHBvcnREYXRlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgICAgLy8gQSByZWFsIC54bHN4IGlzIGEgemlwIOKAlCBpdHMgZmlyc3QgdHdvIGJ5dGVzIGFyZSAnUEsnICgweDUwIDB4NEIpLlxuICAgICAgICAgIC8vIEEgMjA0L2VtcHR5IG9yIEpTT04gZXJyb3IgYm9keSBpcyBOT1QsIGFuZCBzYXZpbmcgaXQgcHJvZHVjZXMgYVxuICAgICAgICAgIC8vIFwiY29ycnVwdGVkXCIgZmlsZS4gR3VhcmQgc28gd2Ugb25seSBzYXZlIGEgZ2VudWluZSB3b3JrYm9vay5cbiAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcyA/IG5ldyBVaW50OEFycmF5KHJlcykgOiBuZXcgVWludDhBcnJheSgpO1xuICAgICAgICAgIGNvbnN0IGlzWGxzeCA9IGJ5dGVzLmxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0gPT09IDB4NTAgJiYgYnl0ZXNbMV0gPT09IDB4NGI7XG4gICAgICAgICAgaWYgKCFpc1hsc3gpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnTm8gZGF0YSB0byBleHBvcnQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBgJHtwcm9kdWN0TmFtZX0tJHt0aGlzLmNsaWVudElkfWApO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRXhwb3J0IGZhaWxlZCcpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgYWRkaXRpb25hbC1wcm9kdWN0cyB0YWJsZSBmb3IgdGhpcyBjbGllbnQuIEJhY2tlbmQgcmV0dXJucyBhblxuICAvLyBlbXB0eSBsaXN0IGZvciBhbnkgY2xpZW50IHRoYXQgaGFzIG5vbmUgKHNvIHRoZSB0YWJsZSBqdXN0IHdvbid0IHJlbmRlcikuXG4gIGxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKSB7XG4gICAgLy8gU2VuZCB0aGUgcGFnZSdzIHNlbGVjdGVkIGRhdGUgKGlmIGFueSkgc28gdGhlIHNlY3Rpb24gcmVmbGVjdHMgaXQuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5hZGRpdGlvbmFsUHJvZHVjdHModGhpcy5jbGllbnRJZCwgdGhpcy5kYXRlRmlsdGVyIHx8IHVuZGVmaW5lZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gcmVzPy5kYXRhPy5wcm9kdWN0cyB8fCBbXTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9IHJlcz8uZGF0YT8uY3VycmVuY3kgfHwgJ2lucic7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzRGF0ZSA9IHJlcz8uZGF0YT8uYmlsbGluZ0RhdGUgfHwgJyc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFByb2R1Y3RzID0gW107XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2FkRGFpbHlQcmljaW5nKCkge1xuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3JlTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdG9yZU5vRGF0YSA9IGZhbHNlO1xuXG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMubGVuLFxuICAgICAgc29ydENvbHVtTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHN0YXR1c0ZpbHRlcjogdGhpcy5zdGF0dXNGaWx0ZXIsXG4gICAgICBjb3VudHJ5RmlsdGVyOiB0aGlzLmNvdW50cnlGaWx0ZXIsXG4gICAgICBkYXRlRmlsdGVyOiB0aGlzLmRhdGVGaWx0ZXIgfHwgJycsXG4gICAgICBleHBvcnQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nKGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGUpID0+IHtcbiAgICAgICAgLy8gVGhlIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IGNvbWVzIGZyb20gaW52b2ljZSBoaXN0b3J5LCBub3QgdGhlIHN0b3JlXG4gICAgICAgIC8vIHJvd3Mg4oCUIGFwcGx5IGl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgc3RvcmUgbGlzdCBpcyBlbXB0eSwgc28gaXRcbiAgICAgICAgLy8gc3RpbGwgc2hvd3Mgd2hlbiB0aGUgZmlsdGVyZWQgc3RvcmUgdGFibGUgaGFzIG5vIHJvd3MuXG4gICAgICAgIHRoaXMubW9udGhseUJpbGxpbmdTdW1tYXJ5ID0gdGhpcy5kZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KGU/LmRhdGE/Lm1vbnRobHlCaWxsaW5nU3VtbWFyeSB8fCBbXSk7XG4gICAgICAgIC8vIE5ld2x5IG9uYm9hcmRlZCBjb3VudC9saXN0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBzdG9yZSB0YWJsZSdzXG4gICAgICAgIC8vIGZpbHRlcnMsIHNvIGNhcHR1cmUgaXQgd2hldGhlciBvciBub3QgdGhlIGZpbHRlcmVkIHN0b3JlIGxpc3QgaGFzIHJvd3MuXG4gICAgICAgIHRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZXMgPSBlPy5kYXRhPy5uZXdseU9uYm9hcmRlZFN0b3JlcyB8fCAwO1xuICAgICAgICB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0ID0gZT8uZGF0YT8ubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QgfHwgW107XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgdGhlIENvdW50cnkgZmlsdGVyIG9wdGlvbnMgZnJvbSB0aGUgQVBJJ3MgY291bnRyeSBsaXN0IChhbGxcbiAgICAgICAgLy8gY2xpZW50IHN0b3JlcykuIEluZGVwZW5kZW50IG9mIHRoZSBmaWx0ZXJlZCBzdG9yZSBjb3VudCwgc28gYnVpbGQgaXRcbiAgICAgICAgLy8gZXZlbiB3aGVuIHRoZSBmaWx0ZXJlZCB0YWJsZSBpcyBlbXB0eS5cbiAgICAgICAgdGhpcy5idWlsZENvdW50cnlGaWx0ZXJPcHRpb25zKGU/LmRhdGE/LmNvdW50cmllcyB8fCBbXSk7XG5cbiAgICAgICAgaWYgKGU/LmRhdGE/LmNvdW50KSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3JlTm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSBlLmRhdGE/LmRhdGE7XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gZS5kYXRhPy5jb3VudDtcblxuICAgICAgICAgIHRoaXMuZGFpbHlQcmljaW5nSW5mbyA9IHtcbiAgICAgICAgICAgIGJyYW5kTmFtZTogZS5kYXRhPy5icmFuZE5hbWUgfHwgJycsXG4gICAgICAgICAgICBkYXRlU3RyaW5nOiBlLmRhdGE/LmRhdGVTdHJpbmcgfHwgJycsXG4gICAgICAgICAgICBkYXRlSVNPOiBlLmRhdGE/LmRhdGVJU08gfHwgJycsXG4gICAgICAgICAgICBhY3RpdmVTdG9yZXM6IGUuZGF0YT8uYWN0aXZlU3RvcmVzIHx8IDAsXG4gICAgICAgICAgICBhY2NvdW50VHlwZTogZS5kYXRhPy5hY2NvdW50VHlwZSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogZS5kYXRhPy5zdGF0dXMgfHwgJycsXG4gICAgICAgICAgICBwcm9SYXRlOiBlLmRhdGE/LnByb1JhdGUgfHwgJycsXG4gICAgICAgICAgICBjbGllbnRJZDogZS5kYXRhPy5jbGllbnRJZCB8fCAnJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0b3JlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICh0aGlzLmxlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RvcmVMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RvcmVOb0RhdGEgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3JlTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLm1vbnRobHlCaWxsaW5nU3VtbWFyeSA9IFtdO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0ZUZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gICAgLy8gQWRkaXRpb25hbCBQcm9kdWN0cyByZWZsZWN0IHRoZSBzZWxlY3RlZCBkYXRlIHRvby5cbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIGNsZWFyRGF0ZUZpbHRlcigpIHtcbiAgICB0aGlzLmRhdGVGaWx0ZXIgPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgICB0aGlzLmxvYWRBZGRpdGlvbmFsUHJvZHVjdHMoKTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgLy8gQWRkL3JlZnJlc2ggdGhlIENvdW50cnkgZ3JvdXAgaW4gdGhlIGZpbHRlciBkcm9wZG93biBmcm9tIHRoZSBBUEkncyBjb3VudHJ5XG4gIC8vIGxpc3QsIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIChjaGVja2VkKS4gbGliLWZpbHRlcnMgc25hcHNob3RzXG4gIC8vIGRhdGFPYmplY3Qgb25seSBpbiBuZ09uSW5pdCwgc28gd2UgYnVpbGQgdGhlIGZ1bGwgc3RvcmVGaWx0ZXJPYmplY3QgaGVyZSBhbmRcbiAgLy8gdGhlbiBmbGlwIGZpbHRlcnNSZWFkeSB0byBtb3VudCA8bGliLWZpbHRlcnM+IG9uY2Ug4oCUIGFmdGVyIHdoaWNoIGl0IHNlZXMgYm90aFxuICAvLyBTdGF0dXMgYW5kIENvdW50cnkgZ3JvdXBzLlxuICBwcml2YXRlIGJ1aWxkQ291bnRyeUZpbHRlck9wdGlvbnMoY291bnRyaWVzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KGNvdW50cmllcykgPyBjb3VudHJpZXMuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IG5ldyBTZXQodGhpcy5jb3VudHJ5RmlsdGVyKTtcbiAgICAgIGNvbnN0IGlzc3VlcyA9IGxpc3QubWFwKChjKSA9PiAoeyBpZDogYywgdGV4dDogYywgY2hlY2tlZDogc2VsZWN0ZWQuaGFzKGMpIH0pKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5zdG9yZUZpbHRlck9iamVjdC5maW5kKChnKSA9PiBnLkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLklzc3VlcyA9IGlzc3VlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmVGaWx0ZXJPYmplY3QgPSBbLi4udGhpcy5zdG9yZUZpbHRlck9iamVjdCwgeyBEZXNjcmlwdGlvbjogJ0NvdW50cnknLCB0eXBlOiAnbXVsdGknLCBJc3N1ZXM6IGlzc3VlcyB9XTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTW91bnQgbGliLWZpbHRlcnMgb25jZSB0aGUgZmlyc3QgcmVzcG9uc2UgaXMgaW4gKFN0YXR1cyBhbG9uZSBpZiB0aGVyZSBhcmVcbiAgICAvLyBubyBjb3VudHJpZXMpLCBzbyBpdCBzbmFwc2hvdHMgdGhlIGZ1bGwgZGF0YU9iamVjdCBvbiBpbml0LlxuICAgIGlmICghdGhpcy5maWx0ZXJzUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhcHBseVN0b3JlRmlsdGVycyhldmVudDogYW55KSB7XG4gICAgLy8gTXVsdGktc2VsZWN0IFN0YXR1cyAvIENvdW50cnkg4oCUIGxpYi1maWx0ZXJzIGVtaXRzIGVhY2ggZ3JvdXAncyBzZWxlY3RlZFxuICAgIC8vIG9wdGlvbnMgYXMgYW4gQVJSQVkgdW5kZXIgSXNzdWVzIChBcHBseSBzZXRzIElzc3VlcyA9IHNlbGVjdGVkVmFsdWVzQXJyYXlcbiAgICAvLyBbaW5kZXhdKS4gQ29sbGVjdCBldmVyeSBzZWxlY3RlZCBpZCwgdG9sZXJhdGluZyBhcnJheSBhbmQgc2luZ2xlLW9iamVjdFxuICAgIC8vIHNoYXBlcy5cbiAgICBjb25zdCBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc3N1ZXMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuSXNzdWVzKSA/IGVsZW1lbnQuSXNzdWVzIDogKGVsZW1lbnQuSXNzdWVzID8gW2VsZW1lbnQuSXNzdWVzXSA6IFtdKTtcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdTdGF0dXMnKSB7XG4gICAgICAgICAgaXNzdWVzLmZvckVhY2goKGk6IGFueSkgPT4geyBpZiAoaT8uaWQpIHN0YXR1c2VzLnB1c2goaS5pZCk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5Jykge1xuICAgICAgICAgIGlzc3Vlcy5mb3JFYWNoKChpOiBhbnkpID0+IHsgaWYgKGk/LmlkKSBjb3VudHJpZXMucHVzaChpLmlkKTsgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1c0ZpbHRlciA9IFsuLi5uZXcgU2V0KHN0YXR1c2VzKV07XG4gICAgdGhpcy5jb3VudHJ5RmlsdGVyID0gWy4uLm5ldyBTZXQoY291bnRyaWVzKV07XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZykge1xuICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcbiAgICB0aGlzLnNvcnRCeSAqPSAtMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWREYWlseVByaWNpbmcoKTtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyc2VJbnQocGFnZU9mZnNldCk7XG4gICAgdGhpcy5sb2FkRGFpbHlQcmljaW5nKCk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xuICAgIHRoaXMubG9hZERhaWx5UHJpY2luZygpO1xuICB9XG5cbiAgb25FeHBvcnQoKSB7XG4gICAgbGV0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmxlbixcbiAgICAgIHNvcnRDb2x1bU5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0QnksXG4gICAgICBzdGF0dXNGaWx0ZXI6IHRoaXMuc3RhdHVzRmlsdGVyLFxuICAgICAgZGF0ZUZpbHRlcjogdGhpcy5kYXRlRmlsdGVyIHx8ICcnLFxuICAgICAgZXhwb3J0OiB0cnVlXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UubGF0ZXN0RGFpbHlQcmljaW5nRXhwb3J0KGZpbHRlcnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsICdkYWlseS1wcmljaW5nJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdTb21ldGhpbmcgd2VudCBXcm9uZy4uJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3N0b3JlSWR9XyR7cHJvZHVjdE5hbWV9YDtcbiAgfVxuXG4gIGlzRWRpdGluZyhzdG9yZUlkOiBzdHJpbmcsIHByb2R1Y3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nUHJvZHVjdFt0aGlzLmdldEVkaXRLZXkoc3RvcmVJZCwgcHJvZHVjdE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRFZGl0KHN0b3JlOiBhbnksIHByb2R1Y3Q6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RWRpdEtleShzdG9yZS5zdG9yZUlkLCBwcm9kdWN0LnByb2R1Y3ROYW1lKTtcbiAgICAvLyBDb2VyY2UgdG8gYSBudW1iZXIgc28gYSAwIC8gbWlzc2luZyB2YWx1ZSBzdGlsbCBlbnRlcnMgZWRpdCBtb2RlIHdpdGggYVxuICAgIC8vIGRlZmluZWQgdmFsdWUgKHVuZGVmaW5lZCB3b3VsZCBtYWtlIGlzRWRpdGluZygpIHRoaW5rIHdlJ3JlIG5vdCBlZGl0aW5nKS5cbiAgICB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV0gPSBOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMDtcbiAgfVxuXG4gIGNhbmNlbEVkaXQoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gIH1cblxuICBzYXZlV29ya2luZ0RheXMoc3RvcmU6IGFueSwgcHJvZHVjdDogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIHByb2R1Y3QucHJvZHVjdE5hbWUpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gTnVtYmVyKHRoaXMuZWRpdGluZ1Byb2R1Y3Rba2V5XSkgfHwgMDtcblxuICAgIC8vIFVuY2hhbmdlZCDihpIganVzdCBjbG9zZSB0aGUgZWRpdG9yIChjb21wYXJlIGFzIG51bWJlcnMgc28gMCB2cyBcIjBcIiBldGMuXG4gICAgLy8gZG9uJ3Qgc2xpcCB0aHJvdWdoKS5cbiAgICBpZiAobmV3VmFsdWUgPT09IChOdW1iZXIocHJvZHVjdC53b3JraW5nZGF5cykgfHwgMCkpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5kYWlseVByaWNpbmdJbmZvLmRhdGVTdHJpbmcsXG4gICAgICBzdG9yZUlkOiBzdG9yZS5zdG9yZUlkLFxuICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QucHJvZHVjdE5hbWUsXG4gICAgICB3b3JraW5nZGF5czogbmV3VmFsdWVcbiAgICB9O1xuXG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS51cGRhdGVEYWlseVByaWNpbmdXb3JraW5nRGF5cyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgcHJvZHVjdC53b3JraW5nZGF5cyA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdQcm9kdWN0W2tleV07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KCdXb3JraW5nIGRheXMgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlIHdvcmtpbmcgZGF5cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmllbGRFZGl0S2V5KHN0b3JlSWQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtzdG9yZUlkfV8ke2ZpZWxkTmFtZX1gO1xuICB9XG5cbiAgaXNFZGl0aW5nRmllbGQoc3RvcmVJZDogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVkaXRpbmdGaWVsZFt0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZUlkLCBmaWVsZE5hbWUpXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3RhcnRGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIHRoaXMuZWRpdGluZ0ZpZWxkW2tleV0gPSBzdG9yZVtmaWVsZE5hbWVdIHx8IDA7XG4gIH1cblxuICBjYW5jZWxGaWVsZEVkaXQoc3RvcmU6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZpZWxkRWRpdEtleShzdG9yZS5zdG9yZUlkLCBmaWVsZE5hbWUpO1xuICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICB9XG5cbiAgc2F2ZUZpZWxkRWRpdChzdG9yZTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmllbGRFZGl0S2V5KHN0b3JlLnN0b3JlSWQsIGZpZWxkTmFtZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSBzdG9yZVtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgdGhpcy5lZGl0aW5nRmllbGRba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmRhaWx5UHJpY2luZ0luZm8uZGF0ZVN0cmluZyxcbiAgICAgIHN0b3JlSWQ6IHN0b3JlLnN0b3JlSWQsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBOdW1iZXIobmV3VmFsdWUpXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlRGFpbHlQcmljaW5nU3RvcmVGaWVsZChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgc3RvcmVbZmllbGROYW1lXSA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdGaWVsZFtrZXldO1xuICAgICAgICBjb25zdCBmaWVsZExhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAnVHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICdab25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ1pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0UHJpbWFyeVRvYXN0KGAke2ZpZWxkTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfSB1cGRhdGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvckxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgdHJhZmZpY0NhbWVyYUNvdW50OiAndHJhZmZpYyBjYW1lcmEgY291bnQnLCB6b25lQ2FtZXJhQ291bnQ6ICd6b25lIGNhbWVyYSBjb3VudCcsIHpvbmVDb3VudDogJ3pvbmUgY291bnQnIH07XG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgRmFpbGVkIHRvIHVwZGF0ZSAke2Vycm9yTGFiZWxzW2ZpZWxkTmFtZV0gfHwgZmllbGROYW1lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVJbnZvaWNlKCkge1xuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xuICAgIC8vIE9wZW4gdGhlIHBpY2tlciBmaXJzdCDigJQgdGhlIHVzZXIgY2hvb3NlcyB3aGljaCBiaWxsaW5nIGdyb3VwcyB0b1xuICAgIC8vIGdlbmVyYXRlIGZvci4gTW9kYWwgY2xvc2VzIHdpdGggeyBncm91cElkcywgb3V0c3RhbmRpbmdHcm91cElkcyB9XG4gICAgLy8gKG9yIGlzIGRpc21pc3NlZCA9IG5vLW9wKS5cbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVJbnZvaWNlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLCBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiB7IGdyb3VwSWRzOiBzdHJpbmdbXTsgb3V0c3RhbmRpbmdHcm91cElkczogc3RyaW5nW10gfSkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQgfHwgIUFycmF5LmlzQXJyYXkocmVzdWx0Lmdyb3VwSWRzKSB8fCByZXN1bHQuZ3JvdXBJZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0aGlzLnJ1bkludm9pY2VHZW5lcmF0aW9uKHJlc3VsdC5ncm91cElkcywgcmVzdWx0Lm91dHN0YW5kaW5nR3JvdXBJZHMgfHwgW10pO1xuICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8vIE9wZW4gYSBwb3B1cCBsaXN0aW5nIHRoZSBuZXdseSBvbmJvYXJkZWQgc3RvcmVzICh3aXRoIGZpcnN0IGZpbGUgZGF0ZSkuXG4gIC8vIFRoZSBsaXN0IGlzIGFscmVhZHkgbG9hZGVkIHdpdGggdGhlIHBhZ2UsIHNvIG5vIGV4dHJhIEFQSSBjYWxsIGlzIG5lZWRlZC5cbiAgdmlld05ld1N0b3JlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmV3bHlPbmJvYXJkZWRTdG9yZUxpc3QubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5ld1N0b3Jlc01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJywgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZXMgPSB0aGlzLm5ld2x5T25ib2FyZGVkU3RvcmVMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBydW5JbnZvaWNlR2VuZXJhdGlvbihncm91cElkczogc3RyaW5nW10sIG91dHN0YW5kaW5nR3JvdXBJZHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRpbmdJbnZvaWNlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhbGxDbGllbnQ6IHRydWUsXG4gICAgICBjbGllbnRMaXN0OiBbdGhpcy5jbGllbnRJZF0sXG4gICAgICBncm91cElkcyxcbiAgICAgIG91dHN0YW5kaW5nR3JvdXBJZHMsXG4gICAgfTtcblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuY3JlYXRlSW52b2ljZShwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5nZW5lcmF0aW5nSW52b2ljZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0LmdldFByaW1hcnlUb2FzdChgSW52b2ljZSBnZW5lcmF0ZWQgZm9yICR7Z3JvdXBJZHMubGVuZ3RofSBiaWxsaW5nIGdyb3VwKHMpYCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGluZ0ludm9pY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gZ2VuZXJhdGUgaW52b2ljZScpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8vIFRha2UgdGhlIHJhdyBhZ2dyZWdhdGlvbiByb3dzIChhbHJlYWR5IHNvcnRlZCBuZXdlc3QtZmlyc3QgYnkgdGhlIEFQSSkgYW5kXG4gIC8vIGF0dGFjaCAoYSkgYSBodW1hbi1yZWFkYWJsZSBtb250aExhYmVsLCAoYikgdGFnIGZvciB0aGUgbGF0ZXN0IHR3byByb3dzXG4gIC8vIChcIkN1cnJlbnRcIiAvIFwiTGFzdCBnZW5lcmF0ZWRcIikgYW5kIChjKSBkZWx0YXMgdnMgdGhlIGltbWVkaWF0ZWx5IG9sZGVyXG4gIC8vIEN1cnJlbmN5IHN5bWJvbCBmb3IgYSBzdG9yZSdzIGludm9pY2UgYW1vdW50IChtYXRjaGVzIHRoZSBiYWNrZW5kJ3NcbiAgLy8gYmFzZXByaWNpbmcgY3VycmVuY3k7IEFFRCByZW5kZXJlZCBhcyB0ZXh0KS5cbiAgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBzeW1ib2xzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBpbnI6ICfigrknLCBkb2xsYXI6ICckJywgc2luZ2Fwb3JlZG9sbGFyOiAnUyQnLCBldXJvOiAn4oKsJywgYWVkOiAnQUVEICcgfTtcbiAgICByZXR1cm4gc3ltYm9sc1soc3RvcmU/Lmludm9pY2VDdXJyZW5jeSB8fCAnaW5yJykudG9Mb3dlckNhc2UoKV0gfHwgJ+KCuSc7XG4gIH1cblxuICAvLyBtb250aCBzbyB0aGUgdGVtcGxhdGUgY2FuIHJlbmRlciB0aGUg4payL+KWvC/ilqwgdHJlbmQgaW5kaWNhdG9ycy5cbiAgcHJpdmF0ZSBkZWNvcmF0ZU1vbnRobHlTdW1tYXJ5KHJvd3M6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShyb3dzKSB8fCByb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBbJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddO1xuICAgIGNvbnN0IHN5bWJvbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGlucjogJ+KCuScsIGRvbGxhcjogJyQnLCBzaW5nYXBvcmVkb2xsYXI6ICdTJCcsIGV1cm86ICfigqwnIH07XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBpc0N1cnJlbnQgPSAocjogYW55KSA9PiByLnllYXIgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIHIubW9udGggPT09IChub3cuZ2V0TW9udGgoKSArIDEpO1xuICAgIHJldHVybiByb3dzLm1hcCgociwgaSkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHJvd3NbaSArIDFdO1xuICAgICAgY29uc3Qgc3RvcmVzRGVsdGEgPSBuZXh0ID8gKHIuc3RvcmVzQmlsbGVkIHx8IDApIC0gKG5leHQuc3RvcmVzQmlsbGVkIHx8IDApIDogbnVsbDtcbiAgICAgIGNvbnN0IGFtb3VudERlbHRhID0gbmV4dCA/IChyLmludm9pY2VBbW91bnQgfHwgMCkgLSAobmV4dC5pbnZvaWNlQW1vdW50IHx8IDApIDogbnVsbDtcbiAgICAgIGxldCB0YWcgPSAnJztcbiAgICAgIGlmIChpc0N1cnJlbnQocikpIHRhZyA9ICdDdXJyZW50JztcbiAgICAgIGVsc2UgaWYgKGkgPT09IDApIHRhZyA9ICdMYXN0IGdlbmVyYXRlZCc7XG4gICAgICBlbHNlIGlmIChpID09PSAxICYmIGlzQ3VycmVudChyb3dzWzBdKSkgdGFnID0gJ0xhc3QgZ2VuZXJhdGVkJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnIsXG4gICAgICAgIG1vbnRoTGFiZWw6IGAke21vbnRoTmFtZXNbKHIubW9udGggfHwgMSkgLSAxXX0gJHtyLnllYXJ9YCxcbiAgICAgICAgdGFnLFxuICAgICAgICBzdG9yZXNEZWx0YSxcbiAgICAgICAgYW1vdW50RGVsdGEsXG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiBzeW1ib2xzWyhyLmN1cnJlbmN5IHx8ICdpbnInKS50b0xvd2VyQ2FzZSgpXSB8fCAnJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVNb250aGx5U3VtbWFyeUhpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5tb250aGx5U3VtbWFyeUV4cGFuZGVkID0gIXRoaXMubW9udGhseVN1bW1hcnlFeHBhbmRlZDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJpbnZvaWNlcy1zZWN0aW9uXCI+XG4gICAgPCEtLSBIZWFkZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmlsbGluZ2hlYWRlclwiPkJpbGxpbmcgQnJlYWtkb3duPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTFcIj57eyB0b3RhbEl0ZW1zIH19IHN0b3Jlczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiICpuZ0lmPVwiZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZ1wiPlxuICAgICAgICAgICAgICAgIERhdGU6IDxzdHJvbmc+e3sgZGFpbHlQcmljaW5nSW5mbz8uZGF0ZVN0cmluZyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPnw8L3NwYW4+XG4gICAgICAgICAgICAgICAgQWN0aXZlIFN0b3JlczogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY3RpdmVTdG9yZXMgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj58PC9zcGFuPlxuICAgICAgICAgICAgICAgIEFjY291bnQgVHlwZTogPHN0cm9uZz57eyBkYWlseVByaWNpbmdJbmZvPy5hY2NvdW50VHlwZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZGF0ZS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25EYXRlRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciBieSBkYXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGVGaWx0ZXJcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckRhdGVGaWx0ZXIoKVwiIHRpdGxlPVwiQ2xlYXIgZGF0ZSBmaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjUgMy41TDMuNSAxMC41TTMuNSAzLjVMMTAuNSAxMC41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnZW5lcmF0ZUludm9pY2UoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYWxpZ24taXRlbXMtZW5kIHRleHQtbm93cmFwIGludmhlYWRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdG9yZUxpc3QubGVuZ3RoIHx8IGdlbmVyYXRpbmdJbnZvaWNlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi42NjY2NyAxMEgxMy4zMzMzTTYuNjY2NjcgNi42NjY2N0gxMy4zMzMzTTYuNjY2NjcgMTMuMzMzM0gxME01IDE3LjVIMTVDMTUuOTIwNSAxNy41IDE2LjY2NjcgMTYuNzUzOCAxNi42NjY3IDE1LjgzMzNWNC4xNjY2N0MxNi42NjY3IDMuMjQ2MTkgMTUuOTIwNSAyLjUgMTUgMi41SDVDNC4wNzk1MyAyLjUgMy4zMzMzMyAzLjI0NjE5IDMuMzMzMzMgNC4xNjY2N1YxNS44MzMzQzMuMzMzMzMgMTYuNzUzOCA0LjA3OTUzIDE3LjUgNSAxNy41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+e3sgZ2VuZXJhdGluZ0ludm9pY2UgPyAnR2VuZXJhdGluZy4uLicgOiAnR2VuZXJhdGUgSW52b2ljZScgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkV4cG9ydCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0b3JlTGlzdC5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCI+RXhwb3J0PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXdseSBPbmJvYXJkZWQgU3RvcmVzIOKAlCBzdG9yZXMgd2hvc2UgZmlyc3QgZmlsZSBkYXRlIGlzIGluIHRoZSBjdXJyZW50IG1vbnRoIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3bHktb25ib2FyZGVkLWNhcmRcIlxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNHB4O2JvcmRlcjoxcHggc29saWQgI0U0RTdFQztib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHg7YmFja2dyb3VuZDojZmZmO21pbi13aWR0aDoyNDBweDtcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I0VBRjhGRjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAyMVY4bDktNSA5IDV2MTNNMyAyMWgxOE0zIDIxSDFtMjAgMGgyTTkgMjF2LTZoNnY2TTEyIDcuNWguMDFcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MjRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzEwMTgyODtsaW5lLWhlaWdodDoxLjE7XCI+e3sgbmV3bHlPbmJvYXJkZWRTdG9yZXMgfCBudW1iZXI6JzEuMC0wJzonZW4tSU4nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjcwODU7XCI+TmV3bHkgT25ib2FyZGVkIFN0b3JlczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6MTFweDtjb2xvcjojOThBMkIzO1wiPkZpcnN0IGZpbGUgaW4gY3VycmVudCBtb250aDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBtcy0zXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIW5ld2x5T25ib2FyZGVkU3RvcmVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld05ld1N0b3JlcygpXCI+VmlldyBTdG9yZXM8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1vbnRobHkgQmlsbGluZyBTdW1tYXJ5IOKAlCBpbnZvaWNlIHRyZW5kIChuZXdlc3QgZmlyc3QsIHdpdGggZGVsdGFzIHZzIHByaW9yIG1vbnRoKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhseS1iaWxsaW5nLXN1bW1hcnlcIiAqbmdJZj1cIm1vbnRobHlCaWxsaW5nU3VtbWFyeT8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtc3VtLWhlYWRlclwiPk1vbnRobHkgQmlsbGluZyBTdW1tYXJ5PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TU9OVEg8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5VTUJFUiBPRiBTVE9SRVMgQklMTEVEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5JTlZPSUNFIEFNT1VOVDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBtb250aGx5QmlsbGluZ1N1bW1hcnk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImkgPCAyIHx8IG1vbnRobHlTdW1tYXJ5RXhwYW5kZWRcIiBbY2xhc3MuY3Vycl09XCJyb3cudGFnID09PSAnQ3VycmVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcm93Lm1vbnRoTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3cudGFnID09PSAnQ3VycmVudCdcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXMtMlwiPkN1cnJlbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnRhZyA9PT0gJ0xhc3QgZ2VuZXJhdGVkJ1wiIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrIG1zLTJcIj5MYXN0IGdlbmVyYXRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cuc3RvcmVzQmlsbGVkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LnN0b3Jlc0RlbHRhICE9PSBudWxsXCIgY2xhc3M9XCJpbmQgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXBdPVwicm93LnN0b3Jlc0RlbHRhID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG93bl09XCJyb3cuc3RvcmVzRGVsdGEgPCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGF0XT1cInJvdy5zdG9yZXNEZWx0YSA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInJvdy5zdG9yZXNEZWx0YSA+IDBcIj7ilrIge3sgcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwicm93LnN0b3Jlc0RlbHRhIDwgMFwiPuKWvCB7eyAtcm93LnN0b3Jlc0RlbHRhIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5pbnZvaWNlQW1vdW50IHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5hbW91bnREZWx0YSAhPT0gbnVsbFwiIGNsYXNzPVwiaW5kIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnVwXT1cInJvdy5hbW91bnREZWx0YSA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvd25dPVwicm93LmFtb3VudERlbHRhIDwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxhdF09XCJyb3cuYW1vdW50RGVsdGEgPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPiAwXCI+4payIHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IHJvdy5hbW91bnREZWx0YSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJyb3cuYW1vdW50RGVsdGEgPCAwXCI+4pa8IHt7IHJvdy5jdXJyZW5jeVN5bWJvbCB9fXt7IC1yb3cuYW1vdW50RGVsdGEgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PuKWrCAwPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb250aGx5QmlsbGluZ1N1bW1hcnkubGVuZ3RoID4gMlwiIGNsYXNzPVwibXN1bS10b2dnbGVcIiAoY2xpY2spPVwidG9nZ2xlTW9udGhseVN1bW1hcnlIaXN0b3J5KClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWviBTaG93IG9sZGVyIG1vbnRocyAoe3sgbW9udGhseUJpbGxpbmdTdW1tYXJ5Lmxlbmd0aCAtIDIgfX0pPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVN1bW1hcnlFeHBhbmRlZFwiPuKWtCBIaWRlIG9sZGVyIG1vbnRoczwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQWRkaXRpb25hbCBQcm9kdWN0cyDigJQgbm9uLXN0YW5kYXJkIHByb2R1Y3RzIGJpbGxlZCBmb3IgdGhpcyBjbGllbnQgb25seVxuICAgICAgICAgKGUuZy4gY2xpZW50SWQgMTE6IEV5ZXRlc3QsIFBsYW5vZ3JhbSkuIEhpZGRlbiB3aGVuIHRoZSBjbGllbnQgaGFzIG5vbmUuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtb250aGx5LWJpbGxpbmctc3VtbWFyeVwiICpuZ0lmPVwiYWRkaXRpb25hbFByb2R1Y3RzPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zdW0taGVhZGVyXCI+QWRkaXRpb25hbCBQcm9kdWN0czwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3QgTmFtZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWVuZFwiPlF1YW50aXR5PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+UHJpY2U8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1lbmRcIj5Ub3RhbDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPkFjdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcCBvZiBhZGRpdGlvbmFsUHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBwLnByb2R1Y3ROYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+e3sgcC5xdWFudGl0eSB8IG51bWJlcjonMS4wLTAnOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyAoYWRkaXRpb25hbFByb2R1Y3RzQ3VycmVuY3kgPT09ICdkb2xsYXInID8gJyQnIDogJ+KCuScpIH19e3sgcC5wcmljZSB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBwLnRvdGFsIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FeHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBZGRpdGlvbmFsUHJvZHVjdChwLnByb2R1Y3ROYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCIgY2xhc3M9XCJ0ZXh0LWVuZFwiPjxzdHJvbmc+R3JhbmQgVG90YWw8L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj48c3Ryb25nPnt7IChhZGRpdGlvbmFsUHJvZHVjdHNDdXJyZW5jeSA9PT0gJ2RvbGxhcicgPyAnJCcgOiAn4oK5JykgfX17eyBhZGRpdGlvbmFsUHJvZHVjdHNUb3RhbCB8IG51bWJlcjonMS4yLTInOidlbi1JTicgfX08L3N0cm9uZz48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggKyBGaWx0ZXIgUm93IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBwYXltZW50aGlzdG9yeSBib3JkZXItMCBweC0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gaW52b2ljZXNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG10LTYgbXMtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwibGVuXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBpbnZvaWNlc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3RvcmUgbmFtZSBvciBJRC4uLlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2VhcmNoRmllbGQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoRGlzYWJsZWRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJzUmVhZHlcIiBbZGF0YU9iamVjdF09XCJzdG9yZUZpbHRlck9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseVN0b3JlRmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTG9hZGluZyBTaGltbWVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIE5vIERhdGEgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0b3JlTm9EYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFN0b3JlcyBUYWJsZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXN0b3JlTG9hZGluZyAmJiAhc3RvcmVOb0RhdGFcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWNjb3JkaW9uIHRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdzdG9yZU5hbWUnKVwiPlNUT1JFIE5BTUVcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdG9yZU5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUT1JFIElEPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPkNPVU5UUlk8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+UFJPRFVDVFM8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgndHJhZmZpY0NhbWVyYUNvdW50JylcIj5UUkFGRklDIENBTUVSQVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3RyYWZmaWNDYW1lcmFDb3VudCcgJiYgc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICd0cmFmZmljQ2FtZXJhQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ3pvbmVDYW1lcmFDb3VudCcpXCI+Wk9ORSBDQU1FUkFTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ2FtZXJhQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNhbWVyYUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCd6b25lQ291bnQnKVwiPlpPTkVTXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lQ291bnQnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnem9uZUNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD5GSVJTVCBGSUxFIERBVEU8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF5c0RpZmZlcmVuY2UnKVwiPldPUktJTkcgREFZU1xuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnICYmIHNvcnRCeSA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGF5c0RpZmZlcmVuY2UnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPlNUQVRVUzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtZW5kXCI+SU5WT0lDRSBBTU9VTlQ8L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZSB0YWJsZS10aXRsZS1wcmltYXJ5XCI+e3sgc3RvcmU/LnN0b3JlTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uc3RvcmVJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBzdG9yZT8uY291bnRyeSB8fCAn4oCUJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBzdG9yZT8ucHJvZHVjdHNcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0b3JlPy50cmFmZmljQ2FtZXJhQ291bnQgfHwgMCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBlZGl0LWljb25cIiAoY2xpY2spPVwic3RhcnRGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTE2NjcgMS43NTAwNEMxMC4wNjk4IDEuNTk2ODMgMTAuMjUxOCAxLjQ3NTMzIDEwLjQ1MTkgMS4zOTIzOEMxMC42NTIyIDEuMzA5NDYgMTAuODY2NyAxLjI2Njc5IDExLjA4MzMgMS4yNjY3OUMxMS4zIDEuMjY2NzkgMTEuNTE0NSAxLjMwOTQ2IDExLjcxNDggMS4zOTIzOEMxMS45MTQ5IDEuNDc1MzMgMTIuMDk2OSAxLjU5NjgzIDEyLjI1IDEuNzUwMDRDMTIuNDAzMiAxLjkwMzI1IDEyLjUyNDcgMi4wODUyOSAxMi42MDc3IDIuMjg1NDZDMTIuNjkwNiAyLjQ4NTY3IDEyLjczMzMgMi43MDAxMyAxMi43MzMzIDIuOTE2NzFDMTIuNzMzMyAzLjEzMzI5IDEyLjY5MDYgMy4zNDc3NSAxMi42MDc3IDMuNTQ3OTZDMTIuNTI0NyAzLjc0ODEzIDEyLjQwMzIgMy45MzAxNyAxMi4yNSA0LjA4MzM4TDQuMzc1IDExLjk1ODRMMS4xNjY2NyAxMi44MzM0TDIuMDQxNjcgOS42MjUwNEw5LjkxNjY3IDEuNzUwMDRaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZWRpdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0aW5nRmllbGRbZ2V0RmllbGRFZGl0S2V5KHN0b3JlPy5zdG9yZUlkLCAndHJhZmZpY0NhbWVyYUNvdW50JyldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAndHJhZmZpY0NhbWVyYUNvdW50JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3RyYWZmaWNDYW1lcmFDb3VudCcpXCIgdGl0bGU9XCJTYXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMzMzNCA0TDYuMDAwMDggMTEuMzMzM0wyLjY2Njc1IDhcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJjYW5jZWxGaWVsZEVkaXQoc3RvcmUsICd0cmFmZmljQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiQ2FuY2VsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgNEw0IDEyTTQgNEwxMiAxMlwiIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0aW5nRmllbGQoc3RvcmU/LnN0b3JlSWQsICd6b25lQ2FtZXJhQ291bnQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdG9yZT8uem9uZUNhbWVyYUNvdW50IHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIGVkaXQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGluZ0ZpZWxkW2dldEZpZWxkRWRpdEtleShzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDYW1lcmFDb3VudCcpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDYW1lcmFDb3VudCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ2FtZXJhQ291bnQnKVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRmllbGRFZGl0KHN0b3JlLCAnem9uZUNhbWVyYUNvdW50JylcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZ0ZpZWxkKHN0b3JlPy5zdG9yZUlkLCAnem9uZUNvdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmU/LnpvbmVDb3VudCB8fCAwIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGVkaXQtaWNvblwiIChjbGljayk9XCJzdGFydEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45MTY2NyAxLjc1MDA0QzEwLjA2OTggMS41OTY4MyAxMC4yNTE4IDEuNDc1MzMgMTAuNDUxOSAxLjM5MjM4QzEwLjY1MjIgMS4zMDk0NiAxMC44NjY3IDEuMjY2NzkgMTEuMDgzMyAxLjI2Njc5QzExLjMgMS4yNjY3OSAxMS41MTQ1IDEuMzA5NDYgMTEuNzE0OCAxLjM5MjM4QzExLjkxNDkgMS40NzUzMyAxMi4wOTY5IDEuNTk2ODMgMTIuMjUgMS43NTAwNEMxMi40MDMyIDEuOTAzMjUgMTIuNTI0NyAyLjA4NTI5IDEyLjYwNzcgMi4yODU0NkMxMi42OTA2IDIuNDg1NjcgMTIuNzMzMyAyLjcwMDEzIDEyLjczMzMgMi45MTY3MUMxMi43MzMzIDMuMTMzMjkgMTIuNjkwNiAzLjM0Nzc1IDEyLjYwNzcgMy41NDc5NkMxMi41MjQ3IDMuNzQ4MTMgMTIuNDAzMiAzLjkzMDE3IDEyLjI1IDQuMDgzMzhMNC4zNzUgMTEuOTU4NEwxLjE2NjY3IDEyLjgzMzRMMi4wNDE2NyA5LjYyNTA0TDkuOTE2NjcgMS43NTAwNFpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRpbmdGaWVsZChzdG9yZT8uc3RvcmVJZCwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdGaWVsZFtnZXRGaWVsZEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsICd6b25lQ291bnQnKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVGaWVsZEVkaXQoc3RvcmUsICd6b25lQ291bnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc3VjY2Vzc1wiIChjbGljayk9XCJzYXZlRmllbGRFZGl0KHN0b3JlLCAnem9uZUNvdW50JylcIiB0aXRsZT1cIlNhdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzM0IDRMNi4wMDAwOCAxMS4zMzMzTDIuNjY2NzUgOFwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cImNhbmNlbEZpZWxkRWRpdChzdG9yZSwgJ3pvbmVDb3VudCcpXCIgdGl0bGU9XCJDYW5jZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA0TDQgMTJNNCA0TDEyIDEyXCIgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgc3RvcmU/LmVkZ2VmaXJzdEZpbGVEYXRlID8gKHN0b3JlPy5lZGdlZmlyc3RGaWxlRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScpIDogJ+KAlCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCIgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygc3RvcmU/LnByb2R1Y3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtYWxsIHRleHQtbXV0ZWRcIj57eyBmb3JtYXRQcm9kdWN0TmFtZShwcm9kdWN0Py5wcm9kdWN0TmFtZSkgfX06PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmlldyBtb2RlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHByb2R1Y3Q/LndvcmtpbmdkYXlzIHx8IDAgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZWRpdC1pY29uXCIgKGNsaWNrKT1cInN0YXJ0RWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkVkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjkxNjY3IDEuNzUwMDRDMTAuMDY5OCAxLjU5NjgzIDEwLjI1MTggMS40NzUzMyAxMC40NTE5IDEuMzkyMzhDMTAuNjUyMiAxLjMwOTQ2IDEwLjg2NjcgMS4yNjY3OSAxMS4wODMzIDEuMjY2NzlDMTEuMyAxLjI2Njc5IDExLjUxNDUgMS4zMDk0NiAxMS43MTQ4IDEuMzkyMzhDMTEuOTE0OSAxLjQ3NTMzIDEyLjA5NjkgMS41OTY4MyAxMi4yNSAxLjc1MDA0QzEyLjQwMzIgMS45MDMyNSAxMi41MjQ3IDIuMDg1MjkgMTIuNjA3NyAyLjI4NTQ2QzEyLjY5MDYgMi40ODU2NyAxMi43MzMzIDIuNzAwMTMgMTIuNzMzMyAyLjkxNjcxQzEyLjczMzMgMy4xMzMyOSAxMi42OTA2IDMuMzQ3NzUgMTIuNjA3NyAzLjU0Nzk2QzEyLjUyNDcgMy43NDgxMyAxMi40MDMyIDMuOTMwMTcgMTIuMjUgNC4wODMzOEw0LjM3NSAxMS45NTg0TDEuMTY2NjcgMTIuODMzNEwyLjA0MTY3IDkuNjI1MDRMOS45MTY2NyAxLjc1MDA0WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjE2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgbW9kZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWRpdGluZyhzdG9yZT8uc3RvcmVJZCwgcHJvZHVjdD8ucHJvZHVjdE5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBlZGl0LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbmdQcm9kdWN0W2dldEVkaXRLZXkoc3RvcmU/LnN0b3JlSWQsIHByb2R1Y3Q/LnByb2R1Y3ROYW1lKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVXb3JraW5nRGF5cyhzdG9yZSwgcHJvZHVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxFZGl0KHN0b3JlLCBwcm9kdWN0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZVdvcmtpbmdEYXlzKHN0b3JlLCBwcm9kdWN0KVwiIHRpdGxlPVwiU2F2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMzQgNEw2LjAwMDA4IDExLjMzMzNMMi42NjY3NSA4XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1kYW5nZXJcIiAoY2xpY2spPVwiY2FuY2VsRWRpdChzdG9yZSwgcHJvZHVjdClcIiB0aXRsZT1cIkNhbmNlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDRMNCAxMk00IDRMMTIgMTJcIiBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiIFtuZ0NsYXNzXT1cInN0b3JlPy5zdGF0dXMgPT09ICdhY3RpdmUnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZT8uc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyLXByb2R1Y3QgYnJlYWtkb3duIChUcmFmZmljOiDigrl4LCBab25lOiDigrl5IOKApikgKyB0b3RhbC4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBiIG9mIHN0b3JlPy5pbnZvaWNlQnJlYWtkb3duXCIgY2xhc3M9XCJpbnYtYnJlYWtkb3duLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52LWJyZWFrZG93bi1sYWJlbFwiPnt7IGIubGFiZWwgfX06PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3JlQ3VycmVuY3lTeW1ib2woc3RvcmUpIH19e3sgKGIuYW1vdW50IHx8IDApIHwgbnVtYmVyOicxLjItMic6J2VuLUlOJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUgaW52LWJyZWFrZG93bi10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RvcmVDdXJyZW5jeVN5bWJvbChzdG9yZSkgfX17eyAoc3RvcmU/Lmludm9pY2VBbW91bnQgfHwgMCkgfCBudW1iZXI6JzEuMi0yJzonZW4tSU4nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzdG9yZUxvYWRpbmcgJiYgIXN0b3JlTm9EYXRhXCI+XG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -4605,6 +4605,10 @@ class DailyPricingComponent {
|
|
|
4605
4605
|
'run ai': 'runai',
|
|
4606
4606
|
'ai in checklist': 'runai',
|
|
4607
4607
|
'remote optum': 'remoteoptum',
|
|
4608
|
+
// Factory QC (FactoryQC_billing Lambda). Day-scoped: the Lambda takes only
|
|
4609
|
+
// report_date, so this export covers the snapshot date shown on the card
|
|
4610
|
+
// rather than month-to-date like Remote Optum.
|
|
4611
|
+
'factory': 'factory',
|
|
4608
4612
|
};
|
|
4609
4613
|
canExportAdditionalProduct(productName) {
|
|
4610
4614
|
return !!this.exportableProducts[(productName || '').toLowerCase()];
|