@tuki-io/tuki-widgets 0.0.219-dev.62 → 0.0.219-dev.63

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 (103) hide show
  1. package/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +9 -8
  2. package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +11 -10
  3. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +12 -11
  4. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +7 -3
  5. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +12 -11
  6. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +7 -3
  7. package/esm2020/locations/src/locations.component.mjs +11 -11
  8. package/esm2020/locations/src/locations.module.mjs +7 -6
  9. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +9 -9
  10. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +17 -9
  11. package/esm2020/meetings/src/meetings.module.mjs +7 -6
  12. package/esm2020/shared/public-api.mjs +2 -1
  13. package/esm2020/shared/src/ui/tk-loader/tk-loader.component.mjs +34 -0
  14. package/esm2020/user-creation/src/user-creation.module.mjs +7 -6
  15. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +16 -16
  16. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +27 -10
  17. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +11 -11
  18. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +10 -10
  19. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +11 -11
  20. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +9 -9
  21. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +9 -9
  22. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +8 -7
  23. package/esm2020/user-manage/src/user-manage-widget.component.mjs +12 -12
  24. package/esm2020/user-manage/src/user-manage.module.mjs +8 -7
  25. package/esm2020/users-list/src/classes/site-option.mjs +2 -0
  26. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +18 -4
  27. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +15 -15
  28. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -5
  29. package/esm2020/users-list/src/users-list.component.mjs +104 -46
  30. package/esm2020/users-list/src/users-list.module.mjs +7 -6
  31. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +7 -7
  32. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +9 -9
  33. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +13 -3
  34. package/esm2020/workspaces/src/types/workspace.mjs +6 -2
  35. package/esm2020/workspaces/src/workspaces.component.mjs +26 -8
  36. package/esm2020/workspaces/src/workspaces.module.mjs +7 -6
  37. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  38. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  39. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +16 -24
  40. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  41. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +31 -33
  42. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  43. package/fesm2015/tuki-io-tuki-widgets-shared.mjs +31 -1
  44. package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  45. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +52 -43
  46. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  47. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  48. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  49. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  50. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  51. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +136 -73
  52. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  53. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +64 -37
  54. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  55. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  56. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  57. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +16 -24
  58. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  59. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +31 -33
  60. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  61. package/fesm2020/tuki-io-tuki-widgets-shared.mjs +31 -1
  62. package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  63. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +51 -43
  64. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  65. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  66. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  67. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  68. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  69. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +134 -71
  70. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  71. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +64 -37
  72. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  73. package/locations/src/locations.module.d.ts +2 -2
  74. package/meetings/src/meetings.module.d.ts +2 -2
  75. package/package.json +1 -1
  76. package/shared/public-api.d.ts +1 -0
  77. package/shared/src/ui/tk-loader/tk-loader.component.d.ts +15 -0
  78. package/user-creation/src/user-creation.module.d.ts +3 -3
  79. package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +2 -0
  80. package/user-device-manage/src/user-device-manage.module.d.ts +16 -16
  81. package/user-manage/src/user-manage.module.d.ts +12 -13
  82. package/users-list/src/classes/site-option.d.ts +4 -0
  83. package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +6 -1
  84. package/users-list/src/users-list.component.d.ts +11 -1
  85. package/users-list/src/users-list.module.d.ts +9 -9
  86. package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +9 -1
  87. package/workspaces/src/types/workspace.d.ts +5 -0
  88. package/workspaces/src/workspaces.component.d.ts +4 -1
  89. package/workspaces/src/workspaces.module.d.ts +2 -2
  90. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +0 -14
  91. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +0 -14
  92. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +0 -14
  93. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +0 -14
  94. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +0 -14
  95. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +0 -14
  96. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +0 -14
  97. package/locations/src/utils/app-loader/app-loader.d.ts +0 -6
  98. package/meetings/src/utils/app-loader/app-loader.d.ts +0 -6
  99. package/user-creation/src/utils/app-loader/app-loader.d.ts +0 -6
  100. package/user-device-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  101. package/user-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  102. package/users-list/src/utils/app-loader/app-loader.d.ts +0 -6
  103. package/workspaces/src/utils/app-loader/app-loader.d.ts +0 -6
@@ -8,10 +8,10 @@ import * as i3 from "./services/workspaces.service";
8
8
  import * as i4 from "./services/workspaces-migration.service";
9
9
  import * as i5 from "@angular/material/dialog";
10
10
  import * as i6 from "@angular/common";
11
- import * as i7 from "./components/workspaces-filters/workspaces-filters.component";
12
- import * as i8 from "./components/workspaces-table/workspaces-table.component";
13
- import * as i9 from "./components/workspace-detail/workspace-detail.component";
14
- import * as i10 from "./utils/app-loader/app-loader";
11
+ import * as i7 from "@tuki-io/tuki-widgets/shared";
12
+ import * as i8 from "./components/workspaces-filters/workspaces-filters.component";
13
+ import * as i9 from "./components/workspaces-table/workspaces-table.component";
14
+ import * as i10 from "./components/workspace-detail/workspace-detail.component";
15
15
  const NO_LOCATION_OPTION = 'No location';
16
16
  function hasNoLocation(location) {
17
17
  const value = location?.trim().toLowerCase();
@@ -46,6 +46,7 @@ export class WorkspacesComponent {
46
46
  this.searchTerm = '';
47
47
  this.typeFilter = '';
48
48
  this.locationFilter = '';
49
+ this.provisioningTypeFilter = '';
49
50
  this.pendingWorkspaceIds = new Set();
50
51
  this.subscriptions = [];
51
52
  }
@@ -72,7 +73,20 @@ export class WorkspacesComponent {
72
73
  const term = this.searchTerm.trim().toLowerCase();
73
74
  return this.workspaces.filter(workspace => (!term || workspace.displayName.toLowerCase().includes(term) || workspace.location.toLowerCase().includes(term)) &&
74
75
  (!this.typeFilter || workspace.typeLabel === this.typeFilter) &&
75
- this.matchesLocationFilter(workspace));
76
+ this.matchesLocationFilter(workspace) &&
77
+ this.matchesProvisioningTypeFilter(workspace));
78
+ }
79
+ matchesProvisioningTypeFilter(workspace) {
80
+ switch (this.provisioningTypeFilter) {
81
+ case 'hybrid':
82
+ return workspace.isHybrid;
83
+ case 'webex-di':
84
+ return !workspace.isHybrid && workspace.device.cucmId != null;
85
+ case 'webex':
86
+ return !workspace.isHybrid && workspace.device.webexUUID != null;
87
+ default:
88
+ return true;
89
+ }
76
90
  }
77
91
  matchesLocationFilter(workspace) {
78
92
  if (!this.locationFilter) {
@@ -119,6 +133,10 @@ export class WorkspacesComponent {
119
133
  this.locationFilter = location;
120
134
  this.pageIndex = 0;
121
135
  }
136
+ onProvisioningTypeFilterChange(provisioningType) {
137
+ this.provisioningTypeFilter = provisioningType;
138
+ this.pageIndex = 0;
139
+ }
122
140
  onPageChange({ pageIndex, pageSize }) {
123
141
  this.pageIndex = pageIndex;
124
142
  this.pageSize = pageSize;
@@ -302,10 +320,10 @@ export class WorkspacesComponent {
302
320
  }
303
321
  }
304
322
  WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: i1.APIService }, { token: i2.ApiWebexService }, { token: i3.WorkspacesService }, { token: i4.WorkspacesMigrationService }, { token: i5.MatDialog }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component });
