@tuki-io/tuki-widgets 0.0.165 → 0.0.167

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.
Files changed (71) hide show
  1. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
  2. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
  3. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +3 -3
  4. package/esm2020/di2mt/shared/services/api.service.mjs +2 -2
  5. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  6. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
  7. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
  8. package/esm2020/user-creation/src/app.constants.mjs +1 -1
  9. package/esm2020/user-creation/src/classes/site.mjs +1 -1
  10. package/esm2020/user-creation/src/shared/api/api.service.mjs +2 -2
  11. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
  12. package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
  13. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +3 -3
  14. package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
  15. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  16. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  17. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  18. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +2 -2
  19. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  20. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  21. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  22. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  23. package/esm2020/user-device-manage/src/services/line.service.mjs +2 -2
  24. package/esm2020/user-device-manage/src/services/user.service.mjs +1 -1
  25. package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +1 -1
  26. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  27. package/esm2020/user-manage/src/app.constants.mjs +1 -1
  28. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  29. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  30. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  31. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  32. package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
  33. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  34. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  35. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  36. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  37. package/esm2020/user-manage/src/services/user.service.mjs +1 -1
  38. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  39. package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
  40. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  41. package/esm2020/users-list/src/app.constants.mjs +1 -1
  42. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  43. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  44. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  45. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  46. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  47. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  48. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +21 -21
  49. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  50. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +3 -3
  51. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  52. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +10 -10
  53. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  54. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  55. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  56. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +2 -2
  57. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  58. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  59. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  60. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +21 -21
  61. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  62. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +3 -3
  63. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  64. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +10 -10
  65. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  66. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +10 -10
  67. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  68. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +2 -2
  69. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  70. package/package.json +1 -1
  71. package/user-device-manage/src/services/line.service.d.ts +1 -1
@@ -56,10 +56,10 @@ export class DeviceAssociatedLineExtensionComponent {
56
56
  }
57
57
  }
58
58
  DeviceAssociatedLineExtensionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceAssociatedLineExtensionComponent, deps: [{ token: i1.UserService }, { token: i2.DnsService }], target: i0.ɵɵFactoryTarget.Component });