305
- WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "addWorkspace"] }, { kind: "component", type: i8.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds", "isLoading"], outputs: ["openWorkspace", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: i9.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace", "connectionType", "customerId"], outputs: ["back"] }, { kind: "component", type: i10.AppLoaderComponent, selector: "app-loader" }] });
323
+ WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (provisioningTypeChange)=\"onProvisioningTypeFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "component", type: i7.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "provisioningTypeChange", "addWorkspace"] }, { kind: "component", type: i9.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds", "isLoading"], outputs: ["openWorkspace", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: i10.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace", "connectionType", "customerId"], outputs: ["back"] }] });
306
324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, decorators: [{
307
325
  type: Component,
308
- args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
326
+ args: [{ selector: 'tk-workspaces', template: "<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (provisioningTypeChange)=\"onProvisioningTypeFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
309
327
  }], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.ApiWebexService }, { type: i3.WorkspacesService }, { type: i4.WorkspacesMigrationService }, { type: i5.MatDialog }, { type: i6.Location }]; }, propDecorators: { host: [{
310
328
  type: Input
311
329
  }], token: [{
@@ -319,4 +337,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
319
337
  }], addDevice: [{
320
338
  type: Output
321
339
  }] } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSTNILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0FBRXpDLFNBQVMsYUFBYSxDQUFDLFFBQW1DO0lBQ3hELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxDQUFDO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjtJQXFDOUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsZ0JBQTRDLEVBQzVDLE1BQWlCLEVBQ2pCLFFBQWtCO1FBTGxCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFX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QztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEExVVUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNE5DakNoQyx1MEVBOERBOzRGRDdCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZUFBZTt1UEFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVdlYmV4U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLXdlYmV4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaXJtd2FyZURldmljZU1hcCwgV29ya3NwYWNlc01pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dvcmtzcGFjZXMtbWlncmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlLCBXb3Jrc3BhY2VDb25uZWN0aW9uVHlwZSwgV29ya3NwYWNlRGV2aWNlUmVjb3JkLCBXb3Jrc3BhY2VPcGVuRXZlbnQgfSBmcm9tICcuL3R5cGVzL3dvcmtzcGFjZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxudHlwZSBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JyB8ICdkZXRhaWwnO1xyXG5cclxuY29uc3QgTk9fTE9DQVRJT05fT1BUSU9OID0gJ05vIGxvY2F0aW9uJztcclxuXHJcbmZ1bmN0aW9uIGhhc05vTG9jYXRpb24obG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICBjb25zdCB2YWx1ZSA9IGxvY2F0aW9uPy50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICByZXR1cm4gIXZhbHVlIHx8IHZhbHVlID09PSBOT19MT0NBVElPTl9PUFRJT04udG9Mb3dlckNhc2UoKTtcclxufVxyXG5cclxudHlwZSBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnIHwgJ2luc2lnaHRzJyB8ICdpbnRlZ3JhdGlvbnMnIHwgJ3NldHRpbmdzJztcclxuXHJcbmludGVyZmFjZSBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbiB7XHJcbiAgaWQ6IFdvcmtzcGFjZXNUYWI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGstd29ya3NwYWNlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21lcklkITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICByZWFkb25seSB0YWJzOiBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbltdID0gW1xyXG4gICAgeyBpZDogJ3dvcmtzcGFjZXMnLCBsYWJlbDogJ1dvcmtzcGFjZXMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2RldmljZS1pbi1yb29tLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gICAgeyBpZDogJ2luc2lnaHRzJywgbGFiZWw6ICdJbnNpZ2h0cycsIGljb246ICdhc3NldHMvaWNvbnMvYW5hbHlzaXMtcmVndWxhci5zdmcnIH0sXHJcbiAgICB7IGlkOiAnaW50ZWdyYXRpb25zJywgbGFiZWw6ICdJbnRlZ3JhdGlvbnMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2ludGVncmF0aW9ucy1yZWd1bGFyLnN2ZycgfSxcclxuICAgIHsgaWQ6ICdzZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnLCBpY29uOiAnYXNzZXRzL2ljb25zL3Rvb2xzLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gIF07XHJcblxyXG4gIGFjdGl2ZVRhYjogV29ya3NwYWNlc1RhYiA9ICd3b3Jrc3BhY2VzJztcclxuXHJcbiAgdmlldzogV29ya3NwYWNlc1ZpZXcgPSAnbGlzdCc7XHJcbiAgc2VsZWN0ZWRXb3Jrc3BhY2U6IFdvcmtzcGFjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlID0gJ2RpJztcclxuXHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcGFnZUluZGV4ID0gMDtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsID0gMDtcclxuXHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIHR5cGVGaWx0ZXIgPSAnJztcclxuICBsb2NhdGlvbkZpbHRlciA9ICcnO1xyXG5cclxuICBwZW5kaW5nV29ya3NwYWNlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVdlYmV4U2VydmljZTogQXBpV2ViZXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VzU2VydmljZTogV29ya3NwYWNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1pZ3JhdGlvblNlcnZpY2U6IFdvcmtzcGFjZXNNaWdyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcclxuICAgIHRoaXMuYXBpU2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL2RjcCc7XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL3dlYmV4JztcclxuICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZU9wdGlvbnMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS50eXBlTGFiZWwpLmZpbHRlcihCb29sZWFuKSldO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2F0aW9uT3B0aW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBsb2NhdGlvbnMgPSBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UubG9jYXRpb24pLmZpbHRlcihsb2NhdGlvbiA9PiAhaGFzTm9Mb2NhdGlvbihsb2NhdGlvbikpKV07XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLnNvbWUod29ya3NwYWNlID0+IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKSlcclxuICAgICAgPyBbTk9fTE9DQVRJT05fT1BUSU9OLCAuLi5sb2NhdGlvbnNdXHJcbiAgICAgIDogbG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzQWxsKCk6IFdvcmtzcGFjZVtdIHtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cclxuICAgICAgKCF0ZXJtIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8IHdvcmtzcGFjZS5sb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXHJcbiAgICAgIHRoaXMubWF0Y2hlc0xvY2F0aW9uRmlsdGVyKHdvcmtzcGFjZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hdGNoZXNMb2NhdGlvbkZpbHRlcih3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmxvY2F0aW9uRmlsdGVyKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25GaWx0ZXIgPT09IE5PX0xPQ0FUSU9OX09QVElPTlxyXG4gICAgICA/IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKVxyXG4gICAgICA6IHdvcmtzcGFjZS5sb2NhdGlvbiA9PT0gdGhpcy5sb2NhdGlvbkZpbHRlcjtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZFdvcmtzcGFjZXMoKTogV29ya3NwYWNlW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemU7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFdvcmtzcGFjZXNBbGwuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRUb3RhbCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRXb3Jrc3BhY2VzQWxsLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRhYih0YWI6IFdvcmtzcGFjZXNUYWIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuV29ya3NwYWNlKHsgaWQsIGNvbm5lY3Rpb25UeXBlIH06IFdvcmtzcGFjZU9wZW5FdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KGlkKTtcclxuXHJcbiAgICBpZiAoIXdvcmtzcGFjZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtzcGFjZSA9IHdvcmtzcGFjZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IGNvbm5lY3Rpb25UeXBlO1xyXG4gICAgdGhpcy52aWV3ID0gJ2RldGFpbCc7XHJcbiAgfVxyXG5cclxuICBvbkJhY2tUb0xpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXcgPSAnbGlzdCc7XHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya3NwYWNlID0gbnVsbDtcclxuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCcvd29ya3NwYWNlcycpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSB0ZXJtO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25UeXBlRmlsdGVyQ2hhbmdlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlRmlsdGVyID0gdHlwZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25GaWx0ZXJDaGFuZ2UobG9jYXRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhdGlvbkZpbHRlciA9IGxvY2F0aW9uO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gIH1cclxuXHJcbiAgb25Nb3ZlVG9NVCh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYFVwZ3JhZGUgd29ya3NwYWNlICR7d29ya3NwYWNlLmRpc3BsYXlOYW1lfSB0byBXZWJleCBDYWxsaW5nP2AsXHJcbiAgICAgICAgbWVzc2FnZTogYDxwPlVwZ3JhZGluZyB0aGlzIHdvcmtzcGFjZSB3aWxsIHByZXBhcmUgaXQgZm9yIG1pZ3JhdGlvbiB0byBXZWJleCBDYWxsaW5nLjwvcD5cclxuICAgICAgICAgIDxwPkR1cmluZyB0aGlzIHByb2Nlc3MsIHRoZSB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNvcGllZCB0byB0aGUgV2ViZXggQ2FsbGluZyBlbnZpcm9ubWVudC5cclxuICAgICAgICAgIFRoZSB3b3Jrc3BhY2Ugd2lsbCByZW1haW4gYWN0aXZlIG9uIHRoZSBjdXJyZW50IHN5c3RlbSB1bnRpbCB0aGUgQWN0aXZhdGUgc3RlcCBpcyBjb21wbGV0ZWQuPC9wPlxyXG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdZZXMsIHVwZ3JhZGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlLm1vdmVUb01UKHRoaXMuY3VzdG9tZXJJZCwgd29ya3NwYWNlLmRldmljZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZm9ybUlkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmIChmb3JtSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uRm9ybVN0YXR1cyhOdW1iZXIoZm9ybUlkKSwgd29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVuYWJsZVdlYmV4Q2FsbGluZyh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGV2aWNlID0gd29ya3NwYWNlLmRldmljZTtcclxuICAgIGlmICghZGV2aWNlLndlYmV4VVVJRCB8fCB3b3Jrc3BhY2Uuc3RhdHVzICE9PSAnaW5hY3RpdmUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgQWN0aXZhdGUgd29ya3NwYWNlICR7d29ya3NwYWNlLmRpc3BsYXlOYW1lfSBvbiBNdWx0aSBUZW5hbnQ/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+QWN0aXZhdGluZyB0aGlzIHdvcmtzcGFjZSB3aWxsIHBlcmZvcm0gdGhlIGN1dG92ZXIgdG8gTXVsdGkgVGVuYW50IGFuZCBjb21wbGV0ZSB0aGUgbWlncmF0aW9uIHByb2Nlc3MuPC9wPlxyXG4gICAgICAgICAgPHA+QWZ0ZXIgYWN0aXZhdGlvbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlY29tZSBhY3RpdmUgb24gTXVsdGkgVGVuYW50IGFuZCB0aGUgb3JpZ2luYWwgd29ya3NwYWNlIHdpbGwgYmVjb21lIGluYWN0aXZlLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnQWN0aXZhdGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXHJcbiAgICAgICAgLmdldE1pZ3JhdGVkTWlncmF0aW9uRm9ybUVudGl0aWVzKHRoaXMuY3VzdG9tZXJJZCwgZGV2aWNlLndlYmV4VVVJRCBhcyBzdHJpbmcsICdPUlBIQU5FRF9ERVZJQ0UnKVxyXG4gICAgICAgIC5waXBlKG1hcCgoZW50aXRpZXM6IGFueVtdKSA9PiAoQXJyYXkuaXNBcnJheShlbnRpdGllcykgPyBlbnRpdGllc1swXSA6IGVudGl0aWVzIHx8IG51bGwpKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtSWQgPSBlbnRpdHk/Lm1pZ3JhdGlvbkZvcm1JZCA/PyBlbnRpdHk/LmlkID8/IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghZm9ybUlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkZXZpY2VNYXAgPSB0aGlzLmJ1aWxkRmlybXdhcmVEZXZpY2VNYXAoZW50aXR5LCBkZXZpY2UpO1xyXG4gICAgICAgICAgICBjb25zdCB1cGdyYWRlU3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLnRyaWdnZXJGaXJtd2FyZVVwZ3JhZGUodGhpcy5jdXN0b21lcklkLCBOdW1iZXIoZm9ybUlkKSwgZGV2aWNlTWFwKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uRm9ybVN0YXR1cyhOdW1iZXIoZm9ybUlkKSwgd29ya3NwYWNlLmlkLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pZ3JhdGlvblNlcnZpY2UucmVtb3ZlVWNtTGljZW5zZSh0aGlzLmN1c3RvbWVySWQsIE51bWJlcihmb3JtSWQpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSwgMTAwMDApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHVwZ3JhZGVTdWJzY3JpcHRpb24pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTWlncmF0ZVRvVUNNKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xyXG4gICAgaWYgKCFkZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdhY3RpdmUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuYWRkKHdvcmtzcGFjZS5pZCk7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgLnJldmVydE1pZ3JhdGlvbih0aGlzLmN1c3RvbWVySWQsIGRldmljZS53ZWJleFVVSUQpXHJcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aW1lcigyMDAwKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKGZvcm1JZDogbnVtYmVyLCB3b3Jrc3BhY2VJZDogc3RyaW5nLCBvbkNvbXBsZXRlZD86ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRpbWVyKDAsIDEwMDAwKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5taWdyYXRpb25TZXJ2aWNlLmdldE1pZ3JhdGlvbkZvcm1TdGF0dXModGhpcy5jdXN0b21lcklkLCBmb3JtSWQpKSxcclxuICAgICAgICB0YWtlV2hpbGUoKHJlc3BvbnNlOiBhbnkpID0+ICF0aGlzLmlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMocmVzcG9uc2U/LnN0YXR1cyksIHRydWUpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLm5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhyZXNwb25zZT8uc3RhdHVzKTtcclxuICAgICAgICAgIGlmICghdGhpcy5pc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1cykpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2VJZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0NPTVBMRVRFRCcpIHtcclxuICAgICAgICAgICAgb25Db21wbGV0ZWQ/LigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlSWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlybXdhcmVEZXZpY2VNYXAoZW50aXR5OiBhbnksIGRldmljZTogV29ya3NwYWNlRGV2aWNlUmVjb3JkKTogRmlybXdhcmVEZXZpY2VNYXAge1xyXG4gICAgY29uc3QgZGV2aWNlTWFwOiBGaXJtd2FyZURldmljZU1hcCA9IHt9O1xyXG4gICAgY29uc3QgZW50aXR5RGV2aWNlczogYW55W10gPSBbXHJcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KGVudGl0eT8uZGV2aWNlcykgPyBlbnRpdHkuZGV2aWNlcyA6IFtdKSxcclxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py53ZWJleE1pZ3JhdGlvbkRldmljZXMpID8gZW50aXR5LndlYmV4TWlncmF0aW9uRGV2aWNlcyA6IFtdKSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3VyY2VEZXZpY2VzID0gZW50aXR5RGV2aWNlcy5sZW5ndGggPyBlbnRpdHlEZXZpY2VzIDogW2RldmljZV07XHJcbiAgICBjb25zdCBjdWNtSWQgPSBOdW1iZXIoZGV2aWNlLmN1Y21JZCkgfHwgMDtcclxuXHJcbiAgICBzb3VyY2VEZXZpY2VzLmZvckVhY2goKHJhd0RldmljZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHJhd0RldmljZT8ubmFtZSB8fCBkZXZpY2UubmFtZSB8fCAnJztcclxuICAgICAgaWYgKCFuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRldmljZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCdTRVAnKSA/IG5hbWUgOiBgU0VQJHtuYW1lfWA7XHJcbiAgICAgIGlmICghZGV2aWNlTWFwW2N1Y21JZF0pIHtcclxuICAgICAgICBkZXZpY2VNYXBbY3VjbUlkXSA9IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddKSB7XHJcbiAgICAgICAgZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddID0gW107XHJcbiAgICAgIH1cclxuICAgICAgZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddLnB1c2goZGV2aWNlTmFtZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGV2aWNlTWFwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemVNaWdyYXRpb25TdGF0dXMoc3RhdHVzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoc3RhdHVzIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1czogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHN0YXR1cyk7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZCA9PT0gJ0NPTVBMRVRFRCcgfHwgbm9ybWFsaXplZCA9PT0gJ0ZBSUxFRCcgfHwgbm9ybWFsaXplZCA9PT0gJ0VSUk9SJyB8fCBub3JtYWxpemVkID09PSAnQ09NUExFVEVEX1dJVEhfRVJST1JTJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hXb3Jrc3BhY2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzU2VydmljZS5mZXRjaFdvcmtzcGFjZXModGhpcy5jdXN0b21lcklkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoeyB3b3Jrc3BhY2VzLCB0b3RhbCB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gd29ya3NwYWNlcztcclxuICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSBbXTtcclxuICAgICAgICB0aGlzLnRvdGFsID0gMDtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcgPT09ICdsaXN0JzsgZWxzZSBkZXRhaWxWaWV3XCI+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwidGstd29ya3NwYWNlc19faGVhZGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RpdGxlXCI+V29ya3NwYWNlczwvaDE+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8bmF2IGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFic1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcclxuICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYlwiXHJcbiAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXNfX3RhYi0tYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gdGFiLmlkXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi5pZClcIj5cclxuICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFiLWljb25cIiBbc3JjXT1cInRhYi5pY29uXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25hdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnd29ya3NwYWNlcyc7IGVsc2UgcGxhY2Vob2xkZXJcIj5cclxuICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy1maWx0ZXJzXHJcbiAgICAgICAgW3Jlc3VsdENvdW50XT1cInRvdGFsXCJcclxuICAgICAgICBbdHlwZU9wdGlvbnNdPVwidHlwZU9wdGlvbnNcIlxyXG4gICAgICAgIFtsb2NhdGlvbk9wdGlvbnNdPVwibG9jYXRpb25PcHRpb25zXCJcclxuICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh0eXBlQ2hhbmdlKT1cIm9uVHlwZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAobG9jYXRpb25DaGFuZ2UpPVwib25Mb2NhdGlvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoYWRkV29ya3NwYWNlKT1cImFkZFdvcmtzcGFjZS5lbWl0KClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLWZpbHRlcnM+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy10YWJsZVxyXG4gICAgICAgIFt3b3Jrc3BhY2VzXT1cImZpbHRlcmVkV29ya3NwYWNlc1wiXHJcbiAgICAgICAgW3RvdGFsXT1cImZpbHRlcmVkVG90YWxcIlxyXG4gICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgIFtwZW5kaW5nV29ya3NwYWNlSWRzXT1cInBlbmRpbmdXb3Jrc3BhY2VJZHNcIlxyXG4gICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAob3BlbldvcmtzcGFjZSk9XCJvbk9wZW5Xb3Jrc3BhY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1pZ3JhdGVUb01UKT1cIm9uTW92ZVRvTVQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVuYWJsZVdlYmV4Q2FsbGluZyk9XCJvbkVuYWJsZVdlYmV4Q2FsbGluZygkZXZlbnQpXCJcclxuICAgICAgICAobWlncmF0ZVRvVUNNKT1cIm9uTWlncmF0ZVRvVUNNKCRldmVudClcIlxyXG4gICAgICAgIChhZGREZXZpY2UpPVwiYWRkRGV2aWNlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLXRhYmxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3BsYWNlaG9sZGVyXCI+VGhpcyBzZWN0aW9uIGlzbid0IGF2YWlsYWJsZSBpbiB0aGlzIHdpZGdldCB5ZXQuPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2RldGFpbFZpZXc+XHJcbiAgICA8dGstd29ya3NwYWNlLWRldGFpbFxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkV29ya3NwYWNlXCJcclxuICAgICAgW3dvcmtzcGFjZV09XCJzZWxlY3RlZFdvcmtzcGFjZVwiXHJcbiAgICAgIFtjb25uZWN0aW9uVHlwZV09XCJzZWxlY3RlZENvbm5lY3Rpb25UeXBlXCJcclxuICAgICAgW2N1c3RvbWVySWRdPVwiY3VzdG9tZXJJZFwiXHJcbiAgICAgIChiYWNrKT1cIm9uQmFja1RvTGlzdCgpXCI+XHJcbiAgICA8L3RrLXdvcmtzcGFjZS1kZXRhaWw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSTNILE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDO0FBRXpDLFNBQVMsYUFBYSxDQUFDLFFBQW1DO0lBQ3hELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5RCxDQUFDO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjtJQXNDOUIsWUFDVSxVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsZ0JBQTRDLEVBQzVDLE1BQWlCLEVBQ2pCLFFBQWtCO1FBTGxCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF2Q2xCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFeEMsU0FBSSxHQUE4QjtZQUN6QyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUseUNBQXlDLEVBQUU7WUFDMUYsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLG1DQUFtQyxFQUFFO1lBQ2hGLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSx1Q0FBdUMsRUFBRTtZQUM1RixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUU7U0FDOUUsQ0FBQztRQUVGLGNBQVMsR0FBa0IsWUFBWSxDQUFDO1FBRXhDLFNBQUksR0FBbUIsTUFBTSxDQUFDO1FBQzlCLHNCQUFpQixHQUFxQixJQUFJLENBQUM7UUFDM0MsMkJBQXNCLEdBQTRCLElBQUksQ0FBQztRQUV2RCxlQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUM3QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVWLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQiwyQkFBc0IsR0FBbUMsRUFBRSxDQUFDO1FBRTVELHdCQUFtQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFdkIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBU2hELENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ25ELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDcEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBWSxxQkFBcUI7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3hDLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEgsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7WUFDckMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVPLDZCQUE2QixDQUFDLFNBQW9CO1FBQ3hELFFBQVEsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ25DLEtBQUssUUFBUTtnQkFDWCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDNUIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztZQUNoRSxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1lBQ25FO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsU0FBb0I7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxrQkFBa0I7WUFDL0MsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQWtCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFzQjtRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELDhCQUE4QixDQUFDLGdCQUFnRDtRQUM3RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQTJDO1FBQzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBb0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUU7WUFDbEUsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxxQkFBcUIsU0FBUyxDQUFDLFdBQVcsb0JBQW9CO2dCQUNyRSxPQUFPLEVBQUU7OzswQ0FHeUI7Z0JBQ2xDLGlCQUFpQixFQUFFLGNBQWM7YUFDbEM7U0FDRixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDL0YsSUFBSSxFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUU7b0JBQ3ZCLElBQUksTUFBTSxFQUFFO3dCQUNWLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUM1RDt5QkFBTTt3QkFDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUFDLFNBQW9CO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDeEQsT0FBTztTQUNSO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUU7WUFDbEUsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxzQkFBc0IsU0FBUyxDQUFDLFdBQVcsbUJBQW1CO2dCQUNyRSxPQUFPLEVBQUU7OzBDQUV5QjtnQkFDbEMsaUJBQWlCLEVBQUUsVUFBVTthQUM5QjtTQUNGLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ3ZDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQW1CLEVBQUUsaUJBQWlCLENBQUM7aUJBQ2hHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDMUYsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO29CQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsZUFBZSxJQUFJLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO29CQUM3RCxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxPQUFPO3FCQUNSO29CQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzlELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjt5QkFDOUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDO3lCQUNsRSxTQUFTLENBQUM7d0JBQ1QsSUFBSSxFQUFFLEdBQUcsRUFBRTs0QkFDVCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQ0FDckIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRTtvQ0FDOUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ3RGLENBQUMsQ0FBQyxDQUFDOzRCQUNMLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDWixDQUFDO3dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQztxQkFDRixDQUFDLENBQUM7b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztnQkFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO29CQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQW9CO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDdEQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjthQUN2QyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO2FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsV0FBbUIsRUFBRSxXQUF3QjtRQUMzRixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQzthQUNqQyxJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQ3RGLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUN0RjthQUNBLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUMzQyxPQUFPO2lCQUNSO2dCQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFO29CQUMxQixXQUFXLEVBQUUsRUFBRSxDQUFDO2lCQUNqQjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQVcsRUFBRSxNQUE2QjtRQUN2RSxNQUFNLFNBQVMsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sYUFBYSxHQUFVO1lBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN0RixDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUN2QyxNQUFNLElBQUksR0FBVyxTQUFTLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsT0FBTzthQUNSO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3RCLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDeEI7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3pDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUMzQztZQUNELFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxNQUFpQztRQUNoRSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxNQUFpQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsT0FBTyxVQUFVLEtBQUssV0FBVyxJQUFJLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxVQUFVLEtBQUssdUJBQXVCLENBQUM7SUFDbkksQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hFLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2dCQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEE5VlUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNE5DakNoQyxrNUVBZ0VBOzRGRC9CYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZUFBZTt1UEFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVdlYmV4U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLXdlYmV4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaXJtd2FyZURldmljZU1hcCwgV29ya3NwYWNlc01pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dvcmtzcGFjZXMtbWlncmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlLCBXb3Jrc3BhY2VDb25uZWN0aW9uVHlwZSwgV29ya3NwYWNlRGV2aWNlUmVjb3JkLCBXb3Jrc3BhY2VPcGVuRXZlbnQsIFdvcmtzcGFjZVByb3Zpc2lvbmluZ1R5cGUgfSBmcm9tICcuL3R5cGVzL3dvcmtzcGFjZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxudHlwZSBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JyB8ICdkZXRhaWwnO1xyXG5cclxuY29uc3QgTk9fTE9DQVRJT05fT1BUSU9OID0gJ05vIGxvY2F0aW9uJztcclxuXHJcbmZ1bmN0aW9uIGhhc05vTG9jYXRpb24obG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICBjb25zdCB2YWx1ZSA9IGxvY2F0aW9uPy50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICByZXR1cm4gIXZhbHVlIHx8IHZhbHVlID09PSBOT19MT0NBVElPTl9PUFRJT04udG9Mb3dlckNhc2UoKTtcclxufVxyXG5cclxudHlwZSBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnIHwgJ2luc2lnaHRzJyB8ICdpbnRlZ3JhdGlvbnMnIHwgJ3NldHRpbmdzJztcclxuXHJcbmludGVyZmFjZSBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbiB7XHJcbiAgaWQ6IFdvcmtzcGFjZXNUYWI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGstd29ya3NwYWNlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21lcklkITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICByZWFkb25seSB0YWJzOiBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbltdID0gW1xyXG4gICAgeyBpZDogJ3dvcmtzcGFjZXMnLCBsYWJlbDogJ1dvcmtzcGFjZXMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2RldmljZS1pbi1yb29tLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gICAgeyBpZDogJ2luc2lnaHRzJywgbGFiZWw6ICdJbnNpZ2h0cycsIGljb246ICdhc3NldHMvaWNvbnMvYW5hbHlzaXMtcmVndWxhci5zdmcnIH0sXHJcbiAgICB7IGlkOiAnaW50ZWdyYXRpb25zJywgbGFiZWw6ICdJbnRlZ3JhdGlvbnMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2ludGVncmF0aW9ucy1yZWd1bGFyLnN2ZycgfSxcclxuICAgIHsgaWQ6ICdzZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnLCBpY29uOiAnYXNzZXRzL2ljb25zL3Rvb2xzLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gIF07XHJcblxyXG4gIGFjdGl2ZVRhYjogV29ya3NwYWNlc1RhYiA9ICd3b3Jrc3BhY2VzJztcclxuXHJcbiAgdmlldzogV29ya3NwYWNlc1ZpZXcgPSAnbGlzdCc7XHJcbiAgc2VsZWN0ZWRXb3Jrc3BhY2U6IFdvcmtzcGFjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlID0gJ2RpJztcclxuXHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcGFnZUluZGV4ID0gMDtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHRvdGFsID0gMDtcclxuXHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIHR5cGVGaWx0ZXIgPSAnJztcclxuICBsb2NhdGlvbkZpbHRlciA9ICcnO1xyXG4gIHByb3Zpc2lvbmluZ1R5cGVGaWx0ZXI6IFdvcmtzcGFjZVByb3Zpc2lvbmluZ1R5cGUgfCAnJyA9ICcnO1xyXG5cclxuICBwZW5kaW5nV29ya3NwYWNlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVdlYmV4U2VydmljZTogQXBpV2ViZXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VzU2VydmljZTogV29ya3NwYWNlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1pZ3JhdGlvblNlcnZpY2U6IFdvcmtzcGFjZXNNaWdyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcclxuICAgIHRoaXMuYXBpU2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL2RjcCc7XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL3dlYmV4JztcclxuICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZU9wdGlvbnMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS50eXBlTGFiZWwpLmZpbHRlcihCb29sZWFuKSldO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2F0aW9uT3B0aW9ucygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBsb2NhdGlvbnMgPSBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UubG9jYXRpb24pLmZpbHRlcihsb2NhdGlvbiA9PiAhaGFzTm9Mb2NhdGlvbihsb2NhdGlvbikpKV07XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLnNvbWUod29ya3NwYWNlID0+IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKSlcclxuICAgICAgPyBbTk9fTE9DQVRJT05fT1BUSU9OLCAuLi5sb2NhdGlvbnNdXHJcbiAgICAgIDogbG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzQWxsKCk6IFdvcmtzcGFjZVtdIHtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cclxuICAgICAgKCF0ZXJtIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8IHdvcmtzcGFjZS5sb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXHJcbiAgICAgIHRoaXMubWF0Y2hlc0xvY2F0aW9uRmlsdGVyKHdvcmtzcGFjZSkgJiZcclxuICAgICAgdGhpcy5tYXRjaGVzUHJvdmlzaW9uaW5nVHlwZUZpbHRlcih3b3Jrc3BhY2UpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXRjaGVzUHJvdmlzaW9uaW5nVHlwZUZpbHRlcih3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0aGlzLnByb3Zpc2lvbmluZ1R5cGVGaWx0ZXIpIHtcclxuICAgICAgY2FzZSAnaHlicmlkJzpcclxuICAgICAgICByZXR1cm4gd29ya3NwYWNlLmlzSHlicmlkO1xyXG4gICAgICBjYXNlICd3ZWJleC1kaSc6XHJcbiAgICAgICAgcmV0dXJuICF3b3Jrc3BhY2UuaXNIeWJyaWQgJiYgd29ya3NwYWNlLmRldmljZS5jdWNtSWQgIT0gbnVsbDtcclxuICAgICAgY2FzZSAnd2ViZXgnOlxyXG4gICAgICAgIHJldHVybiAhd29ya3NwYWNlLmlzSHlicmlkICYmIHdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEICE9IG51bGw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hdGNoZXNMb2NhdGlvbkZpbHRlcih3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmxvY2F0aW9uRmlsdGVyKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25GaWx0ZXIgPT09IE5PX0xPQ0FUSU9OX09QVElPTlxyXG4gICAgICA/IGhhc05vTG9jYXRpb24od29ya3NwYWNlLmxvY2F0aW9uKVxyXG4gICAgICA6IHdvcmtzcGFjZS5sb2NhdGlvbiA9PT0gdGhpcy5sb2NhdGlvbkZpbHRlcjtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZFdvcmtzcGFjZXMoKTogV29ya3NwYWNlW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemU7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFdvcmtzcGFjZXNBbGwuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRUb3RhbCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRXb3Jrc3BhY2VzQWxsLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHNlbGVjdFRhYih0YWI6IFdvcmtzcGFjZXNUYWIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuV29ya3NwYWNlKHsgaWQsIGNvbm5lY3Rpb25UeXBlIH06IFdvcmtzcGFjZU9wZW5FdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KGlkKTtcclxuXHJcbiAgICBpZiAoIXdvcmtzcGFjZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtzcGFjZSA9IHdvcmtzcGFjZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IGNvbm5lY3Rpb25UeXBlO1xyXG4gICAgdGhpcy52aWV3ID0gJ2RldGFpbCc7XHJcbiAgfVxyXG5cclxuICBvbkJhY2tUb0xpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXcgPSAnbGlzdCc7XHJcbiAgICB0aGlzLnNlbGVjdGVkV29ya3NwYWNlID0gbnVsbDtcclxuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCcvd29ya3NwYWNlcycpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSB0ZXJtO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25UeXBlRmlsdGVyQ2hhbmdlKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlRmlsdGVyID0gdHlwZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25GaWx0ZXJDaGFuZ2UobG9jYXRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhdGlvbkZpbHRlciA9IGxvY2F0aW9uO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25Qcm92aXNpb25pbmdUeXBlRmlsdGVyQ2hhbmdlKHByb3Zpc2lvbmluZ1R5cGU6IFdvcmtzcGFjZVByb3Zpc2lvbmluZ1R5cGUgfCAnJyk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm92aXNpb25pbmdUeXBlRmlsdGVyID0gcHJvdmlzaW9uaW5nVHlwZTtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZSh7IHBhZ2VJbmRleCwgcGFnZVNpemUgfTogeyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICB9XHJcblxyXG4gIG9uTW92ZVRvTVQod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IGBVcGdyYWRlIHdvcmtzcGFjZSAke3dvcmtzcGFjZS5kaXNwbGF5TmFtZX0gdG8gV2ViZXggQ2FsbGluZz9gLFxyXG4gICAgICAgIG1lc3NhZ2U6IGA8cD5VcGdyYWRpbmcgdGhpcyB3b3Jrc3BhY2Ugd2lsbCBwcmVwYXJlIGl0IGZvciBtaWdyYXRpb24gdG8gV2ViZXggQ2FsbGluZy48L3A+XHJcbiAgICAgICAgICA8cD5EdXJpbmcgdGhpcyBwcm9jZXNzLCB0aGUgd29ya3NwYWNlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIFdlYmV4IENhbGxpbmcgZW52aXJvbm1lbnQuXHJcbiAgICAgICAgICBUaGUgd29ya3NwYWNlIHdpbGwgcmVtYWluIGFjdGl2ZSBvbiB0aGUgY3VycmVudCBzeXN0ZW0gdW50aWwgdGhlIEFjdGl2YXRlIHN0ZXAgaXMgY29tcGxldGVkLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzLCB1cGdyYWRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuYWRkKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZS5tb3ZlVG9NVCh0aGlzLmN1c3RvbWVySWQsIHdvcmtzcGFjZS5kZXZpY2UpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGZvcm1JZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZm9ybUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9sbE1pZ3JhdGlvbkZvcm1TdGF0dXMoTnVtYmVyKGZvcm1JZCksIHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FbmFibGVXZWJleENhbGxpbmcod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRldmljZSA9IHdvcmtzcGFjZS5kZXZpY2U7XHJcbiAgICBpZiAoIWRldmljZS53ZWJleFVVSUQgfHwgd29ya3NwYWNlLnN0YXR1cyAhPT0gJ2luYWN0aXZlJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYEFjdGl2YXRlIHdvcmtzcGFjZSAke3dvcmtzcGFjZS5kaXNwbGF5TmFtZX0gb24gTXVsdGkgVGVuYW50P2AsXHJcbiAgICAgICAgbWVzc2FnZTogYDxwPkFjdGl2YXRpbmcgdGhpcyB3b3Jrc3BhY2Ugd2lsbCBwZXJmb3JtIHRoZSBjdXRvdmVyIHRvIE11bHRpIFRlbmFudCBhbmQgY29tcGxldGUgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgICAgICAgIDxwPkFmdGVyIGFjdGl2YXRpb24sIHRoZSB3b3Jrc3BhY2Ugd2lsbCBiZWNvbWUgYWN0aXZlIG9uIE11bHRpIFRlbmFudCBhbmQgdGhlIG9yaWdpbmFsIHdvcmtzcGFjZSB3aWxsIGJlY29tZSBpbmFjdGl2ZS48L3A+XHJcbiAgICAgICAgICA8cD5EbyB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+YCxcclxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ0FjdGl2YXRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuYWRkKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxyXG4gICAgICAgIC5nZXRNaWdyYXRlZE1pZ3JhdGlvbkZvcm1FbnRpdGllcyh0aGlzLmN1c3RvbWVySWQsIGRldmljZS53ZWJleFVVSUQgYXMgc3RyaW5nLCAnT1JQSEFORURfREVWSUNFJylcclxuICAgICAgICAucGlwZShtYXAoKGVudGl0aWVzOiBhbnlbXSkgPT4gKEFycmF5LmlzQXJyYXkoZW50aXRpZXMpID8gZW50aXRpZXNbMF0gOiBlbnRpdGllcyB8fCBudWxsKSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUlkID0gZW50aXR5Py5taWdyYXRpb25Gb3JtSWQgPz8gZW50aXR5Py5pZCA/PyBudWxsO1xyXG4gICAgICAgICAgICBpZiAoIWZvcm1JZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGV2aWNlTWFwID0gdGhpcy5idWlsZEZpcm13YXJlRGV2aWNlTWFwKGVudGl0eSwgZGV2aWNlKTtcclxuICAgICAgICAgICAgY29uc3QgdXBncmFkZVN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAgIC50cmlnZ2VyRmlybXdhcmVVcGdyYWRlKHRoaXMuY3VzdG9tZXJJZCwgTnVtYmVyKGZvcm1JZCksIGRldmljZU1hcClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9sbE1pZ3JhdGlvbkZvcm1TdGF0dXMoTnVtYmVyKGZvcm1JZCksIHdvcmtzcGFjZS5pZCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5taWdyYXRpb25TZXJ2aWNlLnJlbW92ZVVjbUxpY2Vuc2UodGhpcy5jdXN0b21lcklkLCBOdW1iZXIoZm9ybUlkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sIDEwMDAwKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh1cGdyYWRlU3Vic2NyaXB0aW9uKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1pZ3JhdGVUb1VDTSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZGV2aWNlID0gd29ya3NwYWNlLmRldmljZTtcclxuICAgIGlmICghZGV2aWNlLndlYmV4VVVJRCB8fCB3b3Jrc3BhY2Uuc3RhdHVzICE9PSAnYWN0aXZlJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXHJcbiAgICAgIC5yZXZlcnRNaWdyYXRpb24odGhpcy5jdXN0b21lcklkLCBkZXZpY2Uud2ViZXhVVUlEKVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMjAwMCkpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb2xsTWlncmF0aW9uRm9ybVN0YXR1cyhmb3JtSWQ6IG51bWJlciwgd29ya3NwYWNlSWQ6IHN0cmluZywgb25Db21wbGV0ZWQ/OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aW1lcigwLCAxMDAwMClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubWlncmF0aW9uU2VydmljZS5nZXRNaWdyYXRpb25Gb3JtU3RhdHVzKHRoaXMuY3VzdG9tZXJJZCwgZm9ybUlkKSksXHJcbiAgICAgICAgdGFrZVdoaWxlKChyZXNwb25zZTogYW55KSA9PiAhdGhpcy5pc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHJlc3BvbnNlPy5zdGF0dXMpLCB0cnVlKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5ub3JtYWxpemVNaWdyYXRpb25TdGF0dXMocmVzcG9uc2U/LnN0YXR1cyk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaXNUZXJtaW5hbE1pZ3JhdGlvblN0YXR1cyhzdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlSWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdDT01QTEVURUQnKSB7XHJcbiAgICAgICAgICAgIG9uQ29tcGxldGVkPy4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZUlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZpcm13YXJlRGV2aWNlTWFwKGVudGl0eTogYW55LCBkZXZpY2U6IFdvcmtzcGFjZURldmljZVJlY29yZCk6IEZpcm13YXJlRGV2aWNlTWFwIHtcclxuICAgIGNvbnN0IGRldmljZU1hcDogRmlybXdhcmVEZXZpY2VNYXAgPSB7fTtcclxuICAgIGNvbnN0IGVudGl0eURldmljZXM6IGFueVtdID0gW1xyXG4gICAgICAuLi4oQXJyYXkuaXNBcnJheShlbnRpdHk/LmRldmljZXMpID8gZW50aXR5LmRldmljZXMgOiBbXSksXHJcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KGVudGl0eT8ud2ViZXhNaWdyYXRpb25EZXZpY2VzKSA/IGVudGl0eS53ZWJleE1pZ3JhdGlvbkRldmljZXMgOiBbXSksXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc291cmNlRGV2aWNlcyA9IGVudGl0eURldmljZXMubGVuZ3RoID8gZW50aXR5RGV2aWNlcyA6IFtkZXZpY2VdO1xyXG4gICAgY29uc3QgY3VjbUlkID0gTnVtYmVyKGRldmljZS5jdWNtSWQpIHx8IDA7XHJcblxyXG4gICAgc291cmNlRGV2aWNlcy5mb3JFYWNoKChyYXdEZXZpY2U6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSByYXdEZXZpY2U/Lm5hbWUgfHwgZGV2aWNlLm5hbWUgfHwgJyc7XHJcbiAgICAgIGlmICghbmFtZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkZXZpY2VOYW1lID0gbmFtZS5pbmNsdWRlcygnU0VQJykgPyBuYW1lIDogYFNFUCR7bmFtZX1gO1xyXG4gICAgICBpZiAoIWRldmljZU1hcFtjdWNtSWRdKSB7XHJcbiAgICAgICAgZGV2aWNlTWFwW2N1Y21JZF0gPSB7fTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWRldmljZU1hcFtjdWNtSWRdWydPUlBIQU5FRF9ERVZJQ0UnXSkge1xyXG4gICAgICAgIGRldmljZU1hcFtjdWNtSWRdWydPUlBIQU5FRF9ERVZJQ0UnXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGRldmljZU1hcFtjdWNtSWRdWydPUlBIQU5FRF9ERVZJQ0UnXS5wdXNoKGRldmljZU5hbWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRldmljZU1hcDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHN0YXR1czogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHN0YXR1cyB8fCAnJykudG9VcHBlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNUZXJtaW5hbE1pZ3JhdGlvblN0YXR1cyhzdGF0dXM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhzdGF0dXMpO1xyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQgPT09ICdDT01QTEVURUQnIHx8IG5vcm1hbGl6ZWQgPT09ICdGQUlMRUQnIHx8IG5vcm1hbGl6ZWQgPT09ICdFUlJPUicgfHwgbm9ybWFsaXplZCA9PT0gJ0NPTVBMRVRFRF9XSVRIX0VSUk9SUyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoV29ya3NwYWNlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMud29ya3NwYWNlc1NlcnZpY2UuZmV0Y2hXb3Jrc3BhY2VzKHRoaXMuY3VzdG9tZXJJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgd29ya3NwYWNlcywgdG90YWwgfSkgPT4ge1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHdvcmtzcGFjZXM7XHJcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gW107XHJcbiAgICAgICAgdGhpcy50b3RhbCA9IDA7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8dGstbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC90ay1sb2FkZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlc1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3ID09PSAnbGlzdCc7IGVsc2UgZGV0YWlsVmlld1wiPlxyXG4gICAgPGhlYWRlciBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX2hlYWRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190aXRsZVwiPldvcmtzcGFjZXM8L2gxPlxyXG4gICAgPC9oZWFkZXI+XHJcblxyXG4gICAgPG5hdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYnNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiXHJcbiAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190YWJcIlxyXG4gICAgICAgIFtjbGFzcy50ay13b3Jrc3BhY2VzX190YWItLWFjdGl2ZV09XCJhY3RpdmVUYWIgPT09IHRhYi5pZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIuaWQpXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYi1pY29uXCIgW3NyY109XCJ0YWIuaWNvblwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAge3sgdGFiLmxhYmVsIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uYXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ3dvcmtzcGFjZXMnOyBlbHNlIHBsYWNlaG9sZGVyXCI+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy1maWx0ZXJzXHJcbiAgICAgICAgW3Jlc3VsdENvdW50XT1cInRvdGFsXCJcclxuICAgICAgICBbdHlwZU9wdGlvbnNdPVwidHlwZU9wdGlvbnNcIlxyXG4gICAgICAgIFtsb2NhdGlvbk9wdGlvbnNdPVwibG9jYXRpb25PcHRpb25zXCJcclxuICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh0eXBlQ2hhbmdlKT1cIm9uVHlwZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAobG9jYXRpb25DaGFuZ2UpPVwib25Mb2NhdGlvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAocHJvdmlzaW9uaW5nVHlwZUNoYW5nZSk9XCJvblByb3Zpc2lvbmluZ1R5cGVGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGFkZFdvcmtzcGFjZSk9XCJhZGRXb3Jrc3BhY2UuZW1pdCgpXCI+XHJcbiAgICAgIDwvdGstd29ya3NwYWNlcy1maWx0ZXJzPlxyXG5cclxuICAgICAgPHRrLXdvcmtzcGFjZXMtdGFibGVcclxuICAgICAgICBbd29ya3NwYWNlc109XCJmaWx0ZXJlZFdvcmtzcGFjZXNcIlxyXG4gICAgICAgIFt0b3RhbF09XCJmaWx0ZXJlZFRvdGFsXCJcclxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICBbcGVuZGluZ1dvcmtzcGFjZUlkc109XCJwZW5kaW5nV29ya3NwYWNlSWRzXCJcclxuICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgKG9wZW5Xb3Jrc3BhY2UpPVwib25PcGVuV29ya3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIChtaWdyYXRlVG9NVCk9XCJvbk1vdmVUb01UKCRldmVudClcIlxyXG4gICAgICAgIChlbmFibGVXZWJleENhbGxpbmcpPVwib25FbmFibGVXZWJleENhbGxpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1pZ3JhdGVUb1VDTSk9XCJvbk1pZ3JhdGVUb1VDTSgkZXZlbnQpXCJcclxuICAgICAgICAoYWRkRGV2aWNlKT1cImFkZERldmljZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwvdGstd29ya3NwYWNlcy10YWJsZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX19wbGFjZWhvbGRlclwiPlRoaXMgc2VjdGlvbiBpc24ndCBhdmFpbGFibGUgaW4gdGhpcyB3aWRnZXQgeWV0LjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNkZXRhaWxWaWV3PlxyXG4gICAgPHRrLXdvcmtzcGFjZS1kZXRhaWxcclxuICAgICAgKm5nSWY9XCJzZWxlY3RlZFdvcmtzcGFjZVwiXHJcbiAgICAgIFt3b3Jrc3BhY2VdPVwic2VsZWN0ZWRXb3Jrc3BhY2VcIlxyXG4gICAgICBbY29ubmVjdGlvblR5cGVdPVwic2VsZWN0ZWRDb25uZWN0aW9uVHlwZVwiXHJcbiAgICAgIFtjdXN0b21lcklkXT1cImN1c3RvbWVySWRcIlxyXG4gICAgICAoYmFjayk9XCJvbkJhY2tUb0xpc3QoKVwiPlxyXG4gICAgPC90ay13b3Jrc3BhY2UtZGV0YWlsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -9,7 +9,7 @@ import { WorkspacesTableComponent } from './components/workspaces-table/workspac
9
9
  import { WorkspaceDetailComponent } from './components/workspace-detail/workspace-detail.component';
10
10
  import { WorkspaceDeviceDetailComponent } from './components/workspace-device-detail/workspace-device-detail.component';
11
11
  import { WorkspaceConfirmDialogComponent } from './components/workspace-confirm-dialog/workspace-confirm-dialog.component';
12
- import { AppLoaderComponent } from './utils/app-loader/app-loader';
12
+ import { TkLoaderComponent } from '@tuki-io/tuki-widgets/shared';
13
13
  import * as i0 from "@angular/core";
14
14
  export class WorkspacesModule {
15
15
  }
@@ -19,12 +19,13 @@ WorkspacesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
19
19
  WorkspacesTableComponent,
20
20
  WorkspaceDetailComponent,
21
21
  WorkspaceDeviceDetailComponent,
22
- WorkspaceConfirmDialogComponent,
23
- AppLoaderComponent], imports: [CommonModule,
22
+ WorkspaceConfirmDialogComponent], imports: [TkLoaderComponent,
23
+ CommonModule,
24
24
  HttpClientModule,
25
25
  FormsModule,
26
26
  MaterialModule], exports: [WorkspacesComponent] });
27
- WorkspacesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, imports: [CommonModule,
27
+ WorkspacesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, imports: [TkLoaderComponent,
28
+ CommonModule,
28
29
  HttpClientModule,
29
30
  FormsModule,
30
31
  MaterialModule] });