59
- DeviceAssociatedLineExtensionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceAssociatedLineExtensionComponent, selector: "app-device-associated-line-extension", inputs: { control: "control", routePartition: "routePartition", directoryNumber: "directoryNumber", siteId: "siteId" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<!-- <div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-select [formControl]=\"control\" (selectionChange)=\"this.onChangeField($event)\" [compareWith]=\"compareFn\" #page>\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\n </mat-select>\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n</div> -->\n\n<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-form-field appearance=\"outline\">\n <input\n [matAutocomplete]=\"auto\"\n matInput\n (input)=\"filterAvailableNumbers($event)\"\n [formControl]=\"control\">\n <mat-autocomplete\n #auto=\"matAutocomplete\" [panelWidth]=\"'auto'\"\n (optionSelected)=\"this.onChangeField($event)\">\n <mat-option *ngFor=\"let option of this.filteredAvailableNumbers; let i = index;\" [value]=\"option\" >\n {{option}}\n </mat-option>\n </mat-autocomplete>\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n </mat-form-field>\n</div>", styles: ["table{border-collapse:collapse;border-spacing:0}.user-calling-extension mat-form-field{width:100px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
59
+ DeviceAssociatedLineExtensionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceAssociatedLineExtensionComponent, selector: "app-device-associated-line-extension", inputs: { control: "control", routePartition: "routePartition", directoryNumber: "directoryNumber", siteId: "siteId" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<!-- <div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\r\n <mat-select [formControl]=\"control\" (selectionChange)=\"this.onChangeField($event)\" [compareWith]=\"compareFn\" #page>\r\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\r\n</div> -->\r\n\r\n<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n (input)=\"filterAvailableNumbers($event)\"\r\n [formControl]=\"control\">\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\" [panelWidth]=\"'auto'\"\r\n (optionSelected)=\"this.onChangeField($event)\">\r\n <mat-option *ngFor=\"let option of this.filteredAvailableNumbers; let i = index;\" [value]=\"option\" >\r\n {{option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\r\n </mat-form-field>\r\n</div>", styles: ["table{border-collapse:collapse;border-spacing:0}.user-calling-extension mat-form-field{width:100px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceAssociatedLineExtensionComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'app-device-associated-line-extension', template: "<!-- <div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-select [formControl]=\"control\" (selectionChange)=\"this.onChangeField($event)\" [compareWith]=\"compareFn\" #page>\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\n </mat-select>\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n</div> -->\n\n<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\n <mat-form-field appearance=\"outline\">\n <input\n [matAutocomplete]=\"auto\"\n matInput\n (input)=\"filterAvailableNumbers($event)\"\n [formControl]=\"control\">\n <mat-autocomplete\n #auto=\"matAutocomplete\" [panelWidth]=\"'auto'\"\n (optionSelected)=\"this.onChangeField($event)\">\n <mat-option *ngFor=\"let option of this.filteredAvailableNumbers; let i = index;\" [value]=\"option\" >\n {{option}}\n </mat-option>\n </mat-autocomplete>\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\n </mat-form-field>\n</div>", styles: ["table{border-collapse:collapse;border-spacing:0}.user-calling-extension mat-form-field{width:100px}\n"] }]
62
+ args: [{ selector: 'app-device-associated-line-extension', template: "<!-- <div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\r\n <mat-select [formControl]=\"control\" (selectionChange)=\"this.onChangeField($event)\" [compareWith]=\"compareFn\" #page>\r\n <mat-option *ngFor=\"let option of this.availableNumbers; let i = index;\"[value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\r\n</div> -->\r\n\r\n<div *ngIf=\"this.availableNumbers?.length\" class=\"user-calling-extension\">\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n (input)=\"filterAvailableNumbers($event)\"\r\n [formControl]=\"control\">\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\" [panelWidth]=\"'auto'\"\r\n (optionSelected)=\"this.onChangeField($event)\">\r\n <mat-option *ngFor=\"let option of this.filteredAvailableNumbers; let i = index;\" [value]=\"option\" >\r\n {{option}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-spinner *ngIf=\"this.dataPending\" [diameter]=\"50\"></mat-spinner>\r\n </mat-form-field>\r\n</div>", styles: ["table{border-collapse:collapse;border-spacing:0}.user-calling-extension mat-form-field{width:100px}\n"] }]
63
63
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.DnsService }]; }, propDecorators: { control: [{
64
64
  type: Input
65
65
  }], routePartition: [{
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
71
71
  }], onChange: [{
72
72
  type: Output
73
73
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1leHRlbnNpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLWFzc29jaWF0ZWQtbGluZS9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9kZXZpY2UtYXNzb2NpYXRlZC1saW5lL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBVy9FLE1BQU0sT0FBTyxzQ0FBc0M7SUFVakQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hJLENBQUM7SUFHRCxZQUNTLFdBQXdCLEVBQ3ZCLFVBQXNCO1FBRHZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQnRCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3pDLDZCQUF3QixHQUFVLEVBQUUsQ0FBQztJQWdCNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsYUFBYTtnQkFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ2xGO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQU0sRUFBRSxDQUFNO1FBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtJQUNyQyxDQUFDO0lBRU0sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDeEQsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7O29JQTdEVSxzQ0FBc0M7d0hBQXRDLHNDQUFzQyx1T0NYbkQseW1DQXVCTTs0RkRaTyxzQ0FBc0M7a0JBTGxELFNBQVM7K0JBQ0Usc0NBQXNDOzJIQUt2QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaW1wbGlmaWVkVXNlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc2ltcGxpZmllZC11c2VyJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IERuc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbnMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERldmljZUFzc29jaWF0ZWRMaW5lRXh0ZW5zaW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29udHJvbCE6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSByb3V0ZVBhcnRpdGlvbiE6IHN0cmluZztcbiAgQElucHV0KCkgZGlyZWN0b3J5TnVtYmVyITogc3RyaW5nO1xuICBASW5wdXQoKSBzaXRlSWQhOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwdWJsaWMgZGF0YVBlbmRpbmchOiBib29sZWFuO1xuXG4gIHB1YmxpYyBmaWx0ZXJlZEF2YWlsYWJsZU51bWJlcnM6IGFueVtdID0gW107XG5cbiAgZ2V0IHVzZXIoKTogU2ltcGxpZmllZFVzZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnVzZXI7XG4gIH1cblxuICBnZXQgYXZhaWxhYmxlTnVtYmVycygpOiBhbnkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcnRpdGlvbiAmJiB0aGlzLmRuc1NlcnZpY2UuYXZhaWxhYmxlTnVtYmVycyA/IHRoaXMuZG5zU2VydmljZS5hdmFpbGFibGVOdW1iZXJzW3RoaXMucm91dGVQYXJ0aXRpb25dIDogbnVsbDtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGRuc1NlcnZpY2U6IERuc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZUZpZWxkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC5vcHRpb24gYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUudHJpbSgpO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGEoKSB7XG4gICAgaWYgKCF0aGlzLnNpdGVJZCB8fCAhdGhpcy5yb3V0ZVBhcnRpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRuc1NlcnZpY2UuZ2V0TnVtYmVyUmFuZ2UoU3RyaW5nKHRoaXMuc2l0ZUlkKSwgdGhpcy5yb3V0ZVBhcnRpdGlvbiwgdHJ1ZSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hdmFpbGFibGVOdW1iZXJzKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuZG5zU2VydmljZS5hdmFpbGFibGVOdW1iZXJzW3RoaXMucm91dGVQYXJ0aXRpb25dLnB1c2godGhpcy5kaXJlY3RvcnlOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29tcGFyZUZuKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEgPT09IGI7IC8vIG9yIGEuaWQgPT09IGIuaWRcbiAgfVxuXG4gIHB1YmxpYyBzZXRGaWx0ZXJlQXZhaWxhYmxlTnVtYmVycygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkQXZhaWxhYmxlTnVtYmVycyA9IHRoaXMuYXZhaWxhYmxlTnVtYmVycztcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJBdmFpbGFibGVOdW1iZXJzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZS50cmltKCk7XG4gICAgdGhpcy5maWx0ZXJlZEF2YWlsYWJsZU51bWJlcnMgPSB0aGlzLmF2YWlsYWJsZU51bWJlcnMuZmlsdGVyKChudW1iZXI6IHN0cmluZykgPT4gbnVtYmVyICYmIG51bWJlci5pbmNsdWRlcyh2YWx1ZSkpO1xuICB9XG59XG4iLCI8IS0tIDxkaXYgKm5nSWY9XCJ0aGlzLmF2YWlsYWJsZU51bWJlcnM/Lmxlbmd0aFwiIGNsYXNzPVwidXNlci1jYWxsaW5nLWV4dGVuc2lvblwiPlxuICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy5vbkNoYW5nZUZpZWxkKCRldmVudClcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUZuXCIgI3BhZ2U+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB0aGlzLmF2YWlsYWJsZU51bWJlcnM7IGxldCBpID0gaW5kZXg7XCJbdmFsdWVdPVwib3B0aW9uXCI+e3tvcHRpb259fTwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJ0aGlzLmRhdGFQZW5kaW5nXCIgW2RpYW1ldGVyXT1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PiAtLT5cblxuPGRpdiAqbmdJZj1cInRoaXMuYXZhaWxhYmxlTnVtYmVycz8ubGVuZ3RoXCIgY2xhc3M9XCJ1c2VyLWNhbGxpbmctZXh0ZW5zaW9uXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgIDxpbnB1dFxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgIG1hdElucHV0XG4gICAgICAoaW5wdXQpPVwiZmlsdGVyQXZhaWxhYmxlTnVtYmVycygkZXZlbnQpXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCI+XG4gICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW3BhbmVsV2lkdGhdPVwiJ2F1dG8nXCJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJ0aGlzLm9uQ2hhbmdlRmllbGQoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1vcHRpb24gICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdGhpcy5maWx0ZXJlZEF2YWlsYWJsZU51bWJlcnM7IGxldCBpID0gaW5kZXg7XCIgW3ZhbHVlXT1cIm9wdGlvblwiID5cbiAgICAgICAge3tvcHRpb259fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJ0aGlzLmRhdGFQZW5kaW5nXCIgW2RpYW1ldGVyXT1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1leHRlbnNpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLWFzc29jaWF0ZWQtbGluZS9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9kZXZpY2UtYXNzb2NpYXRlZC1saW5lL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBVy9FLE1BQU0sT0FBTyxzQ0FBc0M7SUFVakQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hJLENBQUM7SUFHRCxZQUNTLFdBQXdCLEVBQ3ZCLFVBQXNCO1FBRHZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQnRCLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3pDLDZCQUF3QixHQUFVLEVBQUUsQ0FBQztJQWdCNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsYUFBYTtnQkFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ2xGO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLENBQU0sRUFBRSxDQUFNO1FBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtJQUNyQyxDQUFDO0lBRU0sMEJBQTBCO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDeEQsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7O29JQTdEVSxzQ0FBc0M7d0hBQXRDLHNDQUFzQyx1T0NYbkQsdXBDQXVCTTs0RkRaTyxzQ0FBc0M7a0JBTGxELFNBQVM7K0JBQ0Usc0NBQXNDOzJIQUt2QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2ltcGxpZmllZFVzZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NpbXBsaWZpZWQtdXNlcic7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG5zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rucy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWRldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1leHRlbnNpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXZpY2VBc3NvY2lhdGVkTGluZUV4dGVuc2lvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29udHJvbCE6IEZvcm1Db250cm9sO1xyXG4gIEBJbnB1dCgpIHJvdXRlUGFydGl0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpcmVjdG9yeU51bWJlciE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaXRlSWQhOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgcHVibGljIGRhdGFQZW5kaW5nITogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGZpbHRlcmVkQXZhaWxhYmxlTnVtYmVyczogYW55W10gPSBbXTtcclxuXHJcbiAgZ2V0IHVzZXIoKTogU2ltcGxpZmllZFVzZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UudXNlcjtcclxuICB9XHJcblxyXG4gIGdldCBhdmFpbGFibGVOdW1iZXJzKCk6IGFueSB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcnRpdGlvbiAmJiB0aGlzLmRuc1NlcnZpY2UuYXZhaWxhYmxlTnVtYmVycyA/IHRoaXMuZG5zU2VydmljZS5hdmFpbGFibGVOdW1iZXJzW3RoaXMucm91dGVQYXJ0aXRpb25dIDogbnVsbDtcclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRuc1NlcnZpY2U6IERuc1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VGaWVsZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC5vcHRpb24gYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YSgpIHtcclxuICAgIGlmICghdGhpcy5zaXRlSWQgfHwgIXRoaXMucm91dGVQYXJ0aXRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmRuc1NlcnZpY2UuZ2V0TnVtYmVyUmFuZ2UoU3RyaW5nKHRoaXMuc2l0ZUlkKSwgdGhpcy5yb3V0ZVBhcnRpdGlvbiwgdHJ1ZSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXZhaWxhYmxlTnVtYmVycykge1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgdGhpcy5kbnNTZXJ2aWNlLmF2YWlsYWJsZU51bWJlcnNbdGhpcy5yb3V0ZVBhcnRpdGlvbl0ucHVzaCh0aGlzLmRpcmVjdG9yeU51bWJlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlRm4oYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhID09PSBiOyAvLyBvciBhLmlkID09PSBiLmlkXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RmlsdGVyZUF2YWlsYWJsZU51bWJlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkQXZhaWxhYmxlTnVtYmVycyA9IHRoaXMuYXZhaWxhYmxlTnVtYmVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJBdmFpbGFibGVOdW1iZXJzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLnRyaW0oKTtcclxuICAgIHRoaXMuZmlsdGVyZWRBdmFpbGFibGVOdW1iZXJzID0gdGhpcy5hdmFpbGFibGVOdW1iZXJzLmZpbHRlcigobnVtYmVyOiBzdHJpbmcpID0+IG51bWJlciAmJiBudW1iZXIuaW5jbHVkZXModmFsdWUpKTtcclxuICB9XHJcbn1cclxuIiwiPCEtLSA8ZGl2ICpuZ0lmPVwidGhpcy5hdmFpbGFibGVOdW1iZXJzPy5sZW5ndGhcIiBjbGFzcz1cInVzZXItY2FsbGluZy1leHRlbnNpb25cIj5cclxuICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy5vbkNoYW5nZUZpZWxkKCRldmVudClcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUZuXCIgI3BhZ2U+XHJcbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHRoaXMuYXZhaWxhYmxlTnVtYmVyczsgbGV0IGkgPSBpbmRleDtcIlt2YWx1ZV09XCJvcHRpb25cIj57e29wdGlvbn19PC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LXNlbGVjdD5cclxuICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJ0aGlzLmRhdGFQZW5kaW5nXCIgW2RpYW1ldGVyXT1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cclxuPC9kaXY+IC0tPlxyXG5cclxuPGRpdiAqbmdJZj1cInRoaXMuYXZhaWxhYmxlTnVtYmVycz8ubGVuZ3RoXCIgY2xhc3M9XCJ1c2VyLWNhbGxpbmctZXh0ZW5zaW9uXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgbWF0SW5wdXRcclxuICAgICAgKGlucHV0KT1cImZpbHRlckF2YWlsYWJsZU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCI+XHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtwYW5lbFdpZHRoXT1cIidhdXRvJ1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJ0aGlzLm9uQ2hhbmdlRmllbGQoJGV2ZW50KVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB0aGlzLmZpbHRlcmVkQXZhaWxhYmxlTnVtYmVyczsgbGV0IGkgPSBpbmRleDtcIiBbdmFsdWVdPVwib3B0aW9uXCIgPlxyXG4gICAgICAgIHt7b3B0aW9ufX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPG1hdC1zcGlubmVyICpuZ0lmPVwidGhpcy5kYXRhUGVuZGluZ1wiIFtkaWFtZXRlcl09XCI1MFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+Il19