@@ -38,9 +39,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
38
39
  WorkspaceDetailComponent,
39
40
  WorkspaceDeviceDetailComponent,
40
41
  WorkspaceConfirmDialogComponent,
41
- AppLoaderComponent,
42
42
  ],
43
43
  imports: [
44
+ TkLoaderComponent,
44
45
  CommonModule,
45
46
  HttpClientModule,
46
47
  FormsModule,
@@ -51,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
51
52
  ],
52
53
  }]
53
54
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFzQm5FLE1BQU0sT0FBTyxnQkFBZ0I7OzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFsQnpCLG1CQUFtQjtRQUNuQiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qiw4QkFBOEI7UUFDOUIsK0JBQStCO1FBQy9CLGtCQUFrQixhQUdsQixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxjQUFjLGFBR2QsbUJBQW1COytHQUdWLGdCQUFnQixZQVR6QixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxjQUFjOzRGQU1MLGdCQUFnQjtrQkFwQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsOEJBQThCO3dCQUM5QiwrQkFBK0I7d0JBQy9CLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLm1vZHVsZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZXNDb21wb25lbnQgfSBmcm9tICcuL3dvcmtzcGFjZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV29ya3NwYWNlc0ZpbHRlcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlcy1maWx0ZXJzL3dvcmtzcGFjZXMtZmlsdGVycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VzVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlcy10YWJsZS93b3Jrc3BhY2VzLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZURldGFpbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtZGV0YWlsL3dvcmtzcGFjZS1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV29ya3NwYWNlRGV2aWNlRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZS1kZXZpY2UtZGV0YWlsL3dvcmtzcGFjZS1kZXZpY2UtZGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL3V0aWxzL2FwcC1sb2FkZXIvYXBwLWxvYWRlcic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgV29ya3NwYWNlc0NvbXBvbmVudCxcclxuICAgIFdvcmtzcGFjZXNGaWx0ZXJzQ29tcG9uZW50LFxyXG4gICAgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50LFxyXG4gICAgV29ya3NwYWNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgV29ya3NwYWNlRGV2aWNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcclxuICAgIEFwcExvYWRlckNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdGVyaWFsTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgV29ya3NwYWNlc0NvbXBvbmVudCxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc01vZHVsZSB7IH1cclxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFzQmpFLE1BQU0sT0FBTyxnQkFBZ0I7OzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFsQnpCLG1CQUFtQjtRQUNuQiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qiw4QkFBOEI7UUFDOUIsK0JBQStCLGFBRy9CLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxjQUFjLGFBR2QsbUJBQW1COytHQUdWLGdCQUFnQixZQVZ6QixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsY0FBYzs0RkFNTCxnQkFBZ0I7a0JBcEI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDhCQUE4Qjt3QkFDOUIsK0JBQStCO3FCQUNoQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi9tYXRlcmlhbC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VzQ29tcG9uZW50IH0gZnJvbSAnLi93b3Jrc3BhY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZXNGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZXMtZmlsdGVycy93b3Jrc3BhY2VzLWZpbHRlcnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZXMtdGFibGUvd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlLWRldGFpbC93b3Jrc3BhY2UtZGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZURldmljZURldGFpbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtZGV2aWNlLWRldGFpbC93b3Jrc3BhY2UtZGV2aWNlLWRldGFpbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZS1jb25maXJtLWRpYWxvZy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGtMb2FkZXJDb21wb25lbnQgfSBmcm9tICdAdHVraS1pby90dWtpLXdpZGdldHMvc2hhcmVkJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBXb3Jrc3BhY2VzQ29tcG9uZW50LFxyXG4gICAgV29ya3NwYWNlc0ZpbHRlcnNDb21wb25lbnQsXHJcbiAgICBXb3Jrc3BhY2VzVGFibGVDb21wb25lbnQsXHJcbiAgICBXb3Jrc3BhY2VEZXRhaWxDb21wb25lbnQsXHJcbiAgICBXb3Jrc3BhY2VEZXZpY2VEZXRhaWxDb21wb25lbnQsXHJcbiAgICBXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVGtMb2FkZXJDb21wb25lbnQsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRlcmlhbE1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFdvcmtzcGFjZXNDb21wb25lbnQsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNNb2R1bGUgeyB9XHJcbiJdfQ==